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

生产报工 - 前端联调方案

涉及页面

  • 待报工台账(报工入口,按工序筛选任务,选择任务进行报工)
  • 生产报工(新增/编辑报工单)
  • 报工审批(审批/驳回操作)
  • 报工详情(查看报工信息 + 追溯产出/消耗/质检)

业务流程与数据带入

1. 待报工台账(按工序筛选) → 选择任务 → 报工
   选择任务后,自动带入:taskId、workOrderId、routeId、processId、
   workstationId、itemId、scheduledQuantity(排产数量)

2. 填写报工 → 保存(草稿) → 提交(审批中) → 审批通过(已完成/待检验)
   - 质检工序:只需填报工数量,合格/不合格由质检结果回填
   - 非质检工序:需填合格品 + 不良品数量

3. 审批驳回 → 退回草稿 → 修改后重新提交

状态流转

生产任务状态

状态值 状态名 说明
0 草稿(进行中) 可报工
4 已完成 不可报工
5 已取消 不可报工

生产报工状态

状态值 状态名 可执行操作 说明
0 草稿 编辑、删除、提交 初始状态
2 审批中 审批、驳回 已提交待审批
3 待检验 关键+质检工序审批后进入,等IPQC回调
4 已完成 最终状态

API

一、待报工台账接口

1.1 待报工台账(分页)

方法 路径 说明
GET /mes/pro/task/pending-feedback-page 已排产且仍有待报工量的任务

说明: 此接口仅返回状态=进行中(0)且 quantity - produced_quantity > 0 的任务,是报工页面的入口数据源。

请求参数:

参数 类型 必填 说明
processId Long 工序编号(按工序筛选任务)
routeId Long 工艺路线编号
workOrderId Long 生产工单编号
workstationId Long 工作站编号
code String 任务编码(模糊匹配)
name String 任务名称(模糊匹配)
checkFlag Boolean 是否质检工序
createTime String[] 创建时间范围
pageNo Integer 页码(默认1)
pageSize Integer 每页条数(默认10)

响应字段:

字段 类型 说明
id Long 任务编号
code String 任务编码
name String 任务名称
workOrderId Long 工单编号
workOrderCode String 工单编码
workOrderName String 工单名称
workstationId Long 工作站编号
workstationCode String 工作站编码
workstationName String 工作站名称
routeId Long 工艺路线编号
processId Long 工序编号
processName String 工序名称
itemId Long 产品物料编号
itemCode String 物料编码
itemName String 物料名称
itemSpecification String 规格型号
unitMeasureName String 计量单位
quantity BigDecimal 排产数量
producedQuantity BigDecimal 已生产数量
qualifyQuantity BigDecimal 合格品数量
unqualifyQuantity BigDecimal 不良品数量
pendingQuantity BigDecimal 待报工数量(= 排产 - 已生产)
inTransitQuantity BigDecimal 在途报工数量(草稿/审批中/待检验状态的报工量合计)
reportableQuantity BigDecimal 可报工数量(= 排产 - 已生产 - 在途)
feedbackRate BigDecimal 报工完成率(%),如 50.00 表示 50%
checkFlag Boolean 是否质检工序
clientId Long 客户编号
clientName String 客户名称
startTime LocalDateTime 开始生产时间
endTime LocalDateTime 结束生产时间
duration Integer 生产时长(工作日)
requestDate LocalDateTime 需求日期
status Integer 任务状态
remark String 备注
createTime LocalDateTime 创建时间

响应示例:

{
  "code": 0,
  "data": {
    "list": [
      {
        "id": 1,
        "code": "PT202503150001",
        "name": "注塑任务",
        "workOrderId": 10,
        "workOrderCode": "MO202503120008",
        "workOrderName": "博世螺丝刀",
        "workstationId": 5,
        "workstationCode": "WS-001",
        "workstationName": "注塑工作站",
        "routeId": 3,
        "processId": 7,
        "processName": "注塑",
        "itemId": 75,
        "itemCode": "I-075",
        "itemName": "博世螺丝刀",
        "itemSpecification": "一字型",
        "unitMeasureName": "个",
        "quantity": 5000.00,
        "producedQuantity": 2000.00,
        "qualifyQuantity": 1950.00,
        "unqualifyQuantity": 50.00,
        "pendingQuantity": 3000.00,
        "inTransitQuantity": 500.00,
        "reportableQuantity": 2500.00,
        "feedbackRate": 40.00,
        "checkFlag": true,
        "status": 0,
        "createTime": "2025-03-15 10:00:00"
      }
    ],
    "total": 1
  }
}

