From 0120a42fc52d9e55bc22a450e35a24b2d844b8ad Mon Sep 17 00:00:00 2001
From: 邹裕 <2723363702@qq.com>
Date: 星期二, 22 九月 2026 17:32:55 +0800
Subject: [PATCH] 修复ucanaccess查询中文排序mdb数据库导致索引失效查询缓慢问题

---
 src/main/java/com/hwtd/mes/collect/service/impl/DataCollectionServiceImpl.java |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/hwtd/mes/collect/service/impl/DataCollectionServiceImpl.java b/src/main/java/com/hwtd/mes/collect/service/impl/DataCollectionServiceImpl.java
index 678eb5e..65410ff 100644
--- a/src/main/java/com/hwtd/mes/collect/service/impl/DataCollectionServiceImpl.java
+++ b/src/main/java/com/hwtd/mes/collect/service/impl/DataCollectionServiceImpl.java
@@ -2,10 +2,12 @@
 
 import com.hwtd.mes.collect.dto.DatabaseDTO;
 import com.hwtd.mes.collect.service.DataCollectionService;
+import com.hwtd.mes.collect.util.JackcessTableReader;
 import com.zaxxer.hikari.HikariConfig;
 import com.zaxxer.hikari.HikariDataSource;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.sql.*;
@@ -20,8 +22,24 @@
      */
     private final static List<String> MDB_EXCLUDE_TYPES = Arrays.asList("java.sql.Blob");
 
+    /**
+     * Access 璇诲彇鏂瑰紡锛�
+     * jackcess锛堥粯璁わ級鈥斺�� 鐢� jackcess 鍙鐩磋鍗曡〃銆佹寜闇�鍙栧垪锛屼笉鏋勫缓 HSQLDB 闀滃儚锛屽彧瑕佽〃閲屽嚑鍒楁椂鏈�蹇紱
+     * ucanaccess 鈥斺�� 璧板師鏉ョ殑 SQL 璺緞锛堥渶瑕� Access SQL銆侀摼鎺ヨ〃 remap 绛夊満鏅椂浣跨敤锛夈��
+     */
+    @Value("${mes.access.read-mode:jackcess}")
+    private String accessReadMode = "jackcess";
+
     @Override
     public List<Map<String, Object>> getAccessData(DatabaseDTO databaseDTO) {
+        if (databaseDTO == null || StringUtils.isBlank(databaseDTO.getFilePath())) {
+            throw new RuntimeException("Access鏁版嵁搴撴枃浠惰矾寰勪笉鑳戒负绌�");
+        }
+        // 榛樿 jackcess 鐩磋锛氬彧鍙栨煇寮犺〃鐨勫嚑鍒椾笉闇�瑕� SQL 寮曟搸锛屼篃涓嶇敤绛夋暣涓簱闀滃儚杩� HSQLDB
+        if (!"ucanaccess".equalsIgnoreCase(StringUtils.trimToEmpty(accessReadMode))) {
+            return JackcessTableReader.read(databaseDTO);
+        }
+
         List<Map<String,Object>> list = new ArrayList<>();
         try{
             Properties prop = new Properties();

--
Gitblit v1.9.3