ソースを参照

修改 module_over_speed_vehicle

daiyueteng 6 年 前
コミット
21b732d6dc

+ 116 - 0
module_service/module_over_speed_vehicle.cpp

@@ -0,0 +1,116 @@
+#include "module_over_speed_vehicle.h"
+
+#include "ya_event.h"
+#include"log.h"
+#include"db/db_api/CDBSingletonDefine.h"
+#include"mine.h"
+
+
+void module_over_speed_vehicle::on_hover(std::shared_ptr<card_location_base> card_ptr, int vehicle_category_id)
+{
+    auto mine_tool_ptr = card_ptr->get_mine_tool();
+
+    if(is_over_speed(vehicle_category_id, card_ptr->m_speed))//超速
+    {
+        mine_tool_ptr->m_over_speed_count++;
+    }
+    else//速度正常
+    {
+        mine_tool_ptr->m_normal_speed_count++;
+    }
+
+    //确定超速
+    if(SPEED_COUNT_LIMIT <= mine_tool_ptr->m_over_speed_count)
+    {
+        mine_tool_ptr->m_over_speed_count=SPEED_COUNT_LIMIT;
+
+        auto ev_ptr = event_list::instance()->get_event_card(card_ptr->m_id, card_ptr->m_type, ET_CARD_OVER_SPEED);
+        if(ev_ptr)
+        {
+            event_list::copy_event(card_ptr, ev_ptr);
+
+            ev_ptr->m_limit_value=limit_speed(vehicle_category_id);
+            ev_ptr->m_cur_value=card_ptr->m_speed;
+        }
+        else//从没有告警状态转化为告警状态
+        {
+            mine_tool_ptr->m_normal_speed_count=0;
+
+            auto ev_ptr = event_list::create_event_card(card_ptr->m_id, card_ptr->m_type, ET_CARD_OVER_SPEED);
+
+            event_list::copy_event(card_ptr, ev_ptr);
+
+            ev_ptr->m_limit_value = limit_speed(vehicle_category_id);
+            ev_ptr->m_cur_value = card_ptr->m_speed;
+
+            //保存到数据库
+            event_list::save_event(ev_ptr);
+
+            event_list::instance()->add(ev_ptr->get_list_id(),ev_ptr);
+
+            log_info("车卡矿井内超速开始:卡id=%d,卡type=%d,卡速=%f,卡category_id=%d,卡速门限=%f",
+                     card_ptr->m_id, card_ptr->m_type,card_ptr->m_speed,vehicle_category_id,
+                     limit_speed(vehicle_category_id));
+        }
+    }
+
+    //确定速度正常
+    if(SPEED_COUNT_LIMIT <= mine_tool_ptr->m_normal_speed_count)
+    {
+        mine_tool_ptr->m_normal_speed_count=SPEED_COUNT_LIMIT;
+
+        auto ev_ptr = event_list::instance()->get_event_card(card_ptr->m_id, card_ptr->m_type, ET_CARD_OVER_SPEED);
+        if(ev_ptr && !ev_ptr->is_end())
+        {
+            mine_tool_ptr->m_over_speed_count=0;
+
+            event_list::copy_event(card_ptr, ev_ptr);
+
+            ev_ptr->m_limit_value = limit_speed(vehicle_category_id);
+            ev_ptr->m_cur_value = card_ptr->m_speed;
+
+            ev_ptr->m_status = ES_END;
+
+            //保存到数据库
+            event_list::save_event(ev_ptr);
+
+            log_info("车卡矿井内超速结束:卡id=%d,卡type=%d,卡速=%f,卡category_id=%d,卡速门限=%f",
+                     card_ptr->m_id, card_ptr->m_type,card_ptr->m_speed,vehicle_category_id,
+                     limit_speed(vehicle_category_id));
+        }
+    }
+}
+
+void module_over_speed_vehicle::init_vehicle_category_from_db()
+{
+    const char *sql = "SELECT vehicle_category_id, over_speed FROM dat_vehicle_category;";
+    std::string Error;
+    YADB::CDBResultSet DBRes;
+    sDBConnPool.Query(sql,DBRes,Error);
+    if(!Error.empty())
+        log_error("init_vehicle_category Error,%s",Error.c_str());
+    int64_t nCount = DBRes.GetRecordCount( Error );
+    if (nCount < 1)
+    {
+        log_error("错误,init_vehicle_category. The record count=%ld\n", nCount );
+        return;
+    }
+
+    log_info( "init_vehicle_category. The record count=%ld\n", nCount );
+
+    _vehicle_category_map.clear();
+    while ( DBRes.GetNextRecod(Error) )
+    {
+        int vehicle_category_id  = 0;
+        DBRes.GetField( "vehicle_category_id",vehicle_category_id, Error );
+
+        double over_speed = 0;
+        DBRes.GetField( "over_speed",over_speed, Error );
+
+        _vehicle_category_map.insert({vehicle_category_id,over_speed});
+    }
+
+    for(const auto &p : _vehicle_category_map)
+        std_debug("dat_vehicle_category:category_id:%d--over_speed:%.2f",p.first,p.second);
+}
+

+ 5 - 112
module_service/module_over_speed_vehicle.h

@@ -6,12 +6,9 @@
   * @date 2018-08-08
 */
 
