module_area_timeout.h 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #ifndef MODULE_AREA_TIMEOUT_H
  2. #define MODULE_AREA_TIMEOUT_H
  3. /**
  4. *@brief 区域超时模块 2018-08-26 戴月腾修改
  5. * 当某张人卡在某个区域的时间超过指定值时,会发出区域超时告警
  6. * @author 陈欧美
  7. * @date 2018-08-05
  8. */
  9. #include <mutex>
  10. #include <map>
  11. #include <chrono>
  12. #include <boost/thread.hpp>
  13. #include <boost/enable_shared_from_this.hpp>
  14. #include "point.h"
  15. #include "module_const.h"
  16. #include"module_const.h"
  17. /**
  18. * @brief 当某张人卡在某个区域的时间超过指定值时,会发出区域超时告警
  19. */
  20. class module_area_timeout:public singleton_base<module_area_timeout>
  21. {
  22. private:
  23. friend class singleton_base<module_area_timeout>;
  24. module_area_timeout()
  25. {
  26. }
  27. public:
  28. void on_enter(std::shared_ptr<card_location_base> card_ptr,std::shared_ptr<area_hover>&c,double speed)
  29. {
  30. //c->m_is_area_over_time_person=false;
  31. }
  32. void on_hover(std::shared_ptr<card_location_base> card_ptr,std::shared_ptr<area_hover>&c,double speed,
  33. std::map<uint64_t, std::shared_ptr<ya_event>>& ev_map)
  34. {
  35. auto area_ptr = c->m_area;
  36. //int seconds = tool_time::elapse_seconds(c->m_enter_time);
  37. // if(seconds > area_ptr->m_limit_time_second)//发生告警
  38. // {
  39. // auto ev_ptr = tool_other::find_event(card_ptr->m_id, ET_CARD_AREA_OVER_TIME_PERSON, ev_map);
  40. // if(ev_ptr)
  41. // {
  42. // ev_ptr->m_limit_value=area_ptr->m_limit_time_second;
  43. // ev_ptr->m_cur_value=seconds;
  44. // }
  45. // else//从没有告警状态转化为告警状态
  46. // {
  47. // c->m_is_area_over_time_person=true;//发生告警
  48. // auto ev_ptr = tool_other::create_event(OT_CARD, card_ptr->m_id, ET_CARD_AREA_OVER_TIME_PERSON);
  49. // tool_other::copy_event(card_ptr, ev_ptr);
  50. // ev_ptr->m_limit_value = area_ptr->m_limit_time_second;
  51. // ev_ptr->m_cur_value = seconds;
  52. // //保存到数据库
  53. // tool_db::save_event(ev_ptr);
  54. // tool_other::insert_event(ev_ptr, ev_map);
  55. // }
  56. // }
  57. // else
  58. // {
  59. // if(c->m_is_area_over_time_person)
  60. // {
  61. // c->m_is_area_over_time_person = false;
  62. // auto ev_ptr = tool_other::find_event(card_ptr->m_id, ET_CARD_AREA_OVER_TIME_PERSON, ev_map);
  63. // if(ev_ptr)
  64. // {
  65. // ev_ptr->m_status = ES_END;
  66. // ev_ptr->m_limit_value = area_ptr->m_limit_time_second;
  67. // ev_ptr->m_cur_value = seconds;
  68. // ev_ptr->m_cur_time = std::chrono::system_clock::now();
  69. // //保存到数据库
  70. // tool_db::save_event(ev_ptr);
  71. // }
  72. // }
  73. // }
  74. }
  75. void on_leave(std::shared_ptr<card_location_base> card_ptr,std::shared_ptr<area_hover>&c,double speed)
  76. {
  77. }
  78. };
  79. typedef std::shared_ptr<module_area_timeout> module_area_timeout_ptr;
  80. #endif // MODULE_AREA_TIMEOUT_H