feat(wms): 新增查询二级库区树结构功能
- 在 IWmsActualWarehouseService 接口中新增 queryTreeExcludeLevelThree 方法 - 在 WmsActualWarehouseController 中添加 /levelTwo 接口用于获取二级库区树 - 实现 queryTreeExcludeLevelThree 方法逻辑,过滤掉三级库位节点 - 构建查询条件时排除 actualWarehouseType 为 3 的记录 - 组装树形结构时只保留两级目录关系
This commit is contained in:
@@ -59,6 +59,13 @@ public class WmsActualWarehouseController extends BaseController {
|
|||||||
return R.ok(iWmsActualWarehouseService.queryTree(bo));
|
return R.ok(iWmsActualWarehouseService.queryTree(bo));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取仅到二级的目录树(不包含三级节点)
|
||||||
|
*/
|
||||||
|
@GetMapping("/levelTwo")
|
||||||
|
public R<List<WmsActualWarehouseTreeVo>> treeExcludeLevelThree(WmsActualWarehouseBo bo) {
|
||||||
|
return R.ok(iWmsActualWarehouseService.queryTreeExcludeLevelThree(bo));
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 导入实际库区/库位数据
|
* 导入实际库区/库位数据
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -57,4 +57,6 @@ public interface IWmsActualWarehouseService {
|
|||||||
* 校验并批量删除实际库区/库位自关联信息
|
* 校验并批量删除实际库区/库位自关联信息
|
||||||
*/
|
*/
|
||||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
|
List<WmsActualWarehouseTreeVo> queryTreeExcludeLevelThree(WmsActualWarehouseBo bo);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -80,6 +80,40 @@ public class WmsActualWarehouseServiceImpl implements IWmsActualWarehouseService
|
|||||||
});
|
});
|
||||||
return roots;
|
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) {
|
private LambdaQueryWrapper<WmsActualWarehouse> buildQueryWrapper(WmsActualWarehouseBo bo) {
|
||||||
Map<String, Object> params = bo.getParams();
|
Map<String, Object> params = bo.getParams();
|
||||||
@@ -225,4 +259,6 @@ public class WmsActualWarehouseServiceImpl implements IWmsActualWarehouseService
|
|||||||
}
|
}
|
||||||
return baseMapper.deleteBatchIds(ids) > 0;
|
return baseMapper.deleteBatchIds(ids) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user