/** * 获取收入类型树 */ @Override public List<IncomeTypeNode> getIncomeTypeTree() { // 最小位数 int minDigits = 6; LambdaQueryWrapper<TFiIncomeType> lambdaQueryWrapper = Wrappers.<TFiIncomeType>lambdaQuery() .isNull(TFiIncomeType::getDeleterName); final List<IncomeTypeNode> incomeTypeNodes = tFiIncomeTypeMapper.selectList(lambdaQueryWrapper).stream().map(incomeTypeNodeMapper::convert).toList(); final List<IncomeTypeNode> levelOne = incomeTypeNodes.stream().filter(item -> item.getItemPath().length() == minDigits).toList(); // 数据组装 for (IncomeTypeNode incomeTypeNode : levelOne) { incomeTypeNode.setNextNode(getNextLevelIncomeTypes(incomeTypeNodes, incomeTypeNode.getItemPath())); } return levelOne; } /** * 获取下面一层的所有节点 */ private List<IncomeTypeNode> getNextLevelIncomeTypes(List<IncomeTypeNode> incomeTypeNodes, String itemPath) { int nextLevelDigits = itemPath.length() + 6; final List<IncomeTypeNode> incomeTypes = incomeTypeNodes.stream() .filter(item -> item.getItemPath().contains(itemPath) && item.getItemPath().length() == nextLevelDigits) .toList(); if (ObjectUtil.isEmpty(incomeTypes)) { return null; } else { for (IncomeTypeNode incomeType : incomeTypes) { incomeType.setNextNode(getNextLevelIncomeTypes(incomeTypeNodes, incomeType.getItemPath())); } } return incomeTypes; }
ItemPath 表示树形结构,遍历树形结构
最新推荐文章于 2024-08-24 22:01:16 发布