2023-08-30 10:41:00 +08:00
|
|
|
package com.engine.salary.timer;
|
|
|
|
|
|
|
|
|
|
import com.engine.common.util.ServiceUtil;
|
2023-08-30 13:09:56 +08:00
|
|
|
import com.engine.salary.biz.SIArchivesBiz;
|
2023-08-30 15:34:54 +08:00
|
|
|
import com.engine.salary.biz.SalaryArchiveBiz;
|
2023-08-30 10:41:00 +08:00
|
|
|
import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO;
|
2023-08-30 13:09:56 +08:00
|
|
|
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;
|
2023-08-30 10:41:00 +08:00
|
|
|
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;
|
2023-08-30 15:34:54 +08:00
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
2023-08-30 10:41:00 +08:00
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
|
2023-08-30 15:34:54 +08:00
|
|
|
private SalaryArchiveBiz getSalaryArchiveMapper = new SalaryArchiveBiz();
|
|
|
|
|
|
2023-08-30 13:09:56 +08:00
|
|
|
private SocialSchemeMapper getSocialSchemeMapper() {
|
|
|
|
|
return MapperProxyFactory.getProxy(SocialSchemeMapper.class);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private FundSchemeMapper getFundSchemeMapper() {
|
|
|
|
|
return MapperProxyFactory.getProxy(FundSchemeMapper.class);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private OtherSchemeMapper getOtherSchemeMapper() {
|
|
|
|
|
return MapperProxyFactory.getProxy(OtherSchemeMapper.class);
|
2023-08-30 10:41:00 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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) {
|
2023-08-30 13:09:56 +08:00
|
|
|
preMonth = 2;
|
2023-08-30 10:41:00 +08:00
|
|
|
}
|
|
|
|
|
cal.add(Calendar.MONTH, -preMonth);
|
|
|
|
|
Map<Long, String> resignationMap = getSalaryEmployeeService(user).getResignationMapByDate(SalaryDateUtil.getFormatDate(cal.getTime()));
|
2023-08-30 13:09:56 +08:00
|
|
|
// 获取离职人员中没有设置最后发薪日期的薪资档案
|
2023-08-30 10:41:00 +08:00
|
|
|
List<SalaryArchivePO> salaryArchivePOS = getSalaryArchiveService(user).listPayEndDateIsNull(new ArrayList<>(resignationMap.keySet()));
|
|
|
|
|
Date now = new Date();
|
|
|
|
|
List<SalaryArchivePO> 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);
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-08-30 15:34:54 +08:00
|
|
|
if (CollectionUtils.isNotEmpty(needUpdateSalaryArchiveList)) {
|
|
|
|
|
getSalaryArchiveMapper.batchUpdate(needUpdateSalaryArchiveList);
|
|
|
|
|
}
|
2023-08-30 10:41:00 +08:00
|
|
|
|
2023-08-30 13:09:56 +08:00
|
|
|
// 获取离职人员中没有设置最后缴纳月的社保福利档案
|
|
|
|
|
SIArchivesBiz siArchivesBiz = new SIArchivesBiz();
|
|
|
|
|
List<InsuranceArchivesBaseInfoPO> 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();
|
2023-08-30 15:34:54 +08:00
|
|
|
getSocialSchemeMapper().updateEndTime(socialArchivesId, dismissDate);
|
2023-08-30 13:09:56 +08:00
|
|
|
// 更新公积金最后缴纳月
|
|
|
|
|
Long fundArchivesId = po.getFundArchivesId();
|
2023-08-30 15:34:54 +08:00
|
|
|
getFundSchemeMapper().updateEndTime(fundArchivesId, dismissDate);
|
2023-08-30 13:09:56 +08:00
|
|
|
// 更新企业年金及其他福利最后缴纳月
|
|
|
|
|
Long otherArchivesId = po.getOtherArchivesId();
|
2023-08-30 15:34:54 +08:00
|
|
|
getOtherSchemeMapper().updateEndTime(otherArchivesId, dismissDate);
|
2023-08-30 13:09:56 +08:00
|
|
|
}
|
|
|
|
|
}
|
2023-08-30 10:41:00 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|