migration_alarm_operations.sql 2.5 KB

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