From 317b7187f58d826745be1ab42aa39eed9970624a Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Sat, 28 Mar 2026 10:58:15 +0800 Subject: [PATCH] =?UTF-8?q?perf(WmsTransferOrderItemService):=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E8=B0=83=E6=8B=A8=E6=98=8E=E7=BB=86=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=80=A7=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 使用流式处理批量获取钢卷ID并去重 - 通过单次查询获取所有相关钢卷信息 - 使用Map映射避免循环中的重复数据库查询 - 移除原有的逐条查询逻辑减少数据库交互次数 - 提升列表查询的整体性能表现 --- .../impl/WmsTransferOrderItemServiceImpl.java | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 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 5e7cfa90..aac14cf4 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 @@ -30,6 +30,7 @@ import java.util.Map; import java.util.Collection; import java.util.Objects; import java.util.ArrayList; +import java.util.stream.Collectors; /** @@ -84,7 +85,26 @@ public class WmsTransferOrderItemServiceImpl implements IWmsTransferOrderItemSer public List queryList(WmsTransferOrderItemBo bo) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); List list = baseMapper.selectVoList(lqw); - if (list != null && !list.isEmpty()) { + String coilIdsStr = list.stream() + .map(WmsTransferOrderItemVo::getCoilId) + .filter(Objects::nonNull) // 过滤 null + .distinct() // 去重 + .map(String::valueOf) // Long 转 String + .collect(Collectors.joining(",")); // 直接拼接成逗号字符串 + if (!coilIdsStr.isEmpty()) { + WmsMaterialCoilBo coilBo = new WmsMaterialCoilBo(); + coilBo.setCoilIds(coilIdsStr); + List coilList = coilService.queryList(coilBo); + Map coilMap = coilList.stream() + .collect(Collectors.toMap(WmsMaterialCoilVo::getCoilId, v -> v)); + for (WmsTransferOrderItemVo vo : list) { + WmsMaterialCoilVo coilVo = coilMap.get(vo.getCoilId()); + if (coilVo != null) { + vo.setCoil(coilVo); + } + } + } + if (!list.isEmpty()) { for (WmsTransferOrderItemVo vo : list) { fillDetailInfo(vo); } @@ -93,14 +113,6 @@ public class WmsTransferOrderItemServiceImpl implements IWmsTransferOrderItemSer } private void fillDetailInfo(WmsTransferOrderItemVo vo) { - // 查询钢卷信息 - if (vo.getCoilId() != null) { - WmsMaterialCoilVo coil = coilService.queryById(vo.getCoilId()); - if (coil != null) { - vo.setCoil(coil); - } - } - // 填充改之前物料信息 fillMaterialInfo(vo, vo.getItemIdBefore(), vo.getMaterialTypeBefore(), "Before");