增加导入附件的查看记录
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user