1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
| -- 访客登记核心业务 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'
| );
|
|