weaver-hrm-salary/src/com/engine/salary/timer/AutoSyncResignationEmpArchi...

118 lines
5.2 KiB
Java
Raw Normal View History

2023-08-30 10:41:00 +08:00
package com.engine.salary.timer;
import com.engine.common.util.ServiceUtil;
import com.engine.salary.biz.SIArchivesBiz;
2023-08-30 10:41:00 +08:00
import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO;
import com.engine.salary.entity.siarchives.po.InsuranceArchivesBaseInfoPO;
import com.engine.salary.entity.siarchives.po.InsuranceArchivesFundSchemePO;
import com.engine.salary.entity.siarchives.po.InsuranceArchivesOtherSchemePO;
import com.engine.salary.entity.siarchives.po.InsuranceArchivesSocialSchemePO;
import com.engine.salary.enums.salaryarchive.SalaryArchiveStatusEnum;
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;
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 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) {
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 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.setRunStatus(SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue());
2023-08-30 10:41:00 +08:00
archive.setUpdateTime(now);
needUpdateSalaryArchiveList.add(archive);
}
}
// 获取离职人员中没有设置最后缴纳月的社保福利档案
SIArchivesBiz siArchivesBiz = new SIArchivesBiz();
List<InsuranceArchivesBaseInfoPO> needSyncList = siArchivesBiz.listEndDateIsNull(new ArrayList<>(resignationMap.keySet()));
now = new Date();
// 设置社保、公积金最后缴纳月
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().updateById(InsuranceArchivesSocialSchemePO.builder()
.id(socialArchivesId)
.socialEndTime(dismissDate)
.updateTime(now)
.build());
// 更新公积金最后缴纳月
Long fundArchivesId = po.getFundArchivesId();
getFundSchemeMapper().updateById(InsuranceArchivesFundSchemePO.builder()
.id(fundArchivesId)
.fundEndTime(dismissDate)
.updateTime(now)
.build());
// 更新企业年金及其他福利最后缴纳月
Long otherArchivesId = po.getOtherArchivesId();
getOtherSchemeMapper().updateById(InsuranceArchivesOtherSchemePO.builder()
.id(otherArchivesId)
.otherEndTime(dismissDate)
.updateTime(now)
.build());
}
}
2023-08-30 10:41:00 +08:00
}
}