gaoluyang
7 天以前 8e4eee5ad4d74e1a4e6ab4de3a9c28000700dce0
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/mps/MesProMpsService.java
@@ -2,6 +2,7 @@
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.mes.controller.admin.pro.mps.vo.MesProMpsPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.mps.vo.MesProMpsPreparationCheckRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.mps.vo.MesProMpsSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.mps.MesProMpsDO;
import jakarta.validation.Valid;
@@ -13,7 +14,7 @@
/**
 * MES 生产主计划(MPS)Service 接口
 *
 * @author 芋道源码
 * @author 超级管理员
 */
public interface MesProMpsService {
@@ -57,6 +58,51 @@
     * @param id 编号
     */
    void deleteMps(Long id);
    /**
     * 提交审核
     *
     * 草稿状态 → 审核中,并启动 BPM 流程,审批在协同办公完成
     *
     * @param id MPS 编号
     */
    void submitMps(Long id);
    /**
     * 处理 BPM 审批结果(协同办公审批完成后回调)
     *
     * 审核中 → 已审核(通过)/ 草稿(驳回)
     *
     * @param id          MPS 编号
     * @param bpmResult   BPM 审批结果
     * @param reason      审批意见(驳回原因)
     * @param auditUserId 审核人编号
     */
    void handleBpmProcessResult(Long id, Integer bpmResult, String reason, Long auditUserId);
    /**
     * 获得计划的辅料需求明细(含库存、在途、是否充足)
     *
     * @param id MPS 编号
     * @return 物料需求列表
     */
    List<cn.iocoder.yudao.module.mes.controller.admin.pro.workorder.vo.MesProWorkOrderItemRespVO> getMpsItemList(Long id);
    /**
     * 生产准备检查:基于生产计划检查物料、设备是否齐备
     *
     * @param id MPS 编号
     * @return 检查结果
     */
    MesProMpsPreparationCheckRespVO getPreparationCheck(Long id);
    /**
     * 根据计划的辅料缺口生成采购申请单(草稿)
     *
     * @param id MPS 编号
     * @return 生成的采购申请单编号
     */
    Long generatePurchaseRequest(Long id);
    /**
     * 下发单条 MPS
@@ -165,4 +211,15 @@
     */
    MesProMpsDO getMpsByWorkOrderId(Long workOrderId);
    /**
     * 检查并自动完成 MPS
     *
     * 如果 MPS 满足完成条件(已生产数量 >= 计划数量 且 所有报工已完成),
     * 则自动将 MPS 状态更新为已完成
     *
     * @param mpsId MPS 编号
     * @return true=已完成或本次自动完成,false=未完成
     */
    Boolean checkAndFinishMps(Long mpsId);
}