|
@@ -117,50 +117,11 @@ void card_list::load_his_card_postion_from_db()
|
|
|
{
|
|
|
load_his_card_postion_vehicle();
|
|
|
load_his_card_postion_staff();
|
|
|
-
|
|
|
- for(auto&iter: m_map)
|
|
|
- {
|
|
|
- auto card_ptr = iter.second;
|
|
|
- auto mine_tool_ptr = card_ptr->get_mine_tool();
|
|
|
- if(mine_tool_ptr->m_is_attendance)
|
|
|
- {
|
|
|
- auto str = tool_time::to_str_ex( tool_time::to_ms(mine_tool_ptr->m_attendance_start_time));
|
|
|
- log_info("加载考勤,考勤开始时间: %s, 卡id=%d,卡type=%d", str.c_str(), card_ptr->m_id, card_ptr->m_type);
|
|
|
-
|
|
|
- //还在考勤中表示,还在井下(初始化话数据)
|
|
|
- if(card_ptr->is_person())
|
|
|
- {
|
|
|
- //CMineCardManager::instance()->OnPersonDown(card_ptr,true);
|
|
|
- }
|
|
|
- if(card_ptr->is_vehicle())
|
|
|
- {
|
|
|
- //CMineCardManager::instance()->OnVehicleDown(card_ptr,true);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- //初始化后检查是否超员
|
|
|
- //CMineCardManager::instance()->OnPersonOvercrowdingWarning();
|
|
|
- //CMineCardManager::instance()->OnVehicleOvercrowdingWarning();
|
|
|
-
|
|
|
- auto area_map = area_list::instance()->m_map;
|
|
|
- for(auto&iter: area_map)
|
|
|
- {
|
|
|
- auto area_ptr = iter.second;
|
|
|
- if(area_ptr->m_person_count)
|
|
|
- {
|
|
|
- log_info("加载区域人数: 区域id=%d,区域人数=%d",area_ptr->m_id, area_ptr->m_person_count.load());
|
|
|
- }
|
|
|
-
|
|
|
- if(area_ptr->m_vehicle_count)
|
|
|
- {
|
|
|
- log_info("加载区域车数: 区域id=%d,区域车数=%d",area_ptr->m_id, area_ptr->m_vehicle_count.load());
|
|
|
- }
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
void card_list::load_his_card_postion_vehicle()
|
|
|
{
|
|
|
- const char *sql = "select l.card_id, l.cur_time, l.x, l.y, l.z, l.area_info, l.state, \
|
|
|
+ const char *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_vehicle att, dat_card c, dat_vehicle_extend v \
|
|
|
where l.card_id = c.card_id and l.card_id = att.card_id and l.card_id=v.card_id \
|
|
@@ -177,18 +138,19 @@ void card_list::load_his_card_postion_vehicle()
|
|
|
|
|
|
while ( DBRes.GetNextRecod(Error) )
|
|
|
{
|
|
|
- std::string card_id = "";
|
|
|
+ std::string card_id = "";
|
|
|
DBRes.GetField( "card_id",card_id, Error );
|
|
|
- uint32_t id = tool_other::id64_to_id(card_id);
|
|
|
- int type = tool_other::id64_to_type(card_id);
|
|
|
- auto temp_ptr = card_list::instance()->get(tool_other::type_id_to_u64(type, id));
|
|
|
- if(!temp_ptr || !temp_ptr->is_vehicle())
|
|
|
+ uint64_t c_id = tool_other::card_id_to_u64(card_id);
|
|
|
+ auto card_ptr = card_list::instance()->get(c_id);
|
|
|
+
|
|
|
+ if(!card_ptr)
|
|
|
{
|
|
|
- log_error("全局卡列表中找不到卡,卡id=%d,卡type=%d", id, type);
|
|
|
+ log_error("全局卡列表中找不到卡,%s",card_id.c_str());
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- auto card_ptr = static_cast<car*>(temp_ptr.get());
|
|
|
+ int site_id = -1;
|
|
|
+ DBRes.GetField( "site_id",site_id, Error );
|
|
|
|
|
|
double x = 0;
|
|
|
DBRes.GetField( "x",x, Error );
|
|
@@ -214,9 +176,27 @@ void card_list::load_his_card_postion_vehicle()
|
|
|
std::string end_time = "";
|
|
|
DBRes.GetField( "end_time",end_time, Error );
|
|
|
|
|
|
- card_ptr->x = x;
|
|
|
- card_ptr->y = y;
|
|
|
- card_ptr->z = z;
|
|
|
+ std::string cur_time = "";
|
|
|
+ DBRes.GetField( "cur_time",cur_time, Error );
|
|
|
+
|
|
|
+ card_ptr->m_time = tool_time::to_time(cur_time)*1000;
|
|
|
+ card_ptr->set(x,y,z);
|
|
|
+
|
|
|
+ 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("vehicle加载考勤,考勤开始时间: %s, 卡id=%s", start_time.c_str(), card_id.c_str());
|
|
|
+ }
|
|
|
+
|
|
|
+ auto area_tool=card_ptr->get_area_tool();
|
|
|
+ auto sit_ptr=sit_list::instance()->get(site_id);
|
|
|
+ if(sit_ptr)
|
|
|
+ {
|
|
|
+ auto area_hover_ptr = std::make_shared<area_hover>(sit_ptr->get_area(),*card_ptr);
|
|
|
+ area_tool->m_hover_list.push_back(area_hover_ptr);
|
|
|
+ }
|
|
|
|
|
|
//解析area_info
|
|
|
const char * split = "|";
|
|
@@ -236,22 +216,13 @@ void card_list::load_his_card_postion_vehicle()
|
|
|
log_error("load_vehicle...area_list 找不到区域:区域id=%d", area_id);
|
|
|
continue;
|
|
|
}
|
|
|
-
|
|
|
- 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;
|
|
|
- }
|
|
|
-
|
|
|
- card_ptr->m_time = tool_time::now_to_ms();
|
|
|
-
|
|
|
+ log_info("load_vehicle_area:%s,%d,%lu",card_id.c_str(),area_id,enter_time);
|
|
|
//要放到最后
|
|
|
auto area_hover_ptr = std::make_shared<area_hover>();
|
|
|
area_hover_ptr->m_area = area;
|
|
|
area_hover_ptr->m_enter_time = enter_time;
|
|
|
- card_ptr->m_area_tool->m_hover_list.push_back(area_hover_ptr);
|
|
|
- area_hover_ptr->m_area->on_load_his(area_hover_ptr, temp_ptr);
|
|
|
+ area_tool->m_hover_list.push_back(area_hover_ptr);
|
|
|
+ area->on_load_his(area_hover_ptr, card_ptr);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -259,7 +230,7 @@ void card_list::load_his_card_postion_vehicle()
|
|
|
|
|
|
void card_list::load_his_card_postion_staff()
|
|
|
{
|
|
|
- const char *sql = "select l.card_id, l.cur_time, l.x, l.y, l.z, l.area_info, l.state, \
|
|
|
+ const char *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\
|
|
@@ -279,22 +250,21 @@ void card_list::load_his_card_postion_staff()
|
|
|
std::string end_time = "";
|
|
|
DBRes.GetField( "end_time",end_time, Error );
|
|
|
if(!end_time.empty()) // 已升井,不再读入
|
|
|
- {
|
|
|
continue;
|
|
|
- }
|
|
|
|
|
|
std::string card_id = "";
|
|
|
DBRes.GetField( "card_id",card_id, Error );
|
|
|
- uint32_t id = tool_other::id64_to_id(card_id);
|
|
|
- int type = tool_other::id64_to_type(card_id);
|
|
|
- auto temp_ptr = card_list::instance()->get(tool_other::type_id_to_u64(type, id));
|
|
|
- if(!temp_ptr || !temp_ptr->is_person())
|
|
|
+ uint64_t c_id = tool_other::card_id_to_u64(card_id);
|
|
|
+ auto card_ptr = card_list::instance()->get(c_id);
|
|
|
+
|
|
|
+ if(!card_ptr)
|
|
|
{
|
|
|
- log_error("全局卡列表中找不到卡,卡id=%d,卡type=%d", id, type);
|
|
|
+ log_error("全局卡列表中找不到卡,%s", card_id.c_str());
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- auto card_ptr = static_cast<person*>(temp_ptr.get());
|
|
|
+ int site_id = -1;
|
|
|
+ DBRes.GetField( "site_id",site_id, Error );
|
|
|
|
|
|
double x = 0;
|
|
|
DBRes.GetField( "x",x, Error );
|
|
@@ -317,9 +287,27 @@ void card_list::load_his_card_postion_staff()
|
|
|
std::string start_time = "";
|
|
|
DBRes.GetField( "start_time",start_time, Error );
|
|
|
|
|
|
- card_ptr->x = x;
|
|
|
- card_ptr->y = y;
|
|
|
- card_ptr->z = z;
|
|
|
+ std::string cur_time = "";
|
|
|
+ DBRes.GetField( "cur_time",cur_time, Error );
|
|
|
+
|
|
|
+ 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 area_tool=card_ptr->get_area_tool();
|
|
|
+ auto sit_ptr=sit_list::instance()->get(site_id);
|
|
|
+ if(sit_ptr)
|
|
|
+ {
|
|
|
+ auto area_hover_ptr = std::make_shared<area_hover>(sit_ptr->get_area(),*card_ptr);
|
|
|
+ area_tool->m_hover_list.push_back(area_hover_ptr);
|
|
|
+ }
|
|
|
|
|
|
//解析area_info
|
|
|
const char * split = "|";
|
|
@@ -339,22 +327,14 @@ void card_list::load_his_card_postion_staff()
|
|
|
log_error("area_list 找不到区域:区域id=%d", area_id);
|
|
|
continue;
|
|
|
}
|
|
|
-
|
|
|
- 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;
|
|
|
- }
|
|
|
-
|
|
|
- card_ptr->m_time = tool_time::now_to_ms();
|
|
|
+ log_info("load_person_area:%s,%d,%lu",card_id.c_str(),area_id,enter_time);
|
|
|
|
|
|
//要放到最后
|
|
|
auto area_hover_ptr = std::make_shared<area_hover>();
|
|
|
area_hover_ptr->m_area = area;
|
|
|
area_hover_ptr->m_enter_time = enter_time;
|
|
|
- card_ptr->m_area_tool->m_hover_list.push_back(area_hover_ptr);
|
|
|
- area_hover_ptr->m_area->on_load_his(area_hover_ptr, temp_ptr);
|
|
|
+ area_tool->m_hover_list.push_back(area_hover_ptr);
|
|
|
+ area->on_load_his(area_hover_ptr, card_ptr);
|
|
|
}
|
|
|
}
|
|
|
}
|