refactor(wms): 优化钢卷操作记录查询逻辑
- 重构操作记录获取方式,使用流式处理构建映射关系 - 新增对钢卷服务空值判断,增强代码健壮性 - 调整钢卷详情绑定逻辑,确保主数据完整性 - 优化分页查询参数设置,提升查询效率 - 增加操作记录去重处理,避免数据冗余 - 完善空值校验和默认值设置,提高系统稳定性
This commit is contained in:
@@ -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并构建操作记录Map(key=coilId,value=对应的操作记录)
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user