1.2 查询任务详情

方法 路径 说明
GET /mes/pro/task/get 根据ID获取任务详情

请求参数:

参数 类型 必填 说明
id Long 任务编号

响应字段: 同 1.1 响应字段(单条对象,非分页)

响应示例:

{
  "code": 0,
  "data": {
    "id": 1,
    "code": "PT202503150001",
    "reportableQuantity": 2500.00,
    "checkFlag": true
  }
}

二、生产报工接口

2.1 创建报工

方法 路径 说明
POST /mes/pro-feedback/create 新建报工单(状态=草稿)

请求参数:

参数 类型 必填 说明
code String 报工单编号
type Integer 报工类型:1=自行报工,2=统一报工
workstationId Long 工作站编号
routeId Long 工艺路线编号
processId Long 工序编号
workOrderId Long 生产工单编号
taskId Long 生产任务编号
itemId Long 产品物料编号
feedbackQuantity BigDecimal 本次报工数量(必须 > 0)
feedbackUserId Long 报工人编号
feedbackTime LocalDateTime 报工时间
approveUserId Long 审核人编号
qualifiedQuantity BigDecimal 条件必填 合格品数量(非质检工序必填)
unqualifiedQuantity BigDecimal 条件必填 不良品数量(非质检工序必填)
uncheckQuantity BigDecimal 待检测数量
laborScrapQuantity BigDecimal 工废数量
materialScrapQuantity BigDecimal 料废数量
otherScrapQuantity BigDecimal 其他废品数量
scheduledQuantity BigDecimal 排产数量
expireDate LocalDateTime 过期日期
lotNumber String 生产批号
remark String 备注

响应: Long(报工记录ID)

{
  "code": 0,
  "data": 1024
}

数据带入说明:

从待报工台账选择任务后,以下字段自动带入报工表单,无需用户手动填写:

报工表单字段 数据来源 来源字段
taskId 任务 id
workOrderId 任务 workOrderId
routeId 任务 routeId
processId 任务 processId 任务 processId
workstationId 任务 workstationId
itemId 任务 itemId
scheduledQuantity 任务 quantity(排产数量)

用户需手动填写:报工数量、合格/不良品数量、报工人、报工时间、审核人等。


2.2 更新报工

方法 路径 说明
PUT /mes/pro-feedback/update 修改报工单(仅草稿状态可修改)

请求参数: 同 2.1(需额外传 id)

参数 类型 必填 说明
id Long 报工编号

响应: { "code": 0, "data": true }


2.3 提交报工

方法 路径 说明
PUT /mes/pro-feedback/submit 草稿 → 审批中

请求参数:

参数 类型 必填 说明
id Long 报工编号

响应: { "code": 0, "data": true }

状态变化: 草稿(0) → 审批中(2)


2.4 审批报工

方法 路径 说明
PUT /mes/pro-feedback/approve 审批通过,触发入库/扣料/质检

请求参数:

参数 类型 必填 说明
id Long 报工编号

响应:

{
  "code": 0,
  "data": true   // true=审批完成(已入库),false=进入待检验(等质检回调)
}

状态变化:

场景 状态变化 返回值
非关键工序 审批中(2) → 已完成(4) true
关键+非质检工序 审批中(2) → 已完成(4),同时入库 true
关键+质检工序 审批中(2) → 待检验(3),等IPQC回调 false

2.5 驳回报工

方法 路径 说明
PUT /mes/pro-feedback/reject 审批中 → 草稿

请求参数:

参数 类型 必填 说明
id Long 报工编号

响应: { "code": 0, "data": true }

状态变化: 审批中(2) → 草稿(0)


2.6 查询报工详情

方法 路径 说明
GET /mes/pro-feedback/get 获取单条报工详情

请求参数:

参数 类型 必填 说明
id Long 报工编号

响应字段:

