From 06e6c9543f5b00683971c6f226447d41506928d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B3=89=E4=BD=B3?= <1107186916@qq.com> Date: Tue, 22 Sep 2026 14:29:37 +0800 Subject: [PATCH] =?UTF-8?q?:recycle:=20syncKingdeeInvoiceResult=E4=BC=98?= =?UTF-8?q?=E5=8C=96N+1=E9=97=AE=E9=A2=98=EF=BC=8C=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E6=9F=A5=E8=AF=A2=E5=92=8C=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E6=8F=92=E5=85=A5/=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/InvoiceApplicationServiceImpl.java | 47 ++++++++++++++++--- 1 file changed, 40 insertions(+), 7 deletions(-) diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/InvoiceApplicationServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/InvoiceApplicationServiceImpl.java index b3558f83..40c18b2d 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/InvoiceApplicationServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/InvoiceApplicationServiceImpl.java @@ -25,6 +25,7 @@ */ package org.springblade.transport.service.impl; +import com.baomidou.mybatisplus.extension.toolkit.Db; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -790,6 +791,12 @@ public class InvoiceApplicationServiceImpl extends BaseServiceImpl existingInvoiceNos = batchQueryExistingInvoiceNos(batch); + log.debug("金蝶开票结果回写:批次已存在发票号码数={}", existingInvoiceNos.size()); + // 收集待插入的发票记录和待更新的开票申请 + List toInsertInvoices = new ArrayList<>(); + List toUpdateApplications = new ArrayList<>(); for (BfiInvoiceApplyOpenApiBillVO bill : result.getData()) { String billNo = bill.getBillNo(); InvoiceApplication application = applicationBySerialNo.get(billNo); @@ -802,11 +809,8 @@ public class InvoiceApplicationServiceImpl extends BaseServiceImpllambdaQuery() - .eq(InvoiceApplicationInvoice::getInvoiceApplicationId, application.getId()) - .eq(InvoiceApplicationInvoice::getInvoiceNo, invoiceNo)); - if (exists != null && exists > 0) { + // 使用批量查询结果判断是否已存在 + if (existingInvoiceNos.contains(invoiceNo)) { log.debug("金蝶开票结果回写:发票号码[{}]已存在,跳过", invoiceNo); continue; } @@ -817,8 +821,10 @@ public class InvoiceApplicationServiceImpl extends BaseServiceImpl batchQueryExistingInvoiceNos(List serialNos) { + List existingList = invoiceApplicationInvoiceMapper.selectList( + Wrappers.lambdaQuery() + .in(InvoiceApplicationInvoice::getSerialNo, serialNos) + .select(InvoiceApplicationInvoice::getInvoiceNo)); + return existingList.stream() + .map(InvoiceApplicationInvoice::getInvoiceNo) + .filter(Func::isNotBlank) + .collect(Collectors.toSet()); + } + /** 从票易通原文 Map 中按候选键顺序取首个非空文本值 */ private String firstText(Map map, String... keys) { for (String key : keys) {