Browse Source

Merge branch 'master' of http://local.beijingyongan.com:3000/linux-dev/ya-serv

liulei 6 years ago
parent
commit
101f489f40

+ 5 - 51
db/db_tool.cpp

@@ -26,7 +26,8 @@ namespace db_tool
 		return std::string(sql);
 	}
 
-    void save_attendance(const std::shared_ptr<card_location_base>& card_ptr)
+    void save_attendance(const std::shared_ptr<card_location_base>& card_ptr,
+                         const std::shared_ptr<area_hover>& area_hover_ptr)
     {
         char sql[LENGTH_SQL] = {0};
 
@@ -48,56 +49,9 @@ namespace db_tool
         std::string start_str = tool_time::to_str(start);
         std::string end_str = tool_time::to_str(end);
 
-        int landmarkid = 0;
-        int landmarkdirect=0;
-        double landmarkdist=0;
-        auto area_hover_ptr = card_ptr->get_area_hover();
-        if(area_hover_ptr)
-        {
-            landmarkid = area_hover_ptr->landmark_id;
-            landmarkdirect = area_hover_ptr->landmark_dir;
-            landmarkdist = area_hover_ptr->landmark_dis;
-        }
-
-        sprintf(sql, "CALL %s(%s, %d, '%s', '%s', %d, %d, %.3f);", call.c_str(),
-               type_id_to_str(card_ptr->m_type,card_ptr->m_id).c_str(),
-                card_ptr->m_id, start_str.c_str(), end_str.c_str(),
-                landmarkid, landmarkdirect, landmarkdist);
-
-        PushAsync(sql);
-    }
-
-    void save_attendance(const std::shared_ptr<card_location_base>& card_ptr,
-                         bool is_attendance, std::chrono::system_clock::time_point& attendance_start_time)
-    {
-        char sql[LENGTH_SQL] = {0};
-
-        std::string call("add_att_staff");
-        if(card_ptr->is_vehicle())//车卡
-        {
-            call="add_att_vehicle";
-        }
-
-        auto start = attendance_start_time;
-        auto end = attendance_start_time;
-        if(!is_attendance)//考勤结束时间
-        {
-            end = std::chrono::system_clock::now();
-        }
-
-        std::string start_str = tool_time::to_str(start);
-        std::string end_str = tool_time::to_str(end);
-
-        int landmarkid = 0;
-        int landmarkdirect=0;
-        double landmarkdist=0;
-        auto area_hover_ptr = card_ptr->get_area_hover();
-        if(area_hover_ptr)
-        {
-            landmarkid = area_hover_ptr->landmark_id;
-            landmarkdirect = area_hover_ptr->landmark_dir;
-            landmarkdist = area_hover_ptr->landmark_dis;
-        }
+        int landmarkid = area_hover_ptr->landmark_id;
+        int landmarkdirect=area_hover_ptr->landmark_dir;
+        double landmarkdist=area_hover_ptr->landmark_dis;
 
         sprintf(sql, "CALL %s(%s, %d, '%s', '%s', %d, %d, %.3f);", call.c_str(),
                type_id_to_str(card_ptr->m_type,card_ptr->m_id).c_str(),

+ 2 - 2
db/db_tool.h

@@ -4,12 +4,12 @@
 #include <memory>
 #include<chrono>
 struct card_location_base;
+struct area_hover;
 namespace db_tool
 {
     void PushAsync(const char* sql);
-    void save_attendance(const std::shared_ptr<card_location_base>& card_ptr);
     void save_attendance(const std::shared_ptr<card_location_base>& card_ptr,
-                         bool is_attendance, std::chrono::system_clock::time_point& attendance_start_time);
+                                        const std::shared_ptr<area_hover>& area_hover_ptr);
 }
 
 #endif

+ 3 - 3
module_service/area_business_car_attendance.cpp

@@ -43,7 +43,7 @@ void area_business_car_attendance::on_enter(const std::shared_ptr<area_hover>&ar
     //考勤结束
     mine_tool_ptr->m_is_attendance=false;
     //作为一条结束考勤记录保存到数据库
-    db_tool::save_attendance(card_ptr);
+    db_tool::save_attendance(card_ptr, area_hover_ptr);
 
     //save_attendance(card_ptr, area_hover_ptr);
 
@@ -62,7 +62,7 @@ void area_business_car_attendance::on_hover(const std::shared_ptr<area_hover>&a,
 
 }
 //记录离开考勤区域信息,开始考勤
-void area_business_car_attendance::on_leave(const std::shared_ptr<area_hover>&a,
+void area_business_car_attendance::on_leave(const std::shared_ptr<area_hover>&area_hover_ptr,
                                             const std::shared_ptr<card_location_base>&card_ptr,std::shared_ptr<business_data> ptr)
 {
     if(!card_ptr->is_vehicle())
@@ -79,7 +79,7 @@ void area_business_car_attendance::on_leave(const std::shared_ptr<area_hover>&a,
         mine_tool_ptr->m_attendance_start_time=std::chrono::system_clock::now();
 
         //作为一条开始考勤记录保存到数据库
-        db_tool::save_attendance(card_ptr);
+        db_tool::save_attendance(card_ptr, area_hover_ptr);
 
         //                log_info("车卡考勤开始:卡id=%d,卡type=%d,区域id=%d, stat_attendance=%d",
         //                         card_ptr->m_id, card_ptr->m_type,

+ 4 - 4
module_service/area_business_person_attendance.cpp

@@ -31,7 +31,7 @@ area_business_person_attendance::area_business_person_attendance()
 
 
 //记录进入时间等信息,结束考勤,根据离开的时间和距离,判断是否记录一条新的考勤记录
-void area_business_person_attendance::on_enter(const std::shared_ptr<area_hover>&a,
+void area_business_person_attendance::on_enter(const std::shared_ptr<area_hover>&area_hover_ptr,
                                                const std::shared_ptr<card_location_base>&card_ptr,std::shared_ptr<business_data>&ptr)
 {
     if(!card_ptr->is_person())
@@ -47,7 +47,7 @@ void area_business_person_attendance::on_enter(const std::shared_ptr<area_hover>
         mine_tool_ptr->m_attendance_start_time=std::chrono::system_clock::now();
 
         //作为一条开始考勤记录保存到数据库
-        db_tool::save_attendance(card_ptr);
+        db_tool::save_attendance(card_ptr, area_hover_ptr);
 
         //        log_info("人卡考勤开始:卡id=%d,卡type=%d,分站id=%d,分站reader_type_id=%d,stat_attendance=%d",
         //                 card_ptr->m_id, card_ptr->m_type,
@@ -69,7 +69,7 @@ void area_business_person_attendance::on_hover(const std::shared_ptr<area_hover>
 
 }
 //记录离开考勤区域信息,开始考勤
-void area_business_person_attendance::on_leave(const std::shared_ptr<area_hover>&a,
+void area_business_person_attendance::on_leave(const std::shared_ptr<area_hover>&area_hover_ptr,
                                                const std::shared_ptr<card_location_base>&card_ptr,std::shared_ptr<business_data> ptr)
 {
     if(!card_ptr->is_person())
@@ -87,7 +87,7 @@ void area_business_person_attendance::on_leave(const std::shared_ptr<area_hover>
     mine_tool_ptr->m_is_attendance=false;
 
     //作为一条结束考勤记录保存到数据库
-    db_tool::save_attendance(card_ptr);
+    db_tool::save_attendance(card_ptr, area_hover_ptr);
 
     rapidjson::Document doc(rapidjson::kObjectType);
     rapidjson::Value datas(rapidjson::kArrayType);

+ 32 - 3
module_service/module_web.cpp

@@ -5,6 +5,7 @@
 #include"area_business_person_attendance.h"
 #include"module_meta_date_changed.h"
 #include"common_tool.h"
+#include"event.h"
 
 #include"log.h"
 
@@ -77,7 +78,7 @@ void module_web::response_login()
 
     //所有告警
     std::vector<std::shared_ptr<ya_event>> arr;
-    get_all_events(arr);
+    _get_all_events(arr);
     if(!arr.empty())
     {
         tool_json::push_back(nodes, event_list::evs_to_json(arr), allocator);
@@ -96,11 +97,11 @@ void module_web::response_login()
 void module_web::run()
 {
     std::vector<std::shared_ptr<ya_event>> arr;
-    get_all_events(arr);
+    _get_all_events(arr);
 
     if(!arr.empty())//发送给web端
     {
-        delete_end(arr);
+        _delete_end(arr);
 
         swsClientMgr.send(JSON_CMD_VALUE_PUSH, event_list::evs_to_json(arr));
     }
@@ -112,6 +113,34 @@ void module_web::run()
     }
 }
 
+void module_web::_get_all_events(std::vector<std::shared_ptr<ya_event>>& arr)
+{
+    auto _map = event_list::instance()->m_map;
+    auto it_map = _map.begin();
+    for(;it_map!=_map.end();++it_map)
+    {
+        arr.push_back(it_map->second);
+    }
+}
+
+///在全局列表中删除已经处理或结束了的告警
+void module_web::_delete_end(std::vector<std::shared_ptr<ya_event>>& arr)
+{
+    std::vector<uint64_t> todelete;
+    auto arr_iter = arr.begin();
+    for(;arr_iter!=arr.end();++arr_iter)
+    {
+        if((*arr_iter)->is_end())//删除掉已经处理的
+        {
+            todelete.push_back((*arr_iter)->get_list_id());
+        }
+    }
+
+    if(todelete.size())
+    {
+        event_list::instance()->remove(todelete);
+    }
+}
 
 
 

+ 5 - 27
module_service/module_web.h

@@ -14,11 +14,13 @@
 #include "rapidjson/document.h"
 
 #include"config_file.h"
-#include"event.h"
+
 #include"module_singleton_base.h"
 #include"module_i_thread.h"
 #include "websocket/wsClientMgr.h"
 
+struct ya_event;
+
 class module_web : public i_thread, public singleton_base<module_web>
 {
 private:
@@ -66,34 +68,10 @@ private:
     void run();
 
     ///获取所有的告警事件
-    void get_all_events(std::vector<std::shared_ptr<ya_event>>& arr)
-    {
-        auto _map = event_list::instance()->m_map;
-        auto it_map = _map.begin();
-        for(;it_map!=_map.end();++it_map)
-        {
-            arr.push_back(it_map->second);
-        }
-    }
+    void _get_all_events(std::vector<std::shared_ptr<ya_event>>& arr);
 
     ///在全局列表中删除已经处理或结束了的告警
-    void delete_end(std::vector<std::shared_ptr<ya_event>>& arr)
-    {
-        std::vector<uint64_t> todelete;
-        auto arr_iter = arr.begin();
-        for(;arr_iter!=arr.end();++arr_iter)
-        {
-            if((*arr_iter)->is_end())//删除掉已经处理的
-            {
-                todelete.push_back((*arr_iter)->get_list_id());
-            }
-        }
-
-        if(todelete.size())
-        {
-            event_list::instance()->remove(todelete);
-        }
-    }
+    void _delete_end(std::vector<std::shared_ptr<ya_event>>& arr);
 };