diff --git a/src/com/engine/salary/biz/SIAccountBiz.java b/src/com/engine/salary/biz/SIAccountBiz.java index 88f90fdb5..46d469563 100644 --- a/src/com/engine/salary/biz/SIAccountBiz.java +++ b/src/com/engine/salary/biz/SIAccountBiz.java @@ -20,10 +20,7 @@ import com.engine.salary.entity.siaccount.po.InsuranceAccountBatchPO; import com.engine.salary.entity.siaccount.po.InsuranceAccountDetailPO; import com.engine.salary.entity.siaccount.po.InsuranceAccountDetailTempPO; import com.engine.salary.entity.siaccount.po.InsuranceAccountInspectPO; -import com.engine.salary.entity.siarchives.po.InsuranceArchivesAccountPO; -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.entity.siarchives.po.*; import com.engine.salary.entity.sicategory.po.ICategoryPO; import com.engine.salary.entity.sischeme.po.InsuranceSchemeDetailPO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; @@ -32,7 +29,7 @@ import com.engine.salary.enums.sicategory.*; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.datacollection.EmployMapper; import com.engine.salary.mapper.siaccount.*; -import com.engine.salary.mapper.siarchives.SocialSchemeMapper; +import com.engine.salary.mapper.siarchives.InsuranceBaseInfoMapper; import com.engine.salary.mapper.sicategory.ICategoryMapper; import com.engine.salary.mapper.sischeme.InsuranceSchemeDetailMapper; import com.engine.salary.mapper.taxagent.TaxAgentMapper; @@ -104,8 +101,8 @@ public class SIAccountBiz extends Service { return MapperProxyFactory.getProxy(InsuranceAccountInspectMapper.class); } - private SocialSchemeMapper getSocialSchemeMapper() { - return MapperProxyFactory.getProxy(SocialSchemeMapper.class); + private InsuranceBaseInfoMapper getInsuranceBaseInfoMapper() { + return MapperProxyFactory.getProxy(InsuranceBaseInfoMapper.class); } private SalarySysConfService getSalarySysConfService(User user) { @@ -899,9 +896,9 @@ public class SIAccountBiz extends Service { employeeIds = employeeIds.stream().filter(item -> !param.getExcludes().contains(item)).collect(Collectors.toList()); } //校验补缴人员是否存在社保档案 - List socialList = getSocialSchemeMapper().getSocialByPaymentOrganization(param.getPaymentOrganization()); + List insuranceBaseInfoList = getInsuranceBaseInfoMapper().getSocialByPaymentOrganization(param.getPaymentOrganization()); List finalEmployeeIds = employeeIds; - List filterList = socialList.stream().filter(e -> { + List filterList = insuranceBaseInfoList.stream().filter(e -> { for (Long uId : finalEmployeeIds) { if (e.getEmployeeId().equals(uId)) { return true; diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index 11532a131..c1465195a 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -31,9 +31,11 @@ import com.engine.salary.entity.sischeme.po.InsuranceSchemeDetailPO; import com.engine.salary.entity.sischeme.po.InsuranceSchemePO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.UserStatusEnum; +import com.engine.salary.enums.siaccount.EmployeeStatusEnum; import com.engine.salary.enums.sicategory.*; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.siarchives.FundSchemeMapper; +import com.engine.salary.mapper.siarchives.InsuranceBaseInfoMapper; import com.engine.salary.mapper.siarchives.OtherSchemeMapper; import com.engine.salary.mapper.siarchives.SocialSchemeMapper; import com.engine.salary.mapper.sicategory.ICategoryMapper; @@ -47,6 +49,7 @@ import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import com.google.common.collect.Lists; +import dm.jdbc.util.IdGenerator; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; @@ -79,6 +82,10 @@ public class SIArchivesBiz { return MapperProxyFactory.getProxy(TaxAgentMapper.class); } + private InsuranceBaseInfoMapper getInsuranceBaseInfoMapper() { + return MapperProxyFactory.getProxy(InsuranceBaseInfoMapper.class); + } + /** * @param welfareType * @param employeeId @@ -708,6 +715,8 @@ public class SIArchivesBiz { request.setOrderRule(param.getOrderRule()); + request.setRunStatuses(param.getRunStatuses()); + apidatas = listPageEmployeePOS(request, operateId); return apidatas; @@ -735,6 +744,9 @@ public class SIArchivesBiz { SocialSchemeMapper socialSchemeMapper = sqlSession.getMapper(SocialSchemeMapper.class); List page = new ArrayList<>(); PageInfo pageInfo = new PageInfo<>(InsuranceArchivesEmployeePO.class); + //生成福利档案历史基础信息(在福利档案基础信息表为空时) + createOldInsuranceBaseInfo(operateId); + //获取福利档案列表数据 if (needAuth) { Collection taxAgentEmployeeIds = param.getTaxAgentEmployeeIds(); Collection taxAgentIds = param.getTaxAgentIds(); @@ -1211,4 +1223,32 @@ public class SIArchivesBiz { return encryptList; } + /** + * 判断是否需要生成历史福利档案基本信息 + */ + private void createOldInsuranceBaseInfo(Long creator) { + List nowBaseInfoList = getInsuranceBaseInfoMapper().getInsuranceBaseInfoList(); + if (nowBaseInfoList.size() == 0) { + List addBaseInfoList = new ArrayList<>(); + List oldBaseInfoList = getInsuranceBaseInfoMapper().getInsuranceBaseInfoListByInsuranceDetail(null); + if (oldBaseInfoList.size() > 0) { + //设置基本信息表字段 + for (InsuranceArchivesBaseInfoPO po : oldBaseInfoList) { + po.setId(IdGenerator.generate()); + po.setCreateTime(new Date()); + po.setDeleteType(0); + po.setCreator(creator); + po.setRunStatus(EmployeeStatusEnum.PAYING.getValue()); + po.setUpdateTime(new Date()); + po.setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY); + + addBaseInfoList.add(po); + } + //将历史基本信息入库 + getInsuranceBaseInfoMapper().batchSave(addBaseInfoList); + } + } + + + } } diff --git a/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesListParam.java b/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesListParam.java index 90730235c..c2365c450 100644 --- a/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesListParam.java +++ b/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesListParam.java @@ -101,4 +101,6 @@ public class InsuranceArchivesListParam extends BaseQueryParam { private Collection taxAgentEmployeeIds; //个税扣缴义务人 private Collection taxAgentIds; + //福利执行状态 + private List runStatuses; } diff --git a/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesAccountPO.java b/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesAccountPO.java index 8792239bf..f2a2de17f 100644 --- a/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesAccountPO.java +++ b/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesAccountPO.java @@ -22,4 +22,6 @@ public class InsuranceArchivesAccountPO { private InsuranceArchivesFundSchemePO fund; private InsuranceArchivesOtherSchemePO other; + + private InsuranceArchivesBaseInfoPO BaseInfo; } diff --git a/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseInfoPO.java b/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseInfoPO.java new file mode 100644 index 000000000..70ecc8cff --- /dev/null +++ b/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseInfoPO.java @@ -0,0 +1,80 @@ +package com.engine.salary.entity.siarchives.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * @Author: sy + * @Description: 社保福利档案基础信息 + * @Date: 2022/10/8 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_insurance_base_info +public class InsuranceArchivesBaseInfoPO { + /** + * 主键id + */ + private Long id; + + /** + * 员工id + */ + private Long employeeId; + + /** + * 个税扣缴义务人id + */ + private Long paymentOrganization; + + /** + * 社保档案id + */ + private Long socialArchivesId; + + /** + * 公积金档案id + */ + private Long fundArchivesId; + + /** + * 其他福利档案id + */ + private Long otherArchivesId; + + /** + * 租户key + */ + private String tenantKey; + + /** + * 创建人id + */ + private Long creator; + + /** + * 是否删除 + */ + private Integer deleteType; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 福利执行状态 + */ + private String runStatus; +} diff --git a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml index 1dda9bd3c..5b045fed8 100644 --- a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml +++ b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml @@ -429,9 +429,9 @@ diff --git a/src/com/engine/salary/mapper/siarchives/InsuranceBaseInfoMapper.java b/src/com/engine/salary/mapper/siarchives/InsuranceBaseInfoMapper.java new file mode 100644 index 000000000..d968123bf --- /dev/null +++ b/src/com/engine/salary/mapper/siarchives/InsuranceBaseInfoMapper.java @@ -0,0 +1,41 @@ +package com.engine.salary.mapper.siarchives; + +import com.engine.salary.entity.siarchives.po.InsuranceArchivesBaseInfoPO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Author sy + * @Date 2022/10/08 + **/ +public interface InsuranceBaseInfoMapper { + + /** + * 获取当前福利档案基础信息(由当前的社保、公积金、其他福利信息表获取) + * 当设置employeeIds时,则是通过人员id、社保、公积金、其他福利信息表获取指定人员的福利档案基础信息 + */ + List getInsuranceBaseInfoListByInsuranceDetail(@Param("employeeIds")List employeeIds); + + /** + * 获取当前福利档案基础信息(由福利档案基础信息表获取) + */ + List getInsuranceBaseInfoList(); + + /** + * 批量保存 + */ + void batchSave(@Param("infos") List infos); + + /** + * 批量删除 + */ + void batchDeleteByEmployeeIds(@Param("employeeIds")List employeeIds); + + /** + * 根据个税扣缴义务人id获取基础信息列表 + * @param paymentOrganization + * @return + */ + List getSocialByPaymentOrganization(@Param("paymentOrganization")Long paymentOrganization); +} diff --git a/src/com/engine/salary/mapper/siarchives/InsuranceBaseInfoMapper.xml b/src/com/engine/salary/mapper/siarchives/InsuranceBaseInfoMapper.xml new file mode 100644 index 000000000..1d900a3d3 --- /dev/null +++ b/src/com/engine/salary/mapper/siarchives/InsuranceBaseInfoMapper.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + t.id + , t.employee_id + , t.payment_organization + , t.social_archives_id + , t.fund_archives_id + , t.other_archives_id + , t.run_status + , t.create_time + , t.update_time + , t.creator + , t.delete_type + , t.tenant_key + + + + + + + + + INSERT INTO hrsa_insurance_base_info + (id,employee_id,payment_organization,social_archives_id,fund_archives_id,other_archives_id,tenant_key,creator,delete_type,create_time,update_time,run_status) + VALUES + + ( + #{item.id}, + #{item.employeeId}, + #{item.paymentOrganization}, + #{item.socialArchivesId}, + #{item.fundArchivesId}, + #{item.otherArchivesId}, + #{item.tenantKey}, + #{item.creator}, + #{item.deleteType}, + #{item.createTime}, + #{item.updateTime}, + #{item.runStatus} + ) + + + + INSERT INTO hrsa_insurance_base_info + (id,employee_id,payment_organization,social_archives_id,fund_archives_id,other_archives_id,tenant_key,creator,delete_type,create_time,update_time,run_status) + + select + #{item.id,jdbcType=DOUBLE}, + #{item.employeeId,jdbcType=DOUBLE}, + #{item.paymentOrganization,jdbcType=DOUBLE}, + #{item.socialArchivesId,jdbcType=DOUBLE}, + #{item.fundArchivesId,jdbcType=DOUBLE}, + #{item.otherArchivesId,jdbcType=DOUBLE}, + #{item.tenantKey,jdbcType=VARCHAR}, + #{item.creator,jdbcType=DOUBLE}, + #{item.deleteType}, + #{item.createTime}, + #{item.updateTime}, + #{item.runStatus,jdbcType=VARCHAR} + from dual + + + + + INSERT INTO hrsa_insurance_base_info + (id,employee_id,payment_organization,social_archives_id,fund_archives_id,other_archives_id,tenant_key,creator,delete_type,create_time,update_time,run_status) + VALUES + ( + #{item.id}, + #{item.employeeId}, + #{item.paymentOrganization}, + #{item.socialArchivesId}, + #{item.fundArchivesId}, + #{item.otherArchivesId}, + #{item.tenantKey}, + #{item.creator}, + #{item.deleteType}, + #{item.createTime}, + #{item.updateTime}, + #{item.runStatus} + ) + + + + + + UPDATE hrsa_insurance_base_info + SET delete_type = 1 + WHERE delete_type = 0 + + AND employee_id IN + + #{employeeId} + + + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml index 63aaf8573..dcece6acb 100644 --- a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml @@ -296,10 +296,11 @@ d.departmentname AS departmentName, e.jobtitle AS position, e.STATUS AS userStatus,e.companystartdate AS hiredate, e.enddate as dimissionDate, social.siSchemeId, - social.paymentOrganization, + base.payment_organization AS paymentOrganization, fund.fundSchemeId, other.otherSchemeId - FROM hrmresource e + FROM hrsa_insurance_base_info base + LEFT JOIN hrmresource e ON base.employee_id = e.id LEFT JOIN hrmdepartment d ON e.departmentid = d.ID LEFT JOIN hrmsubcompany c ON c.id = e.subcompanyid1 LEFT JOIN( SELECT social.employee_id, social.social_scheme_id AS siSchemeId, social.payment_organization AS paymentOrganization FROM hrsa_social_archives social WHERE social.delete_type = 0 )social ON e.id = social.employee_id @@ -307,6 +308,7 @@ LEFT JOIN( SELECT other.employee_id, other.other_scheme_id AS otherSchemeId FROM hrsa_other_archives other WHERE other.delete_type = 0 )other ON e.id = other.employee_id WHERE 1=1 + AND base.delete_type = 0 ORDER BY ${param.orderRule.orderRule} ${param.orderRule.ascOrDesc} @@ -367,6 +369,13 @@ AND otherSchemeId = #{param.otherSchemeId} + + AND base.run_status IN + + #{param.runStatus} + + + AND e.ID IN @@ -427,6 +436,12 @@ AND otherSchemeId = #{param.otherSchemeId} + + AND base.run_status IN + + #{runStatus} + + AND e.ID IN @@ -488,6 +503,12 @@ AND otherSchemeId = #{param.otherSchemeId} + + AND base.run_status IN + + #{param.runStatus} + + AND e.ID IN diff --git a/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java b/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java index 6370d4246..8847501b1 100644 --- a/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java +++ b/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java @@ -479,6 +479,8 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa // 新增考勤值数据 if (CollectionUtils.isNotEmpty(values)) { log.info("考勤数据:{}", values); + //去除空值 + values = values.stream().filter(po->StringUtils.isNotBlank(po.getDataValue())).collect(Collectors.toList()); dataValueBiz.insertData(values); } } diff --git a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java index f34ff5f41..16948bd02 100644 --- a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java @@ -95,7 +95,6 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService @Override public Map listPage(InsuranceArchivesListParam param) { long currentEmployeeId = user.getUID(); - //排序配置 OrderRuleVO orderRule = getSalarySysConfService(user).orderRule(); param.setOrderRule(orderRule); @@ -113,6 +112,7 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService Map apidatas = new HashMap<>(16); SIArchivesBiz siArchivesBiz = new SIArchivesBiz(); apidatas = siArchivesBiz.listPage(param, (long) user.getUID()); + return apidatas; } diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index 30909877a..24beb1030 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -10,6 +10,7 @@ import com.engine.salary.biz.EmployBiz; import com.engine.salary.biz.SIArchivesBiz; import com.engine.salary.biz.SISchemeBiz; import com.engine.salary.cmd.sischeme.*; +import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.encrypt.AESEncryptUtil; import com.engine.salary.encrypt.siarchives.InsuranceArchivesFundSchemePOEncrypt; import com.engine.salary.encrypt.siarchives.InsuranceArchivesOtherSchemePOEncrypt; @@ -28,8 +29,10 @@ import com.engine.salary.entity.taxagent.dto.TaxAgentEmployeeDTO; import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.UserStatusEnum; +import com.engine.salary.enums.siaccount.EmployeeStatusEnum; import com.engine.salary.enums.sicategory.*; import com.engine.salary.mapper.siarchives.FundSchemeMapper; +import com.engine.salary.mapper.siarchives.InsuranceBaseInfoMapper; import com.engine.salary.mapper.siarchives.OtherSchemeMapper; import com.engine.salary.mapper.siarchives.SocialSchemeMapper; import com.engine.salary.mapper.sicategory.ICategoryMapper; @@ -132,6 +135,11 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { private SalarySysConfService getSalarySysConfService(User user) { return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); } + + private InsuranceBaseInfoMapper getInsuranceBaseInfoMapper() { + return MapperProxyFactory.getProxy(InsuranceBaseInfoMapper.class); + } + @Override public Map getForm(Map params) { return commandExecutor.execute(new SISchemeGetFormCmd(params, user)); @@ -745,6 +753,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { InsuranceArchivesSocialSchemePO insuranceArchivesSocialSchemePO = null; InsuranceArchivesFundSchemePO insuranceArchivesFundSchemePO = null; InsuranceArchivesOtherSchemePO insuranceArchivesOtherSchemePO = null; + Map socialMap = findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91323, "社保方案名称")); Map paymentMap = findElement(singleAccount, SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人")); Map fundMap = findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91485, "公积金方案名称")); @@ -889,11 +898,13 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { isError = true; } } - + //生成福利档案基础信息数据 + InsuranceArchivesBaseInfoPO insuranceArchivesBaseInfoPO = buildBaseInfoPO(employeeId, singleAccount, paymentNameIdMap, creator); if (!isError) { insuranceArchivesAccountPO.setSocial(insuranceArchivesSocialSchemePO); insuranceArchivesAccountPO.setFund(insuranceArchivesFundSchemePO); insuranceArchivesAccountPO.setOther(insuranceArchivesOtherSchemePO); + insuranceArchivesAccountPO.setBaseInfo(insuranceArchivesBaseInfoPO); insuranceArchivesAccountPOS.add(insuranceArchivesAccountPO); } return isError; @@ -1056,6 +1067,24 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { return insuranceArchivesOtherSchemePO; } + public InsuranceArchivesBaseInfoPO buildBaseInfoPO(Long employeeId, List> singleAccount, Map paymentNameIdMap, Long creator) { + if (employeeId == null) { + return null; + } + InsuranceArchivesBaseInfoPO insuranceArchivesBaseInfoPO = new InsuranceArchivesBaseInfoPO(); + insuranceArchivesBaseInfoPO.setEmployeeId(employeeId); + insuranceArchivesBaseInfoPO.setId(IdGenerator.generate()); + insuranceArchivesBaseInfoPO.setCreateTime(new Date()); + insuranceArchivesBaseInfoPO.setDeleteType(0); + insuranceArchivesBaseInfoPO.setCreator(creator); + insuranceArchivesBaseInfoPO.setRunStatus(EmployeeStatusEnum.PAYING.getValue()); + insuranceArchivesBaseInfoPO.setUpdateTime(new Date()); + insuranceArchivesBaseInfoPO.setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY); + insuranceArchivesBaseInfoPO.setPaymentOrganization(paymentNameIdMap.get((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91497, "个税扣缴义务人")).get(SalaryI18nUtil.getI18nLabel(91497, "个税扣缴义务人")))); + + return insuranceArchivesBaseInfoPO; + } + public void handleImportData(List insuranceArchivesAccountPOS) { //导入社保档案 List socialSchemePOS = insuranceArchivesAccountPOS.stream().filter(Objects::nonNull).map(InsuranceArchivesAccountPO::getSocial).collect(Collectors.toList()); @@ -1090,6 +1119,29 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { List> partition = Lists.partition(insuranceArchivesOtherSchemePOS, 100); partition.forEach(getOtherSchemeMapper()::batchSave); } + //导入福利档案基础信息 + List baseInfoPOS = insuranceArchivesAccountPOS.stream().filter(Objects::nonNull).map(InsuranceArchivesAccountPO::getBaseInfo).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(baseInfoPOS)) { + baseInfoPOS = baseInfoPOS.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(InsuranceArchivesBaseInfoPO::getEmployeeId))), ArrayList::new)); + //分批批量删除 + List baseInfoEmployeeIds = baseInfoPOS.stream().map(InsuranceArchivesBaseInfoPO::getEmployeeId).collect(Collectors.toList()); + List> employeeIdPartition = Lists.partition(baseInfoEmployeeIds, 100); + employeeIdPartition.forEach(getInsuranceBaseInfoMapper()::batchDeleteByEmployeeIds); + //查询目标人员的剩余的福利档案基础信息(社保、公积金、其他福利档案id) + List moreBaseInfoPOS = getInsuranceBaseInfoMapper().getInsuranceBaseInfoListByInsuranceDetail(baseInfoEmployeeIds); + List newInsuranceArchivesBaseInfoList = new ArrayList<>(); + //设置社保、公积金、其他福利档案id + for (InsuranceArchivesBaseInfoPO po : baseInfoPOS) { + InsuranceArchivesBaseInfoPO moreBaseInfo = moreBaseInfoPOS.stream().filter(s -> Objects.equals(s.getEmployeeId(), po.getEmployeeId())).findFirst().orElse(null); + po.setSocialArchivesId(moreBaseInfo.getSocialArchivesId()); + po.setFundArchivesId(moreBaseInfo.getFundArchivesId()); + po.setOtherArchivesId(moreBaseInfo.getOtherArchivesId()); + newInsuranceArchivesBaseInfoList.add(po); + } + //分批批量入库 + List> partition = Lists.partition(newInsuranceArchivesBaseInfoList, 100); + partition.forEach(getInsuranceBaseInfoMapper()::batchSave); + } } diff --git a/src/com/engine/salary/web/SISchemeController.java b/src/com/engine/salary/web/SISchemeController.java index edbbd0e01..f30501eac 100644 --- a/src/com/engine/salary/web/SISchemeController.java +++ b/src/com/engine/salary/web/SISchemeController.java @@ -174,6 +174,11 @@ public class SISchemeController { if(StringUtils.isNotBlank(ids)){ param.setEmployeeIds( Arrays.stream(ids.split(",")).map(Long::valueOf).collect(Collectors.toList())); } + + String runStatuses = request.getParameter("runStatuses"); + if(StringUtils.isNotBlank(runStatuses)){ + param.setRunStatuses( Arrays.stream(runStatuses.split(",")).map(String::valueOf).collect(Collectors.toList())); + } User user = HrmUserVarify.getUser(request, response); XSSFWorkbook workbook = getService(user).export(param); String fileName = null;