From 1458532478eedbd82947e6ee8515f881d4a4912a Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期六, 18 七月 2026 16:14:23 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_business' into dev_business
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/mps/MesProMpsApiImpl.java | 98 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 98 insertions(+), 0 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/mps/MesProMpsApiImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/mps/MesProMpsApiImpl.java
new file mode 100644
index 0000000..94c009c
--- /dev/null
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/mps/MesProMpsApiImpl.java
@@ -0,0 +1,98 @@
+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 org.springframework.validation.annotation.Validated;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * MPS API 瀹炵幇绫�
+ *
+ * @author 鑺嬮亾婧愮爜
+ */
+@Service
+@Validated
+public class MesProMpsApiImpl implements MesProMpsApi {
+
+ @Resource
+ private MesProMpsService mpsService;
+
+ @Override
+ public Long createMps(MesProMpsCreateReqDTO createReqDTO) {
+ return mpsService.createMps(
+ createReqDTO.getSaleOrderId(),
+ createReqDTO.getSaleOrderNo(),
+ createReqDTO.getSaleOrderItemId(),
+ createReqDTO.getMdmItemId(),
+ createReqDTO.getProductName(),
+ createReqDTO.getQuantity(),
+ createReqDTO.getClientId(),
+ createReqDTO.getRequestDate(),
+ createReqDTO.getRemark()
+ );
+ }
+
+ @Override
+ public MesProMpsRespDTO getMps(Long id) {
+ MesProMpsDO mps = mpsService.getMps(id);
+ return BeanUtils.toBean(mps, MesProMpsRespDTO.class);
+ }
+
+ @Override
+ public MesProMpsRespDTO getMpsBySaleOrderItemId(Long saleOrderItemId) {
+ MesProMpsDO mps = mpsService.getMpsBySaleOrderItemId(saleOrderItemId);
+ return BeanUtils.toBean(mps, MesProMpsRespDTO.class);
+ }
+
+ @Override
+ public List<MesProMpsRespDTO> getMpsListBySaleOrderItemIds(List<Long> saleOrderItemIds) {
+ if (saleOrderItemIds == null || saleOrderItemIds.isEmpty()) {
+ return Collections.emptyList();
+ }
+ List<MesProMpsDO> mpsList = mpsService.getMpsListBySaleOrderItemIds(saleOrderItemIds);
+ 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;
+ }
+
+}
\ No newline at end of file
--
Gitblit v1.9.3