From bd75ef8d3b6aff445a33437396ba288ad4c09bc0 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 30 Aug 2023 13:09:56 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=90=8C=E6=AD=A5=E7=A6=BB?= =?UTF-8?q?=E8=81=8C=E4=BA=BA=E5=91=98=E7=A4=BE=E4=BF=9D=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=E3=80=81=E8=96=AA=E8=B5=84=E6=A1=A3=E6=A1=88=E6=9C=80=E5=90=8E?= =?UTF-8?q?=E7=BC=B4=E7=BA=B3=E6=97=A5=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIArchivesBiz.java | 12 ++++ .../mapper/archive/SalaryArchiveMapper.xml | 7 +++ .../siarchives/InsuranceBaseInfoMapper.java | 7 +++ .../siarchives/InsuranceBaseInfoMapper.xml | 28 +++++++++ .../AutoSyncResignationEmpArchiveJob.java | 60 +++++++++++++++++-- 5 files changed, 108 insertions(+), 6 deletions(-) diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index 9c89df464..a3d3f10ab 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -1778,4 +1778,16 @@ public class SIArchivesBiz { return true; } + + /** + * 获取没有设置社保、公积金最后缴纳月的档案 + * @param employeeIds + * @return + */ + public List listEndDateIsNull(List employeeIds) { + if (CollectionUtils.isEmpty(employeeIds)) { + return Collections.emptyList(); + } + return getInsuranceBaseInfoMapper().listEndDateIsNull(employeeIds); + } } diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml index 450cd1e72..69e5c299b 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml @@ -559,6 +559,13 @@ + + + + when id=#{item.id} then #{item.updateTime} + + + where id in diff --git a/src/com/engine/salary/mapper/siarchives/InsuranceBaseInfoMapper.java b/src/com/engine/salary/mapper/siarchives/InsuranceBaseInfoMapper.java index b604d49ef..80e9c5e2e 100644 --- a/src/com/engine/salary/mapper/siarchives/InsuranceBaseInfoMapper.java +++ b/src/com/engine/salary/mapper/siarchives/InsuranceBaseInfoMapper.java @@ -120,4 +120,11 @@ public interface InsuranceBaseInfoMapper { * @param po */ void updateById(InsuranceArchivesBaseInfoPO po); + + /** + * 获取没有设置社保、公积金最后缴纳月的档案 + * @param employeeIds + * @return + */ + List listEndDateIsNull(@Param("employeeIds") List employeeIds); } diff --git a/src/com/engine/salary/mapper/siarchives/InsuranceBaseInfoMapper.xml b/src/com/engine/salary/mapper/siarchives/InsuranceBaseInfoMapper.xml index 6caa9ac34..467dbf9f2 100644 --- a/src/com/engine/salary/mapper/siarchives/InsuranceBaseInfoMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/InsuranceBaseInfoMapper.xml @@ -272,6 +272,34 @@ AND payment_organization = #{paymentOrganization} + UPDATE hrsa_insurance_base_info diff --git a/src/com/engine/salary/timer/AutoSyncResignationEmpArchiveJob.java b/src/com/engine/salary/timer/AutoSyncResignationEmpArchiveJob.java index c558e4031..1055b61d1 100644 --- a/src/com/engine/salary/timer/AutoSyncResignationEmpArchiveJob.java +++ b/src/com/engine/salary/timer/AutoSyncResignationEmpArchiveJob.java @@ -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 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<>(); @@ -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 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()); + } + } } }