water_supply_alarm_audit_test_data.sql 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. -- ============================================================
  2. -- 供水监测报警模块 现状验收测试数据(#46 T03 收口 / 供人工审查)
  3. -- 数据库:人大金仓 KingbaseES(PostgreSQL 语法兼容)
  4. --
  5. -- 说明:
  6. -- 1. 全部数据使用 T46- / t46- 前缀,与 T45-(报警台账)等既有种子互不干扰。
  7. -- 2. 先删后插,可重复执行;清理语句见文件末尾。
  8. -- 3. 设备编码遵循命名规范:区域(CN城南/CB城北/TC太常)-类型(GS供水)-YYYYMMDD+4位流水号。
  9. -- 4. 工单表按重构后的结构写入:不再有 order_type 列;dispatch_user / receive_user 为 BIGINT 用户ID。
  10. -- 5. dept_id 统一取 100(顶级部门)。若审核账号使用「本部门」数据范围且所属部门不是 100,
  11. -- 请把下方 dept_id 改成该账号的部门ID,否则统一工单页按部门过滤后看不到这批工单。
  12. --
  13. -- 审查对照口径:
  14. -- A. 报警审核页顶部计数条(只统计供水设备且 alarm_id 非空的工单)
  15. -- 全部 7 ;待处理(0,1) 2 ;处理中(2,3,6) 2 ;待验收(4) 1 ;已完成(5,7) 2
  16. -- B. 报警审核队列(展示状态=待审核)应显示 8 条
  17. -- a01 a02 a03 a04 a05 a06(无工单) + a12 a13(仅关联终态工单,终态不占用唯一性名额)
  18. -- C. 报警管理展示状态分布:待审核 8 / 已转工单 5 / 已解除 1
  19. -- D. 设备报警状态:报警中 = 设备1、设备2、设备6(状态表 alarm_status=1)与设备5(无状态记录时的回退分支)
  20. -- 正常 = 设备3 ;另有设备4 为离线(alarm_status=0 且 online_status=0)
  21. -- E. 同类工单唯一性(同设备 + 同报警类型 + 未办结)
  22. -- 应被阻止:a01、a06(设备1 压力预警已有 WO-001 未办结)
  23. -- 应被允许:a12、a13(设备6 漏失预警只有 已结案/已取消 两张终态工单)
  24. -- F. 误报解除样本:a14 已写入审核结论=2(误报),展示状态应为「已解除」,且不产生工单
  25. --
  26. -- 已知现状(非缺陷,供确认):误报解除与工单结案都不会清除设备报警状态,
  27. -- 设备报警状态由运行系统负责(见 ADR-0002)。清警能力缺失已另立 #51。
  28. -- ============================================================
  29. -- ------------------------------------------------------------
  30. -- 0. 清理历史数据(保证可重复执行)
  31. -- ------------------------------------------------------------
  32. DELETE FROM app_user.alarm_audit WHERE alarm_id LIKE 't46-alarm-%';
  33. DELETE FROM app_user.work_order_log WHERE order_id IN
  34. (SELECT order_id FROM app_user.work_order WHERE order_no LIKE 'T46-WO-%');
  35. DELETE FROM app_user.work_order WHERE order_no LIKE 'T46-WO-%' OR alarm_id LIKE 't46-alarm-%';
  36. DELETE FROM app_user.alarm_data WHERE id LIKE 't46-alarm-%';
  37. DELETE FROM app_user.warning_threshold WHERE id LIKE 't46-thr-%' OR device_code LIKE 'T46-%';
  38. DELETE FROM app_user.equipment_status WHERE equipment_id LIKE 'T46-EQ-%';
  39. DELETE FROM app_user.equipment_base WHERE equipment_id LIKE 'T46-EQ-%';
  40. DELETE FROM app_user.equipment_type WHERE id LIKE 'T46-WATER-%';
  41. -- ------------------------------------------------------------
  42. -- 1. 设备类型(挂在顶级类型「供水」之下)与设备台账
  43. -- ------------------------------------------------------------
  44. DO $$
  45. DECLARE
  46. v_top_id varchar(64);
  47. v_pressure_id varchar(64);
  48. v_flow_id varchar(64);
  49. v_leak_id varchar(64);
  50. BEGIN
  51. SELECT id INTO v_top_id FROM app_user.equipment_type
  52. WHERE type_name = '供水' AND parent_type_id = '0' LIMIT 1;
  53. IF v_top_id IS NULL THEN
  54. INSERT INTO app_user.equipment_type (id, type_id, type_name, parent_type_id, type_remark)
  55. VALUES ('T46-WATER-TOP', 't46_water_top', '供水', '0', '#46报警审核测试-顶级类型(可清理)')
  56. RETURNING id INTO v_top_id;
  57. END IF;
  58. INSERT INTO app_user.equipment_type (id, type_id, type_name, parent_type_id, type_remark)
  59. VALUES ('T46-WATER-PRESSURE', 't46_water_pressure', '压力监测', v_top_id, '#46报警审核测试子类型'),
  60. ('T46-WATER-FLOW', 't46_water_flow', '流量监测', v_top_id, '#46报警审核测试子类型'),
  61. ('T46-WATER-LEAK', 't46_water_leak', '漏失监测', v_top_id, '#46报警审核测试子类型');
  62. v_pressure_id := 'T46-WATER-PRESSURE';
  63. v_flow_id := 'T46-WATER-FLOW';
  64. v_leak_id := 'T46-WATER-LEAK';
  65. INSERT INTO app_user.equipment_base
  66. (equipment_id, equipment_code, equipment_name, equipment_model, equipment_type_id,
  67. longitude, latitude, equipment_location, maintainer, maintainer_phone, ownership_unit,
  68. remark, create_time, update_time, del_flag, district)
  69. VALUES
  70. ('T46-EQ-PR-CN', 'CN-GS-202609160101', '城南加压站压力监测点', 'T46-PR-1', v_pressure_id,
  71. 113.28100000, 23.12100000, '城南大道101号', '张巡维', '13800000201', '市供水公司',
  72. '#46报警审核测试数据', now(), now(), '0', '城南'),
  73. ('T46-EQ-PR-CB', 'CB-GS-202609160102', '城北末梢压力监测点', 'T46-PR-2', v_pressure_id,
  74. 113.31200000, 23.17200000, '城北大道102号', '李巡维', '13800000202', '市供水公司',
  75. '#46报警审核测试数据', now(), now(), '0', '城北'),
  76. ('T46-EQ-FL-TC', 'TC-GS-202609160103', '太常厂区流量监测点', 'T46-FL-1', v_flow_id,
  77. 113.25100000, 23.09100000, '太常路103号', '王巡维', '13800000203', '市供水公司',
  78. '#46报警审核测试数据', now(), now(), '0', '太常'),
  79. ('T46-EQ-LK-CN', 'CN-GS-202609160104', '城南漏失声波监测点', 'T46-LK-1', v_leak_id,
  80. 113.28600000, 23.12600000, '城南大道104号', '赵巡维', '13800000204', '市供水公司',
  81. '#46报警审核测试数据', now(), now(), '0', '城南'),
  82. ('T46-EQ-FL-CB', 'CB-GS-202609160105', '城北出厂流量监测点', 'T46-FL-2', v_flow_id,
  83. 113.31600000, 23.17600000, '城北大道105号', '孙巡维', '13800000205', '市供水公司',
  84. '#46无设备状态记录-回退分支', now(), now(), '0', '城北'),
  85. ('T46-EQ-LK-TC', 'TC-GS-202609160106', '太常漏失声波监测点', 'T46-LK-2', v_leak_id,
  86. 113.25600000, 23.09600000, '太常路106号', '周巡维', '13800000206', '市供水公司',
  87. '#46终态工单与误报解除样本', now(), now(), '0', '太常');
  88. END $$;
  89. -- ------------------------------------------------------------
  90. -- 2. 设备状态(equipment_status)
  91. -- 设备5(T46-EQ-FL-CB)刻意不建记录,用于验证设备报警状态回退分支
  92. -- ------------------------------------------------------------
  93. INSERT INTO app_user.equipment_status
  94. (equipment_id, current_status, alarm_status, online_status,
  95. installation_addr, status_update_time, create_time, del_flag)
  96. VALUES
  97. ('T46-EQ-PR-CN', 1, 1, 1, '城南大道101号', now() - interval '30 minutes', now(), '0'),
  98. ('T46-EQ-PR-CB', 1, 1, 1, '城北大道102号', now() - interval '40 minutes', now(), '0'),
  99. ('T46-EQ-FL-TC', 1, 0, 1, '太常路103号', now() - interval '50 minutes', now(), '0'),
  100. ('T46-EQ-LK-CN', 1, 0, 0, '城南大道104号', now() - interval '2 hours', now(), '0'),
  101. ('T46-EQ-LK-TC', 1, 1, 1, '太常路106号', now() - interval '3 hours', now(), '0');
  102. -- ------------------------------------------------------------
  103. -- 3. 阈值(warning_threshold)
  104. -- ------------------------------------------------------------
  105. INSERT INTO app_user.warning_threshold
  106. (id, device_code, warning_type, warning_code, min_value, max_value,
  107. period_start, period_end, remark, create_time, update_time)
  108. VALUES
  109. ('t46-thr-001', 'CN-GS-202609160101', '压力预警', 'T46-WARN-PRESSURE', 0.40, 0.80,
  110. NULL, NULL, '#46测试-全天阈值', now(), now()),
  111. ('t46-thr-002', 'CB-GS-202609160102', '压力预警', 'T46-WARN-PRESSURE', 0.35, 0.85,
  112. NULL, NULL, '#46测试-全天阈值', now(), now()),
  113. ('t46-thr-003', 'TC-GS-202609160103', '流量预警', 'T46-WARN-FLOW', 10.00, 100.00,
  114. '08:00', '20:00', '#46测试-分时阈值(08:00-20:00)', now(), now()),
  115. ('t46-thr-004', 'CN-GS-202609160104', '漏失预警', 'T46-WARN-LEAK', 0.00, 5.00,
  116. NULL, NULL, '#46测试-阈值下限为0', now(), now()),
  117. ('t46-thr-005', 'CB-GS-202609160105', '流量预警', 'T46-WARN-FLOW', 8.00, 120.00,
  118. NULL, NULL, '#46测试-全天阈值', now(), now()),
  119. ('t46-thr-006', 'TC-GS-202609160106', '漏失预警', 'T46-WARN-LEAK', 0.00, 5.00,
  120. NULL, NULL, '#46测试-全天阈值', now(), now());
  121. -- ------------------------------------------------------------
  122. -- 4. 报警流水(alarm_data)
  123. -- alarm_status:0-未处理 1-已处理;alarm_level:1 最高
  124. -- ------------------------------------------------------------
  125. INSERT INTO app_user.alarm_data
  126. (id, device_code, device_name, device_type, warning_type, warning_code,
  127. actual_value, min_value, max_value, alarm_status, alarm_level, deviation_ratio,
  128. alarm_time, handle_time, handle_user, handle_remark, remark, create_time, update_time)
  129. VALUES
  130. -- 待审核:无关联工单
  131. ('t46-alarm-a01', 'CN-GS-202609160101', '城南加压站压力监测点', '压力监测', '压力预警', 'T46-WARN-PRESSURE',
  132. 0.95, 0.40, 0.80, 0, 1, 18.75, now() - interval '35 minutes', NULL, NULL, NULL,
  133. '#46待审核-设备1压力一级(同设备同类型已有WO-001未办结,转工单应被阻止)', now(), now()),
  134. ('t46-alarm-a02', 'CB-GS-202609160102', '城北末梢压力监测点', '压力监测', '压力预警', 'T46-WARN-PRESSURE',
  135. 0.90, 0.35, 0.85, 0, 2, 5.88, now() - interval '30 minutes', NULL, NULL, NULL,
  136. '#46待审核-设备2压力二级', now(), now()),
  137. ('t46-alarm-a03', 'TC-GS-202609160103', '太常厂区流量监测点', '流量监测', '流量预警', 'T46-WARN-FLOW',
  138. 112.00, 10.00, 100.00, 0, 3, 12.00, now() - interval '25 minutes', NULL, NULL, NULL,
  139. '#46待审核-设备3流量三级', now(), now()),
  140. ('t46-alarm-a04', 'CN-GS-202609160104', '城南漏失声波监测点', '漏失监测', '漏失预警', 'T46-WARN-LEAK',
  141. 7.20, 0.00, 5.00, 0, 4, 44.00, now() - interval '20 minutes', NULL, NULL, NULL,
  142. '#46待审核-设备4漏失四级(设备离线)', now(), now()),
  143. ('t46-alarm-a05', 'CB-GS-202609160105', '城北出厂流量监测点', '流量监测', '流量预警', 'T46-WARN-FLOW',
  144. 3.20, 8.00, 120.00, 0, 2, 60.00, now() - interval '15 minutes', NULL, NULL, NULL,
  145. '#46待审核-设备5无状态记录(设备报警状态走回退分支)', now(), now()),
  146. ('t46-alarm-a06', 'CN-GS-202609160101', '城南加压站压力监测点', '压力监测', '压力预警', 'T46-WARN-PRESSURE',
  147. 0.28, 0.40, 0.80, 0, 1, 30.00, now() - interval '1 day' - interval '10 minutes', NULL, NULL, NULL,
  148. '#46待审核-设备1压力一级(第二条同类型报警)', now(), now()),
  149. -- 已转工单:关联未办结工单(0/1/3/6/4)
  150. ('t46-alarm-a07', 'CN-GS-202609160101', '城南加压站压力监测点', '压力监测', '压力预警', 'T46-WARN-PRESSURE',
  151. 0.88, 0.40, 0.80, 0, 1, 10.00, now() - interval '6 hours', NULL, NULL, NULL,
  152. '#46已转工单-WO-001 待派单', now(), now()),
  153. ('t46-alarm-a08', 'CB-GS-202609160102', '城北末梢压力监测点', '压力监测', '压力预警', 'T46-WARN-PRESSURE',
  154. 0.30, 0.35, 0.85, 0, 2, 14.29, now() - interval '7 hours', NULL, NULL, NULL,
  155. '#46已转工单-WO-002 待接单', now(), now()),
  156. ('t46-alarm-a09', 'TC-GS-202609160103', '太常厂区流量监测点', '流量监测', '流量预警', 'T46-WARN-FLOW',
  157. 130.50, 10.00, 100.00, 0, 1, 30.50, now() - interval '1 day' - interval '2 hours', NULL, NULL, NULL,
  158. '#46已转工单-WO-003 处理中', now(), now()),
  159. ('t46-alarm-a10', 'CB-GS-202609160105', '城北出厂流量监测点', '流量监测', '流量预警', 'T46-WARN-FLOW',
  160. 140.00, 8.00, 120.00, 0, 3, 16.67, now() - interval '2 days', NULL, NULL, NULL,
  161. '#46已转工单-WO-004 延期中', now(), now()),
  162. ('t46-alarm-a11', 'CN-GS-202609160104', '城南漏失声波监测点', '漏失监测', '漏失预警', 'T46-WARN-LEAK',
  163. 6.10, 0.00, 5.00, 0, 2, 22.00, now() - interval '3 days', NULL, NULL, NULL,
  164. '#46已转工单-WO-005 待验收', now(), now()),
  165. -- 仅关联终态工单:终态不占用唯一性名额,展示状态回到「待审核」
  166. ('t46-alarm-a12', 'TC-GS-202609160106', '太常漏失声波监测点', '漏失监测', '漏失预警', 'T46-WARN-LEAK',
  167. 5.80, 0.00, 5.00, 0, 1, 16.00, now() - interval '4 days', NULL, NULL, NULL,
  168. '#46待审核-仅关联WO-006(已结案),转工单应被允许', now(), now()),
  169. ('t46-alarm-a13', 'TC-GS-202609160106', '太常漏失声波监测点', '漏失监测', '漏失预警', 'T46-WARN-LEAK',
  170. 6.40, 0.00, 5.00, 0, 3, 28.00, now() - interval '5 days', NULL, NULL, NULL,
  171. '#46待审核-仅关联WO-007(已取消),转工单应被允许', now(), now()),
  172. -- 误报解除样本:已写审核结论=2,不产生工单
  173. ('t46-alarm-a14', 'TC-GS-202609160106', '太常漏失声波监测点', '漏失监测', '漏失预警', 'T46-WARN-LEAK',
  174. 5.20, 0.00, 5.00, 0, 4, 4.00, now() - interval '6 days', NULL, NULL, NULL,
  175. '#46已解除-误报(审核结论=2,不产生工单)', now(), now());
  176. -- ------------------------------------------------------------
  177. -- 5. 关联工单(work_order)
  178. -- 状态:0-待派单 1-待接单 2-已接单 3-处理中 4-待验收 5-已结案 6-延期中 7-已取消
  179. -- 无 order_type 列;用户ID列为 BIGINT;dept_id 见文件头说明
  180. -- ------------------------------------------------------------
  181. INSERT INTO app_user.work_order
  182. (order_no, alarm_id, device_id, device_code, order_level, order_desc, dept_id,
  183. dispatch_user, dispatch_time, receive_user, order_status, fault_time, create_time, update_time)
  184. VALUES
  185. ('T46-WO-001', 't46-alarm-a07', 'T46-EQ-PR-CN', 'CN-GS-202609160101', 0,
  186. '#46测试工单-城南压力超限待派单', 100, NULL, NULL, NULL, 0,
  187. now() - interval '6 hours', now(), now()),
  188. ('T46-WO-002', 't46-alarm-a08', 'T46-EQ-PR-CB', 'CB-GS-202609160102', 1,
  189. '#46测试工单-城北压力偏低待接单', 100, 1, now() - interval '7 hours', NULL, 1,
  190. now() - interval '7 hours', now(), now()),
  191. ('T46-WO-003', 't46-alarm-a09', 'T46-EQ-FL-TC', 'TC-GS-202609160103', 0,
  192. '#46测试工单-太常流量超限处理中', 100, 1, now() - interval '1 day', 2, 3,
  193. now() - interval '1 day' - interval '2 hours', now(), now()),
  194. ('T46-WO-004', 't46-alarm-a10', 'T46-EQ-FL-CB', 'CB-GS-202609160105', 1,
  195. '#46测试工单-城北出厂流量延期中', 100, 1, now() - interval '2 days', 2, 6,
  196. now() - interval '2 days', now(), now()),
  197. ('T46-WO-005', 't46-alarm-a11', 'T46-EQ-LK-CN', 'CN-GS-202609160104', 1,
  198. '#46测试工单-城南漏失待验收', 100, 1, now() - interval '3 days', 2, 4,
  199. now() - interval '3 days', now(), now()),
  200. ('T46-WO-006', 't46-alarm-a12', 'T46-EQ-LK-TC', 'TC-GS-202609160106', 0,
  201. '#46测试工单-太常漏失已结案', 100, 1, now() - interval '4 days', 2, 5,
  202. now() - interval '4 days', now(), now()),
  203. ('T46-WO-007', 't46-alarm-a13', 'T46-EQ-LK-TC', 'TC-GS-202609160106', 1,
  204. '#46测试工单-太常漏失已取消', 100, 1, now() - interval '5 days', NULL, 7,
  205. now() - interval '5 days', now(), now());
  206. INSERT INTO app_user.work_order_log
  207. (order_id, oper_type, oper_desc, oper_user_id, oper_user_name, oper_time)
  208. SELECT order_id, 0, '#46测试-报警审核转工单创建', 1, '调度管理员', now()
  209. FROM app_user.work_order WHERE order_no LIKE 'T46-WO-%';
  210. -- ------------------------------------------------------------
  211. -- 6. 报警审核记录(alarm_audit)
  212. -- audit_action 1-转工单 2-误报解除;audit_result 1-属实 2-误报
  213. -- ------------------------------------------------------------
  214. INSERT INTO app_user.alarm_audit
  215. (alarm_id, audit_action, audit_result, audit_opinion, attach_url,
  216. audit_user_id, audit_user_name, audit_time, create_time, update_time)
  217. VALUES
  218. ('t46-alarm-a07', 1, 1, '#46测试审核:压力超限属实,转故障维修工单', NULL,
  219. 1, '调度管理员', now() - interval '6 hours', now(), now()),
  220. ('t46-alarm-a09', 1, 1, '#46测试审核:流量超限属实,转故障维修工单', NULL,
  221. 1, '调度管理员', now() - interval '1 day', now(), now()),
  222. ('t46-alarm-a14', 2, 2, '#46测试审核:现场核实为误报,解除报警且不生成工单',
  223. 'https://example.com/t46-false-alarm-evidence.jpg',
  224. 1, '调度管理员', now() - interval '6 days', now(), now());
  225. -- ============================================================
  226. -- 清理脚本(如需移除本批测试数据,执行以下语句)
  227. -- ============================================================
  228. -- DELETE FROM app_user.alarm_audit WHERE alarm_id LIKE 't46-alarm-%';
  229. -- DELETE FROM app_user.work_order_log WHERE order_id IN
  230. -- (SELECT order_id FROM app_user.work_order WHERE order_no LIKE 'T46-WO-%');
  231. -- DELETE FROM app_user.work_order WHERE order_no LIKE 'T46-WO-%' OR alarm_id LIKE 't46-alarm-%';
  232. -- DELETE FROM app_user.alarm_data WHERE id LIKE 't46-alarm-%';
  233. -- DELETE FROM app_user.warning_threshold WHERE id LIKE 't46-thr-%' OR device_code LIKE 'T46-%';
  234. -- DELETE FROM app_user.equipment_status WHERE equipment_id LIKE 'T46-EQ-%';
  235. -- DELETE FROM app_user.equipment_base WHERE equipment_id LIKE 'T46-EQ-%';
  236. -- DELETE FROM app_user.equipment_type WHERE id LIKE 'T46-WATER-%';