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

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

parent 36afbb07
......@@ -9,6 +9,7 @@ import com.ruoyi.system.model.wages.dto.WagesFormulaListDto;
import com.ruoyi.system.model.wages.vo.WagesFormulaVo;
import com.ruoyi.system.service.WagesCalculateConversionService;
import com.ruoyi.system.utils.CountUtils;
import com.ruoyi.system.utils.ValueUtils;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
......@@ -93,7 +94,7 @@ public class WagesCalculateConversionServiceImpl implements WagesCalculateConver
String value = wagesFormulaDto.getValue();
String value1 = value;
//解析公式value
Map<String, List<String>> operandsMap = extractOperands(value);
Map<String, List<String>> operandsMap = ValueUtils.extractOperands(value);
//只含公式中的字段
List<String> formula = operandsMap.get("operands");
try {
......@@ -122,7 +123,7 @@ public class WagesCalculateConversionServiceImpl implements WagesCalculateConver
vo2.setC(wagesFormulaDto.getC());
voList.add(vo2);
}
}else if (wagesFormulaDto.getValue().contains("应付工资")) {
} else if (wagesFormulaDto.getValue().contains("应付工资")) {
for (WagesOverviewOriginalExcelDAO dao : wagesList) {
Optional<WagesDetailsOriginalExcelDAO> first = wagesDetails.parallelStream().filter(v -> v.getUnitName().equals(dao.getUnitName())).findFirst();
WagesFormulaVo vo = new WagesFormulaVo();
......@@ -194,14 +195,14 @@ public class WagesCalculateConversionServiceImpl implements WagesCalculateConver
vo.setCadre("0");
vo.setC(wagesFormulaDto.getC());
for (String s : formula) {
if (fieldMapping.containsKey(s)){
if (fieldMapping.containsKey(s)) {
String sqlResult = fieldMapping.get(s);
Field wagesField = null;
wagesField = WagesDetailsOriginalExcelDAO.class.getDeclaredField(sqlResult);
wagesField.setAccessible(true);
Object fieldValue = wagesField.get(wagesDetail);
value = StringUtils.replaceOnce(value, s, fieldValue.toString());
}else {
} else {
value = StringUtils.replaceOnce(value, s, s);
}
}
......@@ -217,38 +218,4 @@ public class WagesCalculateConversionServiceImpl implements WagesCalculateConver
}
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;
import com.ruoyi.system.model.wages.vo.WagesOverviewOriginalDataVO;
import com.ruoyi.system.service.WagesService;
import com.ruoyi.system.utils.CountUtils;
import com.ruoyi.system.utils.ValueUtils;
import com.ruoyi.system.utils.WagesUtils;
import com.ruoyi.system.yyinterface.VoucherUtils;
import lombok.RequiredArgsConstructor;
......@@ -339,7 +340,7 @@ public class WagesServiceImpl implements WagesService {
for (WagesFormulaDto wagesFormulaDto : data) {
String value = wagesFormulaDto.getValue();
//解析公式value
Map<String, List<String>> operandsMap = extractOperands(value);
Map<String, List<String>> operandsMap = ValueUtils.extractOperands(value);
//只含公式中的字段
List<String> formula = operandsMap.get("operands");
//用来保存匹配的字段名
......@@ -391,42 +392,6 @@ public class WagesServiceImpl implements WagesService {
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) {
ReturnResult customDocument = VoucherUtils.callVoucherQuery(customDocRequestModel, "/yonbip/digitalModel/customerdoc/list");
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