-- 访客登记核心业务 mock 数据 -- 执行前请先创建:t_visit_area、t_door_device、t_visitor_record、t_visitor_pass_record -- 1. mock 访问区域 SET @mock_root_id := ( SELECT area_id FROM t_visit_area WHERE area_code = 'MOCK_VISITOR_ROOT' AND del_flag = '0' LIMIT 1 ); INSERT INTO t_visit_area ( parent_id, ancestors, area_code, area_name, area_desc, order_num, create_by, create_time ) SELECT 0, '0', 'MOCK_VISITOR_ROOT', '访客中心', '访客登记 mock 根区域', 900, 'mock', sysdate() WHERE @mock_root_id IS NULL; SET @mock_root_id := ( SELECT area_id FROM t_visit_area WHERE area_code = 'MOCK_VISITOR_ROOT' AND del_flag = '0' LIMIT 1 ); INSERT INTO t_visit_area ( parent_id, ancestors, area_code, area_name, area_desc, order_num, create_by, create_time ) SELECT @mock_root_id, concat('0,', @mock_root_id), 'MOCK_AREA_A', 'A区域', '访客可访问区域A', 901, 'mock', sysdate() WHERE NOT EXISTS ( SELECT 1 FROM t_visit_area WHERE area_code = 'MOCK_AREA_A' AND del_flag = '0' ); INSERT INTO t_visit_area ( parent_id, ancestors, area_code, area_name, area_desc, order_num, create_by, create_time ) SELECT @mock_root_id, concat('0,', @mock_root_id), 'MOCK_AREA_B', 'B区域', '访客可访问区域B', 902, 'mock', sysdate() WHERE NOT EXISTS ( SELECT 1 FROM t_visit_area WHERE area_code = 'MOCK_AREA_B' AND del_flag = '0' ); INSERT INTO t_visit_area ( parent_id, ancestors, area_code, area_name, area_desc, order_num, create_by, create_time ) SELECT @mock_root_id, concat('0,', @mock_root_id), 'MOCK_AREA_C', 'C区域', '访客可访问区域C', 903, 'mock', sysdate() WHERE NOT EXISTS ( SELECT 1 FROM t_visit_area WHERE area_code = 'MOCK_AREA_C' AND del_flag = '0' ); SET @mock_area_a_id := ( SELECT area_id FROM t_visit_area WHERE area_code = 'MOCK_AREA_A' AND del_flag = '0' LIMIT 1 ); SET @mock_area_b_id := ( SELECT area_id FROM t_visit_area WHERE area_code = 'MOCK_AREA_B' AND del_flag = '0' LIMIT 1 ); SET @mock_area_c_id := ( SELECT area_id FROM t_visit_area WHERE area_code = 'MOCK_AREA_C' AND del_flag = '0' LIMIT 1 ); -- 2. mock 门禁设备 INSERT INTO t_door_device ( area_id, device_name, brand, device_id, enabled, online_status, remark, create_by, create_time ) SELECT @mock_area_a_id, '东门', '智升', 'MOCK-DOOR-EAST', 1, 'ONLINE', '访客登记 mock 门禁设备', 'mock', sysdate() WHERE NOT EXISTS ( SELECT 1 FROM t_door_device WHERE device_id = 'MOCK-DOOR-EAST' AND del_flag = '0' ); INSERT INTO t_door_device ( area_id, device_name, brand, device_id, enabled, online_status, remark, create_by, create_time ) SELECT @mock_area_b_id, '西门', '智升', 'MOCK-DOOR-WEST', 1, 'ONLINE', '访客登记 mock 门禁设备', 'mock', sysdate() WHERE NOT EXISTS ( SELECT 1 FROM t_door_device WHERE device_id = 'MOCK-DOOR-WEST' AND del_flag = '0' ); INSERT INTO t_door_device ( area_id, device_name, brand, device_id, enabled, online_status, remark, create_by, create_time ) SELECT @mock_area_c_id, '北门', '海康', 'MOCK-DOOR-NORTH', 1, 'OFFLINE', '访客登记 mock 门禁设备', 'mock', sysdate() WHERE NOT EXISTS ( SELECT 1 FROM t_door_device WHERE device_id = 'MOCK-DOOR-NORTH' AND del_flag = '0' ); -- 3. mock 访客登记记录 INSERT INTO t_visitor_record ( register_no, visitor_name, id_card, register_type, interviewee_name, interviewee_dept, receiver_name, receiver_verify_method, visit_area_ids, 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, create_by, create_time, remark ) SELECT 'VR202607060001', '王琦', '510101199201011254', 'APPOINTMENT', '王明明', '行政接待部', '李维', 'FACE', concat(@mock_area_a_id, ',', @mock_area_b_id), 'A区域,B区域', '川A104515', '业务访谈', '2026-07-06 09:00:00', '2026-07-06 18:00:00', 'VISITING', '2026-07-06 08:45:00', '登记人像采集', '/mock/visitor/wangqi.jpg', null, null, null, null, 'mock', sysdate(), '来访中,允许访问A区域和B区域' WHERE NOT EXISTS ( SELECT 1 FROM t_visitor_record WHERE register_no = 'VR202607060001' AND del_flag = '0' ); INSERT INTO t_visitor_record ( register_no, visitor_name, id_card, register_type, interviewee_name, interviewee_dept, receiver_name, receiver_verify_method, visit_area_ids, 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, create_by, create_time, remark ) SELECT 'VR202607060002', '李红', '510101198908181254', 'ONSITE', '张心', '部门名称1', '李维', 'CARD', cast(@mock_area_a_id as char), 'A区域', '川AF48SD1', '拜访', '2026-07-06 10:00:00', '2026-07-06 12:00:00', 'PENDING_CONFIRM', '2026-07-06 09:52:00', '访客机现场登记', '/mock/visitor/lihong.jpg', null, null, null, null, 'mock', sysdate(), '超过有效期未签离,等待接待人确认' WHERE NOT EXISTS ( SELECT 1 FROM t_visitor_record WHERE register_no = 'VR202607060002' AND del_flag = '0' ); INSERT INTO t_visitor_record ( register_no, visitor_name, id_card, register_type, interviewee_name, interviewee_dept, receiver_name, receiver_verify_method, visit_area_ids, 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, create_by, create_time, remark ) SELECT 'VR202607060003', '赵刚', '510101199506061111', 'APPOINTMENT', '王明明', '行政接待部', '李维', 'FACE', cast(@mock_area_b_id as char), 'B区域', '川B77889', '会议', '2026-07-06 09:30:00', '2026-07-06 11:30:00', 'SIGNED_OUT', '2026-07-06 09:18:00', '登记人像采集', '/mock/visitor/zhaogang.jpg', '2026-07-06 11:20:00', '李维', 'FACE', '/mock/sign/zhaogang.jpg', 'mock', sysdate(), '正常签离' WHERE NOT EXISTS ( SELECT 1 FROM t_visitor_record WHERE register_no = 'VR202607060003' AND del_flag = '0' ); INSERT INTO t_visitor_record ( register_no, visitor_name, id_card, register_type, interviewee_name, interviewee_dept, receiver_name, receiver_verify_method, visit_area_ids, 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, create_by, create_time, remark ) SELECT 'VR202607060004', '陈晨', '510101199703071234', 'APPOINTMENT', '李维', '综合管理部', '李维', 'MANUAL', cast(@mock_area_c_id as char), 'C区域', '川C55661', '业务访谈', '2026-07-05 14:00:00', '2026-07-05 16:00:00', 'OVERDUE_AUTO_SIGNED_OUT', '2026-07-05 13:42:00', '登记人像采集', '/mock/visitor/chenchen.jpg', '2026-07-05 23:59:59', '系统', 'MANUAL', '/mock/sign/chenchen.jpg', 'mock', sysdate(), '超期未签离,系统自动签离' WHERE NOT EXISTS ( SELECT 1 FROM t_visitor_record WHERE register_no = 'VR202607060004' AND del_flag = '0' ); INSERT INTO t_visitor_record ( register_no, visitor_name, id_card, register_type, interviewee_name, interviewee_dept, receiver_name, receiver_verify_method, visit_area_ids, 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, create_by, create_time, remark ) SELECT 'VR202607060005', '周琳', '510101199912123333', 'APPOINTMENT', '张心', '部门名称1', '张心', 'FACE', concat(@mock_area_a_id, ',', @mock_area_c_id), 'A区域,C区域', null, '其他', '2026-07-07 09:00:00', '2026-07-07 12:00:00', 'CANCELLED', '2026-07-06 15:30:00', '后台预约', '/mock/visitor/zhoulin.jpg', null, null, null, null, 'mock', sysdate(), '访客取消预约' WHERE NOT EXISTS ( SELECT 1 FROM t_visitor_record WHERE register_no = 'VR202607060005' AND del_flag = '0' ); INSERT INTO t_visitor_record ( register_no, visitor_name, id_card, register_type, interviewee_name, interviewee_dept, receiver_name, receiver_verify_method, visit_area_ids, 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, create_by, create_time, remark ) SELECT concat('VR20260706', lpad(seq.seq, 4, '0')), seq.visitor_name, seq.id_card, seq.register_type, seq.interviewee_name, seq.interviewee_dept, seq.receiver_name, seq.verify_method, seq.area_ids, seq.area_names, seq.plate_no, seq.reason, seq.valid_start_time, seq.valid_end_time, seq.status, seq.register_time, seq.source, seq.face_url, seq.sign_time, seq.sign_receiver, seq.sign_method, seq.sign_url, 'mock', sysdate(), seq.remark FROM ( SELECT 6 seq, '孙强' visitor_name, '510101198701018888' id_card, 'ONSITE' register_type, '王明明' interviewee_name, '行政接待部' interviewee_dept, '李维' receiver_name, 'CARD' verify_method, cast(@mock_area_a_id as char) area_ids, 'A区域' area_names, '川D66221' plate_no, '拜访' reason, '2026-07-06 13:30:00' valid_start_time, '2026-07-06 17:30:00' valid_end_time, 'VISITING' status, '2026-07-06 13:20:00' register_time, '访客机现场登记' source, '/mock/visitor/sunqiang.jpg' face_url, null sign_time, null sign_receiver, null sign_method, null sign_url, '现场登记来访中' remark UNION ALL SELECT 7, '何敏', '510101199110109999', 'APPOINTMENT', '张心', '部门名称1', '张心', 'FACE', concat(@mock_area_b_id, ',', @mock_area_c_id), 'B区域,C区域', '川E99001', '业务访谈', '2026-07-06 08:30:00', '2026-07-06 10:30:00', 'SIGNED_OUT', '2026-07-06 08:10:00', '后台预约', '/mock/visitor/hemin.jpg', '2026-07-06 10:12:00', '张心', 'FACE', '/mock/sign/hemin.jpg', '已完成访问' UNION ALL SELECT 8, '刘洋', '510101199405052222', 'APPOINTMENT', '李维', '综合管理部', '李维', 'MANUAL', cast(@mock_area_c_id as char), 'C区域', null, '会议', '2026-07-04 15:00:00', '2026-07-04 17:00:00', 'OVERDUE_AUTO_SIGNED_OUT', '2026-07-04 14:35:00', '后台预约', '/mock/visitor/liuyang.jpg', '2026-07-04 23:59:59', '系统', 'MANUAL', '/mock/sign/liuyang.jpg', '超期自动签离' UNION ALL SELECT 9, '吴芳', '510101199612126666', 'ONSITE', '王明明', '行政接待部', '李维', 'FACE', cast(@mock_area_b_id as char), 'B区域', '川F12888', '其他', '2026-07-06 11:00:00', '2026-07-06 12:00:00', 'PENDING_CONFIRM', '2026-07-06 10:56:00', '访客机现场登记', '/mock/visitor/wufang.jpg', null, null, null, null, '逾期滞留,等待确认' UNION ALL SELECT 10, '郑宇', '510101199003033210', 'APPOINTMENT', '张心', '部门名称1', '张心', 'CARD', concat(@mock_area_a_id, ',', @mock_area_b_id), 'A区域,B区域', '川G56321', '业务访谈', '2026-07-08 09:00:00', '2026-07-08 18:00:00', 'CANCELLED', '2026-07-06 16:12:00', '后台预约', '/mock/visitor/zhengyu.jpg', null, null, null, null, '预约取消' ) seq WHERE NOT EXISTS ( SELECT 1 FROM t_visitor_record WHERE register_no = concat('VR20260706', lpad(seq.seq, 4, '0')) AND del_flag = '0' ); -- 4. mock 进出场明细 SET @record_001 := (SELECT record_id FROM t_visitor_record WHERE register_no = 'VR202607060001' AND del_flag = '0' LIMIT 1); SET @record_002 := (SELECT record_id FROM t_visitor_record WHERE register_no = 'VR202607060002' AND del_flag = '0' LIMIT 1); SET @record_003 := (SELECT record_id FROM t_visitor_record WHERE register_no = 'VR202607060003' AND del_flag = '0' LIMIT 1); SET @record_004 := (SELECT record_id FROM t_visitor_record WHERE register_no = 'VR202607060004' AND del_flag = '0' LIMIT 1); SET @record_006 := (SELECT record_id FROM t_visitor_record WHERE register_no = 'VR202607060006' AND del_flag = '0' LIMIT 1); SET @record_007 := (SELECT record_id FROM t_visitor_record WHERE register_no = 'VR202607060007' AND del_flag = '0' LIMIT 1); SET @record_008 := (SELECT record_id FROM t_visitor_record WHERE register_no = 'VR202607060008' AND del_flag = '0' LIMIT 1); SET @record_009 := (SELECT record_id FROM t_visitor_record WHERE register_no = 'VR202607060009' AND del_flag = '0' LIMIT 1); INSERT INTO t_visitor_pass_record ( record_id, pass_type, pass_time, door_device_name, door_device_code, capture_image_url, create_by, create_time ) SELECT @record_001, 'IN', '2026-07-06 09:05:12', '东门', 'MOCK-DOOR-EAST', '/mock/capture/vr001-in.jpg', 'mock', sysdate() WHERE @record_001 IS NOT NULL AND NOT EXISTS ( SELECT 1 FROM t_visitor_pass_record WHERE record_id = @record_001 AND pass_type = 'IN' AND pass_time = '2026-07-06 09:05:12' AND del_flag = '0' ); INSERT INTO t_visitor_pass_record ( record_id, pass_type, pass_time, door_device_name, door_device_code, capture_image_url, create_by, create_time ) SELECT @record_001, 'IN', '2026-07-06 12:15:12', '东门', 'MOCK-DOOR-EAST', '/mock/capture/vr001-in-2.jpg', 'mock', sysdate() WHERE @record_001 IS NOT NULL AND NOT EXISTS ( SELECT 1 FROM t_visitor_pass_record WHERE record_id = @record_001 AND pass_type = 'IN' AND pass_time = '2026-07-06 12:15:12' AND del_flag = '0' ); INSERT INTO t_visitor_pass_record ( record_id, pass_type, pass_time, door_device_name, door_device_code, capture_image_url, create_by, create_time ) SELECT @record_002, 'IN', '2026-07-06 10:03:05', '东门', 'MOCK-DOOR-EAST', '/mock/capture/vr002-in.jpg', 'mock', sysdate() WHERE @record_002 IS NOT NULL AND NOT EXISTS ( SELECT 1 FROM t_visitor_pass_record WHERE record_id = @record_002 AND pass_type = 'IN' AND pass_time = '2026-07-06 10:03:05' AND del_flag = '0' ); INSERT INTO t_visitor_pass_record ( record_id, pass_type, pass_time, door_device_name, door_device_code, capture_image_url, create_by, create_time ) SELECT @record_003, 'IN', '2026-07-06 09:34:20', '西门', 'MOCK-DOOR-WEST', '/mock/capture/vr003-in.jpg', 'mock', sysdate() WHERE @record_003 IS NOT NULL AND NOT EXISTS ( SELECT 1 FROM t_visitor_pass_record WHERE record_id = @record_003 AND pass_type = 'IN' AND pass_time = '2026-07-06 09:34:20' AND del_flag = '0' ); INSERT INTO t_visitor_pass_record ( record_id, pass_type, pass_time, door_device_name, door_device_code, capture_image_url, create_by, create_time ) SELECT @record_003, 'OUT', '2026-07-06 11:18:40', '西门', 'MOCK-DOOR-WEST', '/mock/capture/vr003-out.jpg', 'mock', sysdate() WHERE @record_003 IS NOT NULL AND NOT EXISTS ( SELECT 1 FROM t_visitor_pass_record WHERE record_id = @record_003 AND pass_type = 'OUT' AND pass_time = '2026-07-06 11:18:40' AND del_flag = '0' ); INSERT INTO t_visitor_pass_record ( record_id, pass_type, pass_time, door_device_name, door_device_code, capture_image_url, create_by, create_time ) SELECT @record_004, 'IN', '2026-07-05 14:05:00', '北门', 'MOCK-DOOR-NORTH', '/mock/capture/vr004-in.jpg', 'mock', sysdate() WHERE @record_004 IS NOT NULL AND NOT EXISTS ( SELECT 1 FROM t_visitor_pass_record WHERE record_id = @record_004 AND pass_type = 'IN' AND pass_time = '2026-07-05 14:05:00' AND del_flag = '0' ); INSERT INTO t_visitor_pass_record ( record_id, pass_type, pass_time, door_device_name, door_device_code, capture_image_url, create_by, create_time ) SELECT @record_006, 'IN', '2026-07-06 13:34:10', '东门', 'MOCK-DOOR-EAST', '/mock/capture/vr006-in.jpg', 'mock', sysdate() WHERE @record_006 IS NOT NULL AND NOT EXISTS ( SELECT 1 FROM t_visitor_pass_record WHERE record_id = @record_006 AND pass_type = 'IN' AND pass_time = '2026-07-06 13:34:10' AND del_flag = '0' ); INSERT INTO t_visitor_pass_record ( record_id, pass_type, pass_time, door_device_name, door_device_code, capture_image_url, create_by, create_time ) SELECT @record_007, 'IN', '2026-07-06 08:33:21', '西门', 'MOCK-DOOR-WEST', '/mock/capture/vr007-in.jpg', 'mock', sysdate() WHERE @record_007 IS NOT NULL AND NOT EXISTS ( SELECT 1 FROM t_visitor_pass_record WHERE record_id = @record_007 AND pass_type = 'IN' AND pass_time = '2026-07-06 08:33:21' AND del_flag = '0' ); INSERT INTO t_visitor_pass_record ( record_id, pass_type, pass_time, door_device_name, door_device_code, capture_image_url, create_by, create_time ) SELECT @record_007, 'OUT', '2026-07-06 10:10:59', '西门', 'MOCK-DOOR-WEST', '/mock/capture/vr007-out.jpg', 'mock', sysdate() WHERE @record_007 IS NOT NULL AND NOT EXISTS ( SELECT 1 FROM t_visitor_pass_record WHERE record_id = @record_007 AND pass_type = 'OUT' AND pass_time = '2026-07-06 10:10:59' AND del_flag = '0' ); INSERT INTO t_visitor_pass_record ( record_id, pass_type, pass_time, door_device_name, door_device_code, capture_image_url, create_by, create_time ) SELECT @record_008, 'IN', '2026-07-04 15:06:28', '北门', 'MOCK-DOOR-NORTH', '/mock/capture/vr008-in.jpg', 'mock', sysdate() WHERE @record_008 IS NOT NULL AND NOT EXISTS ( SELECT 1 FROM t_visitor_pass_record WHERE record_id = @record_008 AND pass_type = 'IN' AND pass_time = '2026-07-04 15:06:28' AND del_flag = '0' ); INSERT INTO t_visitor_pass_record ( record_id, pass_type, pass_time, door_device_name, door_device_code, capture_image_url, create_by, create_time ) SELECT @record_009, 'IN', '2026-07-06 11:04:33', '西门', 'MOCK-DOOR-WEST', '/mock/capture/vr009-in.jpg', 'mock', sysdate() WHERE @record_009 IS NOT NULL AND NOT EXISTS ( SELECT 1 FROM t_visitor_pass_record WHERE record_id = @record_009 AND pass_type = 'IN' AND pass_time = '2026-07-06 11:04:33' AND del_flag = '0' );