增加导入附件的查看记录

This commit is contained in:
wuweihua
2026-10-15 15:02:23 +08:00
parent c704021f2f
commit 41ce05a08a
14 changed files with 585 additions and 13 deletions
@@ -84,6 +84,8 @@ public class TabOrderSyncAsyncRunner
AtomicInteger processed = new AtomicInteger(0);
AtomicInteger ok = new AtomicInteger(0);
AtomicInteger fail = new AtomicInteger(0);
List<Map<String, Object>> failDetails = java.util.Collections.synchronizedList(
new ArrayList<Map<String, Object>>());
int pageNum = 1;
while (true)
{
@@ -102,7 +104,7 @@ public class TabOrderSyncAsyncRunner
{
final TabOrderMonitorVo one = row;
jobs.add(() -> {
boolean success = syncOne(one);
boolean success = syncOne(one, failDetails);
if (success)
{
ok.incrementAndGet();
@@ -137,7 +139,10 @@ public class TabOrderSyncAsyncRunner
resp.put("ok", Integer.valueOf(ok.get()));
resp.put("fail", Integer.valueOf(fail.get()));
resp.put("threads", Integer.valueOf(threads));
TabOrderSyncEsLog.save(billSearchStore, asyncTaskId, "FILTER_DONE", query, resp, "SUCCESS", null);
resp.put("failDetails", truncateFailDetails(failDetails));
String doneStatus = fail.get() > 0 ? "FAIL" : "SUCCESS";
String doneErr = fail.get() > 0 ? ("fail=" + fail.get() + ", ok=" + ok.get()) : null;
TabOrderSyncEsLog.save(billSearchStore, asyncTaskId, "FILTER_DONE", query, resp, doneStatus, doneErr);
log.info("orderSource sync done asyncTaskId={} total={} ok={} fail={} threads={}",
asyncTaskId, total, ok.get(), fail.get(), threads);
}
@@ -253,12 +258,18 @@ public class TabOrderSyncAsyncRunner
return data;
}
private boolean syncOne(TabOrderMonitorVo row)
private boolean syncOne(TabOrderMonitorVo row, List<Map<String, Object>> failDetails)
{
try
{
PrcBillingTask task = billingTaskService.submitAndProcess(toSubmit(row));
return task != null && BillTaskSuccessStatus.SUCCESS.getCode().equals(task.getSuccessStatus());
boolean success = task != null
&& BillTaskSuccessStatus.SUCCESS.getCode().equals(task.getSuccessStatus());
if (!success)
{
collectFailDetail(failDetails, row, task, null);
}
return success;
}
catch (RuntimeException e)
{
@@ -266,10 +277,62 @@ public class TabOrderSyncAsyncRunner
row == null ? null : row.getOrderId(),
row == null ? null : row.getTransferOrderId(),
e.getMessage());
collectFailDetail(failDetails, row, null, e.getMessage());
return false;
}
}
private static final int FAIL_DETAIL_MAX = 200;
private static void collectFailDetail(List<Map<String, Object>> failDetails, TabOrderMonitorVo row,
PrcBillingTask task, String exceptionMessage)
{
if (failDetails == null)
{
return;
}
Map<String, Object> item = new LinkedHashMap<String, Object>();
item.put("orderId", row == null ? null : row.getOrderId());
item.put("transferOrderId", row == null ? null : row.getTransferOrderId());
String err = exceptionMessage;
if (task != null)
{
item.put("successStatus", task.getSuccessStatus());
item.put("billType", task.getBillType());
item.put("taskId", task.getTaskId());
if (StringUtils.isEmpty(err))
{
err = task.getErrorMessage();
}
}
if (StringUtils.isEmpty(err))
{
err = "sync failed";
}
item.put("errorMessage", err);
synchronized (failDetails)
{
if (failDetails.size() >= FAIL_DETAIL_MAX)
{
return;
}
failDetails.add(item);
}
}
private static List<Map<String, Object>> truncateFailDetails(List<Map<String, Object>> failDetails)
{
if (failDetails == null || failDetails.isEmpty())
{
return java.util.Collections.emptyList();
}
if (failDetails.size() <= FAIL_DETAIL_MAX)
{
return new ArrayList<Map<String, Object>>(failDetails);
}
return new ArrayList<Map<String, Object>>(failDetails.subList(0, FAIL_DETAIL_MAX));
}
private static void invokeAllQuiet(ExecutorService pool, List<Callable<Boolean>> jobs) throws InterruptedException
{
List<Future<Boolean>> futures = pool.invokeAll(jobs);