|
@@ -5002,17 +5002,17 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
break;
|
|
|
}
|
|
|
//带后缀的数据去掉留纯数据
|
|
|
- List<String> strings1 = extractPureNumbers(list1.get(0));
|
|
|
- List<String> strings2 = extractPureNumbers(list1.get(1));
|
|
|
+ String strings1 = extractPureNumbers(list1.get(0));
|
|
|
+ String strings2 = extractPureNumbers(list2.get(0));
|
|
|
|
|
|
|
|
|
String s3 = list1.get(0);
|
|
|
String s4 = list2.get(0);
|
|
|
- if(CollectionUtils.isNotEmpty(strings1)){
|
|
|
- s3 = strings1.get(0);
|
|
|
+ if(StringUtils.isNotEmpty(strings1)){
|
|
|
+ s3 = strings1;
|
|
|
}
|
|
|
- if(CollectionUtils.isNotEmpty(strings2)){
|
|
|
- s4 = strings2.get(0);
|
|
|
+ if(StringUtils.isNotEmpty(strings2)){
|
|
|
+ s4 = strings2;
|
|
|
}
|
|
|
|
|
|
//比较符
|
|
@@ -5021,33 +5021,31 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
String formulaData = "";
|
|
|
//不是纯数字
|
|
|
if(!pattern.matcher(s3).matches() && pattern.matcher(s4).matches()){
|
|
|
+ //如果有特殊后缀,把值替换为纯数字
|
|
|
+ list2.set(0,s4);
|
|
|
if(s3.contains(" ")){
|
|
|
-
|
|
|
String[] split2 = s3.split(" ");
|
|
|
List<String> list = new ArrayList<>();
|
|
|
for (String string : split2) {
|
|
|
//获取比较符
|
|
|
operator = string.substring(0, 1);
|
|
|
String number = string.substring(1);
|
|
|
- list1.set(0,number);
|
|
|
-
|
|
|
operator = strReplace(operator);
|
|
|
-
|
|
|
- String str = extractPureNumbers(split1[1]).get(0) + operator + extractPureNumbers(number).get(0);
|
|
|
+ String str = split1[1] + operator + extractPureNumbers(number);
|
|
|
list.add(str);
|
|
|
}
|
|
|
+ list1.set(0,s4);
|
|
|
formulaData = String.join("&&",list);
|
|
|
}else{
|
|
|
//获取比较符
|
|
|
operator = s3.substring(0, 1);
|
|
|
String number = s3.substring(1);
|
|
|
- list1.set(0,number);
|
|
|
-
|
|
|
operator = strReplace(operator);
|
|
|
|
|
|
- formulaData = extractPureNumbers(split1[1]).get(0) + operator + extractPureNumbers(number).get(0);
|
|
|
+ formulaData = split1[1] + operator + extractPureNumbers(number);
|
|
|
}
|
|
|
}else if (pattern.matcher(s3).matches() && !pattern.matcher(s4).matches()){
|
|
|
+ list1.set(0,s3);
|
|
|
if(s4.contains(" ")){
|
|
|
String[] split2 = s4.split(" ");
|
|
|
List<String> list = new ArrayList<>();
|
|
@@ -5055,11 +5053,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
//获取比较符
|
|
|
operator = string.substring(0, 1);
|
|
|
String number = string.substring(1);
|
|
|
- list1.set(0,number);
|
|
|
-
|
|
|
operator = strReplace(operator);
|
|
|
-
|
|
|
- String str = extractPureNumbers(split1[0]).get(0) + operator + extractPureNumbers(number).get(0);
|
|
|
+ String str = split1[0] + operator + extractPureNumbers(number);
|
|
|
list.add(str);
|
|
|
}
|
|
|
formulaData = String.join("&&",list);
|
|
@@ -5067,11 +5062,8 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
//获取比较符
|
|
|
operator = s4.substring(0, 1);
|
|
|
String number = s4.substring(1);
|
|
|
- list2.set(0,number);
|
|
|
-
|
|
|
operator = strReplace(operator);
|
|
|
-
|
|
|
- formulaData = extractPureNumbers(split1[0]).get(0) + operator + extractPureNumbers(number).get(0);
|
|
|
+ formulaData = split1[0] + operator + extractPureNumbers(number);
|
|
|
}
|
|
|
} else{
|
|
|
f = f.replace(el, "数据错误,无法比较");
|
|
@@ -5153,16 +5145,23 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
|
|
|
* @param input
|
|
|
* @return
|
|
|
*/
|
|
|
- public static List<String> extractPureNumbers(String input) {
|
|
|
- List<String> result = new ArrayList<>();
|
|
|
- // 正则表达式:匹配整数或小数(包括小数点),忽略其他字符
|
|
|
- Pattern pattern = Pattern.compile("\\d+(?:\\.\\d+)?");
|
|
|
- Matcher matcher = pattern.matcher(input);
|
|
|
+ public static String extractPureNumbers(String input) {
|
|
|
+ if (input == null || input.isEmpty()) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
|
|
|
- while (matcher.find()) {
|
|
|
- result.add(matcher.group());
|
|
|
+ // 检查第一个字符是否为数字
|
|
|
+ if (Character.isDigit(input.charAt(0))) {
|
|
|
+ int endIndex = 1;
|
|
|
+ // 遍历后续字符,直到遇到非数字或字符串结束
|
|
|
+ while (endIndex < input.length() && Character.isDigit(input.charAt(endIndex))) {
|
|
|
+ endIndex++;
|
|
|
+ }
|
|
|
+ // 返回开头的连续数字子串
|
|
|
+ return input.substring(0, endIndex);
|
|
|
}
|
|
|
- return result;
|
|
|
+ // 如果开头不是数字,返回空字符串
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
|