字段 类型 说明
id Long 编号
code String 报工单编号
type Integer 报工类型:1=自行报工,2=统一报工
channel String 报工途径
feedbackTime LocalDateTime 报工时间
workstationId Long 工作站编号
workstationCode String 工作站编码
workstationName String 工作站名称
routeId Long 工艺路线编号
routeCode String 工艺路线编码
processId Long 工序编号
processCode String 工序编码
processName String 工序名称
checkFlag Boolean 是否需要检验
workOrderId Long 工单编号
workOrderCode String 工单编码
workOrderName String 工单名称
taskId Long 任务编号
taskCode String 任务编码
itemId Long 物料编号
itemCode String 物料编码
itemName String 物料名称
itemSpecification String 规格型号
unitMeasureId Long 单位编号
unitMeasureName String 单位名称
scheduledQuantity BigDecimal 排产数量
feedbackQuantity BigDecimal 报工数量
qualifiedQuantity BigDecimal 合格品数量
unqualifiedQuantity BigDecimal 不良品数量
uncheckQuantity BigDecimal 待检测数量
laborScrapQuantity BigDecimal 工废数量
materialScrapQuantity BigDecimal 料废数量
otherScrapQuantity BigDecimal 其他废品数量
feedbackUserId Long 报工人编号
feedbackUserNickname String 报工人昵称
approveUserId Long 审核人编号
approveUserNickname String 审核人昵称
status Integer 状态
remark String 备注
createTime LocalDateTime 创建时间

2.7 报工分页查询

方法 路径 说明
GET /mes/pro-feedback/page 分页查询报工列表

请求参数:

参数 类型 必填 说明
code String 报工单编号(模糊匹配)
type Integer 报工类型
workOrderId Long 生产工单编号
taskId Long 生产任务编号(精确匹配)
taskCode String 生产任务编码(模糊匹配,如 "PT202503")
status Integer 状态
itemId Long 产品物料编号
feedbackUserId Long 报工人编号
creator String 记录人编号
feedbackTime String[] 报工时间范围
pageNo Integer 页码
pageSize Integer 每页条数

响应字段: 同 2.6(分页列表)

查询说明:

场景 用法 示例
按任务编码模糊查询 传 taskCode taskCode=PT202503 匹配 PT202503150001、PT202503150002 等
按任务ID精确查询 传 taskId taskId=1024
同时传 taskId 和 taskCode taskId 优先精确匹配,taskCode 额外模糊过滤 一般不同时传
不传任务相关参数 查询所有报工

2.8 按任务查询报工历史

方法 路径 说明
GET /mes/pro-feedback/list-by-task 查询某任务下所有报工记录

请求参数:

参数 类型 必填 说明
taskId Long 任务编号

响应字段: List<MesProFeedbackRespVO>(同 2.6 字段,数组形式)

说明: 返回该任务下所有状态的报工记录(草稿/审批中/待检验/已完成),用于在任务详情中展示报工历史。


2.9 报工追溯信息

方法 路径 说明
GET /mes/pro-feedback/trace/{id} 报工 + 产出 + 消耗 + IPQC检验

请求参数:

参数 类型 必填 说明
id Long 报工编号(路径参数)

响应字段:

字段 类型 说明
feedback MesProFeedbackRespVO 报工信息(同 2.6 字段)
productProduce Object 生产产出单(关键工序才有,否则 null)
productProduceLines Array 产出明细行(按合格/不合格/待检验拆行)
itemConsume Object 物料消耗单(倒冲工序才有,否则 null)
itemConsumeLines Array 消耗明细行(按 BOM 物料拆行)
ipqcList Array IPQC 过程检验单列表(关键+需检验工序才有)

响应示例:

{
  "code": 0,
  "data": {
    "feedback": {
      "id": 1024,
      "code": "FB202503160001",
      "status": 4,
      "feedbackQuantity": 500.00,
      "qualifiedQuantity": 490.00,
      "unqualifiedQuantity": 10.00
    },
    "productProduce": {
      "id": 50,
      "code": "PP202503160001"
    },
    "productProduceLines": [
      { "id": 101, "qualityStatus": 1, "quantity": 490.00 },
      { "id": 102, "qualityStatus": 2, "quantity": 10.00 }
    ],
    "itemConsume": null,
    "itemConsumeLines": [],
    "ipqcList": []
  }
}

