diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index db8e76b19..56d251310 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -36,7 +36,6 @@ import com.engine.salary.mapper.sicategory.ICategoryMapper; import com.engine.salary.mapper.sischeme.InsuranceSchemeDetailMapper; import com.engine.salary.mapper.sischeme.InsuranceSchemeMapper; import com.engine.salary.util.SalaryAssert; -import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryFormItemUtil; import com.engine.salary.util.db.MapperProxyFactory; @@ -85,7 +84,7 @@ public class SIArchivesBiz { .position(item.getJobtitleName()) .username(item.getUsername()) .telephone(item.getMobile()) - .dimissionDate(SalaryDateUtil.getFormatLocalDate(item.getDissmissdate())) + .dimissionDate(item.getDissmissdate()) .build(); // if (item.getStatus() == UserStatusEnum.unavailable) { diff --git a/src/com/engine/salary/entity/datacollection/DataCollectionEmployee.java b/src/com/engine/salary/entity/datacollection/DataCollectionEmployee.java index ef5464385..f7d0a77e5 100644 --- a/src/com/engine/salary/entity/datacollection/DataCollectionEmployee.java +++ b/src/com/engine/salary/entity/datacollection/DataCollectionEmployee.java @@ -6,8 +6,6 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import java.util.Date; - /** * 员工基本信息 *

Copyright: Copyright (c) 2022

@@ -52,7 +50,7 @@ public class DataCollectionEmployee { private String mobile; //离职日期 - private Date dissmissdate; + private String dissmissdate; //状态 private String status; diff --git a/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java b/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java index 28bb2a95f..e89d506c9 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java @@ -17,7 +17,7 @@ import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveItemDataDTO; import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveTaxAgentDataDTO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.po.SalarySobAdjustRulePO; -import com.engine.salary.enums.SalaryFormulaReferenceEnum; +import com.engine.salary.enums.salaryformula.SalaryFormulaReferenceEnum; import com.engine.salary.enums.salarysob.SalarySobAdjustRuleTypeEnum; import com.engine.salary.util.JsonUtil; import com.engine.salary.util.SalaryDateUtil; diff --git a/src/com/engine/salary/entity/salaryacct/bo/ExpressFormulaBO.java b/src/com/engine/salary/entity/salaryacct/bo/ExpressFormulaBO.java index 9f74b1b12..a0767e492 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/ExpressFormulaBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/ExpressFormulaBO.java @@ -5,7 +5,7 @@ import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; import com.engine.salary.entity.salaryformula.ExpressFormula; import com.engine.salary.entity.salaryformula.po.FormulaVar; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; -import com.engine.salary.enums.SalaryFormulaReferenceEnum; +import com.engine.salary.enums.salaryformula.SalaryFormulaReferenceEnum; import com.engine.salary.util.SalaryEntityUtil; import com.google.common.collect.Maps; import org.apache.commons.collections4.CollectionUtils; diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculatePriorityBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculatePriorityBO.java index e1440ebc4..9aa4aa44b 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculatePriorityBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculatePriorityBO.java @@ -5,7 +5,7 @@ import com.engine.salary.entity.salaryformula.ExpressFormula; import com.engine.salary.entity.salaryformula.po.FormulaVar; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.po.SalarySobItemPO; -import com.engine.salary.enums.SalaryFormulaReferenceEnum; +import com.engine.salary.enums.salaryformula.SalaryFormulaReferenceEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; diff --git a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java index 85647ff0b..36b8800bd 100644 --- a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java +++ b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java @@ -1,5 +1,6 @@ package com.engine.salary.entity.salaryacct.po; +import com.engine.salary.annotation.SalaryFormulaVar; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -38,21 +39,25 @@ public class SalaryAcctEmployeePO { /** * 薪资账套id */ + @SalaryFormulaVar(defaultLabel = "薪资账套id", labelId = 86321, dataType = "number") private Long salarySobId; /** * 人员id */ + @SalaryFormulaVar(defaultLabel = "人员id", labelId = 86321, dataType = "number") private Long employeeId; /** * 个税扣缴义务人id */ + @SalaryFormulaVar(defaultLabel = "个税扣缴义务人id", labelId = 86321, dataType = "number") private Long taxAgentId; /** * 薪资所属月 */ + @SalaryFormulaVar(defaultLabel = "薪资所属月", labelId = 86321, dataType = "string") private Date salaryMonth; /** diff --git a/src/com/engine/salary/entity/salaryitem/param/SalaryItemSaveParam.java b/src/com/engine/salary/entity/salaryitem/param/SalaryItemSaveParam.java index 51a3a95fb..4bd71d8f6 100644 --- a/src/com/engine/salary/entity/salaryitem/param/SalaryItemSaveParam.java +++ b/src/com/engine/salary/entity/salaryitem/param/SalaryItemSaveParam.java @@ -55,6 +55,7 @@ public class SalaryItemSaveParam { * * @see SalaryRoundingModeEnum */ + @DataCheck(require = true, message = "舍入规则不允许为空") private Integer roundingMode; //保留小数位 diff --git a/src/com/engine/salary/enums/SalaryFormulaReferenceEnum.java b/src/com/engine/salary/enums/salaryformula/SalaryFormulaReferenceEnum.java similarity index 94% rename from src/com/engine/salary/enums/SalaryFormulaReferenceEnum.java rename to src/com/engine/salary/enums/salaryformula/SalaryFormulaReferenceEnum.java index e7ed5a300..bb25103d9 100644 --- a/src/com/engine/salary/enums/SalaryFormulaReferenceEnum.java +++ b/src/com/engine/salary/enums/salaryformula/SalaryFormulaReferenceEnum.java @@ -1,6 +1,8 @@ -package com.engine.salary.enums; +package com.engine.salary.enums.salaryformula; +import com.engine.salary.enums.BaseEnum; + import java.util.Objects; /** diff --git a/src/com/engine/salary/enums/salaryformula/SalarySQLReferenceEnum.java b/src/com/engine/salary/enums/salaryformula/SalarySQLReferenceEnum.java new file mode 100644 index 000000000..2a1f6ea77 --- /dev/null +++ b/src/com/engine/salary/enums/salaryformula/SalarySQLReferenceEnum.java @@ -0,0 +1,55 @@ +package com.engine.salary.enums.salaryformula; + + +import com.engine.salary.enums.BaseEnum; + +import java.util.Objects; + +/** + * 薪资项目SQL公式引用分类 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public enum SalarySQLReferenceEnum implements BaseEnum { + + EMPLOYEE_INFO("employeeInfo", "员工基本信息", 85366), + SALARY_ACCT_EMPLOYEE("salaryAcctEmployee", "核算人员信息", 85368); + private String value; + + private String defaultLabel; + + private int labelId; + + SalarySQLReferenceEnum(String value, String defaultLabel, int labelId) { + this.value = value; + this.defaultLabel = defaultLabel; + this.labelId = labelId; + } + + @Override + public String getValue() { + return value; + } + + @Override + public String getDefaultLabel() { + return defaultLabel; + } + + @Override + public Integer getLabelId() { + return labelId; + } + + public static SalarySQLReferenceEnum parseByValue(String value) { + for (SalarySQLReferenceEnum referenceEnum : SalarySQLReferenceEnum.values()) { + if (Objects.equals(referenceEnum.getValue(), value)) { + return referenceEnum; + } + } + return null; + } +} diff --git a/src/com/engine/salary/service/impl/RemoteExcelServiceImpl.java b/src/com/engine/salary/service/impl/RemoteExcelServiceImpl.java index feb85ce22..1b96cac7e 100644 --- a/src/com/engine/salary/service/impl/RemoteExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/RemoteExcelServiceImpl.java @@ -9,13 +9,16 @@ import com.engine.salary.entity.datacollection.AddUpSituation; import com.engine.salary.entity.datacollection.dto.AttendQuoteFieldListDTO; import com.engine.salary.entity.datacollection.param.AttendQuoteFieldQueryParam; import com.engine.salary.entity.datacollection.po.OtherDeductionPO; +import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryformula.dto.SalaryFormulaEmployeeDTO; import com.engine.salary.entity.salaryformula.dto.SalaryFormulaTaxRateDTO; import com.engine.salary.entity.salaryformula.po.FormulaVar; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.po.SalarySobItemPO; import com.engine.salary.entity.taxrate.TaxRateBase; -import com.engine.salary.enums.SalaryFormulaReferenceEnum; +import com.engine.salary.enums.salaryformula.ReferenceTypeEnum; +import com.engine.salary.enums.salaryformula.SalaryFormulaReferenceEnum; +import com.engine.salary.enums.salaryformula.SalarySQLReferenceEnum; import com.engine.salary.formlua.entity.parameter.DataType; import com.engine.salary.mapper.datacollection.AttendQuoteFieldMapper; import com.engine.salary.service.*; @@ -92,7 +95,30 @@ public class RemoteExcelServiceImpl extends Service implements RemoteExcelServic @Override public List fieldList(String sourceId, Map extendParam) { + List vars = new ArrayList<>(); + + //sql + if (extendParam != null) { + String referenceType = extendParam.get("referenceType") == null ? "" : extendParam.get("referenceType").toString(); + if (ReferenceTypeEnum.SQL.getValue().equals(referenceType)) { + SalarySQLReferenceEnum referenceEnum = SalarySQLReferenceEnum.parseByValue(sourceId); + if (referenceEnum != null) { + switch (referenceEnum) { + case EMPLOYEE_INFO: + vars = convert2FormulaVar(SalaryFormulaEmployeeDTO.class, referenceEnum.getValue() + ""); + break; + case SALARY_ACCT_EMPLOYEE: + vars = convert2FormulaVar(SalaryAcctEmployeePO.class, referenceEnum.getValue() + ""); + break; + default: + break; + } + return vars; + } + } + } + // 如果是其他数据源 SalaryFormulaReferenceEnum referenceEnum = SalaryFormulaReferenceEnum.parseByValue(sourceId); if (referenceEnum != null) { @@ -135,6 +161,16 @@ public class RemoteExcelServiceImpl extends Service implements RemoteExcelServic @Override public List> fieldGroupList(Map extendParam) { + + if (ReferenceTypeEnum.SQL.getValue().equals(extendParam.get("referenceType"))) { + return Arrays.stream(SalarySQLReferenceEnum.values()).map(e -> { + Map map = new HashMap<>(); + map.put("key", e.getValue()); + map.put("value", SalaryI18nUtil.getI18nLabel(e.getLabelId(), e.getDefaultLabel())); + return map; + }).collect(Collectors.toList()); + } + return Arrays.stream(SalaryFormulaReferenceEnum.values()).map(e -> { Map map = new HashMap<>(); map.put("key", e.getValue()); diff --git a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java index 644fb4ab7..f88e456e2 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java @@ -20,7 +20,7 @@ import com.engine.salary.entity.salaryformula.po.FormulaVar; 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.salaryformula.SalaryFormulaReferenceEnum; import com.engine.salary.enums.SalaryValueTypeEnum; import com.engine.salary.service.*; import com.engine.salary.util.SalaryEntityUtil; diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index eb04cff65..87a932320 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -6,7 +6,6 @@ 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.salaryformula.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; @@ -21,6 +20,7 @@ import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultTempPO; +import com.engine.salary.entity.salaryformula.ExpressFormula; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; import com.engine.salary.entity.salarysob.po.SalarySobAdjustRulePO; @@ -39,7 +39,6 @@ import com.engine.salary.util.SalaryI18nUtil; 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.util.threadPool.ThreadPoolUtil; import com.weaver.util.threadPool.constant.ModulePoolEnum; import com.weaver.util.threadPool.entity.LocalRunnable; @@ -112,7 +111,9 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe } // private LoggerTemplate salaryAcctRecordLoggerTemplate; -// private SIAccountService siAccountService; + private SIAccountService getSIAccountService(User user) { + return (SIAccountService) ServiceUtil.getService(SIAccountServiceImpl.class, user); + } private AttendQuoteFieldService getAttendQuoteFieldService(User user) { return (AttendQuoteFieldService) ServiceUtil.getService(AttendQuoteFieldServiceImpl.class, user); @@ -385,8 +386,8 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe List salaryItemPOS = getSalaryItemService(user).listAll(); // 5、查询薪资核算记录所用薪资账套的调薪计薪规则 List salarySobAdjustRulePOS = getSalarySobAdjustRuleService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); - // todo 6、查询社保福利的所有字段 - Map welfareColumns = Maps.newHashMap();//siAccountService.welfareColumns(tenantKey); + // 6、查询社保福利的所有字段 + Map welfareColumns = getSIAccountService(user).welfareColumns(); // 7、查询考勤引用的所有字段 List attendQuoteFieldListDTOS = getAttendQuoteFieldService(user).listAll(); // 8、查询公式详情 diff --git a/src/com/engine/salary/wrapper/SalaryItemWrapper.java b/src/com/engine/salary/wrapper/SalaryItemWrapper.java index 177bce13c..f390df6e4 100644 --- a/src/com/engine/salary/wrapper/SalaryItemWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryItemWrapper.java @@ -14,6 +14,10 @@ import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salaryitem.po.SysSalaryItemPO; import com.engine.salary.entity.salarysob.po.SalarySobItemPO; import com.engine.salary.enums.SalaryItemTypeEnum; +import com.engine.salary.enums.SalaryRoundingModeEnum; +import com.engine.salary.enums.SalarySystemTypeEnum; +import com.engine.salary.enums.SalaryValueTypeEnum; +import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.service.SalaryFormulaService; import com.engine.salary.service.SalaryItemService; @@ -92,8 +96,8 @@ public class SalaryItemWrapper extends Service { salarySobItems = getSalarySobItemService(user).listBySalaryItemIds(salaryItemIds); if (CollectionUtils.isNotEmpty(salarySobItems)) { Set salaryItemIdsUseBySob = SalaryEntityUtil.properties(salarySobItems, SalarySobItemPO::getSalaryItemId); - salaryItemListDTOS.forEach(dto->{ - if (salaryItemIdsUseBySob.contains(dto.getId())){ + salaryItemListDTOS.forEach(dto -> { + if (salaryItemIdsUseBySob.contains(dto.getId())) { dto.setCanDelete(false); } }); @@ -192,9 +196,26 @@ public class SalaryItemWrapper extends Service { */ public void save(SalaryItemSaveParam saveParam) { ValidUtil.doValidator(saveParam); + validParam(saveParam); + getSalaryItemService(user).save(saveParam); } + private void validParam(SalaryItemSaveParam saveParam) { + if (SalarySystemTypeEnum.parseByValue(saveParam.getSystemType()) == null) { + throw new SalaryRunTimeException("系统内置的薪资项目异常"); + } + if (SalaryRoundingModeEnum.parseByValue(saveParam.getRoundingMode()) == null) { + throw new SalaryRunTimeException("舍入规则异常"); + } + if (SalaryValueTypeEnum.parseByValue(saveParam.getValueType()) == null) { + throw new SalaryRunTimeException("取值方式异常"); + } + if (SalaryDataTypeEnum.parseByValue(saveParam.getDataType()) == null) { + throw new SalaryRunTimeException("字段类型异常"); + } + } + /** * 编辑薪资项目 * @@ -202,6 +223,7 @@ public class SalaryItemWrapper extends Service { */ public void update(SalaryItemSaveParam saveParam) { ValidUtil.doValidator(saveParam, RuntimeTypeEnum.UPDATE); + validParam(saveParam); getSalaryItemService(user).update(saveParam); }