Browse Source

Merge branch 'master' of http://local.beijingyongan.com:3000/linux-dev/ya-serv

chensongchao 6 years ago
parent
commit
6f68b42909

+ 2 - 2
Makefile.am

@@ -22,9 +22,9 @@ SRC_MAIN= ant.cpp area.cpp base64.cpp bindmorecard.cpp mine_business.cpp card_ar
 
 AM_SOURCES=$(SRC_MONKEYCAR) $(SRC_MODULE_SERVICE) $(SRC_MAIN) $(SRC_MAIN_EVENT)
 
-AM_CPPFLAGS=-Wall -pthread -m64 -g -O0 -std=c++11  -I${prefix}/include -I/usr/local/mysql/include -Iwebsocket -Iwebsocket/sio -I./db  -Imodule_service
+AM_CPPFLAGS=-Wall -pthread -m64 -g  -std=c++11  -I${prefix}/include -I/usr/local/mysql/include -Iwebsocket -Iwebsocket/sio -I./db  -Imodule_service
 
-AM_LDFLAGS=-Wall -pthread -m64 -g -O0 -std=c++11  -L${prefix}/lib  -L/usr/local/mysql/lib
+AM_LDFLAGS=-Wall -pthread -m64 -g  -std=c++11  -L${prefix}/lib  -L/usr/local/mysql/lib
 
 yals_SOURCES=${AM_SOURCES} main.cpp
 yals_CPPFLAGS=${AM_CPPFLAGS} 

+ 3 - 3
area.cpp

@@ -454,7 +454,7 @@ area_hover::area_hover(const std::shared_ptr<area>&area,const point&pt)
     m_enter_point=m_last_point=pt;
 }
 
