package com.engine.salary.timer; import com.engine.common.util.ServiceUtil; import com.engine.salary.biz.SIArchivesBiz; import com.engine.salary.biz.SalaryArchiveBiz; import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; import com.engine.salary.entity.siarchives.po.InsuranceArchivesBaseInfoPO; import com.engine.salary.mapper.siarchives.FundSchemeMapper; import com.engine.salary.mapper.siarchives.OtherSchemeMapper; import com.engine.salary.mapper.siarchives.SocialSchemeMapper; 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.collections4.CollectionUtils; 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 SalaryArchiveBiz getSalaryArchiveMapper = new SalaryArchiveBiz(); private SocialSchemeMapper getSocialSchemeMapper() { return MapperProxyFactory.getProxy(SocialSchemeMapper.class); } private FundSchemeMapper getFundSchemeMapper() { return MapperProxyFactory.getProxy(FundSchemeMapper.class); } private OtherSchemeMapper getOtherSchemeMapper() { return MapperProxyFactory.getProxy(OtherSchemeMapper.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 = 2; } 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); } } if (CollectionUtils.isNotEmpty(needUpdateSalaryArchiveList)) { getSalaryArchiveMapper.batchUpdate(needUpdateSalaryArchiveList); } // 获取离职人员中没有设置最后缴纳月的社保福利档案 SIArchivesBiz siArchivesBiz = new SIArchivesBiz(); List needSyncList = siArchivesBiz.listEndDateIsNull(new ArrayList<>(resignationMap.keySet())); // 设置社保、公积金最后缴纳月 for(InsuranceArchivesBaseInfoPO po : needSyncList){ String dismissDate = resignationMap.get(po.getEmployeeId()); if (StringUtils.isNotEmpty(dismissDate)) { dismissDate = StringUtils.substring(dismissDate,0,7); // 更新社保最后缴纳月 Long socialArchivesId = po.getSocialArchivesId(); getSocialSchemeMapper().updateEndTime(socialArchivesId, dismissDate); // 更新公积金最后缴纳月 Long fundArchivesId = po.getFundArchivesId(); getFundSchemeMapper().updateEndTime(fundArchivesId, dismissDate); // 更新企业年金及其他福利最后缴纳月 Long otherArchivesId = po.getOtherArchivesId(); getOtherSchemeMapper().updateEndTime(otherArchivesId, dismissDate); } } } }