Browse Source

虚拟告警增量发送逻辑

lixioayao 5 years ago
parent
commit
1949cd2f5c
2 changed files with 12 additions and 9 deletions
  1. 12 8
      event.cpp
  2. 0 1
      event.h

+ 12 - 8
event.cpp

@@ -97,7 +97,8 @@ void Event::handle_alarm_event(EVENT_TYPE et,uint64_t id,double limit_value,doub
         {
             //已经存在告警
             event_ptr->m_cur_value = cur_value;
-            event_ptr->m_is_sent=false;
+            if(et!=ET_READER_ERROR)
+                event_ptr->m_is_sent=false;
         }
         else
         {
@@ -252,10 +253,11 @@ void event_list::save_event(const std::shared_ptr<ya_event> &ev_ptr)
 
 void event_list::load_his_data_from_db(bool init /*=true*/)
 {
+    static std::time_t s_last_time=0;
     if(!init){
         std::time_t t=time(0);
-        if(t-m_last_time<15)return;
-        m_last_time=t;
+        if(t-s_last_time<15)return;
+        s_last_time=t;
     }
     std::unordered_map<uint64_t, std::shared_ptr<ya_event>> map;
     std::string sql("SELECT event_id, id,stat,event_type_id,obj_type_id,obj_id,dis_type,map_id,area_id,\
@@ -332,10 +334,13 @@ void event_list::load_his_data_from_db(bool init /*=true*/)
             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{
+                if(!ev){
+                    ev = std::make_shared<ya_event>(event_id);
+                }else{
+                    flag=true;
+                    if(stat==100)ev->m_is_sent=false;
+                }
+            }else{
                 ev = std::make_shared<ya_event>(event_id);
             }
 
@@ -355,7 +360,6 @@ void event_list::load_his_data_from_db(bool init /*=true*/)
             ev->x = x;
             ev->y = y;
             ev->m_id = id;
-            ev->m_is_sent=false;
             //这里当是卡告警的时候,对m_event数据进行赋值
             //方便清理
             //备注防追尾告警和一人多卡告警可能不适用,后续整理

+ 0 - 1
event.h

@@ -133,6 +133,5 @@ private:
     static void _ev_to_node(std::shared_ptr<ya_event> ev_ptr,
                             rapidjson::Document::AllocatorType& allocator,
                             rapidjson::Value& out_data);
-    std::time_t     m_last_time{0};
 };
 #endif