feat(analog): 新增ICC模拟量数据同步 - 重建electricity_data表(迁移20261024_icc_analog_data.sql:删除equip_id与electricity占位列、icc_device_code更名imei、新增analog_type/analog_name/analog_unit/analog_value、collect_time以同步时间填充、按月分区2026_10~2027_03、唯一键(line_code,analog_type,collect_time));同步服务IccAnalogSyncService复用OAuth2鉴权,按已同步线路line_code分批(≤50)拉取最新模拟量(POST /analog/subsystem/page,pageSize=500短页停止)幂等upsert并写icc_sync_log(sync_type=electricity_data);新增POST /api/electricity-data/sync手动同步(RBAC device:list);注册icc_analog_sync每5分钟定时任务与sys_job种子;同步db_init/db_seed与设计文档;无前端改动

This commit is contained in:
wk authored and trae-solo-agent committed 2026-10-24 14:52:22 +08:00
1 parent 160ad85051
commit c92fc7f298
15 files changed
+701 -27

No files matched your search

+33 -26
View File
@@ -1278,43 +1278,50 @@ CREATE INDEX idx_wid_worker ON worker_income_detail (worker_id);
-- 十一、用电采集数据(1 张表,按月 RANGE 分区)
-- ============================================================
-- 37. 线路用电信息表(按月分区,时序数据)
-- 37. 线路用电信息表(按月分区,时序数据,ICC 模拟量同步)
DROP TABLE IF EXISTS electricity_data CASCADE;
CREATE TABLE electricity_data (
id BIGSERIAL,
line_id BIGINT NOT NULL,
line_code VARCHAR(64) NOT NULL,
equip_id BIGINT,
icc_device_code VARCHAR(128),
line_name VARCHAR(128),
customer_id BIGINT NOT NULL,
electricity NUMERIC(14,4),
collect_time TIMESTAMPTZ NOT NULL,
PRIMARY KEY (id, collect_time)
id BIGSERIAL,
line_id BIGINT NOT NULL REFERENCES electric_line(id),
line_code VARCHAR(64) NOT NULL,
imei VARCHAR(64),
line_name VARCHAR(128),
customer_id BIGINT NOT NULL,
analog_type VARCHAR(64),
analog_name VARCHAR(128),
analog_unit VARCHAR(32),
analog_value NUMERIC(14,4),
collect_time TIMESTAMPTZ NOT NULL,
PRIMARY KEY (id, collect_time),
CONSTRAINT uk_ed_line_type_time UNIQUE (line_code, analog_type, collect_time)
) PARTITION BY RANGE (collect_time);
COMMENT ON TABLE electricity_data IS '线路用电信息表(按月分区,时序数据)';
COMMENT ON COLUMN electricity_data.id IS '自增(复合主键含 collect_time)';
COMMENT ON COLUMN electricity_data.line_id IS '线路 ID(→ electric_line)';
COMMENT ON COLUMN electricity_data.line_code IS '线路编码(冗余,加速查询)';
COMMENT ON COLUMN electricity_data.equip_id IS '客户设备 ID';
COMMENT ON COLUMN electricity_data.icc_device_code IS 'ICC 设备编号';
COMMENT ON COLUMN electricity_data.line_name IS '线路名称';
COMMENT ON COLUMN electricity_data.customer_id IS '客户 ID(逻辑隔离键)';
COMMENT ON COLUMN electricity_data.electricity IS '用电量';
COMMENT ON COLUMN electricity_data.collect_time IS '采集时间(分区键)';
COMMENT ON TABLE electricity_data IS '线路用电信息表(ICC 模拟量同步,按月分区时序数据)';
COMMENT ON COLUMN electricity_data.id IS '自增(复合主键含 collect_time)';
COMMENT ON COLUMN electricity_data.line_id IS '线路 ID(→ electric_line)';
COMMENT ON COLUMN electricity_data.line_code IS '线路编码(ICC deviceCode,冗余 + 幂等键)';
COMMENT ON COLUMN electricity_data.imei IS '设备唯一标识码(ICC uniqueCode)';
COMMENT ON COLUMN electricity_data.line_name IS '线路名称(冗余,加速展示)';
COMMENT ON COLUMN electricity_data.customer_id IS '客户 ID(逻辑隔离键)';
COMMENT ON COLUMN electricity_data.analog_type IS '模拟量类型(ICC analogType)';
COMMENT ON COLUMN electricity_data.analog_name IS '模拟量名称(ICC analogName,如:剩余电流)';
COMMENT ON COLUMN electricity_data.analog_unit IS '模拟量单位(ICC analogUnit,如:mA)';
COMMENT ON COLUMN electricity_data.analog_value IS '模拟量值(ICC analogValue)';
COMMENT ON COLUMN electricity_data.collect_time IS '采集时间(同步时间,分区键)';
-- 初始分区(2026 年 8~12 月)
CREATE TABLE electricity_data_2026_08 PARTITION OF electricity_data
FOR VALUES FROM ('2026-08-01') TO ('2026-09-01');
CREATE TABLE electricity_data_2026_09 PARTITION OF electricity_data
FOR VALUES FROM ('2026-09-01') TO ('2026-10-01');
-- 初始分区(2026 年 10 月 ~ 2027 年 3 月)
CREATE TABLE electricity_data_2026_10 PARTITION OF electricity_data
FOR VALUES FROM ('2026-10-01') TO ('2026-11-01');
CREATE TABLE electricity_data_2026_11 PARTITION OF electricity_data
FOR VALUES FROM ('2026-11-01') TO ('2026-12-01');
CREATE TABLE electricity_data_2026_12 PARTITION OF electricity_data
FOR VALUES FROM ('2026-12-01') TO ('2027-01-01');
CREATE TABLE electricity_data_2027_01 PARTITION OF electricity_data
FOR VALUES FROM ('2027-01-01') TO ('2027-02-01');
CREATE TABLE electricity_data_2027_02 PARTITION OF electricity_data
FOR VALUES FROM ('2027-02-01') TO ('2027-03-01');
CREATE TABLE electricity_data_2027_03 PARTITION OF electricity_data
FOR VALUES FROM ('2027-03-01') TO ('2027-04-01');
-- 分区索引(在父表创建,自动继承到各分区)
CREATE INDEX idx_ed_customer ON electricity_data (customer_id);