refactor(wms): 优化钢卷操作记录查询逻辑

- 重构操作记录获取方式,使用流式处理构建映射关系
- 新增对钢卷服务空值判断,增强代码健壮性
- 调整钢卷详情绑定逻辑,确保主数据完整性
- 优化分页查询参数设置,提升查询效率
- 增加操作记录去重处理,避免数据冗余
- 完善空值校验和默认值设置,提高系统稳定性
This commit is contained in:
2025-12-17 15:33:39 +08:00
parent 773971080f
commit 629725add0

View File

@@ -126,24 +126,40 @@ public class WmsDeliveryPlanCoilOperateServiceImpl implements IWmsDeliveryPlanCo
if (coilIdArray.length == 0) {
return Collections.emptyList();
}
List<WmsDeliveryPlanCoilOperate> coilOperate = baseMapper.getCoilOperate(planId, coilIdArray);
List<WmsDeliveryPlanCoilOperateVo> coilOperateVos = BeanUtil.copyToList(coilOperate, WmsDeliveryPlanCoilOperateVo.class);
List<WmsDeliveryPlanCoilOperate> coilOperateList = baseMapper.getCoilOperate(planId, coilIdArray);
// 转Vo并构建操作记录Mapkey=coilIdvalue=对应的操作记录)
Map<Long, WmsDeliveryPlanCoilOperateVo> 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<WmsMaterialCoilVo> tableDataInfo = materialCoilService.queryPageList(bo, pageQuery);
List<WmsMaterialCoilVo> coilDetails = tableDataInfo.getRows();
// 将钢卷详细信息设置到操作记录中
Map<Long, WmsMaterialCoilVo> 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<WmsMaterialCoilVo> tableDataInfo = materialCoilService.queryPageList(bo, pageQuery);
if (tableDataInfo != null && tableDataInfo.getRows() != null) {
List<WmsMaterialCoilVo> coilDetails = tableDataInfo.getRows();
List<WmsDeliveryPlanCoilOperateVo> 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();
}
}