一、概述
采购管理是制造型企业保障生产供应链稳定的关键环节。MES 系统中的采购管理模块不仅承接 ERP 的采购计划,还需要与仓储、库存、质量等模块紧密协作,实现从下单到入库的全流程管控。
二、功能讲解
本文从采购订单生命周期、创建方式、完成判定以及数据结构四个方面详细说明。
2.1. 采购订单状态及操作设计
采购订单在执行过程中会经历 草稿 → 审核中 → 已审核 → 已完成 四个主要状态。
为了满足实际业务场景,系统需支持正向流转与逆向操作:
| 状态 | 说明 | 允许的正向操作 | 允许的逆向操作 |
|---|---|---|---|
| 草稿 | 新建后的初始状态,内容可随时修改 | 提交审核 | 删除 |
| 审核中 | 已提交但未批准,等待采购经理或审批人确认 | 审核通过 / 审核驳回 | 退回草稿 |
| 已审核 | 订单已获批准,可进行采购入库、收货等操作 | 入库操作 | 撤回审核(回到“草稿”或“审核中”) |
| 已完成 | 所有采购物料入库数量满足要求 | — | 关闭前可撤销完成(特殊权限) |
设计要点
权限控制:逆向操作必须具备相应审批权限,并记录操作日志,以便追溯。
状态驱动界面:不同状态下显示的按钮应动态变化,例如“审核中”仅显示“审核通过”“驳回”等。
2.2. 采购订单创建方式
采购订单的来源通常分为两种:
- 手工创建
- 由采购人员在 MES 前端界面直接录入。
- 适合小批量或紧急采购场景。
- 系统需提供物料选择、供应商选择、预计到货时间等表单。
点击【新增按钮】
-
ERP 数据同步
- 当企业已上线 ERP 系统时,可由 ERP 生成采购需求并同步至 MES。
- 需通过接口或中间件实现数据实时或定时同步。
- 保证订单号、供应商信息、物料明细与 ERP 数据一致,避免重复录入。
设计要点:
- 唯一性校验:同步时需检查订单号是否重复。
- 异常处理:同步失败要有重试与错误日志,保证数据完整。
2.3. 完成状态的判定逻辑
采购订单是否“已完成”,需根据采购入库数量自动判断:
- 每张采购订单包含若干物料明细,每条明细记录计划数量与已入库数量。
- 系统在入库操作后实时计算:
- 如果所有物料的入库数量 ≥ 计划数量,则自动将订单状态更新为 已完成。
- 若仍有未入库或部分入库,则保持在 已审核 状态。
设计要点:
- 支持部分入库:允许多次入库并累积数量。
- 考虑超收:若入库数量超过计划,系统需提示并记录超收原因(如采购补差、供应商多送)。
2.4. 订单数据结构设计
采购订单采用头-明细两层结构,以保证数据清晰和易扩展。
4.1 订单头(Header)
记录采购订单的基础信息,代表整个订单的业务属性。
| 字段名 | 数据类型 | 允许空置 | 主键 | 注释 |
|---|---|---|---|---|
| id | bigint | 否 | 是 | |
| po_code | varchar(128) | 否 | 否 | 订单编码 |
| po_type | varchar(32) | 否 | 否 | 订单类型 |
| supplier_id | bigint | 是 | 否 | 供应商 |
| status | varchar(32) | 否 | 否 | 订单状态 |
| order_date | date | 是 | 否 | 订单日期 |
| delivery_date | date | 是 | 否 | 交货日期 |
| schedule | decimal(6, 2) | 是 | 否 | 进度 |
| buyer | bigint | 是 | 否 | 采购员 |
| remark | varchar(1000) | 是 | 否 | 备注 |
| create_by | bigint | 是 | 否 | |
| create_time | datetime | 是 | 否 | |
| update_by | bigint | 是 | 否 | |
| update_time | datetime | 是 | 否 |
4.2 订单明细(Line Items)
记录订单中每一种物料的采购信息。
| 字段名 | 数据类型 | 允许空置 | 主键 | 注释 |
|---|---|---|---|---|
| id | bigint | 否 | 是 | |
| purchase_id | bigint | 否 | 否 | 采购单ID |
| material_id | bigint | 否 | 否 | 物料ID |
| qty | int | 是 | 否 | 采购数量 |
| delivery_date | date | 是 | 否 | 交货日期 |
| latest_delivery_date | date | 是 | 否 | 最近交货日期 |
| total_received_qty | int | 是 | 否 | 总收货量 |
| remark | varchar(500) | 是 | 否 | |
| status | char | 是 | 否 | 状态(0未完成1已完成) |
| create_by | bigint | 是 | 否 | |
| create_time | datetime | 是 | 否 | |
| update_by | bigint | 是 | 否 | |
| update_time | datetime | 是 | 否 |
设计要点:
- 冗余字段(如供应商名称、物料名称)方便报表查询,但需注意数据一致性。
- 明细状态可单独跟踪,有助于判断单个物料的进度。
2.5. 系统交互与模块关联
- 仓储(WMS):采购入库与仓库收货单实时联动,驱动库存变更。
- 质量管理(QMS):入库时触发质检流程,不合格则不能计入完成数量。
- 财务/ERP:采购完成后同步实际到货与结算数据。
三、结语
采购管理模块是 MES 与 ERP、WMS 的关键接口。
通过完善的订单状态控制、灵活的创建方式、严谨的入库判定以及合理的头-明细结构,企业可实现从采购计划到收货结算的全流程可追溯、可监控,为生产供应链提供坚实的数据基础。
在实际实施中,务必关注 权限管理、数据同步策略 和 异常处理机制,以保证系统的稳定与数据的准确性。
本文源码已上传Gitee 开源项目地址:
欢迎在评论区分享你的技术选型经验,或对本文方案的改进建议!
关注公众号「慧工云创」