Bladeren bron

告警使用新的接口

chensongchao 6 jaren geleden
bovenliggende
commit
a6013a6061
6 gewijzigde bestanden met toevoegingen van 22 en 180 verwijderingen
  1. 1 0
      ant.cpp
  2. 1 0
      ant.h
  3. 7 107
      mine_module/MineCardManager.cpp
  4. 1 20
      mine_module/MineCardManager.h
  5. 11 52
      site_message_handle.cpp
  6. 1 1
      site_message_handle.h

+ 1 - 0
ant.cpp

@@ -18,6 +18,7 @@ site::site(int id)
     ,m_path_empty(true)
 {
 	m_time=time(0);
+    m_powerType = 1;
 }
 const algo_config&site::config()const
 {

+ 1 - 0
ant.h

@@ -139,6 +139,7 @@ struct site:point,std::enable_shared_from_this<site>
     unsigned char m_relay_counts;		// 大小分站经过中继数
     bool m_needpower_alarm;			//是否需要分站电池供电告警功能
     int  m_tick_count;			    // 分站发生消息的计数器
+    int  m_powerType;               // 分站电源类型 (1 = 直流电)
 
     site(int id=-1);
     int index()const;

+ 7 - 107
mine_module/MineCardManager.cpp

@@ -2,6 +2,8 @@
 #include "ya_setting.h"
 #include "common_tool.h"
 #include "mine.h"
+#include "event.h"
+#include "tool_time.h"
 
 CMineCardManager::CMineCardManager()
 {
@@ -13,102 +15,15 @@ std::shared_ptr<mine_card_info> CMineCardManager::GetMineCards()
     return m_minecards;
 }
 
- /**
-     * @brief 获取事件ID
-     **/
-uint64_t CMineCardManager::GetMineEventId(int evType)
-{
-    return event_list::to_list_id(static_cast<EVENT_TYPE>(evType),OT_MINE,0,0);
-}
-
 bool CMineCardManager::Exist(SET_CARDID &list,uint64_t id)
 {
-    if (list.find(id) == list.end())
-    {
-        return false;
-    }
-    return true;
+    return !(list.end() == list.find(id));
 }
 
 bool CMineCardManager::Exist(SET_CARDID &list,int card_id,int card_type)
 {
     return Exist(list,tool_other::type_id_to_u64(card_type,card_id));
 }
-
-/**
- * @brief 创建警告开始事件
- * @param evType 警告类型
- * @param limitVal 限制数据(阀门值)
- * @param curVal 当前数据
- **/
-void CMineCardManager::StartEvent(int evType,int limitVal,int curVal)
-{
-    int oldState = EVENT_STATUS::ES_END;
-    uint64_t evid = this->GetMineEventId(evType);
-    auto ev_ptr = event_list::instance()->get(evid);
-    if (nullptr != ev_ptr)
-    {
-        oldState = ev_ptr->m_status;
-    }
-    else
-    {
-        ev_ptr = event_list::instance()->create_event_mine(0,(EVENT_TYPE)evType);
-        if (nullptr == ev_ptr)
-        {
-            //打印日志
-            log_error("CMineCardManager::StartEvent: Create Event Fail.evid=%%llu evType=%d,evState=ES_START ",evid,evType);
-            return ;
-        }
-        ev_ptr->m_obj_id = "0";
-        event_list::instance()->add(ev_ptr->get_list_id(),ev_ptr);
-    }
-    ev_ptr->m_status = EVENT_STATUS::ES_START;	
-    ev_ptr->m_cur_value= curVal;
-    ev_ptr->m_limit_value = limitVal;
-    ev_ptr->m_is_display = true;
-    ev_ptr->m_cur_time = std::chrono::system_clock::now();;
-    if (oldState == EVENT_STATUS::ES_END)
-    {
-        event_list::instance()->save_event(ev_ptr);
-    }
-    if (evType < MAX_MINE_EVENT_NUM)
-    {
-        m_evlist[evType] = evid;
-    }
-    log_info("CMineCardManager::StartEvent: Create Success .id=%%llu -%%llu  evType=%d,evState=ES_START ",evid,ev_ptr->get_list_id(),evType);
-}
-
-/**
- * @brief 取消警告事件
- * @param evType 警告类型
- * @param curVal 当前数据
- **/
-void CMineCardManager::CancelEvent(int evType,int curVal)
-{
-    uint64_t evid = this->GetMineEventId(evType);
-    auto ev_ptr = event_list::instance()->get(evid);
-    if (nullptr == ev_ptr)
-    {
-        //打印日志
-        log_errno("CMineCardManager::CancelEvent: Not Find Event.id=%%llu  evType=%d,evState=ES_END ",evid,evType);
-        return ;
-    }
-    if (ev_ptr->m_status == EVENT_STATUS::ES_END)
-    {
-        return ;
-    }
-    ev_ptr->m_status = EVENT_STATUS::ES_END;	
-    ev_ptr->m_cur_value= curVal;
-    ev_ptr->m_is_display = true;
-    ev_ptr->m_cur_time = std::chrono::system_clock::now();;
-    event_list::instance()->save_event(ev_ptr);
-    if (evType < MAX_MINE_EVENT_NUM)
-    {
-        m_evlist[evType] = 0;
-    }
-    log_info("CMineCardManager::CancelEvent: Success .id=%%llu  evType=%d,evState=ES_END ",evid,evType);
-}
-
 /**
  * @brief 人员下井
  * @param card 卡
@@ -188,8 +103,8 @@ void CMineCardManager::OnPersonOvercrowdingWarning()
         }
         //打印日志
         log_info("[lemon mp_card_list_down_person:]:%s",log.c_str());
-
-        this->StartEvent(EVENT_TYPE::ET_OVER_COUNT_PERSON,max_person,(int)m_minecards->m_down_person.size());
+        event_tool::instance()->handle_event(0,EVENT_TYPE::ET_OVER_COUNT_PERSON,max_person,(double)m_minecards->m_down_person.size(),true);
+        //this->StartEvent(EVENT_TYPE::ET_OVER_COUNT_PERSON,max_person,(int)m_minecards->m_down_person.size());
     }
 }
 
@@ -209,7 +124,6 @@ void CMineCardManager::OnPersonInMineOverTime(int card_id,int card_type)
     {
         return ;
     }
-
     int sec= tool_time::to_ms(std::chrono::system_clock::now()) - mine->get_work_time();
     if (!mine->m_is_overtime && sec > (int)CYaSetting::m_sys_setting.over_time_person)
     {
@@ -228,22 +142,8 @@ void CMineCardManager::OnPersonInMineOverTime(int card_id,int card_type)
     }
 
     // 发送警告
-    event_ptr evPtr = event_list::instance()->get_event_card(card->m_id,card->m_type,ET_CARD_OVER_TIME_PERSON);
-    if (nullptr == evPtr)
-    {
-        event_ptr evPtr = event_list::create_event_card(card->m_id, card->m_type, ET_CARD_OVER_TIME_PERSON);
-        event_list::instance()->copy_event(card, evPtr);
-        event_list::instance()->add(evPtr->get_list_id(), evPtr);
-    }
-    evPtr->m_limit_value = 0;
-    evPtr->m_cur_value = 0;
-    evPtr->m_is_display = true;
-    evPtr->m_status = mine->m_is_overtime ? ES_START : ES_END;
-    evPtr->m_cur_time = std::chrono::system_clock::now();
-
-    event_list::save_event(evPtr);
-
-    log_info("OnPersonInMineOverTime: send Event=ET_CARD_OVER_TIME_PERSON card=id,eventState=%d",card->m_id,evPtr->m_status);
+    event_tool::instance()->handle_event(0,EVENT_TYPE::ET_CARD_OVER_TIME_PERSON,0,0, mine->m_is_overtime);
+    log_info("OnPersonInMineOverTime: send Event=ET_CARD_OVER_TIME_PERSON card=id,eventState=%d",card->m_id, mine->m_is_overtime);
 }
     /**
  * @brief 车下井

+ 1 - 20
mine_module/MineCardManager.h

@@ -7,7 +7,7 @@
 
 #include "minestruct.h"
 #include "card.h"
-#include "module_service/module_const.h"
+#include "module_service/module_singleton_base.h"
 
 //井下警告类型数量
 #define MAX_MINE_EVENT_NUM 3
@@ -21,31 +21,12 @@ private:
 private:
     std::shared_ptr<mine_card_info> m_minecards;
 
-    //井下警告列表ID(下标为实践类型)
-    uint64_t m_evlist[MAX_MINE_EVENT_NUM];
 private:
-    /**
-     * @brief 获取事件ID
-     **/
-    uint64_t GetMineEventId(int evType);
     /**
      * @brief 判断是否已存在
      **/
     bool Exist(SET_CARDID &list,uint64_t id);
     bool Exist(SET_CARDID &list,int card_id,int card_type);
-     /**
-     * @brief 创建警告事件
-     * @param evType 警告类型
-     * @param limitVal 限制数据(阀门值)
-     * @param curVal 当前数据
-     **/
-    void StartEvent(int evType,int limitVal,int curVal);
-    /**
-     * @brief 取消警告事件
-     * @param evType 警告类型
-     * @param curVal 当前数据
-     **/
-    void CancelEvent(int evType,int curVal);
 public:
     //TODO: 获取信息
     std::shared_ptr<mine_card_info> GetMineCards() ;

+ 11 - 52
site_message_handle.cpp

@@ -6,7 +6,7 @@
 #include "system_basic_info/SystemAnalysis.h"
 #include "common_tool.h"
 #include "ant.h"
-#include "ya_event.h"
+#include "event.h"
 
 site_message_handle::site_message_handle()
 {
@@ -69,61 +69,20 @@ void site_message_handle::parse_data_locate_reader(int msgId,const message_sitei
 void site_message_handle::reader_power_battery_alarm(unsigned int site_id, int powerType)
 {
     std::shared_ptr<site> pSite = sit_list::instance()->get(site_id);
-    if (pSite == nullptr )
+    if (pSite == nullptr || !pSite->m_needpower_alarm)
     {
-        return ;
+        return ;//如果分站不需要电池供电告警,
     }
-    std::shared_ptr<ya_event> ev_ptr = event_list::instance()->get_event_reader(site_id,ET_READER_POWER_BY_BATTERY);
-    int oldEvState = -1;
-    int usePowerType = powerType;
-    if (!pSite->m_needpower_alarm)
+    if (powerType != pSite->m_powerType && pSite->m_powerType == 1)
     {
-        //如果分站不需要电池供电告警,而告警事件列表中存在告警信息,需要发送结束告警事件
-        if (nullptr != ev_ptr && ev_ptr->m_status == ES_START)
-        {
-            oldEvState = ES_START;
-            usePowerType = 1;
-        }
-        else
-        {
-            return;
-        }
+        //交流电 变成直流电(掉电),发送警告
+        event_tool::instance()->handle_event(site_id,ET_READER_POWER_BY_BATTERY,0,powerType,true);
     }
-    switch (usePowerType)
+    else if (powerType != pSite->m_powerType && pSite->m_powerType != 1)
     {
-        case 1 : //交流电 取消警告
-        {
-            if(nullptr == ev_ptr || oldEvState == ES_END)
-            {
-                return ;  //不出在警告并且警告已是取消状态
-            }
-            event_list::copy_event(pSite,ev_ptr);
-            ev_ptr->m_status = ES_END;
-            ev_ptr->m_cur_time = std::chrono::system_clock::now();
-            ev_ptr->m_cur_value = usePowerType;
-            ev_ptr->m_is_display = true;
-            event_list::save_event(ev_ptr);
-            log_info("[event warning: restore reader power supply] reader_id: %d.",site_id);
-        }
-        break;
-        case 0: //直流电警告
-        {
-            if(nullptr != ev_ptr && oldEvState == ES_START)
-            {
-                return ; //已有警告在发送不需要再次添加
-            }
-            if (nullptr == ev_ptr)
-            {
-                ev_ptr = event_list::create_event_reader(site_id,ET_READER_POWER_BY_BATTERY);
-                event_list::copy_event(pSite,ev_ptr);
-                event_list::instance()->add(ev_ptr->get_list_id(),ev_ptr);
-            }
-            ev_ptr->m_status = ES_START;
-            ev_ptr->m_limit_value = 0;
-            ev_ptr->m_cur_value = usePowerType;
-            event_list::save_event(ev_ptr);
-            log_info("[event warning: reader power supply by battery] reader_id: %d.",site_id);
-        }
-        break;
+        //直流电 变成交流电,取消警告
+        event_tool::instance()->handle_event(site_id,ET_READER_POWER_BY_BATTERY,0,powerType,false);
     }
+    log_info("[event warning: reader power supply by battery] reader_id: Power %d->%d.",site_id,pSite->m_powerType,powerType);
+    pSite->m_powerType = powerType;
 }

+ 1 - 1
site_message_handle.h

@@ -5,7 +5,7 @@
 #ifndef WORKSPACE_SITE_MESSAGE_HANDLE_H
 #define WORKSPACE_SITE_MESSAGE_HANDLE_H
 
-#include "module_service/module_const.h"
+#include "module_service/module_singleton_base.h"
 #include "message.h"
 
 class site_message_handle : public singleton_base<site_message_handle>