chore: 补充金蝶收票单结果回写定时任务日志与方法说明
This commit is contained in:
+18
-2
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user