|
@@ -61,21 +61,8 @@ void area_business_count_checker::on_enter(const std::shared_ptr<area_hover>&a,
|
|
|
a->m_area->m_person_count ++;
|
|
|
if(c->m_display)
|
|
|
a->m_area->m_person_show_count ++ ;
|
|
|
- int pc=a->m_area->m_person_count.load();
|
|
|
- int pc_=a->m_area->m_person_show_count.load();
|
|
|
- EVENT_TYPE ev = a->m_area->is_mine()?EVENT_TYPE::ET_OVER_COUNT_PERSON : EVENT_TYPE::ET_AREA_OVER_COUNT_PERSON ;
|
|
|
- if(pc>limit_val){
|
|
|
- lock();
|
|
|
- event_tool::instance()->handle_event(OT_AREA,ev,aid,limit_val,pc,a->m_area->m_event_person_count=true,DT_NORMAL);
|
|
|
- unlock();
|
|
|
- log_info("person_count_enter:%d,v_count:%d limit:%d",aid,pc,limit_val);
|
|
|
- }
|
|
|
- if(pc_>limit_val){
|
|
|
- lock();
|
|
|
- event_tool::instance()->handle_event(OT_AREA,ev,aid,limit_val,pc_,a->m_area->m_event_person_show_count=true,DT_SPECIAL);
|
|
|
- unlock();
|
|
|
- log_info("person_count_enter_show:%d,v_count:%d limit:%d",aid,pc_,limit_val);
|
|
|
- }
|
|
|
+
|
|
|
+ _add_person_count_event(a,limit_val,"person_count_enter");
|
|
|
}
|
|
|
else if (c->is_vehicle())
|
|
|
{
|
|
@@ -90,21 +77,8 @@ void area_business_count_checker::on_enter(const std::shared_ptr<area_hover>&a,
|
|
|
a->m_area->m_vehicle_count ++ ;
|
|
|
if(c->m_display)
|
|
|
a->m_area->m_vehicle_show_count ++ ;
|
|
|
- int vc=a->m_area->m_vehicle_count.load();
|
|
|
- int vc_=a->m_area->m_vehicle_show_count.load();
|
|
|
- EVENT_TYPE ev = a->m_area->is_mine()?EVENT_TYPE::ET_OVER_COUNT_VEHICLE : EVENT_TYPE::ET_AREA_OVER_COUNT_VEHICLE ;
|
|
|
- if(vc>limit_val){
|
|
|
- lock();
|
|
|
- event_tool::instance()->handle_event(OT_AREA,ev,aid,limit_val,vc,a->m_area->m_event_vehicle_count=true,DT_NORMAL);
|
|
|
- unlock();
|
|
|
- log_info("vehicle_count_enter:%d,v_count:%d limit:%d",aid,vc,limit_val);
|
|
|
- }
|
|
|
- if(vc_>limit_val){
|
|
|
- lock();
|
|
|
- event_tool::instance()->handle_event(OT_AREA,ev,aid,limit_val,vc_,a->m_area->m_event_vehicle_show_count=true,DT_SPECIAL);
|
|
|
- unlock();
|
|
|
- log_info("vehicle_count_enter_show:%d,v_count:%d limit:%d",aid,vc_,limit_val);
|
|
|
- }
|
|
|
+
|
|
|
+ _add_vehicle_count_event(a,limit_val);
|
|
|
}
|
|
|
c->update_display();
|
|
|
}
|
|
@@ -121,6 +95,13 @@ void area_business_count_checker::on_hover(const std::shared_ptr<area_hover>&a,
|
|
|
c->update_display();
|
|
|
ptr=nullptr;
|
|
|
}
|
|
|
+
|
|
|
+ if (c->is_person() && a->m_area->get_limit_person_count())
|
|
|
+ {
|
|
|
+ int limit_val = a->m_area->m_limit_person_count;
|
|
|
+ _remove_person_count_event(a,limit_val,"area_business_count_checker::on_hover");
|
|
|
+ _add_person_count_event(a,limit_val,"area_business_count_checker::on_hover");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//减少计数
|
|
@@ -148,23 +129,7 @@ void area_business_count_checker::on_leave(const std::shared_ptr<area_hover>&a,
|
|
|
if(flag)
|
|
|
a->m_area->m_person_show_count -- ;
|
|
|
}
|
|
|
- int pc=a->m_area->m_person_count.load();
|
|
|
- int pc_=a->m_area->m_person_show_count.load();
|
|
|
- int limit_val=a->m_area->m_limit_person_count;
|
|
|
- int aid=a->m_area->id();
|
|
|
- EVENT_TYPE ev = a->m_area->is_mine()?EVENT_TYPE::ET_OVER_COUNT_PERSON : EVENT_TYPE::ET_AREA_OVER_COUNT_PERSON ;
|
|
|
- if(a->m_area->m_event_person_count&& pc <= limit_val){
|
|
|
- lock();
|
|
|
- event_tool::instance()->handle_event(OT_AREA,ev,aid,limit_val,pc,a->m_area->m_event_person_count=false,DT_NORMAL);
|
|
|
- unlock();
|
|
|
- log_info("person_count_leave:%d,v_count:%d limit:%d",aid,pc,limit_val);
|
|
|
- }
|
|
|
- if(a->m_area->m_event_person_show_count&& pc_ <= limit_val){
|
|
|
- lock();
|
|
|
- event_tool::instance()->handle_event(OT_AREA,ev,aid,limit_val,pc_,a->m_area->m_event_person_show_count=false,DT_SPECIAL);
|
|
|
- unlock();
|
|
|
- log_info("person_count_leave_show:%d,v_count:%d limit:%d",aid,pc,limit_val);
|
|
|
- }
|
|
|
+ _remove_person_count_event(a , a->m_area->m_limit_person_count ,"person_count_leave");
|
|
|
}
|
|
|
else if (c->is_vehicle())
|
|
|
{
|
|
@@ -176,23 +141,97 @@ void area_business_count_checker::on_leave(const std::shared_ptr<area_hover>&a,
|
|
|
if(flag)
|
|
|
a->m_area->m_vehicle_show_count -- ;
|
|
|
}
|
|
|
- int pc=a->m_area->m_vehicle_count.load();
|
|
|
- int pc_=a->m_area->m_vehicle_show_count.load();
|
|
|
- int limit_val=a->m_area->m_limit_vehicle_count;
|
|
|
- int aid=a->m_area->id();
|
|
|
- EVENT_TYPE ev = a->m_area->is_mine()?EVENT_TYPE::ET_OVER_COUNT_VEHICLE : EVENT_TYPE::ET_AREA_OVER_COUNT_VEHICLE ;
|
|
|
- if(a->m_area->m_event_vehicle_count&& pc <= limit_val){
|
|
|
- lock();
|
|
|
- event_tool::instance()->handle_event(OT_AREA,ev,aid,limit_val,pc,a->m_area->m_event_vehicle_count=false,DT_NORMAL);
|
|
|
- unlock();
|
|
|
- log_info("vehicle_count_leave:%d,v_count:%d limit:%d",aid,pc,limit_val);
|
|
|
- }
|
|
|
- if(a->m_area->m_event_vehicle_show_count&& pc_ <= limit_val){
|
|
|
- lock();
|
|
|
- event_tool::instance()->handle_event(OT_AREA,ev,aid,limit_val,pc_,a->m_area->m_event_vehicle_show_count=false,DT_SPECIAL);
|
|
|
- unlock();
|
|
|
- log_info("vehicle_count_leave_show:%d,v_count:%d limit:%d",aid,pc,limit_val);
|
|
|
- }
|
|
|
+ _remove_vehicle_count_event(a,a->m_area->m_limit_vehicle_count);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+//添加人员告警
|
|
|
+void area_business_count_checker::_add_person_count_event(const std::shared_ptr<area_hover>&a
|
|
|
+ ,int limit_val,const std::string &desc)
|
|
|
+{
|
|
|
+ int aid = a->m_area->id();
|
|
|
+ int pc = a->m_area->m_person_count.load();
|
|
|
+ int pc_ = a->m_area->m_person_show_count.load();
|
|
|
+ EVENT_TYPE ev = a->m_area->is_mine() ? EVENT_TYPE::ET_OVER_COUNT_PERSON : EVENT_TYPE::ET_AREA_OVER_COUNT_PERSON;
|
|
|
+ if(pc > limit_val )
|
|
|
+ {
|
|
|
+ lock();
|
|
|
+ event_tool::instance()->handle_event(OT_AREA,ev,aid,limit_val,pc,a->m_area->m_event_person_count=true,DT_NORMAL);
|
|
|
+ unlock();
|
|
|
+ log_info("%s:%d,v_count:%d limit:%d",desc.c_str(),aid,pc,limit_val);
|
|
|
+ }
|
|
|
+ if(pc_ > limit_val )
|
|
|
+ {
|
|
|
+ lock();
|
|
|
+ event_tool::instance()->handle_event(OT_AREA,ev,aid,limit_val,pc_,a->m_area->m_event_person_show_count=true,DT_SPECIAL);
|
|
|
+ unlock();
|
|
|
+ log_info("%s:%d,v_count:%d limit:%d",desc.c_str(),aid,pc_,limit_val);
|
|
|
+ }
|
|
|
+}
|
|
|
+//移除人员告警
|
|
|
+void area_business_count_checker::_remove_person_count_event(const std::shared_ptr<area_hover>&a
|
|
|
+ ,int limit_val,const std::string &desc)
|
|
|
+{
|
|
|
+ int aid = a->m_area->id();
|
|
|
+ int pc = a->m_area->m_person_count.load();
|
|
|
+ int pc_ = a->m_area->m_person_show_count.load();
|
|
|
+ EVENT_TYPE ev = a->m_area->is_mine() ? EVENT_TYPE::ET_OVER_COUNT_PERSON : EVENT_TYPE::ET_AREA_OVER_COUNT_PERSON;
|
|
|
+
|
|
|
+ if(pc <= limit_val && a->m_area->m_event_person_count)
|
|
|
+ {
|
|
|
+ lock();
|
|
|
+ event_tool::instance()->handle_event(OT_AREA,ev,aid,limit_val,pc,a->m_area->m_event_person_count=false,DT_NORMAL);
|
|
|
+ unlock();
|
|
|
+ log_info("%s :%d,v_count:%d limit:%d",desc.c_str(),aid,pc,limit_val);
|
|
|
+ }
|
|
|
+ if(pc_ <= limit_val && a->m_area->m_event_person_show_count)
|
|
|
+ {
|
|
|
+ lock();
|
|
|
+ event_tool::instance()->handle_event(OT_AREA,ev,aid,limit_val,pc_,a->m_area->m_event_person_show_count=false,DT_SPECIAL);
|
|
|
+ unlock();
|
|
|
+ log_info("%s :%d,v_count:%d limit:%d",desc.c_str(),aid,pc_,limit_val);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+//添加车数量超出限制告警
|
|
|
+void area_business_count_checker::_add_vehicle_count_event(const std::shared_ptr<area_hover>&a
|
|
|
+ ,int limit_val,const std::string &desc)
|
|
|
+{
|
|
|
+ int aid = a->m_area->id();
|
|
|
+ int vc=a->m_area->m_vehicle_count.load();
|
|
|
+ int vc_=a->m_area->m_vehicle_show_count.load();
|
|
|
+ EVENT_TYPE ev = a->m_area->is_mine()?EVENT_TYPE::ET_OVER_COUNT_VEHICLE : EVENT_TYPE::ET_AREA_OVER_COUNT_VEHICLE ;
|
|
|
+ if(vc>limit_val){
|
|
|
+ lock();
|
|
|
+ event_tool::instance()->handle_event(OT_AREA,ev,aid,limit_val,vc,a->m_area->m_event_vehicle_count=true,DT_NORMAL);
|
|
|
+ unlock();
|
|
|
+ log_info("vehicle_count_enter:%d,v_count:%d limit:%d",aid,vc,limit_val);
|
|
|
+ }
|
|
|
+ if(vc_>limit_val){
|
|
|
+ lock();
|
|
|
+ event_tool::instance()->handle_event(OT_AREA,ev,aid,limit_val,vc_,a->m_area->m_event_vehicle_show_count=true,DT_SPECIAL);
|
|
|
+ unlock();
|
|
|
+ log_info("vehicle_count_enter_show:%d,v_count:%d limit:%d",aid,vc_,limit_val);
|
|
|
+ }
|
|
|
+}
|
|
|
+//移除车数量超出告警
|
|
|
+void area_business_count_checker::_remove_vehicle_count_event(const std::shared_ptr<area_hover>&a
|
|
|
+ ,int limit_val,const std::string &desc)
|
|
|
+{
|
|
|
+ int pc=a->m_area->m_vehicle_count.load();
|
|
|
+ int pc_=a->m_area->m_vehicle_show_count.load();
|
|
|
+ int aid=a->m_area->id();
|
|
|
+ EVENT_TYPE ev = a->m_area->is_mine()?EVENT_TYPE::ET_OVER_COUNT_VEHICLE : EVENT_TYPE::ET_AREA_OVER_COUNT_VEHICLE ;
|
|
|
+ if(a->m_area->m_event_vehicle_count&& pc <= limit_val){
|
|
|
+ lock();
|
|
|
+ event_tool::instance()->handle_event(OT_AREA,ev,aid,limit_val,pc,a->m_area->m_event_vehicle_count=false,DT_NORMAL);
|
|
|
+ unlock();
|
|
|
+ log_info("vehicle_count_leave:%d,v_count:%d limit:%d",aid,pc,limit_val);
|
|
|
+ }
|
|
|
+ if(a->m_area->m_event_vehicle_show_count&& pc_ <= limit_val){
|
|
|
+ lock();
|
|
|
+ event_tool::instance()->handle_event(OT_AREA,ev,aid,limit_val,pc_,a->m_area->m_event_vehicle_show_count=false,DT_SPECIAL);
|
|
|
+ unlock();
|
|
|
+ log_info("vehicle_count_leave_show:%d,v_count:%d limit:%d",aid,pc,limit_val);
|
|
|
+ }
|
|
|
+}
|