Browse Source

功能测试,告警测试-修改BUG

chensongchao 6 years ago
parent
commit
85139ee40a

+ 2 - 2
Makefile.am

@@ -26,9 +26,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 -std=c++11  -I${prefix}/include -I/usr/local/mysql/include -Iwebsocket -Iwebsocket/sio -I./db -I../dist/include -I../rapidjson/include -Imodule_service
+AM_CPPFLAGS=-Wall -pthread -m64 -g -O0 -std=c++11  -I${prefix}/include -I/usr/local/mysql/include -Iwebsocket -Iwebsocket/sio -I./db -I../dist/include -I../rapidjson/include -Imodule_service
 
-AM_LDFLAGS=-Wall -pthread -m64 -g -std=c++11  -L${prefix}/lib  -L/usr/local/mysql/lib -L../dist/lib
+AM_LDFLAGS=-Wall -pthread -m64 -g -O0 -std=c++11  -L${prefix}/lib  -L/usr/local/mysql/lib -L../dist/lib
 
 yals_SOURCES=${AM_SOURCES} main.cpp
 yals_CPPFLAGS=${AM_CPPFLAGS} 

+ 1 - 1
card_message_handle.cpp

@@ -92,7 +92,7 @@ struct one_ct_message_handle
 
 			//启动本CT的最小、最大两个定时器
 			m_min_timer.start(m_ac->min_wait_time);
-			m_max_timer.start(m_ac->min_wait_time);
+			m_max_timer.start(m_ac->max_wait_time);
 			return;
 		}
 

+ 5 - 0
mine_business.cpp

@@ -129,6 +129,11 @@ struct staffer_num_business
 {
 	void record_staffer_num();
 	void fetch_add(){m_staff_num++;}
+	staffer_num_business()
+	{
+		m_staff_num = 0;
+		m_record_staffer_timeval = 0;
+	}
 	private:
 	void reset(){m_staff_num=0;}
 	std::atomic<uint32_t> m_staff_num;

+ 5 - 2
module_service/area_business_card_enter_or_leave.cpp

@@ -41,8 +41,11 @@ void area_business_card_enter_or_leave::on_leave(const std::shared_ptr<area_hove
         log_error("出区域失败:nullptr == ptr");
         return;
     }
-    auto ptr_temp = static_cast<enter_or_leave_data*>(ptr.get());
-
+    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);
 }
 

+ 3 - 3
module_service/area_business_count_checker.cpp

@@ -9,11 +9,11 @@
 	区域内实时人数存储在area对象中,在当前类on_enter/on_leave中进行更新
 	整个井下的超员和某个区域的超员都使用这个代码
 */
