From 629725add053eb129da2db5feaa7f71658301166 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Wed, 17 Dec 2025 15:33:39 +0800 Subject: [PATCH] =?UTF-8?q?refactor(wms):=20=E4=BC=98=E5=8C=96=E9=92=A2?= =?UTF-8?q?=E5=8D=B7=E6=93=8D=E4=BD=9C=E8=AE=B0=E5=BD=95=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 重构操作记录获取方式,使用流式处理构建映射关系 - 新增对钢卷服务空值判断,增强代码健壮性 - 调整钢卷详情绑定逻辑,确保主数据完整性 - 优化分页查询参数设置,提升查询效率 - 增加操作记录去重处理,避免数据冗余 - 完善空值校验和默认值设置,提高系统稳定性 --- ...WmsDeliveryPlanCoilOperateServiceImpl.java | 50 ++++++++++++------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsDeliveryPlanCoilOperateServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsDeliveryPlanCoilOperateServiceImpl.java index 85f7c802..c1a99ca5 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsDeliveryPlanCoilOperateServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsDeliveryPlanCoilOperateServiceImpl.java @@ -126,24 +126,40 @@ public class WmsDeliveryPlanCoilOperateServiceImpl implements IWmsDeliveryPlanCo if (coilIdArray.length == 0) { return Collections.emptyList(); } - List coilOperate = baseMapper.getCoilOperate(planId, coilIdArray); - List coilOperateVos = BeanUtil.copyToList(coilOperate, WmsDeliveryPlanCoilOperateVo.class); + List coilOperateList = baseMapper.getCoilOperate(planId, coilIdArray); + // 转Vo并构建操作记录Map(key=coilId,value=对应的操作记录) + Map operateMap = BeanUtil.copyToList(coilOperateList, WmsDeliveryPlanCoilOperateVo.class) + .stream() + .collect(Collectors.toMap( + WmsDeliveryPlanCoilOperateVo::getCoilId, + operate -> operate, + (v1, v2) -> v1 // 防重复(理论上窗口函数已保证唯一,兜底) + )); //接着就是根据钢卷ids去查询钢卷list了 用分页查询的list就需要设置分页参数都设置为最大即可 - WmsMaterialCoilBo bo = new WmsMaterialCoilBo(); - bo.setCoilIds(coilIds); - PageQuery pageQuery = new PageQuery(); - pageQuery.setPageNum(1); - pageQuery.setPageSize(Integer.MAX_VALUE); - TableDataInfo tableDataInfo = materialCoilService.queryPageList(bo, pageQuery); - List coilDetails = tableDataInfo.getRows(); - // 将钢卷详细信息设置到操作记录中 - Map coilDetailMap = coilDetails.stream() - .collect(Collectors.toMap(WmsMaterialCoilVo::getCoilId, coil -> coil)); - - for (WmsDeliveryPlanCoilOperateVo operate : coilOperateVos) { - operate.setCoilDetail(coilDetailMap.get(operate.getCoilId())); + if (materialCoilService != null) { + WmsMaterialCoilBo bo = new WmsMaterialCoilBo(); + bo.setCoilIds(coilIds); + PageQuery pageQuery = new PageQuery(); + pageQuery.setPageNum(1); + pageQuery.setPageSize(Integer.MAX_VALUE); + TableDataInfo tableDataInfo = materialCoilService.queryPageList(bo, pageQuery); + if (tableDataInfo != null && tableDataInfo.getRows() != null) { + List coilDetails = tableDataInfo.getRows(); + List resultList = new ArrayList<>(); + for (WmsMaterialCoilVo coilDetail : coilDetails) { + if (coilDetail != null) { + Long coilId = coilDetail.getCoilId(); + // 初始化操作记录Vo(无操作记录则新建空Vo,保证钢卷信息不丢失) + WmsDeliveryPlanCoilOperateVo operateVo = operateMap.getOrDefault(coilId, new WmsDeliveryPlanCoilOperateVo()); + // 给操作记录绑定钢卷信息(核心:钢卷为主,操作记录为附属) + operateVo.setCoilId(coilId); // 确保coilId不为空 + operateVo.setCoilDetail(coilDetail); // 绑定钢卷详情 + resultList.add(operateVo); + } + } + return resultList; + } } - - return coilOperateVos; + return Collections.emptyList(); } }