Browse Source

修改 void save_attendance

daiyueteng 6 years ago
parent
commit
df1b3576cb

+ 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);