Browse Source

修改人卡,ptr转移赋值

daiyueteng 6 years ago
parent
commit
00e125bb8e

+ 14 - 7
card.cpp

@@ -43,13 +43,20 @@ void card_list::init_staffer(int64_t id64)
 		auto card_ptr = card_list::instance()->get(id64);
 		if(card_ptr)
 		{
-			person* tmp_ptr= static_cast<person*>(card_ptr.get());
-			tmp_ptr->m_display = static_cast<uint16_t>(db_person->m_display);
-			tmp_ptr->m_deptid = db_person->m_deptid;
-			//group_id
-			//occ_id
-			tmp_ptr->m_level_id = db_person->m_level_id;
-			//worktype_id
+            person* tmp_ptr= static_cast<person*>(card_ptr.get());
+            person* db_person_ptr= static_cast<person*>(db_person.get());
+
+            tmp_ptr->m_cid = db_person_ptr->m_cid;
+            tmp_ptr->m_type = db_person_ptr->m_type;
+            tmp_ptr->m_deptid = db_person_ptr->m_deptid;
+            //group_id
+            //occ_id
+            tmp_ptr->m_level_id = db_person_ptr->m_level_id;
+            tmp_ptr->m_display = db_person_ptr->m_display;
+            tmp_ptr->m_workLine = db_person_ptr->m_workLine;
+            tmp_ptr->m_stafferName = db_person_ptr->m_stafferName;
+            tmp_ptr->m_deptName = db_person_ptr->m_deptName;
+            tmp_ptr->m_worktype_id = db_person_ptr->m_worktype_id;
 		}
 		else
 		{

+ 1 - 0
module_service/area_business_card_enter_or_leave.cpp

@@ -24,6 +24,7 @@ void area_business_card_enter_or_leave::on_enter(const std::shared_ptr<area_hove
 {
     auto ptr_temp = std::make_shared<enter_or_leave_data>();
     ptr = ptr_temp;
+    area_hover_ptr->m_data[area_business_type()] = ptr_temp;
     save_his_area_location_enter(area_hover_ptr, card_ptr, ptr_temp->m_enter_time_ms);
 }
 

+ 13 - 0
module_service/area_business_geofault.cpp

@@ -41,6 +41,7 @@ void area_business_geofault::on_enter(const std::shared_ptr<area_hover>&area_hov
 
     auto ptr_temp = std::make_shared<geofault_data>();
     ptr = ptr_temp;
+    area_hover_ptr->m_data[area_business_type()] = ptr_temp;
 
     double dist=0;
     if(_is_near(area_hover_ptr->m_area, card_ptr->x, card_ptr->y, dist))
@@ -64,6 +65,12 @@ void area_business_geofault::on_hover(const std::shared_ptr<area_hover>&area_hov
         return;
     }
 
+    if(nullptr == ptr)
+    {
+        log_error("area_business_geofault::on_hover:nullptr == ptr");
+        return;
+    }
+
     auto ptr_temp = static_cast<geofault_data*>(ptr.get());
 
     double dist=0;
@@ -116,6 +123,12 @@ void area_business_geofault::on_leave(const std::shared_ptr<area_hover>&area_hov
         return;
     }
 
+    if(nullptr == ptr)
+    {
+        log_error("area_business_geofault::on_leave:nullptr == ptr");
+        return;
+    }
+
     uint64_t id = tool_other::type_id_to_u64(card_ptr->m_type, card_ptr->m_id);
     event_tool::instance()->handle_event(OT_CARD, ET_VEHICLE_NEAR_GEOFAULT, id, CYaSetting::m_sys_setting.geofault_warn_dis, 1000, false);
 }

+ 14 - 1
module_service/area_business_motionless_persion.cpp

@@ -37,7 +37,7 @@ void area_business_motionless_persion::init(config_file& config)
     //        _acc_seconds_limit = std::stoi(config.get("service.motionless_acc_seconds_limit","120"));
 }
 
-void area_business_motionless_persion::on_enter(const std::shared_ptr<area_hover>&a,
+void area_business_motionless_persion::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,6 +47,7 @@ void area_business_motionless_persion::on_enter(const std::shared_ptr<area_hover
 
     auto ptr_temp = std::make_shared<motionless_data>();
     ptr = ptr_temp;
+    area_hover_ptr->m_data[area_business_type()] = ptr_temp;
 
     auto ev_ptr_temp = event_list::instance()->get_event_card(card_ptr->m_id, card_ptr->m_type, ET_CARD_MOTIONLESS);
     ptr_temp->m_is_warning = (nullptr != ev_ptr_temp && !ev_ptr_temp->is_end());
@@ -60,6 +61,12 @@ void area_business_motionless_persion::on_hover(const std::shared_ptr<area_hover
         return;
     }
 
+    if(nullptr == ptr)
+    {
+        log_error("area_business_motionless_persion::on_hover:nullptr == ptr");
+        return;
+    }
+
     auto ptr_temp = static_cast<motionless_data*>(ptr.get());
 
     if(0 == static_cast<int>(card_ptr->m_acc))
@@ -100,6 +107,12 @@ void area_business_motionless_persion::on_leave(const std::shared_ptr<area_hover
         return;
     }
 
+    if(nullptr == ptr)
+    {
+        log_error("area_business_motionless_persion::on_leave:nullptr == ptr");
+        return;
+    }
+
     auto ptr_temp = static_cast<motionless_data*>(ptr.get());
     if(ptr_temp->m_is_warning)//如果正在告警,则发送取消告警的信息
     {

+ 13 - 0
module_service/area_business_speed_checker.cpp

@@ -40,6 +40,7 @@ void area_business_speed_checker::on_enter(const std::shared_ptr<area_hover>&are
 
     auto ptr_temp = std::make_shared<over_speed_data>();
     ptr = ptr_temp;
+    area_hover_ptr->m_data[area_business_type()] = ptr_temp;
 
     double limit = area_hover_ptr->m_area->m_over_speed_vehicle;
     if(area_hover_ptr->m_area->is_mine())
@@ -79,6 +80,12 @@ void area_business_speed_checker::on_hover(const std::shared_ptr<area_hover>&are
         return;
     }
 
+    if(nullptr == ptr)
+    {
+        log_error("area_business_speed_checker::on_hover:nullptr == ptr");
+        return;
+    }
+
     auto ptr_temp = static_cast<over_speed_data*>(ptr.get());
     double limit = ptr_temp ->m_limit_speed;
     if(limit < 0.01)
@@ -140,6 +147,12 @@ void area_business_speed_checker::on_leave(const std::shared_ptr<area_hover>&are
         return;
     }
 
+    if(nullptr == ptr)
+    {
+        log_error("area_business_speed_checker::on_leave:nullptr == ptr");
+        return;
+    }
+
     auto ptr_temp = static_cast<over_speed_data*>(ptr.get());
     double limit = ptr_temp ->m_limit_speed;