仪陇表务管理系统-PRD-04-功能需求说明-15-换表管理-V1.0.md 26 KB

源文件:仪陇表务管理系统-PRD-04-功能需求说明-15-换表管理-V1.0.docx 导出时间:2026-05-26 10:34

仪陇表务管理系统 产品需求说明书 04-功能需求说明 换表管理

文档版本:V1.0

对应 01 版本:仪陇表务管理系统-PRD-01-总体说明-V1.0

模块序号:15

模块名称:换表管理

换表管理

本模块覆盖批量换表与零散户换表申请、审批、任务派单、外业换表及旧表退返联动。含 Web「换表申请」「换表任务管理」及 App「换表任务(App)」。旧表退回总仓在「水表退回申请-分仓」办理;对应《PRD-03》批量换表、零散户换表流程的申请与执行段。

换表申请

功能描述

发起批量或零散换表申请并提交审批。审批通过后驱动换表任务管理与出库登记。

菜单权限

表务营业办/供水站职员;表务营业办/供水站管理人员;表务系统管理员

数据权限

表务营业办/供水站职员:可见、可操作本营业办(或本供水站)范围内换表申请;「历史记录」Tab 仅展示本人发起的申请工单。

表务营业办/供水站管理人员、表务系统管理员:按组织范围可见、可操作或只读(管理员全公司)。

核心逻辑

以换表申请单及关联工单为业务主体;换表类型区分批量/零散。

本菜单仅发起与查询;出库在出库管理,任务在换表任务管理,现场作业在 App。

业务流程

流程概要

抄表员/业务人员发起 → 站长/主任初审 → 分公司分管领导复审 → 通过后驱动换表任务管理派单;批量与零散户通过申请单「换表类型」区分,后续出库、外业、验收、旧表退返按类型走《PRD-03》对应分支。

环节说明表

序号 环节名称 环节类型 责任岗位 须填写 / 处理内容 审核结果选项 通过后流向 驳回 / 其他结果流向 抄送
1 换表申请发起 发起 表务营业办/供水站职员 填报换表申请基础信息及换表明细(见「一级页面:换表申请-tab-工单发起」) 提交 换表申请初审
2 换表申请初审 审核 表务营业办/供水站管理人员 核查申请真实性、信息完整性,核定作业人员;填写审核意见 通过;驳回 换表申请复审 退回换表申请发起
3 换表申请复审 审核 表务分公司领导班子 复核业务合规性、物资匹配与实施必要性;填写审核意见 通过;驳回 流程通过(系统自动处理) 退回换表申请初审
4 任务派单衔接 系统自动 系统 生成换表待派单任务或待出库登记提示 流程完结

审核通过后数据影响

  • 生成/更新换表申请记录及关联工单,工单状态为「已通过」。

  • 驱动「换表任务管理」生成待派单任务(或待关联出库)。

  • 零散换表须在出库登记时填写计划安装用户编号;批量换表按申请范围派单。

关联界面逻辑闭环

  • 发起侧:历史 Tab/详情展示工单状态、任务状态、出库状态。

  • 任务侧:通过后可在换表任务管理派单;详情展示任务编号、执行人、任务状态。

  • 出库侧:办理入口在出库管理;状态回写一致。

  • 零散户:App 提交时户表不匹配须填原因,与验收、出库计划用户一致。

审核界面说明

  • 标准界面:复用工单中心「二级页面:工单办理」。

  • 本业务差异:初审环节可核定计划安装人;复审环节只读展示换表明细及换表类型。

功能需求

一级页面:换表申请-tab-工单发起

#整体布局

-- 菜单入口:Tab 页结构;Tab 列表:工单发起(本 Tab,默认选中)、历史记录(见「一级页面:换表申请-tab-历史记录」)

-- 本 Tab 内容:申请表单区 + 业务明细表格(如有);底部常驻「提交」「重置」

#信息展示

-- 申请基础信息区

-- 申请部门:只读,默认当前用户所属部门

