yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/stocktaking/task/MesWmStockTakingTaskService.java
@@ -6,8 +6,7 @@
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskDO;
import jakarta.validation.Valid;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
 * MES 盘点任务 Service 接口
@@ -15,11 +14,6 @@
 * @author 超级管理员
 */
public interface MesWmStockTakingTaskService {
    /**
     * 盘点结果审批 BPM 分类编码
     */
    String APPROVE_CATEGORY_CODE = "stock_taking_result_approve";
    /**
     * 创建盘点任务
@@ -54,37 +48,41 @@
    void submitStockTakingTask(Long id);
    /**
     * 提交盘点结果审批(盘点中 → 盘点中 + 创建 BPM 流程实例)
     * 提交盘点结果审批(盘点中 → 盘点中·结果审批中)
     *
     * <p>录入/导入完成后提交结果审批:校验盘点中存在且至少一条盘点结果、且结果审批未提交过,
     * 创建 BPM 流程实例并回写 {@code processInstanceId}。审批通过后才执行差异核销并置为已完成。
     * <p>录入/导入完成后提交结果审批:校验盘点中存在且至少一条盘点结果、且本轮结果审批未提交过,
     * 记录提交时间后等待审核。审核人由「系统管理 - 审批配置」按业务类型统一配置
     * (业务编码 stock_taking_result_approve),提交时无需指定;
     * 未启用审批或未配置有效审核人时抛出业务异常。审批通过后才执行差异核销并置为已完成。
     *
     * @param id                  盘点任务编号
     * @param processDefinitionKey BPM 流程定义 Key
     * @param id 盘点任务编号
     */
    void submitStockTakingResultApproval(Long id, String processDefinitionKey);
    void submitStockTakingResultApproval(Long id);
    /**
     * 更新盘点任务结果审批状态(BPM 审批回调)
     * 获得盘点结果审批的审核人编号集合
     *
     * <p>仅盘点中状态处理:
     * 供前端判断当前登录用户是否应展示「审核」按钮;未配置时返回空集合。
     *
     * @return 审核人用户编号集合
     */
    Set<Long> getStockTakingTaskApproverUserIds();
    /**
     * 审核盘点结果(盘点中·结果审批中 → 已完成 / 盘点中)
     *
     * <p>仅业务编码 stock_taking_result_approve 配置的审核人可操作(多人时或签),
     * 且仅在结果审批已提交、尚未审核时允许:
     * <ul>
     *     <li>审批通过:解冻库存,同事务自动核销盘盈/盘亏并置为已完成;</li>
     *     <li>审批驳回:清空流程实例编号,任务保持盘点中,可修改实盘后重新提交;</li>
     *     <li>审批取消:解冻库存并置为已取消。</li>
     *     <li>审核通过:解冻库存,同事务自动核销盘盈/盘亏并置为已完成;</li>
     *     <li>审核不通过:必须填写原因,任务保持盘点中,可修改实盘后重新提交结果审批。</li>
     * </ul>
     *
     * @param id        盘点任务编号
     * @param bpmResult BPM 审批结果(通过/驳回/取消)
     * @param id           盘点任务编号
     * @param pass         是否通过,true=通过 / false=不通过
     * @param reviewRemark 审核意见,审核不通过时必填
     */
    void updateStockTakingTaskResultAuditStatus(Long id, Integer bpmResult);
    /**
     * 获取盘点结果审批可用的 BPM 流程定义列表
     *
     * @return 流程定义列表(id/key/name)
     */
    List<Map<String, Object>> getStockTakingTaskResultApprovalProcessDefinitionList();
    void auditStockTakingResult(Long id, Boolean pass, String reviewRemark);
    /**
     * 取消盘点任务