From be59482fc889227fd051fcd26585421690e7940e Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Sat, 8 Feb 2025 11:28:36 +0800 Subject: [PATCH] =?UTF-8?q?fix=E7=A4=BE=E4=BF=9D=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E5=8F=B0=E8=B4=A6=E6=A0=B8=E7=AE=97=E4=BA=BA=E5=91=98bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../siaccount/SIAccountDetailTempMapper.java | 2 + .../siaccount/SIAccountDetailTempMapper.xml | 8 +++ .../service/impl/SIAccountServiceImpl.java | 64 ++++++++++--------- 3 files changed, 45 insertions(+), 29 deletions(-) diff --git a/src/com/engine/salary/mapper/siaccount/SIAccountDetailTempMapper.java b/src/com/engine/salary/mapper/siaccount/SIAccountDetailTempMapper.java index 75fbefcaa..7a470a222 100644 --- a/src/com/engine/salary/mapper/siaccount/SIAccountDetailTempMapper.java +++ b/src/com/engine/salary/mapper/siaccount/SIAccountDetailTempMapper.java @@ -28,6 +28,8 @@ public interface SIAccountDetailTempMapper { */ void batchDelByEmpIdsAndMonthAndPayOrg(@Param("employeeIds") Collection employeeIds, @Param("billMonth") String billMonth, @Param("paymentOrganization") Long paymentOrganization); + void batchDelByMonthAndPayOrg(@Param("billMonth") String billMonth, @Param("paymentOrganization") Long paymentOrganization); + /** * 批量保存 * @param accounts diff --git a/src/com/engine/salary/mapper/siaccount/SIAccountDetailTempMapper.xml b/src/com/engine/salary/mapper/siaccount/SIAccountDetailTempMapper.xml index ca12fe478..a5fa46fca 100644 --- a/src/com/engine/salary/mapper/siaccount/SIAccountDetailTempMapper.xml +++ b/src/com/engine/salary/mapper/siaccount/SIAccountDetailTempMapper.xml @@ -139,6 +139,14 @@ + + UPDATE hrsa_bill_detail_temp + SET delete_type = 1 + WHERE delete_type = 0 + AND bill_month = #{billMonth} + AND payment_organization = #{paymentOrganization} + + INSERT INTO hrsa_bill_detail_temp diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index c64e4e6fe..6c1a30028 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -5073,7 +5073,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { // Map insuranceArchivesAccountPOS = siArchivesBiz.buildBatchAccount(ids, paymentOrganization); Map insuranceArchivesAccountPOS = getSIArchivesService(user).buildBatchAccount(ids, paymentOrganization); List historyDetailData = new ArrayList<>(); - List employeeList = new ArrayList<>(); + List employeeList = getSalaryEmployeeService(user).listByIds(ids); if (!isFirstFlag) { // 不是首次核算,需要把社保历史数据取出 List> partition = Lists.partition(ids, 100); @@ -5081,8 +5081,6 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { historyDetailData.addAll(getInsuranceAccountDetailMapper().list(InsuranceAccountDetailParam.builder().billMonth(billMonth).paymentOrganization(paymentOrganization.toString()).employeeIds(part).build())); historyDetailData.addAll(getInsuranceAccountDetailMapper().extList(InsuranceAccountDetailParam.builder().billMonth(billMonth).paymentOrganization(paymentOrganization.toString()).employeeIds(part).build())); }); - } else { - employeeList = getSalaryEmployeeService(user).listByIds(ids); } Map historyDetailDataMap = SalaryEntityUtil.convert2Map(historyDetailData, InsuranceAccountDetailPO::getEmployeeId); Map employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId); @@ -5104,7 +5102,9 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { insuranceAccountDetailPO.setResourceFrom(ResourceFromEnum.SYSTEM.getValue()); insuranceAccountDetailPO.setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY); insuranceAccountDetailPO.setPaymentOrganization(paymentOrganization); - if (isFirstFlag) { + + InsuranceAccountDetailPO historyDetail = historyDetailDataMap.get(k); + if (isFirstFlag || historyDetail == null) { // 初次核算 DataCollectionEmployee employee = employeeMap.get(k); if (employee != null) { @@ -5119,18 +5119,15 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { insuranceAccountDetailPO.setStatus(employee.getStatus()); } } else { - InsuranceAccountDetailPO historyDetail = historyDetailDataMap.get(k); - if (historyDetail != null) { - insuranceAccountDetailPO.setSubcompanyName(historyDetail.getSubcompanyName()); - insuranceAccountDetailPO.setSubcompanyId(historyDetail.getSubcompanyId()); - insuranceAccountDetailPO.setDepartmentName(historyDetail.getDepartmentName()); - insuranceAccountDetailPO.setDepartmentId(historyDetail.getDepartmentId()); - insuranceAccountDetailPO.setJobtitleName(historyDetail.getJobtitleName()); - insuranceAccountDetailPO.setJobtitleId(historyDetail.getJobtitleId()); - insuranceAccountDetailPO.setJobcall(historyDetail.getJobcall()); - insuranceAccountDetailPO.setJobcallId(historyDetail.getJobcallId()); - insuranceAccountDetailPO.setStatus(historyDetail.getStatus()); - } + insuranceAccountDetailPO.setSubcompanyName(historyDetail.getSubcompanyName()); + insuranceAccountDetailPO.setSubcompanyId(historyDetail.getSubcompanyId()); + insuranceAccountDetailPO.setDepartmentName(historyDetail.getDepartmentName()); + insuranceAccountDetailPO.setDepartmentId(historyDetail.getDepartmentId()); + insuranceAccountDetailPO.setJobtitleName(historyDetail.getJobtitleName()); + insuranceAccountDetailPO.setJobtitleId(historyDetail.getJobtitleId()); + insuranceAccountDetailPO.setJobcall(historyDetail.getJobcall()); + insuranceAccountDetailPO.setJobcallId(historyDetail.getJobcallId()); + insuranceAccountDetailPO.setStatus(historyDetail.getStatus()); } //核算社保 @@ -5160,10 +5157,12 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { } //临时表入库前先对(可能存在的)历史数据进行删除 - List> partition = Lists.partition((List) ids, 100); - partition.forEach(part -> { - getSIAccountDetailTempMapper().batchDelByEmpIdsAndMonthAndPayOrg(part, billMonth, paymentOrganization); - }); + // List> partition = Lists.partition((List) ids, 100); + // partition.forEach(part -> { + // getSIAccountDetailTempMapper().batchDelByEmpIdsAndMonthAndPayOrg(part, billMonth, paymentOrganization); + // }); + // 根据人员id删,会少删不再参与社保核算的人。 + getSIAccountDetailTempMapper().batchDelByMonthAndPayOrg(billMonth, paymentOrganization); //临时表数据入库 if (CollectionUtils.isNotEmpty(list)) { encryptUtil.encryptList(list, InsuranceAccountDetailTempPO.class); @@ -5747,16 +5746,23 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { log.info("核算明细临时表 hrsa_bill_detail_temp待处理数量:{}", list.size()); List> partitionIds = Lists.partition((List) ids, 100); log.info("bill_detail入库前删除数据数量:{}", ids.size()); - for (List part : partitionIds) { - getInsuranceAccountDetailMapper().batchDelAccountDetails(part, billMonth, param.getPaymentOrganization(), paymentStatus); + getInsuranceAccountDetailMapper().batchDelAccountDetails(Collections.emptyList(), billMonth, param.getPaymentOrganization(), paymentStatus); - //删除账单月份+个税扣缴义务人+人员id下的调差数据 - getInsuranceCompensationMapper().deleteByBillMonthPayOrgEmpIds(InsuranceCompensationPO.builder() - .billMonth(billMonth) - .paymentOrganization(param.getPaymentOrganization()) - .employeeIds(part) - .build()); - } + //删除账单月份+个税扣缴义务人+人员id下的调差数据 + getInsuranceCompensationMapper().deleteByBillMonthPayOrgEmpIds(InsuranceCompensationPO.builder() + .billMonth(billMonth) + .paymentOrganization(param.getPaymentOrganization()) + .build()); + // for (List part : partitionIds) { + // getInsuranceAccountDetailMapper().batchDelAccountDetails(part, billMonth, param.getPaymentOrganization(), paymentStatus); + // + // //删除账单月份+个税扣缴义务人+人员id下的调差数据 + // getInsuranceCompensationMapper().deleteByBillMonthPayOrgEmpIds(InsuranceCompensationPO.builder() + // .billMonth(billMonth) + // .paymentOrganization(param.getPaymentOrganization()) + // .employeeIds(part) + // .build()); + // } //生成bill_detail入库数据 List collect = list.stream().map(item -> {