water_supply_facility_test_data.sql 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. -- ============================================================
  2. -- 供水管网统计分析 / GIS 一张图接口测试数据
  3. -- KingbaseES / PostgreSQL 兼容;目标 schema:app_user
  4. --
  5. -- 用法:
  6. -- 1. 先执行 water_supply_facility_gis.sql,确保四类点设施坐标列已存在。
  7. -- 管网设施的坐标列随统一管网表 pipe_network_base 提供,无需额外迁移。
  8. -- 2. 执行本脚本。本脚本按 GIS-TEST- 前缀清理后重建,可重复执行。
  9. -- 3. 通过末尾 SELECT 获取详情接口所需的实际主键 ID。
  10. -- 4. 测试完成后执行文件末尾注释中的清理 SQL。
  11. --
  12. -- 设计覆盖:
  13. -- - 五类设施的 Point / LineString GeoJSON;
  14. -- - 完整坐标与缺失坐标过滤;
  15. -- - 正常、异常、空状态;
  16. -- - 管径、铺设年代(含未填报)、材质、压力等级和用水量分组。
  17. -- ============================================================
  18. BEGIN;
  19. -- ------------------------------------------------------------
  20. -- 0. 清理本脚本历史数据
  21. -- ------------------------------------------------------------
  22. DELETE FROM app_user.water_source_info
  23. WHERE source_id LIKE 'GIS-TEST-%';
  24. DELETE FROM app_user.water_plant_info
  25. WHERE plant_code LIKE 'GIS-TEST-%';
  26. DELETE FROM app_user.pump_station
  27. WHERE station_code LIKE 'GIS-TEST-%'
  28. AND station_type = 'water_supply';
  29. DELETE FROM app_user.pipe_network_base
  30. WHERE network_code LIKE 'GIS-TEST-%'
  31. AND network_type = '2';
  32. DELETE FROM app_user.water_user_info
  33. WHERE user_code LIKE 'GIS-TEST-%';
  34. -- ------------------------------------------------------------
  35. -- 1. 水源地:2 个坐标完整 + 1 个缺失坐标
  36. -- ------------------------------------------------------------
  37. INSERT INTO app_user.water_source_info
  38. (source_id, source_name, source_type, unit, address, water_type,
  39. protection_level, water_quality_level, protection_scope, report_time,
  40. status, remark, del_flag, create_by, create_time, longitude, latitude)
  41. VALUES
  42. ('GIS-TEST-S-001', 'GIS测试水源地-东湖', '地表水', '东湖水务', '测试东湖路1号', '湖泊',
  43. '一级', 'II类', '半径500米', DATE '2025-01-15',
  44. '0', 'GIS接口测试-坐标完整-正常', '0', 'test', CURRENT_TIMESTAMP, 113.28000000, 23.12000000),
  45. ('GIS-TEST-S-002', 'GIS测试水源地-北河', '河流水源', '北河水务', '测试北河路2号', '河流',
  46. '二级', 'III类', '半径300米', DATE '2025-02-15',
  47. '1', 'GIS接口测试-坐标完整-异常', '0', 'test', CURRENT_TIMESTAMP, 113.29000000, 23.13000000),
  48. ('GIS-TEST-S-003', 'GIS测试水源地-待测', '地下水', '测试水务', '测试待测路3号', '地下水',
  49. '三级', 'IV类', '待补录', DATE '2025-03-15',
  50. NULL, 'GIS接口测试-缺失坐标-不应进入图层', '0', 'test', CURRENT_TIMESTAMP, NULL, NULL);
  51. -- ------------------------------------------------------------
  52. -- 2. 水厂:1 个坐标完整 + 1 个缺失坐标
  53. -- ------------------------------------------------------------
  54. INSERT INTO app_user.water_plant_info
  55. (plant_code, plant_name, "location", water_source_type,
  56. design_capacity, current_capacity, treatment_process,
  57. commission_date, water_quality_standard, status, principal,
  58. contact_phone, remark, del_flag, create_by, create_time, longitude, latitude)
  59. VALUES
  60. ('GIS-TEST-P-001', 'GIS测试水厂-一厂', '测试工业园88号', '地表水',
  61. 80000.00, 60000.00, '常规处理', DATE '2018-06-01', 'GB5749-2022', '0',
  62. '测试厂长', '13800000001', 'GIS接口测试-坐标完整-正常', '0', 'test', CURRENT_TIMESTAMP,
  63. 113.30000000, 23.14000000),
  64. ('GIS-TEST-P-002', 'GIS测试水厂-二厂', '测试开发区99号', '地下水',
  65. 50000.00, 45000.00, '深度处理', DATE '2020-08-01', 'GB5749-2022', '1',
  66. '测试厂长2', '13800000002', 'GIS接口测试-缺失坐标-概览计数', '0', 'test', CURRENT_TIMESTAMP,
  67. NULL, NULL);
  68. -- ------------------------------------------------------------
  69. -- 3. 泵站:1 个坐标完整 + 1 个缺失坐标
  70. -- 泵站表由供水/排水共用,必须以 station_type='water_supply' 限定供水口径。
  71. -- ------------------------------------------------------------
  72. INSERT INTO app_user.pump_station
  73. (station_code, station_name, "location", station_type, pump_count, design_flow,
  74. design_head, power_capacity, commission_date, status, principal,
  75. contact_phone, remark, del_flag, create_by, create_time, longitude, latitude)
  76. VALUES
  77. ('GIS-TEST-PS-001', 'GIS测试泵站-东区', '测试东区泵站路10号', 'water_supply', 4, 1200.00,
  78. 35.00, 450.00, DATE '2019-04-01', '0', '测试站长', '13800000003',
  79. 'GIS接口测试-坐标完整-正常', '0', 'test', CURRENT_TIMESTAMP, 113.31000000, 23.15000000),
  80. ('GIS-TEST-PS-002', 'GIS测试泵站-西区', '测试西区泵站路20号', 'water_supply', 2, 600.00,
  81. 28.00, 180.00, DATE '2021-09-01', NULL, '测试站长2', '13800000004',
  82. 'GIS接口测试-缺失坐标-概览计数', '0', 'test', CURRENT_TIMESTAMP, NULL, NULL);
  83. -- ------------------------------------------------------------
  84. -- 4. 管网:3 条坐标完整 + 1 条缺失坐标
  85. -- 统一写入 pipe_network_base,network_type='2' 表示供水设施。
  86. -- 其中包含 build_date NULL,验证“未填报”分组;
  87. -- 原压力等级口径已退场,改用 network_level 等级(pipe_network_level 字典)。
  88. -- ------------------------------------------------------------
  89. INSERT INTO app_user.pipe_network_base
  90. (network_id, network_code, network_name, network_type, network_level,
  91. management_unit, location, length, diameter, material, build_date, status,
  92. remark, del_flag, create_by, create_time,
  93. start_longitude, start_latitude, end_longitude, end_latitude)
  94. VALUES
  95. ('GIS-TEST-PIPE-001', 'GIS-TEST-PIPE-001', 'GIS测试管网-东湖主干线', '2', '0',
  96. '测试水务', '东湖水源地→一厂', 12500.50, 800, '球墨铸铁', DATE '2012-01-01', '0',
  97. 'GIS接口测试-完整LineString-大管径', '0', 'test', CURRENT_TIMESTAMP,
  98. 113.28000000, 23.12000000, 113.30000000, 23.14000000),
  99. ('GIS-TEST-PIPE-002', 'GIS-TEST-PIPE-002', 'GIS测试管网-北河支线', '2', '2',
  100. '测试水务', '北河水源地→东区泵站', 6800.00, 250, '钢管', DATE '2021-01-01', '1',
  101. 'GIS接口测试-完整LineString-异常', '0', 'test', CURRENT_TIMESTAMP,
  102. 113.29000000, 23.13000000, 113.31000000, 23.15000000),
  103. ('GIS-TEST-PIPE-003', 'GIS-TEST-PIPE-003', 'GIS测试管网-待补年代线', '2', NULL,
  104. '测试水务', '东区泵站→测试用户1', 900.00, 80, NULL, NULL, NULL,
  105. 'GIS接口测试-完整LineString-空分组字段', '0', 'test', CURRENT_TIMESTAMP,
  106. 113.31000000, 23.15000000, 113.32000000, 23.16000000),
  107. ('GIS-TEST-PIPE-004', 'GIS-TEST-PIPE-004', 'GIS测试管网-缺失坐标线', '2', '3',
  108. '测试水务', '测试用户1→测试用户2', 1500.00, 300, 'PVC', DATE '2018-01-01', '0',
  109. 'GIS接口测试-缺失终点坐标-不应进入图层', '0', 'test', CURRENT_TIMESTAMP,
  110. 113.32000000, 23.16000000, NULL, NULL);
  111. -- ------------------------------------------------------------
  112. -- 5. 用水户:居民、工业、商业、行政事业均参与,4 个坐标完整 + 1 个缺失坐标
  113. -- ------------------------------------------------------------
  114. INSERT INTO app_user.water_user_info
  115. (user_code, user_name, user_type, address, contact_person,
  116. contact_phone, meter_number, initial_reading, current_reading,
  117. annual_water_consumption, status, remark, del_flag, create_by,
  118. create_time, longitude, latitude)
  119. VALUES
  120. ('GIS-TEST-U-001', 'GIS测试用水户-工业园', '工业', '测试工业园1号', '测试联系人1',
  121. '13800000005', 'GIS-METER-001', 1000.00, 52000.00, 51000.00, '0',
  122. 'GIS接口测试-坐标完整-工业', '0', 'test', CURRENT_TIMESTAMP, 113.32000000, 23.16000000),
  123. ('GIS-TEST-U-002', 'GIS测试用水户-医院', '行政事业', '测试医院2号', '测试联系人2',
  124. '13800000006', 'GIS-METER-002', 500.00, 12500.00, 12000.00, '1',
  125. 'GIS接口测试-坐标完整-行政事业', '0', 'test', CURRENT_TIMESTAMP, 113.33000000, 23.17000000),
  126. ('GIS-TEST-U-003', 'GIS测试用水户-商业街', '商业', '测试商业街3号', '测试联系人3',
  127. '13800000007', 'GIS-METER-003', 100.00, 800.00, 700.00, '0',
  128. 'GIS接口测试-坐标完整-商业', '0', 'test', CURRENT_TIMESTAMP, 113.34000000, 23.18000000),
  129. ('GIS-TEST-U-004', 'GIS测试用水户-居民', '居民', '测试小区4号', '测试联系人4',
  130. '13800000008', 'GIS-METER-004', 10.00, 120.00, 110.00, '0',
  131. 'GIS接口测试-坐标完整-居民', '0', 'test', CURRENT_TIMESTAMP, 113.35000000, 23.19000000),
  132. ('GIS-TEST-U-005', 'GIS测试用水户-缺失坐标', '商业', '测试商业街5号', '测试联系人5',
  133. '13800000009', 'GIS-METER-005', 100.00, 800.00, NULL, NULL,
  134. 'GIS接口测试-缺失坐标-概览计数', '0', 'test', CURRENT_TIMESTAMP, NULL, NULL);
  135. COMMIT;
  136. -- ------------------------------------------------------------
  137. -- 6. 验证输出
  138. -- ------------------------------------------------------------
  139. -- 预期:source=3/完整2,plant=2/完整1,pumpStation=2/完整1,pipe=4/完整3,user=5/完整4。
  140. SELECT 'source' facility_type, COUNT(*) total_count,
  141. COALESCE(SUM(CASE WHEN longitude IS NOT NULL AND latitude IS NOT NULL THEN 1 ELSE 0 END), 0) geo_complete_count
  142. FROM app_user.water_source_info WHERE source_id LIKE 'GIS-TEST-%'
  143. UNION ALL
  144. SELECT 'plant', COUNT(*), COALESCE(SUM(CASE WHEN longitude IS NOT NULL AND latitude IS NOT NULL THEN 1 ELSE 0 END), 0)
  145. FROM app_user.water_plant_info WHERE plant_code LIKE 'GIS-TEST-%'
  146. UNION ALL
  147. SELECT 'pumpStation', COUNT(*), COALESCE(SUM(CASE WHEN longitude IS NOT NULL AND latitude IS NOT NULL THEN 1 ELSE 0 END), 0)
  148. FROM app_user.pump_station WHERE station_code LIKE 'GIS-TEST-%' AND station_type = 'water_supply'
  149. UNION ALL
  150. SELECT 'pipe', COUNT(*), COALESCE(SUM(CASE WHEN start_longitude IS NOT NULL AND start_latitude IS NOT NULL
  151. AND end_longitude IS NOT NULL AND end_latitude IS NOT NULL THEN 1 ELSE 0 END), 0)
  152. FROM app_user.pipe_network_base WHERE network_code LIKE 'GIS-TEST-%' AND network_type = '2'
  153. UNION ALL
  154. SELECT 'user', COUNT(*), COALESCE(SUM(CASE WHEN longitude IS NOT NULL AND latitude IS NOT NULL THEN 1 ELSE 0 END), 0)
  155. FROM app_user.water_user_info WHERE user_code LIKE 'GIS-TEST-%';
  156. -- 详情接口 ID 查询:将结果中的 id 填入 /waterSupply/gis/map/detail/{facilityType}/{id}。
  157. SELECT 'source' facility_type, id, source_id code FROM app_user.water_source_info WHERE source_id LIKE 'GIS-TEST-%' ORDER BY source_id;
  158. SELECT 'plant' facility_type, id, plant_code code FROM app_user.water_plant_info WHERE plant_code LIKE 'GIS-TEST-%' ORDER BY plant_code;
  159. SELECT 'pumpStation' facility_type, id, station_code code FROM app_user.pump_station WHERE station_code LIKE 'GIS-TEST-%' AND station_type = 'water_supply' ORDER BY station_code;
  160. SELECT 'pipe' facility_type, network_id id, network_code code FROM app_user.pipe_network_base WHERE network_code LIKE 'GIS-TEST-%' AND network_type = '2' ORDER BY network_code;
  161. SELECT 'user' facility_type, id, user_code code FROM app_user.water_user_info WHERE user_code LIKE 'GIS-TEST-%' ORDER BY user_code;
  162. -- ============================================================
  163. -- 清理脚本(测试完成后手动执行)
  164. -- ============================================================
  165. -- DELETE FROM app_user.water_source_info WHERE source_id LIKE 'GIS-TEST-%';
  166. -- DELETE FROM app_user.water_plant_info WHERE plant_code LIKE 'GIS-TEST-%';
  167. -- DELETE FROM app_user.pump_station WHERE station_code LIKE 'GIS-TEST-%' AND station_type = 'water_supply';
  168. -- DELETE FROM app_user.pipe_network_base WHERE network_code LIKE 'GIS-TEST-%' AND network_type = '2';
  169. -- DELETE FROM app_user.water_user_info WHERE user_code LIKE 'GIS-TEST-%';