-- 申请人:只读,默认当前登录用户

-- 申请日期:只读,默认当前日期

-- 换表类型:必填,单选(批量换表、零散换表)

-- 换表原因:必填,下拉

-- 项目名称:选填

-- 备注:选填

-- 换表明细:表格(用户编号、用户名称、旧表编号、地址等;批量可批量导入)

#底部按钮

-- 提交:校验必填项及明细规则后提交,进入审批流程

-- 重置:清空表单;有已填内容时二次确认

#交互说明

-- 提交成功后提示「提交成功」,自动切换至 Tab「历史记录」并刷新列表

-- Tab 切换时保留未提交内容;刷新页面后未提交内容不保留

一级页面:换表申请-tab-历史记录

#整体布局

-- 菜单入口 Tab「历史记录」;上下结构:查询条件区 + 历史工单列表

-- 数据范围:仅当前登录账号作为发起人提交的换表申请工单

#查询条件

-- 工单编号:文本,支持模糊搜索

-- 申请单号:文本,支持模糊搜索

-- 工单状态:下拉单选(全部、审批中、已通过、已驳回、已撤销)

-- 申请日期:日期范围选择

-- 功能按钮:查询、重置

#数据列表

-- 表格标题:我的换表申请

-- 表格字段:工单编号、申请单号、申请日期、换、表、类、型、、、明、细、户、数、当前节点、工单状态、提交时间

-- 行内操作:详情

#交互说明

-- 点击工单编号、行内「详情」或列表行,打开「弹窗:换表申请工单详情」

-- 列表按提交时间倒序,支持分页

弹窗:换表申请工单详情

#弹窗类型

-- 抽屉弹窗(右侧滑出);遮罩:有;主页面:不可操作

#整体布局

-- 宽度约 960px;全高;内部分 Tab:申请信息 / 换表明细

#弹窗标题

-- 换表申请详情 - {工单编号}

#标题栏操作

-- 关闭(×):关闭抽屉,返回当前 Tab 列表

#信息展示

-- Tab·申请信息:只读展示对应申请及业务信息

-- Tab·换表明细:只读展示对应申请及业务信息

-- Tab·审批记录:审批时间轴(环节、处理人、审核结果、审核意见、处理时间)

#底部按钮

-- 关闭:关闭抽屉

-- 去处理:仅审批中且当前用户为当前节点处理人时显示,跳转工单中心「二级页面:工单办理」

-- 已通过时展示关联任务编号、任务状态(只读)

#交互说明

-- 本功能为只读查看 / 跟踪,非审核办理页

换表任务管理

功能描述

换表作业统筹与派单,支撑工单通过后自动派单、直接派单及执行进度跟踪。零散换表出库须登记计划安装用户编号。

菜单权限

表务营业办/供水站管理人员;表务分公司管理人员;表务系统管理员

数据权限

表务营业办/供水站管理人员:可见、可操作本营业办(或本供水站)换表任务。

表务分公司管理人员:可见、可操作本分公司及下属范围任务。

表务系统管理员:全公司可见、可操作。

核心逻辑

本菜单承接《PRD-03》换表执行阶段的派单环节;与出库管理、App 换表任务联动。

验收通过后驱动旧表归集及「水表退回申请-分仓」或退返流程。

功能需求

一级页面:换表任务管理

#整体布局

-- 查询区 + 任务列表;顶部「新建任务」「派单」

#查询条件

-- 任务编号、关联申请单号、换表类型、任务状态、执行人、日期范围

#数据列表

-- 字段:任务编号、换表类型、关联申请、计划安装人、执行人、状态、创建时间

-- 行内操作:详情、派单、关闭

#交互说明

-- 换表申请通过后自动生成待派单记录;支持直接派单(须已出库或同步办理出库)

-- 零散换表派单须带计划安装用户编号;打开 App「换表任务(App)」

弹窗:换表任务详情

#弹窗类型

-- 抽屉;只读+操作

#信息展示

-- 任务、申请、出库水表、旧表归集状态、验收状态

