From e80a3497d94e572d9d292e7b57c8eedce2273afc Mon Sep 17 00:00:00 2001 From: sy Date: Tue, 17 Oct 2023 11:40:28 +0800 Subject: [PATCH] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-=E7=A6=8F?= =?UTF-8?q?=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E7=A6=8F=E5=88=A9=E6=A1=A3?= =?UTF-8?q?=E6=A1=88=E5=AF=BC=E5=85=A5=E9=80=BB=E8=BE=91=E4=B8=AD=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=9F=BA=E6=95=B0=E8=B0=83=E6=95=B4=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIArchivesBiz.java | 154 +++++++++++++++++- ...InsuranceArchivesBaseAdjustHistoryDTO.java | 103 ++++++++++++ .../InsuranceArchivesBaseAdjustHistoryPO.java | 98 +++++++++++ .../InsuranceBaseAdjustHistoryMapper.java | 24 +++ .../InsuranceBaseAdjustHistoryMapper.xml | 137 ++++++++++++++++ .../service/impl/SISchemeServiceImpl.java | 46 ++++-- 6 files changed, 536 insertions(+), 26 deletions(-) create mode 100644 src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesBaseAdjustHistoryDTO.java create mode 100644 src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseAdjustHistoryPO.java create mode 100644 src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.java create mode 100644 src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index c03ef2a39..f670de0e0 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -18,10 +18,7 @@ import com.engine.salary.encrypt.AESEncryptUtil; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.siarchives.bo.InsuranceArchivesBO; -import com.engine.salary.entity.siarchives.dto.InsuranceArchivesBaseDTO; -import com.engine.salary.entity.siarchives.dto.InsuranceArchivesFundSchemeDTO; -import com.engine.salary.entity.siarchives.dto.InsuranceArchivesOtherSchemeDTO; -import com.engine.salary.entity.siarchives.dto.InsuranceArchivesSocialSchemeDTO; +import com.engine.salary.entity.siarchives.dto.*; import com.engine.salary.entity.siarchives.param.*; import com.engine.salary.entity.siarchives.po.*; import com.engine.salary.entity.sicategory.po.ICategoryPO; @@ -33,10 +30,7 @@ import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; 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.siarchives.*; import com.engine.salary.mapper.sicategory.ICategoryMapper; import com.engine.salary.mapper.sischeme.InsuranceSchemeDetailMapper; import com.engine.salary.mapper.sischeme.InsuranceSchemeMapper; @@ -58,6 +52,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.ibatis.session.SqlSession; +import org.springframework.beans.BeanUtils; import org.springframework.util.StopWatch; import weaver.conn.mybatis.MyBatisFactory; import weaver.general.Util; @@ -1822,4 +1817,147 @@ public class SIArchivesBiz { } return getInsuranceBaseInfoMapper().listEndDateIsNull(employeeIds); } + + public List dealSocialBaseAdjustInfoList(List adjustList) { + List adjustHistoryList = new ArrayList<>(); + if (adjustList.size() > 0) { + for (InsuranceArchivesSocialSchemePO po : adjustList) { + List oldBaseInfoList = getSocialSchemeMapper().getSocialByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO.builder() + .paymentOrganization(po.getPaymentOrganization()).employeeId(po.getEmployeeId()).build()); + + InsuranceArchivesBaseAdjustHistoryDTO adjustInfo = InsuranceArchivesBaseAdjustHistoryDTO.builder() + .adjustAfterSchemeId(po.getSocialSchemeId()) + .adjustAfterBaseJson(po.getSocialPaymentBaseString()) + .welfareType(po.getWelfareType()) + .employeeId(po.getEmployeeId()) + .paymentOrganization(po.getPaymentOrganization()) + .build(); + if (oldBaseInfoList.size() == 1) { + //新增调整记录,变更 + InsuranceArchivesSocialSchemePO oldBaseInfo = oldBaseInfoList.get(0); + adjustInfo.setAdjustBeforeBaseJson(oldBaseInfo.getSocialPaymentBaseString()); + adjustInfo.setAdjustBeforeSchemeId(oldBaseInfo.getSocialSchemeId()); + } else if (oldBaseInfoList.size() > 1) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"社保档案存在冗余数据!")); + } + adjustHistoryList.addAll(createAdjustInfo(adjustInfo)); + } + } + return adjustHistoryList; + + } + public List dealFundBaseAdjustInfoList(List adjustList) { + List adjustHistoryList = new ArrayList<>(); + if (adjustList.size() > 0) { + for (InsuranceArchivesFundSchemePO po : adjustList) { + List oldBaseInfoList = getFundSchemeMapper().getFundByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO.builder() + .paymentOrganization(po.getPaymentOrganization()).employeeId(po.getEmployeeId()).build()); + + InsuranceArchivesBaseAdjustHistoryDTO adjustInfo = InsuranceArchivesBaseAdjustHistoryDTO.builder() + .adjustAfterSchemeId(po.getFundSchemeId()) + .adjustAfterBaseJson(po.getFundPaymentBaseString()) + .welfareType(po.getWelfareType()) + .employeeId(po.getEmployeeId()) + .paymentOrganization(po.getPaymentOrganization()) + .build(); + if (oldBaseInfoList.size() == 1) { + //新增调整记录,变更 + InsuranceArchivesFundSchemePO oldBaseInfo = oldBaseInfoList.get(0); + adjustInfo.setAdjustBeforeBaseJson(oldBaseInfo.getFundPaymentBaseString()); + adjustInfo.setAdjustBeforeSchemeId(oldBaseInfo.getFundSchemeId()); + } else if (oldBaseInfoList.size() > 1) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"公积金档案存在冗余数据!")); + } + adjustHistoryList.addAll(createAdjustInfo(adjustInfo)); + } + } + return adjustHistoryList; + } + public List dealOtherBaseAdjustInfoList(List adjustList) { + List adjustHistoryList = new ArrayList<>(); + if (adjustList.size() > 0) { + for (InsuranceArchivesOtherSchemePO po : adjustList) { + List oldBaseInfoList = getOtherSchemeMapper().getOtherByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO.builder() + .paymentOrganization(po.getPaymentOrganization()).employeeId(po.getEmployeeId()).build()); + + InsuranceArchivesBaseAdjustHistoryDTO adjustInfo = InsuranceArchivesBaseAdjustHistoryDTO.builder() + .adjustAfterSchemeId(po.getOtherSchemeId()) + .adjustAfterBaseJson(po.getOtherPaymentBaseString()) + .welfareType(po.getWelfareType()) + .employeeId(po.getEmployeeId()) + .paymentOrganization(po.getPaymentOrganization()) + .build(); + if (oldBaseInfoList.size() == 1) { + //新增调整记录,变更 + InsuranceArchivesOtherSchemePO oldBaseInfo = oldBaseInfoList.get(0); + adjustInfo.setAdjustBeforeBaseJson(oldBaseInfo.getOtherPaymentBaseString()); + adjustInfo.setAdjustBeforeSchemeId(oldBaseInfo.getOtherSchemeId()); + } else if (oldBaseInfoList.size() > 1) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"其他福利档案存在冗余数据!")); + } + adjustHistoryList.addAll(createAdjustInfo(adjustInfo)); + } + } + return adjustHistoryList; + } + + public List createAdjustInfo(InsuranceArchivesBaseAdjustHistoryDTO adjustInfo) { + List toCreateAdjustHistoryList = new ArrayList<>(); + if(adjustInfo.getAdjustAfterBaseJson() != null && adjustInfo.getAdjustBeforeBaseJson() == null) { + Map adjustAfterBaseMap = JSON.parseObject(adjustInfo.getAdjustAfterBaseJson(), new TypeReference>() { + }); + for (String key : adjustAfterBaseMap.keySet()) { + InsuranceArchivesBaseAdjustHistoryPO adjustItem = new InsuranceArchivesBaseAdjustHistoryPO(); + BeanUtils.copyProperties(adjustInfo, adjustItem); + adjustItem.setAdjustWelfareItemId(Long.valueOf(key)); + adjustItem.setAdjustAfterBaseValue((String) adjustAfterBaseMap.get(key)); + + toCreateAdjustHistoryList.add(adjustItem); + } + } else if (adjustInfo.getAdjustAfterBaseJson() != null && adjustInfo.getAdjustBeforeBaseJson() != null) { + Map adjustAfterBaseMap = JSON.parseObject(adjustInfo.getAdjustAfterBaseJson(), new TypeReference>() { + }); + Map adjustBeforeBaseMap = JSON.parseObject(adjustInfo.getAdjustBeforeBaseJson(), new TypeReference>() { + }); + Map reDealMap = new HashMap<>(); + reDealMap.putAll(adjustAfterBaseMap); + reDealMap.putAll(adjustBeforeBaseMap); + for (String key : reDealMap.keySet()) { + String beforeValue = (String) adjustBeforeBaseMap.get(key); + String afterValue = (String) adjustAfterBaseMap.get(key); + if (SalaryEntityUtil.empty2Zero(beforeValue).compareTo(SalaryEntityUtil.empty2Zero(afterValue)) == 0) { + continue; + } + InsuranceArchivesBaseAdjustHistoryPO adjustItem = new InsuranceArchivesBaseAdjustHistoryPO(); + BeanUtils.copyProperties(adjustInfo, adjustItem); + adjustItem.setAdjustWelfareItemId(Long.valueOf(key)); + adjustItem.setAdjustBeforeBaseValue(beforeValue); + adjustItem.setAdjustAfterBaseValue(afterValue); + + toCreateAdjustHistoryList.add(adjustItem); + } + } + return toCreateAdjustHistoryList; + } + + /** + * 新增福利档案基数调整记录 + * + */ + public void batchInsertAdjustHistory(List adjustHistoryList, long employeeId) { + + if (CollectionUtils.isEmpty(adjustHistoryList)) { + return; + } + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); + try { + InsuranceBaseAdjustHistoryMapper mapper = sqlSession.getMapper(InsuranceBaseAdjustHistoryMapper.class); + List> partition = Lists.partition(adjustHistoryList, 100); + partition.forEach(mapper::batchSave); + sqlSession.commit(); + } finally { + sqlSession.close(); + } + } + } diff --git a/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesBaseAdjustHistoryDTO.java b/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesBaseAdjustHistoryDTO.java new file mode 100644 index 000000000..6fa8e96ab --- /dev/null +++ b/src/com/engine/salary/entity/siarchives/dto/InsuranceArchivesBaseAdjustHistoryDTO.java @@ -0,0 +1,103 @@ +package com.engine.salary.entity.siarchives.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * @Author: sy + * @Description: + * @Date: 2023/10/16 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class InsuranceArchivesBaseAdjustHistoryDTO { + + /** + * id + */ + private Long id; + + /** + * Աid + */ + private Long employeeId; + + /** + * ˰۽id + */ + private Long paymentOrganization; + + /** + * + */ + private Integer welfareType; + + /** + * ǰid + */ + private Long adjustBeforeSchemeId; + /** + * 󷽰id + */ + private Long adjustAfterSchemeId; + /** + * ǰֵ + */ + private String adjustBeforeBaseValue; + /** + * ֵ + */ + private String adjustAfterBaseValue; + + /** + * id + */ + private Long adjustWelfareItemId; + + /** + * + */ + private Long operator; + + /** + * ʱ + */ + private Date operateTime; + + /** + * ⻧key + */ + private String tenantKey; + + /** + * id + */ + private Long creator; + + /** + * Ƿɾ + */ + private Integer deleteType; + + /** + * ʱ + */ + private Date createTime; + + /** + * ʱ + */ + private Date updateTime; + + + private String adjustBeforeBaseJson; + + private String adjustAfterBaseJson; + +} diff --git a/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseAdjustHistoryPO.java b/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseAdjustHistoryPO.java new file mode 100644 index 000000000..1c78296b2 --- /dev/null +++ b/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseAdjustHistoryPO.java @@ -0,0 +1,98 @@ +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: 2023/10/16 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//hrsa_insurance_base_adjust_history +public class InsuranceArchivesBaseAdjustHistoryPO { + + /** + * id + */ + private Long id; + + /** + * Աid + */ + private Long employeeId; + + /** + * ˰۽id + */ + private Long paymentOrganization; + + /** + * + */ + private Integer welfareType; + + /** + * ǰid + */ + private Long adjustBeforeSchemeId; + /** + * 󷽰id + */ + private Long adjustAfterSchemeId; + /** + * ǰֵ + */ + private String adjustBeforeBaseValue; + /** + * ֵ + */ + private String adjustAfterBaseValue; + + /** + * id + */ + private Long adjustWelfareItemId; + + /** + * + */ + private Long operator; + + /** + * ʱ + */ + private Date operateTime; + + /** + * ⻧key + */ + private String tenantKey; + + /** + * id + */ + private Long creator; + + /** + * Ƿɾ + */ + private Integer deleteType; + + /** + * ʱ + */ + private Date createTime; + + /** + * ʱ + */ + private Date updateTime; +} diff --git a/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.java b/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.java new file mode 100644 index 000000000..412c7655c --- /dev/null +++ b/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.java @@ -0,0 +1,24 @@ +package com.engine.salary.mapper.siarchives; + +import com.engine.salary.entity.siarchives.po.InsuranceArchivesBaseAdjustHistoryPO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Author sy + * @Date 2023/10/16 + **/ +public interface InsuranceBaseAdjustHistoryMapper { + + /** + * + */ + void batchSave(@Param("infos") List infos); + + /** + * ݸ˰۽˺Աidȡ¼ + */ + List listByEmployeeIdAndPayOrg(@Param("paymentOrganization")Long paymentOrganization, @Param("employeeId")Long employeeId); + +} diff --git a/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml b/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml new file mode 100644 index 000000000..25cd391ed --- /dev/null +++ b/src/com/engine/salary/mapper/siarchives/InsuranceBaseAdjustHistoryMapper.xml @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + t.id + , t.employee_id + , t.payment_organization + , t.adjust_before_scheme_id + , t.adjust_after_scheme_id + , t.adjust_before_base_value + , t.adjust_after_base_value + , t.adjust_welfare_item_id + , t.operator + , t.operate_time + , t.create_time + , t.update_time + , t.creator + , t.delete_type + , t.tenant_key + + + + INSERT INTO hrsa_insurance_base_adjust_history + (id,employee_id,payment_organization, + adjust_before_scheme_id,adjust_after_scheme_id, + adjust_before_base_value,adjust_after_base_value, + adjust_welfare_item_id,operator,operate_time, + tenant_key,creator,delete_type,create_time,update_time) + VALUES + + ( + #{item.id}, + #{item.employeeId}, + #{item.paymentOrganization}, + #{item.adjustBeforeSchemeId}, + #{item.adjustAfterSchemeId}, + #{item.adjustBeforeBaseValue}, + #{item.adjustAfterBaseValue}, + #{item.adjustWelfareItemId}, + #{item.operator}, + #{item.operateTime}, + #{item.tenantKey}, + #{item.creator}, + #{item.deleteType}, + #{item.createTime}, + #{item.updateTime} + ) + + + + INSERT INTO hrsa_insurance_base_adjust_history + (id,employee_id,payment_organization, + adjust_before_scheme_id,adjust_after_scheme_id, + adjust_before_base_value,adjust_after_base_value, + adjust_welfare_item_id,operator,operate_time, + tenant_key,creator,delete_type,create_time,update_time) + + select + #{item.id,jdbcType=DOUBLE}, + #{item.employeeId,jdbcType=DOUBLE}, + #{item.paymentOrganization,jdbcType=DOUBLE}, + #{item.adjustBeforeSchemeId,jdbcType=DOUBLE}, + #{item.adjustAfterSchemeId,jdbcType=DOUBLE}, + #{item.adjustBeforeBaseValue,jdbcType=VARCHAR}, + #{item.adjustAfterBaseValue,jdbcType=VARCHAR}, + #{item.adjustWelfareItemId,jdbcType=DOUBLE}, + #{item.operator,jdbcType=DOUBLE}, + #{item.operateTime}, + #{item.tenantKey,jdbcType=VARCHAR}, + #{item.creator,jdbcType=DOUBLE}, + #{item.deleteType}, + #{item.createTime}, + #{item.updateTime} + from dual + + + + + INSERT INTO hrsa_insurance_base_adjust_history + (id,employee_id,payment_organization, + adjust_before_scheme_id,adjust_after_scheme_id, + adjust_before_base_value,adjust_after_base_value, + adjust_welfare_item_id,operator,operate_time, + tenant_key,creator,delete_type,create_time,update_time) + VALUES + ( + #{item.id}, + #{item.employeeId}, + #{item.paymentOrganization}, + #{item.adjustBeforeSchemeId}, + #{item.adjustAfterSchemeId}, + #{item.adjustBeforeBaseValue}, + #{item.adjustAfterBaseValue}, + #{item.adjustWelfareItemId}, + #{item.operator}, + #{item.operateTime}, + #{item.tenantKey}, + #{item.creator}, + #{item.deleteType}, + #{item.createTime}, + #{item.updateTime} + ) + + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index 205c9d459..a807040d8 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -1379,53 +1379,63 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { //导入社保档案 List socialSchemePOS = insuranceArchivesAccountPOS.stream().filter(Objects::nonNull).map(InsuranceArchivesAccountPO::getSocial).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(socialSchemePOS)) { -// socialSchemePOS = socialSchemePOS.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(InsuranceArchivesSocialSchemePO::getEmployeeId))), ArrayList::new)); - //根据人员id和个税扣缴义务人id删除对应档案 - socialSchemePOS.forEach(getSocialSchemeMapper()::deleteByEmployeeIdAndPayOrg); -// List socialEmployeeIds = socialSchemePOS.stream().map(InsuranceArchivesSocialSchemePO::getEmployeeId).collect(Collectors.toList()); -// List> socialEmployeeIdPartition = Lists.partition(socialEmployeeIds, 100); -// socialEmployeeIdPartition.forEach(getSocialSchemeMapper()::batchDeleteByEmployeeIds); + //去除员工id+个税扣缴义务人下重复的数据 socialSchemePOS = socialSchemePOS.stream() .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(f -> f.getPaymentOrganization() + "-" + f.getEmployeeId()))), ArrayList::new)); + //生成福利档案基数调整历史记录 + List adjustSocialHistoryPOList = siArchivesBiz.dealSocialBaseAdjustInfoList(socialSchemePOS); + + //根据人员id和个税扣缴义务人id删除对应旧档案 + socialSchemePOS.forEach(getSocialSchemeMapper()::deleteByEmployeeIdAndPayOrg); + + //新建新档案 List insuranceArchivesSocialSchemePOS = encryptUtil.encryptList(socialSchemePOS, InsuranceArchivesSocialSchemePO.class); List> partition = Lists.partition(insuranceArchivesSocialSchemePOS, 100); partition.forEach(getSocialSchemeMapper()::batchSave); + + //新建福利档案基数调整历史记录 + siArchivesBiz.batchInsertAdjustHistory(adjustSocialHistoryPOList, user.getUID()); } //导入公积金档案 List fundSchemePOS = insuranceArchivesAccountPOS.stream().filter(Objects::nonNull).map(InsuranceArchivesAccountPO::getFund).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(fundSchemePOS)) { -// fundSchemePOS = fundSchemePOS.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(InsuranceArchivesFundSchemePO::getEmployeeId))), ArrayList::new)); - //根据人员id和个税扣缴义务人id删除对应档案 - fundSchemePOS.forEach(getFundSchemeMapper()::deleteByEmployeeIdAndPayOrg); -// List fundEmployeeIds = fundSchemePOS.stream().map(InsuranceArchivesFundSchemePO::getEmployeeId).collect(Collectors.toList()); -// List> fundEmployeeIdsPartition = Lists.partition(fundEmployeeIds, 100); -// fundEmployeeIdsPartition.forEach(getFundSchemeMapper()::batchDeleteByEmployeeIds); + //去除员工id+个税扣缴义务人下重复的数据 fundSchemePOS = fundSchemePOS.stream() .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(f -> f.getPaymentOrganization() + "-" + f.getEmployeeId()))), ArrayList::new)); + //生成福利档案基数调整历史记录 + List adjustFundHistoryPOList = siArchivesBiz.dealFundBaseAdjustInfoList(fundSchemePOS); + //根据人员id和个税扣缴义务人id删除对应档案 + fundSchemePOS.forEach(getFundSchemeMapper()::deleteByEmployeeIdAndPayOrg); + //新建新档案 List insuranceArchivesFundSchemePOS = encryptUtil.encryptList(fundSchemePOS, InsuranceArchivesFundSchemePO.class); List> partition = Lists.partition(insuranceArchivesFundSchemePOS, 100); partition.forEach(getFundSchemeMapper()::batchSave); + //新建福利档案基数调整历史记录 + siArchivesBiz.batchInsertAdjustHistory(adjustFundHistoryPOList, user.getUID()); } //导入其他福利档案 List otherSchemePOS = insuranceArchivesAccountPOS.stream().filter(Objects::nonNull).map(InsuranceArchivesAccountPO::getOther).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(otherSchemePOS)) { -// otherSchemePOS = otherSchemePOS.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(InsuranceArchivesOtherSchemePO::getEmployeeId))), ArrayList::new)); - //根据人员id和个税扣缴义务人id删除对应档案 - otherSchemePOS.forEach(getOtherSchemeMapper()::deleteByEmployeeIdAndPayOrg); -// List otherEmployeeIds = otherSchemePOS.stream().map(InsuranceArchivesOtherSchemePO::getEmployeeId).collect(Collectors.toList()); -// List> otherEmployeeIdsPartition = Lists.partition(otherEmployeeIds, 100); -// otherEmployeeIdsPartition.forEach(getOtherSchemeMapper()::batchDeleteByEmployeeIds); + //去除员工id+个税扣缴义务人下重复的数据 otherSchemePOS = otherSchemePOS.stream() .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(f -> f.getPaymentOrganization() + "-" + f.getEmployeeId()))), ArrayList::new)); + //生成福利档案基数调整历史记录 + List adjustOtherHistoryPOList = siArchivesBiz.dealOtherBaseAdjustInfoList(otherSchemePOS); + + //根据人员id和个税扣缴义务人id删除对应档案 + otherSchemePOS.forEach(getOtherSchemeMapper()::deleteByEmployeeIdAndPayOrg); + //新建新档案 List insuranceArchivesOtherSchemePOS = encryptUtil.encryptList(otherSchemePOS, InsuranceArchivesOtherSchemePO.class); List> partition = Lists.partition(insuranceArchivesOtherSchemePOS, 100); partition.forEach(getOtherSchemeMapper()::batchSave); + //新建福利档案基数调整历史记录 + siArchivesBiz.batchInsertAdjustHistory(adjustOtherHistoryPOList, user.getUID()); } //导入福利档案基础信息 List baseInfoPOS = insuranceArchivesAccountPOS.stream().filter(Objects::nonNull).map(InsuranceArchivesAccountPO::getBaseInfo).collect(Collectors.toList());