From eccad5a129106377a275be4f7cdc58e99e9b95d4 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 21 七月 2026 13:45:14 +0800
Subject: [PATCH] feat(mes): 实现库存移库功能
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/mps/MesProMpsApiImpl.java | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 57 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
index ddd0f82..cdf418a 100644
--- 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
@@ -1,16 +1,20 @@
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.math.BigDecimal;
import java.util.Collections;
import java.util.List;
+import java.util.Map;
/**
* MPS API 瀹炵幇绫�
@@ -60,4 +64,57 @@
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;
+ }
+
+ @Override
+ public Boolean checkSaleOrderProductionFinished(Long saleOrderId) {
+ return mpsService.checkSaleOrderProductionFinished(saleOrderId);
+ }
+
+ @Override
+ public MesProMpsRespDTO getMpsByWorkOrderId(Long workOrderId) {
+ MesProMpsDO mps = mpsService.getMpsByWorkOrderId(workOrderId);
+ return BeanUtils.toBean(mps, MesProMpsRespDTO.class);
+ }
+
+ @Override
+ public void updateMpsProducedQuantity(Long mpsId, BigDecimal quantity) {
+ mpsService.updateProducedQuantity(mpsId, quantity);
+ }
+
+ @Override
+ public Boolean checkAndFinishMps(Long mpsId) {
+ return mpsService.checkAndFinishMps(mpsId);
+ }
+
}
\ No newline at end of file
--
Gitblit v1.9.3