1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #ifndef MODULE_OVER_SPEED_VEHICLE_H
- #define MODULE_OVER_SPEED_VEHICLE_H
- /**
- *@brief 车卡超速模块
- * @author 戴月腾
- * @date 2018-08-08
- */
- #include <unordered_map>
- #include "module_singleton_base.h"
- #include "card.h"
- /**
- * @brief 区域超速类。当某张车卡速度超过某个区域的最大速度时,发出告警, 单例
- */
- class module_over_speed_vehicle:public singleton_base<module_over_speed_vehicle>
- {
- private:
- friend class singleton_base<module_over_speed_vehicle>;
- module_over_speed_vehicle()
- {
- }
- public:
- void on_hover(std::shared_ptr<card_location_base> card_ptr, int vehicle_category_id);
- void init_vehicle_category_from_db();
- private:
- bool is_over_speed(int category_id, double speed)
- {
- auto serch = _vehicle_category_map.find(category_id);
- if(serch == _vehicle_category_map.end())
- {
- return false;
- }
- return serch->second <= speed;
- }
- double limit_speed(int category_id) const
- {
- auto serch = _vehicle_category_map.find(category_id);
- if(serch == _vehicle_category_map.end())
- {
- return 0;
- }
- return serch->second;
- }
- private:
- std::unordered_map<int,double> _vehicle_category_map;
- };
- #endif // MODULE_OVER_SPEED_VEHICLE_H
|