新增核算时间变量

This commit is contained in:
钱涛 2022-11-24 17:21:16 +08:00
parent c2371ffcb3
commit 832b40e40a
5 changed files with 85 additions and 8 deletions

View File

@ -16,6 +16,7 @@ import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveDataDTO;
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.dto.SalarySobCycleDTO;
import com.engine.salary.entity.salarysob.po.SalarySobAdjustRulePO;
import com.engine.salary.enums.salaryformula.SalaryFormulaReferenceEnum;
import com.engine.salary.enums.salaryformula.SalarySQLReferenceEnum;
@ -136,6 +137,39 @@ public class CalculateFormulaVarBO {
return resultMap;
}
/**
* 处理核算日期相关信息
*/
private List<FormulaVarValue> handleSalarySobCycleDTO(SalaryAcctCalculateBO salaryAcctCalculateBO) {
SalarySobCycleDTO salarySobCycleDTO = salaryAcctCalculateBO.getSalarySobCycleDTO();
salarySobCycleDTO.setSalaryDate(SalaryDateUtil.toDate(salarySobCycleDTO.getSalaryMonth(), 1));
salarySobCycleDTO.setTaxDate(SalaryDateUtil.toDate(salarySobCycleDTO.getTaxCycle(), 1));
salarySobCycleDTO.setSocialSecurityDate(SalaryDateUtil.toDate(salarySobCycleDTO.getSocialSecurityCycle(), 1));
LocalDateRange salaryCycle = salarySobCycleDTO.getSalaryCycle();
salarySobCycleDTO.setSalaryCycleFromDate(salaryCycle.getFromDate());
salarySobCycleDTO.setSalaryCycleEndDate(salaryCycle.getEndDate());
LocalDateRange attendCycle = salarySobCycleDTO.getAttendCycle();
salarySobCycleDTO.setAttendCycleFromDate(attendCycle.getFromDate());
salarySobCycleDTO.setAttendCycleEndDate(attendCycle.getEndDate());
Map<String, String> map = JsonUtil.parseMap(salarySobCycleDTO, String.class);
List<FormulaVarValue> formulaVarValues = Lists.newArrayList();
Field[] declaredFields = SalarySobCycleDTO.class.getDeclaredFields();
for (Field declaredField : declaredFields) {
if (declaredField.isAnnotationPresent(SalaryFormulaVar.class)) {
String fieldName = declaredField.getName();
String fieldId = SalarySQLReferenceEnum.SALARY_CYCLE.getValue()
+ SalaryFormulaFieldConstant.FIELD_ID_SEPARATOR
+ fieldName;
formulaVarValues.add(new FormulaVarValue().setFieldId(fieldId).setFieldValue(map.getOrDefault(fieldName, StringUtils.EMPTY)));
}
}
return formulaVarValues;
}
/**
* 处理薪资核算结果
@ -164,7 +198,7 @@ public class CalculateFormulaVarBO {
}
/**
* 处理薪资档案会涉及调薪计薪规则
* 处理薪资档案会涉及调薪计薪规则+处理核算日期
*
* @param salaryAcctCalculateBO 薪资核算参数
* @param resultMap 返回结果集
@ -179,6 +213,7 @@ public class CalculateFormulaVarBO {
List<FormulaVarValue> formulaVarValues = resultMap.computeIfAbsent(key, k -> Lists.newArrayList());
// 将薪资档案的值转换成公式中的变量填充到返回结果集中
formulaVarValues.addAll(handleSalaryArchiveItemVal(salaryAcctCalculateBO, salaryArchiveTaxAgentDataDTO.getSalaryItemValues(), salarySobAdjustRulePOMap));
formulaVarValues.addAll(handleSalarySobCycleDTO(salaryAcctCalculateBO));
}
}
}

View File

@ -1,5 +1,6 @@
package com.engine.salary.entity.salarysob.dto;
import com.engine.salary.annotation.SalaryFormulaVar;
import com.engine.salary.common.LocalDateRange;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
@ -9,6 +10,7 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.YearMonth;
import java.util.Date;
/**
* 薪资账套的周期
@ -24,24 +26,46 @@ import java.time.YearMonth;
@AllArgsConstructor
public class SalarySobCycleDTO {
//薪资账套id
//薪资账套id
private Long salarySobId;
//薪资所属月
//薪资所属月
@JsonSerialize(using = ToStringSerializer.class)
private YearMonth salaryMonth;
//税款所属期
//税款所属期
@JsonSerialize(using = ToStringSerializer.class)
private YearMonth taxCycle;
//社保福利所属期
//社保福利所属期
@JsonSerialize(using = ToStringSerializer.class)
private YearMonth socialSecurityCycle;
//薪资周期")
//薪资周期")
private LocalDateRange salaryCycle;
//考勤周期")
//考勤周期")
private LocalDateRange attendCycle;
/**
* 公式变量
*/
@SalaryFormulaVar(defaultLabel = "薪资所属月", labelId = 86321, dataType = "string")
private Date salaryDate;
@SalaryFormulaVar(defaultLabel = "税款所属期", labelId = 86321, dataType = "string")
private Date taxDate;
@SalaryFormulaVar(defaultLabel = "社保福利所属期", labelId = 86321, dataType = "string")
private Date socialSecurityDate;
@SalaryFormulaVar(defaultLabel = "薪资周期起始日期", labelId = 86321, dataType = "string")
private Date salaryCycleFromDate;
@SalaryFormulaVar(defaultLabel = "薪资周期结束日期", labelId = 86321, dataType = "string")
private Date salaryCycleEndDate;
@SalaryFormulaVar(defaultLabel = "考勤周期起始日期", labelId = 86321, dataType = "string")
private Date attendCycleFromDate;
@SalaryFormulaVar(defaultLabel = "考勤周期结束日期", labelId = 86321, dataType = "string")
private Date attendCycleEndDate;
}

