소스 검색

导出划分

cr 1 개월 전
부모
커밋
1936934a32
1개의 변경된 파일22개의 추가작업 그리고 5개의 파일을 삭제
  1. 22 5
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

+ 22 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -4827,7 +4827,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                 .collect(Collectors.toList());
 
         if (!leafNodes.isEmpty()) {
-            return leafNodes;
+            return sortLeafNodes(leafNodes);
         }
 
         // 2. 如果没有子分项,找分项工程 (节点类型4)
@@ -4836,7 +4836,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                 .collect(Collectors.toList());
 
         if (!leafNodes.isEmpty()) {
-            return leafNodes;
+            return sortLeafNodes(leafNodes);
         }
 
         // 3. 如果没有分项,找子分部工程 (节点类型3)
@@ -4845,7 +4845,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                 .collect(Collectors.toList());
 
         if (!leafNodes.isEmpty()) {
-            return leafNodes;
+            return sortLeafNodes(leafNodes);
         }
 
         // 4. 如果没有子分部,找分部工程 (节点类型2)
@@ -4854,13 +4854,30 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                 .collect(Collectors.toList());
 
         if (!leafNodes.isEmpty()) {
-            return leafNodes;
+            return sortLeafNodes(leafNodes);
         }
 
         // 5. 最后找单位工程 (节点类型18)
-        return projects.stream()
+        leafNodes = projects.stream()
                 .filter(item -> item.getNodeType() == 18)
                 .collect(Collectors.toList());
+
+        return sortLeafNodes(leafNodes);
+    }
+
+    // 排序方法:先按pId排序,pId相同则按sort排序(null值排在最后)
+    private List<WbsTreeContract> sortLeafNodes(List<WbsTreeContract> nodes) {
+        return nodes.stream()
+                .sorted(Comparator
+                        .comparing(WbsTreeContract::getPId)
+                        .thenComparing(
+                                Comparator.comparing(
+                                        WbsTreeContract::getSort,
+                                        Comparator.nullsLast(Comparator.naturalOrder())
+                                )
+                        )
+                )
+                .collect(Collectors.toList());
     }
 
     // 根据叶子节点类型填充工程数据