|
@@ -36,7 +36,8 @@ void area_business_car_attendance::on_enter(const std::shared_ptr<area_hover>&ar
|
|
|
|
|
|
//save_attendance(card_ptr, area_hover_ptr);
|
|
|
auto mine_tool_ptr = card_ptr->get_mine_tool();
|
|
|
- if(!mine_tool_ptr->m_is_attendance)
|
|
|
+ if(!mine_tool_ptr->m_is_attendance
|
|
|
+ || !is_attendance_area(area_hover_ptr->m_area->m_id, card_ptr->get_vehicle_type_id()))
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
@@ -73,7 +74,8 @@ void area_business_car_attendance::on_leave(const std::shared_ptr<area_hover>&ar
|
|
|
|
|
|
//没在考勤状态转换为考勤状态
|
|
|
auto mine_tool_ptr = card_ptr->get_mine_tool();
|
|
|
- if(!mine_tool_ptr->m_is_attendance)
|
|
|
+ if(!mine_tool_ptr->m_is_attendance
|
|
|
+ && is_attendance_area(area_hover_ptr->m_area->m_id, card_ptr->get_vehicle_type_id()))
|
|
|
{
|
|
|
//考勤开始
|
|
|
mine_tool_ptr->m_is_attendance = true;
|
|
@@ -86,5 +88,41 @@ void area_business_car_attendance::on_leave(const std::shared_ptr<area_hover>&ar
|
|
|
// card_ptr->m_id, card_ptr->m_type,
|
|
|
// area_ptr->m_id,mine_tool_ptr->m_stat_attendance);
|
|
|
}
|
|
|
+}
|
|
|
|
|
|
+void area_business_car_attendance::init_attendance_area_from_db()
|
|
|
+{
|
|
|
+ const char *sql = "select a.area_id, a.att_rule_id, vt.vehicle_type_id \
|
|
|
+ from dat_att_rule_area a, dat_att_rule_vehicle_type vt, dat_att_rule r\
|
|
|
+ where a.att_rule_id=vt.att_rule_id and a.att_rule_id=r.att_rule_id;";
|
|
|
+ std::string Error;
|
|
|
+ YADB::CDBResultSet DBRes;
|
|
|
+ sDBConnPool.Query(sql,DBRes,Error);
|
|
|
+ if(!Error.empty())
|
|
|
+ log_error("初始化attendance_area Error,%s",Error.c_str());
|
|
|
+ uint64_t nCount = DBRes.GetRecordCount( Error );
|
|
|
+ if(int64_t(nCount) <= 0)
|
|
|
+ {
|
|
|
+ log_error("初始化attendance_area Error,%s",Error.c_str());
|
|
|
+ }
|
|
|
+
|
|
|
+ log_info( "init_attendance_area_from_db. The record count=%ld\n", nCount );
|
|
|
+
|
|
|
+ m_map.clear();
|
|
|
+ while ( DBRes.GetNextRecod(Error) )
|
|
|
+ {
|
|
|
+ int area_id = 0;
|
|
|
+ DBRes.GetField( "area_id",area_id, Error );
|
|
|
+
|
|
|
+ int att_rule_id = 0;
|
|
|
+ DBRes.GetField( "att_rule_id",att_rule_id, Error );
|
|
|
+
|
|
|
+ int vehicle_type_id = 0;
|
|
|
+ DBRes.GetField( "vehicle_type_id",vehicle_type_id, Error );
|
|
|
+
|
|
|
+ m_map.insert(std::make_pair(to_list_id(area_id, vehicle_type_id), att_rule_id));
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
+std::unordered_map<uint64_t, int> area_business_car_attendance::m_map;
|
|
|
+
|