liyong
5 天以前 9b386ddaa6c8892d346d1e09b8bea20cb9000f58
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/mps/MesProMpsApiImpl.java
@@ -1,9 +1,11 @@
package cn.iocoder.yudao.module.mes.api.mps;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.api.mps.dto.MesProMpsCreateReqDTO;
import cn.iocoder.yudao.module.mes.api.mps.dto.MesProMpsRespDTO;
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.mps.MesProMpsDO;
import cn.iocoder.yudao.module.mes.enums.pro.MesProMpsStatusEnum;
import cn.iocoder.yudao.module.mes.service.pro.mps.MesProMpsService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
@@ -11,6 +13,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
/**
 * MPS API 实现类
@@ -60,4 +63,36 @@
        return BeanUtils.toBean(mpsList, MesProMpsRespDTO.class);
    }
    @Override
    public Boolean checkCanCreateSalesNotice(List<Long> saleOrderItemIds) {
        if (CollUtil.isEmpty(saleOrderItemIds)) {
            return true;
        }
        List<MesProMpsDO> mpsList = mpsService.getMpsListBySaleOrderItemIds(saleOrderItemIds);
        // 构建 saleOrderItemId -> MPS 的映射
        Map<Long, MesProMpsDO> mpsMap = new java.util.HashMap<>();
        for (MesProMpsDO mps : mpsList) {
            if (mps.getSaleOrderItemId() != null) {
                mpsMap.put(mps.getSaleOrderItemId(), mps);
            }
        }
        // 检查每个销售订单明细:
        // - 如果 MPS 不存在:不能生成发货通知单
        // - 如果 MPS 存在且状态为草稿/已下发:不能生成发货通知单
        // - 如果 MPS 存在且状态为已完成/已取消:可以生成发货通知单
        for (Long itemId : saleOrderItemIds) {
            MesProMpsDO mps = mpsMap.get(itemId);
            if (mps == null) {
                // MPS 不存在,不能生成发货通知单
                return false;
            }
            if (mps.getStatus().equals(MesProMpsStatusEnum.DRAFT.getStatus())
                    || mps.getStatus().equals(MesProMpsStatusEnum.ISSUED.getStatus())) {
                // MPS 未完成,不能生成发货通知单
                return false;
            }
        }
        return true;
    }
}