chore: 补充金蝶收票单结果回写定时任务日志与方法说明

This commit is contained in:
刘泉佳
2026-09-30 15:16:09 +08:00
parent f8bd66aafb
commit 454209511b
@@ -971,12 +971,22 @@ public class InvoiceReceiptServiceImpl extends BaseServiceImpl<InvoiceReceiptMap
}
/**
* 金蝶收票单结果回写主体:A801-3 查询收票单结果推进异常回收/指定补偿/单号补登,
* 由 {@link #syncKingdeeReceivedInvoiceResult()} 在分布式锁保护下调用
* 金蝶收票单结果回写主体(A801-3):定时轮询推送状态为 pushed/assigned 且未作废的收票登记,
* 按购方单位分组在时间窗口内反查金蝶收票单结果,一体推进三类补偿场景:
* ① 异常回收——金蝶侧发票状态异常时回收推送状态为 failed 并记同步流水,提示人工删除/解除指定后重推;
* ② 指定补偿——pushed(保存成功后中断、指定未完成)按预组装的应付单防重键重发 A302-6 指定应付;
* ③ 单号补登——assigned 终态缺失金蝶收票单号(保存成功但响应丢失的历史数据)时仅补登单号,不改变状态。
* <p>匹配与容错说明:
* ① 匹配键为收票登记 id,与 A303-2 落库的 awrp_src_code 同源,按发票号匹配将永远查不到自推单据;
* ② 查询窗口为近 {@code receivedResultWindowDays} 天(至少 1 天),窗口内查不到不判为金蝶侧已删除
* (金蝶修改时间延迟/滑窗),保持现状由人工重推兜底;
* ③ 单笔回写异常仅记入失败明细不中断整轮,结束时汇总进执行摘要;
* ④ 由 {@link #syncKingdeeReceivedInvoiceResult()} 在分布式锁保护下调用,防多实例并发重跑。
*
* @return 执行摘要
*/
private String executeReceivedInvoiceResultSync() {
long startMillis = System.currentTimeMillis();
List<InvoiceReceipt> pendingReceipts = list(Wrappers.<InvoiceReceipt>lambdaQuery()
.in(InvoiceReceipt::getKingdeePushStatus, KingdeeBfiConstant.RECEIVED_PUSH_PUSHED,
KingdeeBfiConstant.RECEIVED_PUSH_ASSIGNED)
@@ -984,8 +994,13 @@ public class InvoiceReceiptServiceImpl extends BaseServiceImpl<InvoiceReceiptMap
.isNotNull(InvoiceReceipt::getKingdeeInvoicePoolId)
.orderByAsc(InvoiceReceipt::getId));
if (pendingReceipts.isEmpty()) {
log.info("金蝶收票单结果回写:无待回写收票登记");
return "金蝶收票单结果回写:无待回写收票登记";
}
long pushedCount = pendingReceipts.stream()
.filter(receipt -> KingdeeBfiConstant.RECEIVED_PUSH_PUSHED.equals(receipt.getKingdeePushStatus())).count();
log.info("金蝶收票单结果回写开始:待回写收票登记{}笔(pushed待指定补偿 {} 笔,assigned待单号补登 {} 笔)",
pendingReceipts.size(), pushedCount, pendingReceipts.size() - pushedCount);
List<Long> mirrorIds = pendingReceipts.stream().map(InvoiceReceipt::getKingdeeInvoicePoolId)
.filter(Objects::nonNull).distinct().toList();
Map<Long, KingdeeInvoicePool> mirrorById = invoicePoolMapper.selectBatchIds(mirrorIds).stream()
@@ -1057,6 +1072,7 @@ public class InvoiceReceiptServiceImpl extends BaseServiceImpl<InvoiceReceiptMap
if (!failures.isEmpty()) {
summary = summary + ",失败 " + failures.size() + " 笔:" + String.join(";", failures);
}
log.info("{},耗时{}ms", summary, System.currentTimeMillis() - startMillis);
return summary;
}