feat: 收票单A302-6指定应付自动补偿增加开关并默认关闭改人工兜底
This commit is contained in:
+7
@@ -264,6 +264,13 @@ public class BfiProperties {
|
||||
* 回写任务开关,默认关闭(联调稳定后开启)
|
||||
*/
|
||||
private boolean syncEnabled = false;
|
||||
|
||||
/**
|
||||
* A302-6 指定应付自动补偿开关:pushed 且已认领的收票单是否由本回写任务自动重发指定应付,
|
||||
* 默认关闭(安全兜底),不自动推送指定应付,pushed 单据由人工入口
|
||||
* (发票登记推送 / 认领发票重推按钮)触发指定;置 true 开启自动补偿
|
||||
*/
|
||||
private boolean assignCompensationEnabled = false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+13
-3
@@ -1116,6 +1116,7 @@ public class InvoiceReceiptServiceImpl extends BaseServiceImpl<InvoiceReceiptMap
|
||||
* 按购方单位分组在时间窗口内反查金蝶收票单结果,一体推进三类补偿场景:
|
||||
* ① 异常回收——金蝶侧发票状态异常时回收推送状态为 failed 并记同步流水,提示人工删除/解除指定后重推;
|
||||
* ② 指定补偿——pushed 且已认领(有应付单防重键)按预组装的应付单防重键重发 A302-6 指定应付(重试引擎),未认领跳过;
|
||||
* 受 {@code thirdParty.bfi.receivedInvoiceResult.assignCompensationEnabled} 开关控制,关闭后 pushed 单据由人工入口(发票登记推送/重推按钮)指定;
|
||||
* ③ 单号补登——assigned 终态缺失金蝶收票单号(保存成功但响应丢失的历史数据)时仅补登单号,不改变状态。
|
||||
* <p>匹配与容错说明:
|
||||
* ① 匹配键为收票登记 id,与 A303-2 落库的 awrp_src_code 同源,按发票号匹配将永远查不到自推单据;
|
||||
@@ -1128,6 +1129,7 @@ public class InvoiceReceiptServiceImpl extends BaseServiceImpl<InvoiceReceiptMap
|
||||
*/
|
||||
private String executeReceivedInvoiceResultSync() {
|
||||
long startMillis = System.currentTimeMillis();
|
||||
boolean assignCompensationEnabled = bfiProperties.getReceivedInvoiceResult().isAssignCompensationEnabled();
|
||||
List<InvoiceReceipt> pendingReceipts = list(Wrappers.<InvoiceReceipt>lambdaQuery()
|
||||
.in(InvoiceReceipt::getKingdeePushStatus, KingdeeBfiConstant.RECEIVED_PUSH_PUSHED,
|
||||
KingdeeBfiConstant.RECEIVED_PUSH_ASSIGNED)
|
||||
@@ -1142,14 +1144,17 @@ public class InvoiceReceiptServiceImpl extends BaseServiceImpl<InvoiceReceiptMap
|
||||
.filter(receipt -> 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<Long> mirrorIds = pendingReceipts.stream().map(InvoiceReceipt::getKingdeeInvoicePoolId)
|
||||
.filter(Objects::nonNull).distinct().toList();
|
||||
Map<Long, KingdeeInvoicePool> mirrorById = invoicePoolMapper.selectBatchIds(mirrorIds).stream()
|
||||
.collect(Collectors.toMap(KingdeeInvoicePool::getId, Function.identity(), (first, second) -> first));
|
||||
// pushed(保存成功后中断、指定未完成)集合:批量预组装应付单防重键供指定补偿
|
||||
List<Long> pushedIds = pendingReceipts.stream()
|
||||
// pushed(保存成功后中断、指定未完成)集合:批量预组装应付单防重键供指定补偿(补偿关闭时跳过组装)
|
||||
List<Long> pushedIds = assignCompensationEnabled ? pendingReceipts.stream()
|
||||
.filter(receipt -> KingdeeBfiConstant.RECEIVED_PUSH_PUSHED.equals(receipt.getKingdeePushStatus()))
|
||||
.map(InvoiceReceipt::getId).toList();
|
||||
.map(InvoiceReceipt::getId).toList() : List.of();
|
||||
Map<Long, String> apSrcCodeByReceiptId = pushedIds.isEmpty() ? Map.of()
|
||||
: resolveApBillSrcCodesForWriteBack(pushedIds);
|
||||
Map<String, List<InvoiceReceipt>> receiptsByBuyer = new LinkedHashMap<>();
|
||||
@@ -1191,6 +1196,11 @@ public class InvoiceReceiptServiceImpl extends BaseServiceImpl<InvoiceReceiptMap
|
||||
continue;
|
||||
}
|
||||
if (KingdeeBfiConstant.RECEIVED_PUSH_PUSHED.equals(receipt.getKingdeePushStatus())) {
|
||||
if (!assignCompensationEnabled) {
|
||||
// 补偿开关关闭:不自动重发 A302-6,pushed 保持现状由人工入口指定
|
||||
log.info("收票登记[{}]指定应付自动补偿已关闭,跳过 A302-6 重发", receipt.getInvoiceNo());
|
||||
continue;
|
||||
}
|
||||
reassignPushedReceivedInvoice(receipt, row, apSrcCodeByReceiptId.get(receipt.getId()));
|
||||
reassigned++;
|
||||
continue;
|
||||
|
||||
@@ -105,6 +105,9 @@ thirdParty:
|
||||
syncEnabled: ${BFI_RECEIVED_INVOICE_RESULT_SYNC_ENABLED:false}
|
||||
# 调度 cron,默认每10分钟(:08 起步,错峰避让其他金蝶任务)
|
||||
cron: ${BFI_RECEIVED_INVOICE_RESULT_CRON:0 8/10 * * * ?}
|
||||
# A302-6 指定应付自动补偿开关:pushed 且已认领的收票单自动重发指定应付;
|
||||
# 默认关闭(安全兜底),不自动推送指定应付,由人工入口(发票登记推送/认领发票重推按钮)触发
|
||||
assignCompensationEnabled: ${BFI_RECEIVED_INVOICE_RESULT_ASSIGN_COMPENSATION_ENABLED:false}
|
||||
# 收款认领推送金蝶定时任务(A301-3 收款认领结果推送)
|
||||
receiptClaimPush:
|
||||
# 推送任务开关,默认关闭(联调稳定后开启)
|
||||
|
||||
Reference in New Issue
Block a user