#ifndef MODULE_AREA_TIMEOUT_H #define MODULE_AREA_TIMEOUT_H /** *@brief 区域超时模块 2018-08-26 戴月腾修改 * 当某张人卡在某个区域的时间超过指定值时,会发出区域超时告警 * @author 陈欧美 * @date 2018-08-05 */ #include #include #include #include #include #include "point.h" #include "module_const.h" #include"module_const.h" /** * @brief 当某张人卡在某个区域的时间超过指定值时,会发出区域超时告警 */ class module_area_timeout:public singleton_base { private: friend class singleton_base; module_area_timeout() { } public: void on_enter(std::shared_ptr card_ptr,std::shared_ptr&c,double speed) { //c->m_is_area_over_time_person=false; } void on_hover(std::shared_ptr card_ptr,std::shared_ptr&c,double speed, std::map>& ev_map) { auto area_ptr = c->m_area; //int seconds = tool_time::elapse_seconds(c->m_enter_time); // if(seconds > area_ptr->m_limit_time_second)//发生告警 // { // auto ev_ptr = tool_other::find_event(card_ptr->m_id, ET_CARD_AREA_OVER_TIME_PERSON, ev_map); // if(ev_ptr) // { // ev_ptr->m_limit_value=area_ptr->m_limit_time_second; // ev_ptr->m_cur_value=seconds; // } // else//从没有告警状态转化为告警状态 // { // c->m_is_area_over_time_person=true;//发生告警 // auto ev_ptr = tool_other::create_event(OT_CARD, card_ptr->m_id, ET_CARD_AREA_OVER_TIME_PERSON); // tool_other::copy_event(card_ptr, ev_ptr); // ev_ptr->m_limit_value = area_ptr->m_limit_time_second; // ev_ptr->m_cur_value = seconds; // //保存到数据库 // tool_db::save_event(ev_ptr); // tool_other::insert_event(ev_ptr, ev_map); // } // } // else // { // if(c->m_is_area_over_time_person) // { // c->m_is_area_over_time_person = false; // auto ev_ptr = tool_other::find_event(card_ptr->m_id, ET_CARD_AREA_OVER_TIME_PERSON, ev_map); // if(ev_ptr) // { // ev_ptr->m_status = ES_END; // ev_ptr->m_limit_value = area_ptr->m_limit_time_second; // ev_ptr->m_cur_value = seconds; // ev_ptr->m_cur_time = std::chrono::system_clock::now(); // //保存到数据库 // tool_db::save_event(ev_ptr); // } // } // } } void on_leave(std::shared_ptr card_ptr,std::shared_ptr&c,double speed) { } }; typedef std::shared_ptr module_area_timeout_ptr; #endif // MODULE_AREA_TIMEOUT_H