From f84448a10d99a0fa82e71088051e3517637edaa7 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期二, 09 四月 2024 15:11:52 +0800
Subject: [PATCH] #

---
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/Utils.java |   40 +++++++++++++++++++++++++++++++++++++++-
 1 files changed, 39 insertions(+), 1 deletions(-)

diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/Utils.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/Utils.java
index 1881c3b..0ac4c2a 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/Utils.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/Utils.java
@@ -6,6 +6,7 @@
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Optional;
 import java.util.function.BiConsumer;
@@ -39,13 +40,50 @@
             if (parentId.equals(dParentId)) {
                 R dId = idMapper.apply(d);
                 List<T> children = toTreeData(data, dId, parentIdMapper, idMapper, consumer);
-                consumer.accept(d, children);
+                if(children.size() > 0) {
+                    consumer.accept(d, children);
+                }
                 result.add(d);
             }
         }
         return result;
     }
 
+//    public static <T> List<T> treeRemove(List<T> data, String condition,
+//                                         Function<? super T, ? extends String> fetcher,
+//                                         Function<T, List<T>> childrenGetter,
+//                                         BiConsumer<T, List<T>> childrenSetter) {
+//        List<T> result = new ArrayList<>();
+//        for (T node : data) {
+//            List<T> children = childrenGetter.apply(node);
+//
+//            if (children != null && !children.isEmpty()) {
+//                List<T> newChildren = treeRemove(children, condition, fetcher, childrenGetter, childrenSetter);
+//                childrenSetter.accept(node, newChildren);
+//            }
+//
+//            if (fetcher.apply(node).contains(condition)) {
+//                result.add(node);
+//            }
+//        }
+//        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()) {
+            T next = iterator.next();
+            List<T> children = childrenGetter.apply(next);
+            if (children != null && !children.isEmpty()) {
+                treeRemove(children, condition, fetcher, childrenGetter);
+            } else {
+                if (!fetcher.apply(next).contains(condition)) {
+                    iterator.remove();
+                }
+            }
+        }
+    }
+
     /**
      * 鏁扮粍鍊掑簭
      * @param bytes

--
Gitblit v1.9.1