module_attendance_vehicle.h 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #ifndef MODULE_ATTENDANCE_VEHICLE_H
  2. #define MODULE_ATTENDANCE_VEHICLE_H
  3. /**
  4. *@brief 车辆考勤模块
  5. *车辆进入某些特定区域,结束考勤;从特定区域进入其他区域,开始考勤
  6. *@author 戴月腾
  7. *@date 2018-08-07
  8. */
  9. #include <memory>
  10. #include <mutex>
  11. #include <map>
  12. #include <string>
  13. #include <chrono>
  14. #include <vector>
  15. #include <set>
  16. #include "module_const.h"
  17. /**
  18. * @brief 车辆进入某些特定区域,结束考勤;从特定区域进入其他区域,开始考勤, 单例
  19. */
  20. class module_attendance_vehicle:public singleton_base<module_attendance_vehicle>
  21. {
  22. private:
  23. friend class singleton_base<module_attendance_vehicle>;
  24. module_attendance_vehicle()
  25. {
  26. }
  27. public:
  28. void on_enter(std::shared_ptr<card_location_base> card_ptr,std::shared_ptr<area_hover>&c,double speed)
  29. {
  30. auto area_ptr = c->m_area;
  31. //从考勤状态转换为结束考勤
  32. if(!tool_other::is_attendance_area(area_ptr->m_id, card_ptr->m_id))
  33. {
  34. if(tool_other::is_attendance(card_ptr->m_stat_attendance))
  35. {
  36. //考勤结束
  37. card_ptr->m_stat_attendance=AS_NOT_ATTENDANCE;
  38. //作为一条结束考勤记录保存到数据库
  39. tool_db::save_attendance(card_ptr);
  40. log_debug("车卡考勤结束:area_id=%d,card_id=%d,stat_attendance=%d",
  41. area_ptr->m_id,card_ptr->m_id,card_ptr->m_stat_attendance);
  42. }
  43. }
  44. if(tool_other::is_attendance_area(area_ptr->m_id, card_ptr->m_id))//没在考勤状态转换为考勤状态
  45. {
  46. if(!tool_other::is_attendance(card_ptr->m_stat_attendance))
  47. {
  48. //考勤开始
  49. card_ptr->m_stat_attendance=AS_ATTENDANCE;
  50. //card_ptr->m_attendance_start_time=std::chrono::system_clock::now();
  51. std::time_t start= card_ptr->m_time/1000;
  52. card_ptr->m_attendance_start_time=std::chrono::system_clock::from_time_t(start);
  53. //作为一条开始考勤记录保存到数据库
  54. tool_db::save_attendance(card_ptr);
  55. log_debug("车卡考勤开始:area_id=%d,card_id=%d,stat_attendance=%d",
  56. area_ptr->m_id,card_ptr->m_id,card_ptr->m_stat_attendance);
  57. }
  58. }
  59. }
  60. void on_hover(std::shared_ptr<card_location_base> card_ptr,std::shared_ptr<area_hover>&c,double speed)
  61. {
  62. }
  63. void on_leave(std::shared_ptr<card_location_base> card_ptr,std::shared_ptr<area_hover>&c,double speed)
  64. {
  65. }
  66. };
  67. typedef std::shared_ptr<module_attendance_vehicle> module_attendance_vehicle_ptr;
  68. #endif // MODULE_ATTENDANCE_VEHICLE_H