Commit e9cdecd0 authored by 刘_震's avatar 刘_震

将公式的解析设置成一个工具类(方便后续使用)

parent 36afbb07
...@@ -9,6 +9,7 @@ import com.ruoyi.system.model.wages.dto.WagesFormulaListDto; ...@@ -9,6 +9,7 @@ import com.ruoyi.system.model.wages.dto.WagesFormulaListDto;
import com.ruoyi.system.model.wages.vo.WagesFormulaVo; import com.ruoyi.system.model.wages.vo.WagesFormulaVo;
import com.ruoyi.system.service.WagesCalculateConversionService; import com.ruoyi.system.service.WagesCalculateConversionService;
import com.ruoyi.system.utils.CountUtils; import com.ruoyi.system.utils.CountUtils;
import com.ruoyi.system.utils.ValueUtils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -93,7 +94,7 @@ public class WagesCalculateConversionServiceImpl implements WagesCalculateConver ...@@ -93,7 +94,7 @@ public class WagesCalculateConversionServiceImpl implements WagesCalculateConver
String value = wagesFormulaDto.getValue(); String value = wagesFormulaDto.getValue();
String value1 = value; String value1 = value;
//解析公式value //解析公式value
Map<String, List<String>> operandsMap = extractOperands(value); Map<String, List<String>> operandsMap = ValueUtils.extractOperands(value);
//只含公式中的字段 //只含公式中的字段
List<String> formula = operandsMap.get("operands"); List<String> formula = operandsMap.get("operands");
try { try {
...@@ -122,7 +123,7 @@ public class WagesCalculateConversionServiceImpl implements WagesCalculateConver ...@@ -122,7 +123,7 @@ public class WagesCalculateConversionServiceImpl implements WagesCalculateConver
vo2.setC(wagesFormulaDto.getC()); vo2.setC(wagesFormulaDto.getC());
voList.add(vo2); voList.add(vo2);
} }
}else if (wagesFormulaDto.getValue().contains("应付工资")) { } else if (wagesFormulaDto.getValue().contains("应付工资")) {
for (WagesOverviewOriginalExcelDAO dao : wagesList) { for (WagesOverviewOriginalExcelDAO dao : wagesList) {
Optional<WagesDetailsOriginalExcelDAO> first = wagesDetails.parallelStream().filter(v -> v.getUnitName().equals(dao.getUnitName())).findFirst(); Optional<WagesDetailsOriginalExcelDAO> first = wagesDetails.parallelStream().filter(v -> v.getUnitName().equals(dao.getUnitName())).findFirst();
WagesFormulaVo vo = new WagesFormulaVo(); WagesFormulaVo vo = new WagesFormulaVo();
...@@ -194,14 +195,14 @@ public class WagesCalculateConversionServiceImpl implements WagesCalculateConver ...@@ -194,14 +195,14 @@ public class WagesCalculateConversionServiceImpl implements WagesCalculateConver
vo.setCadre("0"); vo.setCadre("0");
vo.setC(wagesFormulaDto.getC()); vo.setC(wagesFormulaDto.getC());
for (String s : formula) { for (String s : formula) {
if (fieldMapping.containsKey(s)){ if (fieldMapping.containsKey(s)) {
String sqlResult = fieldMapping.get(s); String sqlResult = fieldMapping.get(s);
Field wagesField = null; Field wagesField = null;
wagesField = WagesDetailsOriginalExcelDAO.class.getDeclaredField(sqlResult); wagesField = WagesDetailsOriginalExcelDAO.class.getDeclaredField(sqlResult);
wagesField.setAccessible(true); wagesField.setAccessible(true);
Object fieldValue = wagesField.get(wagesDetail); Object fieldValue = wagesField.get(wagesDetail);
value = StringUtils.replaceOnce(value, s, fieldValue.toString()); value = StringUtils.replaceOnce(value, s, fieldValue.toString());
}else { } else {
value = StringUtils.replaceOnce(value, s, s); value = StringUtils.replaceOnce(value, s, s);
} }
} }
...@@ -217,38 +218,4 @@ public class WagesCalculateConversionServiceImpl implements WagesCalculateConver ...@@ -217,38 +218,4 @@ public class WagesCalculateConversionServiceImpl implements WagesCalculateConver
} }
return voList; return voList;
} }
private Map<String, List<String>> extractOperands(String value) {
Map<String, List<String>> operandsMap = new HashMap<>();
List<String> operands = new ArrayList<>();
List<String> operators = new ArrayList<>();
StringBuilder operandBuilder = new StringBuilder();
for (char c : value.toCharArray()) {
if (isOperator(c)) {
if (operandBuilder.length() > 0) {
operands.add(operandBuilder.toString().trim());
operandBuilder = new StringBuilder();
}
operators.add(String.valueOf(c));
} else {
operandBuilder.append(c);
}
}
if (operandBuilder.length() > 0) {
operands.add(operandBuilder.toString().trim());
}
operandsMap.put("operands", operands);
operandsMap.put("operators", operators);
return operandsMap;
}
//判断是否是操作符
private boolean isOperator(char c) {
return c == '+' || c == '-' || c == '*' || c == '/';
}
} }
\ No newline at end of file
...@@ -17,6 +17,7 @@ import com.ruoyi.system.model.wages.vo.WagesLxVo; ...@@ -17,6 +17,7 @@ import com.ruoyi.system.model.wages.vo.WagesLxVo;
import com.ruoyi.system.model.wages.vo.WagesOverviewOriginalDataVO; import com.ruoyi.system.model.wages.vo.WagesOverviewOriginalDataVO;
import com.ruoyi.system.service.WagesService; import com.ruoyi.system.service.WagesService;
import com.ruoyi.system.utils.CountUtils; import com.ruoyi.system.utils.CountUtils;
import com.ruoyi.system.utils.ValueUtils;
import com.ruoyi.system.utils.WagesUtils; import com.ruoyi.system.utils.WagesUtils;
import com.ruoyi.system.yyinterface.VoucherUtils; import com.ruoyi.system.yyinterface.VoucherUtils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
...@@ -339,7 +340,7 @@ public class WagesServiceImpl implements WagesService { ...@@ -339,7 +340,7 @@ public class WagesServiceImpl implements WagesService {
for (WagesFormulaDto wagesFormulaDto : data) { for (WagesFormulaDto wagesFormulaDto : data) {
String value = wagesFormulaDto.getValue(); String value = wagesFormulaDto.getValue();
//解析公式value //解析公式value
Map<String, List<String>> operandsMap = extractOperands(value); Map<String, List<String>> operandsMap = ValueUtils.extractOperands(value);
//只含公式中的字段 //只含公式中的字段
List<String> formula = operandsMap.get("operands"); List<String> formula = operandsMap.get("operands");
//用来保存匹配的字段名 //用来保存匹配的字段名
...@@ -391,42 +392,6 @@ public class WagesServiceImpl implements WagesService { ...@@ -391,42 +392,6 @@ public class WagesServiceImpl implements WagesService {
return wagesFormulaVos; return wagesFormulaVos;
} }
//解析公式value
private Map<String, List<String>> extractOperands(String value) {
Map<String, List<String>> operandsMap = new HashMap<>();
List<String> operands = new ArrayList<>();
List<String> operators = new ArrayList<>();
StringBuilder operandBuilder = new StringBuilder();
for (char c : value.toCharArray()) {
if (isOperator(c)) {
if (operandBuilder.length() > 0) {
operands.add(operandBuilder.toString().trim());
operandBuilder = new StringBuilder();
}
operators.add(String.valueOf(c));
} else {
operandBuilder.append(c);
}
}
if (operandBuilder.length() > 0) {
operands.add(operandBuilder.toString().trim());
}
operandsMap.put("operands", operands);
operandsMap.put("operators", operators);
return operandsMap;
}
//判断是否是操作符
private boolean isOperator(char c) {
return c == '+' || c == '-' || c == '*' || c == '/';
}
public JSONArray getCustomDoc(CustomDocRequestModel customDocRequestModel) { public JSONArray getCustomDoc(CustomDocRequestModel customDocRequestModel) {
ReturnResult customDocument = VoucherUtils.callVoucherQuery(customDocRequestModel, "/yonbip/digitalModel/customerdoc/list"); ReturnResult customDocument = VoucherUtils.callVoucherQuery(customDocRequestModel, "/yonbip/digitalModel/customerdoc/list");
if (customDocument != null) { if (customDocument != null) {
......
package com.ruoyi.system.utils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author haiwe
* @date 2024/6/24
*/
public class ValueUtils {
public static Map<String, List<String>> extractOperands(String value) {
Map<String, List<String>> operandsMap = new HashMap<>();
List<String> operands = new ArrayList<>();
List<String> operators = new ArrayList<>();
StringBuilder operandBuilder = new StringBuilder();
for (char c : value.toCharArray()) {
if (isOperator(c)) {
if (operandBuilder.length() > 0) {
operands.add(operandBuilder.toString().trim());
operandBuilder = new StringBuilder();
}
operators.add(String.valueOf(c));
} else {
operandBuilder.append(c);
}
}
if (operandBuilder.length() > 0) {
operands.add(operandBuilder.toString().trim());
}
operandsMap.put("operands", operands);
operandsMap.put("operators", operators);
return operandsMap;
}
//判断是否是操作符
private static boolean isOperator(char c) {
return c == '+' || c == '-' || c == '*' || c == '/';
}
}
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