area_persons_thre_time.cpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. //
  2. // Created by songchao.chen on 2019/7/4.
  3. //
  4. #include "area_persons_thre_time.h"
  5. #include "tool_time.h"
  6. area_persons_thre_time::area_persons_thre_time()
  7. {
  8. }
  9. void area_persons_thre_time::set_default_person_count_limit(int _limit)
  10. {
  11. m_default_limit_person_limit = _limit;
  12. };
  13. void area_persons_thre_time::add_persons_thre(const SArea_Persons_Thre & thre)
  14. {
  15. m_area_persons_thre[thre.db_id] = thre;
  16. }
  17. void area_persons_thre_time::del_persons_thre(int thre_db_id)
  18. {
  19. m_area_persons_thre.erase(thre_db_id);
  20. }
  21. void area_persons_thre_time::clear_persons_thre()
  22. {
  23. m_area_persons_thre.clear();
  24. }
  25. //记录数量
  26. int area_persons_thre_time::get_count() const
  27. {
  28. return (int)m_area_persons_thre.size();
  29. }
  30. int area_persons_thre_time::get_limit_person_count(uint64_t cur_time)
  31. {
  32. int cur_sec = tool_time::time_to_day_seconds(cur_time);
  33. //std::string sz_cur_time = tool_time::to_str_time(cur_time);
  34. for (auto it : m_area_persons_thre)
  35. {
  36. SArea_Persons_Thre &d = it.second;
  37. /*if (sz_cur_time >= d.sz_start_time && sz_cur_time <= d.sz_end_time)
  38. {
  39. return d.thre_value;
  40. }*/
  41. if (cur_sec >= d.start_time && cur_sec <= d.end_time)
  42. {
  43. return d.thre_value;
  44. }
  45. if(d.start_time > d.end_time) //隔天 (23:00:00 -- 02:00:00
  46. {
  47. if ((cur_sec >= d.start_time && cur_sec <= 3600 * 24)
  48. || (cur_sec >= 0 && cur_sec <= d.end_time))
  49. {
  50. return d.thre_value;
  51. }
  52. }
  53. }
  54. return m_default_limit_person_limit;
  55. }