#底部按钮

-- 派单、关闭、跳转出库(待出库时)

换表任务(App)

功能描述

换表安装员外业换表、录入全套信息、旧表现场归集及户表校验。

菜单权限

表务营业办/供水站职员(安装员)

数据权限

表务营业办/供水站职员:仅本人被指派换表任务。

核心逻辑

对应《PRD-03》外业换表、数据录入、匹配校验环节;验收在安装验收或换表验收流程(与安装验收岗位共用规则时按任务类型区分)。

功能需求

一级页面:换表任务列表(App)

#整体布局

-- 本人换表任务列表

#页面标题

-- 换表任务

#数据列表

-- 任务编号、地址、用户、状态;操作:接单/作业

二级页面:换表任务详情(App)

#整体布局

-- 信息区 + 填报区 + 旧表归集区

#信息展示

-- 必填:旧表编号、新表编号、实际安装用户编号、实际安装人、作业时间

-- 全套安装信息:安装地址、工况等(零散换表必填项更全)

-- 拍照留痕、扫码识表

#交互说明

-- 提交时校验新表+实际用户与出库计划用户一致性;不一致须填原因

-- 提交后进入待验收;旧表信息写入旧表归集清单


详细设计(研发)

以下内容合并自 design/功能设计/,与 PRD 需求章节配套使用。数据模型详见 design/数据库设计-V1.0.md

仪陇表务-功能设计-15-换表管理-V1.0

# 仪陇表务 — 功能设计 15 换表管理 V1.0

需求来源:../demand/功能需求说明/仪陇表务管理系统-PRD-04-功能需求说明-15-*.md
数据模型:见 数据库设计-V1.0.md
接口约定:见本文 §接口设计(研发)仪陇表务-公共接口说明-V1.0.md00-总体框架设计-V1.0.md

1. 模块概述

说明
模块序号 15
模块名称 换表管理
后端包(建议) com.tofly.wm.manage.replace
业务模式 申请工单+任务
工单 REPLACE_APPLY

2. 功能范围

  • 换表申请
  • 换表任务
  • App 换表

3. 数据模型

3.1 涉及表

  • wssmet_replaceapply_w
  • wssmet_replaceapplylist_w
  • wssmet_replacetask_w
  • wssmet_replacerec_w

3.2 实体约定

  • 所有实体 extends BaseEntity;逻辑删除 Boolean deleteddeleted
  • 字典 DictEntry + @DictDirectory(MeterConstant.*) ↔ 库列 VARCHAR2;组织/用户 OrganizationEntry/UserNameEntry ↔ 库列 NUMBER(19);附件 FileEntryList/FileEntry@TableField(exist = false)无库列
  • 申请类主表含 process_instance_id / work_order_code / approve_status;工单反查 (无本地表,见 workflow).TABLE_NAME + TABLE_ID

4. 业务流程

批量/零散申请→出库→外业换表→验收→旧表退回链路。

5. 核心业务规则

  • 零散换表必填计划用户编号
  • 户表不一致须原因

6. 接口设计(概要)

方法 路径(示例前缀) 说明
/replaceApply/ 见 PRD 界面
/replaceTask/ 见 PRD 界面
  • 标准 CRUD 另含:GET /pageGET /listPOST /updateDELETE /{id}DELETE /deleteByIds
  • 返回体:须为带具体泛型的 ResultResponse<...>,见下文 §接口设计(研发)各接口出参(禁止 T/Vo 占位)。

7. 权限与数据范围

遵循 PRD-02:菜单角色 + 组织数据权限 + 工单岗位权限;具体角色见 PRD-04 各功能「菜单权限」「数据权限」章节。

8. 上下游依赖

上游 下游
见 PRD-03 流程说明 见 PRD-01 总体主流程

本设计仅依据 ../demand/ PRD 与 数据库设计-V1.0.md;实现时遵循 java6/java-ylsw-bw.mddatabase-design.mdc(`wssmet_` 表名),不参照存量业务表与接口。*


