diff --git a/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRefresh.java b/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRefresh.java index 72191b404..4d7529208 100644 --- a/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRefresh.java +++ b/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRefresh.java @@ -1,5 +1,6 @@ package com.engine.salary.entity.employeedeclare.bo; +import cn.hutool.core.date.DateUtil; import com.api.formmode.page.util.Util; import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.entity.datacollection.DataCollectionEmployee; @@ -27,6 +28,7 @@ import java.util.*; public class EmployeeDeclareRefresh { public static Result refresh(EmployeeDeclareRefreshDTO dto, Long employeeId) { + Date taxCycle = dto.getTaxCycle(); Result result = new Result(); // 本月已有的需要报送的人员 Set employeeIds = SalaryEntityUtil.properties(dto.getEmployeeDeclares(), EmployeeDeclarePO::getEmployeeId); @@ -43,10 +45,16 @@ public class EmployeeDeclareRefresh { || Objects.equals(salaryArchive.getRunStatus(), SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue()))) { if (Objects.equals(employeeDeclare.getEmploymentStatus(), EmploymentStatusEnum.ABNORMAL.getValue()) || Objects.equals(Util.null2String(employeeDeclare.getDismissDate()), Util.null2String(salaryArchive.getPayEndDate()))) { - employeeDeclare.setEmploymentStatus(EmploymentStatusEnum.ABNORMAL.getValue()); - employeeDeclare.setDismissDate(salaryArchive.getPayEndDate()); - employeeDeclare.setNewEmployeeInfo(1); - employeeDeclare.setUpdateTime(now); + Date payEndDate = salaryArchive.getPayEndDate(); + payEndDate = SalaryDateUtil.plusMonths(payEndDate, 1); + //过滤不在一个月且发薪日期在之后月份的 + if ((!DateUtil.isIn(payEndDate, taxCycle, DateUtil.endOfMonth(taxCycle))) && payEndDate.before(taxCycle)) { + employeeDeclare.setDeclareStatus(DeclareStatusEnum.NOT_DECLARE.getValue()); + employeeDeclare.setEmploymentStatus(EmploymentStatusEnum.ABNORMAL.getValue()); + employeeDeclare.setDismissDate(payEndDate); + employeeDeclare.setNewEmployeeInfo(1); + employeeDeclare.setUpdateTime(now); + } result.getEmployeeDeclares().add(employeeDeclare); } } @@ -76,10 +84,15 @@ public class EmployeeDeclareRefresh { SalaryArchivePO salaryArchive = salaryArchiveMap.get(employeeDeclare.getEmployeeId()); if (salaryArchive != null && (Objects.equals(salaryArchive.getRunStatus(), SalaryArchiveStatusEnum.STOP_FROM_PENDING.getValue()) || Objects.equals(salaryArchive.getRunStatus(), SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue()))) { - employeeDeclare.setDeclareStatus(DeclareStatusEnum.NOT_DECLARE.getValue()); - employeeDeclare.setEmploymentStatus(EmploymentStatusEnum.ABNORMAL.getValue()); - employeeDeclare.setDismissDate(salaryArchive.getPayEndDate()); - employeeDeclare.setNewEmployeeInfo(1); + Date payEndDate = salaryArchive.getPayEndDate(); + payEndDate = SalaryDateUtil.plusMonths(payEndDate, 1); + //过滤不在一个月且发薪日期在之后月份的 + if ((!DateUtil.isIn(payEndDate, taxCycle, DateUtil.endOfMonth(taxCycle))) && payEndDate.before(taxCycle)) { + employeeDeclare.setDeclareStatus(DeclareStatusEnum.NOT_DECLARE.getValue()); + employeeDeclare.setEmploymentStatus(EmploymentStatusEnum.ABNORMAL.getValue()); + employeeDeclare.setDismissDate(payEndDate); + employeeDeclare.setNewEmployeeInfo(1); + } } // if (salaryArchive != null && !Objects.equals(Util.null2String(employeeDeclare.getEmploymentType()), salaryArchive.getEmploymentType())) { // employeeDeclare.setDeclareStatus(DeclareStatusEnum.NOT_DECLARE.getValue()); @@ -141,11 +154,23 @@ public class EmployeeDeclareRefresh { SalaryArchivePO salaryArchive = salaryArchiveMap.get(employeeDeclare.getEmployeeId()); if (salaryArchive != null) { // employeeDeclare.setEmploymentType(Util.getIntValue(salaryArchive.getEmploymentType())); - employeeDeclare.setEmploymentDate(salaryArchive.getPayStartDate()); + //钱智二开,薪资档案时间作为受雇从业日期以及结束日期,调整为以薪资档案时间往后延一个月作为雇从业日期以、结束日期。 + Date payStartDate = salaryArchive.getPayStartDate(); + payStartDate = SalaryDateUtil.plusMonths(payStartDate, 1); + //过滤不在一个月且发薪日期在之后月份的 + if ((!DateUtil.isIn(payStartDate, taxCycle, DateUtil.endOfMonth(taxCycle))) && payStartDate.after(taxCycle)) { + continue; + } + if (Objects.equals(salaryArchive.getRunStatus(), SalaryArchiveStatusEnum.STOP_FROM_PENDING.getValue()) || Objects.equals(salaryArchive.getRunStatus(), SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue())) { - employeeDeclare.setEmploymentStatus(EmploymentStatusEnum.ABNORMAL.getValue()); - employeeDeclare.setDismissDate(salaryArchive.getPayEndDate()); + Date payEndDate = salaryArchive.getPayEndDate(); + payEndDate = SalaryDateUtil.plusMonths(payEndDate, 1); + //过滤不在一个月且发薪日期在之后月份的 + if ((!DateUtil.isIn(payEndDate, taxCycle, DateUtil.endOfMonth(taxCycle))) && payEndDate.before(taxCycle)) { + employeeDeclare.setEmploymentStatus(EmploymentStatusEnum.ABNORMAL.getValue()); + employeeDeclare.setDismissDate(payEndDate); + } } } employeeIds.add(employeeDeclare.getEmployeeId());