2026-09-08.md 5.3 KB

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"。