接口设计(研发)

统一前缀:/api/wm/manage/replace;各接口 出参 须为具体泛型(见下文,禁止 T/Vo 占位);公共约定见 仪陇表务-公共接口说明-V1.0.md

换表申请-分页查询

内容
接口说明 分页查询换表申请
请求地址 GET /api/wm/manage/replace/replaceApply/page
请求类型 GET

入参(Query(PageQuery))

字段 类型 说明
applyCode String 申请编号
replaceTypeCode String(枚举 code) 换表类型
replaceReasonCode String(字典 code) 换表原因编号
projectName String 项目
remark String 备注
workOrderCode String 工单编号(展示/台账查询)
approveStatus String(枚举 code) 审批状态

出参

  • ResultResponse>
  • 外层包装 ResultResponse 含 code、message、data,见 公共接口说明 §1.3。

    data(PageInfo)字段

    ReplaceApplyVo 字段

    字段 类型 说明
    pageNum Integer 当前页码
    pageSize Integer 每页条数
    total Long 总记录数
    pages Integer 总页数
    list List 当前页数据列表
    字段 类型 说明
    id String 主键
    applyCode String 申请
    replaceTypeCode String(枚举 code) 换表类型
    replaceReasonCode String(字典 code) 换表原因
    projectName String 项目
    taskId Long 换表任务ID,关联wssmet_replacetask_w表的id字段
    remark String 备注
    processInstanceId Long workflow 流程实例ID(工单中心外挂,不落本地工单表)
    workOrderCode String 工单编号(展示/台账查询)
    approveStatus String(枚举 code) 审批状态

    换表申请-列表查询

    内容
    接口说明 列表查询换表申请
    请求地址 GET /api/wm/manage/replace/replaceApply/list
    请求类型 GET

    入参(Query)

    字段 类型 说明
    applyCode String 申请编号
    replaceTypeCode String(枚举 code) 换表类型
    replaceReasonCode String(字典 code) 换表原因编号
    projectName String 项目
    remark String 备注
    workOrderCode String 工单编号(展示/台账查询)
    approveStatus String(枚举 code) 审批状态

    出参

    • ResultResponse>
    • 外层包装 ResultResponse 含 code、message、data,见 公共接口说明 §1.3。

      data(List)元素字段

      ReplaceApplyVo 字段

      字段 类型 说明
      id String 主键
      applyCode String 申请
      replaceTypeCode String(枚举 code) 换表类型
      replaceReasonCode String(字典 code) 换表原因
      projectName String 项目
      taskId Long 换表任务ID,关联wssmet_replacetask_w表的id字段
      remark String 备注
      processInstanceId Long workflow 流程实例ID(工单中心外挂,不落本地工单表)
      workOrderCode String 工单编号(展示/台账查询)
      approveStatus String(枚举 code) 审批状态

      换表申请-详情

      内容
      接口说明 查询换表申请详情
      请求地址 GET /api/wm/manage/replace/replaceApply/{id}
      请求类型 GET

      入参(Path: id)

      字段 类型 说明
      id String 主键

      出参

      • ResultResponse(含明细 list 若适用)
      • 外层包装 ResultResponse 含 code、message、data,见 公共接口说明 §1.3。

        data(ReplaceApplyVo)字段

        ReplaceApplyVo 字段

        字段 类型 说明
        id String 主键
        applyCode String 申请
        replaceTypeCode String(枚举 code) 换表类型
        replaceReasonCode String(字典 code) 换表原因
        projectName String 项目
        taskId Long 换表任务ID,关联wssmet_replacetask_w表的id字段
        remark String 备注
        processInstanceId Long workflow 流程实例ID(工单中心外挂,不落本地工单表)
        workOrderCode String 工单编号(展示/台账查询)
        approveStatus String(枚举 code) 审批状态

        | detailList | List | 明细列表 |

        ReplaceApplyListVo 字段

        字段 类型 说明
        id String 主键
        applyId Long 换表申请ID,关联wssmet_replaceapply_w表的id字段
        userNo String 用户
        userName String 用户
        oldMeterCode String 旧水表
        address String 地址

        换表申请-新增

        内容
        接口说明 新增换表申请;提交时同步发起 workflow,回写 process_instance_id / work_order_code / approve_status
        请求地址 POST /api/wm/manage/replace/replaceApply/
        请求类型 POST

        入参(Body: Dto)

        字段 类型 说明
        applyCode String 申请编号
        replaceTypeCode String(枚举 code) 换表类型
        replaceReasonCode String(字典 code) 换表原因编号
        projectName String 项目
        taskId Long 换表任务ID,关联wssmet_replacetask_w表的id字段
        remark String 备注
        processInstanceId Long workflow 流程实例ID(工单中心外挂,不落本地工单表)
        workOrderCode String 工单编号(展示/台账查询)
        approveStatus String(枚举 code) 审批状态

        出参

        • ResultResponse
        • data 字段

          字段 类型 说明
          id Long 新增记录主键

          换表申请-修改

          内容
          接口说明 修改换表申请
          请求地址 POST /api/wm/manage/replace/replaceApply/update
          请求类型 POST

          入参(Body: Dto(含 id))

          字段 类型 说明
          applyCode String 申请编号
          replaceTypeCode String(枚举 code) 换表类型
          replaceReasonCode String(字典 code) 换表原因编号
          projectName String 项目
          taskId Long 换表任务ID,关联wssmet_replacetask_w表的id字段
          remark String 备注
          processInstanceId Long workflow 流程实例ID(工单中心外挂,不落本地工单表)
          workOrderCode String 工单编号(展示/台账查询)
          approveStatus String(枚举 code) 审批状态

          出参

          • ResultResponse
          • data 无业务字段(null)。

            换表申请-删除

            内容
            接口说明 逻辑删除换表申请(支持批量)
            请求地址 DELETE /api/wm/manage/replace/replaceApply/deleteByIds?ids=1,2
            请求类型 DELETE

            入参(Query: ids)

            字段 类型 说明
            ids String 主键,逗号分隔

            出参

            • ResultResponse
            • data 无业务字段(null)。

              换表任务-分页查询

              内容
              接口说明 分页查询换表任务
              请求地址 GET /api/wm/manage/replace/replaceTask/page
              请求类型 GET

              入参(Query(PageQuery))

              字段 类型 说明
              taskCode String 任务编号
              replaceTypeCode String(枚举 code) 换表类型
              planUserNo String 计划用户
              taskStatusCode String(枚举 code) 任务状态
              oldMeterCollectStatusCode String(枚举 code) 旧水表归集状态

              出参

              • ResultResponse>
              • 外层包装 ResultResponse 含 code、message、data,见 公共接口说明 §1.3。

                data(PageInfo)字段

                ReplaceTaskVo 字段

                字段 类型 说明
                pageNum Integer 当前页码
                pageSize Integer 每页条数
                total Long 总记录数
                pages Integer 总页数
                list List 当前页数据列表
                字段 类型 说明
                id String 主键
                taskCode String 任务
                applyId Long 换表申请ID,关联wssmet_replaceapply_w表的id字段
                replaceTypeCode String(枚举 code) 换表类型
                planUserNo String 计划用户
                executorId Long 执行人ID,关联tf_user表的id字段
                taskStatusCode String(枚举 code) 任务状态
                outRecordId Long 出库主单ID,关联wssmet_invout_w表的id字段
                oldMeterCollectStatusCode String(枚举 code) 旧水表归集状态

                换表任务-列表查询

                内容
                接口说明 列表查询换表任务
                请求地址 GET /api/wm/manage/replace/replaceTask/list
                请求类型 GET

                入参(Query)

                字段 类型 说明
                taskCode String 任务编号
                replaceTypeCode String(枚举 code) 换表类型
                planUserNo String 计划用户
                taskStatusCode String(枚举 code) 任务状态
                oldMeterCollectStatusCode String(枚举 code) 旧水表归集状态

                出参

                • ResultResponse>
                • 外层包装 ResultResponse 含 code、message、data,见 公共接口说明 §1.3。

                  data(List)元素字段

                  ReplaceTaskVo 字段

                  字段 类型 说明
                  id String 主键
                  taskCode String 任务
                  applyId Long 换表申请ID,关联wssmet_replaceapply_w表的id字段
                  replaceTypeCode String(枚举 code) 换表类型
                  planUserNo String 计划用户
                  executorId Long 执行人ID,关联tf_user表的id字段
                  taskStatusCode String(枚举 code) 任务状态
                  outRecordId Long 出库主单ID,关联wssmet_invout_w表的id字段
                  oldMeterCollectStatusCode String(枚举 code) 旧水表归集状态

                  换表任务-详情

                  内容
                  接口说明 查询换表任务详情
                  请求地址 GET /api/wm/manage/replace/replaceTask/{id}
                  请求类型 GET

                  入参(Path: id)

                  字段 类型 说明
                  id String 主键

                  出参

                  • ResultResponse(含明细 list 若适用)
                  • 外层包装 ResultResponse 含 code、message、data,见 公共接口说明 §1.3。

                    data(ReplaceTaskVo)字段

                    ReplaceTaskVo 字段

                    字段 类型 说明
                    id String 主键
                    taskCode String 任务
                    applyId Long 换表申请ID,关联wssmet_replaceapply_w表的id字段
                    replaceTypeCode String(枚举 code) 换表类型
                    planUserNo String 计划用户
                    executorId Long 执行人ID,关联tf_user表的id字段
                    taskStatusCode String(枚举 code) 任务状态
                    outRecordId Long 出库主单ID,关联wssmet_invout_w表的id字段
                    oldMeterCollectStatusCode String(枚举 code) 旧水表归集状态

                    换表任务-新增

                    内容
                    接口说明 新增换表任务
                    请求地址 POST /api/wm/manage/replace/replaceTask/
                    请求类型 POST

                    入参(Body: Dto)

                    字段 类型 说明
                    taskCode String 任务编号
                    applyId Long 换表申请ID,关联wssmet_replaceapply_w表的id字段
                    replaceTypeCode String(枚举 code) 换表类型
                    planUserNo String 计划用户
                    executorId Long 执行人ID,关联tf_user表的id字段
                    taskStatusCode String(枚举 code) 任务状态
                    outRecordId Long 出库主单ID,关联wssmet_invout_w表的id字段
                    oldMeterCollectStatusCode String(枚举 code) 旧水表归集状态

                    出参

                    • ResultResponse
                    • data 字段

                      字段 类型 说明
                      id Long 新增记录主键

                      换表任务-修改

                      内容
                      接口说明 修改换表任务
                      请求地址 POST /api/wm/manage/replace/replaceTask/update
                      请求类型 POST

                      入参(Body: Dto(含 id))

                      字段 类型 说明
                      taskCode String 任务编号
                      applyId Long 换表申请ID,关联wssmet_replaceapply_w表的id字段
                      replaceTypeCode String(枚举 code) 换表类型
                      planUserNo String 计划用户
                      executorId Long 执行人ID,关联tf_user表的id字段
                      taskStatusCode String(枚举 code) 任务状态
                      outRecordId Long 出库主单ID,关联wssmet_invout_w表的id字段
                      oldMeterCollectStatusCode String(枚举 code) 旧水表归集状态

                      出参

                      • ResultResponse
                      • data 无业务字段(null)。

                        换表任务-删除

                        内容
                        接口说明 逻辑删除换表任务(支持批量)
                        请求地址 DELETE /api/wm/manage/replace/replaceTask/deleteByIds?ids=1,2
                        请求类型 DELETE

                        入参(Query: ids)

                        字段 类型 说明
                        ids String 主键,逗号分隔

                        出参

                        • ResultResponse
                        • data 无业务字段(null)。