|
@@ -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) {
|