Browse Source

1.增加分站天线异常不走业务2.升井清除人卡相关数据3.增加配置三率服务开关

lixioayao 5 years ago
parent
commit
f67eef0bb1
5 changed files with 23 additions and 2 deletions
  1. 8 0
      ant.h
  2. 1 0
      cardMgr.cpp
  3. 2 1
      card_base.cpp
  4. 7 0
      card_person.cpp
  5. 5 1
      net-service.cpp

+ 8 - 0
ant.h

@@ -207,6 +207,14 @@ struct site:point,std::enable_shared_from_this<site>
     {
         return READER_TYPE_ID_UP == m_reader_type_id;
     }
+    bool is_abnormal_site()
+    {
+        bool f=false;
+        double d=ant_dist();
+        if(!is_up_site() &&(d<1e-5 && d>-1e-5) )
+            f=true;
+        return f;
+    }
     void create_area();
     const std::shared_ptr<area> &get_area()const{return m_area;}
     point get_dstp(const point pt) const

+ 1 - 0
cardMgr.cpp

@@ -39,6 +39,7 @@ void cardMgr::clear(uint64_t cardid)
 	auto v = m_cgraph.getcard(cardid);
 	for(const auto & cid:v)
 	{
+        log_info("LemonHash_up_mine:%lu&%lu",cardid,cid);
 		uint64_t id = MyHash{}(cardid,cid);
 		erase(id);
 		m_cgraph.remove_edge(cardid,cid);

+ 2 - 1
card_base.cpp

@@ -20,7 +20,7 @@
 #include "area.h"
 #include "cardMgr.h"
 extern config_file config;
-
+const static int three_rates_flag=config.get("service.three_rates_flag",0);
 card_location_base::card_location_base(const std::string&type,uint32_t id,uint16_t dis,int16_t t,int32_t deptid,int32_t level_id,uint32_t cid)
 	:card(id,dis,t,deptid,level_id,cid)
 {
@@ -216,6 +216,7 @@ void  card_location_base::clear()
 }
 void card_location_base::put_three_rates(card_pos & cp)
 {
+    if(!three_rates_flag)return;
 	cp.rec_time=m_time;cp.type=m_type;cp.id=m_id;
 	cp.identifier_id=m_cid;cp.running_stat=m_stat;cp.final_v=m_speed;
 	cp.dpt_id = m_deptid;

+ 7 - 0
card_person.cpp

@@ -16,6 +16,7 @@
 #include"db/db_tool.h"
 #include "forbid_staff_down_mine.h"
 #include <config_file.h>
+#include "cardMgr.h"
 
 extern config_file config;
 int person::m_limit_detained_time=config.get("service.detained_time",10);
@@ -40,7 +41,9 @@ void person::clear()
 	//m_mine_tool.reset(new mine_tool);
     m_mine_tool->clear();
     m_area_tool->clear();
+    //清除部分信息
 	card_location_base::clear();
+    //清除告警信息
     uint64_t id = tool_other::type_id_to_u64(m_type,m_id);
     for(std::uint8_t i=0;i<CARD_EVENT_COUNT_MAX;i++)
     {
@@ -51,6 +54,10 @@ void person::clear()
             m_event[i]=0;
         }
     }
+    //清除一人多卡功能内存中的人卡相关数据,
+	Msg m;
+	m.cmd=CMD_CLEAR;m.cardid=m_type<<32|m_id;
+	cardMgr::instance()->tryPut(m);
 }
 
 void person::set_area_info(int mapid,double scale,int areaid,uint64_t t,int type)

+ 5 - 1
net-service.cpp

@@ -72,7 +72,11 @@ void net_service::on_message(const std::shared_ptr<client> &clt,const char*data,
 						logn_error(1,"在全局分站列表中找不到分站:%d", site_id);
 						break;
 					}
-
+                    if(site_ptr->is_abnormal_site())
+                    {
+						logn_error(1,"分站[%d]天线异常", site_id);
+                        break;
+                    }
 					if(!site_ptr->check_timestamp(data+10))
 					{
 						logn_error(1,"分站数据时间戳错误:%s",clt->name().c_str());