From ef69d3bad0c7f03da11cb1c1e46a84bcebe02bc4 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期二, 25 三月 2025 10:44:48 +0800 Subject: [PATCH] 修改 # 物料分组编码规则优化 --- rsf-common/src/main/java/com/vincent/rsf/common/utils/Utils.java | 20 ++++++++++++++++++++ 1 files changed, 20 insertions(+), 0 deletions(-) diff --git a/rsf-common/src/main/java/com/vincent/rsf/common/utils/Utils.java b/rsf-common/src/main/java/com/vincent/rsf/common/utils/Utils.java index 6123a36..008d82d 100644 --- a/rsf-common/src/main/java/com/vincent/rsf/common/utils/Utils.java +++ b/rsf-common/src/main/java/com/vincent/rsf/common/utils/Utils.java @@ -48,6 +48,26 @@ 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()) { -- Gitblit v1.9.1