Files
doorcontrol/base/RuoYi-Vue-master/sql/import_site_rooms_devices.sql
T
zfjia 271e4ca77c chore: 导入门锁迭代开发工程基线
包含 RuoYi-Vue 后端(ruoyi-iot 门禁模块)、RuoYi-Vue2 前端、设计文档与升级脚本。
忽略构建产物(target/node_modules/dist)、IDE 配置、运行日志与数据库转储。
2026-11-01 19:44:40 +08:00

458 lines
33 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =========================================================================
-- 现场基础数据导入:分组 / 网关 / 门锁 / 房间 / 门锁-网关归属(106 基地)
--
-- 数据来源:doc/锁-房间号对应表配置数据.xlsx
-- 62 间房 · 62 把锁 · 8 个网关 · 8 个分组(2 楼东/中/西、3 楼东/中/西、4 楼东/中)
--
-- 前置条件:已执行 lock.sql(lock_group/lock_gateway/lock_device)、
-- upgrade_d17_device_gateway.sql(lock_device_gateway)、
-- upgrade_d19_stay.sql(lock_room)。
--
-- 字段口径:
-- 1) 「锁ID」为 8 位门锁SN,写入 lock_device.device_sn;下发 locklist 时由代码补
-- CCEE 前缀成 12 位(并非库内存储值);
-- 2) 「分组」FFFA26102911…18 即 lock_group.group_code,与网关一一对应,同时也是
-- locklist 的组号(params[1]);网关按组号归入该分组;
-- 3) room_code = 分组编号-房号(如 FFFA26102911-3201),与对外接口约定一致;
-- 4) 「开门方向」(左开/右开)在表结构中没有对应字段,写入 lock_room.remark;
-- 5) 门锁密码、网关密码、固件版本、dev_type、人脸算法版本 Excel 未提供,保持为空
-- (下发时 devPsw 空值按 "0" 处理);人脸授权前需在门锁页补 face_algo_version;
-- 6) 归属关系初始 bind_status=0(待下发);若现场网关已按下表配好、不需再发
-- locklist,见脚本末尾的可选更新。
--
-- 幂等性:
-- - 分组/网关/门锁:按自然键判断,不存在则插入,已存在则对齐名称与归属字段;
-- - 归属关系:按 (device_id, gateway_id) 判断,已存在则不改(保留 bind_status 等运行态);
-- - 房间:按 room_code 判断,已存在则不动(保留房态与当前入住);
-- 若该门锁已被其它房间绑定(如 D19 按 room_no 回填过),同样跳过,避免 device_id 唯一键冲突;
-- 全程不删除任何数据,可重复执行。
--
-- 实现说明:
-- 1) 源数据以字面量派生表内联在各语句中,不使用临时表(临时表会继承连接默认排序规则
-- utf8mb4_0900_ai_ci,与业务表 utf8mb4_general_ci 比较时报 1267);
-- 2) 派生列与业务列比较处显式 collate utf8mb4_general_ci,避免连接默认排序规则
-- (MySQL 8 为 utf8mb4_0900_ai_ci)与业务表排序规则不一致再次触发 1267;
-- 3) 每条语句可独立执行,重复执行结果不变。
-- =========================================================================
set names utf8mb4;
-- =========================================================================
-- 1、分组(8):group_code 即 locklist 组号
-- =========================================================================
insert into lock_group (group_code, group_name, order_num, status, del_flag, create_by, create_time, remark)
select v.group_code, v.group_name, v.order_num, '0', '0', 'admin', now(), '现场配置导入'
from (
select 'FFFA26102911' as group_code, '2楼东侧' as group_name, 1 as order_num
union all select 'FFFA26102912', '2楼中间', 2
union all select 'FFFA26102913', '2楼西侧', 3
union all select 'FFFA26102914', '3楼东侧', 4
union all select 'FFFA26102915', '3楼中间', 5
union all select 'FFFA26102916', '3楼西侧', 6
union all select 'FFFA26102917', '4楼东侧', 7
union all select 'FFFA26102918', '4楼中间', 8
) v
where not exists (select 1 from lock_group g where g.group_code = v.group_code collate utf8mb4_general_ci);
update lock_group g
join (
select 'FFFA26102911' as group_code, '2楼东侧' as group_name, 1 as order_num
union all select 'FFFA26102912', '2楼中间', 2
union all select 'FFFA26102913', '2楼西侧', 3
union all select 'FFFA26102914', '3楼东侧', 4
union all select 'FFFA26102915', '3楼中间', 5
union all select 'FFFA26102916', '3楼西侧', 6
union all select 'FFFA26102917', '4楼东侧', 7
union all select 'FFFA26102918', '4楼中间', 8
) v on v.group_code collate utf8mb4_general_ci = g.group_code
set g.group_name = v.group_name,
g.order_num = v.order_num,
g.update_time = now();
-- =========================================================================
-- 2、网关(8):一个网关一个分组,网关SN即 MQTT 主题第 2 段
-- =========================================================================
insert into lock_gateway (gateway_sn, gateway_name, group_id, gateway_ip, status, del_flag, create_by, create_time, remark)
select v.gateway_sn, v.gateway_name, g.group_id, v.gateway_ip, '0', '0', 'admin', now(), '现场配置导入'
from (
select 'C846CEC8EB0B' as gateway_sn, '2楼东侧网关' as gateway_name, '192.168.1.181' as gateway_ip, 'FFFA26102911' as group_code
union all select '7EC81CB0381A', '2楼中间网关', '192.168.1.182', 'FFFA26102912'
union all select '33C574C47232', '2楼西侧网关', '192.168.1.183', 'FFFA26102913'
union all select '6F5B285A4C82', '3楼东侧网关', '192.168.1.184', 'FFFA26102914'
union all select '740655ADA09A', '3楼中间网关', '192.168.1.185', 'FFFA26102915'
union all select '971ED01FA2FA', '3楼西侧网关', '192.168.1.186', 'FFFA26102916'
union all select '3003368D0573', '4楼东侧网关', '192.168.1.187', 'FFFA26102917'
union all select 'B46995C2AAC1', '4楼中间网关', '192.168.1.188', 'FFFA26102918'
) v
join lock_group g on v.group_code collate utf8mb4_general_ci = g.group_code
where not exists (select 1 from lock_gateway w where w.gateway_sn = v.gateway_sn collate utf8mb4_general_ci);
update lock_gateway w
join (
select 'C846CEC8EB0B' as gateway_sn, '2楼东侧网关' as gateway_name, '192.168.1.181' as gateway_ip, 'FFFA26102911' as group_code
union all select '7EC81CB0381A', '2楼中间网关', '192.168.1.182', 'FFFA26102912'
union all select '33C574C47232', '2楼西侧网关', '192.168.1.183', 'FFFA26102913'
union all select '6F5B285A4C82', '3楼东侧网关', '192.168.1.184', 'FFFA26102914'
union all select '740655ADA09A', '3楼中间网关', '192.168.1.185', 'FFFA26102915'
union all select '971ED01FA2FA', '3楼西侧网关', '192.168.1.186', 'FFFA26102916'
union all select '3003368D0573', '4楼东侧网关', '192.168.1.187', 'FFFA26102917'
union all select 'B46995C2AAC1', '4楼中间网关', '192.168.1.188', 'FFFA26102918'
) v on v.gateway_sn collate utf8mb4_general_ci = w.gateway_sn
join lock_group g on v.group_code collate utf8mb4_general_ci = g.group_code
set w.gateway_name = v.gateway_name,
w.gateway_ip = v.gateway_ip,
w.group_id = g.group_id,
w.update_time = now();
-- =========================================================================
-- 3、门锁(62):device_sn 为 8 位锁SN;gateway_id/group_id 为主控网关缓存
-- (事实源是第 4 段的 lock_device_gateway)
-- =========================================================================
insert into lock_device (device_sn, device_name, gateway_id, group_id, room_no, bind_time, status, del_flag, create_by, create_time)
select v.lock_sn, v.room_no, w.gateway_id, w.group_id, v.room_no, now(), '0', '0', 'admin', now()
from (
select '80745D95' as lock_sn, '3201' as room_no, 2 as floor, '左开' as door_dir, 'C846CEC8EB0B' as gateway_sn, 'FFFA26102911' as group_code
union all select '80745D6F', '3202', 2, '右开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745DA3', '3203', 2, '左开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745D78', '3204', 2, '右开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745D89', '3205', 2, '左开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745D93', '3206', 2, '左开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745D75', '3207', 2, '右开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745D9A', '3208', 2, '左开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745D99', '3209', 2, '左开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D73', '3210', 2, '右开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D9F', '3211', 2, '左开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D92', '3212', 2, '左开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D7A', '3213', 2, '右开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D8E', '3214', 2, '左开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745DA7', '3215', 2, '左开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D86', '3216', 2, '右开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D72', '3217', 2, '右开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745DA8', '3218', 2, '左开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D90', '3219', 2, '左开', '33C574C47232', 'FFFA26102913'
union all select '80745D77', '3220', 2, '右开', '33C574C47232', 'FFFA26102913'
union all select '80745D76', '3221', 2, '右开', '33C574C47232', 'FFFA26102913'
union all select '80745D96', '3222', 2, '左开', '33C574C47232', 'FFFA26102913'
union all select '80745D7B', '3223', 2, '右开', '33C574C47232', 'FFFA26102913'
union all select '80745DA4', '3224', 2, '左开', '33C574C47232', 'FFFA26102913'
union all select '80745D7E', '3225', 2, '右开', '33C574C47232', 'FFFA26102913'
union all select '80745D9C', '3301', 3, '左开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745D71', '3302', 3, '右开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745DA2', '3303', 3, '左开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745D82', '3304', 3, '右开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745DAA', '3305', 3, '左开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745D8D', '3306', 3, '左开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745D7F', '3307', 3, '右开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745D97', '3308', 3, '左开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745D8A', '3309', 3, '左开', '740655ADA09A', 'FFFA26102915'
union all select '80745D6E', '3310', 3, '右开', '740655ADA09A', 'FFFA26102915'
union all select '80745D9B', '3311', 3, '左开', '740655ADA09A', 'FFFA26102915'
union all select '80745D94', '3312', 3, '左开', '740655ADA09A', 'FFFA26102915'
union all select '80745D84', '3313', 3, '右开', '740655ADA09A', 'FFFA26102915'
union all select '80745D9D', '3314', 3, '左开', '740655ADA09A', 'FFFA26102915'
union all select '80745D6A', '3315', 3, '左开', '740655ADA09A', 'FFFA26102915'
union all select '80745D7D', '3316', 3, '右开', '740655ADA09A', 'FFFA26102915'
union all select '80745D70', '3317', 3, '右开', '740655ADA09A', 'FFFA26102915'
union all select '80745DA5', '3318', 3, '左开', '740655ADA09A', 'FFFA26102915'
union all select '80745D8C', '3319', 3, '左开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745D74', '3320', 3, '右开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745D6D', '3321', 3, '右开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745D8B', '3322', 3, '左开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745D6C', '3323', 3, '右开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745D98', '3324', 3, '左开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745D88', '3325', 3, '右开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745DAB', '3401', 4, '左开', '3003368D0573', 'FFFA26102917'
union all select '80745D87', '3402', 4, '右开', '3003368D0573', 'FFFA26102917'
union all select '80745D8F', '3403', 4, '右开', '3003368D0573', 'FFFA26102917'
union all select '80745DA1', '3404', 4, '左开', '3003368D0573', 'FFFA26102917'
union all select '80745DA9', '3405', 4, '左开', '3003368D0573', 'FFFA26102917'
union all select '80745D91', '3406', 4, '左开', 'B46995C2AAC1', 'FFFA26102918'
union all select '80745D6B', '3407', 4, '右开', 'B46995C2AAC1', 'FFFA26102918'
union all select '80745DA6', '3408', 4, '左开', 'B46995C2AAC1', 'FFFA26102918'
union all select '80745D81', '3409', 4, '右开', 'B46995C2AAC1', 'FFFA26102918'
union all select '80745D9E', '3410', 4, '左开', 'B46995C2AAC1', 'FFFA26102918'
union all select '80745D83', '3411', 4, '右开', 'B46995C2AAC1', 'FFFA26102918'
union all select '80745DA0', '3412', 4, '左开', 'B46995C2AAC1', 'FFFA26102918'
) v
join lock_gateway w on v.gateway_sn collate utf8mb4_general_ci = w.gateway_sn
where not exists (select 1 from lock_device d where d.device_sn = v.lock_sn collate utf8mb4_general_ci);
update lock_device d
join (
select '80745D95' as lock_sn, '3201' as room_no, 2 as floor, '左开' as door_dir, 'C846CEC8EB0B' as gateway_sn, 'FFFA26102911' as group_code
union all select '80745D6F', '3202', 2, '右开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745DA3', '3203', 2, '左开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745D78', '3204', 2, '右开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745D89', '3205', 2, '左开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745D93', '3206', 2, '左开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745D75', '3207', 2, '右开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745D9A', '3208', 2, '左开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745D99', '3209', 2, '左开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D73', '3210', 2, '右开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D9F', '3211', 2, '左开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D92', '3212', 2, '左开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D7A', '3213', 2, '右开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D8E', '3214', 2, '左开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745DA7', '3215', 2, '左开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D86', '3216', 2, '右开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D72', '3217', 2, '右开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745DA8', '3218', 2, '左开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D90', '3219', 2, '左开', '33C574C47232', 'FFFA26102913'
union all select '80745D77', '3220', 2, '右开', '33C574C47232', 'FFFA26102913'
union all select '80745D76', '3221', 2, '右开', '33C574C47232', 'FFFA26102913'
union all select '80745D96', '3222', 2, '左开', '33C574C47232', 'FFFA26102913'
union all select '80745D7B', '3223', 2, '右开', '33C574C47232', 'FFFA26102913'
union all select '80745DA4', '3224', 2, '左开', '33C574C47232', 'FFFA26102913'
union all select '80745D7E', '3225', 2, '右开', '33C574C47232', 'FFFA26102913'
union all select '80745D9C', '3301', 3, '左开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745D71', '3302', 3, '右开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745DA2', '3303', 3, '左开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745D82', '3304', 3, '右开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745DAA', '3305', 3, '左开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745D8D', '3306', 3, '左开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745D7F', '3307', 3, '右开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745D97', '3308', 3, '左开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745D8A', '3309', 3, '左开', '740655ADA09A', 'FFFA26102915'
union all select '80745D6E', '3310', 3, '右开', '740655ADA09A', 'FFFA26102915'
union all select '80745D9B', '3311', 3, '左开', '740655ADA09A', 'FFFA26102915'
union all select '80745D94', '3312', 3, '左开', '740655ADA09A', 'FFFA26102915'
union all select '80745D84', '3313', 3, '右开', '740655ADA09A', 'FFFA26102915'
union all select '80745D9D', '3314', 3, '左开', '740655ADA09A', 'FFFA26102915'
union all select '80745D6A', '3315', 3, '左开', '740655ADA09A', 'FFFA26102915'
union all select '80745D7D', '3316', 3, '右开', '740655ADA09A', 'FFFA26102915'
union all select '80745D70', '3317', 3, '右开', '740655ADA09A', 'FFFA26102915'
union all select '80745DA5', '3318', 3, '左开', '740655ADA09A', 'FFFA26102915'
union all select '80745D8C', '3319', 3, '左开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745D74', '3320', 3, '右开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745D6D', '3321', 3, '右开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745D8B', '3322', 3, '左开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745D6C', '3323', 3, '右开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745D98', '3324', 3, '左开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745D88', '3325', 3, '右开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745DAB', '3401', 4, '左开', '3003368D0573', 'FFFA26102917'
union all select '80745D87', '3402', 4, '右开', '3003368D0573', 'FFFA26102917'
union all select '80745D8F', '3403', 4, '右开', '3003368D0573', 'FFFA26102917'
union all select '80745DA1', '3404', 4, '左开', '3003368D0573', 'FFFA26102917'
union all select '80745DA9', '3405', 4, '左开', '3003368D0573', 'FFFA26102917'
union all select '80745D91', '3406', 4, '左开', 'B46995C2AAC1', 'FFFA26102918'
union all select '80745D6B', '3407', 4, '右开', 'B46995C2AAC1', 'FFFA26102918'
union all select '80745DA6', '3408', 4, '左开', 'B46995C2AAC1', 'FFFA26102918'
union all select '80745D81', '3409', 4, '右开', 'B46995C2AAC1', 'FFFA26102918'
union all select '80745D9E', '3410', 4, '左开', 'B46995C2AAC1', 'FFFA26102918'
union all select '80745D83', '3411', 4, '右开', 'B46995C2AAC1', 'FFFA26102918'
union all select '80745DA0', '3412', 4, '左开', 'B46995C2AAC1', 'FFFA26102918'
) v on v.lock_sn collate utf8mb4_general_ci = d.device_sn
join lock_gateway w on v.gateway_sn collate utf8mb4_general_ci = w.gateway_sn
set d.device_name = v.room_no,
d.room_no = v.room_no,
d.gateway_id = w.gateway_id,
d.group_id = w.group_id,
d.update_time = now();
-- =========================================================================
-- 4、门锁-网关归属(62):bind_status=0 待下发,在线状态未知
-- 已存在的关系不覆盖,保留平台运行中回写的 bind_status / 信号 / 在线状态
-- =========================================================================
insert into lock_device_gateway (device_id, gateway_id, online_status, bind_status, bind_time, status, del_flag, create_by, create_time, remark)
select d.device_id, w.gateway_id, '2', '0', now(), '0', '0', 'admin', now(), '现场配置导入'
from (
select '80745D95' as lock_sn, '3201' as room_no, 2 as floor, '左开' as door_dir, 'C846CEC8EB0B' as gateway_sn, 'FFFA26102911' as group_code
union all select '80745D6F', '3202', 2, '右开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745DA3', '3203', 2, '左开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745D78', '3204', 2, '右开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745D89', '3205', 2, '左开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745D93', '3206', 2, '左开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745D75', '3207', 2, '右开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745D9A', '3208', 2, '左开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745D99', '3209', 2, '左开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D73', '3210', 2, '右开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D9F', '3211', 2, '左开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D92', '3212', 2, '左开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D7A', '3213', 2, '右开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D8E', '3214', 2, '左开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745DA7', '3215', 2, '左开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D86', '3216', 2, '右开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D72', '3217', 2, '右开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745DA8', '3218', 2, '左开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D90', '3219', 2, '左开', '33C574C47232', 'FFFA26102913'
union all select '80745D77', '3220', 2, '右开', '33C574C47232', 'FFFA26102913'
union all select '80745D76', '3221', 2, '右开', '33C574C47232', 'FFFA26102913'
union all select '80745D96', '3222', 2, '左开', '33C574C47232', 'FFFA26102913'
union all select '80745D7B', '3223', 2, '右开', '33C574C47232', 'FFFA26102913'
union all select '80745DA4', '3224', 2, '左开', '33C574C47232', 'FFFA26102913'
union all select '80745D7E', '3225', 2, '右开', '33C574C47232', 'FFFA26102913'
union all select '80745D9C', '3301', 3, '左开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745D71', '3302', 3, '右开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745DA2', '3303', 3, '左开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745D82', '3304', 3, '右开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745DAA', '3305', 3, '左开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745D8D', '3306', 3, '左开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745D7F', '3307', 3, '右开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745D97', '3308', 3, '左开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745D8A', '3309', 3, '左开', '740655ADA09A', 'FFFA26102915'
union all select '80745D6E', '3310', 3, '右开', '740655ADA09A', 'FFFA26102915'
union all select '80745D9B', '3311', 3, '左开', '740655ADA09A', 'FFFA26102915'
union all select '80745D94', '3312', 3, '左开', '740655ADA09A', 'FFFA26102915'
union all select '80745D84', '3313', 3, '右开', '740655ADA09A', 'FFFA26102915'
union all select '80745D9D', '3314', 3, '左开', '740655ADA09A', 'FFFA26102915'
union all select '80745D6A', '3315', 3, '左开', '740655ADA09A', 'FFFA26102915'
union all select '80745D7D', '3316', 3, '右开', '740655ADA09A', 'FFFA26102915'
union all select '80745D70', '3317', 3, '右开', '740655ADA09A', 'FFFA26102915'
union all select '80745DA5', '3318', 3, '左开', '740655ADA09A', 'FFFA26102915'
union all select '80745D8C', '3319', 3, '左开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745D74', '3320', 3, '右开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745D6D', '3321', 3, '右开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745D8B', '3322', 3, '左开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745D6C', '3323', 3, '右开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745D98', '3324', 3, '左开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745D88', '3325', 3, '右开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745DAB', '3401', 4, '左开', '3003368D0573', 'FFFA26102917'
union all select '80745D87', '3402', 4, '右开', '3003368D0573', 'FFFA26102917'
union all select '80745D8F', '3403', 4, '右开', '3003368D0573', 'FFFA26102917'
union all select '80745DA1', '3404', 4, '左开', '3003368D0573', 'FFFA26102917'
union all select '80745DA9', '3405', 4, '左开', '3003368D0573', 'FFFA26102917'
union all select '80745D91', '3406', 4, '左开', 'B46995C2AAC1', 'FFFA26102918'
union all select '80745D6B', '3407', 4, '右开', 'B46995C2AAC1', 'FFFA26102918'
union all select '80745DA6', '3408', 4, '左开', 'B46995C2AAC1', 'FFFA26102918'
union all select '80745D81', '3409', 4, '右开', 'B46995C2AAC1', 'FFFA26102918'
union all select '80745D9E', '3410', 4, '左开', 'B46995C2AAC1', 'FFFA26102918'
union all select '80745D83', '3411', 4, '右开', 'B46995C2AAC1', 'FFFA26102918'
union all select '80745DA0', '3412', 4, '左开', 'B46995C2AAC1', 'FFFA26102918'
) v
join lock_device d on v.lock_sn collate utf8mb4_general_ci = d.device_sn
join lock_gateway w on v.gateway_sn collate utf8mb4_general_ci = w.gateway_sn
where not exists (select 1 from lock_device_gateway r
where r.device_id = d.device_id and r.gateway_id = w.gateway_id);
-- =========================================================================
-- 5、房间(62):room_code = 分组编号-房号,一房一锁,初始空闲
-- 已存在的 room_code 不动(保留房态与在住信息);开门方向写 remark
-- =========================================================================
insert into lock_room (room_code, room_no, room_name, group_id, floor, device_id, room_status, del_flag, create_by, create_time, remark)
select concat(v.group_code, '-', v.room_no), v.room_no, v.room_no, g.group_id, v.floor, d.device_id, '0', '0', 'admin', now(), v.door_dir
from (
select '80745D95' as lock_sn, '3201' as room_no, 2 as floor, '左开' as door_dir, 'C846CEC8EB0B' as gateway_sn, 'FFFA26102911' as group_code
union all select '80745D6F', '3202', 2, '右开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745DA3', '3203', 2, '左开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745D78', '3204', 2, '右开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745D89', '3205', 2, '左开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745D93', '3206', 2, '左开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745D75', '3207', 2, '右开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745D9A', '3208', 2, '左开', 'C846CEC8EB0B', 'FFFA26102911'
union all select '80745D99', '3209', 2, '左开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D73', '3210', 2, '右开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D9F', '3211', 2, '左开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D92', '3212', 2, '左开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D7A', '3213', 2, '右开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D8E', '3214', 2, '左开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745DA7', '3215', 2, '左开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D86', '3216', 2, '右开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D72', '3217', 2, '右开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745DA8', '3218', 2, '左开', '7EC81CB0381A', 'FFFA26102912'
union all select '80745D90', '3219', 2, '左开', '33C574C47232', 'FFFA26102913'
union all select '80745D77', '3220', 2, '右开', '33C574C47232', 'FFFA26102913'
union all select '80745D76', '3221', 2, '右开', '33C574C47232', 'FFFA26102913'
union all select '80745D96', '3222', 2, '左开', '33C574C47232', 'FFFA26102913'
union all select '80745D7B', '3223', 2, '右开', '33C574C47232', 'FFFA26102913'
union all select '80745DA4', '3224', 2, '左开', '33C574C47232', 'FFFA26102913'
union all select '80745D7E', '3225', 2, '右开', '33C574C47232', 'FFFA26102913'
union all select '80745D9C', '3301', 3, '左开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745D71', '3302', 3, '右开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745DA2', '3303', 3, '左开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745D82', '3304', 3, '右开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745DAA', '3305', 3, '左开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745D8D', '3306', 3, '左开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745D7F', '3307', 3, '右开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745D97', '3308', 3, '左开', '6F5B285A4C82', 'FFFA26102914'
union all select '80745D8A', '3309', 3, '左开', '740655ADA09A', 'FFFA26102915'
union all select '80745D6E', '3310', 3, '右开', '740655ADA09A', 'FFFA26102915'
union all select '80745D9B', '3311', 3, '左开', '740655ADA09A', 'FFFA26102915'
union all select '80745D94', '3312', 3, '左开', '740655ADA09A', 'FFFA26102915'
union all select '80745D84', '3313', 3, '右开', '740655ADA09A', 'FFFA26102915'
union all select '80745D9D', '3314', 3, '左开', '740655ADA09A', 'FFFA26102915'
union all select '80745D6A', '3315', 3, '左开', '740655ADA09A', 'FFFA26102915'
union all select '80745D7D', '3316', 3, '右开', '740655ADA09A', 'FFFA26102915'
union all select '80745D70', '3317', 3, '右开', '740655ADA09A', 'FFFA26102915'
union all select '80745DA5', '3318', 3, '左开', '740655ADA09A', 'FFFA26102915'
union all select '80745D8C', '3319', 3, '左开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745D74', '3320', 3, '右开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745D6D', '3321', 3, '右开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745D8B', '3322', 3, '左开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745D6C', '3323', 3, '右开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745D98', '3324', 3, '左开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745D88', '3325', 3, '右开', '971ED01FA2FA', 'FFFA26102916'
union all select '80745DAB', '3401', 4, '左开', '3003368D0573', 'FFFA26102917'
union all select '80745D87', '3402', 4, '右开', '3003368D0573', 'FFFA26102917'
union all select '80745D8F', '3403', 4, '右开', '3003368D0573', 'FFFA26102917'
union all select '80745DA1', '3404', 4, '左开', '3003368D0573', 'FFFA26102917'
union all select '80745DA9', '3405', 4, '左开', '3003368D0573', 'FFFA26102917'
union all select '80745D91', '3406', 4, '左开', 'B46995C2AAC1', 'FFFA26102918'
union all select '80745D6B', '3407', 4, '右开', 'B46995C2AAC1', 'FFFA26102918'
union all select '80745DA6', '3408', 4, '左开', 'B46995C2AAC1', 'FFFA26102918'
union all select '80745D81', '3409', 4, '右开', 'B46995C2AAC1', 'FFFA26102918'
union all select '80745D9E', '3410', 4, '左开', 'B46995C2AAC1', 'FFFA26102918'
union all select '80745D83', '3411', 4, '右开', 'B46995C2AAC1', 'FFFA26102918'
union all select '80745DA0', '3412', 4, '左开', 'B46995C2AAC1', 'FFFA26102918'
) v
join lock_group g on v.group_code collate utf8mb4_general_ci = g.group_code
join lock_device d on v.lock_sn collate utf8mb4_general_ci = d.device_sn
where not exists (select 1 from lock_room r
where r.room_code = concat(v.group_code, '-', v.room_no) collate utf8mb4_general_ci)
and not exists (select 1 from lock_room r2 where r2.device_id = d.device_id);
-- =========================================================================
-- 6、网关下挂门锁数(冗余统计)
-- =========================================================================
update lock_gateway w
set w.device_count = (select count(1) from lock_device_gateway r where r.gateway_id = w.gateway_id)
where w.gateway_sn in ('C846CEC8EB0B',
'7EC81CB0381A',
'33C574C47232',
'6F5B285A4C82',
'740655ADA09A',
'971ED01FA2FA',
'3003368D0573',
'B46995C2AAC1');
-- =========================================================================
-- 7、执行后核对(按需执行)
-- =========================================================================
-- 7.1 分组/网关/下挂数:应 8 行,每行门锁数 5–10
-- select g.group_code, g.group_name, w.gateway_sn, w.gateway_ip, w.device_count
-- from lock_group g
-- left join lock_gateway w on w.group_id = g.group_id
-- where g.group_code like 'FFFA2610291%'
-- order by g.group_code;
-- 7.2 房间与门锁一一对应:应 62 行
-- select r.room_code, r.room_no, r.floor, r.remark, d.device_sn
-- from lock_room r
-- left join lock_device d on d.device_id = r.device_id
-- where r.room_code like 'FFFA2610291%-%'
-- order by r.room_code;
-- 7.3 归属关系待下发数量:初始 total = pending = 各网关门锁数
-- select w.gateway_sn, count(1) total, sum(r.bind_status = '0') pending
-- from lock_device_gateway r
-- join lock_gateway w on w.gateway_id = r.gateway_id
-- where w.gateway_sn in ('C846CEC8EB0B', '7EC81CB0381A', '33C574C47232', '6F5B285A4C82', '740655ADA09A', '971ED01FA2FA', '3003368D0573', 'B46995C2AAC1')
-- group by w.gateway_sn;
-- =========================================================================
-- 8、可选:现场网关已按本表配置完毕、不需要平台再下发 locklist 时,
-- 把本批关系直接标记为已下发(避免页面显示「待下发」)
-- =========================================================================
-- update lock_device_gateway r
-- join lock_gateway w on w.gateway_id = r.gateway_id
-- set r.bind_status = '1', r.bind_time = now(), r.last_sync_time = now()
-- where r.bind_status = '0'
-- and w.gateway_sn in ('C846CEC8EB0B', '7EC81CB0381A', '33C574C47232', '6F5B285A4C82', '740655ADA09A', '971ED01FA2FA', '3003368D0573', 'B46995C2AAC1');