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) { 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并构建操作记录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就需要设置分页参数都设置为最大即可 //接着就是根据钢卷ids去查询钢卷list了 用分页查询的list就需要设置分页参数都设置为最大即可
if (materialCoilService != null) {
WmsMaterialCoilBo bo = new WmsMaterialCoilBo(); WmsMaterialCoilBo bo = new WmsMaterialCoilBo();
bo.setCoilIds(coilIds); bo.setCoilIds(coilIds);
PageQuery pageQuery = new PageQuery(); PageQuery pageQuery = new PageQuery();
pageQuery.setPageNum(1); pageQuery.setPageNum(1);
pageQuery.setPageSize(Integer.MAX_VALUE); pageQuery.setPageSize(Integer.MAX_VALUE);
TableDataInfo<WmsMaterialCoilVo> tableDataInfo = materialCoilService.queryPageList(bo, pageQuery); TableDataInfo<WmsMaterialCoilVo> tableDataInfo = materialCoilService.queryPageList(bo, pageQuery);
if (tableDataInfo != null && tableDataInfo.getRows() != null) {
List<WmsMaterialCoilVo> coilDetails = tableDataInfo.getRows(); List<WmsMaterialCoilVo> coilDetails = tableDataInfo.getRows();
// 将钢卷详细信息设置到操作记录中 List<WmsDeliveryPlanCoilOperateVo> resultList = new ArrayList<>();
Map<Long, WmsMaterialCoilVo> coilDetailMap = coilDetails.stream() for (WmsMaterialCoilVo coilDetail : coilDetails) {
.collect(Collectors.toMap(WmsMaterialCoilVo::getCoilId, coil -> coil)); if (coilDetail != null) {
Long coilId = coilDetail.getCoilId();
for (WmsDeliveryPlanCoilOperateVo operate : coilOperateVos) { // 初始化操作记录Vo无操作记录则新建空Vo保证钢卷信息不丢失
operate.setCoilDetail(coilDetailMap.get(operate.getCoilId())); WmsDeliveryPlanCoilOperateVo operateVo = operateMap.getOrDefault(coilId, new WmsDeliveryPlanCoilOperateVo());
// 给操作记录绑定钢卷信息(核心:钢卷为主,操作记录为附属)
operateVo.setCoilId(coilId); // 确保coilId不为空
operateVo.setCoilDetail(coilDetail); // 绑定钢卷详情
resultList.add(operateVo);
} }
}
return coilOperateVos; return resultList;
}
}
return Collections.emptyList();
} }
} }