select record_id, register_no, visitor_name, id_card, register_type, interviewee_name, coalesce( ( select d.dept_name from t_employee e inner join sys_dept d on d.dept_id = e.dept_id and d.del_flag = '0' where e.employee_name = t_visitor_record.interviewee_name and e.del_flag = '0' order by e.employee_id limit 1 ), nullif(interviewee_dept, '') ) as interviewee_dept, receiver_name, receiver_verify_method, visit_area_ids, coalesce( ( select group_concat(a.area_name order by find_in_set(a.area_id, t_visitor_record.visit_area_ids) separator ',') from t_visit_area a where a.del_flag = '0' and find_in_set(a.area_id, t_visitor_record.visit_area_ids) ), nullif(visit_area_names, '') ) as visit_area_names, plate_no, visit_reason, valid_start_time, valid_end_time, status, register_time, register_source, face_image_url, sign_time, sign_receiver_name, sign_verify_method, sign_image_url, remark from t_visitor_record and del_flag = '0' and interviewee_name like concat('%', #{query.intervieweeName}, '%') and interviewee_name like concat('%', #{query.intervieweeKeyword}, '%') and interviewee_dept = #{query.intervieweeDept} and find_in_set(#{query.areaId}, visit_area_ids) and visit_area_names like concat('%', #{query.visitAreaKeyword}, '%') and valid_end_time >= #{query.validStartTime} and valid_start_time <= #{query.validEndTime} and status = #{query.status} and visitor_name like concat('%', #{query.visitorName}, '%') and ( visitor_name like concat('%', #{query.visitorKeyword}, '%') or id_card like concat('%', #{query.visitorKeyword}, '%') ) and visit_reason like concat('%', #{query.visitReason}, '%') and register_type = #{query.registerType} order by register_time desc, record_id desc update t_visitor_record set status = 'OVERDUE_AUTO_SIGNED_OUT', sign_time = date_sub(date_add(date(valid_end_time), interval 1 day), interval 1 second), sign_verify_method = 'AUTO', update_by = 'system', update_time = sysdate() where del_flag = '0' and status in ('VISITING', 'PENDING_CONFIRM') and valid_end_time is not null and date_add(date(valid_end_time), interval 1 day) <= #{now} update t_visitor_record set status = 'PENDING_CONFIRM', update_time = sysdate() where del_flag = '0' and status = 'VISITING' and valid_end_time is not null and valid_end_time < #{now} and date_add(date(valid_end_time), interval 1 day) > #{now} update t_visitor_record set del_flag = '1', update_by = #{updateBy}, update_time = sysdate() where del_flag = '0' and record_id in #{recordId} insert into t_visitor_record middle_platform_id, register_no, visitor_name, id_card, register_type, interviewee_name, receiver_verify_method, visit_area_ids, plate_no, visit_reason, valid_start_time, valid_end_time, status, register_time, face_image_url, del_flag, receiver_name, create_time values #{middlePlatformId}, #{registerNo}, #{visitorName}, #{idCard}, #{registerType}, #{intervieweeName}, #{receiverVerifyMethod}, #{visitAreaIds}, #{plateNo}, #{visitReason}, #{validStartTime}, #{validEndTime}, #{status}, #{registerTime}, #{faceImageUrl}, #{delFlag}, #{receiverName}, now()