From 50d502632fa115595c4e49a09e65f0e6629f7d1c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com>
Date: Sat, 16 Apr 2022 16:49:22 +0800
Subject: [PATCH] =?UTF-8?q?=E5=85=AC=E5=BC=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../salaryacct/bo/CalculateFormulaVarBO.java | 13 +++++++------
.../salary/service/SalaryFormulaService.java | 5 +++--
.../service/impl/FormulaRunServiceImpl.java | 10 +++++++---
.../impl/SalaryAcctCalculateServiceImpl.java | 3 ---
.../service/impl/SalaryFormulaServiceImpl.java | 16 ++++++++++++----
.../salary/web/SalaryFormulaController.java | 3 ++-
.../salary/wrapper/SalaryFormulaWrapper.java | 5 +++--
7 files changed, 34 insertions(+), 21 deletions(-)
diff --git a/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java b/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java
index af4854b17..28bb2a95f 100644
--- a/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java
+++ b/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java
@@ -37,12 +37,13 @@ import java.util.*;
import java.util.stream.Collectors;
/**
- * @description: 薪资核算-将数据转换成公式中的变量
- * @author: xiajun
- * @modified By: xiajun
- * @date: Created in 1/25/22 7:29 PM
- * @version:v1.0
- */
+ * 薪资核算-将数据转换成公式中的变量
+ *
Copyright: Copyright (c) 2022
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
@Data
@Accessors(chain = true)
public class CalculateFormulaVarBO {
diff --git a/src/com/engine/salary/service/SalaryFormulaService.java b/src/com/engine/salary/service/SalaryFormulaService.java
index 8527912dc..591e83caa 100644
--- a/src/com/engine/salary/service/SalaryFormulaService.java
+++ b/src/com/engine/salary/service/SalaryFormulaService.java
@@ -2,6 +2,7 @@ package com.engine.salary.service;
import com.engine.salary.entity.salaryformula.ExpressFormula;
import com.engine.salary.entity.salaryformula.param.SalaryFormulaSaveParam;
+import com.engine.salary.entity.salaryformula.po.FormulaPO;
import java.util.Collection;
import java.util.List;
@@ -32,7 +33,7 @@ public interface SalaryFormulaService {
*/
ExpressFormula getExpressFormula(Long formulaId);
- void save(SalaryFormulaSaveParam salaryFormulaSaveParam);
+ FormulaPO save(SalaryFormulaSaveParam salaryFormulaSaveParam);
- void update(SalaryFormulaSaveParam salaryFormulaSaveParam);
+ FormulaPO update(SalaryFormulaSaveParam salaryFormulaSaveParam);
}
diff --git a/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java b/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java
index c4dd580a6..f27c0cb0a 100644
--- a/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java
+++ b/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java
@@ -13,9 +13,13 @@ public class FormulaRunServiceImpl extends Service implements FormulaRunService
@Override
public Object run(ExpressFormula expressFormula, List formulaVars, DataCollectionEmployee simpleEmployee) {
-
+ /*
+ 公式内容以如下显示方式存储
+ {薪资项目.输入项1}+{薪资项目.输入项2}
+ */
String formula = expressFormula.getFormula();
+
JexlBuilder jexlBuilder = new JexlBuilder();
// 创建Jexl表达式引擎
JexlEngine jexlEngine = jexlBuilder.create();
@@ -23,8 +27,8 @@ public class FormulaRunServiceImpl extends Service implements FormulaRunService
JexlScript jexlScript = jexlEngine.createScript(formula);
// 创建Jexl表达式变量上下文
JexlContext jexlContext = new MapContext();
- formulaVars.forEach(v->{
- jexlContext.set(v.getFieldId(),v.getContent());
+ formulaVars.forEach(v -> {
+ jexlContext.set(v.getFieldId(), v.getContent());
});
// 执行Jexl表达式,得到结果
Object execute = jexlScript.execute(jexlContext);
diff --git a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java
index e4ba86ea2..d815cdd96 100644
--- a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java
+++ b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java
@@ -247,9 +247,6 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc
// 给公式中的变量填入值
List formulaVars = ExpressFormulaBO.buildFormulaVar4Accounting(expressFormula, formulaVarValueMap);
- String formula = expressFormula.getFormula();
-
-
// todo 运行公式
Object run = getFormulaRunService(user).run(expressFormula, formulaVars, simpleEmployee);
// if (excelResult.isStatus()) {
diff --git a/src/com/engine/salary/service/impl/SalaryFormulaServiceImpl.java b/src/com/engine/salary/service/impl/SalaryFormulaServiceImpl.java
index 8e7db8de4..22af93677 100644
--- a/src/com/engine/salary/service/impl/SalaryFormulaServiceImpl.java
+++ b/src/com/engine/salary/service/impl/SalaryFormulaServiceImpl.java
@@ -89,10 +89,12 @@ public class SalaryFormulaServiceImpl extends Service implements SalaryFormulaSe
}
@Override
- public void save(SalaryFormulaSaveParam param) {
+ public FormulaPO save(SalaryFormulaSaveParam param) {
FormulaPO formulaPO = new FormulaPO();
+ String formula = param.getFormula();
+
formulaPO.setName(param.getName());
formulaPO.setDescription(param.getDescription());
formulaPO.setModule(param.getModule());
@@ -101,7 +103,7 @@ public class SalaryFormulaServiceImpl extends Service implements SalaryFormulaSe
formulaPO.setReturnType(param.getReturnType());
formulaPO.setValidateType(param.getValidateType());
formulaPO.setExtendParam(param.getExtendParam());
- formulaPO.setFormula(param.getFormula());
+ formulaPO.setFormula(formula);
formulaPO.setDeleteType(NumberUtils.INTEGER_ZERO);
Date now = new Date();
@@ -112,6 +114,10 @@ public class SalaryFormulaServiceImpl extends Service implements SalaryFormulaSe
List parameters = param.getParameters();
parameters.forEach(po -> {
+
+ formula.replace(po.getFieldName(), po.getFieldId());
+
+
po.setFormulaId(formulaPO.getId());
po.setDeleteType(NumberUtils.INTEGER_ZERO);
po.setCreator((long) user.getUID());
@@ -120,11 +126,13 @@ public class SalaryFormulaServiceImpl extends Service implements SalaryFormulaSe
getFormulaVarMapper().insertIgnoreNull(po);
});
+
+ return formulaPO;
}
@Override
- public void update(SalaryFormulaSaveParam param) {
+ public FormulaPO update(SalaryFormulaSaveParam param) {
ValidUtil.doValidator(param, RuntimeTypeEnum.UPDATE);
@@ -159,7 +167,7 @@ public class SalaryFormulaServiceImpl extends Service implements SalaryFormulaSe
po.setUpdateTime(now);
getFormulaVarMapper().insertIgnoreNull(po);
});
-
+ return formulaPO;
}
}
diff --git a/src/com/engine/salary/web/SalaryFormulaController.java b/src/com/engine/salary/web/SalaryFormulaController.java
index 6c87d4765..ee2c02247 100644
--- a/src/com/engine/salary/web/SalaryFormulaController.java
+++ b/src/com/engine/salary/web/SalaryFormulaController.java
@@ -4,6 +4,7 @@ import com.engine.common.util.ServiceUtil;
import com.engine.salary.entity.salaryformula.dto.ExpressFormulaDTO;
import com.engine.salary.entity.salaryformula.param.SalaryFormulaFieldQueryParam;
import com.engine.salary.entity.salaryformula.param.SalaryFormulaSaveParam;
+import com.engine.salary.entity.salaryformula.po.FormulaPO;
import com.engine.salary.entity.salaryformula.po.FormulaVar;
import com.engine.salary.util.ResponseResult;
import com.engine.salary.wrapper.SalaryFormulaWrapper;
@@ -58,7 +59,7 @@ public class SalaryFormulaController {
@Produces(MediaType.APPLICATION_JSON)
public String save(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryFormulaSaveParam param) {
User user = HrmUserVarify.getUser(request, response);
- return new ResponseResult().run(getSalaryFormulaWrapper(user)::save, param);
+ return new ResponseResult().run(getSalaryFormulaWrapper(user)::save, param);
}
diff --git a/src/com/engine/salary/wrapper/SalaryFormulaWrapper.java b/src/com/engine/salary/wrapper/SalaryFormulaWrapper.java
index 49131016d..442233985 100644
--- a/src/com/engine/salary/wrapper/SalaryFormulaWrapper.java
+++ b/src/com/engine/salary/wrapper/SalaryFormulaWrapper.java
@@ -4,6 +4,7 @@ import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.entity.salaryformula.ExpressFormula;
import com.engine.salary.entity.salaryformula.param.SalaryFormulaSaveParam;
+import com.engine.salary.entity.salaryformula.po.FormulaPO;
import com.engine.salary.entity.salaryformula.po.FormulaVar;
import com.engine.salary.entity.salaryformula.bo.SalaryFormulaBO;
import com.engine.salary.entity.salaryformula.dto.ExpressFormulaDTO;
@@ -68,7 +69,7 @@ public class SalaryFormulaWrapper extends Service {
return SalaryFormulaBO.convert2DTO(expressFormulas).get(0);
}
- public void save(SalaryFormulaSaveParam salaryFormulaSaveParam) {
- getSalaryFormulaService(user).save(salaryFormulaSaveParam);
+ public FormulaPO save(SalaryFormulaSaveParam salaryFormulaSaveParam) {
+ return getSalaryFormulaService(user).save(salaryFormulaSaveParam);
}
}