Commit fabc3ad7 authored by Fuzy's avatar Fuzy

重构计算方法

parent b6ed6281
...@@ -240,58 +240,46 @@ public class WagesCalculateConversionServiceImpl implements WagesCalculateConver ...@@ -240,58 +240,46 @@ public class WagesCalculateConversionServiceImpl implements WagesCalculateConver
if (pattern.matcher(value).matches()) { if (pattern.matcher(value).matches()) {
return value; return value;
} }
boolean a = true; // 判断是否为 x + y
boolean b = true; boolean ifAccordOne = true;
int a1 = -1; // 判断是否为 x + y + z + ...
int b1 = -1; boolean ifAccordTwo = true;
// 记录第一个符合位置
int accordPositionOne = -1;
// 记录第二个符合位置
int accordPositionTwo = value.length();
for (int i = 0; i < value.length(); i++) { for (int i = 0; i < value.length(); i++) {
char charAt = value.charAt(i); char charAt = value.charAt(i);
if (FH.contains(charAt) && !a && b) { if (FH.contains(charAt) && !ifAccordOne && ifAccordTwo) {
b = false; ifAccordTwo = false;
b1 = i; accordPositionTwo = i;
break; break;
} } else if (FH.contains(charAt)) {
if (FH.contains(charAt) && a) { ifAccordOne = false;
a = false; accordPositionOne = i;
a1 = i;
} }
} }
if (b) { String sta = value.substring(0, accordPositionOne);
String sta = value.substring(0, a1); String end = value.substring(accordPositionOne + 1, accordPositionTwo);
String end = value.substring(a1 + 1); char charAt = value.substring(accordPositionOne, accordPositionOne + 1).charAt(0);
char charAt = value.substring(a1, a1 + 1).charAt(0); String jg = "";
if (charAt == 42) { if (charAt == 42) {
//* //*
return new BigDecimal(sta).multiply(new BigDecimal(end)).toString(); jg = new BigDecimal(sta).multiply(new BigDecimal(end)).toString();
} else if (charAt == 43) { } else if (charAt == 43) {
// + // +
return new BigDecimal(sta).add(new BigDecimal(end)).toString(); jg = new BigDecimal(sta).add(new BigDecimal(end)).toString();
} else if (charAt == 45) { } else if (charAt == 45) {
// - // -
return new BigDecimal(sta).subtract(new BigDecimal(end)).toString(); jg = new BigDecimal(sta).subtract(new BigDecimal(end)).toString();
} else if (charAt == 47) { } else if (charAt == 47) {
// / // /
return new BigDecimal(sta).divide(new BigDecimal(end)).toString(); jg = new BigDecimal(sta).divide(new BigDecimal(end)).toString();
} }
if (ifAccordTwo) {
return jg;
} else { } else {
String sta = value.substring(0, a1); String s = StringUtils.replaceOnce(value, value.substring(0, accordPositionTwo), jg);
String end = value.substring(a1 + 1, b1);
char charAt = value.substring(a1, a1 + 1).charAt(0);
String jg = "";
if (charAt == 42) {
//*
jg = new BigDecimal(sta).multiply(new BigDecimal(end)).toString();
} else if (charAt == 43) {
// +
jg = new BigDecimal(sta).add(new BigDecimal(end)).toString();
} else if (charAt == 45) {
// -
jg = new BigDecimal(sta).subtract(new BigDecimal(end)).toString();
} else if (charAt == 47) {
// /
jg = new BigDecimal(sta).divide(new BigDecimal(end)).toString();
}
String s = StringUtils.replaceOnce(value, value.substring(0, b1), jg);
value = count1(s); value = count1(s);
} }
return value; return value;
......
...@@ -51,7 +51,7 @@ public class WagesConversionServiceImpl implements WagesConversionService { ...@@ -51,7 +51,7 @@ public class WagesConversionServiceImpl implements WagesConversionService {
boolean b1 = list.parallelStream().anyMatch(v -> v.getYearMonth() == null || v.getYearMonth().indexOf("-") <= 0); boolean b1 = list.parallelStream().anyMatch(v -> v.getYearMonth() == null || v.getYearMonth().indexOf("-") <= 0);
if (b1) return "数据库中数据存在日期错误"; if (b1) return "数据库中数据存在日期错误";
Optional<Integer> max = list.parallelStream().map(v -> Integer.parseInt(v.getYearMonth().split("-")[0])).max((a, b) -> a - b); Optional<Integer> max = list.parallelStream().map(v -> Integer.parseInt(v.getYearMonth().split("-")[0])).max((a, b) -> a - b);
List<WagesConversionDataVO> collect = null; List<WagesConversionDataVO> collect;
if (max.isPresent()){ if (max.isPresent()){
collect = list.parallelStream().filter(v -> v.getYearMonth().split("-")[0].equals(max.get() + "")).collect(Collectors.toList()); collect = list.parallelStream().filter(v -> v.getYearMonth().split("-")[0].equals(max.get() + "")).collect(Collectors.toList());
}else { }else {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment