Browse Source

质检-文件提名去重
1、工程划分查询去重
2、资料保存时对文件提名去重

LHB 1 tháng trước cách đây
mục cha
commit
05a6320fde

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

@@ -1689,12 +1689,30 @@ 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()) {
-                        result.add(nodes.get(i));
+                    boolean isExist = false;
+                    //获取当前节点的名称
+                    String title = nodes.get(i);
+                    //当前节点的名称是否已经在父级节点中包含了
+                    if(org.apache.commons.lang.StringUtils.isNotEmpty(title)){
+                        for (int j = 0; j < i; j++) {
+                            String parentTitle = nodes.get(j);
+                            //如果父级节点名称中保存当前节点名称  就跳过当前节点
+                            if(org.apache.commons.lang.StringUtils.isNotEmpty(parentTitle) && org.apache.commons.lang.StringUtils.isNotEmpty(title) && parentTitle.contains(title)){
+                                isExist = true;
+                                break;
+                            }
+                        }
+                        if(isExist){
+                            continue;
+                        }
+                        //保留之间的添加逻辑 在之前对数据做去重过滤
+                        if (i < nodes.size()) {
+                            result.add(nodes.get(i));
+                        }
                     }
                 }
                 return String.join("", result);
@@ -1707,19 +1725,23 @@ 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));
+                    boolean isExist = false;
+                    //获取当前节点的名称
+                    String title = map.get(i == 0 ? 1 : i == 18 ? 1 : i);
+                    //当前节点的名称是否已经在父级节点中包含了
+                    if(org.apache.commons.lang.StringUtils.isNotEmpty(title)){
+                        for (int j = 0; j < i; j++) {
+                            String parentTitle = map.get(j == 0 ? 1 : j == 18 ? 1 : j);
+                            //如果父级节点名称中保存当前节点名称  就跳过当前节点
+                            if(org.apache.commons.lang.StringUtils.isNotEmpty(parentTitle) && org.apache.commons.lang.StringUtils.isNotEmpty(title) && parentTitle.contains(title)){
+                                isExist = true;
+                                break;
+                            }
                         }
-                    }else {
-                        if(map.containsKey(i)){
-                            result.add(map.get(i));
+                        if(isExist){
+                            continue;
                         }
+                        result.add(title);
                     }
                 }
                 return String.join("", result);

+ 17 - 12
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/NodeBaseInfoController.java

@@ -191,7 +191,8 @@ 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,
@@ -200,19 +201,23 @@ public class NodeBaseInfoController extends BladeController {
                     ));
             StringBuilder result = new StringBuilder("");
             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));
+                boolean isExist = false;
+                //获取当前节点的名称
+                String title = map.get(i == 0 ? 1 : i == 18 ? 1 : i);
+                //当前节点的名称是否已经在父级节点中包含了
+                if(StringUtils.isNotEmpty(title)){
+                    for (int j = 0; j < i; j++) {
+                        String parentTitle = map.get(j == 0 ? 1 : j == 18 ? 1 : j);
+                        //如果父级节点名称中保存当前节点名称  就跳过当前节点
+                        if(StringUtils.isNotEmpty(parentTitle) && StringUtils.isNotEmpty(title) && parentTitle.contains(title)){
+                            isExist = true;
+                            break;
+                        }
                     }
-                }else {
-                    if(map.containsKey(i)){
-                        result.append(map.get(i));
+                    if(isExist){
+                        continue;
                     }
+                    result.append(title);
                 }
             }
         return R.data(result.toString());