Browse Source

修改手动升井逻辑,不在盲区的卡,不允许升井

lixioayao 6 years ago
parent
commit
046323dac3

+ 8 - 45
module_service/area_business_person_attendance.cpp

@@ -91,66 +91,29 @@ void area_business_person_attendance::handle_up_mine(sio::message::ptr const& da
         return;
     }
 
-//    rapidjson::Document doc(rapidjson::kObjectType);
-//    rapidjson::Value datas(rapidjson::kArrayType);
-//    rapidjson::Document::AllocatorType& allocator=doc.GetAllocator();
-
     std::vector<sio::message::ptr>::const_iterator it_card = card_vec.begin();
     int type = 0;
     std::string s_card_id;
     for(; it_card != card_vec.end(); ++it_card)
     {
         if(!tool_map::try_get_value(s_card_id, JSON_KEY_CALL_CARD_CARD_ID, (*it_card))
-                ||!tool_map::try_get_value(type, JSON_KEY_CALL_CARD_CARD_TYPE_ID, (*it_card)))
+            ||!tool_map::try_get_value(type, JSON_KEY_CALL_CARD_CARD_TYPE_ID, (*it_card))
+            ||!tool_other::is_person(type)
+            )
         {
             log_error("手工升井,web发来的数据 card_id 或 card_type格式不对");
             continue;
         }
-
-        uint32_t id = tool_other::id64_to_id(s_card_id);
-        auto card_ptr = card_list::instance()->get(tool_other::type_id_to_u64(type, id));
-        if(card_ptr && card_ptr->is_person())
+        log_info("handle_up_card:%s,接收到手动升井的请求",s_card_id.c_str());
+        auto card_ptr = card_list::instance()->get(tool_other::card_id_to_u64(s_card_id));
+        if(card_ptr && STATUS_LOST == card_ptr->m_biz_stat)
         {
-            std_debug("手工升井,处理,卡id=%d,卡type=%d", id, type);
-            log_info("手工升井,处理,卡id=%d,卡type=%d", id, type);
-
+            log_info("handle_up_card:%s 手工升井,处理",s_card_id.c_str());
             module_meta_date_changed::clear_card(card_ptr);
-            //            auto rea_tool = card_ptr->get_area_tool();
-            //            rea_tool->on_leave(card_ptr);
-            //card_ptr->clear();
-
-            //            auto mine_tool_ptr = card_ptr->get_mine_tool();
-            //            if(mine_tool_ptr->m_is_attendance)
-            //            {
-            //                //考勤结束
-            //                mine_tool_ptr->m_is_attendance=false;
-
-            //                //作为一条结束考勤记录保存到数据库
-            //                db_tool::save_attendance(card_ptr);
-            //            }
-
-            //检查井下是否超员--是否需要取消
-            //CMineCardManager::instance()->OnPersonUp(card_ptr);
-
-            //            auto rea_tool = card_ptr->get_area_tool();
-            //			rea_tool->on_leave(card_ptr);
-            //			card_ptr->clear();
         }
         else
-        {
-            log_error("手工升井,在全局列表中找不到卡,卡id=%d,卡type=%d", id, type);
-        }
+            log_warn("handle_up_card:%s,手动升井的卡找不到,或者该卡不在盲区",s_card_id.c_str());
     }
-
-//    //升井json发给web
-//    if(datas.Size() > 0)
-//    {
-//        doc.AddMember(JSON_ROOT_KEY_CMD,JSON_CMD_VALUE_UP_MINE, allocator);
-//        //doc.AddMember(JSON_ROOT_KEY_VERSION,INTERFACE_VERSION, allocator);
-//        doc.AddMember(JSON_ROOT_KEY_DATA, datas, allocator);
-
-//        swsClientMgr.send(JSON_CMD_VALUE_PUSH, tool_json::doc_to_json(doc));
-//    }
 }
 
 ///升井json

+ 2 - 29
module_service/module_meta_date_changed.cpp

@@ -111,36 +111,9 @@ void module_meta_date_changed::accept(sio::message::ptr const& data)
 
 ///3.清除卡相关信息,区域相关,分站相关,考勤相关,清除定时器,
 ///速度,状态 呼救 呼叫 告警相关。即保留基础信息,其他的重置。
-void module_meta_date_changed::clear_card(std::shared_ptr<card_location_base> card_ptr)
+void module_meta_date_changed::clear_card(const std::shared_ptr<card_location_base>& card_ptr)
 {
-    auto rea_tool = card_ptr->get_area_tool();
-    rea_tool->on_leave(card_ptr);
-    //card_ptr->clear();
-
-    //    //删除
-    //    //card_ptr->del_card_pos();
-    // 升井 删除所有报警信息
-    for(int i=0; i < CARD_EVENT_COUNT_MAX; i++ )
-    {
-        if (i == EVENT_TYPE::ET_CARD_LOW_POWER_SERIOUS)
-        {
-            continue;
-        }
-
-        uint64_t id = tool_other::type_id_to_u64(card_ptr->m_type, card_ptr->m_id);
-        event_tool::instance()->handle_event(OT_CARD, static_cast<EVENT_TYPE>(i), id, 0, 0, false);
-
-        //        auto ev_ptr = event_list::instance()->get_event_card(
-        //                card_ptr->m_id, card_ptr->m_type, static_cast<EVENT_TYPE>(i));
-        //        if(ev_ptr && !ev_ptr->is_end()) //
-        //        {
-        //            event_list::copy_event(card_ptr, ev_ptr);
-
-        //            ev_ptr->m_status = ES_END;
-
-        //            event_list::save_event(ev_ptr);
-        //        }
-    }
+    card_ptr->get_area_tool()->on_leave(card_ptr);
 }
 /*
  * 修改车及卡的数据

+ 1 - 1
module_service/module_meta_date_changed.h

@@ -40,7 +40,7 @@ public:
 
     ///3.清除卡相关信息,区域相关,分站相关,考勤相关,清除定时器,
     ///速度,状态 呼救 呼叫 告警相关。即保留基础信息,其他的重置。
-    static void clear_card(std::shared_ptr<card_location_base> card_ptr);
+    static void clear_card(const std::shared_ptr<card_location_base> &card_ptr);
 
 private:
     /*