From 6c5169eae5087dadfc64f033986a8576184cb12f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B3=89=E4=BD=B3?= <1107186916@qq.com> Date: Mon, 2 Nov 2026 20:31:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=B6=E7=A5=A8=E5=8D=95A302-6?= =?UTF-8?q?=E6=8C=87=E5=AE=9A=E5=BA=94=E4=BB=98=E8=87=AA=E5=8A=A8=E8=A1=A5?= =?UTF-8?q?=E5=81=BF=E5=A2=9E=E5=8A=A0=E5=BC=80=E5=85=B3=E5=B9=B6=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E5=85=B3=E9=97=AD=E6=94=B9=E4=BA=BA=E5=B7=A5=E5=85=9C?= =?UTF-8?q?=E5=BA=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../transport/config/BfiProperties.java | 7 +++++++ .../service/impl/InvoiceReceiptServiceImpl.java | 16 +++++++++++++--- doc/nacos/third-party-api.yaml | 3 +++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/config/BfiProperties.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/config/BfiProperties.java index f865fe8f..46748a99 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/config/BfiProperties.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/config/BfiProperties.java @@ -264,6 +264,13 @@ public class BfiProperties { * 回写任务开关,默认关闭(联调稳定后开启) */ private boolean syncEnabled = false; + + /** + * A302-6 指定应付自动补偿开关:pushed 且已认领的收票单是否由本回写任务自动重发指定应付, + * 默认关闭(安全兜底),不自动推送指定应付,pushed 单据由人工入口 + * (发票登记推送 / 认领发票重推按钮)触发指定;置 true 开启自动补偿 + */ + private boolean assignCompensationEnabled = false; } /** diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/InvoiceReceiptServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/InvoiceReceiptServiceImpl.java index 2e0d1ab3..8ebc06de 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/InvoiceReceiptServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/InvoiceReceiptServiceImpl.java @@ -1116,6 +1116,7 @@ public class InvoiceReceiptServiceImpl extends BaseServiceImpl匹配与容错说明: * ① 匹配键为收票登记 id,与 A303-2 落库的 awrp_src_code 同源,按发票号匹配将永远查不到自推单据; @@ -1128,6 +1129,7 @@ public class InvoiceReceiptServiceImpl extends BaseServiceImpl pendingReceipts = list(Wrappers.lambdaQuery() .in(InvoiceReceipt::getKingdeePushStatus, KingdeeBfiConstant.RECEIVED_PUSH_PUSHED, KingdeeBfiConstant.RECEIVED_PUSH_ASSIGNED) @@ -1142,14 +1144,17 @@ public class InvoiceReceiptServiceImpl extends BaseServiceImpl KingdeeBfiConstant.RECEIVED_PUSH_PUSHED.equals(receipt.getKingdeePushStatus())).count(); log.info("金蝶收票单结果回写开始:待回写收票登记{}笔(pushed待指定补偿 {} 笔,assigned待单号补登 {} 笔)", pendingReceipts.size(), pushedCount, pendingReceipts.size() - pushedCount); + if (!assignCompensationEnabled) { + log.info("A302-6 指定应付自动补偿已关闭,pushed 单据由人工入口(发票登记推送/重推按钮)指定"); + } List mirrorIds = pendingReceipts.stream().map(InvoiceReceipt::getKingdeeInvoicePoolId) .filter(Objects::nonNull).distinct().toList(); Map mirrorById = invoicePoolMapper.selectBatchIds(mirrorIds).stream() .collect(Collectors.toMap(KingdeeInvoicePool::getId, Function.identity(), (first, second) -> first)); - // pushed(保存成功后中断、指定未完成)集合:批量预组装应付单防重键供指定补偿 - List pushedIds = pendingReceipts.stream() + // pushed(保存成功后中断、指定未完成)集合:批量预组装应付单防重键供指定补偿(补偿关闭时跳过组装) + List pushedIds = assignCompensationEnabled ? pendingReceipts.stream() .filter(receipt -> KingdeeBfiConstant.RECEIVED_PUSH_PUSHED.equals(receipt.getKingdeePushStatus())) - .map(InvoiceReceipt::getId).toList(); + .map(InvoiceReceipt::getId).toList() : List.of(); Map apSrcCodeByReceiptId = pushedIds.isEmpty() ? Map.of() : resolveApBillSrcCodesForWriteBack(pushedIds); Map> receiptsByBuyer = new LinkedHashMap<>(); @@ -1191,6 +1196,11 @@ public class InvoiceReceiptServiceImpl extends BaseServiceImpl