|
@@ -17,11 +17,13 @@ struct over_speed_data:business_data
|
|
|
m_over_speed_count=0;
|
|
|
m_normal_speed_count=0;
|
|
|
m_limit_speed=0;
|
|
|
+ m_is_warning=false;
|
|
|
}
|
|
|
|
|
|
int m_over_speed_count;
|
|
|
int m_normal_speed_count;
|
|
|
double m_limit_speed;
|
|
|
+ bool m_is_warning;
|
|
|
};
|
|
|
|
|
|
area_business_speed_checker::area_business_speed_checker()
|
|
@@ -55,6 +57,18 @@ void area_business_speed_checker::on_enter(const std::shared_ptr<area_hover>&are
|
|
|
{
|
|
|
ptr_temp->m_over_speed_count++;
|
|
|
}
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ptr_temp->m_normal_speed_count++;
|
|
|
+ }
|
|
|
+
|
|
|
+ EVENT_TYPE ev_type = ET_CARD_AREA_OVER_SPEED;
|
|
|
+ if(area_hover_ptr->m_area->is_mine())
|
|
|
+ {
|
|
|
+ ev_type = ET_CARD_OVER_SPEED;
|
|
|
+ }
|
|
|
+ auto ev_ptr_temp = event_list::instance()->get_event_card(card_ptr->m_id, card_ptr->m_type, ev_type);
|
|
|
+ ptr_temp->m_is_warning = (nullptr != ev_ptr_temp && !ev_ptr_temp->is_end());
|
|
|
}
|
|
|
|
|
|
void area_business_speed_checker::on_hover(const std::shared_ptr<area_hover>&area_hover_ptr,
|
|
@@ -75,10 +89,12 @@ void area_business_speed_checker::on_hover(const std::shared_ptr<area_hover>&are
|
|
|
if(limit < card_ptr->m_speed)//超速
|
|
|
{
|
|
|
ptr_temp->m_over_speed_count++;
|
|
|
+ ptr_temp->m_normal_speed_count=0;
|
|
|
}
|
|
|
else//速度正常
|
|
|
{
|
|
|
ptr_temp->m_normal_speed_count++;
|
|
|
+ ptr_temp->m_over_speed_count=0;
|
|
|
}
|
|
|
|
|
|
EVENT_TYPE ev_type = ET_CARD_AREA_OVER_SPEED;
|
|
@@ -92,14 +108,13 @@ void area_business_speed_checker::on_hover(const std::shared_ptr<area_hover>&are
|
|
|
{
|
|
|
ptr_temp->m_over_speed_count=SPEED_COUNT_LIMIT;
|
|
|
|
|
|
- auto ev_ptr_temp = event_list::instance()->get_event_card(card_ptr->m_id, card_ptr->m_type, ev_type);
|
|
|
- if(!ev_ptr_temp)//从没有告警状态转化为告警状态
|
|
|
+ if(!ptr_temp->m_is_warning)
|
|
|
{
|
|
|
- ptr_temp->m_normal_speed_count=0;
|
|
|
- }
|
|
|
+ ptr_temp->m_is_warning = true;
|
|
|
|
|
|
- uint64_t id = tool_other::type_id_to_u64(card_ptr->m_type, card_ptr->m_id);
|
|
|
- event_tool::instance()->handle_event(OT_CARD, ev_type, id, limit, card_ptr->m_speed, true);
|
|
|
+ uint64_t id = tool_other::type_id_to_u64(card_ptr->m_type, card_ptr->m_id);
|
|
|
+ event_tool::instance()->handle_event(OT_CARD, ev_type, id, limit, card_ptr->m_speed, true);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//确定正常
|
|
@@ -107,10 +122,9 @@ void area_business_speed_checker::on_hover(const std::shared_ptr<area_hover>&are
|
|
|
{
|
|
|
ptr_temp->m_normal_speed_count=SPEED_COUNT_LIMIT;
|
|
|
|
|
|
- auto ev_ptr_temp = event_list::instance()->get_event_card(card_ptr->m_id, card_ptr->m_type, ev_type);
|
|
|
- if(ev_ptr_temp && !ev_ptr_temp->is_end())
|
|
|
+ if(ptr_temp->m_is_warning)
|
|
|
{
|
|
|
- ptr_temp->m_over_speed_count=0;
|
|
|
+ ptr_temp->m_is_warning=false;
|
|
|
|
|
|
uint64_t id = tool_other::type_id_to_u64(card_ptr->m_type, card_ptr->m_id);
|
|
|
event_tool::instance()->handle_event(OT_CARD, ev_type, id, limit, card_ptr->m_speed, false);
|