refactor(wms): 优化钢卷操作记录查询逻辑
- 重构操作记录获取方式,使用流式处理构建映射关系 - 新增对钢卷服务空值判断,增强代码健壮性 - 调整钢卷详情绑定逻辑,确保主数据完整性 - 优化分页查询参数设置,提升查询效率 - 增加操作记录去重处理,避免数据冗余 - 完善空值校验和默认值设置,提高系统稳定性
This commit is contained in:
@@ -126,24 +126,40 @@ public class WmsDeliveryPlanCoilOperateServiceImpl implements IWmsDeliveryPlanCo
|
|||||||
if (coilIdArray.length == 0) {
|
if (coilIdArray.length == 0) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
List<WmsDeliveryPlanCoilOperate> coilOperate = baseMapper.getCoilOperate(planId, coilIdArray);
|
List<WmsDeliveryPlanCoilOperate> coilOperateList = baseMapper.getCoilOperate(planId, coilIdArray);
|
||||||
List<WmsDeliveryPlanCoilOperateVo> coilOperateVos = BeanUtil.copyToList(coilOperate, WmsDeliveryPlanCoilOperateVo.class);
|
// 转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就需要设置分页参数都设置为最大即可
|
//接着就是根据钢卷ids去查询钢卷list了 用分页查询的list就需要设置分页参数都设置为最大即可
|
||||||
WmsMaterialCoilBo bo = new WmsMaterialCoilBo();
|
if (materialCoilService != null) {
|
||||||
bo.setCoilIds(coilIds);
|
WmsMaterialCoilBo bo = new WmsMaterialCoilBo();
|
||||||
PageQuery pageQuery = new PageQuery();
|
bo.setCoilIds(coilIds);
|
||||||
pageQuery.setPageNum(1);
|
PageQuery pageQuery = new PageQuery();
|
||||||
pageQuery.setPageSize(Integer.MAX_VALUE);
|
pageQuery.setPageNum(1);
|
||||||
TableDataInfo<WmsMaterialCoilVo> tableDataInfo = materialCoilService.queryPageList(bo, pageQuery);
|
pageQuery.setPageSize(Integer.MAX_VALUE);
|
||||||
List<WmsMaterialCoilVo> coilDetails = tableDataInfo.getRows();
|
TableDataInfo<WmsMaterialCoilVo> tableDataInfo = materialCoilService.queryPageList(bo, pageQuery);
|
||||||
// 将钢卷详细信息设置到操作记录中
|
if (tableDataInfo != null && tableDataInfo.getRows() != null) {
|
||||||
Map<Long, WmsMaterialCoilVo> coilDetailMap = coilDetails.stream()
|
List<WmsMaterialCoilVo> coilDetails = tableDataInfo.getRows();
|
||||||
.collect(Collectors.toMap(WmsMaterialCoilVo::getCoilId, coil -> coil));
|
List<WmsDeliveryPlanCoilOperateVo> resultList = new ArrayList<>();
|
||||||
|
for (WmsMaterialCoilVo coilDetail : coilDetails) {
|
||||||
for (WmsDeliveryPlanCoilOperateVo operate : coilOperateVos) {
|
if (coilDetail != null) {
|
||||||
operate.setCoilDetail(coilDetailMap.get(operate.getCoilId()));
|
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 Collections.emptyList();
|
||||||
return coilOperateVos;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user