12 KiB
12 KiB
name, overview, todos, isProject
| name | overview | todos | isProject | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 采购模块三页面开发计划 | 基于 PRD 文档和已有代码,完成采购计划单、采购订单、采购计划需求表三个页面的前后端开发与联调,按业务流程依赖关系分阶段推进。 |
|
false |
采购模块三页面开发计划
业务流程全景
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,APIpurchasePlan.ts - 采购订单: 前端
erp-frontend-vue/src/views/Purchasing/Order/(index.vue + form.vue),后端PoOrderController.java+PoOrderMapper.xml,APIpurchaseOrder.ts - 采购计划需求表: 前端无独立组件(Production/Reports 下有 DetailReport/TotalReport 可参考),后端接口
GET /mp/plan/need/list已在前端开发规范中定义
开发重点是对齐 PRD 文档中的字段、交互和业务逻辑,而非从零开始。
阶段一:采购计划单(P0 - 核心上游)
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 现有代码:
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 现有代码: 前端无独立组件(需新建
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 项汇总数据正确
开发依赖与顺序
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 流转,反审核需校验下游引用