| | |
| | | return result; |
| | | } |
| | | |
| | | public static <T, R> List<T> getAllTree(List<T> data, R parentId, Function<? super T, ? extends R> parentIdMapper, Function<? super T, ? extends R> idMapper, BiConsumer<T, List<T>> consumer) { |
| | | List<T> result = new ArrayList<>(); |
| | | for (T datum : data) { |
| | | R dParentId = parentIdMapper.apply(datum); |
| | | R dId = idMapper.apply(datum); |
| | | if (dParentId.equals(dId)) { |
| | | List<T> children = toTreeData(data, dId, parentIdMapper, idMapper, consumer); |
| | | if (!children.isEmpty()) { |
| | | consumer.accept(datum, children); |
| | | } |
| | | result.add(datum); |
| | | } |
| | | if (dParentId.equals(dId)) { |
| | | continue; |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | |
| | | public static <T> void treeRemove(List<T> list, String condition, Function<? super T, ? extends String> fetcher, Function<T, List<T>> childrenGetter) { |
| | | Iterator<T> iterator = list.iterator(); |
| | | while (iterator.hasNext()) { |
| | |
| | | List<Long> collect = groups.stream().map(MatnrGroup::getId).collect(Collectors.toList()); |
| | | List<MatnrGroup> list = this.list(new LambdaQueryWrapper<MatnrGroup>().in(MatnrGroup::getId, collect)); |
| | | matnrs.addAll(list); |
| | | List<MatnrGroup> treeData = Utils.toTreeData(matnrs, 0L, MatnrGroup::getParentId, MatnrGroup::getId, MatnrGroup::setChildren); |
| | | if (matnrs.isEmpty()) { |
| | | return new ArrayList<>(); |
| | | } |
| | | MatnrGroup one = this.getOne(new LambdaQueryWrapper<MatnrGroup>().eq(MatnrGroup::getParentId, 0)); |
| | | if (Objects.isNull(one)) { |
| | | throw new CoolException("顶级分组不存在,请添加后再操作!!"); |
| | | } |
| | | |
| | | List<MatnrGroup> treeData = Utils.toTreeData(matnrs, one.getId(), MatnrGroup::getParentId, MatnrGroup::getId, MatnrGroup::setChildren); |
| | | return treeData; |
| | | } else { |
| | | matnrs = this.list(new LambdaQueryWrapper<MatnrGroup>().orderByAsc(MatnrGroup::getCode)); |