|
@@ -161,13 +161,10 @@ void card_list::load_his_card_postion_from_db()
|
|
|
|
|
|
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.map_id, la.area_id, l.state, \
|
|
|
- case when l.cur_time >= date_sub(now(), interval 2 minute) then l.speed else 0 end as speed, \
|
|
|
- l.mileage, la.enter_time, att.start_time, \
|
|
|
- att.end_time, \
|
|
|
- l.landmark_id, l.direction_mapper_id, l.landmark_dist \
|
|
|
- from rt_location l, rt_location_area la, rt_att_vehicle att, dat_card c, dat_vehicle_extend v \
|
|
|
- where l.card_id = c.card_id and l.card_id = la.card_id and l.card_id = att.card_id and l.card_id=v.card_id \
|
|
|
+ const char *sql = "select l.card_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 \
|
|
|
and c.state_id=0;";
|
|
|
std::string Error;
|
|
|
YADB::CDBResultSet DBRes;
|
|
@@ -181,12 +178,10 @@ 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())
|
|
|
{
|
|
@@ -205,11 +200,8 @@ void card_list::load_his_card_postion_vehicle()
|
|
|
double z = 0;
|
|
|
DBRes.GetField( "z",z, Error );
|
|
|
|
|
|
- int map_id = 0;
|
|
|
- DBRes.GetField( "map_id",map_id, Error );
|
|
|
-
|
|
|
- int area_id = 0;
|
|
|
- DBRes.GetField( "area_id",area_id, Error );
|
|
|
+ std::string strAreaInfo = "";
|
|
|
+ DBRes.GetField( "area_info",strAreaInfo, Error );
|
|
|
|
|
|
int state = 0;
|
|
|
DBRes.GetField( "state",state, Error );
|
|
@@ -217,77 +209,61 @@ void card_list::load_his_card_postion_vehicle()
|
|
|
double speed = 0;
|
|
|
DBRes.GetField( "speed",speed, Error );
|
|
|
|
|
|
- std::string enter_time = "";
|
|
|
- DBRes.GetField( "enter_time",enter_time, Error );
|
|
|
-
|
|
|
std::string start_time = "";
|
|
|
DBRes.GetField( "start_time",start_time, Error );
|
|
|
|
|
|
std::string end_time = "";
|
|
|
DBRes.GetField( "end_time",end_time, Error );
|
|
|
|
|
|
- int landmark_id = 0;
|
|
|
- DBRes.GetField( "landmark_id",landmark_id, Error );
|
|
|
-
|
|
|
- int direction_mapper_id = 0;
|
|
|
- DBRes.GetField( "direction_mapper_id",direction_mapper_id, Error );
|
|
|
-
|
|
|
- double landmark_dist = 0;
|
|
|
- DBRes.GetField( "landmark_dist",landmark_dist, Error );
|
|
|
-
|
|
|
card_ptr->x = x;
|
|
|
card_ptr->y = y;
|
|
|
card_ptr->z = z;
|
|
|
|
|
|
- auto area = area_list::instance()->get(area_id);
|
|
|
- if(area == nullptr)
|
|
|
+ //解析area_info
|
|
|
+ const char * split = "|";
|
|
|
+ char *p = strtok(const_cast<char *>(strAreaInfo.c_str()), split);
|
|
|
+ while (p != NULL)
|
|
|
{
|
|
|
- log_error("load_vehicle...area_list 找不到区域:区域id=%d", area_id);
|
|
|
- continue;
|
|
|
+ int area_id = 0;
|
|
|
+ uint64_t enter_time = 0;
|
|
|
+ sscanf(p, "%d,%lu", &area_id, &enter_time);
|
|
|
+ p = strtok(NULL, split);
|
|
|
+ if (area_id < 0)
|
|
|
+ continue;
|
|
|
+
|
|
|
+ auto area = area_list::instance()->get(area_id);
|
|
|
+ if(area == nullptr)
|
|
|
+ {
|
|
|
+ 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();
|
|
|
+
|
|
|
+ //要放到最后
|
|
|
+ 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->m_vehicle_count++;
|
|
|
-
|
|
|
- //point pt = *card_ptr;
|
|
|
- //m_area_hover = std::make_shared<area_hover>( area, pt,speed);
|
|
|
- //auto area_hover_ptr = card_ptr->get_area_hover();
|
|
|
-
|
|
|
- //int map_id = 0;
|
|
|
- //int state = 0;
|
|
|
- card_ptr->m_speed = speed;
|
|
|
-
|
|
|
- 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;
|
|
|
- }
|
|
|
-
|
|
|
- //area_hover_ptr->landmark_id = landmark_id;
|
|
|
- //area_hover_ptr->landmark_dir = direction_mapper_id;
|
|
|
- //area_hover_ptr->landmark_dis = landmark_dist;
|
|
|
-
|
|
|
- card_ptr->m_time = tool_time::now_to_ms();
|
|
|
-
|
|
|
- //要放到最后
|
|
|
- auto e_t = tool_time::to_time_ex(enter_time);
|
|
|
- auto area_hover_ptr = std::make_shared<area_hover>();
|
|
|
- area_hover_ptr->m_area = area;
|
|
|
- area_hover_ptr->m_enter_time = tool_time::to_ms(e_t);
|
|
|
- card_ptr->m_area_tool->m_hover_list.push_back(area_hover_ptr);
|
|
|
- area_hover_ptr->m_area->on_enter(area_hover_ptr, temp_ptr);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
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.map_id, la.area_id, l.state, \
|
|
|
- case when l.cur_time >= date_sub(now(), interval 2 minute) then l.speed else 0 end as speed, \
|
|
|
- l.mileage, la.enter_time, att.start_time, \
|
|
|
- att.end_time, \
|
|
|
- l.landmark_id, l.direction_mapper_id, l.landmark_dist \
|
|
|
- from rt_location l, rt_location_area la, rt_att_staff att, dat_card c, dat_staff_extend s \
|
|
|
- where l.card_id = c.card_id and l.card_id = la.card_id and l.card_id = att.card_id and l.card_id=s.card_id\
|
|
|
+ const char *sql = "select l.card_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;";
|
|
|
std::string Error;
|
|
|
YADB::CDBResultSet DBRes;
|
|
@@ -310,10 +286,8 @@ void card_list::load_his_card_postion_staff()
|
|
|
|
|
|
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())
|
|
|
{
|
|
@@ -332,11 +306,8 @@ void card_list::load_his_card_postion_staff()
|
|
|
double z = 0;
|
|
|
DBRes.GetField( "z",z, Error );
|
|
|
|
|
|
- int map_id = 0;
|
|
|
- DBRes.GetField( "map_id",map_id, Error );
|
|
|
-
|
|
|
- int area_id = 0;
|
|
|
- DBRes.GetField( "area_id",area_id, Error );
|
|
|
+ std::string strAreaInfo = "";
|
|
|
+ DBRes.GetField( "area_info",strAreaInfo, Error );
|
|
|
|
|
|
int state = 0;
|
|
|
DBRes.GetField( "state",state, Error );
|
|
@@ -344,62 +315,48 @@ void card_list::load_his_card_postion_staff()
|
|
|
double speed = 0;
|
|
|
DBRes.GetField( "speed",speed, Error );
|
|
|
|
|
|
- std::string enter_time = "";
|
|
|
- DBRes.GetField( "enter_time",enter_time, Error );
|
|
|
-
|
|
|
std::string start_time = "";
|
|
|
DBRes.GetField( "start_time",start_time, Error );
|
|
|
|
|
|
- int landmark_id = 0;
|
|
|
- DBRes.GetField( "landmark_id",landmark_id, Error );
|
|
|
-
|
|
|
- int direction_mapper_id = 0;
|
|
|
- DBRes.GetField( "direction_mapper_id",direction_mapper_id, Error );
|
|
|
-
|
|
|
- double landmark_dist = 0;
|
|
|
- DBRes.GetField( "landmark_dist",landmark_dist, Error );
|
|
|
-
|
|
|
card_ptr->x = x;
|
|
|
card_ptr->y = y;
|
|
|
card_ptr->z = z;
|
|
|
|
|
|
- auto area = area_list::instance()->get(area_id);
|
|
|
- if(area == nullptr)
|
|
|
+ //解析area_info
|
|
|
+ const char * split = "|";
|
|
|
+ char *p = strtok(const_cast<char *>(strAreaInfo.c_str()), split);
|
|
|
+ while (p != NULL)
|
|
|
{
|
|
|
- log_error("area_list 找不到区域:区域id=%d", area_id);
|
|
|
- continue;
|
|
|
+ int area_id = 0;
|
|
|
+ uint64_t enter_time = 0;
|
|
|
+ sscanf(p, "%d,%lu", &area_id, &enter_time);
|
|
|
+ p = strtok(NULL, split);
|
|
|
+ if (area_id < 0)
|
|
|
+ continue;
|
|
|
+
|
|
|
+ auto area = area_list::instance()->get(area_id);
|
|
|
+ if(area == nullptr)
|
|
|
+ {
|
|
|
+ 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();
|
|
|
+
|
|
|
+ //要放到最后
|
|
|
+ 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->m_person_count++;
|
|
|
-
|
|
|
- //point pt = *card_ptr;
|
|
|
-// m_area_hover = std::make_shared<area_hover>(area,pt,speed);
|
|
|
-
|
|
|
- log_info("load_staff...%d,areaid:%d,mapid:%d",id,area->id(),area->mapid());
|
|
|
-
|
|
|
- //int map_id = 0;
|
|
|
- //int state = 0;
|
|
|
- card_ptr->m_speed = speed;
|
|
|
-
|
|
|
- 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;
|
|
|
- }
|
|
|
-
|
|
|
- //area_hover_ptr->landmark_id = landmark_id;
|
|
|
- //area_hover_ptr->landmark_dir = direction_mapper_id;
|
|
|
- //area_hover_ptr->landmark_dis = landmark_dist;
|
|
|
-
|
|
|
- card_ptr->m_time = tool_time::now_to_ms();
|
|
|
-
|
|
|
- //要放到最后
|
|
|
- auto e_t = tool_time::to_time_ex(enter_time);
|
|
|
- auto area_hover_ptr = std::make_shared<area_hover>();
|
|
|
- area_hover_ptr->m_area = area;
|
|
|
- area_hover_ptr->m_enter_time = tool_time::to_ms(e_t);
|
|
|
- card_ptr->m_area_tool->m_hover_list.push_back(area_hover_ptr);
|
|
|
- area_hover_ptr->m_area->on_enter(area_hover_ptr, temp_ptr);
|
|
|
}
|
|
|
}
|
|
|
}
|