module_area_over_speed.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. #ifndef MODULE_AREA_OVER_SPEED_H
  2. #define MODULE_AREA_OVER_SPEED_H
  3. /**
  4. *@brief 区域超速模块
  5. * 当某张车卡速度超过某个区域的最大速度时,发出告警
  6. * @author 戴月腾
  7. * @date 2018-08-08
  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 "module_const.h"
  15. /**
  16. * @brief 区域超速类。当某张车卡速度超过某个区域的最大速度时,发出告警, 单例
  17. */
  18. class module_area_over_speed:public singleton_base<module_area_over_speed>
  19. {
  20. private:
  21. friend class singleton_base<module_area_over_speed>;
  22. module_area_over_speed()
  23. {
  24. }
  25. public:
  26. void on_enter(std::shared_ptr<card> card_ptr,std::shared_ptr<area_hover>&c,double speed)
  27. {
  28. // card_ptr->m_speed = speed;
  29. // c->m_vehicle_area_over_speed_count=0;
  30. // c->m_vehicle_area_normal_speed_count=0;
  31. // c->m_is_area_over_speed_vehicle=false;
  32. // auto area_ptr = c->m_area;
  33. // if(area_ptr->m_limit_speed > speed)//速度正常
  34. // {
  35. // c->m_vehicle_area_normal_speed_count++;
  36. // }
  37. // else//超速
  38. // {
  39. // c->m_vehicle_area_over_speed_count++;
  40. // }
  41. }
  42. void on_hover(std::shared_ptr<card> card_ptr,std::shared_ptr<area_hover>&c,double speed,
  43. std::map<uint64_t, std::shared_ptr<ya_event>>& ev_map)
  44. {
  45. card_ptr->m_speed = speed;
  46. // auto area_ptr = c->m_area;
  47. // if(area_ptr->m_limit_speed > speed)//速度正常
  48. // {
  49. // c->m_vehicle_area_normal_speed_count++;
  50. // }
  51. // else//超速
  52. // {
  53. // c->m_vehicle_area_over_speed_count++;
  54. // }
  55. // //确定超速
  56. // if(global_constant::AREA_SPEED_COUNT_LIMIT <= c->m_vehicle_area_over_speed_count)
  57. // {
  58. // c->m_vehicle_area_over_speed_count=global_constant::AREA_SPEED_COUNT_LIMIT;
  59. // auto ev_ptr = tool_other::find_event(card_ptr->m_id, ET_CARD_AREA_OVER_SPEED, ev_map);
  60. // if(ev_ptr)
  61. // {
  62. // ev_ptr->m_limit_value=area_ptr->m_limit_speed;
  63. // ev_ptr->m_cur_value=card_ptr->m_speed;
  64. // }
  65. // else//从没有告警状态转化为告警状态
  66. // {
  67. // c->m_is_area_over_speed_vehicle=true;
  68. // c->m_vehicle_area_normal_speed_count=0;
  69. // auto ev_ptr = tool_other::create_event(OT_CARD, card_ptr->m_id, ET_CARD_AREA_OVER_SPEED);
  70. // tool_other::copy_event(card_ptr, ev_ptr);
  71. // ev_ptr->m_limit_value = area_ptr->m_limit_speed;
  72. // ev_ptr->m_cur_value = card_ptr->m_speed;
  73. // //保存到数据库
  74. // tool_db::save_event(ev_ptr);
  75. // tool_other::insert_event(ev_ptr, ev_map);
  76. // }
  77. // }
  78. // //确定速度正常
  79. // if(global_constant::AREA_SPEED_COUNT_LIMIT <= c->m_vehicle_area_normal_speed_count)
  80. // {
  81. // c->m_vehicle_area_normal_speed_count=global_constant::AREA_SPEED_COUNT_LIMIT;
  82. // if(c->m_is_area_over_speed_vehicle)
  83. // {
  84. // c->m_is_area_over_speed_vehicle = false;
  85. // c->m_vehicle_area_over_speed_count=0;
  86. // auto ev_ptr = tool_other::find_event(card_ptr->m_id, ET_CARD_AREA_OVER_SPEED, ev_map);
  87. // if(ev_ptr)
  88. // {
  89. // ev_ptr->m_status = ES_END;
  90. // ev_ptr->m_limit_value = area_ptr->m_limit_speed;
  91. // ev_ptr->m_cur_value = speed;
  92. // ev_ptr->m_cur_time = std::chrono::system_clock::now();
  93. // //保存到数据库
  94. // tool_db::save_event(ev_ptr);
  95. // }
  96. // }
  97. // }
  98. }
  99. void on_leave(std::shared_ptr<card> card_ptr,std::shared_ptr<area_hover>&c,double speed)
  100. {
  101. }
  102. };
  103. typedef std::shared_ptr<module_area_over_speed> module_area_over_speed_ptr;
  104. #endif