Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
53 lines
3.7 KiB
SQL
53 lines
3.7 KiB
SQL
-- 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);
|