| | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Optional; |
| | | |
| | | /** |
| | | * 标签管理 服务实现类 |
| | |
| | | * @param label |
| | | * @return |
| | | */ |
| | | // @Override |
| | | // public Object getLabelList(LabelVO label) { |
| | | // Map<Integer, TreeIntegerNode> labelList = baseMapper.getLabelList(label); |
| | | // List<Integer> list = new ArrayList<>(); |
| | | // // 遍历 |
| | | // labelList.forEach((id, treeNode) -> { |
| | | // if (treeNode.getHasChildren()) { |
| | | // list.add(id); |
| | | // } |
| | | // }); |
| | | // if (list.size() > 0) { |
| | | // // 查询子集 |
| | | // Map<Integer, TreeIntegerNode> childrenLabelList = baseMapper.getChildrenLabelList(list); |
| | | // List<Integer> list2 = new ArrayList<>(); |
| | | // for (TreeIntegerNode value : childrenLabelList.values()) { |
| | | // if(value.getHasChildren()){ |
| | | // list2.add(value.getId()); |
| | | // } |
| | | // } |
| | | // Map<Integer, TreeIntegerNode> childrenLabelList2 = baseMapper.getChildrenLabelList(list2); |
| | | // // 合并集合 |
| | | // labelList.putAll(childrenLabelList); |
| | | // labelList.putAll(childrenLabelList2); |
| | | // } |
| | | // // 处理并返回 |
| | | // return NodeTreeUtil.getNodeTree(labelList); |
| | | // } |
| | | |
| | | @Override |
| | | public Object getLabelList(LabelVO label) { |
| | | Map<Integer, TreeIntegerNode> labelList = baseMapper.getLabelList(label); |
| | | // 使用Optional避免空指针异常 |
| | | Optional<Map<Integer, TreeIntegerNode>> labelListOptional = Optional.ofNullable(baseMapper.getLabelList(label)); |
| | | |
| | | if (!labelListOptional.isPresent()) { |
| | | return null; // 返回空Map代替null |
| | | } |
| | | |
| | | Map<Integer, TreeIntegerNode> labelList = labelListOptional.get(); |
| | | List<Integer> list = new ArrayList<>(); |
| | | // 遍历 |
| | | |
| | | // 遍历,筛选有子节点的标签 |
| | | labelList.forEach((id, treeNode) -> { |
| | | if (treeNode.getHasChildren()) { |
| | | list.add(id); |
| | | } |
| | | }); |
| | | if (list.size() > 0) { |
| | | // 查询子集 |
| | | |
| | | if (!list.isEmpty()) { |
| | | // 使用批量查询以提高性能 |
| | | Map<Integer, TreeIntegerNode> childrenLabelList = baseMapper.getChildrenLabelList(list); |
| | | // 合并集合 |
| | | |
| | | List<Integer> list2 = new ArrayList<>(); |
| | | // 筛选出有子节点的标签 |
| | | childrenLabelList.values().forEach(value -> { |
| | | if(value.getHasChildren()){ |
| | | list2.add(value.getId()); |
| | | } |
| | | }); |
| | | |
| | | // 避免重复查询,直接合并结果 |
| | | labelList.putAll(childrenLabelList); |
| | | |
| | | if (!list2.isEmpty()) { |
| | | // 如果有第二层子节点,进行查询并合并 |
| | | Map<Integer, TreeIntegerNode> childrenLabelList2 = baseMapper.getChildrenLabelList(list2); |
| | | labelList.putAll(childrenLabelList2); |
| | | } |
| | | } |
| | | // 处理并返回 |
| | | return NodeTreeUtil.getNodeTree(labelList); |
| | | |
| | | // 处理并返回标签树 |
| | | return NodeTreeUtil.getNodeTree(labelList); // 假设NodeTreeUtil.getNodeTree已做空值检查 |
| | | } |
| | | |
| | | @Override |