| 12345678910111213141516171819202122232425262728293031323334353637 |
- -- KingbaseES PostgreSQL 兼容模式。
- -- 部署顺序:必须先执行 migration_alarm_case_work_order_id.sql(4 表 order_id→work_order_id 改名
- -- + alarm_data 删 alarm_time),再执行 migration_alarm_review.sql,最后执行本脚本;
- -- 列未先落地会因列不存在而报错。
- -- 不回填历史报警、不重写旧日志;已存在报警允许 alarm_no 为空。
- BEGIN;
- LOCK TABLE app_user.alarm_data, app_user.work_order_log IN SHARE ROW EXCLUSIVE MODE;
- ALTER TABLE app_user.alarm_data ADD COLUMN IF NOT EXISTS alarm_no varchar(64);
- COMMENT ON COLUMN app_user.alarm_data.alarm_no IS '报警单号:程序生成 BJyyyyMMddHHmmss + 4位随机数,北京时间,唯一且不回填历史';
- CREATE UNIQUE INDEX IF NOT EXISTS uk_alarm_data_alarm_no ON app_user.alarm_data(alarm_no);
- -- 兼容曾执行过旧版脚本的环境:停止数据库赋号,已有号码保持原值。
- DROP TRIGGER IF EXISTS trg_alarm_number ON app_user.alarm_data;
- DROP FUNCTION IF EXISTS app_user.assign_alarm_number();
- ALTER TABLE app_user.alarm_data ALTER COLUMN alarm_no DROP DEFAULT;
- DROP SEQUENCE IF EXISTS app_user.alarm_no_seq;
- -- 报警日志完全由业务代码写入;删除旧触发器/自定义函数,避免重复日志。
- DROP TRIGGER IF EXISTS trg_alarm_lifecycle_log ON app_user.alarm_data;
- DROP TRIGGER IF EXISTS trg_work_order_alarm_log ON app_user.work_order_log;
- DROP FUNCTION IF EXISTS app_user.record_alarm_lifecycle();
- DROP FUNCTION IF EXISTS app_user.record_alarm_work_order_log();
- -- 精确更新现有菜单,保留父级、排序和角色授权。
- UPDATE app_user.sys_menu SET
- path = CASE menu_id WHEN 2139 THEN 'alarmRemind' WHEN 2140 THEN 'alarmList'
- WHEN 2141 THEN 'drainageAlarmAnalysis' WHEN 2143 THEN 'drainageAlarmGIS' WHEN 2117 THEN 'alarmList' END,
- component = CASE menu_id WHEN 2139 THEN 'subSystem/alarm/common/remind' WHEN 2140 THEN 'subSystem/alarm/common/list'
- WHEN 2141 THEN 'subSystem/drainage/alarm/analysis' WHEN 2143 THEN 'subSystem/drainage/alarm/alarmGIS'
- WHEN 2117 THEN 'subSystem/alarm/common/list' END,
- query = CASE WHEN menu_id = 2117 THEN '{"rootTypeId":1}' ELSE '{"rootTypeId":2}' END,
- -- 框架按逗号拆分权限;供水首页的统计和实时异常仍使用原查询接口。
- perms = CASE WHEN menu_id = 2117 THEN 'alarm:operations:list,waterSupply:alarm:list'
- ELSE 'alarm:operations:list' END,
- update_time = CURRENT_TIMESTAMP
- WHERE menu_id IN (2139,2140,2141,2143,2117);
- COMMIT;
|