From a0280d35d45046431eb5880c8bf5145ac3ad2ce3 Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Sat, 13 Sep 2025 11:16:55 +0800 Subject: [PATCH 1/4] =?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 | 212 ++++++++++++++++++ 1 file changed, 212 insertions(+) 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 72b1b81db..266514779 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 @@ -5,6 +5,10 @@ import java.util.stream.Collectors; import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; import java.util.concurrent.Executors; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import cn.hutool.core.collection.CollectionUtil; import com.xdadan.erp.emis.domain.*; @@ -73,6 +77,36 @@ public class EmisTmsSiteBatchMissServiceImpl extends EmisBaseService implements @Override public List selectEmisTmsSiteBatchMissList(EmisTmsSiteBatchMiss emisTmsSiteBatchMiss) { log.info("Selecting TMS site batch miss list with params: {}", emisTmsSiteBatchMiss); + + // 检查是否需要多线程优化 + // 通过检查请求参数中是否包含大分页标识 + 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"); + + if (pageSizeObj instanceof Integer) { + pageSize = (Integer) pageSizeObj; + if (pageSize > 1000) { + useMultiThread = true; + } + } + + if (pageNumObj instanceof Integer) { + pageNum = (Integer) pageNumObj; + } + } + + // 如果pageSize > 1000,使用多线程查询优化 + if (useMultiThread && pageSize != null && pageNum != null) { + log.info("Using multi-thread optimization for large pageSize: {}", pageSize); + return selectEmisTmsSiteBatchMissListWithMultiThread(emisTmsSiteBatchMiss, pageSize, pageNum); + } + List list = null; // 如果单号不为空,则去除其他参数 if (!StringUtils.isEmpty(emisTmsSiteBatchMiss.getBillCode())) { @@ -130,6 +164,184 @@ public class EmisTmsSiteBatchMissServiceImpl extends EmisBaseService implements return list; } + /** + * 使用多线程查询TMS漏组批次信息列表 + * 当pageSize > 1000时,将查询任务拆分为多个线程,每个线程查询1000条记录 + * + * @param emisTmsSiteBatchMiss TMS漏组批次信息 + * @param pageSize 分页大小 + * @param pageNum 页码 + * @return TMS漏组批次信息列表 + */ + private List selectEmisTmsSiteBatchMissListWithMultiThread( + EmisTmsSiteBatchMiss emisTmsSiteBatchMiss, Integer pageSize, Integer pageNum) { + + log.info("Using multi-thread query optimization for pageSize: {}, pageNum: {}", pageSize, pageNum); + + try { + // 计算需要的线程数,每个线程处理1000条记录 + final int RECORDS_PER_THREAD = 1000; + int threadCount = (int) Math.ceil((double) pageSize / RECORDS_PER_THREAD); + + // 创建线程池,线程数不超过CPU核心数的2倍 + int maxThreads = Math.min(threadCount, Runtime.getRuntime().availableProcessors() * 2); + ExecutorService executorService = Executors.newFixedThreadPool(maxThreads); + + List>> futures = new ArrayList<>(); + + try { + // 为每个线程分配查询任务 + for (int i = 0; i < threadCount; i++) { + int start = i * RECORDS_PER_THREAD; + int end = Math.min(start + RECORDS_PER_THREAD, pageSize); + + // 创建查询任务 + Callable> task = () -> { + try { + // 创建查询参数的副本,避免线程间冲突 + EmisTmsSiteBatchMiss queryParam = createQueryParamCopy(emisTmsSiteBatchMiss); + + // 设置分页参数 + PageHelper.startPage(1, end - start); + + // 执行查询 + 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<>(); + } catch (Exception e) { + log.error("Error in thread query task", e); + return new ArrayList<>(); + } + }; + + futures.add(executorService.submit(task)); + } + + // 收集所有线程的查询结果 + List allResults = new ArrayList<>(); + for (Future> future : futures) { + try { + List threadResult = future.get(); + allResults.addAll(threadResult); + } catch (Exception e) { + log.error("Error getting thread result", e); + } + } + + // 根据pageNum和pageSize进行最终分页 + int startIndex = (pageNum - 1) * pageSize; + int endIndex = Math.min(startIndex + pageSize, allResults.size()); + + if (startIndex >= allResults.size()) { + return new ArrayList<>(); + } + + return allResults.subList(startIndex, endIndex); + + } finally { + executorService.shutdown(); + } + } catch (Exception e) { + log.error("Error in multi-thread query, fallback to normal query", e); + // 如果多线程查询失败,回退到普通查询 + return performNormalQuery(emisTmsSiteBatchMiss); + } + } + + /** + * 执行普通查询(多线程查询失败时的回退方案) + */ + private List performNormalQuery(EmisTmsSiteBatchMiss emisTmsSiteBatchMiss) { + log.info("Performing normal query as fallback"); + + List list = null; + // 如果单号不为空,则去除其他参数 + if (!StringUtils.isEmpty(emisTmsSiteBatchMiss.getBillCode())) { + emisTmsSiteBatchMiss.setBillCode(WaybillHelper.formatQueryValue(emisTmsSiteBatchMiss.getBillCode())); + String[] billCodeSortList = emisTmsSiteBatchMiss.getBillCode().split(","); + if (billCodeSortList.length > 1) { + emisTmsSiteBatchMiss.getParams().put("billCodeSortList", Arrays.asList(billCodeSortList)); + } + list = emisTmsSiteBatchMissMapper.selectEmisTmsSiteBatchMissList(emisTmsSiteBatchMiss); + } else { + list = emisTmsSiteBatchMissMapper.selectEmisTmsSiteBatchMissList(emisTmsSiteBatchMiss); + } + + return list; + } + + /** + * 创建查询参数的深拷贝,避免线程间冲突 + */ + private EmisTmsSiteBatchMiss createQueryParamCopy(EmisTmsSiteBatchMiss original) { + EmisTmsSiteBatchMiss copy = new EmisTmsSiteBatchMiss(); + + // 复制基本属性 + copy.setId(original.getId()); + copy.setBillCode(original.getBillCode()); + copy.setManager(original.getManager()); + copy.setTransManager(original.getTransManager()); + copy.setSendSiteCode(original.getSendSiteCode()); + copy.setSendSiteName(original.getSendSiteName()); + copy.setSendCountry(original.getSendCountry()); + copy.setSendCountryName(original.getSendCountryName()); + copy.setDestinationCode(original.getDestinationCode()); + copy.setDestinationName(original.getDestinationName()); + copy.setReceiveCountry(original.getReceiveCountry()); + copy.setReceiveCountryName(original.getReceiveCountryName()); + copy.setSendDate(original.getSendDate()); + copy.setBlSign(original.getBlSign()); + copy.setSignDate(original.getSignDate()); + copy.setPaymentType(original.getPaymentType()); + copy.setParcelQty(original.getParcelQty()); + copy.setBillWeight(original.getBillWeight()); + copy.setTotalVolume(original.getTotalVolume()); + copy.setVolumeWeight(original.getVolumeWeight()); + copy.setSettlementWeight(original.getSettlementWeight()); + copy.setFreight(original.getFreight()); + copy.setWaybillRemark(original.getWaybillRemark()); + copy.setFeeRemark(original.getFeeRemark()); + copy.setMissReason(original.getMissReason()); + copy.setLineCode(original.getLineCode()); + copy.setLineName(original.getLineName()); + copy.setProductType(original.getProductType()); + copy.setProductTypeName(original.getProductTypeName()); + copy.setStartSiteCode(original.getStartSiteCode()); + copy.setNextSiteCode(original.getNextSiteCode()); + copy.setStartSiteName(original.getStartSiteName()); + copy.setNextSiteName(original.getNextSiteName()); + copy.setSupplierCode(original.getSupplierCode()); + copy.setSupplierName(original.getSupplierName()); + copy.setStartDate(original.getStartDate()); + copy.setEndDate(original.getEndDate()); + copy.setMissCount(original.getMissCount()); + copy.setMissType(original.getMissType()); + copy.setBlIsQuestion(original.getBlIsQuestion()); + copy.setVirtualRemark(original.getVirtualRemark()); + copy.setProblemType(original.getProblemType()); + copy.setDispatchUnderlingSiteCode(original.getDispatchUnderlingSiteCode()); + copy.setDispatchUnderlingSiteName(original.getDispatchUnderlingSiteName()); + copy.setManualRemark(original.getManualRemark()); + copy.setBlManual(original.getBlManual()); + copy.setPayee(original.getPayee()); + copy.setSalesmen(original.getSalesmen()); + copy.setRegisterManName(original.getRegisterManName()); + + // 复制params参数 + if (original.getParams() != null) { + copy.setParams(new HashMap<>(original.getParams())); + } + + return copy; + } + /** * 新增TMS漏组批次信息 * 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 2/4] =?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<>(); From 1154ff1ebd9e87a017a45e8cdf3b7718da717d91 Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Sat, 13 Sep 2025 16:16:17 +0800 Subject: [PATCH 3/4] =?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 | 206 ------------------ 1 file changed, 206 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 9be68979b..72b1b81db 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 @@ -5,10 +5,6 @@ import java.util.stream.Collectors; import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; import java.util.concurrent.Executors; -import java.util.concurrent.Callable; -import java.util.concurrent.ExecutionException; -import com.github.pagehelper.PageHelper; -import com.github.pagehelper.PageInfo; import cn.hutool.core.collection.CollectionUtil; import com.xdadan.erp.emis.domain.*; @@ -77,36 +73,6 @@ public class EmisTmsSiteBatchMissServiceImpl extends EmisBaseService implements @Override public List selectEmisTmsSiteBatchMissList(EmisTmsSiteBatchMiss emisTmsSiteBatchMiss) { log.info("Selecting TMS site batch miss list with params: {}", emisTmsSiteBatchMiss); - - // 检查是否需要多线程优化 - // 通过PageHelper获取当前分页信息 - boolean useMultiThread = false; - Integer pageSize = null; - Integer pageNum = null; - - try { - // 从PageHelper的ThreadLocal中获取分页信息 - com.github.pagehelper.Page localPage = PageHelper.getLocalPage(); - if (localPage != null) { - pageSize = localPage.getPageSize(); - pageNum = localPage.getPageNum(); - - if (pageSize != null && pageSize > 1000) { - useMultiThread = true; - log.info("Detected large pageSize: {}, pageNum: {}, will use multi-thread optimization", pageSize, - pageNum); - } - } - } catch (Exception e) { - log.warn("Failed to get page info from PageHelper: {}", e.getMessage()); - } - - // 如果pageSize > 1000,使用多线程查询优化 - if (useMultiThread && pageSize != null && pageNum != null) { - log.info("Using multi-thread optimization for large pageSize: {}", pageSize); - return selectEmisTmsSiteBatchMissListWithMultiThread(emisTmsSiteBatchMiss, pageSize, pageNum); - } - List list = null; // 如果单号不为空,则去除其他参数 if (!StringUtils.isEmpty(emisTmsSiteBatchMiss.getBillCode())) { @@ -164,178 +130,6 @@ public class EmisTmsSiteBatchMissServiceImpl extends EmisBaseService implements return list; } - /** - * 使用多线程查询TMS漏组批次信息列表 - * 当pageSize > 1000时,将查询任务拆分为多个线程,每个线程查询1000条记录 - * - * @param emisTmsSiteBatchMiss TMS漏组批次信息 - * @param pageSize 分页大小 - * @param pageNum 页码 - * @return TMS漏组批次信息列表 - */ - private List selectEmisTmsSiteBatchMissListWithMultiThread( - EmisTmsSiteBatchMiss emisTmsSiteBatchMiss, Integer pageSize, Integer pageNum) { - - log.info("Using multi-thread query optimization for pageSize: {}, pageNum: {}", pageSize, pageNum); - - try { - // 计算需要的线程数,每个线程处理1000条记录 - final int RECORDS_PER_THREAD = 1000; - int threadCount = (int) Math.ceil((double) pageSize / RECORDS_PER_THREAD); - - // 创建线程池,线程数不超过CPU核心数的2倍 - int maxThreads = Math.min(threadCount, Runtime.getRuntime().availableProcessors() * 2); - ExecutorService executorService = Executors.newFixedThreadPool(maxThreads); - - List>> futures = new ArrayList<>(); - - try { - // 为每个线程分配查询任务 - for (int i = 0; i < threadCount; i++) { - final int threadIndex = i; - - // 创建查询任务 - Callable> task = () -> { - try { - // 创建查询参数的副本,避免线程间冲突 - EmisTmsSiteBatchMiss queryParam = createQueryParamCopy(emisTmsSiteBatchMiss); - - // 设置分页参数 - 每个线程查询1000条记录 - PageHelper.startPage(1, RECORDS_PER_THREAD); - - // 执行查询 - List result = emisTmsSiteBatchMissMapper - .selectEmisTmsSiteBatchMissList(queryParam); - - // 返回查询结果,不需要手动截取,因为PageHelper已经处理了分页 - return result != null ? result : new ArrayList<>(); - } catch (Exception e) { - log.error("Error in thread query task", e); - return new ArrayList<>(); - } - }; - - futures.add(executorService.submit(task)); - } - - // 收集所有线程的查询结果 - List allResults = new ArrayList<>(); - for (Future> future : futures) { - try { - List threadResult = future.get(); - allResults.addAll(threadResult); - } catch (Exception e) { - log.error("Error getting thread result", e); - } - } - - // 根据pageNum和pageSize进行最终分页 - int startIndex = (pageNum - 1) * pageSize; - int endIndex = Math.min(startIndex + pageSize, allResults.size()); - - if (startIndex >= allResults.size()) { - return new ArrayList<>(); - } - - return allResults.subList(startIndex, endIndex); - - } finally { - executorService.shutdown(); - } - } catch (Exception e) { - log.error("Error in multi-thread query, fallback to normal query", e); - // 如果多线程查询失败,回退到普通查询 - return performNormalQuery(emisTmsSiteBatchMiss); - } - } - - /** - * 执行普通查询(多线程查询失败时的回退方案) - */ - private List performNormalQuery(EmisTmsSiteBatchMiss emisTmsSiteBatchMiss) { - log.info("Performing normal query as fallback"); - - List list = null; - // 如果单号不为空,则去除其他参数 - if (!StringUtils.isEmpty(emisTmsSiteBatchMiss.getBillCode())) { - emisTmsSiteBatchMiss.setBillCode(WaybillHelper.formatQueryValue(emisTmsSiteBatchMiss.getBillCode())); - String[] billCodeSortList = emisTmsSiteBatchMiss.getBillCode().split(","); - if (billCodeSortList.length > 1) { - emisTmsSiteBatchMiss.getParams().put("billCodeSortList", Arrays.asList(billCodeSortList)); - } - list = emisTmsSiteBatchMissMapper.selectEmisTmsSiteBatchMissList(emisTmsSiteBatchMiss); - } else { - list = emisTmsSiteBatchMissMapper.selectEmisTmsSiteBatchMissList(emisTmsSiteBatchMiss); - } - - return list; - } - - /** - * 创建查询参数的深拷贝,避免线程间冲突 - */ - private EmisTmsSiteBatchMiss createQueryParamCopy(EmisTmsSiteBatchMiss original) { - EmisTmsSiteBatchMiss copy = new EmisTmsSiteBatchMiss(); - - // 复制基本属性 - copy.setId(original.getId()); - copy.setBillCode(original.getBillCode()); - copy.setManager(original.getManager()); - copy.setTransManager(original.getTransManager()); - copy.setSendSiteCode(original.getSendSiteCode()); - copy.setSendSiteName(original.getSendSiteName()); - copy.setSendCountry(original.getSendCountry()); - copy.setSendCountryName(original.getSendCountryName()); - copy.setDestinationCode(original.getDestinationCode()); - copy.setDestinationName(original.getDestinationName()); - copy.setReceiveCountry(original.getReceiveCountry()); - copy.setReceiveCountryName(original.getReceiveCountryName()); - copy.setSendDate(original.getSendDate()); - copy.setBlSign(original.getBlSign()); - copy.setSignDate(original.getSignDate()); - copy.setPaymentType(original.getPaymentType()); - copy.setParcelQty(original.getParcelQty()); - copy.setBillWeight(original.getBillWeight()); - copy.setTotalVolume(original.getTotalVolume()); - copy.setVolumeWeight(original.getVolumeWeight()); - copy.setSettlementWeight(original.getSettlementWeight()); - copy.setFreight(original.getFreight()); - copy.setWaybillRemark(original.getWaybillRemark()); - copy.setFeeRemark(original.getFeeRemark()); - copy.setMissReason(original.getMissReason()); - copy.setLineCode(original.getLineCode()); - copy.setLineName(original.getLineName()); - copy.setProductType(original.getProductType()); - copy.setProductTypeName(original.getProductTypeName()); - copy.setStartSiteCode(original.getStartSiteCode()); - copy.setNextSiteCode(original.getNextSiteCode()); - copy.setStartSiteName(original.getStartSiteName()); - copy.setNextSiteName(original.getNextSiteName()); - copy.setSupplierCode(original.getSupplierCode()); - copy.setSupplierName(original.getSupplierName()); - copy.setStartDate(original.getStartDate()); - copy.setEndDate(original.getEndDate()); - copy.setMissCount(original.getMissCount()); - copy.setMissType(original.getMissType()); - copy.setBlIsQuestion(original.getBlIsQuestion()); - copy.setVirtualRemark(original.getVirtualRemark()); - copy.setProblemType(original.getProblemType()); - copy.setDispatchUnderlingSiteCode(original.getDispatchUnderlingSiteCode()); - copy.setDispatchUnderlingSiteName(original.getDispatchUnderlingSiteName()); - copy.setManualRemark(original.getManualRemark()); - copy.setBlManual(original.getBlManual()); - copy.setPayee(original.getPayee()); - copy.setSalesmen(original.getSalesmen()); - copy.setRegisterManName(original.getRegisterManName()); - - // 复制params参数 - if (original.getParams() != null) { - copy.setParams(new HashMap<>(original.getParams())); - } - - return copy; - } - /** * 新增TMS漏组批次信息 * From b16c82bb757d8726d42da4b3f4e5855fce669066 Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Sat, 13 Sep 2025 16:37:28 +0800 Subject: [PATCH 4/4] =?UTF-8?q?demand:=20=20TMS=E7=B3=BB=E7=BB=9F=20-=20?= =?UTF-8?q?=E6=8F=90=E6=88=90=E7=AE=A1=E7=90=86=20-=20=E8=BF=90=E5=8D=95?= =?UTF-8?q?=E6=8F=90=E6=88=90=E6=98=8E=E7=BB=86=20-=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E9=9D=9E=E4=B8=9C=E5=8D=97=E4=BA=9A=E5=9B=BD?= =?UTF-8?q?=E5=AE=B6=E6=8F=90=E6=88=90=E6=97=B6=EF=BC=8C=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E4=B8=8D=E5=87=86=E7=A1=AE=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit committer: heyu --- .../resources/mapper/EmisCommissionQuoteMapper.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/emis-biz/src/main/resources/mapper/EmisCommissionQuoteMapper.xml b/emis-biz/src/main/resources/mapper/EmisCommissionQuoteMapper.xml index fe0a97ce8..daf56be0f 100644 --- a/emis-biz/src/main/resources/mapper/EmisCommissionQuoteMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisCommissionQuoteMapper.xml @@ -49,8 +49,8 @@ and quote_id = #{quoteId} and quote_code like concat('%', #{quoteCode}, '%') and quote_name like concat('%', #{quoteName}, '%') - and ( FIND_IN_SET(#{fromCountry},from_country) or from_country='-1') - and ( FIND_IN_SET(#{country},country) or country='-1' ) + and ( FIND_IN_SET(#{fromCountry},from_country) or from_country='-1' or (from_country='-3' and not exists (select 1 from emis_country ec where FIND_IN_SET(ec.id, #{fromCountry}) and FIND_IN_SET('9', ec.continent_id)))) + and ( FIND_IN_SET(#{country},country) or country='-1' or (country='-3' and not exists (select 1 from emis_country ec where FIND_IN_SET(ec.id, #{country}) and FIND_IN_SET('9', ec.continent_id))) ) and ( ( FIND_IN_SET(#{sendSiteCode},send_site_code) and send_site_code is not null ) or send_site_code is null ) and ( ( FIND_IN_SET(#{nextSiteCode},next_site_code) and next_site_code is not null ) or next_site_code is null ) @@ -99,8 +99,8 @@ and quote_name like concat('%', #{quoteName}, '%') - and ( FIND_IN_SET(#{fromCountry},from_country) or from_country='-1' or from_country is null or from_country='' or ( #{fromCountry}!='0086' and from_country='-2' ) or from_country='-3') - and ( FIND_IN_SET(#{country},country) or country='-1' or country is null or country='' or ( #{country}!='0086' and country='-2' ) or country='-3' ) + and ( FIND_IN_SET(#{fromCountry},from_country) or from_country='-1' or from_country is null or from_country='' or ( #{fromCountry}!='0086' and from_country='-2' ) or (from_country='-3' and not exists (select 1 from emis_country ec where FIND_IN_SET(ec.code, #{fromCountry}) and FIND_IN_SET('9', ec.continent_id)))) + and ( FIND_IN_SET(#{country},country) or country='-1' or country is null or country='' or ( #{country}!='0086' and country='-2' ) or (country='-3' and not exists (select 1 from emis_country ec where FIND_IN_SET(ec.code, #{country}) and FIND_IN_SET('9', ec.continent_id))) ) and ( ( FIND_IN_SET(#{sendSiteCode},send_site_code) and send_site_code is not null ) or send_site_code is null ) and ( ( FIND_IN_SET(#{nextSiteCode},next_site_code) and next_site_code is not null ) or next_site_code is null ) @@ -333,4 +333,4 @@ order by create_time desc - \ No newline at end of file +