-#include <mutex>
-#include <map>
-#include <chrono>
-#include <boost/thread.hpp>
-#include <boost/enable_shared_from_this.hpp>
-#include "module_const.h"
+#include <unordered_map>
+#include "module_singleton_base.h"
+#include "card.h"
 
 /**
  * @brief 区域超速类。当某张车卡速度超过某个区域的最大速度时,发出告警, 单例
@@ -25,113 +22,9 @@ private:
     }
 
 public:
-    void on_hover(std::shared_ptr<card_location_base> card_ptr, int vehicle_category_id)
-    {
-        auto mine_tool_ptr = card_ptr->get_mine_tool();
-
-        if(is_over_speed(vehicle_category_id, card_ptr->m_speed))//超速
-        {
-            mine_tool_ptr->m_over_speed_count++;
-        }
-        else//速度正常
-        {
-            mine_tool_ptr->m_normal_speed_count++;
-        }
-
-        //确定超速
-        if(SPEED_COUNT_LIMIT <= mine_tool_ptr->m_over_speed_count)
-        {
-            mine_tool_ptr->m_over_speed_count=SPEED_COUNT_LIMIT;
-
-            auto ev_ptr = event_list::instance()->get_event_card(card_ptr->m_id, card_ptr->m_type, ET_CARD_OVER_SPEED);
-            if(ev_ptr)
-            {
-                event_list::copy_event(card_ptr, ev_ptr);
-
-                ev_ptr->m_limit_value=limit_speed(vehicle_category_id);
-                ev_ptr->m_cur_value=card_ptr->m_speed;
-            }
-            else//从没有告警状态转化为告警状态
-            {
-                mine_tool_ptr->m_normal_speed_count=0;
-
-                auto ev_ptr = event_list::create_event_card(card_ptr->m_id, card_ptr->m_type, ET_CARD_OVER_SPEED);
-
-                event_list::copy_event(card_ptr, ev_ptr);
-
-                ev_ptr->m_limit_value = limit_speed(vehicle_category_id);
-                ev_ptr->m_cur_value = card_ptr->m_speed;
-
-                //保存到数据库
-                event_list::save_event(ev_ptr);
-
-                event_list::instance()->add(ev_ptr->get_list_id(),ev_ptr);
-
-                log_info("车卡矿井内超速开始:卡id=%d,卡type=%d,卡速=%f,卡category_id=%d,卡速门限=%f",
-                         card_ptr->m_id, card_ptr->m_type,card_ptr->m_speed,vehicle_category_id,
-                         limit_speed(vehicle_category_id));
-            }
-        }
-
-        //确定速度正常
-        if(SPEED_COUNT_LIMIT <= mine_tool_ptr->m_normal_speed_count)
-        {
-            mine_tool_ptr->m_normal_speed_count=SPEED_COUNT_LIMIT;
+    void on_hover(std::shared_ptr<card_location_base> card_ptr, int vehicle_category_id);
 
-            auto ev_ptr = event_list::instance()->get_event_card(card_ptr->m_id, card_ptr->m_type, ET_CARD_OVER_SPEED);
-            if(ev_ptr && !ev_ptr->is_end())
-            {
-                mine_tool_ptr->m_over_speed_count=0;
-
-                event_list::copy_event(card_ptr, ev_ptr);
-
-                ev_ptr->m_limit_value = limit_speed(vehicle_category_id);
-                ev_ptr->m_cur_value = card_ptr->m_speed;
-
-                ev_ptr->m_status = ES_END;
-
-                //保存到数据库
-                event_list::save_event(ev_ptr);
-
-                log_info("车卡矿井内超速结束:卡id=%d,卡type=%d,卡速=%f,卡category_id=%d,卡速门限=%f",
-                         card_ptr->m_id, card_ptr->m_type,card_ptr->m_speed,vehicle_category_id,
-                         limit_speed(vehicle_category_id));
-            }
-        }
-    }
-
-    void init_vehicle_category_from_db()
-    {
-        const char *sql = "SELECT vehicle_category_id, over_speed FROM dat_vehicle_category;";
-        std::string Error;
-        YADB::CDBResultSet DBRes;
-        sDBConnPool.Query(sql,DBRes,Error);
-        if(!Error.empty())
-            log_error("init_vehicle_category Error,%s",Error.c_str());
-        int64_t nCount = DBRes.GetRecordCount( Error );
-        if (nCount < 1)
-        {
-            log_error("错误,init_vehicle_category. The record count=%ld\n", nCount );
-            return;
-        }
-
-        log_info( "init_vehicle_category. The record count=%ld\n", nCount );
-
-        _vehicle_category_map.clear();
-        while ( DBRes.GetNextRecod(Error) )
-        {
-            int vehicle_category_id  = 0;
-            DBRes.GetField( "vehicle_category_id",vehicle_category_id, Error );
-
-            double over_speed = 0;
-            DBRes.GetField( "over_speed",over_speed, Error );
-
-            _vehicle_category_map.insert({vehicle_category_id,over_speed});
-        }
-
-        for(const auto &p : _vehicle_category_map)
-            std_debug("dat_vehicle_category:category_id:%d--over_speed:%.2f",p.first,p.second);
-    }
+    void init_vehicle_category_from_db();
 
 private:
     bool is_over_speed(int category_id, double speed)