2.10 删除报工

方法 路径 说明
DELETE /mes/pro-feedback/delete 删除报工(仅草稿状态可删除)

请求参数:

参数 类型 必填 说明
id Long 报工编号

响应: { "code": 0, "data": true }


字段展示规则

待报工台账列表

字段 展示位置 说明
code 列表 任务编码
workOrderCode + workOrderName 列表 工单编码+名称
workstationName 列表 工作站
processName 列表 工序名称
itemCode + itemName 列表 物料编码+名称
quantity 列表 排产数量
producedQuantity 列表 已生产数量
reportableQuantity 列表 可报工数量(高亮显示)
feedbackRate 列表 报工完成率(%)
checkFlag 列表 是否质检(标签展示)

报工表单

字段 展示位置 说明
taskId → taskCode 表单(只读) 从任务自动带入
workOrderId → workOrderCode + workOrderName 表单(只读) 从任务自动带入
processId → processName 表单(只读) 从任务自动带入
workstationId → workstationName 表单(只读) 从任务自动带入
itemId → itemCode + itemName 表单(只读) 从任务自动带入
scheduledQuantity 表单(只读) 排产数量,从任务带入
feedbackQuantity 表单(可编辑) 本次报工数量,必填
qualifiedQuantity 表单(条件可编辑) 非质检工序必填;质检工序隐藏或禁用
unqualifiedQuantity 表单(条件可编辑) 非质检工序必填;质检工序隐藏或禁用
feedbackUserId → feedbackUserNickname 表单(可编辑) 报工人,选择用户
feedbackTime 表单(可编辑) 报工时间,默认当前时间
approveUserId → approveUserNickname 表单(可编辑) 审核人,选择用户
remark 表单(可编辑) 备注

报工列表

字段 展示位置 说明
code 列表 报工单编号
workOrderCode 列表 工单编码
taskCode 列表 任务编码
processName 列表 工序
itemName 列表 物料
feedbackQuantity 列表 报工数量
qualifiedQuantity 列表 合格品
unqualifiedQuantity 列表 不良品
feedbackUserNickname 列表 报工人
approveUserNickname 列表 审核人
status 列表 状态(字典标签,不同状态不同颜色)
feedbackTime 列表 报工时间

搜索条件:

字段 控件类型 说明
taskCode 输入框 生产任务编码(模糊匹配,主要搜索条件)
code 输入框 报工单编号(模糊匹配)
status 下拉选择 状态筛选
feedbackTime 日期范围 报工时间范围

业务规则说明

场景 规则
报工数量上限 报工数量不应超过任务的 reportableQuantity(可报工数量),前端应做校验提示
质检工序报工 checkFlag=true 时,只需填报工数量,合格/不合格数量由质检结果回填,前端应隐藏或禁用合格/不良品输入
非质检工序报工 checkFlag=false 时,合格品 + 不良品数量必须 > 0,前端应校验
草稿状态操作 仅草稿(0)状态可编辑、删除
审批中状态操作 仅审批中(2)状态可审批、驳回
待检验状态 待检验(3)状态不可操作,等IPQC质检完成后系统自动回调更新为已完成(4)
审批返回值 approve 接口返回 true=已完成,false=待检验,前端应根据返回值展示不同提示
任务数据带入 从待报工台账选择任务后,7个字段自动带入报工表单(见数据带入说明),用户不可修改

注意事项

  • 报工单编号(code)由前端生成或调用自动编码接口获取,创建时必传
  • 报工类型(type)字段:1=自行报工,2=统一报工,前端根据业务场景选择
  • 审批是简单权限控制(mes:pro-feedback:approve),非BPM工作流,有权限的用户直接点击审批即可
  • 审批通过后会自动触发:倒冲扣料(倒冲工序)、产出入库(关键工序),这些是后端自动处理的,前端无需额外操作
  • 待检验状态的报工单,其合格/不合格数量会在IPQC质检完成后由后端自动回填,前端无需手动更新
  • 待报工台账的 reportableQuantity 已扣除在途报工量,前端可直接用此值做报工数量上限校验
  • 删除操作仅草稿状态可用,审批中/待检验/已完成状态不可删除