编辑 | blame | 历史 | 原始文档

生产主计划(MPS)- 前端联调方案

涉及页面

  • 销售订单列表页(新增"是否需要生产"列)
  • 销售订单详情页(新增"是否需要生产"开关)
  • 生产主计划列表页(新增)
  • 生产主计划详情页(新增)
  • 生产主计划新增页(新增,支持手动创建)

业务流程与数据带入

1. 手动创建 MPS

生产主计划新增页
    ↓
填写:产品、数量、客户、需求日期等
    ↓
提交创建 MPS(编码自动生成)
    ↓
MPS 状态为草稿

自动生成编码格式MPS + yyyyMMdd + 001(如 MPS20240701001)

2. 销售订单审核通过 -> 自动创建 MPS

销售订单审核通过
    ↓
BPM 监听器触发
    ↓
遍历销售订单明细,对于 need_production=1 的明细
    ↓
调用 MesProMpsApi.createMps() 创建 MPS
    ↓
更新销售订单明细的 mps_id 字段

数据带入:
- MPS.sale_order_id ← 销售订单.id
- MPS.sale_order_no ← 销售订单.no
- MPS.sale_order_item_id ← 销售订单明细.id
- MPS.product_id ← 销售订单明细.productId
- MPS.quantity ← 销售订单明细.count
- MPS.client_id ← 销售订单.customerId
- MPS.request_date ← 销售订单.orderTime

2. MPS 下发 -> 生成生产订单

MPS 单条下发
    ↓
创建生产工单(类型=自行生产,来源类型=客户订单)
    ↓
工单自动确认为已确认状态
    ↓
更新 MPS 状态为已下发,关联工单 ID

3. MPS 合并下发

选择多条相同产品的 MPS
    ↓
校验:相同产品、草稿状态
    ↓
计算合并数量 = SUM(quantity)
    ↓
创建一条生产工单(数量为合并数量)
    ↓
更新所有 MPS 状态为已下发,关联同一工单
    ↓
记录合并明细到 mes_pro_mps_merge_item

API

MPS 相关接口

方法 路径 说明
POST /mes/pro-mps/create 创建 MPS
PUT /mes/pro-mps/update 更新 MPS
DELETE /mes/pro-mps/delete 删除 MPS
GET /mes/pro-mps/get 获取 MPS 详情
GET /mes/pro-mps/page 分页查询 MPS
POST /mes/pro-mps/issue 下发单条 MPS
POST /mes/pro-mps/merge-issue 合并下发多条 MPS
POST /mes/pro-mps/cancel 取消 MPS
GET /mes/pro-mps/export-excel 导出 MPS

销售订单接口变更

方法 路径 变更说明
GET /erp/sale-order/get 响应新增 needProduction、mpsId 字段
GET /erp/sale-order/page 响应新增 needProduction 字段
POST /erp/sale-order/create 请求新增 needProduction 字段
PUT /erp/sale-order/update 请求新增 needProduction 字段

请求参数

MPS 创建请求

{
  "productId": 300,
  "quantity": 100.00,
  "unitMeasureId": 1,
  "clientId": 400,
  "requestDate": "2024-01-01T00:00:00",
  "remark": "备注"
}

说明
- code 字段可选,不填则自动生成
- saleOrderIdsaleOrderNosaleOrderItemId 可选,手动创建时不填
```

MPS 下发请求

POST /mes/pro-mps/issue?id=123

MPS 合并下发请求

// POST /mes/pro-mps/merge-issue
[123, 124, 125]

响应字段

MPS 详情响应

字段 类型 说明
id Long MPS 编号
code String MPS 编码
status Integer 状态(0=草稿 1=已下发 2=已完成 3=已取消)
saleOrderId Long 销售订单ID
saleOrderNo String 销售订单号
saleOrderItemId Long 销售订单明细ID
productId Long 产品ID
productCode String 产品编码
productName String 产品名称
productSpecification String 规格型号
unitMeasureName String 单位
quantity BigDecimal 计划生产数量
quantityProduced BigDecimal 已生产数量
clientId Long 客户ID
clientCode String 客户编码
clientName String 客户名称
requestDate DateTime 需求日期
issueDate DateTime 下发日期
finishDate DateTime 完成日期
workOrderId Long 生产工单ID
workOrderCode String 生产工单编码
mergeFlag Integer 是否合并下发
mergeBatchNo String 合并批次号
remark String 备注
createTime DateTime 创建时间

响应示例

{
  "code": 0,
  "data": {
    "id": 1024,
    "code": "MPS-001",
    "status": 0,
    "saleOrderId": 100,
    "saleOrderNo": "SO-001",
    "productId": 300,
    "productCode": "P-001",
    "productName": "产品A",
    "quantity": 100.00,
    "quantityProduced": 0,
    "clientId": 400,
    "clientName": "客户A",
    "requestDate": "2024-01-01T00:00:00",
    "mergeFlag": 0,
    "createTime": "2024-01-01T10:00:00"
  },
  "msg": "操作成功"
}

字段展示规则

字段 展示位置 说明
MPS 编码 列表、详情 主键标识
状态 列表、详情 草稿(蓝)、已下发(绿)、已完成(紫)、已取消(红)
销售订单号 列表、详情 关联来源
产品编码/名称 列表、详情 生产对象
计划数量 列表、详情 核心数据
已生产数量 详情 进度跟踪
客户名称 列表、详情 需求方
需求日期 列表、详情 交期要求
生产工单编码 列表、详情 下发后显示,可点击跳转

业务规则说明

场景 规则
创建 MPS 仅草稿状态可编辑、删除
下发 MPS 仅草稿状态可下发,下发后生成生产工单并自动确认
合并下发 至少选择 2 条,必须相同产品,必须都是草稿状态
取消 MPS 仅已下发状态可取消
完成 MPS 由生产工单完成时自动触发

注意事项

  1. 销售订单审批流程:销售订单审核通过后会自动创建 MPS,无需前端手动触发
  2. MPS 与销售订单关联:通过 saleOrderItemId 字段关联,可追溯来源
  3. 合并下发限制:只能合并相同产品的 MPS,不同产品不能合并
  4. 状态不可逆:下发后无法回到草稿状态,只能取消或完成
  5. 生产进度同步:MPS 的已生产数量由生产工单报工时自动更新