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(); } }