#ifndef MODULE_ATTENDANCE_VEHICLE_H #define MODULE_ATTENDANCE_VEHICLE_H /** *@brief 车辆考勤模块 *车辆进入某些特定区域,结束考勤;从特定区域进入其他区域,开始考勤 *@author 戴月腾 *@date 2018-08-07 */ #include #include "module_singleton_base.h" #include "card.h" #include"area.h" /** * @brief 车辆进入某些特定区域,结束考勤;从特定区域进入其他区域,开始考勤, 单例 */ class module_attendance_vehicle:public singleton_base { private: friend class singleton_base; module_attendance_vehicle() { } public: void on_enter(std::shared_ptr card_ptr, int index); void on_hover(std::shared_ptr card_ptr, int index); void on_leave(std::shared_ptr card_ptr, int index); void on_enter(std::shared_ptr card_ptr, std::shared_ptr&c); void init_attendance_area_from_db(); ///area_ptr==nullptr 表示接收到 web的删除卡命令 static void save_attendance(std::shared_ptr& card_ptr, std::shared_ptr area_ptr); private: bool is_not_attendance_area(int area_id, int vehicle_type_id) { return m_map.end() != m_map.find(to_list_id(area_id, vehicle_type_id)); } uint64_t to_list_id(int area_id, int vehicle_type_id) { return (static_cast(area_id)<<32) | static_cast(vehicle_type_id); } ///area_id<<32| vehicle_type_id; att_rule_id std::unordered_map m_map; }; #endif // MODULE_ATTENDANCE_VEHICLE_H