liuyc 2 жил өмнө
parent
commit
4ebc3b97d0

+ 42 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -34,11 +34,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.annotation.Resource;
 import java.io.File;
 import java.io.IOException;
 import java.util.*;
-import java.util.concurrent.*;
 import java.util.stream.Collectors;
 
 @Service
@@ -419,6 +417,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                         List<WbsTreeQueryValueVO> listRoot = wbsTreeQueryValueVOS.stream().filter(f -> f.getParentId() == 0L).collect(Collectors.toList());
                         Map<Long, List<WbsTreeQueryValueVO>> mapAll = wbsTreeQueryValueVOS.stream().collect(Collectors.groupingBy(WbsTreeQueryValueVO::getParentId));
                         this.buildWbsTreeByGetQueryValueByType(listRoot, mapAll);
+                        this.sortListPublic(listRoot);
                         return listRoot;
                     }
                 } else {//私有
@@ -431,6 +430,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                         List<WbsTreePrivateQueryValueVO> listRoot = wbsTreePrivateQueryValueVOS.stream().filter(f -> f.getParentId() == 0L).collect(Collectors.toList());
                         Map<Long, List<WbsTreePrivateQueryValueVO>> mapAll = wbsTreePrivateQueryValueVOS.stream().collect(Collectors.groupingBy(WbsTreePrivateQueryValueVO::getParentId));
                         this.buildWbsTreePrivateByGetQueryValueByType(listRoot, mapAll);
+                        this.sortListPrivate(listRoot);
                         return listRoot;
                     }
                 }
@@ -445,6 +445,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                         List<WbsTreeQueryValueVO> listRoot = wbsTreeQueryValueVOS.stream().filter(f -> f.getParentId() == 0L).collect(Collectors.toList());
                         Map<Long, List<WbsTreeQueryValueVO>> mapAll = wbsTreeQueryValueVOS.stream().collect(Collectors.groupingBy(WbsTreeQueryValueVO::getParentId));
                         this.buildWbsTreeByGetQueryValueByType(listRoot, mapAll);
+                        this.sortListPublic(listRoot);
                         return listRoot;
                     }
                 } else {//私有
@@ -457,6 +458,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                         List<WbsTreePrivateQueryValueVO> listRoot = wbsTreePrivateQueryValueVOS.stream().filter(f -> f.getParentId() == 0L).collect(Collectors.toList());
                         Map<Long, List<WbsTreePrivateQueryValueVO>> mapAll = wbsTreePrivateQueryValueVOS.stream().collect(Collectors.groupingBy(WbsTreePrivateQueryValueVO::getParentId));
                         this.buildWbsTreePrivateByGetQueryValueByType(listRoot, mapAll);
+                        this.sortListPrivate(listRoot);
                         return listRoot;
                     }
                 }
@@ -465,6 +467,30 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         return null;
     }
 
+    /**
+     * 公有排序
+     */
+    private void sortListPublic(List<WbsTreeQueryValueVO> list) {
+        list.sort(Comparator.comparing(WbsTreeQueryValueVO::getSort, Comparator.nullsLast(Integer::compare)));
+        for (WbsTreeQueryValueVO item : list) {
+            if (item.getType() == 1 && item.getHasChildren()) {
+                sortListPublic(item.getChildren());
+            }
+        }
+    }
+
+    /**
+     * 私有排序
+     */
+    private void sortListPrivate(List<WbsTreePrivateQueryValueVO> list) {
+        list.sort(Comparator.comparing(WbsTreePrivateQueryValueVO::getSort, Comparator.nullsLast(Integer::compare)));
+        for (WbsTreePrivateQueryValueVO item : list) {
+            if (item.getType() == 1 && item.getHasChildren()) {
+                sortListPrivate(item.getChildren());
+            }
+        }
+    }
+
     /**
      * 公有树构造,获取所有父级节点
      */
@@ -486,6 +512,13 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                 wbsTree.setTitle(wbsTree.getNodeName());
                 wbsTree.setChildren(childrenList);
                 wbsTree.setHasChildren(true);
+                //如果子级是元素表,那么表示最底层
+                List<WbsTreeQueryValueVO> collect = childrenList.stream().filter(f -> f.getType() == 2).collect(Collectors.toList());
+                if (wbsTree.getType() == 1 && collect.size() > 0) {
+                    wbsTree.setChildren(null);
+                    wbsTree.setHasChildren(false);
+                    continue;
+                }
                 this.buildWbsTreeByGetQueryValueByType(childrenList, mapAll);
             }
         }
@@ -512,6 +545,13 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                 wbsTree.setTitle(wbsTree.getNodeName());
                 wbsTree.setChildren(childrenList);
                 wbsTree.setHasChildren(true);
+                //如果子级是元素表,那么表示最底层
+                List<WbsTreePrivateQueryValueVO> collect = childrenList.stream().filter(f -> f.getType() == 2).collect(Collectors.toList());
+                if (wbsTree.getType() == 1 && collect.size() > 0) {
+                    wbsTree.setChildren(null);
+                    wbsTree.setHasChildren(false);
+                    continue;
+                }
                 this.buildWbsTreePrivateByGetQueryValueByType(childrenList, mapAll);
             }
         }