# 盘点结果审批 BPM - 前端联调方案 ## 涉及页面 - 盘点任务列表页(`wls/stocktaking/task`) - 盘点任务详情/实盘录入页(`wls/stocktaking/task` 详情、`result-form` 录入实盘) ## 业务流程与数据带入 1. 创建盘点任务(草稿)→「开始盘点」:任务进入盘点中,可录入/导入实盘。 2. 录完实盘 →「提交结果审批」:调用提交审批接口(需选流程定义),任务进入审批中(带流程实例编号)。 3. 审批通过 → 系统自动解冻并核销盘盈/盘亏差异,任务变为已完成。 4. 审批驳回 → 任务仍为盘点中(清除流程实例编号),可修改实盘后重新提交。 5. 审批取消 / 取消任务 → 任务变为已取消,冻结库存解冻。 ## API | 方法 | 路径 | 说明 | |------|------|------| | GET | /mes/wm/stocktaking-task/approval-process-list | 获得盘点结果可用的审批流程定义列表 | | PUT | /mes/wm/stocktaking-task/submit-approval | 提交盘点结果审批 | | PUT | /mes/wm/stocktaking-task/cancel | 取消盘点任务 | > 注意:原「完成盘点」接口 `/mes/wm/stocktaking-task/finish` 已移除,核销改由审批通过事件驱动,不再提供完成盘点按钮。 **提交审批请求参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | id | Long | 是 | 盘点任务编号 | | processDefinitionKey | String | 是 | 流程定义 Key(从审批流程定义列表选择) | **审批流程定义列表响应:** `{ "code": 0, "data": [{ "key": "stock_taking_result_approve", "name": "xxx", ... }] }`,取其中的 `key` 作为提交审批参数。 **响应字段新增(任务列表/详情 RespVO):** | 字段 | 类型 | 说明 | |------|------|------| | processInstanceId | String | BPM 流程实例编号;非空表示已提交审批,可点击查看审批进度 | ## 字段展示规则 | 字段 | 展示位置 | 说明 | |------|----------|------| | processInstanceId | 列表、详情 | 非空时显示「审批中/查看审批」入口,为空时显示「可提交审批」 | ## 业务规则说明 | 场景 | 规则 | |------|------| | 提交前置校验 | 仅盘点中任务可提交;需已有 >=1 条盘点结果;未提交过(processInstanceId 为空)防重复提交 | | 审批通过 | 置已完成 + 解冻 + 自动核销差异(同一事务,失败整体回滚仍为盘点中) | | 审批驳回 | 任务保持盘点中,清 processInstanceId,允许修改实盘后重提 | | 审批取消 | 任务变已取消,解冻 | | 开始盘点前置 | 仅草稿可开始;盘点行非空;开启冻结则冻结对应库存 | | 完成路线 | 完成后无「完成盘点」操作,核销自动执行,无需前端干预 | ## 注意事项 - 任务列表按钮态建议按 `status` + `processInstanceId` 组合判断:盘点中且 processInstanceId 为空才显示「提交结果审批」。 - 提交后详情/列表响应中 processInstanceId 已有值,可据此加载审批进度详情。 - 按钮权限复用:提交审批使用 `mes:wm-stock-taking-task:update`,审批流程列表使用 `mes:wm-stock-taking-task:query`。