lixioayao 6 年之前
父節點
當前提交
4d72994cbf
共有 11 個文件被更改,包括 74 次插入71 次删除
  1. 1 1
      Makefile
  2. 1 1
      Makefile.am
  3. 1 1
      Makefile.in
  4. 9 6
      area.cpp
  5. 0 4
      area.h
  6. 24 24
      area_business.cpp
  7. 3 3
      area_business.h
  8. 2 2
      card_base.h
  9. 26 0
      event.cpp
  10. 6 28
      event.h
  11. 1 1
      ya_event.h

+ 1 - 1
Makefile

@@ -247,7 +247,7 @@ SRC_MAIN = ant.cpp area.cpp base64.cpp bindmorecard.cpp mine_business.cpp card_a
     	  card.cpp card_message_handle.cpp cardMgr.cpp card_path.cpp card_person.cpp crc.cpp geo_hash.cpp \
 		  landmark.cpp line_fit.cpp loc_point.cpp loc_tool.cpp message.cpp message_file.cpp mine.cpp \
 		  net-service.cpp point.cpp select_tool.cpp site_area.cpp special_area.cpp tdoa_sync.cpp visit.cpp \
-		  web-client.cpp worker.cpp ya_event.cpp znet.cpp ya_setting.cpp area_business.cpp
+		  web-client.cpp worker.cpp ya_event.cpp znet.cpp ya_setting.cpp area_business.cpp 
 
 SRC_MAIN_EVENT = mine_module/MineCardManager.cpp
 AM_SOURCES = $(SRC_MONKEYCAR) $(SRC_MODULE_SERVICE) $(SRC_MAIN) $(SRC_MAIN_EVENT)

+ 1 - 1
Makefile.am

@@ -9,7 +9,7 @@ SRC_MAIN= ant.cpp area.cpp base64.cpp bindmorecard.cpp mine_business.cpp card_ar
     	  card.cpp card_message_handle.cpp cardMgr.cpp card_path.cpp card_person.cpp crc.cpp geo_hash.cpp \
 		  landmark.cpp line_fit.cpp loc_point.cpp loc_tool.cpp message.cpp message_file.cpp mine.cpp \
 		  net-service.cpp point.cpp select_tool.cpp site_area.cpp special_area.cpp tdoa_sync.cpp visit.cpp \
-		  web-client.cpp worker.cpp ya_event.cpp znet.cpp ya_setting.cpp area_business.cpp
+		  web-client.cpp worker.cpp ya_event.cpp znet.cpp ya_setting.cpp area_business.cpp 
 
 SRC_MAIN_EVENT= mine_module/MineCardManager.cpp
 

+ 1 - 1
Makefile.in

@@ -247,7 +247,7 @@ SRC_MAIN = ant.cpp area.cpp base64.cpp bindmorecard.cpp mine_business.cpp card_a
     	  card.cpp card_message_handle.cpp cardMgr.cpp card_path.cpp card_person.cpp crc.cpp geo_hash.cpp \
 		  landmark.cpp line_fit.cpp loc_point.cpp loc_tool.cpp message.cpp message_file.cpp mine.cpp \
 		  net-service.cpp point.cpp select_tool.cpp site_area.cpp special_area.cpp tdoa_sync.cpp visit.cpp \
-		  web-client.cpp worker.cpp ya_event.cpp znet.cpp ya_setting.cpp area_business.cpp
+		  web-client.cpp worker.cpp ya_event.cpp znet.cpp ya_setting.cpp area_business.cpp 
 
 SRC_MAIN_EVENT = mine_module/MineCardManager.cpp
 AM_SOURCES = $(SRC_MONKEYCAR) $(SRC_MODULE_SERVICE) $(SRC_MAIN) $(SRC_MAIN_EVENT)

+ 9 - 6
area.cpp

