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

报工等待时长倒计时 + 报工数量可选 - 前端联调方案

涉及页面

  • 工序管理(src/views/mes/pro/process,表单 modules/form.vue
  • 快速报工(src/views/mes/pro/workorder-center/modules/quick-feedback.vue
  • 报工表单(src/views/mes/pro/feedback/modules/form.vue
  • 生产任务相关展示(列表/详情,报工倒计时状态展示)

业务流程与数据带入

  1. 工序主数据配置:在工序管理页面为工序配置「等待时长(小时)」与「是否需要填写报工数量」两个新字段。字段保存到工序主数据(mes_pro_process),所有引用该工序的工艺路线共用。
  2. 报工界面读取工序配置:报工表单(新增/编辑)选择任务后,通过 getRouteProcessByRouteAndProcess(routeId, processId)(现有调用)拉取工序配置,响应新增返回 waitDurationneedReportQuantity
  • waitDuration > 0:该工序报工前必须先点击「开始倒计时」,倒计时结束才能报工。
  • needReportQuantity = false:报工数量允许为空(不显示数量输入项、不做"必须大于 0"校验)。
  1. 开始倒计时:操作员点击「开始倒计时」→ 调用新接口 startWaitCountdown → 后端把当前时间写入任务(mes_pro_task.wait_start_time)。
  2. 任务状态回显:任务列表/详情响应新增 waitStartTime 字段,前端用于展示倒计时状态(已开始/进行中/已结束)。
  3. 提交报工:报工提交(快速报工 / 报工表单提交 / 审批通过)时,后端统一校验等待时长与数量规则。

API

方法 路径 说明
POST /mes/pro/task/start-wait-countdown 开始报工倒计时(记录开始时间到任务)
GET /mes/pro/route/process/get-by-route-and-process 现有接口,响应新增 waitDuration/needReportQuantity

新增接口:开始报工倒计时

请求参数:

参数 类型 必填 说明
taskId Long 生产任务编号(POST body JSON 传递)

请求示例:

{
  "taskId": 35
}

响应: 返回倒计时开始时间(yyyy-MM-dd HH:mm:ss)。

响应示例:

{
  "code": 0,
  "data": "2026-08-29 10:30:00"
}

业务前置校验(后端):

场景 结果
任务不存在 / 已终态(完成、取消) 报错(任务异常)
任务已停工 报错(停工不能报工)
工序未配置等待时长(为空或 0) 报错「该工序未配置等待时长,无需倒计时」
工序已配置等待时长 成功,记录开始时间;重复点击会重置为当前时间

现有接口响应字段新增

get-by-route-and-process 响应新增字段:

字段 类型 说明
waitDuration BigDecimal 等待时长(小时)。>0 表示报工前需倒计时等待
needReportQuantity Boolean 是否需要填写报工数量。false=报工数量允许为空

生产任务相关响应新增字段(列表/详情/任务选择组件):

字段 类型 说明
waitStartTime LocalDateTime 报工倒计时开始时间。为空表示尚未开始倒计时

工序主数据保存/响应新增字段:

字段 类型 说明
waitDuration BigDecimal 等待时长(小时),报工前需倒计时等待
needReportQuantity Boolean 是否需要填写报工数量

字段展示规则

字段 展示位置 说明
等待时长(小时) 工序管理表单 数字输入,小数最多 2 位;留空/0 表示该工序报工无需倒计时
是否需要填写报工数量 工序管理表单 开关。关闭后该工序报工数量允许为空
待报工数量 快速报工 / 报工表单 现有字段。若工序无需填写数量,报工数量输入项可不显示
本次报工数量 快速报工 / 报工表单 按工序配置决定是否必填/可空
开始倒计时 按钮 + 倒计时剩余时间 快速报工 / 报工表单 工序配置等待时长时展示;点击后展示倒计时剩余时间
倒计时状态 生产任务列表/详情(可选) 依据 waitStartTime 与当前时间计算剩余时间

业务规则说明

场景 规则
工序 waitDuration 为空或 0 报工无需倒计时,原流程不变
工序 waitDuration > 0,任务未点「开始倒计时」 报工报错「该工序设置了等待时长,请先点击"开始倒计时"」
工序 waitDuration > 0,倒计时未结束 报工报错「等待倒计时未结束,还需等待 X小时X分钟」
工序 waitDuration > 0,倒计时已结束 可正常报工;开始时间记录在任务上,每任务一次
重复点击「开始倒计时」 重置开始时间为当前时间
工序 needReportQuantity = true 或未配置 报工数量必须 > 0(原逻辑)
工序 needReportQuantity = false 报工数量允许为空/0;后端跳过数量校验,审批时不生成产出单/批次,不扣倒冲物料,仅完成报工
倒计时适用范围 按工序判断,开始时间记录到生产任务,每任务一次

注意事项

  • 等待时长单位固定为**小时**,前端输入时注意单位提示(示例 2.00 表示 2 小时;0.5 表示 30 分钟)。
  • 倒计时开始时间记录在**生产任务**上,与工序等待时长(主数据)分开维护;修改工序等待时长不影响已开始的任务倒计时。
  • 若工序配置了等待时长但任务未开始倒计时,直接提交报工会被后端拦截(创建、快速报工、审批通过三处入口都校验)。
  • 快速报工当前为数量必填,接入后需按 needReportQuantity 调整「请输入报工数量」的必填校验与数量输入框展示。
  • 报工数量为空/0 的报工:不会生成产出单/批次、不会倒冲扣料,仅把报工标记为已完成并更新任务进度;请在前端相应隐藏数量相关展示,避免误导。
  • 报工表单编辑/审批时任务可能已过等待期,此时无需再倒计时即可提交。