diff --git a/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java b/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java index 9d7fa2f09..694c901e7 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java @@ -346,6 +346,22 @@ public class CalculateFormulaVarBO { String value; // 获取薪资项目的调薪规则 SalarySobAdjustRulePO salaryAdjustmentRulePO = salarySobAdjustRulePOMap.get(entry.getKey()); + + List valueList = entry.getValue(); + if (CollectionUtils.isNotEmpty(valueList)) { + String firstDateStr = SalaryDateUtil.getFormatLocalDate(valueList.get(0).getEffectiveDateRange().getFromDate()); + String salaryCycleFirstStr = SalaryDateUtil.getFormatLocalDate(salaryCycle.getFromDate()); + if (isSeasonSob) { + salaryCycleFirstStr = SalaryDateUtil.getFormatLocalDate(salaryAcctCalculateBO.getSalarySobCycleDTO().getAttendCycleFromDate()); + } + if (!firstDateStr.equals(salaryCycleFirstStr)) { + LocalDateRange dateRange = LocalDateRange.builder() + .fromDate(isSeasonSob ? salaryAcctCalculateBO.getSalarySobCycleDTO().getAttendCycleFromDate() : salaryCycle.getFromDate()) + .endDate(valueList.get(0).getEffectiveDateRange().getFromDate()).build(); + SalaryArchiveItemDataDTO zeroDTO = SalaryArchiveItemDataDTO.builder().effectiveDateRange(dateRange).salaryItemId(valueList.get(0).getSalaryItemId()).value("0").build(); + valueList.add(0, zeroDTO); + } + } if (entry.getValue().size() > 2) { // 如果薪资项目在薪资周期内经历了多次调薪,则默认分段计薪 value = calculateBySalarySobAdjustRule(salaryCycle, SalarySobAdjustRuleTypeEnum.PARTITION, entry.getValue(), kqGroupService, employeeId, isSeasonSob);