site_area.cpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #include "site_area.h"
  2. #include "card.h"
  3. #include "ant.h"
  4. #include "module_service/module_site.h"
  5. //每张卡包含这样一个对象,保存最后一个分站区域
  6. //1、记录卡进出分站的时间,地点
  7. //2、用于考勤
  8. std::shared_ptr<site> site_area_hover::get_site()
  9. {
  10. return sit_list::instance()->get(m_site_id);
  11. }
  12. void site_area_hover::on_point(uint32_t card_id,int site_id,const point*pt,int32_t type)
  13. {
  14. if(pt!=nullptr)
  15. {
  16. if(m_enter_point.empty())
  17. m_enter_point=*pt;
  18. m_last_point=*pt;
  19. }
  20. else
  21. {
  22. if(m_site_id==site_id)
  23. {
  24. m_last_time=time(0);
  25. return;
  26. }
  27. int last_id = m_site_id;
  28. m_site_id = site_id;
  29. //离开现有分站处理,记录现有分站的进出时间和地点
  30. leave_site(card_id,last_id,type);
  31. //进入分站覆盖区域处理,考勤
  32. enter_site(card_id,site_id,type);
  33. //m_site_id=site_id;
  34. m_enter_time=m_last_time=time(nullptr);
  35. m_enter_point.set(0,0);
  36. m_last_point.set(0,0);
  37. }
  38. }
  39. void site_area_hover::enter_site(uint32_t card_id,int enter_site,int32_t type)
  40. {
  41. module_site::enter_site(card_id, enter_site, type);
  42. }
  43. void site_area_hover::leave_site(uint32_t card_id,int enter_site,int32_t type)
  44. {
  45. module_site::leave_site(card_id, enter_site, type);
  46. }
  47. int site_area_hover::get_att_type() const
  48. {
  49. int id = -1;
  50. const auto &s = sit_list::instance()->get(m_site_id);
  51. if(s)
  52. if(s->m_reader_type_id == READER_TYPE_ID_DOWN)
  53. id=0;
  54. return id;
  55. }