From 4010a4dca53a8922c75f3506860fec82fc78d9c4 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Mon, 18 May 2026 11:09:39 +0800 Subject: [PATCH] =?UTF-8?q?feat(wms):=20=E6=B7=BB=E5=8A=A0=E8=BD=AC?= =?UTF-8?q?=E5=BA=93=E6=89=B9=E9=87=8F=E5=85=A5=E5=BA=93=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在IWmsTransferOrderItemService中新增matchOrCreateItemByCoilIds方法 - 添加WmsTransferOrderItemBo的itemTypeAfter字段 - 新增WmsCoilItemTypePairBo导入依赖 - 实现matchOrCreateItemByCoilIds服务端逻辑 - 添加控制器端点/itemType/matchOrCreateByCoils - 优化material coil更新逻辑的空行格式 - 实现基于钢卷ID列表的物料匹配或创建映射功能 --- .../WmsTransferOrderItemController.java | 9 ++++ .../klp/domain/bo/WmsTransferOrderItemBo.java | 3 ++ .../service/IWmsTransferOrderItemService.java | 6 +++ .../impl/WmsTransferOrderItemServiceImpl.java | 43 ++++++++++++++++++- 4 files changed, 59 insertions(+), 2 deletions(-) diff --git a/klp-wms/src/main/java/com/klp/controller/WmsTransferOrderItemController.java b/klp-wms/src/main/java/com/klp/controller/WmsTransferOrderItemController.java index 5b023ac3..80bd1a80 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsTransferOrderItemController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsTransferOrderItemController.java @@ -2,6 +2,7 @@ package com.klp.controller; import java.util.List; import java.util.Arrays; +import java.util.Map; import lombok.RequiredArgsConstructor; import javax.servlet.http.HttpServletResponse; @@ -107,6 +108,14 @@ public class WmsTransferOrderItemController extends BaseController { return R.ok(iWmsTransferOrderItemService.matchOrCreateMaterial(itemId, itemType)); } + /** + * 根据钢卷列表匹配或创建物料 + */ + @PostMapping("/itemType/matchOrCreateByCoils") + public R> matchOrCreateItemByCoilIds(@RequestBody List pairs) { + return R.ok(iWmsTransferOrderItemService.matchOrCreateItemByCoilIds(pairs)); + } + /** * 批量新增调拨单明细 */ diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsTransferOrderItemBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsTransferOrderItemBo.java index 65da5305..82e54384 100644 --- a/klp-wms/src/main/java/com/klp/domain/bo/WmsTransferOrderItemBo.java +++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsTransferOrderItemBo.java @@ -79,4 +79,7 @@ public class WmsTransferOrderItemBo extends BaseEntity { */ private Integer isTransferred; + // 修改之后的itemType + private String itemTypeAfter; + } diff --git a/klp-wms/src/main/java/com/klp/service/IWmsTransferOrderItemService.java b/klp-wms/src/main/java/com/klp/service/IWmsTransferOrderItemService.java index 0560051d..69c573e3 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsTransferOrderItemService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsTransferOrderItemService.java @@ -8,6 +8,7 @@ import com.klp.common.core.domain.PageQuery; import java.util.Collection; import java.util.List; +import java.util.Map; /** * 调拨单明细Service接口 @@ -67,4 +68,9 @@ public interface IWmsTransferOrderItemService { * 取消调拨 */ Boolean cancelTransfer(Long orderItemId); + + /** + * 根据钢卷列表匹配或创建物料 + */ + Map matchOrCreateItemByCoilIds(List pairs); } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsTransferOrderItemServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsTransferOrderItemServiceImpl.java index c816b9df..8e0d0076 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsTransferOrderItemServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsTransferOrderItemServiceImpl.java @@ -624,7 +624,7 @@ public class WmsTransferOrderItemServiceImpl implements IWmsTransferOrderItemSer // 使用 UpdateWrapper 显式更新字段(包括NULL值) LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(WmsMaterialCoil::getCoilId, coilId); - + // 设置需要更新的字段 if (originalItemId != null && originalMaterialType != null) { updateWrapper.set(WmsMaterialCoil::getItemId, originalItemId); @@ -636,7 +636,7 @@ public class WmsTransferOrderItemServiceImpl implements IWmsTransferOrderItemSer } // 清空调拨类型(显式设置为NULL) updateWrapper.set(WmsMaterialCoil::getTransferType, null); - + coilMapper.update(null, updateWrapper); // 逻辑删除调拨明细记录(使用MyBatis-Plus的逻辑删除) @@ -644,4 +644,43 @@ public class WmsTransferOrderItemServiceImpl implements IWmsTransferOrderItemSer return true; } + + /** + * 根据钢卷列表匹配或创建物料 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Map matchOrCreateItemByCoilIds(List pairs) { + List coilIds = pairs.stream().map(WmsTransferOrderItemBo::getCoilId).collect(Collectors.toList()); + List coils = coilMapper.selectBatchIds(coilIds); + Map coilMap = coils.stream().collect(Collectors.toMap(WmsMaterialCoil::getCoilId, v -> v, (a, b) -> a)); + + Map result = new HashMap<>(); + Map conversionCache = new HashMap<>(); + + for (WmsTransferOrderItemBo pair : pairs) { + Long coilId = pair.getCoilId(); + String itemTypeAfter = pair.getItemTypeAfter(); + + WmsMaterialCoil coil = coilMap.get(coilId); + if (coil == null) { + throw new IllegalArgumentException("钢卷不存在: " + coilId); + } + + Long itemId; + if (Objects.equals(coil.getItemType(), itemTypeAfter)) { + itemId = coil.getItemId(); + } else { + Long cached = conversionCache.get(coil.getItemId()); + if (cached != null) { + itemId = cached; + } else { + itemId = matchOrCreateMaterial(coil.getItemId(), coil.getItemType()); + conversionCache.put(coil.getItemId(), itemId); + } + } + result.put(coilId, itemId); + } + return result; + } }