feat(warehouse): 实现一级库位的多级子节点查询功能

- 当库位类型为一级时,查询其所有二级子节点
- 对每个二级节点递归调用queryList获取有效最小层级库位
- 支持三级未拆分或四级库位的完整查询路径
- 返回所有子节点的ID列表,完善库位层级管理逻辑
This commit is contained in:
2026-01-13 13:10:08 +08:00
parent 7c2bf4022b
commit 102eb8bea7

View File

@@ -576,6 +576,33 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
}
Long warehouseType = warehouse.getActualWarehouseType();
// 当为一级库位:查询其所有二级子节点,然后对每个二级节点调用 queryList 获取有效的最小层级库位(三级未拆分或四级)
if (warehouseType != null && warehouseType == 1L) {
WmsActualWarehouseBo level2Bo = new WmsActualWarehouseBo();
level2Bo.setParentId(actualWarehouseId);
List<WmsActualWarehouseVo> level2List = actualWarehouseService.queryList(level2Bo);
if (level2List == null || level2List.isEmpty()) {
return new ArrayList<>();
}
List<Long> resultIds = new ArrayList<>();
for (WmsActualWarehouseVo level2 : level2List) {
if (level2 == null || level2.getActualWarehouseId() == null) {
continue;
}
WmsActualWarehouseBo childBo = new WmsActualWarehouseBo();
childBo.setParentId(level2.getActualWarehouseId());
List<WmsActualWarehouseVo> children = actualWarehouseService.queryList(childBo);
if (children != null && !children.isEmpty()) {
for (WmsActualWarehouseVo ch : children) {
Long id = ch.getActualWarehouseId();
if (id != null) {
resultIds.add(id);
}
}
}
}
return resultIds;
}
// 三级/四级库位直接返回自身ID无下级
if (warehouseType != null && (warehouseType == 3L || warehouseType == 4L)) {
return Collections.singletonList(actualWarehouseId);