优化订单列表,多单号查询,支持几万单号查询

This commit is contained in:
luojiaquan
2026-10-16 09:22:13 +08:00
parent 0a7f639138
commit 02481b102c
10 changed files with 655 additions and 32 deletions
@@ -28,6 +28,7 @@ import com.bms.price.domain.vo.TabOrderMonitorQuery;
import com.bms.price.domain.vo.TabOrderMonitorVo;
import com.bms.price.domain.vo.TabOrderProductCheckResult;
import com.bms.price.oracle.CustomerKeywordResolver;
import com.bms.price.oracle.TabOrderPageResult;
import com.bms.price.oracle.TabOrderMonitorService;
import com.bms.price.oracle.TabOrderProductCheckService;
import com.bms.price.search.BillSearchPage;
@@ -94,12 +95,10 @@ public class TabOrderMonitorController extends BaseController
}
// 在切换 Oracle 数据源之前,把客户名称解析为客户代码
customerKeywordResolver.resolve(query);
long total = tabOrderMonitorService.count(query);
List<TabOrderMonitorVo> rows = total <= 0L
? Collections.emptyList()
: tabOrderMonitorService.selectPage(query, pageNum, pageSize);
rsp.setRows(rows);
rsp.setTotal(total);
// 大批量单号场景一次收集即可同时得到总数和当前页,避免重复扫描 Oracle
TabOrderPageResult page = tabOrderMonitorService.searchPage(query, pageNum, pageSize);
rsp.setRows(page.getRows());
rsp.setTotal(page.getTotal());
return rsp;
}
@@ -142,7 +141,11 @@ public class TabOrderMonitorController extends BaseController
return error("customerCodes and pickup time required");
}
customerKeywordResolver.resolve(query);
tabOrderMonitorService.count(query);
// 含大批量单号时,异步任务启动时会自行分批收集,这里不预先 count,避免重复全量扫描
if (!hasNonBlankItem(query.getOrderIdentifiers()))
{
tabOrderMonitorService.count(query);
}
String asyncTaskId = UUID.randomUUID().toString().replace("-", "");
tabOrderSyncAsyncRunner.put(asyncTaskId, PrcBillingTaskRetryTask.STATUS_PENDING, 0, "queued",
0, 0, 0, 0, null);