Browse Source

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

zzj 6 years ago
parent
commit
939ff1d54d

+ 3 - 5
area.cpp

@@ -31,10 +31,7 @@ struct underground_area:area
 	}
     virtual bool in_area(const std::shared_ptr<site>&s,const std::shared_ptr<card_location_base>&c, const point & p,int &sarid)
 	{
-		bool f =false;
-        if(!s->is_up_site())
-          f=true;
-		return f;
+        return s&&!s->is_up_site();
 	}
 };
 
@@ -428,7 +425,8 @@ std::vector<std::shared_ptr<area>> area_list::get_area(const std::shared_ptr<sit
 	for(const auto &a:map)
 		if(a.second->in_area(s,c,pt,sarid))
 			ret.push_back(a.second);
-    ret.push_back(s->get_area());
+    if(s)
+        ret.push_back(s->get_area());
 	//区域覆盖不完全地图,很多车辆人行驶在地图外,如何确认.
 	return std::move(ret);
 }

+ 18 - 69
module_service/area_business_card_enter_or_leave.cpp

@@ -7,26 +7,17 @@
 #include"log.h"
 
 
-struct enter_or_leave_data:business_data
-{
-    enter_or_leave_data()
-    {
-        m_enter_time_ms = tool_time::now_to_ms();
-    }
-
-    ///考勤开始时间
-    uint64_t m_enter_time_ms;
-};
-
 //进入区域则入库操作
-void area_business_card_enter_or_leave::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)
+void area_business_card_enter_or_leave::on_enter(const std::shared_ptr<area_hover>&a,
+                                                 const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data>&ptr)
 {
-    auto ptr_temp = std::make_shared<enter_or_leave_data>();
-    ptr_temp->m_enter_time_ms = area_hover_ptr->m_enter_time;
-    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);
+    char sql[LENGTH_SQL]{0};
+    std::string start_time = tool_time::to_str_ex(a->m_enter_time);
+    std::string card_id = tool_other::type_id_to_str(c->m_type,c->m_id);
+    const auto &p=a->m_enter_point;
+    snprintf(sql,LENGTH_SQL,"INSERT INTO his_location_area (card_id,area_id,map_id,enter_time,start_point)VALUES ('%s',%d,%d,'%s','%.2f,%.2f');",
+                card_id.c_str(),a->id(),a->mapid(),start_time.c_str(),p.x,p.y);
+    db_tool::PushAsync(sql);
 }
 
 void area_business_card_enter_or_leave::on_hover(const std::shared_ptr<area_hover>&a,
@@ -35,57 +26,15 @@ void area_business_card_enter_or_leave::on_hover(const std::shared_ptr<area_hove
 
 }
 //出区域则入库
-void area_business_card_enter_or_leave::on_leave(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(nullptr == ptr)
-    {
-        log_error("出区域失败:nullptr == ptr");
-        return;
-    }
-    auto ptr_temp = dynamic_cast<enter_or_leave_data*>(ptr.get());
-    if (nullptr == ptr_temp)
-    {
-        return ;
-    }
-    save_his_area_location_leave(area_hover_ptr, card_ptr, ptr_temp->m_enter_time_ms);
-}
-
-///入库
-void area_business_card_enter_or_leave::save_his_area_location_enter(const std::shared_ptr<area_hover>&area_hover_ptr,
-                                                                     const std::shared_ptr<card_location_base>&card_ptr,
-                                                                     uint64_t start_time_ms)
-{
-    char sql[LENGTH_SQL] = {0};
-
-    std::string call(card_ptr->is_vehicle()?"add_area_vehicle":"add_area_staff");
-
-    std::string start_str = tool_time::to_str_ex(start_time_ms);
-
-    sprintf(sql, "CALL %s(%s, %d, %d, %d, '%s','%s');", call.c_str(),
-            tool_other::type_id_to_str(card_ptr->m_type, card_ptr->m_id).c_str(),
-            card_ptr->m_id, area_hover_ptr->id(), area_hover_ptr->mapid(), start_str.c_str(), start_str.c_str());
-
-    db_tool::PushAsync(sql);
-}
-
-///入库
-void area_business_card_enter_or_leave::save_his_area_location_leave(const std::shared_ptr<area_hover>&area_hover_ptr,
-                                                                     const std::shared_ptr<card_location_base>&card_ptr,
-                                                                     uint64_t start_time_ms)
+void area_business_card_enter_or_leave::on_leave(const std::shared_ptr<area_hover>&a,
+                                                 const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr)
 {
-    char sql[LENGTH_SQL] = {0};
-
-    std::string call(card_ptr->is_vehicle()?"add_area_vehicle":"add_area_staff");
-
-    std::string start_str = tool_time::to_str_ex(start_time_ms);
-    std::string end_str = tool_time::to_str_ex(tool_time::now_to_ms());
-
-    sprintf(sql, "CALL %s(%s, %d, %d, %d, '%s','%s');", call.c_str(),
-            tool_other::type_id_to_str(card_ptr->m_type, card_ptr->m_id).c_str(),
-            card_ptr->m_id, area_hover_ptr->id(), area_hover_ptr->mapid(), start_str.c_str(), end_str.c_str());
-
+    char sql[LENGTH_SQL]{0};
+    std::string start_time = tool_time::to_str_ex(a->m_enter_time);
+    std::string end_time = tool_time::to_str_ex(a->m_last_time);
+    std::string card_id = tool_other::type_id_to_str(c->m_type,c->m_id);
+    const auto &ep=a->m_last_point;
+    snprintf(sql,LENGTH_SQL,"UPDATE his_location_area SET leave_time='%s',end_point='%.2f,%.2f' WHERE card_id = '%s' AND area_id=%d AND enter_time='%s';",
+                end_time.c_str(),ep.x,ep.y,card_id.c_str(),a->id(),start_time.c_str());
     db_tool::PushAsync(sql);
 }
-
-

+ 0 - 10
module_service/area_business_card_enter_or_leave.h

@@ -15,16 +15,6 @@ struct area_business_card_enter_or_leave:area_business
 	void on_hover(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr);
 	//出区域则入库
 	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 void save_his_area_location_enter(const std::shared_ptr<area_hover>&area_hover_ptr,
-                                             const std::shared_ptr<card_location_base>&card_ptr,
-                                             uint64_t start_time_ms);
-
-    ///入库
-    static void save_his_area_location_leave(const std::shared_ptr<area_hover>&area_hover_ptr,
-                                             const std::shared_ptr<card_location_base>&card_ptr,
-                                             uint64_t start_time_ms);
 };
 
 #endif

