From c5545080005e79110bdd95c88e992a0e87b1be7f Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Sat, 28 Mar 2026 11:33:19 +0800 Subject: [PATCH] =?UTF-8?q?feat(transfer):=20=E6=B7=BB=E5=8A=A0=E8=B0=83?= =?UTF-8?q?=E6=8B=A8=E8=AE=A2=E5=8D=95=E9=A1=B9=E7=9B=AE=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E9=92=A2=E5=8D=B7=E8=AF=A6=E6=83=85=E6=9F=A5=E8=AF=A2=E5=92=8C?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E6=A3=80=E6=9F=A5=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 优化导入语句,使用java.util.*统一导入 - 在分页查询中添加钢卷详情关联查询逻辑 - 通过coilId收集并查询对应的钢卷信息并建立映射关系 - 为每个调拨订单项目设置关联的钢卷详情信息 - 添加调拨单内钢卷重复性检查机制 - 防止同一调拨单下添加相同coilId的重复项目 - 提供详细的重复钢卷号错误提示信息 --- .../impl/WmsTransferOrderItemServiceImpl.java | 42 ++++++++++++++++--- 1 file changed, 36 insertions(+), 6 deletions(-) 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 aac14cf4..1fee41c4 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 @@ -25,11 +25,7 @@ import com.klp.service.IWmsMaterialCoilService; import com.klp.service.IWmsWarehouseService; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Map; -import java.util.Collection; -import java.util.Objects; -import java.util.ArrayList; +import java.util.*; import java.util.stream.Collectors; @@ -70,7 +66,27 @@ public class WmsTransferOrderItemServiceImpl implements IWmsTransferOrderItemSer LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); List records = result.getRecords(); - if (records != null && !records.isEmpty()) { + String collect = records.stream() + .map(WmsTransferOrderItemVo::getCoilId) + .filter(Objects::nonNull) + .distinct() + .map(String::valueOf) + .collect(Collectors.joining(","));// 收集结果 + if (!collect.isEmpty()) { + WmsMaterialCoilBo coilBo = new WmsMaterialCoilBo(); + coilBo.setCoilIds(collect); + List coilList = coilService.queryList(coilBo); + Map coilMap = coilList.stream() + .collect(Collectors.toMap(WmsMaterialCoilVo::getCoilId, v -> v, (oldVal, newVal) -> oldVal)); + for (WmsTransferOrderItemVo vo : records) { + WmsMaterialCoilVo coilVo = coilMap.get(vo.getCoilId()); + if (coilVo != null) { + vo.setCoil(coilVo); + } + } + } + + if (!records.isEmpty()) { for (WmsTransferOrderItemVo vo : records) { fillDetailInfo(vo); } @@ -315,6 +331,20 @@ public class WmsTransferOrderItemServiceImpl implements IWmsTransferOrderItemSer throw new IllegalArgumentException("transferId和coilIds不能为空"); } + // 检查同一调拨单下是否已存在相同的coilId + LambdaQueryWrapper existWrapper = new LambdaQueryWrapper<>(); + existWrapper.eq(WmsTransferOrderItem::getTransferId, transferId) + .in(WmsTransferOrderItem::getCoilId, coilIds); + List existItems = baseMapper.selectList(existWrapper); + if (!existItems.isEmpty()) { + List existCoilIds = existItems.stream() + .map(WmsTransferOrderItem::getCoilId) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + List wmsMaterialCoils = coilMapper.selectBatchIds(existCoilIds); + throw new IllegalArgumentException("当前钢卷号" + wmsMaterialCoils.stream().map(WmsMaterialCoil::getCurrentCoilNo).collect(Collectors.joining(",")) + " 已在该调拨单中存在"); + } + List coils = coilMapper.selectBatchIds(coilIds); if (coils.isEmpty()) { throw new IllegalArgumentException("钢卷不存在");