Files
smart_grid_iot/database/migrations/20261024_icc_event_alarm.sql
T

53 lines
3.7 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.
-- ICC 报警事件订阅:按 ICC 平台事件订阅推送的通用事件格式重建 device_alarm / alarm_dispatch
-- 两表原为旧设计(equip_id/building_id/floor_no/location/history_count/fault_type/alarm_date 等与 ICC 事件结构不符),现为空表,DROP 重建
DROP TABLE IF EXISTS alarm_dispatch CASCADE;
DROP TABLE IF EXISTS device_alarm CASCADE;
CREATE TABLE device_alarm (
id BIGSERIAL PRIMARY KEY,
alarm_code VARCHAR(128) NOT NULL UNIQUE, -- ICC 报警编码(幂等键)
uuid VARCHAR(128), -- ICC 事件 uuid
line_id BIGINT, -- 智电线路 ID(→ electric_line,nodeCode/deviceCode 匹配 line_code)
line_code VARCHAR(64), -- 线路编码(electric_line.line_code)
line_name VARCHAR(128), -- 线路名称
customer_id BIGINT, -- 客户 ID(由 line_id 联出)
node_code VARCHAR(64), -- 探测器节点编码(info.nodeCode)
device_code VARCHAR(64), -- 设备编码(info.deviceCode)
device_name VARCHAR(128), -- 设备名称(info.deviceName)
org_code VARCHAR(64), -- 组织编码(info.orgCode)
org_name VARCHAR(128), -- 组织名称(info.orgName)
alarm_type INT, -- 报警类型(info.alarmType)
alarm_grade SMALLINT, -- 报警等级 1/2/3(1 最严重)
alarm_stat SMALLINT, -- 报警状态(info.alarmStat)
is_event BOOLEAN DEFAULT FALSE, -- 是否事件(info.isEvent)
alarm_time TIMESTAMPTZ, -- 报警发生时间(info.alarmDate 秒级时间戳)
alarm_value NUMERIC(14,4), -- 报警数值(部分事件带值,可空)
synced_at TIMESTAMPTZ NOT NULL DEFAULT NOW() -- 入库时间
);
COMMENT ON TABLE device_alarm IS '设备报警信息表(ICC 事件订阅)';
CREATE INDEX idx_alarm_time ON device_alarm (alarm_time DESC);
CREATE INDEX idx_alarm_line ON device_alarm (line_id);
CREATE INDEX idx_alarm_customer ON device_alarm (customer_id);
CREATE INDEX idx_alarm_grade ON device_alarm (alarm_grade);
CREATE TABLE alarm_dispatch (
id BIGSERIAL PRIMARY KEY,
dispatch_no VARCHAR(64) NOT NULL UNIQUE, -- 报警派单号(如 AD20261024001,生成规则由后端实现)
alarm_id BIGINT, -- 报警 ID(→ device_alarm)
line_id BIGINT, -- 线路 ID
line_code VARCHAR(64), -- 线路编码
line_name VARCHAR(128), -- 线路名称
customer_id BIGINT REFERENCES customer(id), -- 客户 ID
alarm_time TIMESTAMPTZ, -- 报警时间(快照)
alarm_grade SMALLINT, -- 报警等级(快照)
fault_desc TEXT, -- 故障事项(报警类型描述)
dispatcher VARCHAR(64), -- 派发人(当前登录用户 realName)
worker_id BIGINT, -- 共享电工 ID(→ worker)
status SMALLINT NOT NULL DEFAULT 0, -- 状态:0已派发 1已处理
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
completed_at TIMESTAMPTZ
);
COMMENT ON TABLE alarm_dispatch IS '报警派单信息表';
CREATE INDEX idx_alarm_disp_status ON alarm_dispatch (status);
CREATE INDEX idx_alarm_disp_worker ON alarm_dispatch (worker_id);
CREATE INDEX idx_alarm_disp_alarm ON alarm_dispatch (alarm_id);