/* * @file * @brief * @version * @author * @date * @note * @warning * @bug * @copyright * */ #ifndef AREA_BUSINESS_CAR_ATTENDANCE_H #define AREA_BUSINESS_CAR_ATTENDANCE_H #include"area_business.h" #include"unordered_map" class area_business_car_attendance:public area_business { public: area_business_car_attendance(); void on_load_his(const std::shared_ptr&a,const std::shared_ptr&c,std::shared_ptr&ptr); //记录进入时间等信息,结束考勤,根据离开的时间和距离,判断是否记录一条新的考勤记录 void on_enter(const std::shared_ptr&a,const std::shared_ptr&c,std::shared_ptr&ptr); void on_hover(const std::shared_ptr&a,const std::shared_ptr&c,std::shared_ptr ptr); //记录离开考勤区域信息,开始考勤 void on_leave(const std::shared_ptr&a,const std::shared_ptr&c,std::shared_ptr ptr); //static void save_attendance(const std::shared_ptr& card_ptr, const std::shared_ptr area_hover_ptr){} static void init_attendance_area_from_db(); private: static bool is_attendance_area(int area_id, int vehicle_type_id) { return m_map.end() != m_map.find(to_list_id(area_id, vehicle_type_id)); } static 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 static std::unordered_map m_map; }; #endif // AREA_BUSINESS_CAR_ATTENDANCE_H