View File

@ -16,7 +16,8 @@ import java.util.Objects;
public enum SalarySQLReferenceEnum implements BaseEnum<String> {
EMPLOYEE_INFO("employeeInfo", "员工基本信息", 85366),
SALARY_ACCT_EMPLOYEE("salaryAcctEmployee", "核算基本信息", 85368);
SALARY_ACCT_EMPLOYEE("salaryAcctEmployee", "核算基本信息", 85368),
SALARY_CYCLE("SalaryCycle", "核算日期", 85368);
private String value;
private String defaultLabel;

View File

@ -14,6 +14,7 @@ import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO;
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.dto.SalarySobCycleDTO;
import com.engine.salary.entity.salarysob.po.SalarySobItemPO;
import com.engine.salary.entity.taxrate.TaxRateBase;
import com.engine.salary.enums.salaryformula.ReferenceTypeEnum;
@ -111,6 +112,9 @@ public class RemoteExcelServiceImpl extends Service implements RemoteExcelServic
case SALARY_ACCT_EMPLOYEE:
vars = convert2FormulaVar(SalaryAcctEmployeePO.class, referenceEnum.getValue() + "");
break;
case SALARY_CYCLE:
vars = convert2FormulaVar(SalarySobCycleDTO.class, referenceEnum.getValue() + "");
break;
default:
break;
}

View File

@ -115,6 +115,19 @@ public class SalaryDateUtil {
}
}
public static String getFormatDate(Date localDate) {
if (localDate == null) {
return StringUtils.EMPTY;
}
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATE_FORMATTER_PATTERN);
return simpleDateFormat.format(localDate);
} catch (Exception e) {
log.warn("格式化日期错误", e);
return StringUtils.EMPTY;
}
}
public static String getFormatLocalDate(LocalDateTime localDateTime) {
if (localDateTime == null) {
return StringUtils.EMPTY;