From 4259deb19122a4807d50c99ed4a95405ebe4a47c Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期五, 10 四月 2026 08:40:18 +0800
Subject: [PATCH] #

---
 rsf-server/src/main/java/com/vincent/rsf/server/common/config/MybatisPlusConfig.java |   48 +++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 47 insertions(+), 1 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/config/MybatisPlusConfig.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/config/MybatisPlusConfig.java
index 056b4a7..c28485d 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/common/config/MybatisPlusConfig.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/config/MybatisPlusConfig.java
@@ -3,6 +3,8 @@
 import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
 import com.baomidou.mybatisplus.core.MybatisConfiguration;
 import com.baomidou.mybatisplus.extension.MybatisMapWrapperFactory;
+import com.baomidou.mybatisplus.extension.parser.JsqlParserGlobal;
+import com.baomidou.mybatisplus.extension.parser.cache.JdkSerialCaffeineJsqlParseCache;
 import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
 import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
@@ -11,7 +13,6 @@
 import com.vincent.rsf.server.system.entity.User;
 import net.sf.jsqlparser.expression.Expression;
 import net.sf.jsqlparser.expression.LongValue;
-import net.sf.jsqlparser.expression.NullValue;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.security.core.Authentication;
@@ -19,6 +20,10 @@
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 
 import java.util.Arrays;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
 
 /**
  * MybatisPlus閰嶇疆
@@ -30,8 +35,11 @@
 @EnableTransactionManagement
 public class MybatisPlusConfig {
 
+    private static volatile boolean jsqlParserConfigured = false;
+
     @Bean
     public MybatisPlusInterceptor mybatisPlusInterceptor() {
+        configureJsqlParser();
         MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
 
         // 娣诲姞涔愯閿佹彃浠�
@@ -54,6 +62,8 @@
                         "sys_menu",
                         "sys_pda_role_menu",
                         "sys_menu_pda",
+                        "sys_matnr_role_menu",
+                        "sys_warehouse_role_menu",
                         "man_loc_type_rela",
                         "man_qly_inspect_result",
                         "view_stock_manage",
@@ -71,6 +81,41 @@
         interceptor.addInnerInterceptor(paginationInnerInterceptor);
 
         return interceptor;
+    }
+
+    private void configureJsqlParser() {
+        if (jsqlParserConfigured) {
+            return;
+        }
+        synchronized (MybatisPlusConfig.class) {
+            if (jsqlParserConfigured) {
+                return;
+            }
+            AtomicInteger threadIndex = new AtomicInteger(1);
+            int parserThreads = Math.max(4, Runtime.getRuntime().availableProcessors());
+            ThreadPoolExecutor parserExecutor = new ThreadPoolExecutor(
+                    parserThreads,
+                    parserThreads,
+                    0L,
+                    TimeUnit.MILLISECONDS,
+                    new LinkedBlockingQueue<>(2048),
+                    runnable -> {
+                        Thread thread = new Thread(runnable);
+                        thread.setName("jsql-parser-" + threadIndex.getAndIncrement());
+                        thread.setDaemon(true);
+                        return thread;
+                    },
+                    new ThreadPoolExecutor.CallerRunsPolicy()
+            );
+            JsqlParserGlobal.setExecutorService(parserExecutor, new Thread(() -> {
+                if (!parserExecutor.isShutdown()) {
+                    parserExecutor.shutdown();
+                }
+            }, "jsql-parser-shutdown"));
+            JsqlParserGlobal.setJsqlParseCache(new JdkSerialCaffeineJsqlParseCache(builder ->
+                    builder.maximumSize(1024).expireAfterAccess(30, TimeUnit.MINUTES)));
+            jsqlParserConfigured = true;
+        }
     }
 
     /**
@@ -115,3 +160,4 @@
         };
     }
 }
+

--
Gitblit v1.9.1