feat(line): 智电改造线路台账接入 ICC 消防探测器真实同步

- 重建 electric_line 表结构(迁移20261024_icc_line_rebuild.sql并同步db_init/db_seed):删building_id/floor_no/location/icc_device_code占位字段,equip_id改可空,新增imei/gateway_id/type_code/type_name/fire_system_code/fire_system_name/part_unit_loop_code/channel_no/channel_sn/produce_date,gateway_id外键→electric_gateway
- 同步服务IccLineSyncService复用OAuth2真实鉴权分页拉取探测器(POST /detector/subsystem/page,pageSize=50短页停止),按line_code(detectorCode)幂等upsert写icc_sync_log;customer_id由orgCode→customer.icc_code解析、gateway_id由parentCode→electric_gateway.device_code匹配、equip_id同步不填充
- 列表接口返回gateway/type/imei等新字段,keyword检索含imei;前端台账页更新为新列(IMEI/所属网关/探测器类型/回路通道/消防系统/生产日期),保留手动同步按钮与筛选
- 更新系统设计文档electric_line表定义与spec(add-icc-line-sync)
This commit is contained in:
wk authored and trae-solo-agent committed 2026-10-24 13:50:32 +08:00
1 parent cf0a0d4d31
commit 160ad85051
13 files changed
+510 -200

No files matched your search

@@ -0,0 +1,48 @@
-- 智电改造线路台账真实 ICC 同步:重建 electric_line 表结构(按 ICC DetectorVO)
-- 1) 增列/删列/改可空(幂等);2) gateway_id 外键 → electric_gateway;3) 索引与注释同步
BEGIN;
ALTER TABLE electric_line ADD COLUMN IF NOT EXISTS imei VARCHAR(64);
ALTER TABLE electric_line ADD COLUMN IF NOT EXISTS gateway_id BIGINT;
ALTER TABLE electric_line ADD COLUMN IF NOT EXISTS type_code VARCHAR(32);
ALTER TABLE electric_line ADD COLUMN IF NOT EXISTS type_name VARCHAR(64);
ALTER TABLE electric_line ADD COLUMN IF NOT EXISTS fire_system_code VARCHAR(64);
ALTER TABLE electric_line ADD COLUMN IF NOT EXISTS fire_system_name VARCHAR(128);
ALTER TABLE electric_line ADD COLUMN IF NOT EXISTS part_unit_loop_code VARCHAR(64);
ALTER TABLE electric_line ADD COLUMN IF NOT EXISTS channel_no VARCHAR(64);
ALTER TABLE electric_line ADD COLUMN IF NOT EXISTS channel_sn VARCHAR(64);
ALTER TABLE electric_line ADD COLUMN IF NOT EXISTS produce_date VARCHAR(16);
ALTER TABLE electric_line DROP COLUMN IF EXISTS icc_device_code;
ALTER TABLE electric_line DROP COLUMN IF EXISTS building_id;
ALTER TABLE electric_line DROP COLUMN IF EXISTS floor_no;
ALTER TABLE electric_line DROP COLUMN IF EXISTS location;
ALTER TABLE electric_line ALTER COLUMN equip_id DROP NOT NULL;
ALTER TABLE electric_line ADD CONSTRAINT fk_line_gateway FOREIGN KEY (gateway_id) REFERENCES electric_gateway(id);
DROP INDEX IF EXISTS idx_line_icc;
CREATE INDEX IF NOT EXISTS idx_line_gateway ON electric_line (gateway_id);
CREATE INDEX IF NOT EXISTS idx_line_imei ON electric_line (imei);
COMMENT ON TABLE electric_line IS '智电改造线路信息表(ICC 探测器同步)';
COMMENT ON COLUMN electric_line.line_code IS '探测器编码(ICC detectorCode,唯一幂等键)';
COMMENT ON COLUMN electric_line.line_name IS '探测器名称(ICC detectorName)';
COMMENT ON COLUMN electric_line.imei IS '设备唯一标识码(ICC imei)';
COMMENT ON COLUMN electric_line.equip_id IS '客户设备 ID(→ customer_equipment,可空,同步不填充)';
COMMENT ON COLUMN electric_line.gateway_id IS '网关设备 ID(→ electric_gateway,由 parentCode↔device_code 匹配)';
COMMENT ON COLUMN electric_line.customer_id IS '客户 ID(orgCode→customer.icc_code 解析,逻辑隔离键)';
COMMENT ON COLUMN electric_line.type_code IS '探测器类型编码';
COMMENT ON COLUMN electric_line.type_name IS '探测器类型名称';
COMMENT ON COLUMN electric_line.fire_system_code IS '消防系统编码';
COMMENT ON COLUMN electric_line.fire_system_name IS '消防系统名称';
COMMENT ON COLUMN electric_line.part_unit_loop_code IS '探测器回路号';
COMMENT ON COLUMN electric_line.channel_no IS '探测器通道号';
COMMENT ON COLUMN electric_line.channel_sn IS '通道唯一标识码';
COMMENT ON COLUMN electric_line.produce_date IS '生产日期(yyyy-MM-dd)';
COMMENT ON COLUMN electric_line.status IS '探测器状态:1在线 0离线(detectorStatus 01→1 / 02→0)';
COMMENT ON COLUMN electric_line.synced_at IS 'ICC 同步时间';
COMMENT ON COLUMN electric_line.created_at IS '创建时间';
COMMIT;