ya_event.cpp 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #include "ya_event.h"
  2. uint64_t ya_event::get_list_id()
  3. {
  4. return event_list::to_list_id(static_cast<uint32_t>(std::stoi(m_obj_id.substr(3))), m_ev_type);
  5. }
  6. void event_list::load_his_data_from_db()
  7. {
  8. const char *sql = "SELECT event_id, stat,event_type_id,obj_type_id,obj_id,map_id,area_id,\
  9. limit_value,cur_value,x,y, cur_time FROM his_event_data \
  10. WHERE event_id IN (SELECT MAX(event_id) FROM his_event_data \
  11. WHERE cur_time > (CASE obj_type_id \
  12. WHEN 1 THEN DATE_SUB(NOW(),INTERVAL 2 DAY) \
  13. WHEN 2 THEN DATE_SUB(NOW(),INTERVAL 2 DAY)\
  14. WHEN 4 THEN DATE_SUB(NOW(),INTERVAL 1 MONTH)\
  15. WHEN 9 THEN DATE_SUB(NOW(),INTERVAL 2 DAY) \
  16. WHEN 10 THEN DATE_SUB(NOW(),INTERVAL 2 DAY) \
  17. END) \
  18. AND cur_time < NOW()\
  19. GROUP BY event_type_id, obj_id) \
  20. AND event_id NOT IN ( SELECT event_id FROM (SELECT * FROM his_event_data WHERE stat=100) s);";
  21. std::string Error;
  22. YADB::CDBResultSet DBRes;
  23. sDBConnPool.Query(sql,DBRes,Error);
  24. if(!Error.empty())
  25. log_error("初始化事件列表 Error,%s",Error.c_str());
  26. uint64_t nCount = DBRes.GetRecordCount( Error );
  27. if (nCount > 0)
  28. {
  29. log_info( "init_vehicle_category. The record count=%ld\n", nCount );
  30. while ( DBRes.GetNextRecod(Error) )
  31. {
  32. long long event_id = 0;
  33. DBRes.GetField( "event_id",event_id, Error );
  34. int event_type_id = 0;
  35. DBRes.GetField( "event_type_id",event_type_id, Error );
  36. int obj_type_id = 0;
  37. DBRes.GetField( "obj_type_id",obj_type_id, Error );
  38. std::string obj_id = "";
  39. DBRes.GetField( "obj_id",obj_id, Error );
  40. int map_id = 0;
  41. DBRes.GetField( "map_id",map_id, Error );
  42. int area_id = 0;
  43. DBRes.GetField( "area_id",area_id, Error );
  44. double limit_value = 0;
  45. DBRes.GetField( "limit_value",limit_value, Error );
  46. double cur_value = 0;
  47. DBRes.GetField( "cur_value",cur_value, Error );
  48. double x = 0;
  49. DBRes.GetField( "x",x, Error );
  50. double y = 0;
  51. DBRes.GetField( "y",y, Error );
  52. std::string cur_time = "";
  53. DBRes.GetField( "cur_time",cur_time, Error );
  54. int stat = 0;
  55. DBRes.GetField( "stat",stat, Error );
  56. std::shared_ptr<ya_event> ev = std::make_shared<ya_event>(event_id);
  57. ev->m_status = static_cast<EVENT_STATUS>(stat);
  58. ev->m_ev_type = static_cast<EVENT_TYPE>(event_type_id);
  59. ev->m_obj_type = static_cast<OBJECT_TYPE>(obj_type_id);
  60. ev->m_obj_id = tool_other::to13str(obj_id);
  61. ev->m_cur_time = tool_time::to_time_ex(cur_time);
  62. ev->m_cur_value = cur_value;
  63. ev->m_limit_value = limit_value;
  64. ev->m_map_id = map_id;
  65. ev->m_area_id = area_id;
  66. ev->x = x;
  67. ev->y = y;
  68. m_map.insert(std::make_pair(ev->get_list_id(), ev));
  69. }
  70. for(auto&iter: m_map)
  71. {
  72. auto ev = iter.second;
  73. log_info("event list %lld,%d,%d,%d,%s,%d,%d,%f,%f,%f,%f,%s"
  74. , ev->get_id(),ev->m_status,ev->m_ev_type,ev->m_obj_type,ev->m_obj_id.c_str()
  75. ,ev->m_map_id,ev->m_area_id,ev->m_limit_value,ev->m_cur_value
  76. ,ev->x,ev->y
  77. ,tool_time::to_str_ex(ev->m_cur_time).c_str());
  78. }
  79. }
  80. }
  81. template<> std::shared_ptr<event_list>
  82. single_base<event_list, uint64_t, std::shared_ptr<ya_event>>::m_instance=std::make_shared<event_list>();