Przeglądaj źródła

Merge branch 'refs/heads/feature-lihb-20251107-titleDedup' into dev

LHB 1 dzień temu
rodzic
commit
88ae4fe3c6

+ 10 - 14
blade-service/blade-manager/src/main/java/com/mixsmart/utils/CustomFunction.java

@@ -1690,11 +1690,16 @@ public class CustomFunction {
             List<String> result = new ArrayList<>();
             param = param.trim().replaceAll("(?i:c)", "");
             List<String> list = Arrays.asList(param.split("[^.\\d]"));
-            List<Integer> index = list.stream().map(Integer::parseInt).collect(Collectors.toList());
+            List<Integer> index = list.stream().map(Integer::parseInt).sorted().collect(Collectors.toList());
             Integer type = RandomNumberHolder.getRandomTemplateType();
             if(type==null||type==1){
                 for (Integer i : index) {
                     if (i < nodes.size()) {
+                        //获取当前节点的名称
+                        String title = nodes.get(i);
+                        if(title == null || result.stream().anyMatch(f -> f.contains(title))){
+                            continue;
+                        }
                         result.add(nodes.get(i));
                     }
                 }
@@ -1708,20 +1713,11 @@ public class CustomFunction {
                         (existing, replacement) -> replacement // 如果键重复,保留后者
                     ));
                 for (Integer i : index) {
-                    if(i==0){
-                        if(map.containsKey(1)){
-                            result.add(map.get(1));
-                        }
-                    }
-                    else if(i==1){
-                        if(map.containsKey(18)){
-                            result.add(map.get(18));
-                        }
-                    }else {
-                        if(map.containsKey(i)){
-                            result.add(map.get(i));
-                        }
+                    String title = map.get(i == 0 ? 1 : i == 1 && map.containsKey(18) ? 18 : i);
+                    if(title == null || result.stream().anyMatch(f -> f.contains(title))){
+                        continue;
                     }
+                    result.add(title);
                 }
                 return String.join("", result);
             }

+ 8 - 16
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/NodeBaseInfoController.java

@@ -191,31 +191,23 @@ public class NodeBaseInfoController extends BladeController {
             List<WbsTreeContract> nodeNames = jdbcTemplate.query(sql1, new BeanPropertyRowMapper<>(WbsTreeContract.class));
              nameRule = nameRule.trim().replaceAll("(?i:c)", "");
             List<String> list = Arrays.asList(nameRule.split("[^.\\d]"));
-            List<Integer> index = list.stream().map(Integer::parseInt).collect(Collectors.toList());
+            //添加排序规则,永远都是0-1-2-3-4-5-6的顺序去组装数据
+            List<Integer> index = list.stream().map(Integer::parseInt).sorted().collect(Collectors.toList());
             Map<Integer, String> map = nodeNames.stream()
                     .collect(Collectors.toMap(
                             WbsTreeContract::getNodeType,
                             WbsTreeContract::getNodeName,
                             (existing, replacement) -> replacement // 如果键重复,保留后者
                     ));
-            StringBuilder result = new StringBuilder("");
+            List<String> result = new ArrayList<>();
             for (Integer i : index) {
-                if(i==0){
-                    if(map.containsKey(1)){
-                        result.append(map.get(1));
-                    }
-                }
-                else if(i==1){
-                    if(map.containsKey(18)){
-                        result.append(map.get(18));
-                    }
-                }else {
-                    if(map.containsKey(i)){
-                        result.append(map.get(i));
-                    }
+                String title = map.get(i == 0 ? 1 : i == 1 && map.containsKey(18) ? 18 : i);
+                if(title == null || result.stream().anyMatch(f -> f.contains(title))){
+                    continue;
                 }
+                result.add(title);
             }
-        return R.data(result.toString());
+        return R.data(String.join("", result));
     }
 
     public R synPDFInfo(String contractId, String nodeId, String classify, String projectId,Map<Long,Map<String,Object>>dataMap) {