199 lines
12 KiB
Markdown
199 lines
12 KiB
Markdown
|
|
---
|
|||
|
|
name: 采购模块三页面开发计划
|
|||
|
|
overview: 基于 PRD 文档和已有代码,完成采购计划单、采购订单、采购计划需求表三个页面的前后端开发与联调,按业务流程依赖关系分阶段推进。
|
|||
|
|
todos:
|
|||
|
|
- id: phase1-backend
|
|||
|
|
content: 阶段一后端:补全 MpPurchase 实体字段、Mapper 双视图查询、引入/审核/genCode 接口
|
|||
|
|
status: completed
|
|||
|
|
- id: phase1-frontend-list
|
|||
|
|
content: 阶段一前端列表:采购计划单 index.vue 明细/单据双视图 + 快捷标签 + 底部汇总
|
|||
|
|
status: completed
|
|||
|
|
- id: phase1-frontend-form
|
|||
|
|
content: 阶段一前端表单:采购计划单 form.vue 表头19字段 + 子表12列 + 引入弹窗(层级展开) + 按钮组
|
|||
|
|
status: completed
|
|||
|
|
- id: phase1-test
|
|||
|
|
content: 阶段一联调:新增→引入→保存→审核完整流程自测
|
|||
|
|
status: completed
|
|||
|
|
- id: phase2-backend
|
|||
|
|
content: 阶段二后端:确认 PoOrder 实体、引入采购计划明细接口、金额计算、到货回写
|
|||
|
|
status: completed
|
|||
|
|
- id: phase2-frontend-list
|
|||
|
|
content: 阶段二前端列表:采购订单 index.vue 明细/单据双视图 + 底部订单/到货数量汇总
|
|||
|
|
status: completed
|
|||
|
|
- id: phase2-frontend-form
|
|||
|
|
content: 阶段二前端表单:采购订单 form.vue 表头17字段 + 子表14列 + 供应商弹窗 + 引入弹窗 + 金额自动计算
|
|||
|
|
status: completed
|
|||
|
|
- id: phase2-test
|
|||
|
|
content: 阶段二联调:新增→选供应商→引入→单价金额→保存→审核完整流程自测
|
|||
|
|
status: completed
|
|||
|
|
- id: phase3-backend
|
|||
|
|
content: 阶段三后端:实现 /mp/plan/need/list 查询接口(物料汇总+库存可用量) + 导出接口
|
|||
|
|
status: completed
|
|||
|
|
- id: phase3-frontend
|
|||
|
|
content: 阶段三前端:新建 need.vue 单文件组件(搜索+4按钮+快捷标签+12列表格+3项底部汇总+负值高亮)
|
|||
|
|
status: completed
|
|||
|
|
- id: phase3-test
|
|||
|
|
content: 阶段三联调:报表查询+筛选+导出自测
|
|||
|
|
status: completed
|
|||
|
|
isProject: false
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# 采购模块三页面开发计划
|
|||
|
|
|
|||
|
|
## 业务流程全景
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
flowchart LR
|
|||
|
|
MBOM["物料清单MBOM<br>供应方式=采购"] --> PurchasePlan["采购计划单<br>/mp/plan/purchase"]
|
|||
|
|
PurchasePlan -->|"引入计划明细"| PurchaseOrder["采购订单<br>/po/purchase/order"]
|
|||
|
|
PurchasePlan -->|"数据汇总"| NeedReport["采购计划需求表<br>/mp/plan/need"]
|
|||
|
|
PurchaseOrder -->|"到货引入"| Checkin["采购到货单"]
|
|||
|
|
Supplier["供应商档案"] -->|"选择供应商"| PurchaseOrder
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
三个页面存在上下游依赖关系:**采购计划单 → 采购订单 → 采购计划需求表**,开发顺序应按此依赖链推进。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 现有代码基础
|
|||
|
|
|
|||
|
|
已有可用的前后端骨架代码(来自 `erp-frontend-vue` 和 `mom-backend`):
|
|||
|
|
|
|||
|
|
- **采购计划单**: 前端 `erp-frontend-vue/src/views/Production/PurchasePlan/` (index.vue + form.vue),后端 `MpPurchaseController.java` + `MpPurchaseMapper.xml`,API `purchasePlan.ts`
|
|||
|
|
- **采购订单**: 前端 `erp-frontend-vue/src/views/Purchasing/Order/` (index.vue + form.vue),后端 `PoOrderController.java` + `PoOrderMapper.xml`,API `purchaseOrder.ts`
|
|||
|
|
- **采购计划需求表**: 前端无独立组件(Production/Reports 下有 DetailReport/TotalReport 可参考),后端接口 `GET /mp/plan/need/list` 已在前端开发规范中定义
|
|||
|
|
|
|||
|
|
开发重点是**对齐 PRD 文档中的字段、交互和业务逻辑**,而非从零开始。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 阶段一:采购计划单(P0 - 核心上游)
|
|||
|
|
|
|||
|
|
> PRD: [mom系统采购计划单-页面开发说明文档.md](prd/mom系统采购计划单-页面开发说明文档.md)
|
|||
|
|
> 现有代码: `erp-frontend-vue/src/views/Production/PurchasePlan/` + `mom-backend/.../mp/`
|
|||
|
|
|
|||
|
|
### 后端任务
|
|||
|
|
|
|||
|
|
- **补全 MpPurchase 实体字段**: 对照 PRD 5.1 节 erp_mp_purchase 表,确认 `MpPurchase.java` 包含 businessType, businessStatus, deptId, deptName, operatorId, operatorName, approverId, approverName, approveDate, needType 等字段(部分已在 `alter_erp_mp_purchase_add_columns.sql` 中添加)
|
|||
|
|
- **补全 Mapper XML 查询**: `MpPurchaseMapper.xml` 需支持明细视图(物料维度 70 行)和单据视图(按 purchaseCode 聚合 31 行)两种查询模式;补充底部汇总 SQL(SUM purchaseQty, orderedQty)
|
|||
|
|
- **引入接口**: 确认 `/erp/mp/purchase/lead` 接口返回生产计划单列表(含展开的物料明细:需求数量/可用量/已采数量/未采数量),对齐 PRD 4.4 节引入弹窗的 8 列 + 展开 7 列
|
|||
|
|
- **审核/反审核**: 确认审核时填充 approverId/approverName/approveDate,反审核时校验无下游采购订单引用
|
|||
|
|
- **编码生成**: 确认 genCode 接口生成 CGJH + 6 位流水号
|
|||
|
|
|
|||
|
|
### 前端任务
|
|||
|
|
|
|||
|
|
- **列表页 index.vue — 双视图切换**: 对照 PRD 3.1/3.2 节,实现明细视图(11 列:序号/跟单编号/订单交期/单据编码/单据状态/物料名称/物料编码/采购数量/已订数量/单据日期/采购说明)和单据视图(9 列 + 操作列 查看/编辑/删除);工具栏按钮明细=[搜索/单据/查询所有/新增/导出],单据=[搜索/明细/查询所有/新增/删除/审核/反审核]
|
|||
|
|
- **列表页 — 快捷筛选标签**: 物料分类标签(成品/原材料/五金件等),来源动态加载
|
|||
|
|
- **列表页 — 底部汇总**: 采购数量 + 已订数量合计
|
|||
|
|
- **表单页 form.vue — 表头**: 对照 PRD 4.2 节 19 个字段(5 列布局),区分新增/编辑/查看模式的可编辑状态
|
|||
|
|
- **表单页 — 物料信息子表**: 12 列(序号/物料编码/物料名称/型号规格/主计量/需求日期/需求数量/可用量/采购数量/已订数量/采购说明/操作)
|
|||
|
|
- **表单页 — 引入弹窗**: 标题="选择生产计划单",搜索=[销售单号/物料编码/物料名称/日期范围],父行 8 列(销售员/销售单号/订单交期/计划单号/物料编码/物料名称/主计量/数量),展开子行 7 列(物料编码/物料名称/需求数量/可用量/已采数量/未采数量/备注)
|
|||
|
|
- **表单页 — 按钮组**: 新增=[保存/取消/审核/反审核/收起/引入],查看=[新增/编辑/审核/反审核/打印/操作/收起 + 上一条/下一条],编辑=[保存/撤回/审核/反审核/操作/收起/引入/新增物料]
|
|||
|
|
|
|||
|
|
### 验收标准
|
|||
|
|
|
|||
|
|
- 明细视图 / 单据视图切换正常,数据行数一致
|
|||
|
|
- 新增 → 引入 → 保存 → 审核 完整流程跑通
|
|||
|
|
- 底部汇总数据正确
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 阶段二:采购订单(P0 - 核心执行单据)
|
|||
|
|
|
|||
|
|
> PRD: [mom系统采购订单-页面开发说明文档.md](prd/mom系统采购订单-页面开发说明文档.md)
|
|||
|
|
> 现有代码: `erp-frontend-vue/src/views/Purchasing/Order/` + `mom-backend/.../po/`
|
|||
|
|
|
|||
|
|
### 后端任务
|
|||
|
|
|
|||
|
|
- **确认 PoOrder / PoOrderLine 实体**: 对照 PRD 5.1/5.2 节 erp_po_order(22 字段)和 erp_po_order_line(18 字段),确认 `PoOrder.java` 和 `PoOrderLine.java` 字段完整
|
|||
|
|
- **引入接口(采购计划单明细)**: 确认 `/erp/po/order/lead` 或 `/leadInto` 接口返回采购计划单明细(10 列:计划单号/销售员/跟单编号/订单交期/物料编码/物料名称/需求日期/需求数量/已采数量/未采数量),支持按跟单编号/料品大类/物料编码/物料名称搜索
|
|||
|
|
- **供应商选择**: 确认 `/erp/po/supplier/list` 返回 7 列(序号/供应商名称/电话/业务联系人/手机号/状态/操作),注意 ERP 用 supplier_id/supplier_name vs MOM 用 vendor_id/vendor_name 的字段名差异
|
|||
|
|
- **金额计算**: 确认 line.amount = line.quantity * line.unitPrice,表头 totalQuantity / totalAmount 为明细行合计
|
|||
|
|
- **到货数量回写**: 确认到货单审核后回写 order_line.arrived_quantity
|
|||
|
|
- **Mapper XML**: `PoOrderMapper.xml` 需支持明细视图(83 行物料维度,含供应商列)和单据视图(44 行单据维度);底部汇总 SUM(quantity) 作为订单数量
|
|||
|
|
|
|||
|
|
### 前端任务
|
|||
|
|
|
|||
|
|
- **列表页 index.vue — 双视图**: 明细视图 12 列(序号/跟单编号/计划编号/单据编码/单据状态/供应商/物料名称/物料编码/需求日期/采购数量/到货数量/单据日期),单据视图 9 列 + 操作列
|
|||
|
|
- **表单页 form.vue — 表头**: 对照 PRD 4.2 节 17 字段(含供方选择弹窗、到货日期、采购合同上传、合同号),区分新增/编辑/查看模式
|
|||
|
|
- **表单页 — 物料子表**: 14 列(序号/跟单编号/计划单号/物料编码/物料名称/型号规格/主计量/需求日期/数量/单价/金额/到货数量/采购说明/操作),底部合计行
|
|||
|
|
- **供应商选择弹窗**: 标题="选择供应商",搜索=[供应商名称/业务联系人],按钮含"快速添加",7 列表格 79 行数据
|
|||
|
|
- **引入弹窗(采购计划单明细)**: 标题="采购计划单明细",10 列,按钮=[搜索/采购退货单/全选/确定/取消]
|
|||
|
|
- **按钮组差异**: 新增=[保存/取消/审核/反审核/收起/引入/新增物料],查看=[新增/编辑/审核/反审核/打印/操作/收起],编辑=[保存/撤回/审核/反审核/操作/收起/引入/新增物料],注意编辑页有"撤回"按钮而非"取消"
|
|||
|
|
- **金额自动计算**: 数量 x 单价 = 金额,合计行实时更新
|
|||
|
|
|
|||
|
|
### 验收标准
|
|||
|
|
|
|||
|
|
- 新增 → 选择供应商 → 引入计划明细 → 修改单价 → 金额自动计算 → 保存 → 审核 完整流程
|
|||
|
|
- 供应商弹窗正确加载(注意 supplier vs vendor 字段映射)
|
|||
|
|
- 引入弹窗含全选和退货单切换按钮
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 阶段三:采购计划需求表(P1 - 只读报表)
|
|||
|
|
|
|||
|
|
> PRD: [mom系统采购计划需求表-页面开发说明文档.md](prd/mom系统采购计划需求表-页面开发说明文档.md)
|
|||
|
|
> 现有代码: 前端无独立组件(需新建 `need.vue`),后端接口 `GET /mp/plan/need/list` 待实现
|
|||
|
|
|
|||
|
|
### 后端任务
|
|||
|
|
|
|||
|
|
- **实现查询接口**: `GET /erp/mp/plan/need/list`,基于 erp_mp_purchase 按物料维度查询,关联库存计算可用量,返回 12 列(销售订单号/计划单号/物料编码/物料名称/需求数量/可用量/采购数量/已订数量/未订数量/单据日期/采购说明)
|
|||
|
|
- **实现导出接口**: `GET /erp/mp/plan/need/export`,参数同查询接口
|
|||
|
|
- **未订数量计算**: unorderedQty = purchaseQty - orderedQty
|
|||
|
|
- **可用量**: 查询库存可用量(可为负值,表示缺料)
|
|||
|
|
|
|||
|
|
### 前端任务
|
|||
|
|
|
|||
|
|
- **新建 need.vue**: 单文件组件,仅列表页无详情页
|
|||
|
|
- **搜索区**: 6 个搜索项(销售订单号/物料编码/物料名称/开始日期/结束日期/下拉选择)
|
|||
|
|
- **工具栏**: 4 按钮(搜索/查询所有/导出/打印)+ 快捷标签(原材料/零部件/五金)
|
|||
|
|
- **表格**: 12 列,底部汇总 3 项(采购数量/已订数量/未订数量)
|
|||
|
|
- **可用量负值高亮**: 可用量 < 0 时红色显示
|
|||
|
|
- **路由注册**: `/production/purchase-need` 或复用 `/mp/plan/need`
|
|||
|
|
|
|||
|
|
### 验收标准
|
|||
|
|
|
|||
|
|
- 页面加载显示采购需求汇总数据
|
|||
|
|
- 快捷标签筛选正常
|
|||
|
|
- 导出 Excel 正常
|
|||
|
|
- 底部 3 项汇总数据正确
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 开发依赖与顺序
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
gantt
|
|||
|
|
title 采购模块开发甘特图
|
|||
|
|
dateFormat YYYY-MM-DD
|
|||
|
|
section 阶段一_采购计划单
|
|||
|
|
后端补全字段与接口 :a1, 2026-02-08, 2d
|
|||
|
|
前端列表页双视图 :a2, after a1, 2d
|
|||
|
|
前端表单页含引入弹窗 :a3, after a2, 3d
|
|||
|
|
联调与自测 :a4, after a3, 1d
|
|||
|
|
section 阶段二_采购订单
|
|||
|
|
后端引入与金额逻辑 :b1, after a1, 2d
|
|||
|
|
前端列表页双视图 :b2, after b1, 2d
|
|||
|
|
前端表单页含供应商弹窗 :b3, after b2, 3d
|
|||
|
|
联调与自测 :b4, after b3, 1d
|
|||
|
|
section 阶段三_需求报表
|
|||
|
|
后端查询汇总接口 :c1, after a4, 1d
|
|||
|
|
前端need_vue组件 :c2, after c1, 1d
|
|||
|
|
联调与自测 :c3, after c2, 1d
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 关键技术注意事项
|
|||
|
|
|
|||
|
|
- **供应商字段映射**: ERP 用 `supplier_id/supplier_name/supplier_code`,MOM 用 `vendor_id/vendor_name/vendor_code`(表名也不同:erp_po_supplier vs md_vendor),接口调用和数据同步时需做字段转换
|
|||
|
|
- **双视图模式**: 三个页面中采购计划单和采购订单都有明细/单据双视图,通过 `viewMode` 状态变量切换,共享搜索条件的公共字段
|
|||
|
|
- **引入弹窗嵌套表格**: 采购计划单的引入弹窗需支持父行展开子行(可用量/未采数量等),采购订单的引入弹窗为平铺 10 列
|
|||
|
|
- **金额计算**: 仅采购订单有单价/金额字段,采购计划单和需求表不涉及价格
|
|||
|
|
- **状态流转**: 采购计划单和采购订单共用 DRAFT→APPROVED 流转,反审核需校验下游引用
|
|||
|
|
|