Browse Source

加载员工历史定位及考勤数据,加上时间间隔限制(可配置)

chensongchao 5 years ago
parent
commit
703baf0a40
3 changed files with 15 additions and 10 deletions
  1. 10 10
      card.cpp
  2. 3 0
      ya_setting.cpp
  3. 2 0
      ya_setting.h

+ 10 - 10
card.cpp

@@ -249,14 +249,16 @@ void card_list::load_his_card_postion_vehicle()
 
 void card_list::load_his_card_postion_staff()
 {
-    const char *sql = "select l.card_id,l.site_id, l.cur_time, l.x, l.y, l.z, l.area_info, l.state, \
+    std::string sql = "select l.card_id,l.site_id, l.cur_time, l.x, l.y, l.z, l.area_info, l.state, \
             att.start_time, att.end_time \
             from rt_location l, rt_att_staff att, dat_card c, dat_staff_extend s \
             where l.card_id = c.card_id and l.card_id = att.card_id and l.card_id=s.card_id\
-            and c.state_id=0;";
+            and c.state_id=0  ";
+    sql += " and timestampdiff(hour ,att.start_time,now()) > " + std::to_string(CYaSetting::g_load_person_his_data_interval) + ";";
+
     std::string Error;
     YADB::CDBResultSet DBRes;
-    sDBConnPool.Query(sql,DBRes,Error);
+    sDBConnPool.Query(sql.c_str(),DBRes,Error);
     if(!Error.empty())
         log_error("load_his_card_postion_staff列表 Error,%s",Error.c_str());
     uint64_t nCount = DBRes.GetRecordCount( Error );
@@ -312,14 +314,12 @@ void card_list::load_his_card_postion_staff()
             card_ptr->set(x,y,z);
             card_ptr->m_time = tool_time::to_time(cur_time)*1000;
 
-            if(end_time.empty())
-            {
-                auto mine_tool_ptr = card_ptr->get_mine_tool();
-                mine_tool_ptr->m_attendance_start_time = tool_time::to_time_ex(start_time);
-                mine_tool_ptr->m_is_attendance = true;
-                log_info("person加载考勤,考勤开始时间: %s, 卡id=%s", start_time.c_str(), card_id.c_str());
-            }
+            auto mine_tool_ptr = card_ptr->get_mine_tool();
+            mine_tool_ptr->m_attendance_start_time = tool_time::to_time_ex(start_time);
+            mine_tool_ptr->m_is_attendance = true;
+            log_info("person加载考勤,考勤开始时间:%s,卡id=%s areainfo=%s", start_time.c_str(), card_id.c_str(),strAreaInfo.c_str());
 
+            //分站设置
             auto area_tool=card_ptr->get_area_tool();
             auto sit_ptr=sit_list::instance()->get(site_id);
             if(sit_ptr)

+ 3 - 0
ya_setting.cpp

@@ -5,6 +5,8 @@
 #include <config_file.h>
 extern config_file config;
 SSys_setting CYaSetting::m_sys_setting;
+
+int CYaSetting::g_load_person_his_data_interval = 48;
 /*
 * 从数据库的dat_setting表初始化系统阈值,
 * 包括:井下人员阈值,井下车辆阈值,人员超时阈值,车辆超时阈值,车辆超速阈值
@@ -12,6 +14,7 @@ SSys_setting CYaSetting::m_sys_setting;
 bool CYaSetting::Init_sys_setting()
 {
     {
+		g_load_person_his_data_interval = config.get("service.load_his_person_data_interval",48);
         m_sys_setting.rav_disable=config.get("service.rav_disable","");
         log_info("rav_disable:%s",m_sys_setting.rav_disable.c_str());
     }

+ 2 - 0
ya_setting.h

@@ -64,6 +64,8 @@ public:
     static SSys_setting m_sys_setting;
     static bool Init_sys_setting();
 
+    //加载人员历史定位,考勤数据(间隔48小时,不在加载)间隔时间(小时)
+    static int g_load_person_his_data_interval;
 };
 
 #endif