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