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:
1 parent
cf0a0d4d31
commit
160ad85051
13 files changed
+510
-200
No files matched your search
+38
-26
@@ -614,35 +614,47 @@ CREATE INDEX idx_contract_xt ON contract (xt_contract_no);
|
||||
-- 19. 智电改造线路表(ICC 同步 + 业务分配)
|
||||
DROP TABLE IF EXISTS electric_line CASCADE;
|
||||
CREATE TABLE electric_line (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
line_code VARCHAR(64) NOT NULL UNIQUE,
|
||||
equip_id BIGINT NOT NULL REFERENCES customer_equipment(id),
|
||||
icc_device_code VARCHAR(128),
|
||||
line_name VARCHAR(128),
|
||||
customer_id BIGINT NOT NULL REFERENCES customer(id),
|
||||
building_id BIGINT REFERENCES customer_building(id),
|
||||
floor_no VARCHAR(16),
|
||||
location VARCHAR(256),
|
||||
status SMALLINT NOT NULL DEFAULT 1,
|
||||
synced_at TIMESTAMPTZ,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
line_code VARCHAR(64) NOT NULL UNIQUE,
|
||||
equip_id BIGINT,
|
||||
gateway_id BIGINT,
|
||||
customer_id BIGINT NOT NULL REFERENCES customer(id),
|
||||
line_name VARCHAR(128),
|
||||
imei VARCHAR(64),
|
||||
type_code VARCHAR(32),
|
||||
type_name VARCHAR(64),
|
||||
fire_system_code VARCHAR(64),
|
||||
fire_system_name VARCHAR(128),
|
||||
part_unit_loop_code VARCHAR(64),
|
||||
channel_no VARCHAR(64),
|
||||
channel_sn VARCHAR(64),
|
||||
produce_date VARCHAR(16),
|
||||
status SMALLINT NOT NULL DEFAULT 1,
|
||||
synced_at TIMESTAMPTZ,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
COMMENT ON TABLE electric_line IS '智电改造线路信息表(ICC 同步)';
|
||||
COMMENT ON COLUMN electric_line.id IS '自增主键';
|
||||
COMMENT ON COLUMN electric_line.line_code IS '线路编码(唯一)';
|
||||
COMMENT ON COLUMN electric_line.equip_id IS '客户设备 ID(→ customer_equipment)';
|
||||
COMMENT ON COLUMN electric_line.icc_device_code IS 'ICC 智电设备编号';
|
||||
COMMENT ON COLUMN electric_line.line_name IS '线路名称(ICC 同步)';
|
||||
COMMENT ON COLUMN electric_line.customer_id IS '客户 ID(逻辑隔离键)';
|
||||
COMMENT ON COLUMN electric_line.building_id IS '所属建筑 ID(→ customer_building)';
|
||||
COMMENT ON COLUMN electric_line.floor_no IS '所在楼层';
|
||||
COMMENT ON COLUMN electric_line.location IS '所在位置';
|
||||
COMMENT ON COLUMN electric_line.status IS '状态:1在线 0离线';
|
||||
COMMENT ON COLUMN electric_line.synced_at IS 'ICC 同步时间';
|
||||
COMMENT ON COLUMN electric_line.created_at IS '创建时间';
|
||||
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,外键由迁移/db_seed 建立)';
|
||||
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 '创建时间';
|
||||
CREATE INDEX idx_line_customer ON electric_line (customer_id);
|
||||
CREATE INDEX idx_line_equip ON electric_line (equip_id);
|
||||
CREATE INDEX idx_line_icc ON electric_line (icc_device_code);
|
||||
CREATE INDEX idx_line_gateway ON electric_line (gateway_id);
|
||||
CREATE INDEX idx_line_imei ON electric_line (imei);
|
||||
|
||||
-- 20. 线路所属房间关联表
|
||||
DROP TABLE IF EXISTS line_room CASCADE;
|
||||
|
||||
@@ -493,6 +493,14 @@ CREATE INDEX IF NOT EXISTS idx_gateway_customer ON electric_gateway (customer_id
|
||||
CREATE INDEX IF NOT EXISTS idx_gateway_equip ON electric_gateway (equip_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_gateway_imei ON electric_gateway (icc_imei);
|
||||
|
||||
-- 智电改造线路表:gateway_id 外键补充(FK 由迁移/本段建立;db_init.sql 中为普通 BIGINT)
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'fk_line_gateway' AND conrelid = 'electric_line'::regclass) THEN
|
||||
ALTER TABLE electric_line ADD CONSTRAINT fk_line_gateway FOREIGN KEY (gateway_id) REFERENCES electric_gateway(id);
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- 菜单 62:设备监控下的智电改造网关台账菜单
|
||||
INSERT INTO sys_menu (id, parent_id, menu_name, menu_path, component, icon, sort_order, menu_type, permission, visible) VALUES
|
||||
(62, 4, '智电改造网关台账', '/device/gateway', 'device/gateway/index', 'ApiOutlined', 3, 2, 'device:list', 1)
|
||||
|
||||
@@ -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;
|
||||
Reference in new issue
Block a user