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); } }