feat(wms): 新增查询二级库区树结构功能

- 在 IWmsActualWarehouseService 接口中新增 queryTreeExcludeLevelThree 方法
- 在 WmsActualWarehouseController 中添加 /levelTwo 接口用于获取二级库区树
- 实现 queryTreeExcludeLevelThree 方法逻辑,过滤掉三级库位节点
- 构建查询条件时排除 actualWarehouseType 为 3 的记录
- 组装树形结构时只保留两级目录关系
This commit is contained in:
2025-11-25 10:41:04 +08:00
parent a7fac2e9e6
commit 5d4eac555a
3 changed files with 45 additions and 0 deletions

View File

@@ -59,6 +59,13 @@ public class WmsActualWarehouseController extends BaseController {
return R.ok(iWmsActualWarehouseService.queryTree(bo));
}
/**
* 获取仅到二级的目录树(不包含三级节点)
*/
@GetMapping("/levelTwo")
public R<List<WmsActualWarehouseTreeVo>> treeExcludeLevelThree(WmsActualWarehouseBo bo) {
return R.ok(iWmsActualWarehouseService.queryTreeExcludeLevelThree(bo));
}
/**
* 导入实际库区/库位数据
*/

View File

@@ -57,4 +57,6 @@ public interface IWmsActualWarehouseService {
* 校验并批量删除实际库区/库位自关联信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
List<WmsActualWarehouseTreeVo> queryTreeExcludeLevelThree(WmsActualWarehouseBo bo);
}

View File

@@ -80,6 +80,40 @@ public class WmsActualWarehouseServiceImpl implements IWmsActualWarehouseService
});
return roots;
}
@Override
public List<WmsActualWarehouseTreeVo> queryTreeExcludeLevelThree(WmsActualWarehouseBo bo) {
if (bo == null) {
bo = new WmsActualWarehouseBo();
}
// 设置查询条件排除三级节点actualWarehouseType=3
LambdaQueryWrapper<WmsActualWarehouse> wrapper = Wrappers.lambdaQuery();
wrapper.eq(StringUtils.isNotBlank(bo.getActualWarehouseCode()), WmsActualWarehouse::getActualWarehouseCode, bo.getActualWarehouseCode());
wrapper.like(StringUtils.isNotBlank(bo.getActualWarehouseName()), WmsActualWarehouse::getActualWarehouseName, bo.getActualWarehouseName());
wrapper.eq(bo.getActualWarehouseType() != null, WmsActualWarehouse::getActualWarehouseType, bo.getActualWarehouseType());
wrapper.eq(bo.getIsEnabled() != null, WmsActualWarehouse::getIsEnabled, bo.getIsEnabled());
// 排除三级节点类型为3的节点
wrapper.ne(WmsActualWarehouse::getActualWarehouseType, 3);
wrapper.orderByAsc(WmsActualWarehouse::getSortNo, WmsActualWarehouse::getActualWarehouseId);
List<WmsActualWarehouseVo> flatList = baseMapper.selectVoList(wrapper);
Map<Long, WmsActualWarehouseTreeVo> nodeMap = new LinkedHashMap<>();
flatList.forEach(item -> {
WmsActualWarehouseTreeVo node = new WmsActualWarehouseTreeVo();
BeanUtil.copyProperties(item, node);
nodeMap.put(node.getActualWarehouseId(), node);
});
List<WmsActualWarehouseTreeVo> roots = new ArrayList<>();
nodeMap.values().forEach(node -> {
Long parentId = Optional.ofNullable(node.getParentId()).orElse(0L);
if (parentId == 0 || !nodeMap.containsKey(parentId)) {
roots.add(node);
} else {
nodeMap.get(parentId).getChildren().add(node);
}
});
return roots;
}
private LambdaQueryWrapper<WmsActualWarehouse> buildQueryWrapper(WmsActualWarehouseBo bo) {
Map<String, Object> params = bo.getParams();
@@ -225,4 +259,6 @@ public class WmsActualWarehouseServiceImpl implements IWmsActualWarehouseService
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}