| | |
| | | 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; |
| | |
| | | |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * MPS API 实现类 |
| | |
| | | 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; |
| | | } |
| | | |
| | | } |