云
5 天以前 616a6b2e9a7824da8d11a4e11730fd2f9b615299
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/mps/MesProMpsService.java
@@ -13,7 +13,7 @@
/**
 * MES 生产主计划(MPS)Service 接口
 *
 * @author 芋道源码
 * @author 超级管理员
 */
public interface MesProMpsService {
@@ -34,7 +34,7 @@
     */
    Long createMps(Long saleOrderId, String saleOrderNo, Long saleOrderItemId,
                   Long mdmItemId, String productName, BigDecimal quantity, Long clientId,
                   String requestDate, String remark);
                   String requestDate, String remark, String reelNo);
    /**
     * 创建 MPS
@@ -73,6 +73,7 @@
     * @param mpsIds MPS 编号列表
     * @return 生成的工单 ID
     */
    @Deprecated
    Long mergeAndIssueMps(List<Long> mpsIds);
    /**
@@ -145,4 +146,35 @@
     */
    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);
}