From 0000e5243391b97c3e4036386dd6cdecd5fea24b Mon Sep 17 00:00:00 2001 From: sy Date: Mon, 24 Oct 2022 14:12: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=E6=94=B9=E9=80=A0=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E9=87=8F=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E8=B0=83=E6=95=B4=EF=BC=8C=E5=AF=B9=E5=B7=B2=E6=9C=89=E5=85=B6?= =?UTF-8?q?=E4=BB=96=E4=B8=AA=E7=A8=8E=E6=89=A3=E7=BC=B4=E4=B9=89=E5=8A=A1?= =?UTF-8?q?=E4=BA=BA=E7=9A=84=E5=91=98=E5=B7=A5=E7=A6=8F=E5=88=A9=E6=A1=A3?= =?UTF-8?q?=E6=A1=88=EF=BC=8C=E4=B8=8D=E8=BF=9B=E8=A1=8C=E5=A2=9E=E9=87=8F?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../siarchives/bo/InsuranceArchivesBaseInfoBO.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) 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());