自动同步离职人员社保档案、薪资档案最后缴纳日期

This commit is contained in:
Harryxzy 2023-08-30 13:09:56 +08:00
parent c1893f9152
commit bd75ef8d3b
5 changed files with 108 additions and 6 deletions

View File

@ -1778,4 +1778,16 @@ public class SIArchivesBiz {
return true;
}
/**
* 获取没有设置社保公积金最后缴纳月的档案
* @param employeeIds
* @return
*/
public List<InsuranceArchivesBaseInfoPO> listEndDateIsNull(List<Long> employeeIds) {
if (CollectionUtils.isEmpty(employeeIds)) {
return Collections.emptyList();
}
return getInsuranceBaseInfoMapper().listEndDateIsNull(employeeIds);
}
}

View File

@ -559,6 +559,13 @@
</if>
</foreach>
</trim>
<trim prefix="update_time =case" suffix="end,">
<foreach collection="collection" item="item" index="index">
<if test="item.updateTime!=null">
when id=#{item.id} then #{item.updateTime}
</if>
</foreach>
</trim>
</trim>
where
id in

View File

@ -120,4 +120,11 @@ public interface InsuranceBaseInfoMapper {
* @param po
*/
void updateById(InsuranceArchivesBaseInfoPO po);
/**
* 获取没有设置社保公积金最后缴纳月的档案
* @param employeeIds
* @return
*/
List<InsuranceArchivesBaseInfoPO> listEndDateIsNull(@Param("employeeIds") List<Long> employeeIds);
}

View File

@ -272,6 +272,34 @@
AND payment_organization = #{paymentOrganization}
</select>
<select id="listEndDateIsNull"
resultType="com.engine.salary.entity.siarchives.po.InsuranceArchivesBaseInfoPO">
select
a.id
, a.employee_id
, a.payment_organization
, a.social_archives_id
, a.fund_archives_id
, a.other_archives_id
, a.run_status
, a.create_time
, a.update_time
, a.creator
, a.delete_type
, a.tenant_key
, a.employee_type
from hrsa_insurance_base_info a
left join hrsa_social_archives s on a.social_archives_id=s.id and s.delete_type=0
left join hrsa_fund_archives f on a.fund_archives_id=f.id and f.delete_type=0
left join hrsa_other_archives o on a.other_archives_id=o.id and o.delete_type=0
where a.delete_type = 0
and (social_end_time is null or social_end_time ='' or fund_end_time is null or fund_end_time =''
or other_end_time is null or other_end_time ='' )
and a.employee_id in
<foreach collection="employeeIds" open="(" item="employeeId" separator="," close=")">
#{employeeId}
</foreach>
</select>
<update id="updateRunStatusByIds" parameterType="com.engine.salary.entity.siarchives.po.InsuranceArchivesBaseInfoPO">
UPDATE hrsa_insurance_base_info

View File

@ -1,8 +1,16 @@
package com.engine.salary.timer;
import com.engine.common.util.ServiceUtil;
import com.engine.salary.biz.SIArchivesBiz;
import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO;
import com.engine.salary.mapper.archive.SalaryArchiveMapper;
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;
import com.engine.salary.service.SalaryArchiveService;
import com.engine.salary.service.SalaryEmployeeService;
import com.engine.salary.service.impl.SalaryArchiveServiceImpl;
@ -31,8 +39,16 @@ public class AutoSyncResignationEmpArchiveJob extends BaseCronJob {
return ServiceUtil.getService(SalaryEmployeeServiceImpl.class,user);
}
private SalaryArchiveMapper getSalaryArchiveMapper() {
return MapperProxyFactory.getProxy(SalaryArchiveMapper.class);
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;
@ -46,11 +62,11 @@ public class AutoSyncResignationEmpArchiveJob extends BaseCronJob {
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
if (preMonth == null) {
preMonth = 3;
preMonth = 2;
}
cal.add(Calendar.MONTH, -preMonth);
Map<Long, String> resignationMap = getSalaryEmployeeService(user).getResignationMapByDate(SalaryDateUtil.getFormatDate(cal.getTime()));
// 获取离职人员中没有设置最后缴纳月的档案
// 获取离职人员中没有设置最后发薪日期的薪资档案
List<SalaryArchivePO> salaryArchivePOS = getSalaryArchiveService(user).listPayEndDateIsNull(new ArrayList<>(resignationMap.keySet()));
Date now = new Date();
List<SalaryArchivePO> needUpdateSalaryArchiveList = new ArrayList<>();
@ -58,12 +74,44 @@ public class AutoSyncResignationEmpArchiveJob extends BaseCronJob {
String dismissDate = resignationMap.get(archive.getEmployeeId());
if (StringUtils.isNotBlank(dismissDate)) {
archive.setPayEndDate(SalaryDateUtil.dateStrToLocalDate(dismissDate));
archive.setRunStatus(SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue());
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());
}
}
}
}