package com.engine.salary.timer; import com.engine.common.util.ServiceUtil; import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; import com.engine.salary.mapper.archive.SalaryArchiveMapper; import com.engine.salary.service.SalaryArchiveService; import com.engine.salary.service.SalaryEmployeeService; import com.engine.salary.service.impl.SalaryArchiveServiceImpl; import com.engine.salary.service.impl.SalaryEmployeeServiceImpl; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.db.MapperProxyFactory; import org.apache.commons.lang3.StringUtils; import weaver.hrm.User; import weaver.interfaces.schedule.BaseCronJob; import java.util.*; /** * @author Harryxzy * @ClassName AutoSyncInsuranceArchiveJob * @date 2023/08/14 9:30 * @description 自动同步离职人员社保福利档案内容 */ public class AutoSyncResignationEmpArchiveJob extends BaseCronJob { private SalaryArchiveService getSalaryArchiveService(User user) { return ServiceUtil.getService(SalaryArchiveServiceImpl.class,user); } private SalaryEmployeeService getSalaryEmployeeService(User user) { return ServiceUtil.getService(SalaryEmployeeServiceImpl.class,user); } private SalaryArchiveMapper getSalaryArchiveMapper() { return MapperProxyFactory.getProxy(SalaryArchiveMapper.class); } private Integer preMonth; @Override public void execute() { User user = new User(); user.setUid(1); user.setLoginid("sysadmin"); // 获取当前日到前3个月期间离职的人员id Calendar cal = Calendar.getInstance(); cal.setTime(new Date()); if (preMonth == null) { preMonth = 3; } cal.add(Calendar.MONTH, -preMonth); Map resignationMap = getSalaryEmployeeService(user).getResignationMapByDate(SalaryDateUtil.getFormatDate(cal.getTime())); // 获取离职人员中没有设置最后缴纳月的档案 List salaryArchivePOS = getSalaryArchiveService(user).listPayEndDateIsNull(new ArrayList<>(resignationMap.keySet())); Date now = new Date(); List needUpdateSalaryArchiveList = new ArrayList<>(); for(SalaryArchivePO archive : salaryArchivePOS){ String dismissDate = resignationMap.get(archive.getEmployeeId()); if (StringUtils.isNotBlank(dismissDate)) { archive.setPayEndDate(SalaryDateUtil.dateStrToLocalDate(dismissDate)); archive.setUpdateTime(now); needUpdateSalaryArchiveList.add(archive); } } } }