# 2026-09-09:water_pipe_info 收尾迁移(E 顺序执行) ## 目标 延续 09-08 管网信息查询页重构(4 票已完成):确认 `water_pipe_info` 表剩余关联后,按用户确认的 A2 决策(选项 2:压力分布图改为「等级分布」,`network_level` + `pipe_network_level` 字典)执行 E1→E4,删除旧表全部接口与实体类。 ## 决策与前提 - 用户已确认按 E 顺序执行,无异议项照做。 - 数据迁移(`water_pipe_info` → `pipe_network_base`,`network_type='2'`)由用户侧执行,先于代码上线生效;SQL 迁移前 GIS/统计页会查不到管网数据。 - 所有迁移 SQL 统一追加 `network_type = '2'`(新表为燃气/排水/供水共用表)。 - `location` 在 KingBase 是保留字,GIS mapper 中必须带引号 `"location"`(与 plant/pumpStation 一致)。 ## 变更明细 ### 后端(E:\pipe-ner-server\pipe-network-service,未提交) - **E1a GIS**: - `mapper/WaterSupply/WaterSupplyGisMap/WaterSupplyGisMapMapper.xml`:`selectPipeFeatures` 与 `selectOverview` 的 pipe 段改读 `app_user.pipe_network_base`(`network_type='2'`,输出键保持 id/code/name/status/location + 4 坐标)。 - `WaterSupplyGisMapService.getDetail(String, Long)` → `(String, String)`(管网主键为 UUID);实现注入 `PipeNetworkBaseService` 替代 `IWaterPipeInfoService`,pipe 分支 `getById(id)`,其余分支 `Long.valueOf(id)`;控制器 `@PathVariable Long id` → `String id`。 - `WaterSupplyGisMapServiceTest` / `WaterSupplyGisMapControllerTest` 调用点 Long→String。 - **E1b 统计**: - `mapper/WaterSupply/PipeNetworkStatistics/PipeNetworkStatisticsMapper.xml` 6 条管网 SQL 改读 `pipe_network_base`(`network_type='2'`):设施概览 pipe 段、summary(length/diameter)、管材分布(material)、管径分布(diameter)、建设年代分布(`EXTRACT(YEAR FROM build_date)` + `MOD` 十年档,KingBase 兼容)、`selectPipePressureDistribution` → **`selectPipeLevelDistribution`**(`COALESCE(network_level,'未填报')`,即 A2 选项 2);`selectStatusDistribution` pipe 分支改为子查询包裹 `network_type='2'`。 - `PipeNetworkStatisticsMapper.java` 同步重命名;`PipeNetworkStatisticsServiceImpl` dashboard key `pressureDistribution` → `levelDistribution`。 - **E3 删除**(7 个文件):`WaterPipeInfoController`、`WaterPipeInfo` 实体、`WaterPipeInfoMapper`(.java/.xml)、`IWaterPipeInfoService`、`WaterPipeInfoServiceImpl`、`WaterPipeExportDTO`。 - `WaterFacilityExportController` 移除 pipeService 字段与 `/pipe/export`、`/pipe/importData`、`/pipe/importTemplate` 三个端点(其余四类设施保留)。 - `WaterFacilityImportService` 移除 `importPipes`、pipeService 构造参数/字段、`preparePipe`、`initialize(WaterPipeInfo)`;类注释「五类」→「四类」。 - 测试适配:`WaterFacilityQueryServiceTest`(删 pipe 分页/导出测试与 mapper 路径)、`WaterFacilityImportServiceTest`(删 pipe 导入测试、构造器去参)、`FacilityCoordinateModelTest`(pipe 坐标实体改用 `PipeNetworkBase`;mapper 清单去 WaterPipeInfo;GIS location 断言适配)、`WaterFacilityExportControllerContractTest`(去 pipe 断言)。 - 保留:`sql/water_supply_facility_gis.sql` 历史迁移脚本中的 `water_pipe_info` ALTER(表尚未物理删除,脚本为历史事实)。 ### 前端(E:\city-life-line,未提交) - **E2** `WaterFacilityDashboard.vue`:`pressureDistribution:'压力等级分布'` → `levelDistribution:'等级分布'`(描述「按等级统计管网数量」);`onMounted` 拉取 `pipe_network_level` 字典,`formatStatisticRow` 对 `levelDistribution` 行做码值→字典标签翻译(未命中回退原值;组件内不得出现「未填报」字面量,有测试约束)。 - **E4** `src/api/pipeNetwork/waterSupply.js`:删除死代码 `exportWaterPipe`(`/api/water/pipe/export`),全仓 grep 无残留。 ## 验证 - `mvn -pl zksy-system,zksy-admin test`:zksy-system **95/95 通过**;zksy-admin 80 测中仅 `CockpitEquipmentDetailAggregateControllerTest` 2 个失败——该测试是用户进行中的驾驶舱设备聚合工作(工作区未跟踪文件),与本任务无关,未触碰。 - 前端 `node --test "tests/*.test.mjs"`:**75/75 通过**(含此前的 GisMapCanvas Icon 契约测试,用户并行改动已自行通过)。 - `git diff --check`:前端干净;后端仅 `logs/.../spring.log` 运行时日志有尾随空格(历史噪声,从不入暂存)。 - 残留 grep:后端 java/xml 中 `WaterPipeInfo|IWaterPipeInfoService|WaterPipeExportDTO|water_pipe_info` 仅剩迁移脚本断言 1 处(预期);前端 `exportWaterPipe|/api/water/pipe` 零残留。 ## 风险与后续 - 上线顺序:用户先执行数据迁移 SQL,再部署后端 + 前端,否则 GIS/统计的管网图层为空。 - 旧 `/api/water/pipe/*` 全部 404 属预期(前端已无调用方)。 - 两仓改动均未提交、未推送(约定:不 push)。后端用户并行改动(cockpit 相关文件、spring.log)不得混入本任务提交;提交时只暂存本任务文件。 - `length`/`diameter`/`material`/`build_date` 列名与 `PipeNetworkBase` 实体一致,统计 SQL 与分页共用字段,无额外映射。 ## 补充:供水 GIS Ticket #1/#2 - Ticket #1 已由用户人工验收并在 Gogs 关闭;测试断言同步为人工确认的标签高度偏移(`markerSize + 18`),随后连同管网迁移前端改动、会话记忆和无关临时文件清理一起推送到 `origin/master`。 - Ticket #2 新增 `WaterGisPageShell.vue`,把设施 GIS、监测设备 GIS 和报警 GIS 的页头、统计、筛选、图例、搜索结果、地图区和抽屉布局收敛到统一页壳;左侧面板改用单个有界滚动容器,报警图增加点位搜索结果列表。 - 清理了执行代理误引入的驾驶舱 #31 本地提交及聚类/管线端点越界测试;相关补丁仅保存在系统临时目录,未混入本次提交。 - 验证:`node --test "tests/*.test.mjs"` 79/79 通过;`node node_modules\vite\bin\vite.js build` 通过;`git diff --check` 通过。Spec 审查发现的坐标转换回归已恢复,Standards 审查余留插槽样式重复属 P3 非阻塞项。