云
2026-10-25 d54fbc9d4f8981fa0f7f613b33a28a8cd4f764ea
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/mps/MesProMpsService.java
@@ -1,6 +1,8 @@
package cn.iocoder.yudao.module.mes.service.pro.mps;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.mes.controller.admin.pro.mps.vo.MesProMpsImportExcelVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.mps.vo.MesProMpsImportRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.mps.vo.MesProMpsPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.mps.vo.MesProMpsSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.mps.MesProMpsDO;
@@ -13,7 +15,7 @@
/**
 * MES 生产主计划(MPS)Service 接口
 *
 * @author 芋道源码
 * @author 超级管理员
 */
public interface MesProMpsService {
@@ -145,4 +147,44 @@
     */
    void updateProducedQuantity(Long id, BigDecimal incrQuantity);
    /**
     * 检查销售订单的所有 MPS 是否已完成生产
     *
     * 完成条件:
     * 1. 已生产数量 >= 计划数量
     * 2. 所有报工单状态为 FINISHED(确保质检完成)
     *
     * @param saleOrderId 销售订单ID
     * @return true=全部完成,false=未全部完成
     */
    Boolean checkSaleOrderProductionFinished(Long saleOrderId);
    /**
     * 根据工单ID获取 MPS
     *
     * @param workOrderId 工单ID
     * @return MPS
     */
    MesProMpsDO getMpsByWorkOrderId(Long workOrderId);
    /**
     * 检查并自动完成 MPS
     *
     * 如果 MPS 满足完成条件(已生产数量 >= 计划数量 且 所有报工已完成),
     * 则自动将 MPS 状态更新为已完成
     *
     * @param mpsId MPS 编号
     * @return true=已完成或本次自动完成,false=未完成
     */
    Boolean checkAndFinishMps(Long mpsId);
    /**
     * 批量导入 MPS
     *
     * @param importList    导入列表
     * @param updateSupport 是否支持更新
     * @return 导入结果
     */
    MesProMpsImportRespVO importMpsList(List<MesProMpsImportExcelVO> importList, boolean updateSupport);
}