diff --git a/src/com/engine/salary/entity/siarchives/bo/InsuranceArchivesBaseInfoBO.java b/src/com/engine/salary/entity/siarchives/bo/InsuranceArchivesBaseInfoBO.java index 3e1af315a..5e26eb095 100644 --- a/src/com/engine/salary/entity/siarchives/bo/InsuranceArchivesBaseInfoBO.java +++ b/src/com/engine/salary/entity/siarchives/bo/InsuranceArchivesBaseInfoBO.java @@ -55,17 +55,20 @@ public class InsuranceArchivesBaseInfoBO { Map insuranceArchivesBaseInfoListMap = SalaryEntityUtil.convert2Map(insuranceArchivesBaseInfoList, k -> k.getPaymentOrganization() + "-" + k.getEmployeeId()); taxAgentEmpChanges.forEach(change -> { + //以人员id筛选出侧面比较的档案数据,避免存在当前个税扣缴义务人外的该人员档案数据 + List moreBaseInfos = insuranceArchivesBaseInfoList.stream().filter(f -> f.getEmployeeId().equals(change.getEmployeeId())).collect(Collectors.toList()); + //以个税扣缴义务人和人员id为条件筛选当前数据直接对比的档案数据 InsuranceArchivesBaseInfoPO insuranceBaseInfo = insuranceArchivesBaseInfoListMap.get(change.getTaxAgentId() + "-" + change.getEmployeeId()); // 如果是新增 说明:如果没有档案,则新增,如果有档案而且是停止缴纳,就转移到待增员中,以个税扣缴义务人和人员id判断唯一 if (change.getChangeType() == TaxAgentEmpChangeTypeEnum.ADD.getValue()) { - if (insuranceBaseInfo != null) { + if (insuranceBaseInfo != null && moreBaseInfos.size() == 1) { // 停止缴纳->待增员 if (insuranceBaseInfo.getRunStatus().equals(EmployeeStatusEnum.STOP_PAYMENT_FROM_DEL.getValue()) || insuranceBaseInfo.getRunStatus().equals(EmployeeStatusEnum.STOP_PAYMENT_FROM_ADD.getValue())) { insuranceBaseInfo.setRunStatus(EmployeeStatusEnum.STAY_ADD.getValue()); insuranceBaseInfo.setUpdateTime(now); baseInfoUpdateTodoList.add(insuranceBaseInfo); } - } else { + } else if (insuranceBaseInfo == null && moreBaseInfos.size() == 0) { //新增社保、公积金、其他福利档案 // 新增基础信息 baseInfoAddTodoList.add(InsuranceArchivesBaseInfoPO.builder() @@ -82,7 +85,7 @@ public class InsuranceArchivesBaseInfoBO { } // 如果是删除 说明:如果有档案并且是在缴纳中才处理,没档案不用管 } else if (change.getChangeType() == TaxAgentEmpChangeTypeEnum.DEL.getValue()) { - if (insuranceBaseInfo != null) { + if (insuranceBaseInfo != null && moreBaseInfos.size() == 1) { if (insuranceBaseInfo.getRunStatus().equals(EmployeeStatusEnum.PAYING.getValue())) { // 正在缴纳->待减员 insuranceBaseInfo.setRunStatus(EmployeeStatusEnum.STAY_DEL.getValue());