-	//增加计数,并进行判断
+//增加计数,并进行判断
 void area_business_count_checker::on_enter(const std::shared_ptr<area_hover>&a,
 						const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data>&ptr)
 {
-    if (nullptr == a->m_area)
+    if (nullptr == a->m_area )//|| !a->m_area->is_mine())
     {
         return ;
     }
@@ -62,7 +62,7 @@ void area_business_count_checker::on_hover(const std::shared_ptr<area_hover>&a,
 void area_business_count_checker::on_leave(const std::shared_ptr<area_hover>&a,
 						const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr)
 {
-    if (nullptr == a->m_area)
+    if (nullptr == a->m_area )//|| !a->m_area->is_mine())
     {
         return ;
     }

+ 27 - 11
module_service/area_business_person_dwell_checker.cpp

@@ -4,6 +4,7 @@
 #include "event.h"
 #include "tool_time.h"
 #include "common_tool.h"
+#include "log.h"
 #include "area_business_person_dwell_checker.h"
 /*
 	判断当前区域a中的人卡停留时间
@@ -13,11 +14,16 @@
 
 struct SPersonDwellChecker : business_data
 {
-    uint64_t m_enter_time;
+    int m_enter_time;
     point m_enter_point;
+    int m_level_time;
+    point m_level_point;
+    bool m_send_event;  // 是否发生告警
     SPersonDwellChecker()
     {
         m_enter_time = 0;
+        m_level_time = 0;
+        m_send_event = false;
     }
 };
 
@@ -25,11 +31,17 @@ struct SPersonDwellChecker : business_data
 void area_business_person_dwell_checker::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<SPersonDwellChecker>();
+    if (nullptr == ptr)
+    {
+        ptr = std::make_shared<SPersonDwellChecker>();
+    }
+    auto ptr_temp = dynamic_cast<SPersonDwellChecker*>(ptr.get());
     ptr_temp->m_enter_point.set(c->x,c->y,c->z);
-    ptr_temp->m_enter_time = tool_time::now_to_ms();
-    ptr = ptr_temp;
+    ptr_temp->m_enter_time = tool_time::now_to_seconds();
+    ptr_temp->m_level_time = 0;
+    ptr_temp->m_level_point.set(0,0,0);
+    a->m_data[this->area_business_type()] = ptr;
+    log_info("area_business_person_dwell_checker::on_enter : In Area=%d Card = %d  ",a->m_area->is_mine(),c->m_id);
 }
 
 
@@ -37,13 +49,13 @@ void area_business_person_dwell_checker::on_enter(const std::shared_ptr<area_hov
 void area_business_person_dwell_checker::on_hover(const std::shared_ptr<area_hover>&a,
 							const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr)
 {
-    auto ptr_temp = static_cast<SPersonDwellChecker*>(ptr.get());
-    if(nullptr == ptr_temp)
+    auto ptr_temp = dynamic_cast<SPersonDwellChecker*>(ptr.get());
+    if(nullptr == ptr_temp || ptr_temp->m_enter_time == 0)
     {
         return ;
     }
 	double limit_val = 0;
-	double cur_val = (tool_time::now_to_ms() - ptr_temp->m_enter_time)/1000;
+	double cur_val = ( tool_time::now_to_seconds() - ptr_temp->m_enter_time);
 	EVENT_TYPE evType = EVENT_TYPE::ET_CARD_AREA_OVER_TIME_PERSON;
 	if(c->is_person())
     {
@@ -51,6 +63,7 @@ void area_business_person_dwell_checker::on_hover(const std::shared_ptr<area_hov
         {
 	        return;
         }
+	    ptr_temp->m_send_event = true;
 	    evType = a->m_area->is_mine() ? EVENT_TYPE::ET_CARD_OVER_TIME_PERSON : EVENT_TYPE::ET_CARD_AREA_OVER_TIME_PERSON;
 	    limit_val = a->m_area->m_limit_person_second;
     }
@@ -71,13 +84,16 @@ void area_business_person_dwell_checker::on_hover(const std::shared_ptr<area_hov
 void area_business_person_dwell_checker::on_leave(const std::shared_ptr<area_hover>&a,
 							const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr)
 {
-    auto ptr_temp = static_cast<SPersonDwellChecker*>(ptr.get());
+    auto ptr_temp = dynamic_cast<SPersonDwellChecker*>(ptr.get());
     if(nullptr == ptr_temp)
     {
         return ;
     }
-    ptr_temp->m_enter_point.set(c->x,c->y,c->z);
-    ptr_temp->m_enter_time = tool_time::now_to_ms();
+    ptr_temp->m_level_point.set(c->x,c->y,c->z);
+    ptr_temp->m_level_time = tool_time::now_to_seconds();
+    ptr_temp->m_enter_point.set(0,0,0);
+    ptr_temp->m_enter_time = 0;
+    ptr_temp->m_send_event = false;
     EVENT_TYPE evType = EVENT_TYPE::ET_CARD_AREA_OVER_TIME_PERSON;
     if(c->is_person())
     {

+ 10 - 4
module_service/area_business_speed_checker.cpp

@@ -78,8 +78,11 @@ void area_business_speed_checker::on_hover(const std::shared_ptr<area_hover>&are
     {
         return;
     }
-
-    auto ptr_temp = static_cast<over_speed_data*>(ptr.get());
+    auto ptr_temp = dynamic_cast<over_speed_data*>(ptr.get());
+    if (ptr_temp == nullptr)
+    {
+        return ;
+    }
     double limit = ptr_temp ->m_limit_speed;
     if(limit < 0.01)
     {
@@ -139,8 +142,11 @@ void area_business_speed_checker::on_leave(const std::shared_ptr<area_hover>&are
     {
         return;
     }
-
-    auto ptr_temp = static_cast<over_speed_data*>(ptr.get());
+    auto ptr_temp = dynamic_cast<over_speed_data*>(ptr.get());
+    if (ptr_temp == nullptr)
+    {
+        return ;
+    }
     double limit = ptr_temp ->m_limit_speed;
 
     EVENT_TYPE ev_type = ET_CARD_AREA_OVER_SPEED;