1. 待报工台账(按工序筛选) → 选择任务 → 报工
选择任务后,自动带入:taskId、workOrderId、routeId、processId、
workstationId、itemId、scheduledQuantity(排产数量)
2. 填写报工 → 保存(草稿) → 提交(审批中) → 审批通过(已完成/待检验)
- 质检工序:只需填报工数量,合格/不合格由质检结果回填
- 非质检工序:需填合格品 + 不良品数量
3. 审批驳回 → 退回草稿 → 修改后重新提交
| 状态值 | 状态名 | 说明 |
|---|---|---|
| 0 | 草稿(进行中) | 可报工 |
| 4 | 已完成 | 不可报工 |
| 5 | 已取消 | 不可报工 |
| 状态值 | 状态名 | 可执行操作 | 说明 |
|---|---|---|---|
| 0 | 草稿 | 编辑、删除、提交 | 初始状态 |
| 2 | 审批中 | 审批、驳回 | 已提交待审批 |
| 3 | 待检验 | — | 关键+质检工序审批后进入,等IPQC回调 |
| 4 | 已完成 | — | 最终状态 |
| 方法 | 路径 | 说明 |
|---|---|---|
| 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
}
}
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /mes/pro/task/get | 根据ID获取任务详情 |
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 是 | 任务编号 |
响应字段: 同 1.1 响应字段(单条对象,非分页)
响应示例:
{
"code": 0,
"data": {
"id": 1,
"code": "PT202503150001",
"reportableQuantity": 2500.00,
"checkFlag": true
}
}
| 方法 | 路径 | 说明 |
|---|---|---|
| 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(排产数量) |
用户需手动填写:报工数量、合格/不良品数量、报工人、报工时间、审核人等。
| 方法 | 路径 | 说明 |
|---|---|---|
| PUT | /mes/pro-feedback/update | 修改报工单(仅草稿状态可修改) |
请求参数: 同 2.1(需额外传 id)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 是 | 报工编号 |
响应: { "code": 0, "data": true }
| 方法 | 路径 | 说明 |
|---|---|---|
| PUT | /mes/pro-feedback/submit | 草稿 → 审批中 |
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 是 | 报工编号 |
响应: { "code": 0, "data": true }
状态变化: 草稿(0) → 审批中(2)
| 方法 | 路径 | 说明 |
|---|---|---|
| PUT | /mes/pro-feedback/approve | 审批通过,触发入库/扣料/质检 |
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 是 | 报工编号 |
响应:
{
"code": 0,
"data": true // true=审批完成(已入库),false=进入待检验(等质检回调)
}
状态变化:
| 场景 | 状态变化 | 返回值 |
|---|---|---|
| 非关键工序 | 审批中(2) → 已完成(4) | true |
| 关键+非质检工序 | 审批中(2) → 已完成(4),同时入库 | true |
| 关键+质检工序 | 审批中(2) → 待检验(3),等IPQC回调 | false |
| 方法 | 路径 | 说明 |
|---|---|---|
| PUT | /mes/pro-feedback/reject | 审批中 → 草稿 |
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 是 | 报工编号 |
响应: { "code": 0, "data": true }
状态变化: 审批中(2) → 草稿(0)
| 方法 | 路径 | 说明 |
|---|---|---|
| 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 | 创建时间 |
| 方法 | 路径 | 说明 |
|---|---|---|
| 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 额外模糊过滤 | 一般不同时传 |
| 不传任务相关参数 | 查询所有报工 | — |
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /mes/pro-feedback/list-by-task | 查询某任务下所有报工记录 |
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| taskId | Long | 是 | 任务编号 |
响应字段: List<MesProFeedbackRespVO>(同 2.6 字段,数组形式)
说明: 返回该任务下所有状态的报工记录(草稿/审批中/待检验/已完成),用于在任务详情中展示报工历史。
| 方法 | 路径 | 说明 |
|---|---|---|
| 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": []
}
}
| 方法 | 路径 | 说明 |
|---|---|---|
| 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个字段自动带入报工表单(见数据带入说明),用户不可修改 |
mes:pro-feedback:approve),非BPM工作流,有权限的用户直接点击审批即可reportableQuantity 已扣除在途报工量,前端可直接用此值做报工数量上限校验