From a4547db7ffaa03cd8880f705c08473ccb68002c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 14 Apr 2022 10:03:49 +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 --- .../salary/entity/formula/ExpressFormula.java | 82 +++-- .../salary/entity/formula/po/FormulaPO.java | 75 +++++ .../salary/entity/formula/po/FormulaVar.java | 67 +++++ .../salaryacct/bo/ExpressFormulaBO.java | 59 ++-- .../salaryacct/bo/SalaryAcctCalculateBO.java | 2 +- .../bo/SalaryAcctCalculatePriorityBO.java | 4 +- .../salarysob/bo/SalarySobCheckRuleBO.java | 2 +- .../salary/mapper/formula/FormulaMapper.java | 59 ++++ .../salary/mapper/formula/FormulaMapper.xml | 281 ++++++++++++++++++ .../mapper/formula/FormulaVarMapper.java | 56 ++++ .../mapper/formula/FormulaVarMapper.xml | 241 +++++++++++++++ .../salary/service/SalaryFormulaService.java | 16 +- .../impl/SalaryAcctCalculateServiceImpl.java | 4 +- .../impl/SalaryAcctResultServiceImpl.java | 7 +- .../impl/SalaryFormulaServiceImpl.java | 89 ++++++ .../wrapper/SalarySobCheckRuleWrapper.java | 2 +- 16 files changed, 957 insertions(+), 89 deletions(-) create mode 100644 src/com/engine/salary/entity/formula/po/FormulaPO.java create mode 100644 src/com/engine/salary/entity/formula/po/FormulaVar.java create mode 100644 src/com/engine/salary/mapper/formula/FormulaMapper.java create mode 100644 src/com/engine/salary/mapper/formula/FormulaMapper.xml create mode 100644 src/com/engine/salary/mapper/formula/FormulaVarMapper.java create mode 100644 src/com/engine/salary/mapper/formula/FormulaVarMapper.xml create mode 100644 src/com/engine/salary/service/impl/SalaryFormulaServiceImpl.java diff --git a/src/com/engine/salary/entity/formula/ExpressFormula.java b/src/com/engine/salary/entity/formula/ExpressFormula.java index 3619ac54d..1ead5d76c 100644 --- a/src/com/engine/salary/entity/formula/ExpressFormula.java +++ b/src/com/engine/salary/entity/formula/ExpressFormula.java @@ -1,10 +1,6 @@ package com.engine.salary.entity.formula; -import com.engine.salary.entity.datacollection.DataCollectionEmployee; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.weaver.excel.formula.api.entity.ExpressFormulaSourceLink; -import com.weaver.excel.formula.api.entity.FormulaVar; +import com.engine.salary.entity.formula.po.FormulaVar; import lombok.Data; import java.util.Date; @@ -12,35 +8,63 @@ import java.util.List; @Data public class ExpressFormula { - @JsonSerialize( - using = ToStringSerializer.class - ) + /** + * id + */ private Long id; - //名称 + /** + * 名称 + */ private String name; + /** + * 备注 + */ + private String description; + /** + * 模块 + */ private String module; - private String parameter; - private Long userId; - private Integer status; - private String msgFormula; - private String msgParameter; - private Date addTime; - private Date lastUpdate; - private Integer isDelete; - private Long formId; - private int type; - private String tenantKey; - private DataCollectionEmployee creator; - private List sourceLinks; - //引用类型 + /** + * 用途 + */ + private String use; + /** + * 引用类型 + */ private String referenceType; - //返回类型 + /** + * 返回类型 + */ private String returnType; - //公式内容 + /** + * 校验类型 + */ + private String validateType; + /** + * 扩展参数 + */ + private String extendParam; + /** + * 公式内容 + */ private String formula; - private boolean showInLibrary; - private String codeFormula; - private String msgCodeFormula; + /** + * 创建人 + */ + private Long creator; + /** + * 是否删除0否1是 + */ + private Integer deleteType; + /** + * 创建时间 + */ + private Date createTime; + /** + * 修改时间 + */ + private Date updateTime; + + private List parameters; - private List msgParameters; } diff --git a/src/com/engine/salary/entity/formula/po/FormulaPO.java b/src/com/engine/salary/entity/formula/po/FormulaPO.java new file mode 100644 index 000000000..907c096c0 --- /dev/null +++ b/src/com/engine/salary/entity/formula/po/FormulaPO.java @@ -0,0 +1,75 @@ +package com.engine.salary.entity.formula.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class FormulaPO { + /** + * id + */ + private Long id; + /** + * 名称 + */ + private String name; + /** + * 备注 + */ + private String description; + /** + * 模块 + */ + private String module; + /** + * 用途 + */ + private String use; + /** + * 引用类型 + */ + private String referenceType; + /** + * 返回类型 + */ + private String returnType; + /** + * 校验类型 + */ + private String validateType; + /** + * 扩展参数 + */ + private String extendParam; + /** + * 公式内容 + */ + private String formula; + /** + * 创建人 + */ + private Long creator; + /** + * 是否删除0否1是 + */ + private Integer deleteType; + /** + * 创建时间 + */ + private Date createTime; + /** + * 修改时间 + */ + private Date updateTime; + + //主键id集合 + private Collection ids; +} \ No newline at end of file diff --git a/src/com/engine/salary/entity/formula/po/FormulaVar.java b/src/com/engine/salary/entity/formula/po/FormulaVar.java new file mode 100644 index 000000000..a11a3471d --- /dev/null +++ b/src/com/engine/salary/entity/formula/po/FormulaVar.java @@ -0,0 +1,67 @@ +package com.engine.salary.entity.formula.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class FormulaVar { + /** + * id + */ + private Long id; + /** + * 名称 + */ + private String name; + /** + * 公式id + */ + private Long formulaId; + /** + * 字段id + */ + private String fieldId; + /** + * 字段名称 + */ + private String fieldName; + /** + * 字段类型,number,string + */ + private String fieldType; + /** + * 来源 + */ + private String source; + /** + * 排序 + */ + private Integer order; + /** + * 创建人 + */ + private Long creator; + /** + * 是否删除,0否1是 + */ + private Integer deleteType; + /** + * 创建时间 + */ + private Date createTime; + /** + * 修改时间 + */ + private Date updateTime; + + + //值 + private String content; +} \ No newline at end of file diff --git a/src/com/engine/salary/entity/salaryacct/bo/ExpressFormulaBO.java b/src/com/engine/salary/entity/salaryacct/bo/ExpressFormulaBO.java index 279edfcdc..2e5430416 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/ExpressFormulaBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/ExpressFormulaBO.java @@ -1,16 +1,13 @@ package com.engine.salary.entity.salaryacct.bo; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; import com.engine.salary.constant.SalaryFormulaFieldConstant; +import com.engine.salary.entity.formula.ExpressFormula; +import com.engine.salary.entity.formula.po.FormulaVar; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.enums.SalaryFormulaReferenceEnum; import com.engine.salary.util.SalaryEntityUtil; import com.google.common.collect.Maps; -import com.weaver.excel.formula.api.entity.ExpressFormula; -import com.weaver.excel.formula.api.entity.FormulaVar; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -18,17 +15,17 @@ import java.math.BigDecimal; import java.util.Collections; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.regex.Matcher; import java.util.regex.Pattern; /** - * @description: 薪资核算公式 - * @author: xiajun - * @modified By: xiajun - * @date: Created in 6/2/22 10:33 PM - * @version:v1.0 - */ + * 薪资核算公式 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ public class ExpressFormulaBO { /** @@ -53,17 +50,7 @@ public class ExpressFormulaBO { } Map> resultMap = Maps.newHashMapWithExpectedSize(expressFormulas.size()); for (ExpressFormula expressFormula : expressFormulas) { - if (StringUtils.isEmpty(expressFormula.getParameter())) { - continue; - } - JSONObject paramJson = JSON.parseObject(expressFormula.getParameter()); - if (paramJson != null) { - JSONArray paramArray = paramJson.getJSONArray("formulavars"); - if (paramArray != null) { - List formulaVars = paramArray.toJavaList(FormulaVar.class); - resultMap.put(expressFormula.getId(), formulaVars); - } - } + resultMap.put(expressFormula.getId(), expressFormula.getParameters()); } return resultMap; } @@ -106,25 +93,15 @@ public class ExpressFormulaBO { */ public static List buildFormulaVar4Accounting(ExpressFormula expressFormula, Map formulaVarValueMap) { List formulaVars = Collections.emptyList(); - // 公式异常 - if (Objects.isNull(expressFormula) || StringUtils.isEmpty(expressFormula.getParameter())) { - return Collections.emptyList(); - } - JSONObject paramJson = JSON.parseObject(expressFormula.getParameter()); - if (paramJson != null) { - JSONArray paramArray = paramJson.getJSONArray("formulavars"); - if (paramArray != null) { - formulaVars = paramArray.toJavaList(FormulaVar.class); - for (FormulaVar formulaVar : formulaVars) { - // 公式变量的值 - String formulaVarValue = formulaVarValueMap.getOrDefault(formulaVar.getFieldId(), StringUtils.EMPTY); - // 如果公式的返回值类型为number,公式中的变量的值如果为空,公式运行的时候会报错,所以需要替换成0 - if (StringUtils.isEmpty(formulaVarValue) && "number".equals(expressFormula.getReturnType())) { - formulaVarValue = BigDecimal.ZERO.toPlainString(); - } - formulaVar.setContent(formulaVarValue); - } + formulaVars = expressFormula.getParameters(); + for (FormulaVar formulaVar : formulaVars) { + // 公式变量的值 + String formulaVarValue = formulaVarValueMap.getOrDefault(formulaVar.getFieldId(), StringUtils.EMPTY); + // 如果公式的返回值类型为number,公式中的变量的值如果为空,公式运行的时候会报错,所以需要替换成0 + if (StringUtils.isEmpty(formulaVarValue) && "number".equals(expressFormula.getReturnType())) { + formulaVarValue = BigDecimal.ZERO.toPlainString(); } + formulaVar.setContent(formulaVarValue); } return formulaVars; } diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java index 5e9d0c14d..3320f2f73 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java @@ -1,13 +1,13 @@ package com.engine.salary.entity.salaryacct.bo; import com.engine.salary.entity.datacollection.dto.AttendQuoteFieldListDTO; +import com.engine.salary.entity.formula.ExpressFormula; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; import com.engine.salary.entity.salarysob.po.SalarySobAdjustRulePO; import com.engine.salary.entity.salarysob.po.SalarySobItemPO; -import com.weaver.excel.formula.api.entity.ExpressFormula; import lombok.AllArgsConstructor; import lombok.Data; import lombok.experimental.Accessors; diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculatePriorityBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculatePriorityBO.java index bd800a521..4cbb26192 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculatePriorityBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculatePriorityBO.java @@ -1,6 +1,8 @@ package com.engine.salary.entity.salaryacct.bo; import com.engine.salary.constant.SalaryFormulaFieldConstant; +import com.engine.salary.entity.formula.ExpressFormula; +import com.engine.salary.entity.formula.po.FormulaVar; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.po.SalarySobItemPO; import com.engine.salary.enums.SalaryFormulaReferenceEnum; @@ -9,8 +11,6 @@ import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import com.weaver.excel.formula.api.entity.ExpressFormula; -import com.weaver.excel.formula.api.entity.FormulaVar; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/src/com/engine/salary/entity/salarysob/bo/SalarySobCheckRuleBO.java b/src/com/engine/salary/entity/salarysob/bo/SalarySobCheckRuleBO.java index b1e52960f..472e67942 100644 --- a/src/com/engine/salary/entity/salarysob/bo/SalarySobCheckRuleBO.java +++ b/src/com/engine/salary/entity/salarysob/bo/SalarySobCheckRuleBO.java @@ -1,6 +1,7 @@ package com.engine.salary.entity.salarysob.bo; import com.engine.salary.constant.SalaryDefaultTenantConstant; +import com.engine.salary.entity.formula.ExpressFormula; import com.engine.salary.entity.salarysob.dto.SalarySobCheckRuleFormDTO; import com.engine.salary.entity.salarysob.dto.SalarySobCheckRuleListDTO; import com.engine.salary.entity.salarysob.param.SalarySobCheckRuleSaveParam; @@ -8,7 +9,6 @@ import com.engine.salary.entity.salarysob.po.SalarySobCheckRulePO; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; -import com.weaver.excel.formula.api.entity.ExpressFormula; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; diff --git a/src/com/engine/salary/mapper/formula/FormulaMapper.java b/src/com/engine/salary/mapper/formula/FormulaMapper.java new file mode 100644 index 000000000..bde94aff7 --- /dev/null +++ b/src/com/engine/salary/mapper/formula/FormulaMapper.java @@ -0,0 +1,59 @@ +package com.engine.salary.mapper.formula; + +import com.engine.salary.entity.formula.po.FormulaPO; + +import java.util.Collection; +import java.util.List; + +public interface FormulaMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(FormulaPO formula); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + FormulaPO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param formula 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(FormulaPO formula); + + + /** + * 修改,忽略null字段 + * + * @param formula 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(FormulaPO formula); + + /** + * 删除记录 + * + * @param formula 待删除的记录 + * @return 返回影响行数 + */ + int delete(FormulaPO formula); + + List listByIds(Collection ids); +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/formula/FormulaMapper.xml b/src/com/engine/salary/mapper/formula/FormulaMapper.xml new file mode 100644 index 000000000..20962688a --- /dev/null +++ b/src/com/engine/salary/mapper/formula/FormulaMapper.xml @@ -0,0 +1,281 @@ + + + + + + + + + + + + + + + + + + + + + + + t + . + id + , t.name + , t.description + , t.module + , t.use + , t.reference_type + , t.return_type + , t.validate_type + , t.extend_param + , t.formula + , t.creator + , t.delete_type + , t.create_time + , t.update_time + + + + + + + + + + + + + + + INSERT INTO hrsa_formula + + + + id, + + + name, + + + description, + + + module, + + + use, + + + reference_type, + + + return_type, + + + validate_type, + + + extend_param, + + + formula, + + + creator, + + + delete_type, + + + create_time, + + + update_time, + + + + + #{id}, + + + #{name}, + + + #{description}, + + + #{module}, + + + #{use}, + + + #{referenceType}, + + + #{returnType}, + + + #{validateType}, + + + #{extendParam}, + + + #{formula}, + + + #{creator}, + + + #{deleteType}, + + + #{createTime}, + + + #{updateTime}, + + + + + + + + UPDATE hrsa_formula + + + name=#{name}, + + + description=#{description}, + + + module=#{module}, + + + use=#{use}, + + + reference_type=#{referenceType}, + + + return_type=#{returnType}, + + + validate_type=#{validateType}, + + + extend_param=#{extendParam}, + + + formula=#{formula}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + create_time=#{createTime}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_formula + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/formula/FormulaVarMapper.java b/src/com/engine/salary/mapper/formula/FormulaVarMapper.java new file mode 100644 index 000000000..002f490a5 --- /dev/null +++ b/src/com/engine/salary/mapper/formula/FormulaVarMapper.java @@ -0,0 +1,56 @@ +package com.engine.salary.mapper.formula; + +import com.engine.salary.entity.formula.po.FormulaVar; + +import java.util.List; + +public interface FormulaVarMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(FormulaVar formulaVar); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + FormulaVar getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param formulaVar 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(FormulaVar formulaVar); + + /** + * 修改,忽略null字段 + * + * @param formulaVar 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(FormulaVar formulaVar); + + /** + * 删除记录 + * + * @param formulaVar 待删除的记录 + * @return 返回影响行数 + */ + int delete(FormulaVar formulaVar); + +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/formula/FormulaVarMapper.xml b/src/com/engine/salary/mapper/formula/FormulaVarMapper.xml new file mode 100644 index 000000000..240b5e32c --- /dev/null +++ b/src/com/engine/salary/mapper/formula/FormulaVarMapper.xml @@ -0,0 +1,241 @@ + + + + + + + + + + + + + + + + + + + + + t + . + id + , t.name + , t.formula_id + , t.field_id + , t.field_name + , t.field_type + , t.source + , t.order + , t.creator + , t.delete_type + , t.create_time + , t.update_time + + + + + + + + + + + + + + + INSERT INTO hrsa_formula_var + + + + id, + + + name, + + + formula_id, + + + field_id, + + + field_name, + + + field_type, + + + source, + + + order, + + + creator, + + + delete_type, + + + create_time, + + + update_time, + + + + + #{id}, + + + #{name}, + + + #{formulaId}, + + + #{fieldId}, + + + #{fieldName}, + + + #{fieldType}, + + + #{source}, + + + #{order}, + + + #{creator}, + + + #{deleteType}, + + + #{createTime}, + + + #{updateTime}, + + + + + + + + UPDATE hrsa_formula_var + + + name=#{name}, + + + formula_id=#{formulaId}, + + + field_id=#{fieldId}, + + + field_name=#{fieldName}, + + + field_type=#{fieldType}, + + + source=#{source}, + + + order=#{order}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + create_time=#{createTime}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_formula_var + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + \ No newline at end of file diff --git a/src/com/engine/salary/service/SalaryFormulaService.java b/src/com/engine/salary/service/SalaryFormulaService.java index eed762123..b58c2ed59 100644 --- a/src/com/engine/salary/service/SalaryFormulaService.java +++ b/src/com/engine/salary/service/SalaryFormulaService.java @@ -1,17 +1,18 @@ package com.engine.salary.service; -import com.weaver.excel.formula.api.entity.ExpressFormula; +import com.engine.salary.entity.formula.ExpressFormula; import java.util.Collection; import java.util.List; /** - * @description: 薪酬管理公式编辑器 - * @author: xiajun - * @modified By: xiajun - * @date: Created in 12/7/21 5:38 PM - * @version:v1.0 - */ + * 薪酬管理公式编辑器 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ public interface SalaryFormulaService { /** @@ -26,7 +27,6 @@ public interface SalaryFormulaService { * 根据公式id获取公式内容 * * @param formulaId - * @param tenantKey * @return */ ExpressFormula getExpressFormula(Long formulaId); diff --git a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java index 3adf0128e..86986b3e6 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java @@ -9,6 +9,8 @@ import com.engine.salary.entity.datacollection.AddUpSituation; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.datacollection.dto.AttendQuoteDataDTO; import com.engine.salary.entity.datacollection.po.OtherDeductionPO; +import com.engine.salary.entity.formula.ExpressFormula; +import com.engine.salary.entity.formula.po.FormulaVar; import com.engine.salary.entity.salaryacct.bo.*; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; @@ -22,8 +24,6 @@ import com.engine.salary.enums.SalaryFormulaReferenceEnum; import com.engine.salary.service.*; import com.engine.salary.util.SalaryEntityUtil; import com.google.common.collect.Lists; -import com.weaver.excel.formula.api.entity.ExpressFormula; -import com.weaver.excel.formula.api.entity.FormulaVar; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index 04bc1c018..edb5fc037 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -6,6 +6,7 @@ import com.engine.salary.biz.TaxAgentBiz; import com.engine.salary.common.LocalDateRange; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.datacollection.dto.AttendQuoteFieldListDTO; +import com.engine.salary.entity.formula.ExpressFormula; import com.engine.salary.entity.salaryacct.bo.SalaryAcctCalculateBO; import com.engine.salary.entity.salaryacct.bo.SalaryAcctCalculatePriorityBO; import com.engine.salary.entity.salaryacct.bo.SalaryAcctResultBO; @@ -39,7 +40,6 @@ import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.page.PageInfo; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import com.weaver.excel.formula.api.entity.ExpressFormula; import com.weaver.util.threadPool.ThreadPoolUtil; import com.weaver.util.threadPool.constant.ModulePoolEnum; import com.weaver.util.threadPool.entity.LocalRunnable; @@ -95,8 +95,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe return (SalaryEmployeeService) ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); } private SalaryFormulaService getSalaryFormulaService(User user) { -// return (SalaryFormulaService) ServiceUtil.getService(SalaryFormulaServiceImpl.class, user); - return null; + return (SalaryFormulaService) ServiceUtil.getService(SalaryFormulaServiceImpl.class, user); } private SalarySobAdjustRuleService getSalarySobAdjustRuleService(User user) { return (SalarySobAdjustRuleService) ServiceUtil.getService(SalarySobAdjustRuleServiceImpl.class, user); @@ -390,7 +389,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe // 8、查询公式详情 Set formulaIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getFormulaId); formulaIds.addAll(SalaryEntityUtil.properties(salaryItemPOS, SalaryItemPO::getFormulaId)); - List expressFormulas = Lists.newArrayList();//getSalaryFormulaService(user).listExpressFormula(formulaIds); + List expressFormulas = getSalaryFormulaService(user).listExpressFormula(formulaIds); // 9、计算薪资项目的运算优先级 List> salarySobItemsWithPriority = SalaryAcctCalculatePriorityBO.calculatePriority(salarySobItemPOS, salaryItemPOS, expressFormulas); // 10、根据id查询其他合并计税的薪资核算记录 diff --git a/src/com/engine/salary/service/impl/SalaryFormulaServiceImpl.java b/src/com/engine/salary/service/impl/SalaryFormulaServiceImpl.java new file mode 100644 index 000000000..2418b3237 --- /dev/null +++ b/src/com/engine/salary/service/impl/SalaryFormulaServiceImpl.java @@ -0,0 +1,89 @@ +package com.engine.salary.service.impl; + +import com.engine.core.impl.Service; +import com.engine.salary.entity.formula.ExpressFormula; +import com.engine.salary.entity.formula.po.FormulaPO; +import com.engine.salary.entity.formula.po.FormulaVar; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.mapper.formula.FormulaMapper; +import com.engine.salary.mapper.formula.FormulaVarMapper; +import com.engine.salary.service.SalaryFormulaService; +import com.engine.salary.util.db.MapperProxyFactory; +import com.google.common.collect.Lists; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.BeanUtils; + +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * 薪酬管理公式编辑器 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Slf4j +public class SalaryFormulaServiceImpl extends Service implements SalaryFormulaService { + + + private FormulaMapper getFormulaMapper() { + return MapperProxyFactory.getProxy(FormulaMapper.class); + } + + private FormulaVarMapper getFormulaVarMapper() { + return MapperProxyFactory.getProxy(FormulaVarMapper.class); + } + + + @Override + public List listExpressFormula(Collection formulaIds) { + formulaIds = formulaIds.stream().filter(id -> id != null && id > 0).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(formulaIds)) { + return Collections.emptyList(); + } + try { + // 当前租户自己新建的公式 + List expressFormulas = getFormulaMapper().listByIds(Lists.newArrayList(formulaIds)); + + return expressFormulas.stream() + .filter(Objects::nonNull) + .map(m -> { + ExpressFormula expressFormula = new ExpressFormula(); + BeanUtils.copyProperties(m, expressFormula); + List formulaVarPOS = getFormulaVarMapper().listSome(FormulaVar.builder().formulaId(m.getId()).build()); + expressFormula.setParameters(formulaVarPOS); + return expressFormula; + }) + .collect(Collectors.toList()); + } catch (Exception e) { + log.info("获取公示详情失败", e); + throw new SalaryRunTimeException("获取公示详情失败"); + } + } + + @Override + public ExpressFormula getExpressFormula(Long formulaId) { + if (formulaId == null || formulaId <= 0) { + return null; + } + try { + // 当前租户自己新建的公式 + FormulaPO formulaPO = getFormulaMapper().getById(formulaId); + ExpressFormula expressFormula = new ExpressFormula(); + BeanUtils.copyProperties(formulaPO, expressFormula); + List formulaVarPOS = getFormulaVarMapper().listSome(FormulaVar.builder().formulaId(formulaId).build()); + expressFormula.setParameters(formulaVarPOS); + + return expressFormula; + } catch (Exception e) { + log.info("获取公示详情失败", e); + throw new SalaryRunTimeException("获取公示详情失败"); + } + } +} diff --git a/src/com/engine/salary/wrapper/SalarySobCheckRuleWrapper.java b/src/com/engine/salary/wrapper/SalarySobCheckRuleWrapper.java index c14c8e758..8a35e24b5 100644 --- a/src/com/engine/salary/wrapper/SalarySobCheckRuleWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySobCheckRuleWrapper.java @@ -2,6 +2,7 @@ package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.salary.entity.formula.ExpressFormula; import com.engine.salary.entity.salarysob.bo.SalarySobCheckRuleBO; import com.engine.salary.entity.salarysob.dto.SalarySobCheckRuleFormDTO; import com.engine.salary.entity.salarysob.dto.SalarySobCheckRuleListDTO; @@ -15,7 +16,6 @@ import com.engine.salary.service.SalarySobCheckRuleService; import com.engine.salary.service.impl.SalarySobCheckRuleServiceImpl; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.PageInfo; -import com.weaver.excel.formula.api.entity.ExpressFormula; import weaver.hrm.User; import java.util.ArrayList;