diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsActualWarehouseVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsActualWarehouseVo.java index 6fff2e15..1757da65 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsActualWarehouseVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsActualWarehouseVo.java @@ -69,5 +69,10 @@ public class WmsActualWarehouseVo { @ExcelProperty(value = "备注") private String remark; + // 占用钢卷信息(当 isEnabled=0 时可能有值) + private String enterCoilNo; + private String currentCoilNo; + private String supplierCoilNo; + } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsActualWarehouseServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsActualWarehouseServiceImpl.java index dd25a497..b72927b8 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsActualWarehouseServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsActualWarehouseServiceImpl.java @@ -18,6 +18,8 @@ import com.klp.domain.vo.WmsActualWarehouseVo; import com.klp.domain.WmsActualWarehouse; import com.klp.mapper.WmsActualWarehouseMapper; import com.klp.service.IWmsActualWarehouseService; +import com.klp.domain.WmsMaterialCoil; +import com.klp.mapper.WmsMaterialCoilMapper; import java.util.*; import java.util.stream.Collectors; @@ -33,6 +35,7 @@ import java.util.stream.Collectors; public class WmsActualWarehouseServiceImpl implements IWmsActualWarehouseService { private final WmsActualWarehouseMapper baseMapper; + private final WmsMaterialCoilMapper wmsMaterialCoilMapper; /** * 查询实际库区/库位自关联 @@ -109,7 +112,63 @@ public class WmsActualWarehouseServiceImpl implements IWmsActualWarehouseService @Override public List queryList(WmsActualWarehouseBo bo) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); + List list = baseMapper.selectVoList(lqw); + + if (CollUtil.isEmpty(list)) { + return list; + } + + // 仅对被占用的位置(isEnabled=0)补充钢卷信息 + List occupiedAwIds = list.stream() + .filter(it -> it.getIsEnabled() != null && it.getIsEnabled() == 0) + .map(WmsActualWarehouseVo::getActualWarehouseId) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.toList()); + + if (CollUtil.isEmpty(occupiedAwIds)) { + return list; + } + + // 查询当前在库(del_flag=0, status=0)并且占用这些库位的钢卷,仅选择必要列 + List coils = wmsMaterialCoilMapper.selectList( + Wrappers.lambdaQuery() + .select( + WmsMaterialCoil::getActualWarehouseId, + WmsMaterialCoil::getCoilId, + WmsMaterialCoil::getEnterCoilNo, + WmsMaterialCoil::getCurrentCoilNo, + WmsMaterialCoil::getSupplierCoilNo + ) + .in(WmsMaterialCoil::getActualWarehouseId, occupiedAwIds) + .eq(WmsMaterialCoil::getDelFlag, 0) + .eq(WmsMaterialCoil::getStatus, 0) + ); + + if (CollUtil.isEmpty(coils)) { + return list; + } + + // 同一库位若有多条记录,选择最新一条(按更新顺序无字段,这里按主键最大) + Map coilByAwId = coils.stream() + .collect(Collectors.toMap( + WmsMaterialCoil::getActualWarehouseId, + c -> c, + (a, b) -> a.getCoilId() != null && b.getCoilId() != null && a.getCoilId() > b.getCoilId() ? a : b + )); + + list.forEach(it -> { + if (it.getIsEnabled() != null && it.getIsEnabled() == 0) { + WmsMaterialCoil c = coilByAwId.get(it.getActualWarehouseId()); + if (c != null) { + it.setEnterCoilNo(c.getEnterCoilNo()); + it.setCurrentCoilNo(c.getCurrentCoilNo()); + it.setSupplierCoilNo(c.getSupplierCoilNo()); + } + } + }); + + return list; } @Override