1、人员报送功能处原有逻辑是根据员工薪资档案时间作为受雇从业日期以及结束日期,现调整为以薪资档案时间往后延一个月作为雇从业日期以、结束日期。

This commit is contained in:
钱涛 2025-09-15 11:33:51 +08:00
parent d88f48216a
commit be4998b62d
1 changed files with 36 additions and 11 deletions

View File

@ -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<Long> 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());