@@ -70,7 +70,8 @@ void area::on_hover(const std::shared_ptr<area_hover>&a,const std::shared_ptr<ca
 {
  	for(const auto &i:m_area_business_list)
 	{
-		i->on_hover(a,c,a->get_business_data(i->area_business_type()));
+		auto x=a->get_business_data(i->area_business_type());
+		i->on_hover(a,c,x);
 	}
 }
 
@@ -79,7 +80,8 @@ void area::on_enter(const std::shared_ptr<area_hover>&a,const std::shared_ptr<ca
 	log_info("on_enter..%d  areaId:%d",c->m_id,m_id);
  	for(const auto &i:m_area_business_list)
 	{
-		i->on_enter(a,c,a->get_business_data(i->area_business_type()));
+		auto x=a->get_business_data(i->area_business_type());
+		i->on_enter(a,c,x);
 	}
 }
 
@@ -88,7 +90,8 @@ void area::on_leave(const std::shared_ptr<area_hover>&a,const std::shared_ptr<ca
 	log_info("on_leave..%d  areaId:%d",c->m_id,m_id);
  	for(const auto &i:m_area_business_list)
 	{
-		i->on_leave(a,c,a->get_business_data(i->area_business_type()));
+		auto x=a->get_business_data(i->area_business_type());
+		i->on_leave(a,c,x);
 	}
 }
 
@@ -347,9 +350,9 @@ void area_list::init_from_db(int id/*=-1*/)
 				tmp_ptr = create(area_type_id,area_id,over_count_person,over_time_person, scale,map_id,b_type);
                 area_list::instance()->add(id, tmp_ptr);
             }
-            tmp_ptr->update(over_count_person, over_time_person,scale,map_id,area_type_id, over_count_vehicle,over_time_vehicle);
-            tmp_ptr->m_bound=init_path(path);
-            for(const auto &p : tmp_ptr->m_bound)
+            tmp_ptr->update(over_count_person, over_time_person,scale,map_id,area_type_id, over_count_vehicle,over_time_vehicle); 
+			tmp_ptr->m_bound=init_path(path);
+			for(const auto &p : tmp_ptr->m_bound)
                 log_info("point:area_id:%d--x:%.2f,y:%.2f",area_id,p.x,p.y);
 //               CheckAreaType(tmp_ptr,area_type_id,tmp_ptr->m_area_type);
 

+ 0 - 4
area.h

@@ -39,10 +39,6 @@ struct area
     {
         return m_scale;
     }
-    bool special()const
-    {
-        return m_area_type == AREA_TYPE_NO_COVER;
-    }
     virtual ~area()
     {}
 

+ 24 - 24
area_business.cpp

@@ -17,10 +17,10 @@ struct area_business_post_area:area_business
 		return 1;
 	}
 	//将推送区域信息加入人员数据
-	virtual void on_enter(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr){}
-	virtual void on_hover(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr){}
+	virtual void on_enter(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> &ptr){}
+	virtual void on_hover(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> &ptr){}
 	//从人员数据中清除区域信息
