feat(wms): 查询实际库位列表时补充占用钢卷信息
- 引入 WmsMaterialCoil 和其 Mapper 依赖 - 在查询实际库位时,针对被占用的库位(isEnabled=0)补充对应的钢卷信息 - 查询当前在库且状态正常的钢卷数据(del_flag=0, status=0) - 对同一库位多条钢卷记录的情况,取主键最大的作为最新记录 - 将钢卷编号信息(入库号、当前号、供应商号)设置到库位 VO 中返回前端展示
This commit is contained in:
@@ -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<WmsActualWarehouseVo> queryList(WmsActualWarehouseBo bo) {
|
||||
LambdaQueryWrapper<WmsActualWarehouse> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
List<WmsActualWarehouseVo> list = baseMapper.selectVoList(lqw);
|
||||
|
||||
if (CollUtil.isEmpty(list)) {
|
||||
return list;
|
||||
}
|
||||
|
||||
// 仅对被占用的位置(isEnabled=0)补充钢卷信息
|
||||
List<Long> 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<WmsMaterialCoil> coils = wmsMaterialCoilMapper.selectList(
|
||||
Wrappers.<WmsMaterialCoil>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<Long, WmsMaterialCoil> 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
|
||||
|
||||
Reference in New Issue
Block a user