|
@@ -250,10 +250,15 @@ void event_list::save_event(const std::shared_ptr<ya_event> &ev_ptr)
|
|
db_tool::PushAsync(sql);
|
|
db_tool::PushAsync(sql);
|
|
}
|
|
}
|
|
|
|
|
|
-void event_list::load_his_data_from_db()
|
|
|
|
|
|
+void event_list::load_his_data_from_db(bool init /*=true*/)
|
|
{
|
|
{
|
|
|
|
+ if(!init){
|
|
|
|
+ std::time_t t=time(0);
|
|
|
|
+ if(t-m_last_time<15)return;
|
|
|
|
+ m_last_time=t;
|
|
|
|
+ }
|
|
std::unordered_map<uint64_t, std::shared_ptr<ya_event>> map;
|
|
std::unordered_map<uint64_t, std::shared_ptr<ya_event>> map;
|
|
- const char *sql = "SELECT event_id, id,stat,event_type_id,obj_type_id,obj_id,dis_type,map_id,area_id,\
|
|
|
|
|
|
+ std::string sql("SELECT event_id, id,stat,event_type_id,obj_type_id,obj_id,dis_type,map_id,area_id,\
|
|
limit_value,cur_value,x,y, cur_time FROM his_event_data \
|
|
limit_value,cur_value,x,y, cur_time FROM his_event_data \
|
|
WHERE event_id IN (SELECT MAX(event_id) FROM his_event_data \
|
|
WHERE event_id IN (SELECT MAX(event_id) FROM his_event_data \
|
|
WHERE cur_time > (CASE obj_type_id \
|
|
WHERE cur_time > (CASE obj_type_id \
|
|
@@ -266,10 +271,12 @@ void event_list::load_his_data_from_db()
|
|
AND cur_time < NOW()\
|
|
AND cur_time < NOW()\
|
|
GROUP BY event_type_id, obj_id,dis_type) \
|
|
GROUP BY event_type_id, obj_id,dis_type) \
|
|
AND event_id NOT IN ( SELECT event_id FROM his_event_data WHERE stat=100)\
|
|
AND event_id NOT IN ( SELECT event_id FROM his_event_data WHERE stat=100)\
|
|
- AND event_type_id NOT IN (21,22,31,36);";
|
|
|
|
|
|
+ AND event_type_id NOT IN (21,22,31,36);");
|
|
|
|
+ if(!init)
|
|
|
|
+ sql="SELECT event_id, id,stat,event_type_id,obj_type_id,obj_id,dis_type,map_id,area_id,limit_value,cur_value,x,y, cur_time FROM his_event_data WHERE cur_time > date_sub(NOW(),interval 20 second) and source=1 order by stat;";
|
|
std::string Error;
|
|
std::string Error;
|
|
YADB::CDBResultSet DBRes;
|
|
YADB::CDBResultSet DBRes;
|
|
- sDBConnPool.Query(sql,DBRes,Error);
|
|
|
|
|
|
+ sDBConnPool.Query(sql.c_str(),DBRes,Error);
|
|
if(!Error.empty())
|
|
if(!Error.empty())
|
|
log_error("初始化事件列表 Error,%s",Error.c_str());
|
|
log_error("初始化事件列表 Error,%s",Error.c_str());
|
|
uint64_t nCount = DBRes.GetRecordCount( Error );
|
|
uint64_t nCount = DBRes.GetRecordCount( Error );
|
|
@@ -321,8 +328,17 @@ void event_list::load_his_data_from_db()
|
|
int stat = 0;
|
|
int stat = 0;
|
|
DBRes.GetField( "stat",stat, Error );
|
|
DBRes.GetField( "stat",stat, Error );
|
|
|
|
|
|
|
|
+ std::shared_ptr<ya_event> ev=nullptr;
|
|
|
|
+ bool flag=false;
|
|
|
|
+ if(!init){
|
|
|
|
+ ev=event_list::instance()->get(id);
|
|
|
|
+ if(!ev) ev = std::make_shared<ya_event>(event_id);
|
|
|
|
+ else flag=true;
|
|
|
|
+ }
|
|
|
|
+ else{
|
|
|
|
+ ev = std::make_shared<ya_event>(event_id);
|
|
|
|
+ }
|
|
|
|
|
|
- std::shared_ptr<ya_event> ev = std::make_shared<ya_event>(event_id);
|
|
|
|
ev->m_status = static_cast<EVENT_STATUS>(stat);
|
|
ev->m_status = static_cast<EVENT_STATUS>(stat);
|
|
ev->m_ev_type = static_cast<EVENT_TYPE>(event_type_id);
|
|
ev->m_ev_type = static_cast<EVENT_TYPE>(event_type_id);
|
|
|
|
|
|
@@ -339,6 +355,7 @@ void event_list::load_his_data_from_db()
|
|
ev->x = x;
|
|
ev->x = x;
|
|
ev->y = y;
|
|
ev->y = y;
|
|
ev->m_id = id;
|
|
ev->m_id = id;
|
|
|
|
+ ev->m_is_sent=false;
|
|
//这里当是卡告警的时候,对m_event数据进行赋值
|
|
//这里当是卡告警的时候,对m_event数据进行赋值
|
|
//方便清理
|
|
//方便清理
|
|
//备注防追尾告警和一人多卡告警可能不适用,后续整理
|
|
//备注防追尾告警和一人多卡告警可能不适用,后续整理
|
|
@@ -357,8 +374,8 @@ void event_list::load_his_data_from_db()
|
|
if(ev->m_ev_type==ET_READER_POWER_BY_BATTERY)
|
|
if(ev->m_ev_type==ET_READER_POWER_BY_BATTERY)
|
|
if(auto r=sit_list::instance()->get(std::stoi(obj_id)))
|
|
if(auto r=sit_list::instance()->get(std::stoi(obj_id)))
|
|
r->m_power_ac_down=true;
|
|
r->m_power_ac_down=true;
|
|
-
|
|
|
|
- map.insert(std::make_pair(id, ev));
|
|
|
|
|
|
+ if(!flag)
|
|
|
|
+ map.insert(std::make_pair(id, ev));
|
|
log_info("event_list %lld,%lld,%d,%d,%d,%s,%d,%d,%d,%.2f,%.2f,%.2f,%.2f,%s"
|
|
log_info("event_list %lld,%lld,%d,%d,%d,%s,%d,%d,%d,%.2f,%.2f,%.2f,%.2f,%s"
|
|
, ev->m_ev_id,ev->m_id,ev->m_status,ev->m_ev_type,ev->m_obj_type,ev->m_obj_id.c_str(),ev->m_dis_type
|
|
, ev->m_ev_id,ev->m_id,ev->m_status,ev->m_ev_type,ev->m_obj_type,ev->m_obj_id.c_str(),ev->m_dis_type
|
|
,ev->m_map_id,ev->m_area_id,ev->m_limit_value,ev->m_cur_value
|
|
,ev->m_map_id,ev->m_area_id,ev->m_limit_value,ev->m_cur_value
|
|
@@ -399,7 +416,8 @@ void event_list::_ev_to_node(std::shared_ptr<ya_event> ev_ptr,
|
|
{
|
|
{
|
|
rapidjson::Value ev(rapidjson::kObjectType);
|
|
rapidjson::Value ev(rapidjson::kObjectType);
|
|
|
|
|
|
- ev.AddMember(JSON_KEY_EVENT_EVENT_ID,ev_ptr->m_id, allocator);
|
|
|
|
|
|
+ //ev.AddMember(JSON_KEY_EVENT_EVENT_ID,ev_ptr->m_id, allocator);
|
|
|
|
+ tool_json::add_member(ev, JSON_KEY_EVENT_EVENT_ID, std::to_string(ev_ptr->m_id), allocator);
|
|
ev.AddMember(JSON_KEY_EVENT_STATUS,ev_ptr->m_status, allocator);
|
|
ev.AddMember(JSON_KEY_EVENT_STATUS,ev_ptr->m_status, allocator);
|
|
|
|
|
|
ev.AddMember(JSON_KEY_EVENT_TYPE_ID,ev_ptr->m_ev_type, allocator);
|
|
ev.AddMember(JSON_KEY_EVENT_TYPE_ID,ev_ptr->m_ev_type, allocator);
|