ya_event.cpp 4.0 KB

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