-	virtual void on_leave(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr){}
+	virtual void on_leave(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> &ptr){}
 };
 
 /*
@@ -42,12 +42,12 @@ struct area_business_speed_checker:area_business
 	}
 
 	//在ptr对象中初始化超速检测所需的对象
-	virtual void on_enter(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr){}
+	virtual void on_enter(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> &ptr){}
 	//根据超速检测的策略,进行超速判断,超速时进行告警
 	//建议使用最近M秒内N秒超时进行判断,M=20,N=15,策略数据记录在ptr中..如此:一辆车理想情况下15s才能检测出来。15*4m/s=60mbut.15s内有可能只上来一个超速点。
-	virtual void on_hover(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr){}
+	virtual void on_hover(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> &ptr){}
 	//清除超速检测所需的对象
-	virtual void on_leave(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr){}
+	virtual void on_leave(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> &ptr){}
 };
 
 
@@ -62,7 +62,7 @@ struct area_business_restricted:area_business
 		return 7;
 	}
 	//记录进入时间等信息,生成告警
-	virtual void on_enter(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr)
+	virtual void on_enter(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> &ptr)
 	{
 #if 0
         a->m_enter_point = point(c->x,c->y,c->z);
@@ -90,9 +90,9 @@ struct area_business_restricted:area_business
 #endif
 
 	}
-	virtual void on_hover(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr){}
+	virtual void on_hover(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> &ptr){}
 	//记录退出时间等信息
-	virtual void on_leave(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr)
+	virtual void on_leave(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> &ptr)
 	{
 #if 0
         a->m_last_point = point(c->x,c->y,c->z);
@@ -150,10 +150,10 @@ struct area_business_car_attendance:area_business
 	
 	}
 	//记录进入时间等信息,结束考勤,根据离开的时间和距离,判断是否记录一条新的考勤记录
-	virtual void on_enter(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr){}
-	virtual void on_hover(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr){}
+	virtual void on_enter(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> &ptr){}
+	virtual void on_hover(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> &ptr){}
 	//记录离开考勤区域信息,开始考勤
-	virtual void on_leave(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr){}
+	virtual void on_leave(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> &ptr){}
 };
 
 /*
@@ -167,10 +167,10 @@ struct area_business_person_attendance:area_business
 	
 	}
 	//记录进入时间等信息,开始考勤
-	virtual void on_enter(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr){}
-	virtual void on_hover(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr){}
+	virtual void on_enter(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> &ptr){}
+	virtual void on_hover(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> &ptr){}
 	//记录离开考勤区域信息,结束考勤
-	virtual void on_leave(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr){}
+	virtual void on_leave(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> &ptr){}
 };
 
 /*
@@ -187,10 +187,10 @@ struct area_business_count_checker:area_business
 	
 	}
 	//增加计数,并进行判断
-	virtual void on_enter(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr){}
-	virtual void on_hover(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr){}
+	virtual void on_enter(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> &ptr){}
+	virtual void on_hover(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> &ptr){}
 	//减少计数
-	virtual void on_leave(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr){}
+	virtual void on_leave(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> &ptr){}
 };
 
 
@@ -206,11 +206,11 @@ struct area_business_person_dwell_checker:area_business
 		return 2;
 	}
 	//进入区域,记录进入时间
-	virtual void on_enter(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr){}
+	virtual void on_enter(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> &ptr){}
 	//判断是否超时
-	virtual void on_hover(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr){}
+	virtual void on_hover(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> &ptr){}
 	//如果有超时告警,取消超时告警
-	virtual void on_leave(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr){}
+	virtual void on_leave(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> &ptr){}
 };
 
 struct area_business_card_enter_or_leave:area_business
@@ -220,10 +220,10 @@ struct area_business_card_enter_or_leave:area_business
 		return 9;
 	}
 	//进入区域则入库操作
-	virtual void on_enter(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr){}
-	virtual void on_hover(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr){}
+	virtual void on_enter(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> &ptr){}
+	virtual void on_hover(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> &ptr){}
 	//出区域则入库
-	virtual void on_leave(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr){}
+	virtual void on_leave(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> &ptr){}
 };
 
 struct area_business_factory

+ 3 - 3
area_business.h

@@ -13,9 +13,9 @@ struct area_business
 {
 	virtual int area_business_type()=0;
 
-	virtual void on_enter(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr){}
-	virtual void on_hover(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr){}
-	virtual void on_leave(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr){}
+	virtual void on_enter(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> &ptr){}
+	virtual void on_hover(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> &ptr){}
+	virtual void on_leave(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> &ptr){}
 
 	static std::vector<area_business*> get_instance_list(int business_type);
 };

+ 2 - 2
card_base.h

@@ -53,7 +53,7 @@ struct card:point
 	uint64_t time_(){return m_time;}
 	uint32_t m_id;				//卡号
 	uint32_t m_cid;				//标识id 人staff_id 车 vehicle_id
-	uint64_t  m_type;			//类型
+	uint64_t m_type;			//类型
 	uint16_t m_display;			//1显示0不显示,往前端推送
 	double   m_speed;			//速度
 	int      m_is_attendance;	//井上井下状态  0初始状态 1 井上 2 井下
@@ -62,7 +62,7 @@ struct card:point
     uint64_t m_time;			//时间戳 ms
 	int32_t  m_deptid;			//部门编号
 	int32_t  m_level_id;		//部门级别
-	int m_biz_stat;
+	int		 m_biz_stat;
 };
 
 struct card_location_base:card,std::enable_shared_from_this<card_location_base>

+ 26 - 0
event.cpp

@@ -363,6 +363,32 @@ void event_list::load_his_data_from_db()
     }
 }
 
+std::string event_list::evs_to_json(std::vector<std::shared_ptr<ya_event>> arr)
+{
+    rapidjson::Document doc(rapidjson::kObjectType);
+    rapidjson::Value data(rapidjson::kArrayType);
+    rapidjson::Document::AllocatorType& allocator=doc.GetAllocator();
+
+    auto it=arr.begin();
+    for(;it!=arr.end();++it)
+    {
+        if((*it)->m_is_display)
+        {
+            ev_to_node(*it, allocator, data);
+        }
+    }
+
+    doc.AddMember(JSON_ROOT_KEY_CMD,JSON_CMD_VALUE_EVENT, allocator);
+    doc.AddMember(JSON_ROOT_KEY_VERSION,INTERFACE_VERSION, allocator);
+    doc.AddMember(JSON_ROOT_KEY_DATA,data, allocator);
+
+    rapidjson::StringBuffer sb;
+    rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(sb);
+    doc.Accept(writer);
+
+    return sb.GetString();
+}
+
 
 template<> std::shared_ptr<event_list>
 single_base<event_list, uint64_t, std::shared_ptr<ya_event>>::m_instance=std::make_shared<event_list>();

+ 6 - 28
event.h

@@ -1,6 +1,9 @@
 #ifndef __EVENT_HPP__
 #define __EVENT_HPP__
 #include <memory>
+#include <map>
+#include "write-copy.h"
+class ya_event;
 enum EVENT_STATUS
 {
     ///事件开始
@@ -42,7 +45,7 @@ class Event;
 struct event_tool
 {
 	template <class UnaryPredicate>
-	void handle_event(OBJECT_TYPE ot,EVENT_TYPE et,uint64_t id,double limit_value,double cur_value,Unarypredicate p)
+	void handle_event(OBJECT_TYPE ot,EVENT_TYPE et,uint64_t id,double limit_value,double cur_value,UnaryPredicate p)
 	{
 		handle_event(ot,et,id,limit_value,cur_value,p());
 	}
@@ -76,33 +79,8 @@ public:
         return evs_to_json(evs);
     }
 
-    static std::string evs_to_json(std::vector<std::shared_ptr<ya_event>> arr)
-    {
-        rapidjson::Document doc(rapidjson::kObjectType);
-        rapidjson::Value data(rapidjson::kArrayType);
-        rapidjson::Document::AllocatorType& allocator=doc.GetAllocator();
-
-        auto it=arr.begin();
-        for(;it!=arr.end();++it)
-        {
-            if((*it)->m_is_display)
-            {
-                ev_to_node(*it, allocator, data);
-            }
-        }
-
-        doc.AddMember(JSON_ROOT_KEY_CMD,JSON_CMD_VALUE_EVENT, allocator);
-        doc.AddMember(JSON_ROOT_KEY_VERSION,INTERFACE_VERSION, allocator);
-        doc.AddMember(JSON_ROOT_KEY_DATA,data, allocator);
-
-        rapidjson::StringBuffer sb;
-        rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(sb);
-        doc.Accept(writer);
-
-        return sb.GetString();
-    }
-
-private:
+    static std::string evs_to_json(std::vector<std::shared_ptr<ya_event>> arr);
+   private:
     static void ev_to_node(std::shared_ptr<ya_event> ev_ptr,
                            rapidjson::Document::AllocatorType& allocator,
                            rapidjson::Value& out_data)

+ 1 - 1
ya_event.h

@@ -13,7 +13,7 @@
 #include"write-copy.h"
 #include"log.h"
 #include "db_api/CDBSingletonDefine.h"
-#include"card.h"
+#include "card.h"
 #include"common_tool.h"
 #include "tool_time.h"
 #include "db_tool.h"