+ 0 - 12
module_service/area_business_post_area.cpp

@@ -6,28 +6,16 @@
 /*
 	确定推送人员信息时的区域,每一个明确需要推送的区域,都要推送
 */
-struct pos_area:business_data
-{
-	pos_area(uint64_t t)
-	{
-		m_enter_time=t;
-	}
-	uint64_t m_enter_time=0;
-};
 //将推送区域信息加入人员数据
 void area_business_post_area::on_enter(const std::shared_ptr<area_hover>&a,
 						const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data>&ptr)
 {
-	//uint64_t t=tool_time::now_to_ms();
-	//ptr=std::make_shared<pos_area>(t);
 	c->set_area_info(a->mapid(),a->scale(),a->id(),a->m_enter_time,0);
 }
 
 void area_business_post_area::on_hover(const std::shared_ptr<area_hover>&a,
 						const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr)
 {
-	//std::shared_ptr<pos_area> pa = std::dynamic_pointer_cast<pos_area>(ptr);
-	//uint64_t t = pa->m_enter_time;
 	c->set_area_info(0,0,a->id(),a->m_enter_time,1);
 }
 

+ 2 - 2
websocket/jsonBuilder.cpp

@@ -5,7 +5,7 @@
 #include <rapidjson/stringbuffer.h>
 #include <rapidjson/prettywriter.h>
 #include "constdef.h"
-
+#include "log.h"
 namespace YA
 {
 	jsonBuilder::jsonBuilder()
@@ -155,7 +155,7 @@ namespace YA
 		//18 车辆当天出勤的标识
 		tmp_object.SetInt( CardPos.is_on_duty );
 		Array.PushBack( tmp_object, Allocator );
-
+        log_info("websocket..%d",CardPos.area_info.size());
 		rapidjson::Value Array_1( rapidjson::kArrayType );
 		for(const auto &a:CardPos.area_info)	
 		{

BIN
websocket/libwebsocket.a