-void area_tool::on_point(const std::shared_ptr<site>&s,const std::shared_ptr<card_location_base>& c,const point&pt)
+void area_tool::on_point(const std::shared_ptr<card_location_base>& c,const point&pt)
 {
 	if (nullptr == s || nullptr == c)
 	{
@@ -463,7 +463,7 @@ void area_tool::on_point(const std::shared_ptr<site>&s,const std::shared_ptr<car
 	log_info("on_point...cardid:%d,type:%d",c->m_id,c->m_type);
 	
 	int special_area=-1;
-	std::vector<std::shared_ptr<area>> areas=area_list::instance()->get_area(s,c, pt,special_area);
+	std::vector<std::shared_ptr<area>> areas=area_list::instance()->get_area(m_site,c, pt,special_area);
 	if(special_area != -1)
 	{
 		areas.clear();
@@ -529,7 +529,7 @@ void area_tool::on_point(const std::shared_ptr<site>&s,const std::shared_ptr<car
     }
     char sql[1024] = {0};
     snprintf(sql, 1024, "REPLACE INTO rt_location (card_id, site_id, x, y, z, state, area_info) VALUES (%s, %d, %lf, %lf, %lf, 0, '%s');",
-        tool_other::type_id_to_str(c->m_type, c->m_id).c_str(), s->id(), pt.x, pt.y, pt.z, strAreaInfo.c_str());
+        tool_other::type_id_to_str(c->m_type, c->m_id).c_str(), m_site->id(), pt.x, pt.y, pt.z, strAreaInfo.c_str());
     db_tool::PushAsync(sql);
 }
 

+ 7 - 1
area.h

@@ -185,7 +185,13 @@ struct area_tool
 	std::map<int,std::tuple<int,int,int,double,uint64_t>> m_area_info;
 	int m_mapid=-1;
 	double m_scale=2.0;
-	void on_point(const std::shared_ptr<site>&s,const std::shared_ptr<card_location_base>& c,const point&pt);
+    std::shared_ptr<site> m_site=nullptr;
+    void set(const std::shared_ptr<site>& s)
+    {
+        if(m_site != s)
+          m_site=s;
+    }
+	void on_point(const std::shared_ptr<card_location_base>& c,const point&pt);
     void on_leave(const std::shared_ptr<card_location_base>& c);
 
 	void set_area_info(int mapid,double scale,int areaid,const point &pt,uint64_t t,int type);

+ 2 - 0
card.cpp

@@ -196,6 +196,7 @@ void card_list::load_his_card_postion_vehicle()
             {
                 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_tool->set(sit_ptr);
             }
 
             //解析area_info
@@ -307,6 +308,7 @@ void card_list::load_his_card_postion_staff()
             {
                 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_tool->set(sit_ptr);
             }
 
             //解析area_info

+ 1 - 2
card_base.h

@@ -81,9 +81,7 @@ struct card_location_base:card,std::enable_shared_from_this<card_location_base>
 
 	virtual void do_business(const std::shared_ptr<site>&site,const point &pt,double acc)=0;
 	virtual void on_timer()=0;
-	virtual void site_hover(int sid)=0;
     virtual std::shared_ptr<mine_tool> get_mine_tool()=0;
-    virtual std::shared_ptr<site_area_hover> get_site_area()=0;
     virtual void clear();
 	virtual void reset(std::shared_ptr<monkey_person> mp){}
     virtual int get_vehicle_type_id(){return  0;}
@@ -93,6 +91,7 @@ struct card_location_base:card,std::enable_shared_from_this<card_location_base>
     virtual int get_vehicle_category_id(){return -1;}
     virtual int get_workline(){return -1;}
 	virtual void get_card(){};
+	virtual void site_hover(int sid){}
 
     void on_message(zloop<task*> * loop,const message_locinfo&loc,bool is_history);
     void on_location(const std::vector<point>&vp,const std::vector<loc_message> &lm );

+ 3 - 15
card_car.cpp

@@ -24,21 +24,10 @@ car::car(std::string type,uint32_t cardid,uint16_t needdisplay,int16_t t,int32_t
 
 car::~car(){}
 
-void car::site_hover(int sid)
-{
-	if(m_time<=0)return;
-	m_site_area->on_point(m_id,sid,0, m_type);
-}
-
 std::shared_ptr<mine_tool> car::get_mine_tool()
 {
 	return m_mine_tool;
 }
-
-std::shared_ptr<site_area_hover> car::get_site_area()
-{
-	return m_site_area;
-}
 void car::set_area_info(int mapid,double scale,int areaid,uint64_t t,int type)
 {
 	m_area_tool->set_area_info(mapid,scale,areaid,*this,t,type);
@@ -47,9 +36,9 @@ void car::set_area_info(int mapid,double scale,int areaid,uint64_t t,int type)
 void car::do_business(const std::shared_ptr<site>&site,const point &pt,double acc)
 {
 	m_acc=acc;
-	m_area_tool->on_point(site,shared_from_this(),pt);
+    m_area_tool->set(site);
+	m_area_tool->on_point(shared_from_this(),pt);
 	m_timeval=m_time;
-	m_site_area->on_point(m_id,0,this, m_type);
 	m_mine_tool->on_point(m_id, m_type, m_vehicle_category_id);
 	handle_three_rates(pt);
 	uint64_t id=tool_other::type_id_to_u64(m_type,m_id);
@@ -122,8 +111,7 @@ void car::make_package()
 	uint64_t t=_now>m_timeval?_now-m_timeval:m_timeval-_now;
 	if(t>10*1000)
 	{
-		auto site = m_site_area->get_site();
-		m_area_tool->on_point(site,shared_from_this(),pt);
+		m_area_tool->on_point(shared_from_this(),pt);
 		m_biz_stat=get_stat();
 	}
 

+ 0 - 2
card_car.h

@@ -26,9 +26,7 @@ public:
         int32_t categoryid, int type_id,int32_t level_id,uint32_t cid);
 	~car();
 
-	virtual void site_hover(int sid);
     virtual std::shared_ptr<mine_tool> get_mine_tool();
-    virtual std::shared_ptr<site_area_hover> get_site_area();
 	virtual void do_business(const std::shared_ptr<site>&site,const point &pt,double acc);
 	virtual int get_area();
     int get_vehicle_type_id();

+ 3 - 13
card_person.cpp

@@ -33,7 +33,6 @@ person::~person()
 }
 void person::clear()
 {
-	//m_site_area.reset(new site_area_hover);
 	m_area_tool.reset(new area_tool);
 	m_mine_tool.reset(new mine_tool);
 
@@ -46,9 +45,6 @@ void person::set_area_info(int mapid,double scale,int areaid,uint64_t t,int type
 }
 void person::site_hover(int sid)
 {
-	if(m_time<=0)
-		return;
-	m_site_area->on_point(m_id,sid,nullptr, m_type);
 	IKSDK_DB(sid);
 }
 //虹膜识别入库功能	
@@ -82,16 +78,11 @@ std::shared_ptr<mine_tool> person::get_mine_tool()
 	return m_mine_tool;
 }
 
-std::shared_ptr<site_area_hover> person::get_site_area()
-{
-	return m_site_area;
-}
-
 void person::do_business(const std::shared_ptr<site>&site,const point &pt,double acc)
 {
-	m_area_tool->on_point(site,shared_from_this(),pt);
+    m_area_tool->set(site);
+	m_area_tool->on_point(shared_from_this(),pt);
 	m_timeval=m_time;
-	m_site_area->on_point(m_id,0,this, m_type);
 	handle_three_rates(pt);
 }
 
@@ -151,8 +142,7 @@ void person::on_timer()
 	uint64_t t=_now>m_timeval?_now-m_timeval:m_timeval-_now;
 	if(t>10*1000)
 	{
-		auto site = m_site_area->get_site();
-		m_area_tool->on_point(site,shared_from_this(),pt);
+		m_area_tool->on_point(shared_from_this(),pt);
 		m_biz_stat=get_stat();
 	}
 }

+ 0 - 1
card_person.h

@@ -24,7 +24,6 @@ struct person:card_location_base, card_area
 
     virtual void site_hover(int sid);
     virtual std::shared_ptr<mine_tool> get_mine_tool();
-    virtual std::shared_ptr<site_area_hover> get_site_area();
     virtual void do_business(const std::shared_ptr<site>&site,const point &pt,double acc);
 	virtual void set_area_info(int mapid,double scale,int areaid,uint64_t t,int type);
     virtual std::shared_ptr<area_tool> get_area_tool()

+ 2 - 1
module_service/area_business_count_checker.cpp

@@ -1,8 +1,9 @@
+#include "event.h"
 #include "area.h"
 #include "card_base.h"
 #include "common_tool.h"
 #include "log.h"
-#include "event.h"
+
 #include "area_business_count_checker.h"
 /*
 	判断当前区域a中的人数是否超过设定人数,超过后告警

+ 0 - 1
module_service/area_business_speed_checker.cpp

@@ -45,7 +45,6 @@ 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())

+ 6 - 6
module_service/module_call.cpp

@@ -556,8 +556,8 @@ void module_call::get_user_all_call_cards(call_user_ptr& user_ptr,
         auto g_it=cardlist.begin();
         for(;g_it!=cardlist.end();++g_it)//如果是全员呼叫,增加所有卡
         {
-            auto site_ptr = g_it->second->get_site_area();
-            if(!site_ptr || site_ptr->is_invalid())
+            auto site_ptr = g_it->second->get_area_tool()->m_site;
+            if(!site_ptr)
             {
                 continue;
             }
@@ -567,7 +567,7 @@ void module_call::get_user_all_call_cards(call_user_ptr& user_ptr,
             card_ptr->cardid = g_it->second->m_id;
             card_ptr->cardtype = g_it->second->m_type;
 
-            card_ptr->stationid=site_ptr->site_id();
+            card_ptr->stationid=site_ptr->id();
 
             card_ptr->call_state=status;
             if(CALL_SUCCESSED == g_it->second->get_mine_tool()->m_status_call)
@@ -610,8 +610,8 @@ void module_call::get_user_all_call_cards(call_user_ptr& user_ptr,
             continue;
         }
 
-        auto site_ptr = g_card->second->get_site_area();
-        if(!site_ptr || site_ptr->is_invalid())
+        auto site_ptr = g_card->second->get_area_tool()->m_site;
+        if(!site_ptr)
         {
             log_error("定员呼叫发送线程:全局卡列表中这张卡已经上井或无效,卡id=%d,卡类型=%d",
                       iter_card->second->cardid, iter_card->second->cardtype);
@@ -623,7 +623,7 @@ void module_call::get_user_all_call_cards(call_user_ptr& user_ptr,
         }
 
         //更新卡的分站id
-        iter_card->second->stationid = site_ptr->site_id();
+        iter_card->second->stationid = site_ptr->id();
 
         if(CALL_SUCCESSED == g_card->second->get_mine_tool()->m_status_call)
         {

+ 0 - 55
site_area.cpp

@@ -1,55 +0,0 @@
-
-#include "site_area.h"
-#include "card.h"
-#include "ant.h"
-
-//每张卡包含这样一个对象,保存最后一个分站区域
-//1、记录卡进出分站的时间,地点
-//2、用于考勤
-std::shared_ptr<site> site_area_hover::get_site()
-{
-	return sit_list::instance()->get(m_site_id);
-}
-void site_area_hover::on_point(uint32_t card_id,int site_id,const point*pt,int32_t type)
-{
-	if(pt!=nullptr)
-	{
-		if(m_enter_point.empty())
-			m_enter_point=*pt;
-
-		m_last_point=*pt;
-	}
-	else
-	{
-		if(m_site_id==site_id) 
-		{
-			m_last_time=time(0);
-			return;
-		}
-        int last_id = m_site_id;
-        m_site_id = site_id;
-
-        //离开现有分站处理,记录现有分站的进出时间和地点
-        leave_site(card_id,last_id,type);
-
-        //进入分站覆盖区域处理,考勤
-        enter_site(card_id,site_id,type);
-
-        //m_site_id=site_id;
-        m_enter_time=m_last_time=time(nullptr);
-
-        m_enter_point.set(0,0);
-        m_last_point.set(0,0);
-	}
-}
-
-void site_area_hover::enter_site(uint32_t card_id,int enter_site,int32_t type)
-{
-
-}
-
-void site_area_hover::leave_site(uint32_t card_id,int enter_site,int32_t type)
-{
-
-}
-

+ 0 - 47
site_area.h

@@ -1,47 +0,0 @@
-#ifndef __SITE_AREA_HOVER_HPP__
-#define __SITE_AREA_HOVER_HPP__
-#include <point.h>
-#include <memory>
-#include <chrono>
-#include "common.h"
-
-//每张卡包含这样一个对象,保存最后一个分站区域;只有tof一维有这个需求
-//1、记录卡进出分站的时间,地点
-//2、用于考勤
-class site;
-struct site_area_hover
-{
-    site_area_hover()
-        :m_site_id(-1)
-        ,m_enter_time(0)
-        ,m_last_time(0)
-    {
-    }
-	//调用时机:
-	//1、tof一维收到第一个数据点时,以pt=0调用
-	//2、数据点解析完毕之后调用
-    void on_point(uint32_t card_id,int site_id,const point*pt,int32_t type);
-private:
-    void enter_site(uint32_t card_id,int enter_site,int32_t type);
-    void leave_site(uint32_t card_id,int enter_site,int32_t type);
-
-private:
-    int    m_site_id;
-	time_t m_enter_time,m_last_time;
-	point  m_enter_point,m_last_point;
-
-public:
-    int site_id() const
-    {
-        return m_site_id;
-    }
-
-    bool is_invalid() const 
-    {
-        return -1==m_site_id;
-    }
-	std::shared_ptr<site> get_site();
-
-};
-#endif
-