water_supply_device_test_data.sql 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. -- ============================================================
  2. -- 供水管网 T6 设备准入、台账与异常态势 测试数据脚本(KingbaseES)
  3. -- 说明:
  4. -- 1. 测试主键与编号均使用 T6-TEST- 前缀,可重复执行。
  5. -- 2. 本脚本只初始化测试数据,不创建业务表;执行前请确认以下表已存在:
  6. -- app_user.equipment_type、app_user.equipment_base、app_user.equipment_status、
  7. -- app_user.alarm_data、app_user.work_order
  8. -- 3. 覆盖场景:正常供水设备、报警供水设备、维修供水设备、离线供水设备、
  9. -- 非供水设备排除、有效报警原因、真实工单编号与状态。
  10. -- ============================================================
  11. -- ------------------------------------------------------------
  12. -- 0. 清理历史测试数据(先清工单与报警,再清状态与设备,最后清临时类型)
  13. -- ------------------------------------------------------------
  14. DELETE FROM app_user.work_order_log WHERE order_id IN
  15. (SELECT order_id FROM app_user.work_order WHERE order_no LIKE 'T6-TEST-WO-%');
  16. DELETE FROM app_user.work_order WHERE order_no LIKE 'T6-TEST-WO-%';
  17. DELETE FROM app_user.alarm_data WHERE id LIKE 'T6-TEST-ALARM-%';
  18. DELETE FROM app_user.equipment_status WHERE equipment_id LIKE 'T6-TEST-EQ-%';
  19. DELETE FROM app_user.equipment_base WHERE equipment_id LIKE 'T6-TEST-EQ-%';
  20. DELETE FROM app_user.equipment_type WHERE id = 'T6-TEST-GAS-TYPE';
  21. -- ------------------------------------------------------------
  22. -- 1. 校验规范供水设备类型,并创建临时非供水类型用于边界排除
  23. -- ------------------------------------------------------------
  24. DO $$
  25. DECLARE
  26. v_count integer;
  27. BEGIN
  28. SELECT count(*) INTO v_count
  29. FROM app_user.equipment_type
  30. WHERE id = '1' AND parent_type_id = '0' AND type_name = '供水';
  31. IF v_count <> 1 THEN
  32. RAISE EXCEPTION '缺少规范供水顶级设备类型:id=1,type_name=供水,parent_type_id=0';
  33. END IF;
  34. SELECT count(*) INTO v_count
  35. FROM app_user.equipment_type
  36. WHERE type_id IN ('ws_flow', 'ws_pressure', 'ws_leak')
  37. AND parent_type_id = '1';
  38. IF v_count <> 3 THEN
  39. RAISE EXCEPTION '缺少规范供水监测子类型:ws_flow/ws_pressure/ws_leak 必须 parent_type_id=1';
  40. END IF;
  41. END $$;
  42. INSERT INTO app_user.equipment_type
  43. (id, type_id, type_name, parent_type_id, type_remark)
  44. VALUES
  45. ('T6-TEST-GAS-TYPE', 't6_test_gas', '燃气(测试)', '0', 'T6非供水设备排除测试类型');
  46. -- ------------------------------------------------------------
  47. -- 2. 设备基础信息(4台供水设备 + 1台非供水设备)
  48. -- ------------------------------------------------------------
  49. INSERT INTO app_user.equipment_base
  50. (equipment_id, equipment_code, equipment_name, equipment_model, equipment_type_id,
  51. longitude, latitude, equipment_location, maintainer, maintainer_phone,
  52. ownership_unit, remark, create_time, update_time, del_flag, district)
  53. VALUES
  54. ('T6-TEST-EQ-PRESSURE-ALARM', 'CN-GS-202609020001', 'T6测试压力报警设备', 'PRESSURE-T6',
  55. (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_pressure' AND parent_type_id = '1' LIMIT 1),
  56. 113.28000000, 23.12000000, 'T6测试大道1号', 'T6测试维护员', '13800000001',
  57. 'T6测试供水公司', 'T6设备准入与异常态势测试数据', now() - interval '7 days', now(), '0', '城南'),
  58. ('T6-TEST-EQ-FLOW-REPAIR', 'CB-GS-202609020001', 'T6测试流量维修设备', 'FLOW-T6',
  59. (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_flow' AND parent_type_id = '1' LIMIT 1),
  60. 113.29000000, 23.13000000, 'T6测试大道2号', 'T6测试维护员', '13800000002',
  61. 'T6测试供水公司', 'T6设备准入与异常态势测试数据', now() - interval '7 days', now(), '0', '城北'),
  62. ('T6-TEST-EQ-LEAK-OFFLINE', 'TC-GS-202609020001', 'T6测试漏失离线设备', 'LEAK-T6',
  63. (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_leak' AND parent_type_id = '1' LIMIT 1),
  64. 113.30000000, 23.14000000, 'T6测试大道3号', 'T6测试维护员', '13800000003',
  65. 'T6测试供水公司', 'T6设备准入与异常态势测试数据', now() - interval '7 days', now(), '0', '太常'),
  66. ('T6-TEST-EQ-PRESSURE-NORMAL', 'CN-GS-202609020002', 'T6测试压力正常设备', 'PRESSURE-T6',
  67. (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_pressure' AND parent_type_id = '1' LIMIT 1),
  68. 113.31000000, 23.15000000, 'T6测试大道4号', 'T6测试维护员', '13800000004',
  69. 'T6测试供水公司', 'T6设备准入与异常态势测试数据', now() - interval '7 days', now(), '0', '城南'),
  70. ('T6-TEST-EQ-GAS-EXCLUDED', 'CN-RQ-202609020001', 'T6测试燃气排除设备', 'GAS-T6',
  71. 'T6-TEST-GAS-TYPE', 113.32000000, 23.16000000, 'T6测试大道5号',
  72. 'T6测试维护员', '13800000005', 'T6测试燃气公司', 'T6非供水排除测试数据',
  73. now() - interval '7 days', now(), '0', '城南');
  74. -- ------------------------------------------------------------
  75. -- 3. 设备状态(current_status / alarm_status / online_status 分别表达不同状态)
  76. -- ------------------------------------------------------------
  77. INSERT INTO app_user.equipment_status
  78. (equipment_id, current_status, alarm_status, online_status,
  79. installation_addr, status_update_time, create_time, del_flag)
  80. VALUES
  81. ('T6-TEST-EQ-PRESSURE-ALARM', 1, 1, 1, 'T6测试大道1号',
  82. now() - interval '1 hour', now() - interval '1 hour', '0'),
  83. ('T6-TEST-EQ-FLOW-REPAIR', 3, 0, 0, 'T6测试大道2号',
  84. now() - interval '2 hours', now() - interval '2 hours', '0'),
  85. ('T6-TEST-EQ-LEAK-OFFLINE', 1, 0, 0, 'T6测试大道3号',
  86. now() - interval '3 hours', now() - interval '3 hours', '0'),
  87. ('T6-TEST-EQ-PRESSURE-NORMAL', 1, 0, 1, 'T6测试大道4号',
  88. now() - interval '4 hours', now() - interval '4 hours', '0'),
  89. ('T6-TEST-EQ-GAS-EXCLUDED', 1, 1, 1, 'T6测试大道5号',
  90. now() - interval '5 hours', now() - interval '5 hours', '0');
  91. -- ------------------------------------------------------------
  92. -- 4. 有效报警原因(供水报警设备 + 非供水排除设备)
  93. -- ------------------------------------------------------------
  94. INSERT INTO app_user.alarm_data
  95. (id, device_code, device_name, device_type, warning_type, warning_code,
  96. min_value, max_value, actual_value, alarm_level, deviation_ratio,
  97. alarm_status, alarm_time, handle_time, handle_user, handle_remark, remark,
  98. create_time, update_time)
  99. VALUES
  100. ('T6-TEST-ALARM-PRESSURE', 'CN-GS-202609020001', 'T6测试压力报警设备', '压力监测',
  101. '供水压力超限', 'WARN-PRESSURE-T6', 0.20, 0.80, 1.20, 2, 50.00,
  102. 0, now() - interval '1 hour', NULL, NULL, NULL, 'T6设备异常态势测试数据',
  103. now() - interval '1 hour', now() - interval '1 hour'),
  104. ('T6-TEST-ALARM-GAS-EXCLUDED', 'CN-RQ-202609020001', 'T6测试燃气排除设备', '燃气监测',
  105. '燃气浓度超限', 'WARN-GAS-T6', 0.00, 20.00, 45.00, 1, 125.00,
  106. 0, now() - interval '1 hour', NULL, NULL, NULL, 'T6非供水排除测试数据',
  107. now() - interval '1 hour', now() - interval '1 hour');
  108. -- ------------------------------------------------------------
  109. -- 5. 关联统一工单(真实 order_no,不用随机 ID)
  110. -- ------------------------------------------------------------
  111. INSERT INTO app_user.work_order
  112. (order_no, alarm_id, case_id, case_no, device_id, device_code,
  113. order_type, order_level, order_desc, dept_id, dispatch_user, dispatch_time,
  114. receive_user, order_status, delayed_reason, delayed_deadline, plan_finish_time,
  115. real_finish_time, repair_result, maintenance_before_img, maintenance_after_img,
  116. verify_user, verify_time, create_time, update_time)
  117. VALUES
  118. ('T6-TEST-WO-001', 'T6-TEST-ALARM-PRESSURE', NULL, NULL,
  119. 'T6-TEST-EQ-PRESSURE-ALARM', 'CN-GS-202609020001',
  120. 1, 2, 'T6供水压力超限故障维修', NULL, NULL, now() - interval '50 minutes',
  121. '1', 4, NULL, NULL, now() + interval '1 day',
  122. NULL, NULL, NULL, NULL, NULL, NULL, now() - interval '50 minutes', now()),
  123. ('T6-TEST-WO-002', NULL, NULL, NULL,
  124. 'T6-TEST-EQ-FLOW-REPAIR', 'CB-GS-202609020001',
  125. 1, 2, 'T6供水流量设备维修', NULL, NULL, now() - interval '2 hours',
  126. '2', 4, NULL, NULL, now() + interval '1 day',
  127. NULL, NULL, NULL, NULL,
  128. NULL, NULL, now() - interval '2 hours', now());
  129. -- ============================================================
  130. -- 快速核验:
  131. -- 1. 供水设备台账应包含 4 台 T6 供水设备,不包含 CN-RQ-202609020001。
  132. -- 2. 异常设备页应包含压力报警设备与流量维修设备;正常压力设备与漏失离线设备不进入异常页。
  133. -- 3. CN-GS-202609020001 的异常原因为“供水压力超限”,关联工单号为 T6-TEST-WO-001,状态为处理中。
  134. -- 4. CB-GS-202609020001 的异常原因为设备维修中,关联工单号为 T6-TEST-WO-002,状态为处理中。
  135. -- 5. CN-RQ-202609020001 属于燃气测试类型,任何供水页面均不应展示。
  136. -- ============================================================