Преглед изворни кода

表单复制名称规则修改和表单排序修改

lvy пре 1 месец
родитељ
комит
0d45e66234

+ 2 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -1641,7 +1641,7 @@ public class ExcelTabController extends BladeController {
         String[] split = wbsInfo.getNodeName().split("__");
         //查出当前节点里面本表的所有复制表
         List<WbsTreeContract> wbsTreeContractList = wbsTreeContractService.getBaseMapper().selectList(Wrappers.<WbsTreeContract>query().lambda()
-                .likeRight(WbsTreeContract::getNodeName,split[0])
+                .likeRight(WbsTreeContract::getNodeName,split[0] + "\\_\\_")
                 .eq(WbsTreeContract::getContractId, wbsInfo.getContractId())
                 .eq(WbsTreeContract::getParentId, wbsInfo.getParentId())
                 .eq(WbsTreeContract::getTableOwner, wbsInfo.getTableOwner()));
@@ -1673,7 +1673,7 @@ public class ExcelTabController extends BladeController {
         wbsTreeContract.setTabGroupId(tabGroupId);
         wbsTreeContract.setCopyPkId(wbsInfo.getCopyPkId() == null ? pkeyId + "" : wbsInfo.getCopyPkId());
         String nodeName;
-        nodeName = wbsTreeContractList2.get(wbsTreeContractList2.size() - 1).getNodeName();
+        nodeName = wbsTreeContractList2.isEmpty() ? wbsInfo.getNodeName() :wbsTreeContractList2.get(wbsTreeContractList2.size() - 1).getNodeName();
         if (nodeName.indexOf("__") >= 0) {
             String[] oldName = nodeName.split("__");
             nodeName = oldName[0] + "__" + (Integer.parseInt(oldName[1]) + 1);

+ 28 - 24
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -657,35 +657,39 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
             // 如果 sort 相同,比较 nodeName
             String name1 = o1.getNodeName();
             String name2 = o2.getNodeName();
-            boolean flag=false;
-            boolean hasUnderscore1 = name1.contains("__");
-            boolean hasUnderscore2 = name2.contains("__");
-            if(name1.contains("PL")&&name2.contains("PL")){
-                flag=true;
+            String[] split1 = name1.split("__");
+            String[] split2 = name2.split("__");
+            if (split1[0].equals(split2[0])) {
+                try {
+                    return compareTo(split1, split2);
+                } catch (NumberFormatException e) {
+                    // 如果无法将字符串转换为数字,则按照字符串比较
+                    return name1.compareTo(name2);
+                }
+            } else {
+                split1 = split1[0].split("_PL_");
+                split2 = split2[0].split("_PL_");
+                try {
+                    return compareTo(split1, split2);
+                } catch (NumberFormatException e) {
+                    return name1.compareTo(name2);
+                }
             }
-            if(flag){
-                int number1 = getPLNumberAfterUnderscore(name1);
-                int number2 = getPLNumberAfterUnderscore(name2);
+        }
+
+        private static int compareTo(String[] split1, String[] split2) {
+            if (split1.length > 1 && split2.length > 1) {
+                int number1 = Integer.parseInt(split1[1]);
+                int number2 = Integer.parseInt(split2[1]);
                 return Integer.compare(number1, number2);
-            }
-            if (!hasUnderscore1 && !hasUnderscore2) {
-                // 两个都不包含 __,按字母顺序排序
-                return name1.compareTo(name2);
-            } else if (!hasUnderscore1) {
-                // 第一个不包含 __,排在前面
-                return -1;
-            } else if (!hasUnderscore2) {
-                // 第二个不包含 __,排在前面
+            } else if (split1.length == 1 && split2.length == 1) {
+                return 0;
+            } else if (split1.length > 1) {
                 return 1;
-            }
-            else {
-                // 两个都包含 __,按 __ 后面的数字排序
-                int number1 = getNumberAfterUnderscore(name1);
-                int number2 = getNumberAfterUnderscore(name2);
-                return Integer.compare(number1, number2);
+            } else {
+                return -1;
             }
         }
-
         private int getNumberAfterUnderscore(String name) {
             String[] parts = name.split("__");
             if (parts.length > 1) {