water_supply_monitoring_test_data.sql 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. -- ============================================================
  2. -- 供水管网 T4 运行监测 测试数据脚本(KingbaseES)
  3. -- 说明:
  4. -- 1. 测试主键均使用 WS-TEST- 前缀,可重复执行;设备编码遵循新命名规范。
  5. -- 2. 设备编码遵循“区域-类型-YYYYMMDD+4位流水号”规范。
  6. -- 3. 本脚本只初始化测试行,不创建监测业务表;执行前请确认以下表已存在:
  7. -- app_user.equipment_type、app_user.equipment_base、app_user.radar_data、
  8. -- app_user.telemetry_data、app_user.firefighting_pressure、app_user.noise_info
  9. -- 如测量表 device_code 仍为 varchar(10),请先执行 migration_monitoring_device_code_length.sql。
  10. -- 4. 覆盖场景:雷达流量、遥测流量、压力、漏失、无数据设备、
  11. -- 非供水设备排除、数值范围过滤、时间范围过滤与近24小时之外的旧趋势点。
  12. -- ============================================================
  13. -- ------------------------------------------------------------
  14. -- 0. 清理历史测试数据(先清测量值,再清设备;不删除生产设备类型)
  15. -- ------------------------------------------------------------
  16. DELETE FROM app_user.radar_data WHERE id LIKE 'WS-TEST-%';
  17. DELETE FROM app_user.telemetry_data WHERE id LIKE 'WS-TEST-%';
  18. DELETE FROM app_user.firefighting_pressure WHERE id LIKE 'WS-TEST-%';
  19. DELETE FROM app_user.noise_info WHERE encode LIKE 'WS-TEST-%' OR encode LIKE 'CB-GS-20260902000%' OR encode LIKE 'TC-GS-20260902000%';
  20. DELETE FROM app_user.equipment_base WHERE equipment_id LIKE 'WS-TEST-EQ-%';
  21. -- ------------------------------------------------------------
  22. -- 1. 复用既有设备类型:id=1/type_id=water_supply,监测子类型严格挂在 parent_type_id=1
  23. -- ------------------------------------------------------------
  24. DO $$
  25. DECLARE
  26. v_type_count integer;
  27. BEGIN
  28. SELECT count(*) INTO v_type_count
  29. FROM app_user.equipment_type
  30. WHERE id = '1' AND type_id = 'water_supply' AND parent_type_id = '0';
  31. IF v_type_count <> 1 THEN
  32. RAISE EXCEPTION '缺少规范供水顶级设备类型:id=1,type_id=water_supply,parent_type_id=0';
  33. END IF;
  34. SELECT count(*) INTO v_type_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_type_count <> 3 THEN
  39. RAISE EXCEPTION '缺少规范供水监测子类型:ws_flow/ws_pressure/ws_leak 必须 parent_type_id=1';
  40. END IF;
  41. SELECT count(*) INTO v_type_count
  42. FROM app_user.equipment_type
  43. WHERE id <> '1' AND type_id NOT IN ('water_supply', 'ws_flow', 'ws_pressure', 'ws_leak');
  44. IF v_type_count = 0 THEN
  45. RAISE EXCEPTION '缺少非供水设备类型,无法构造边界排除样本';
  46. END IF;
  47. END $$;
  48. INSERT INTO app_user.equipment_base
  49. (equipment_id, equipment_code, equipment_name, equipment_model, equipment_type_id,
  50. longitude, latitude, equipment_location, maintainer, maintainer_phone,
  51. ownership_unit, remark, create_time, update_time, del_flag, district)
  52. VALUES
  53. ('WS-TEST-EQ-FLOW-RADAR', 'CN-GS-202609020001', '测试雷达流量监测点', 'RADAR-FLOW-TEST',
  54. (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_flow' AND parent_type_id = '1' LIMIT 1), 113.28000000, 23.12000000, '供水测试大道1号',
  55. '供水测试维护员', '13800000001', '供水测试公司', '供水T4运行监测测试数据',
  56. now() - interval '7 days', now(), '0', '供水测试区'),
  57. ('WS-TEST-EQ-FLOW-TELEMETRY', 'CN-GS-202609020002', '测试遥测终端流量监测点', 'TELEMETRY-FLOW-TEST',
  58. (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_flow' AND parent_type_id = '1' LIMIT 1), 113.29000000, 23.13000000, '供水测试大道2号',
  59. '供水测试维护员', '13800000002', '供水测试公司', '供水T4运行监测测试数据',
  60. now() - interval '7 days', now(), '0', '供水测试区'),
  61. ('WS-TEST-EQ-PRESSURE', 'CB-GS-202609020001', '测试压力监测点', 'PRESSURE-TEST',
  62. (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_pressure' AND parent_type_id = '1' LIMIT 1), 113.30000000, 23.14000000, '供水测试大道3号',
  63. '供水测试维护员', '13800000003', '供水测试公司', '供水T4运行监测测试数据',
  64. now() - interval '7 days', now(), '0', '供水测试区'),
  65. ('WS-TEST-EQ-LEAKAGE', 'TC-GS-202609020001', '测试漏失监测点', 'LEAKAGE-TEST',
  66. (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_leak' AND parent_type_id = '1' LIMIT 1), 113.31000000, 23.15000000, '供水测试大道4号',
  67. '供水测试维护员', '13800000004', '供水测试公司', '供水T4运行监测测试数据',
  68. now() - interval '7 days', now(), '0', '供水测试区'),
  69. ('WS-TEST-EQ-FLOW-EMPTY', 'CN-GS-202609020003', '测试无测量流量监测点', 'FLOW-EMPTY-TEST',
  70. (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_flow' AND parent_type_id = '1' LIMIT 1), 113.32000000, 23.16000000, '供水测试大道5号',
  71. '供水测试维护员', '13800000005', '供水测试公司', '供水T4运行监测无数据测试设备',
  72. now() - interval '7 days', now(), '0', '供水测试区'),
  73. ('WS-TEST-EQ-FLOW-003', 'CN-GS-202609020004', '测试流量监测点03', 'FLOW-TEST-003',
  74. (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_flow' AND parent_type_id = '1' LIMIT 1), 113.34000000, 23.18000000, '供水测试大道7号',
  75. '供水测试维护员', '13800000007', '供水测试公司', '供水T4流量分页测试设备',
  76. now() - interval '7 days', now(), '0', '供水测试区'),
  77. ('WS-TEST-EQ-FLOW-004', 'CN-GS-202609020005', '测试流量监测点04', 'FLOW-TEST-004',
  78. (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_flow' AND parent_type_id = '1' LIMIT 1), 113.35000000, 23.19000000, '供水测试大道8号',
  79. '供水测试维护员', '13800000008', '供水测试公司', '供水T4流量分页测试设备',
  80. now() - interval '7 days', now(), '0', '供水测试区'),
  81. ('WS-TEST-EQ-FLOW-005', 'CN-GS-202609020006', '测试流量监测点05', 'FLOW-TEST-005',
  82. (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_flow' AND parent_type_id = '1' LIMIT 1), 113.36000000, 23.20000000, '供水测试大道9号',
  83. '供水测试维护员', '13800000009', '供水测试公司', '供水T4流量分页测试设备',
  84. now() - interval '7 days', now(), '0', '供水测试区'),
  85. ('WS-TEST-EQ-FLOW-006', 'CN-GS-202609020007', '测试流量监测点06', 'FLOW-TEST-006',
  86. (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_flow' AND parent_type_id = '1' LIMIT 1), 113.37000000, 23.21000000, '供水测试大道10号',
  87. '供水测试维护员', '13800000010', '供水测试公司', '供水T4流量分页测试设备',
  88. now() - interval '7 days', now(), '0', '供水测试区'),
  89. ('WS-TEST-EQ-FLOW-007', 'CN-GS-202609020008', '测试流量监测点07', 'FLOW-TEST-007',
  90. (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_flow' AND parent_type_id = '1' LIMIT 1), 113.38000000, 23.22000000, '供水测试大道11号',
  91. '供水测试维护员', '13800000011', '供水测试公司', '供水T4流量分页测试设备',
  92. now() - interval '7 days', now(), '0', '供水测试区'),
  93. ('WS-TEST-EQ-FLOW-008', 'CN-GS-202609020009', '测试流量监测点08', 'FLOW-TEST-008',
  94. (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_flow' AND parent_type_id = '1' LIMIT 1), 113.39000000, 23.23000000, '供水测试大道12号',
  95. '供水测试维护员', '13800000012', '供水测试公司', '供水T4流量分页测试设备',
  96. now() - interval '7 days', now(), '0', '供水测试区'),
  97. ('WS-TEST-EQ-FLOW-009', 'CN-GS-202609020010', '测试流量监测点09', 'FLOW-TEST-009',
  98. (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_flow' AND parent_type_id = '1' LIMIT 1), 113.40000000, 23.24000000, '供水测试大道13号',
  99. '供水测试维护员', '13800000013', '供水测试公司', '供水T4流量分页测试设备',
  100. now() - interval '7 days', now(), '0', '供水测试区'),
  101. ('WS-TEST-EQ-FLOW-010', 'CN-GS-202609020011', '测试流量监测点10', 'FLOW-TEST-010',
  102. (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_flow' AND parent_type_id = '1' LIMIT 1), 113.41000000, 23.25000000, '供水测试大道14号',
  103. '供水测试维护员', '13800000014', '供水测试公司', '供水T4流量分页测试设备',
  104. now() - interval '7 days', now(), '0', '供水测试区'),
  105. ('WS-TEST-EQ-FLOW-011', 'CN-GS-202609020012', '测试流量监测点11', 'FLOW-TEST-011',
  106. (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_flow' AND parent_type_id = '1' LIMIT 1), 113.42000000, 23.26000000, '供水测试大道15号',
  107. '供水测试维护员', '13800000015', '供水测试公司', '供水T4流量分页测试设备',
  108. now() - interval '7 days', now(), '0', '供水测试区'),
  109. ('WS-TEST-EQ-FLOW-012', 'CN-GS-202609020013', '测试流量监测点12', 'FLOW-TEST-012',
  110. (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_flow' AND parent_type_id = '1' LIMIT 1), 113.43000000, 23.27000000, '供水测试大道16号',
  111. '供水测试维护员', '13800000016', '供水测试公司', '供水T4流量分页测试设备',
  112. now() - interval '7 days', now(), '0', '供水测试区'),
  113. ('WS-TEST-EQ-PRESSURE-002', 'CB-GS-202609020002', '测试压力监测点02', 'PRESSURE-TEST-002',
  114. (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_pressure' AND parent_type_id = '1' LIMIT 1), 113.44000000, 23.28000000, '供水测试大道17号',
  115. '供水测试维护员', '13800000017', '供水测试公司', '供水T4压力分页测试设备',
  116. now() - interval '7 days', now(), '0', '供水测试区'),
  117. ('WS-TEST-EQ-PRESSURE-003', 'CB-GS-202609020003', '测试压力监测点03', 'PRESSURE-TEST-003',
  118. (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_pressure' AND parent_type_id = '1' LIMIT 1), 113.45000000, 23.29000000, '供水测试大道18号',
  119. '供水测试维护员', '13800000018', '供水测试公司', '供水T4压力分页测试设备',
  120. now() - interval '7 days', now(), '0', '供水测试区'),
  121. ('WS-TEST-EQ-LEAKAGE-002', 'TC-GS-202609020002', '测试漏失监测点02', 'LEAKAGE-TEST-002',
  122. (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_leak' AND parent_type_id = '1' LIMIT 1), 113.46000000, 23.30000000, '供水测试大道19号',
  123. '供水测试维护员', '13800000019', '供水测试公司', '供水T4漏失分页测试设备',
  124. now() - interval '7 days', now(), '0', '供水测试区'),
  125. ('WS-TEST-EQ-LEAKAGE-003', 'TC-GS-202609020003', '测试漏失监测点03', 'LEAKAGE-TEST-003',
  126. (SELECT id FROM app_user.equipment_type WHERE type_id = 'ws_leak' AND parent_type_id = '1' LIMIT 1), 113.47000000, 23.31000000, '供水测试大道20号',
  127. '供水测试维护员', '13800000020', '供水测试公司', '供水T4漏失分页测试设备',
  128. now() - interval '7 days', now(), '0', '供水测试区'),
  129. ('WS-TEST-EQ-OTHER-FLOW', 'CN-RQ-202609020001', '测试非供水流量监测点', 'OTHER-FLOW-TEST',
  130. (SELECT id FROM app_user.equipment_type
  131. WHERE id <> '1' AND type_id NOT IN ('water_supply', 'ws_flow', 'ws_pressure', 'ws_leak')
  132. LIMIT 1), 113.33000000, 23.17000000, '其他系统测试大道6号',
  133. '供水测试维护员', '13800000006', '供水测试公司', '供水T4非供水设备边界测试数据',
  134. now() - interval '7 days', now(), '0', '供水测试区');
  135. -- ------------------------------------------------------------
  136. -- 2. 雷达流量计数据
  137. -- 数值范围 20-40 时:最新 120 不符合,应回退到 30。
  138. -- 5 天前数据用于验证趋势时间范围过滤。
  139. -- ------------------------------------------------------------
  140. INSERT INTO app_user.radar_data
  141. (id, system_identifier, device_code, meter1_instant_flow, flow_speed, create_time)
  142. VALUES
  143. ('WS-TEST-RADAR-FLOW-001', 'WS-TEST-SYSTEM', 'CN-GS-202609020001', '30', '1.20',
  144. now() - interval '3 hours'),
  145. ('WS-TEST-RADAR-FLOW-002', 'WS-TEST-SYSTEM', 'CN-GS-202609020001', '120', '3.50',
  146. now() - interval '1 hour'),
  147. ('WS-TEST-RADAR-FLOW-003', 'WS-TEST-SYSTEM', 'CN-GS-202609020001', '18', '0.80',
  148. now() - interval '5 days'),
  149. ('WS-TEST-RADAR-FLOW-004', 'WS-TEST-SYSTEM', 'CN-GS-202609020004', '25', '1.00', now() - interval '1 hour'),
  150. ('WS-TEST-RADAR-FLOW-005', 'WS-TEST-SYSTEM', 'CN-GS-202609020005', '35', '1.10', now() - interval '2 hours'),
  151. ('WS-TEST-RADAR-FLOW-006', 'WS-TEST-SYSTEM', 'CN-GS-202609020006', '45', '1.20', now() - interval '3 hours'),
  152. ('WS-TEST-RADAR-FLOW-007', 'WS-TEST-SYSTEM', 'CN-GS-202609020007', '55', '1.30', now() - interval '4 hours'),
  153. ('WS-TEST-RADAR-FLOW-008', 'WS-TEST-SYSTEM', 'CN-GS-202609020008', '65', '1.40', now() - interval '5 hours'),
  154. ('WS-TEST-RADAR-OTHER-FLOW-001', 'WS-TEST-SYSTEM', 'CN-RQ-202609020001', '66', '2.00',
  155. now() - interval '1 hour');
  156. -- ------------------------------------------------------------
  157. -- 3. 遥测终端流量数据(device_code 与 equipment_base.equipment_code 关联)
  158. -- ------------------------------------------------------------
  159. INSERT INTO app_user.telemetry_data
  160. (id, system_identifier, device_code, meter1_instant_flow, meter1_positive_total,
  161. flow_speed, temperature, create_time)
  162. VALUES
  163. ('WS-TEST-TELEMETRY-001', 'WS-TEST-SYSTEM', 'CN-GS-202609020002', '42', '12345',
  164. '1.80', '24.50', now() - interval '2 hours'),
  165. ('WS-TEST-TELEMETRY-002', 'WS-TEST-SYSTEM', 'CN-GS-202609020002', '36', '12300',
  166. '1.50', '24.00', now() - interval '4 hours'),
  167. ('WS-TEST-TELEMETRY-003', 'WS-TEST-SYSTEM', 'CN-GS-202609020002', '20', '12200',
  168. '0.90', '23.50', now() - interval '5 days');
  169. INSERT INTO app_user.telemetry_data
  170. (id, system_identifier, device_code, meter1_instant_flow, meter1_positive_total,
  171. flow_speed, temperature, create_time)
  172. VALUES
  173. ('WS-TEST-TELEMETRY-004', 'WS-TEST-SYSTEM', 'CN-GS-202609020009', '18', '10008', '0.80', '23.80', now() - interval '1 hour'),
  174. ('WS-TEST-TELEMETRY-005', 'WS-TEST-SYSTEM', 'CN-GS-202609020010', '28', '10009', '0.90', '23.90', now() - interval '2 hours'),
  175. ('WS-TEST-TELEMETRY-006', 'WS-TEST-SYSTEM', 'CN-GS-202609020011', '38', '10010', '1.00', '24.10', now() - interval '3 hours'),
  176. ('WS-TEST-TELEMETRY-007', 'WS-TEST-SYSTEM', 'CN-GS-202609020012', '48', '10011', '1.10', '24.20', now() - interval '4 hours'),
  177. ('WS-TEST-TELEMETRY-008', 'WS-TEST-SYSTEM', 'CN-GS-202609020013', '58', '10012', '1.20', '24.30', now() - interval '5 hours');
  178. -- ------------------------------------------------------------
  179. -- 4. 消防压力数据(telemetering_station 与 equipment_base.equipment_code 关联)
  180. -- ------------------------------------------------------------
  181. INSERT INTO app_user.firefighting_pressure
  182. (id, central_station, telemetering_station, sending_time, observed_time,
  183. pressure_value, create_time)
  184. VALUES
  185. ('WS-TEST-PRESSURE-001', 'WS-TEST-CENTER', 'CB-GS-202609020001',
  186. now() - interval '3 hours', now() - interval '3 hours', 0.42, now() - interval '3 hours'),
  187. ('WS-TEST-PRESSURE-002', 'WS-TEST-CENTER', 'CB-GS-202609020001',
  188. now() - interval '1 hour', now() - interval '1 hour', 0.95, now() - interval '1 hour'),
  189. ('WS-TEST-PRESSURE-003', 'WS-TEST-CENTER', 'CB-GS-202609020001',
  190. now() - interval '5 days', now() - interval '5 days', 0.20, now() - interval '5 days');
  191. INSERT INTO app_user.firefighting_pressure
  192. (id, central_station, telemetering_station, sending_time, observed_time,
  193. pressure_value, create_time)
  194. VALUES
  195. ('WS-TEST-PRESSURE-004', 'WS-TEST-CENTER', 'CB-GS-202609020002',
  196. now() - interval '2 hours', now() - interval '2 hours', 0.55, now() - interval '2 hours'),
  197. ('WS-TEST-PRESSURE-005', 'WS-TEST-CENTER', 'CB-GS-202609020003',
  198. now() - interval '1 hour', now() - interval '1 hour', 0.75, now() - interval '1 hour');
  199. -- ------------------------------------------------------------
  200. -- 5. 漏失噪声数据(encode 与 equipment_base.equipment_code 关联)
  201. -- ------------------------------------------------------------
  202. INSERT INTO app_user.noise_info
  203. (encode, power, gain, rms, center_frequency, ts, create_time, update_time)
  204. VALUES
  205. ('TC-GS-202609020001', 12.00, 2.00, 120, 800.00,
  206. to_char(now() - interval '2 hours', 'YYYY-MM-DD HH24:MI:SS'),
  207. now() - interval '2 hours', now() - interval '2 hours'),
  208. ('TC-GS-202609020001', 9.00, 2.00, 100, 780.00,
  209. to_char(now() - interval '4 hours', 'YYYY-MM-DD HH24:MI:SS'),
  210. now() - interval '4 hours', now() - interval '4 hours'),
  211. ('TC-GS-202609020001', 5.00, 1.00, 80, 700.00,
  212. to_char(now() - interval '5 days', 'YYYY-MM-DD HH24:MI:SS'),
  213. now() - interval '5 days', now() - interval '5 days');
  214. INSERT INTO app_user.noise_info
  215. (encode, power, gain, rms, center_frequency, ts, create_time, update_time)
  216. VALUES
  217. ('TC-GS-202609020002', 15.00, 2.50, 125, 820.00,
  218. to_char(now() - interval '1 hour', 'YYYY-MM-DD HH24:MI:SS'),
  219. now() - interval '1 hour', now() - interval '1 hour'),
  220. ('TC-GS-202609020003', 18.00, 3.00, 130, 840.00,
  221. to_char(now() - interval '2 hours', 'YYYY-MM-DD HH24:MI:SS'),
  222. now() - interval '2 hours', now() - interval '2 hours');
  223. -- ------------------------------------------------------------
  224. -- 快速核验:
  225. -- 规范 ws_flow 流量设备共13台(其中12台有 radar/telemetry 测量记录,1台无数据);
  226. -- 流量分页(默认最新值):12台有测量设备各返回1条;雷达流量点最新值120,遥测流量点最新值42;
  227. -- 流量分页 flowMin=20&flowMax=40:符合范围的雷达/遥测点共7条(含回退到雷达30、遥测36);
  228. -- 压力分页 pressureMin=0.30&pressureMax=0.60:0.42、0.55,共2条;
  229. -- 漏失分页 powerMin=8&powerMax=15:12、15,共2条;
  230. -- CN-GS-202609020003 无测量数据,不应出现在任何监测页。
  231. -- CN-RQ-202609020001 如数据库存在其他系统类型则带入该类型;不在供水规范子类型内,不应出现在监测页。
  232. -- ============================================================