From 151fa2b575c36e6e411e2903b3a479b97bd88aa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 26 Apr 2022 16:39:41 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BA=BF=E4=B8=8B=E5=AF=B9=E6=AF=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/entity/salarysql/ExpressSQL.java | 65 ++++++++++++++++++ .../salary/entity/salarysql/po/SQLPO.java | 64 ++++++++++++++++++ .../salary/entity/salarysql/po/SQLVar.java | 67 +++++++++++++++++++ .../salary/enums/SalaryValueTypeEnum.java | 5 +- .../mapper/formula/FormulaVarMapper.xml | 7 +- .../mapper/salaryitem/SalaryItemMapper.xml | 1 + .../salary/service/SalarySQLService.java | 42 ++++++++++++ .../impl/SalaryAcctCalculateServiceImpl.java | 9 ++- .../engine/salary/util/ResponseResult.java | 3 + .../salary/web/SalaryArchiveController.java | 5 +- .../SalaryComparisonResultWrapper.java | 9 ++- 11 files changed, 267 insertions(+), 10 deletions(-) create mode 100644 src/com/engine/salary/entity/salarysql/ExpressSQL.java create mode 100644 src/com/engine/salary/entity/salarysql/po/SQLPO.java create mode 100644 src/com/engine/salary/entity/salarysql/po/SQLVar.java create mode 100644 src/com/engine/salary/service/SalarySQLService.java diff --git a/src/com/engine/salary/entity/salarysql/ExpressSQL.java b/src/com/engine/salary/entity/salarysql/ExpressSQL.java new file mode 100644 index 000000000..8d582fcb6 --- /dev/null +++ b/src/com/engine/salary/entity/salarysql/ExpressSQL.java @@ -0,0 +1,65 @@ +package com.engine.salary.entity.salarysql; + +import com.engine.salary.entity.salarysql.po.SQLVar; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +public class ExpressSQL { + /** + * id + */ + private Long id; + /** + * 名称 + */ + private String name; + /** + * 备注 + */ + private String description; + /** + * 模块 + */ + private String module; + /** + * 用途 + */ + private String useFor; + + /** + * 扩展参数 + */ + private String extendParam; + /** + * sql内容 + */ + private String sql; + + /** + * sql实际运行脚本 + */ + private String sqlRunScript; + + /** + * 创建人 + */ + private Long creator; + /** + * 是否删除0否1是 + */ + private Integer deleteType; + /** + * 创建时间 + */ + private Date createTime; + /** + * 修改时间 + */ + private Date updateTime; + + + private List parameters; +} diff --git a/src/com/engine/salary/entity/salarysql/po/SQLPO.java b/src/com/engine/salary/entity/salarysql/po/SQLPO.java new file mode 100644 index 000000000..0506af86f --- /dev/null +++ b/src/com/engine/salary/entity/salarysql/po/SQLPO.java @@ -0,0 +1,64 @@ +package com.engine.salary.entity.salarysql.po; + +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +public class SQLPO { + /** + * id + */ + private Long id; + /** + * 名称 + */ + private String name; + /** + * 备注 + */ + private String description; + /** + * 模块 + */ + private String module; + /** + * 用途 + */ + private String useFor; + + /** + * 扩展参数 + */ + private String extendParam; + /** + * sql内容 + */ + private String sql; + + /** + * sql实际运行脚本 + */ + private String sqlRunScript; + + /** + * 创建人 + */ + private Long creator; + /** + * 是否删除0否1是 + */ + private Integer deleteType; + /** + * 创建时间 + */ + private Date createTime; + /** + * 修改时间 + */ + private Date updateTime; + + + private List parameters; +} diff --git a/src/com/engine/salary/entity/salarysql/po/SQLVar.java b/src/com/engine/salary/entity/salarysql/po/SQLVar.java new file mode 100644 index 000000000..60ac5262e --- /dev/null +++ b/src/com/engine/salary/entity/salarysql/po/SQLVar.java @@ -0,0 +1,67 @@ +package com.engine.salary.entity.salarysql.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SQLVar { + /** + * id + */ + private Long id; + /** + * 名称 + */ + private String name; + /** + * SQLid + */ + private Long SQLId; + /** + * 字段id + */ + private String fieldId; + /** + * 字段名称 + */ + private String fieldName; + /** + * 字段类型,number,string + */ + private String fieldType; + /** + * 来源 + */ + private String source; + /** + * 排序 + */ + private Integer orderIndex; + /** + * 创建人 + */ + 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/enums/SalaryValueTypeEnum.java b/src/com/engine/salary/enums/SalaryValueTypeEnum.java index 8e2f03b54..e3f44acaa 100644 --- a/src/com/engine/salary/enums/SalaryValueTypeEnum.java +++ b/src/com/engine/salary/enums/SalaryValueTypeEnum.java @@ -15,7 +15,8 @@ import java.util.Objects; public enum SalaryValueTypeEnum implements BaseEnum { INPUT(1, "输入", 84976), - FORMULA(2, "公式", 84977); + FORMULA(2, "公式", 84977), + SQL(3, "SQL", 84977); private int value; @@ -58,7 +59,7 @@ public enum SalaryValueTypeEnum implements BaseEnum { return ""; } SalaryValueTypeEnum[] enumAry = SalaryValueTypeEnum.values(); - for(int i = 0; i < Arrays.asList(enumAry).size(); i++){ + for (int i = 0; i < Arrays.asList(enumAry).size(); i++) { if (Integer.valueOf(enumAry[i].getValue()).equals(value)) { return enumAry[i].getDefaultLabel(); } diff --git a/src/com/engine/salary/mapper/formula/FormulaVarMapper.xml b/src/com/engine/salary/mapper/formula/FormulaVarMapper.xml index faf6d97c0..5b20d39f9 100644 --- a/src/com/engine/salary/mapper/formula/FormulaVarMapper.xml +++ b/src/com/engine/salary/mapper/formula/FormulaVarMapper.xml @@ -100,7 +100,9 @@ > INSERT INTO hrsa_formula_var - + + id, + name, @@ -136,6 +138,9 @@ + + #{id}, + #{name}, diff --git a/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml b/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml index 3a9fa18a3..d5784b334 100644 --- a/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml +++ b/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml @@ -391,6 +391,7 @@ WHERE delete_type = 0 + ORDER BY id DESC diff --git a/src/com/engine/salary/service/SalarySQLService.java b/src/com/engine/salary/service/SalarySQLService.java new file mode 100644 index 000000000..285bf68b6 --- /dev/null +++ b/src/com/engine/salary/service/SalarySQLService.java @@ -0,0 +1,42 @@ +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 com.engine.salary.entity.salarysql.ExpressSQL; + +import java.util.Collection; +import java.util.List; + +/** + * 薪酬管理SQL编辑器 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public interface SalarySQLService { + + /** + * 根据公式id获取公式内容 + * + * @param formulaIds + * @return + */ + List listExpressFormula(Collection formulaIds); + + /** + * 根据公式id获取公式内容 + * + * @param formulaId + * @return + */ + ExpressFormula getExpressFormula(Long formulaId); + + FormulaPO save(SalaryFormulaSaveParam salaryFormulaSaveParam); + + FormulaPO update(SalaryFormulaSaveParam salaryFormulaSaveParam); + + Object run(ExpressSQL expresssql); +} diff --git a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java index d815cdd96..30f56b9a4 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java @@ -21,6 +21,7 @@ import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; import com.engine.salary.entity.salarysob.po.SalarySobItemPO; import com.engine.salary.enums.SalaryFormulaReferenceEnum; +import com.engine.salary.enums.SalaryValueTypeEnum; import com.engine.salary.service.*; import com.engine.salary.util.SalaryEntityUtil; import com.google.common.collect.Lists; @@ -158,6 +159,10 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc for (Long salaryItemId : salaryItemIds) { String resultValue; SalaryItemPO salaryItemPO = salaryItemMap.get(salaryItemId); + + SalaryValueTypeEnum salaryValueTypeEnum = SalaryValueTypeEnum.parseByValue(salaryItemPO.getValueType()); + + ExpressFormula expressFormula; // 如果薪资账套下重新定义了薪资项目的公式,则使用薪资账套下的公式,否则使用薪资项目本身的公式 if (salaryItemIdKeySalarySobItemPOMap.containsKey(salaryItemId)) { @@ -166,7 +171,7 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc } else { expressFormula = expressFormulaMap.get(salaryItemPO.getFormulaId()); } - if (Objects.nonNull(expressFormula)) { + if (salaryValueTypeEnum == SalaryValueTypeEnum.FORMULA && Objects.nonNull(expressFormula)) { // 运行公式 resultValue = runExpressFormula(expressFormula, formulaVarValueMap, simpleEmployee); } else { @@ -208,7 +213,7 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc .setSalaryItemId(salaryItemPO.getId()) .setResultValue(resultValue) .setCalculateKey(salaryAcctCalculateBO.getCalculateKey()) - .setCreator(simpleEmployee.getEmployeeId()) + .setCreator((long) user.getUID()) .setCreateTime(now) .setUpdateTime(now) .setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) diff --git a/src/com/engine/salary/util/ResponseResult.java b/src/com/engine/salary/util/ResponseResult.java index b3c2e7d10..08a2ad532 100644 --- a/src/com/engine/salary/util/ResponseResult.java +++ b/src/com/engine/salary/util/ResponseResult.java @@ -46,6 +46,9 @@ public class ResponseResult { private void permission() { if (isPermission && permission) { + if (user == null) { + throw new SalaryRunTimeException("获取登录人员信息失败"); + } List roleInfo = hrmCommonService.getRoleInfo(user.getUID()); roleInfo.stream().map(m -> (Map) m).filter(m -> m.get("roleid") != null && m.get("roleid").toString().equals(salaryAdminRoleId)).findFirst().orElseThrow(() -> new SalaryRunTimeException("无权限")); } diff --git a/src/com/engine/salary/web/SalaryArchiveController.java b/src/com/engine/salary/web/SalaryArchiveController.java index 2c91d428b..612bbc7dd 100644 --- a/src/com/engine/salary/web/SalaryArchiveController.java +++ b/src/com/engine/salary/web/SalaryArchiveController.java @@ -86,7 +86,7 @@ public class SalaryArchiveController { XSSFWorkbook workbook = getSalaryArchiveWrapper(user).exportList(queryParam); - String fileName = "薪资档案"; + String fileName = "薪资档案" + LocalDate.now(); try { fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); } catch (UnsupportedEncodingException e) { @@ -445,8 +445,7 @@ public class SalaryArchiveController { XSSFWorkbook workbook = getSalaryArchiveItemWrapper(user).exportAdjustRecordList(param); - String time = LocalDate.now().toString(); - String fileName = "薪资项目调整记录" + time; + String fileName = "薪资项目调整记录" + LocalDate.now(); try { fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); diff --git a/src/com/engine/salary/wrapper/SalaryComparisonResultWrapper.java b/src/com/engine/salary/wrapper/SalaryComparisonResultWrapper.java index 86af72c62..459d18c0c 100644 --- a/src/com/engine/salary/wrapper/SalaryComparisonResultWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryComparisonResultWrapper.java @@ -2,6 +2,7 @@ package com.engine.salary.wrapper; import com.cloudstore.eccom.pc.table.WeaTable; import com.cloudstore.eccom.result.WeaResultMsg; +import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.salaryacct.dto.SalaryComparisonResultListDTO; import com.engine.salary.entity.salaryacct.param.SalaryComparisonResultQueryParam; @@ -9,6 +10,8 @@ import com.engine.salary.service.SalaryAcctRecordService; import com.engine.salary.service.SalaryComparisonResultService; import com.engine.salary.service.SalarySobEmpFieldService; import com.engine.salary.service.SalarySobItemService; +import com.engine.salary.service.impl.SalaryComparisonResultServiceImpl; +import weaver.hrm.User; import java.util.HashMap; import java.util.Map; @@ -24,7 +27,9 @@ import java.util.Map; public class SalaryComparisonResultWrapper extends Service { - private SalaryComparisonResultService salaryComparisonResultService; + private SalaryComparisonResultService getSalaryComparisonResultService(User user) { + return (SalaryComparisonResultService) ServiceUtil.getService(SalaryComparisonResultServiceImpl.class, user); + } private SalaryAcctRecordService salaryAcctRecordService; @@ -40,7 +45,7 @@ public class SalaryComparisonResultWrapper extends Service { */ public Map listPage(SalaryComparisonResultQueryParam queryParam) { // 查询薪资核算线下对比列表 - SalaryComparisonResultListDTO salaryComparisonResultListDTO = salaryComparisonResultService.listPageByParam(queryParam); + SalaryComparisonResultListDTO salaryComparisonResultListDTO = getSalaryComparisonResultService(user).listPageByParam(queryParam); WeaTable table = new WeaTable(); table.setColumns(salaryComparisonResultListDTO.getWeaTableColumns());