# 2026-09-08:管网信息查询页重构 — 弃用 water_pipe_info,接入统一表 pipe_network_base ## 目标 供水设施管理-管网信息查询页从旧表 `app_user.water_pipe_info`(`/api/water/pipe/*`)重构为统一管网表 `app_user.pipe_network_base`(`/PipeNetworkBase/*`),废弃旧表链路(数据迁移由用户侧执行)。边界:仅管网信息查询相关代码,其余系统(含燃气)零改动。 ## 用户决策(本任务关键口径) - `network_type` 设施类型编码:**0-燃气 1-排水 2-供水**;供水页固定写 `2`。 - 筛选区不缩减:材质/管径/建设年份/创建时间范围全保留 → 后端同步加参。 - 导入/导出功能保留 → 后端补供水侧端点。 - `pressureRating(MPa)` 与 `networkLevel`(等级)含义不同,**不做映射**:旧"设计压力"字段弃用,"等级"为独立新字段(字典 `pipe_network_level`)。 - 存量数据迁移由用户自行执行。 ## 执行方式 按 /to-tickets 拆为 4 张垂直票(`.scratch/pipe-network-base-refactor/issues/01..04.md`),线性链 01→02→03→04,分票执行,每票独立过验证门。 ## 各票结论(全部 done) - **01 列表接入**:后端 `PipeNetworkBaseService/Impl/Controller.findByPage` 增量加可选参数 `material(eq)/diameter(eq)/buildYear(buildDate 年份区间)/startTime/endTime(createTime 范围)`(唯一调用方为通用控制器,零回归);前端 `listPipeInfo` 改指 `/PipeNetworkBase/findByPage` 并注入 `networkType=2`,响应按裸 Page 读取(`response.records/total`);筛选区 7 条件全保留(铺设年份→建设年份);状态字典 `sysNormalDisable` 静态值 → `getDicts('pipe_network_status')`;表格列按新实体重排(+等级/管养单位/位置描述,经纬度 4 列合并 2 列,-设计压力/起终点文本);多选选中改取 `networkId`。 - **02 表单/详情接入**:`getPipeInfo/addPipeInfo/updatePipeInfo` 改指 `getById/save/updateById`;表单字段重排(等级/管养单位/位置描述/建设日期/经纬度/备注),`reset()` 注入 `networkType='2'`;编码查重失败由 request 拦截器弹后端 msg;详情抽屉字段按新实体重映射;抽屉类名/属性顺序逐字保留。 - **03 导入导出接入**:后端新增 `PipeNetworkImportDTO`(15 列模板)+ `exportData` 全参重载(复用 toExportDTOs)+ `importNetworks`(编码查重,updateSupport=false 跳过已存在)+ 控制器三端点 `GET /export`、`POST /importData`(networkType 默认 "2")、`POST /importTemplate`(sheet"管网信息");权限串沿用 `waterSupply:waterPipe:export/import`;前端导出改 `exportPipeInfo`、导入弹窗两 url 改指新接口(共享组件 WaterFacilityImportDialog 零改动);燃气侧 `/api/pipe-network/export` 行为不变。 - **04 删除接入 + 回收站移除**:`delPipeInfo` 改指 `DELETE /deleteBatchById?ids=`(逻辑删除 delFlag 0→2);删除确认文案加"删除后不可恢复";回收站弹窗、recycle* data/方法、3 个旧 API 函数、`normalizePipeStatus` 引用全部清除;页面 grep 零残留。 ## 文件变更 前端 `E:\city-life-line`(仅 2 个任务文件): - `src/api/pipeNetwork/pipeInfo.js`(整体改指 /PipeNetworkBase,仅 6 函数) - `src/views/subSystem/basic/pipeInfo/index.vue`(筛选/表格/表单/详情/删除/导入导出接入,回收站移除) 后端 `E:\pipe-ner-server\pipe-network-service`(4 个文件,全部增量): - `zksy-system/.../base/service/PipeNetworkBaseService.java`(findByPage 加参 + exportData 重载 + importNetworks) - `zksy-system/.../base/service/impl/PipeNetworkBaseServiceImpl.java`(实现 + toExportDTOs 私有复用 + Wrappers) - `zksy-system/.../base/dto/PipeNetworkImportDTO.java`(新增) - `zksy-admin/.../web/controller/base/PipeNetworkBaseController.java`(findByPage 加参 + export/importData/importTemplate) ## 验证结果 - 后端 `mvn -pl zksy-admin -am compile`:0(T1、T3 各一次) - 前端 `node --test tests/*.test.mjs`:T1/T2/T3 门 75/75 绿;T4 门 74/75——唯一失败 `shared gis map canvas uses the common point marker contract`(tests/gisMapCanvas.test.mjs 断言 GisMapCanvas.vue 用 BMapGL.Icon),系用户并行编辑 GIS 组件的中间态,非本任务文件,未触碰 - `npm run build:prod`:各票均 0 - `git diff --check`:干净;两仓库 git status 确认改动仅限任务文件(后端 spring.log 为运行日志,未触碰) ## 风险与后续 - 数据迁移(water_pipe_info → pipe_network_base,network_type=2)由用户执行,页面上线前需完成,否则列表为空。 - 旧表仍有其他消费方:`WaterSupplyGisMapMapper`(供水GIS图)、`PipeNetworkStatisticsMapper`(统计分析)仍读 water_pipe_info,数据迁走后这些视图会为空——另行任务处理。 - 旧后端接口(/api/water/pipe/*、/api/water/pipe/importData 等)保留未删,可回滚。 - 本任务代码未提交(遵循不合并/不推送约定,等待用户指示);票文件在 `.scratch/pipe-network-base-refactor/issues/`(可镜像 Gogs)。 - 本沙箱环境注意:node 全路径 `C:\Program Files\nodejs\node.exe`(不在 PATH);`node --test tests` 目录参数在 Node v24 下不可用,需 `node --test "tests/*.test.mjs"`。