1
0

module_over_speed_vehicle.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #ifndef MODULE_OVER_SPEED_VEHICLE_H
  2. #define MODULE_OVER_SPEED_VEHICLE_H
  3. /**
  4. *@brief 车卡超速模块
  5. * @author 戴月腾
  6. * @date 2018-08-08
  7. */
  8. #include <unordered_map>
  9. #include "module_singleton_base.h"
  10. #include "card.h"
  11. /**
  12. * @brief 区域超速类。当某张车卡速度超过某个区域的最大速度时,发出告警, 单例
  13. */
  14. class module_over_speed_vehicle:public singleton_base<module_over_speed_vehicle>
  15. {
  16. private:
  17. friend class singleton_base<module_over_speed_vehicle>;
  18. module_over_speed_vehicle()
  19. {
  20. }
  21. public:
  22. void on_hover(std::shared_ptr<card_location_base> card_ptr, int vehicle_category_id);
  23. void init_vehicle_category_from_db();
  24. private:
  25. bool is_over_speed(int category_id, double speed)
  26. {
  27. auto serch = _vehicle_category_map.find(category_id);
  28. if(serch == _vehicle_category_map.end())
  29. {
  30. return false;
  31. }
  32. return serch->second <= speed;
  33. }
  34. double limit_speed(int category_id) const
  35. {
  36. auto serch = _vehicle_category_map.find(category_id);
  37. if(serch == _vehicle_category_map.end())
  38. {
  39. return 0;
  40. }
  41. return serch->second;
  42. }
  43. private:
  44. std::unordered_map<int,double> _vehicle_category_map;
  45. };
  46. #endif // MODULE_OVER_SPEED_VEHICLE_H