From 68f4b3fb4d266e6dcba63cd54a3a954ebb557b10 Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Sat, 13 Sep 2025 11:48:23 +0800 Subject: [PATCH] =?UTF-8?q?demand:=20=20TMS=E7=B3=BB=E7=BB=9F=20-=20?= =?UTF-8?q?=E8=BF=90=E8=BE=93=E7=AE=A1=E7=90=86=20-=20=E9=80=9A=E8=BF=87?= =?UTF-8?q?=E5=A4=9A=E7=BA=BF=E7=A8=8B=E5=88=86=E6=89=B9=E5=A4=84=E7=90=86?= =?UTF-8?q?=EF=BC=8C=E4=BC=98=E5=8C=96=E6=BC=8F=E7=BB=84=E6=89=B9=E6=AC=A1?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=B8=80=E6=AC=A1=E6=80=A7=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?/=E5=AF=BC=E5=87=BA10=E4=B8=87+=E6=95=B0=E6=8D=AE=E7=9A=84?= =?UTF-8?q?=E6=95=88=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit committer: heyu --- .../impl/EmisTmsSiteBatchMissServiceImpl.java | 40 ++++++++----------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchMissServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchMissServiceImpl.java index 266514779..9be68979b 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchMissServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchMissServiceImpl.java @@ -79,26 +79,26 @@ public class EmisTmsSiteBatchMissServiceImpl extends EmisBaseService implements log.info("Selecting TMS site batch miss list with params: {}", emisTmsSiteBatchMiss); // 检查是否需要多线程优化 - // 通过检查请求参数中是否包含大分页标识 + // 通过PageHelper获取当前分页信息 boolean useMultiThread = false; Integer pageSize = null; Integer pageNum = null; - // 尝试从params中获取分页参数 - if (emisTmsSiteBatchMiss.getParams() != null) { - Object pageSizeObj = emisTmsSiteBatchMiss.getParams().get("pageSize"); - Object pageNumObj = emisTmsSiteBatchMiss.getParams().get("pageNum"); + try { + // 从PageHelper的ThreadLocal中获取分页信息 + com.github.pagehelper.Page localPage = PageHelper.getLocalPage(); + if (localPage != null) { + pageSize = localPage.getPageSize(); + pageNum = localPage.getPageNum(); - if (pageSizeObj instanceof Integer) { - pageSize = (Integer) pageSizeObj; - if (pageSize > 1000) { + if (pageSize != null && pageSize > 1000) { useMultiThread = true; + log.info("Detected large pageSize: {}, pageNum: {}, will use multi-thread optimization", pageSize, + pageNum); } } - - if (pageNumObj instanceof Integer) { - pageNum = (Integer) pageNumObj; - } + } catch (Exception e) { + log.warn("Failed to get page info from PageHelper: {}", e.getMessage()); } // 如果pageSize > 1000,使用多线程查询优化 @@ -192,8 +192,7 @@ public class EmisTmsSiteBatchMissServiceImpl extends EmisBaseService implements try { // 为每个线程分配查询任务 for (int i = 0; i < threadCount; i++) { - int start = i * RECORDS_PER_THREAD; - int end = Math.min(start + RECORDS_PER_THREAD, pageSize); + final int threadIndex = i; // 创建查询任务 Callable> task = () -> { @@ -201,20 +200,15 @@ public class EmisTmsSiteBatchMissServiceImpl extends EmisBaseService implements // 创建查询参数的副本,避免线程间冲突 EmisTmsSiteBatchMiss queryParam = createQueryParamCopy(emisTmsSiteBatchMiss); - // 设置分页参数 - PageHelper.startPage(1, end - start); + // 设置分页参数 - 每个线程查询1000条记录 + PageHelper.startPage(1, RECORDS_PER_THREAD); // 执行查询 List result = emisTmsSiteBatchMissMapper .selectEmisTmsSiteBatchMissList(queryParam); - // 只返回当前线程负责的数据范围 - if (result.size() > start) { - int actualEnd = Math.min(start + (end - start), result.size()); - return result.subList(start, actualEnd); - } - - return new ArrayList<>(); + // 返回查询结果,不需要手动截取,因为PageHelper已经处理了分页 + return result != null ? result : new ArrayList<>(); } catch (Exception e) { log.error("Error in thread query task", e); return new ArrayList<>();