diff --git a/acs/nladmin-system/src/main/resources/log/AgvNdcOneDeviceDriver.xml b/acs/nladmin-system/src/main/resources/log/AgvNdcOneDeviceDriver.xml
index 76e6024..6f4e7ce 100644
--- a/acs/nladmin-system/src/main/resources/log/AgvNdcOneDeviceDriver.xml
+++ b/acs/nladmin-system/src/main/resources/log/AgvNdcOneDeviceDriver.xml
@@ -1,14 +1,33 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<included>
+    <springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
+    <property name="LOG_HOME" value="${logPath}"/>
+    <!-- 按照每天生成日志文件 -->
+    <appender name="AgvNdcOneDeviceDriver" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <!--日志文件输出的文件名-->
+            <FileNamePattern>${LOG_HOME}/AGVNDC交互/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
+            <!--日志文件保留天数-->
+            <maxHistory>15</maxHistory>
+            <!--单个日志最大容量 至少10MB才能看得出来-->
+            <maxFileSize>200MB</maxFileSize>
+            <!--所有日志最多占多大容量-->
+            <totalSizeCap>2GB</totalSizeCap>
+        </rollingPolicy>
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>${log.charset}</charset>
+        </encoder>
 
-<?import java.lang.*?>
-<?import java.util.*?>
-<?import javafx.scene.*?>
-<?import javafx.scene.control.*?>
-<?import javafx.scene.layout.*?>
+    </appender>
 
-<AnchorPane xmlns="http://javafx.com/javafx"
-            xmlns:fx="http://javafx.com/fxml"
-            fx:controller="$CONTROLLER_NAME$"
-            prefHeight="400.0" prefWidth="600.0">
+    <!--  <logger name="org.nl.start.Init" level="info" additivity="false">
+          <appender-ref ref="FILE3"/>
+      </logger>-->
 
-</AnchorPane>
+    <!-- 打印sql -->
+    <logger name="org.nl.acs.device_driver.basedriver.agv.ndcone.AgvNdcOneDeviceDriver" level="info" additivity="false">
+        <appender-ref ref="AgvNdcOneDeviceDriver"/>
+    </logger>
+</included>
diff --git a/acs/nladmin-system/src/main/resources/logback-spring.xml b/acs/nladmin-system/src/main/resources/logback-spring.xml
index 86692ec..bad90ee 100644
--- a/acs/nladmin-system/src/main/resources/logback-spring.xml
+++ b/acs/nladmin-system/src/main/resources/logback-spring.xml
@@ -26,6 +26,7 @@ https://juejin.cn/post/6844903775631572999
         <include resource="log/WmsToAcs.xml"/>
         <include resource="log/NDCSocketConnectionAutoRun.xml"/>
         <include resource="log/Lucene.xml"/>
+        <include resource="log/AgvNdcOneDeviceDriver.xml"/>
 
     <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
         <encoder>
diff --git a/lms/nladmin-system/nlsso-server/pom.xml b/lms/nladmin-system/nlsso-server/pom.xml
index b2c1157..549ab12 100644
--- a/lms/nladmin-system/nlsso-server/pom.xml
+++ b/lms/nladmin-system/nlsso-server/pom.xml
@@ -33,6 +33,12 @@
     </properties>
 
     <dependencies>
+        <!-- dynamic-datasource -->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
+            <version>4.1.3</version>
+        </dependency>
 <!--        https://onew.me/logback/2018/09/17/logback_win.html-->
         <dependency>
             <groupId>org.fusesource.jansi</groupId>
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/AppRun.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/AppRun.java
index f125113..bac4ab5 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/AppRun.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/AppRun.java
@@ -1,6 +1,7 @@
 package org.nl;
 
 import cn.dev33.satoken.annotation.SaIgnore;
+import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
 import com.alicp.jetcache.anno.config.EnableCreateCacheAnnotation;
 import com.alicp.jetcache.anno.config.EnableMethodCache;
 import io.swagger.annotations.Api;
@@ -8,6 +9,7 @@ import org.mybatis.spring.annotation.MapperScan;
 import org.nl.config.SpringContextHolder;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
 import org.springframework.boot.web.servlet.ServletComponentScan;
 import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
@@ -28,7 +30,9 @@ import org.springframework.web.bind.annotation.RestController;
 @RestController
 @Api(hidden = true)
 @SpringBootApplication(exclude = {
-        org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class
+        org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class,
+        DataSourceAutoConfiguration.class,
+        DruidDataSourceAutoConfigure.class
 })
 @ServletComponentScan //https://blog.csdn.net/qq_36850813/article/details/101194250
 @EnableTransactionManagement
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/logging/aspect/LogAspect.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/logging/aspect/LogAspect.java
index 297b3dd..9b25100 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/logging/aspect/LogAspect.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/common/logging/aspect/LogAspect.java
@@ -12,7 +12,7 @@
  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
- *//*
+ */
 
 package org.nl.common.logging.aspect;
 
@@ -30,7 +30,8 @@ import org.nl.common.utils.RequestHolder;
 import org.nl.common.utils.SecurityUtils;
 import org.nl.common.utils.StringUtils;
 import org.nl.common.utils.ThrowableUtil;
-import org.nl.common.logging.domain.Log;
+import org.nl.system.service.logging.ISysLogService;
+import org.nl.system.service.logging.dao.SysLog;
 import org.springframework.stereotype.Component;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -46,45 +47,43 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-*/
+
 /**
  * @author Zheng Jie
  * @date 2018-11-24
- *//*
+ */
 
 @Component
 @Aspect
 @Slf4j
 public class LogAspect {
 
-    private final LogService logService;
+    private final ISysLogService logService;
 
     ThreadLocal<Long> currentTime = new ThreadLocal<>();
 
-    public LogAspect(LogService logService) {
+    public LogAspect(ISysLogService logService) {
         this.logService = logService;
     }
 
-    */
-/**
+    /**
      * 配置切入点
-     *//*
+     */
 
     @Pointcut("@annotation(org.nl.common.logging.annotation.Log)")
     public void logPointcut() {
         // 该方法无方法体,主要为了让同类中其他方法使用此切入点
     }
 
-    */
-/**
+    /**
      * 配置环绕通知,使用在方法logPointcut()上注册的切入点
      *
      * @param joinPoint join point for advice
-     *//*
+     */
 
     @Around("logPointcut()")
     public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable {
-                ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
         HttpServletRequest request = attributes.getRequest();
         HttpServletResponse response = attributes.getResponse();
 //        HttpServletRequest request = RequestHolder.getHttpServletRequest();
@@ -94,26 +93,21 @@ public class LogAspect {
         Method method = signature.getMethod();
         // 方法路径
         String methodName = joinPoint.getTarget().getClass().getName() + "." + signature.getName() + "()";
-        String params=getParameter(method, joinPoint.getArgs());
-
-        log.info("请求uri:{}", request.getRequestURI());
-        log.info("请求方法:{}",methodName);
-        log.info("请求方法参数:{}",params);
+        String params = getParameter(method, joinPoint.getArgs());
 
         Object result;
         currentTime.set(System.currentTimeMillis());
         result = joinPoint.proceed();
-        Log log = new Log("INFO",System.currentTimeMillis() - currentTime.get());
+        SysLog log = new SysLog("INFO", System.currentTimeMillis() - currentTime.get());
         currentTime.remove();
 
-        logService.save(getUsername(), StringUtils.getBrowser(request), StringUtils.getIp(request),joinPoint, log);
+        logService.save(getUsername(), StringUtils.getBrowser(request), StringUtils.getIp(request), joinPoint, log);
         return result;
     }
 
-    */
-/**
+    /**
      * 根据方法和传入的参数获取请求参数
-     *//*
+     */
 
     private String getParameter(Method method, Object[] args) {
         List<Object> argList = new ArrayList<>();
@@ -142,29 +136,28 @@ public class LogAspect {
         return argList.size() == 1 ? JSONUtil.toJsonStr(argList.get(0)) : JSONUtil.toJsonStr(argList);
     }
 
-    */
-/**
+
+    /**
      * 配置异常通知
      *
      * @param joinPoint join point for advice
-     * @param e exception
-     *//*
+     * @param e         exception
+     */
 
     @AfterThrowing(pointcut = "logPointcut()", throwing = "e")
     public void logAfterThrowing(JoinPoint joinPoint, Throwable e) {
-        Log log = new Log("ERROR",System.currentTimeMillis() - currentTime.get());
+        SysLog log = new SysLog("ERROR", System.currentTimeMillis() - currentTime.get());
         currentTime.remove();
-        log.setExceptionDetail(ThrowableUtil.getStackTrace(e).getBytes());
+        log.setException_detail(ThrowableUtil.getStackTrace(e).getBytes());
         HttpServletRequest request = RequestHolder.getHttpServletRequest();
-        logService.save(getUsername(), StringUtils.getBrowser(request), StringUtils.getIp(request), (ProceedingJoinPoint)joinPoint, log);
+        logService.save(getUsername(), StringUtils.getBrowser(request), StringUtils.getIp(request), (ProceedingJoinPoint) joinPoint, log);
     }
 
     public String getUsername() {
         try {
             return SecurityUtils.getCurrentUsername();
-        }catch (Exception e){
+        } catch (Exception e) {
             return "";
         }
     }
 }
-*/
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/ConfigurerAdapter.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/ConfigurerAdapter.java
index ce9a7c0..f4915e9 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/ConfigurerAdapter.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/ConfigurerAdapter.java
@@ -15,7 +15,11 @@
  */
 package org.nl.config;
 
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
 import org.springframework.web.servlet.config.annotation.EnableWebMvc;
 import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@@ -36,6 +40,18 @@ public class ConfigurerAdapter implements WebMvcConfigurer {
         this.properties = properties;
     }
 
+    @Bean
+    public CorsFilter corsFilter() {
+        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+        CorsConfiguration config = new CorsConfiguration();
+        config.setAllowCredentials(true);
+        config.addAllowedOrigin("*");
+        config.addAllowedHeader("*");
+        config.addAllowedMethod("*");
+        source.registerCorsConfiguration("/**", config);
+        return new CorsFilter(source);
+    }
+
     @Override
     public void addResourceHandlers(ResourceHandlerRegistry registry) {
         FileProperties.ElPath path = properties.getPath();
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/DataBaseConfig.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/DataBaseConfig.java
index f679d3b..d3acc42 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/DataBaseConfig.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/DataBaseConfig.java
@@ -1,23 +1,23 @@
-package org.nl.config;
-
-import com.alibaba.druid.pool.DruidDataSource;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Primary;
-
-import javax.sql.DataSource;
-
-@Configuration
-@Slf4j
-public class DataBaseConfig {
-
-    @Primary
-    @Bean(name = "dataSource")
-    @ConfigurationProperties(prefix = "spring.datasource.druid")
-    public DataSource dataSource() {
-        return new DruidDataSource();
-    }
-
-}
+//package org.nl.config;
+//
+//import com.alibaba.druid.pool.DruidDataSource;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.boot.context.properties.ConfigurationProperties;
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Configuration;
+//import org.springframework.context.annotation.Primary;
+//
+//import javax.sql.DataSource;
+//
+//@Configuration
+//@Slf4j
+//public class DataBaseConfig {
+//
+//    @Primary
+//    @Bean(name = "dataSource")
+//    @ConfigurationProperties(prefix = "spring.datasource.druid")
+//    public DataSource dataSource() {
+//        return new DruidDataSource();
+//    }
+//
+//}
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LogMessageConstant.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LogMessageConstant.java
new file mode 100644
index 0000000..0456788
--- /dev/null
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LogMessageConstant.java
@@ -0,0 +1,41 @@
+package org.nl.config.lucene;
+
+/**
+ * @Author: lyd
+ * @Description: 定义lucene相关常量
+ * @Date: 2023/8/25
+ */
+public class LogMessageConstant {
+    /** 级别 */
+    public final static String FIELD_LEVEL = "level";
+    /** 时间 */
+    public final static String FIELD_TIMESTAMP = "timestamp";
+    /** 类的限定名 */
+    public final static String FIELD_CLASS_NAME = "logger";
+    /** 线程名 */
+    public final static String FIELD_THREAD = "thread";
+    /** 日志内容 */
+    public final static String FIELD_MESSAGE = "message";
+    public final static String FIELD_TRACEID = "tlogTraceId";
+    // 定义颜色值
+    /** 文本颜色:黑色 */
+    public final static String COLOR_BLACK = "\u001B[30m";
+    /** 文本颜色:红色 */
+    public final static String COLOR_RED = "\u001B[31m";
+    /** 文本颜色:绿色 */
+    public final static String COLOR_GREEN = "\u001B[32m";
+    /** 文本颜色:黄色 */
+    public final static String COLOR_YELLOW = "\u001B[33m";
+    /** 文本颜色:蓝色 */
+    public final static String COLOR_BLUE = "\u001B[34m";
+    /** 文本颜色:品红色 */
+    public final static String COLOR_MAGENTA = "\u001B[35m";
+    /** 文本颜色:青色 */
+    public final static String COLOR_CYAN = "\u001B[36m";
+    /** 文本颜色:白色 */
+    public final static String COLOR_WHITE = "\u001B[37m";
+    /** 文本颜色重置 */
+    public final static String COLOR_RESET = "\u001B[0m";
+    /** 背景颜色:黄色 */
+    public final static String BACKGROUND_YELLOW = "\u001B[43m";
+}
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LuceneAppender.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LuceneAppender.java
new file mode 100644
index 0000000..980145d
--- /dev/null
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LuceneAppender.java
@@ -0,0 +1,89 @@
+package org.nl.config.lucene;
+/**
+ * @author ldjun
+ * @version 1.0
+ * @date 2023年08月24日 13:00
+ * @desc desc
+ */
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.AppenderBase;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import org.apache.lucene.analysis.Analyzer;
+import org.apache.lucene.document.*;
+import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.IndexWriterConfig;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.FSDirectory;
+import org.wltea.analyzer.lucene.IKAnalyzer;
+
+import java.io.IOException;
+import java.nio.file.Paths;
+import java.util.Map;
+
+public class LuceneAppender extends AppenderBase<ILoggingEvent> {
+
+    private Directory index;
+    private IndexWriter indexWriter;
+
+    @Override
+    public void start() {
+        super.start();
+        String indexPath = "C:\\lucene\\index";
+        try {
+            index = FSDirectory.open(Paths.get(indexPath));
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        // 初始化 Lucene 索引
+        Analyzer analyzer = new IKAnalyzer();
+        IndexWriterConfig config = new IndexWriterConfig(analyzer);
+        try {
+            indexWriter = new IndexWriter(index, config);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+
+    @Override
+    protected void append(ILoggingEvent event) {
+        String message = event.getFormattedMessage();
+        Map<String, String> mdcPropertyMap = event.getMDCPropertyMap();
+        Document doc = new Document();
+        String formattedDateTime = DateUtil.format(new java.util.Date(event.getTimeStamp()), "yyyy-MM-dd HH:mm:ss.SSS");
+        doc.add(new StringField(LogMessageConstant.FIELD_LEVEL, event.getLevel().toString(), Field.Store.YES));
+        doc.add(new StringField(LogMessageConstant.FIELD_TIMESTAMP, formattedDateTime,Field.Store.YES));
+        doc.add(new StoredField(LogMessageConstant.FIELD_CLASS_NAME, event.getLoggerName()));
+        doc.add(new StoredField(LogMessageConstant.FIELD_THREAD, event.getThreadName()));
+        if (ObjectUtil.isNotEmpty(mdcPropertyMap)) {
+            String traceId = mdcPropertyMap.get(LogMessageConstant.FIELD_TRACEID);
+            if (ObjectUtil.isNotEmpty(traceId)) {
+                doc.add(new StringField(LogMessageConstant.FIELD_TRACEID, traceId,Field.Store.YES));
+            } else {
+                doc.add(new StringField(LogMessageConstant.FIELD_TRACEID, "无生成链路ID",Field.Store.YES));
+            }
+        } else {
+            doc.add(new StringField(LogMessageConstant.FIELD_TRACEID, "无生成链路ID",Field.Store.YES));
+        }
+        doc.add(new TextField(LogMessageConstant.FIELD_MESSAGE, message, Field.Store.YES));
+        try {
+            indexWriter.addDocument(doc);
+            indexWriter.commit();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public void stop() {
+        super.stop();
+        try {
+            indexWriter.close();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+}
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/Searcher.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/Searcher.java
index 75284ee..b8138f0 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/Searcher.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/Searcher.java
@@ -2,17 +2,20 @@ package org.nl.config.lucene;
 
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
-import com.alibaba.fastjson.JSONArray;
+import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.Term;
+import org.apache.lucene.queryparser.classic.QueryParser;
 import org.apache.lucene.search.*;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.FSDirectory;
 import org.apache.lucene.util.BytesRef;
+import org.wltea.analyzer.lucene.IKAnalyzer;
 
 import java.nio.file.Paths;
 import java.util.ArrayList;
@@ -26,33 +29,30 @@ import java.util.Map;
 @Slf4j
 public class Searcher {
 
-    public static Map<String, Object> search(String indexDir, String ext,Map whereJson) throws Exception {
+    public static Map<String, Object> search(String indexDir, JSONObject whereJson) throws Exception {
         //获取要查询的路径,也就是索引所在的位置
         Directory dir = FSDirectory.open(Paths.get(indexDir));
         IndexReader reader = DirectoryReader.open(dir);
         //构建IndexSearcher
         IndexSearcher searcher = new IndexSearcher(reader);
         //标准分词器,会自动去掉空格啊,is a the等单词
-//        Analyzer analyzer = new StandardAnalyzer();
-//        Analyzer analyzer = new IKAnalyzer(false);
-        //查询解析器
-//        QueryParser queryParser = new QueryParser("fieldContent", analyzer);
+        Analyzer analyzer = new IKAnalyzer(true);
 
         //记录索引开始时间
-        long startTime = System.currentTimeMillis();
+//        long startTime = System.currentTimeMillis();
         // 实际上Lucene本身不支持分页。因此我们需要自己进行逻辑分页。我们要准备分页参数:
         int pageSize = Integer.parseInt(whereJson.get("size").toString());// 每页条数
-        int pageNum = Integer.parseInt(whereJson.get("page").toString());// 当前页码
+        int pageNum = Integer.parseInt(whereJson.get("page").toString()) - 1;// 当前页码
         int start = pageNum * pageSize;// 当前页的起始条数
         int end = start + pageSize;// 当前页的结束条数(不能包含)
         // 创建排序对象,需要排序字段SortField,参数:字段的名称、字段的类型、是否反转如果是false,升序。true降序
-        Sort sort = new Sort(new SortField("logTime", SortField.Type.DOC,true));
+        Sort sort = new Sort(new SortField("timestamp", SortField.Type.DOC,true));
 
         TopDocs docs = null;
         BooleanQuery.Builder booleanQueryBuilder = new BooleanQuery.Builder();
         //时间范围查询
-        String startDate = (String) whereJson.get("begin_time");
-        String endDate = (String) whereJson.get("end_time");
+        String startDate = whereJson.getString("begin_time");
+        String endDate = whereJson.getString("end_time");
         Calendar calendar=Calendar.getInstance();
         calendar.set(1970, 0, 1);
         if (startDate == null){
@@ -65,74 +65,90 @@ public class Searcher {
         } else {
             endDate = LuceneIndexWriter.getDate(endDate);
         }
-        TermRangeQuery termRangeQuery = new TermRangeQuery("logTime", new BytesRef(startDate), new BytesRef(endDate), true, true);
+        // 字段之间的与或非关系,MUST表示and,MUST_NOT表示not,SHOULD表示or,有几个fields就必须有几个clauses
+        TermRangeQuery termRangeQuery = new TermRangeQuery("timestamp", new BytesRef(startDate),
+                new BytesRef(endDate), true, true);
         booleanQueryBuilder.add(termRangeQuery,BooleanClause.Occur.MUST);
-        if (whereJson.get("device_code") != null){
-            Query termQuery = new TermQuery(new Term("device_code", (String) whereJson.get("device_code")));
-            booleanQueryBuilder.add(termQuery,BooleanClause.Occur.MUST);
-        }
-        if (whereJson.get("method") != null){
-            Query termQuery = new TermQuery(new Term("method", (String) whereJson.get("method")));
-            booleanQueryBuilder.add(termQuery,BooleanClause.Occur.MUST);
-        }
-        if (whereJson.get("status_code") != null){
-            Query termQuery = new TermQuery(new Term("status_code", (String) whereJson.get("status_code")));
-            booleanQueryBuilder.add(termQuery,BooleanClause.Occur.MUST);
+        if (ObjectUtil.isNotEmpty(whereJson.get(LogMessageConstant.FIELD_MESSAGE))){
+            //查询解析器
+            QueryParser queryParser = new QueryParser("message", analyzer);
+            Query query = queryParser.parse(whereJson.getString("message"));
+            booleanQueryBuilder.add(query, BooleanClause.Occur.MUST);
         }
-        if (whereJson.get("requestparam") != null){
-            WildcardQuery query = new  WildcardQuery(new Term("requestparam", "*"+(String) whereJson.get("requestparam")+"*"));
-            booleanQueryBuilder.add(query,BooleanClause.Occur.MUST);
+        if (ObjectUtil.isNotEmpty(whereJson.get(LogMessageConstant.FIELD_TRACEID))){
+            //查询解析器
+            TermQuery termQuery = new TermQuery(new Term(LogMessageConstant.FIELD_TRACEID,
+                    whereJson.getString(LogMessageConstant.FIELD_TRACEID).trim()));
+            booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST);
         }
-        if (whereJson.get("responseparam") != null){
-            WildcardQuery query = new  WildcardQuery(new Term("responseparam", "*"+(String) whereJson.get("responseparam")+"*"));
-            booleanQueryBuilder.add(query,BooleanClause.Occur.MUST);
-        }
-        if (whereJson.get("blurry") != null) {
-            WildcardQuery query = new  WildcardQuery(new Term("fieldContent", "*"+(String) whereJson.get("blurry")+"*"));
-            booleanQueryBuilder.add(query, BooleanClause.Occur.MUST);
+        if (ObjectUtil.isNotEmpty(whereJson.get(LogMessageConstant.FIELD_LEVEL))){
+            //查询解析器
+            TermQuery termQuery = new TermQuery(new Term(LogMessageConstant.FIELD_LEVEL,
+                    whereJson.get(LogMessageConstant.FIELD_LEVEL).toString()));
+            booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST);
         }
         docs = searcher.search(booleanQueryBuilder.build(), end,sort);
         //记录索引时间
-        long endTime = System.currentTimeMillis();
-        log.info("匹配{}共耗时{}毫秒",booleanQueryBuilder.build(),(endTime-startTime));
-        log.info("查询到{}条日志文件", docs.totalHits.value);
+//        long endTime = System.currentTimeMillis();
+//        log.info("匹配{}共耗时{}毫秒",booleanQueryBuilder.build(),(endTime-startTime));
+//        log.info("查询到{}条日志文件", docs.totalHits.value);
         List<String> list = new ArrayList<>();
         ScoreDoc[] scoreDocs = docs.scoreDocs;
         if (end > docs.totalHits.value) end = (int) docs.totalHits.value;
-        JSONArray array = new JSONArray();
 
         for (int i = start; i < end; i++) {
             ScoreDoc scoreDoc = scoreDocs[i];
             Document doc = reader.document(scoreDoc.doc);
-            JSONObject object = new JSONObject();
-            object.put("content",doc.get("fieldContent"));
-            object.put("device_code",doc.get("device_code"));
-            object.put("logTime",doc.get("logTime"));
-            object.put("method",doc.get("method"));
-            object.put("status_code",doc.get("status_code"));
-            object.put("requestparam",doc.get("requestparam"));
-            object.put("responseparam",doc.get("responseparam"));
-            if(doc.get("fieldContent") != null) {
-                array.add(object);
-            }
-        }
-        for(Object logDto:array){
-            log.info(logDto.toString());
+            String logInfo = LogMessageConstant.COLOR_YELLOW + doc.get(LogMessageConstant.FIELD_TRACEID) +
+                    LogMessageConstant.COLOR_RESET + " - " +
+                    LogMessageConstant.COLOR_RED + doc.get(LogMessageConstant.FIELD_TIMESTAMP) +
+                    LogMessageConstant.COLOR_RESET + " - " +
+                    LogMessageConstant.COLOR_GREEN + "[" + doc.get(LogMessageConstant.FIELD_THREAD) + "]" +
+                    LogMessageConstant.COLOR_RESET + " - " +
+                    LogMessageConstant.COLOR_BLACK + doc.get(LogMessageConstant.FIELD_LEVEL) +
+                    LogMessageConstant.COLOR_RESET + " - " +
+                    LogMessageConstant.COLOR_MAGENTA + doc.get(LogMessageConstant.FIELD_CLASS_NAME) +
+                    LogMessageConstant.COLOR_RESET + " - " +
+                    LogMessageConstant.COLOR_BLACK + highlightKeyword(doc.get(LogMessageConstant.FIELD_MESSAGE), whereJson.getString("message"));
+            System.out.println(logInfo);
+            list.add(logInfo);
         }
         reader.close();
         JSONObject jo = new JSONObject();
-        jo.put("content", array);
+        jo.put("content", list);
         jo.put("totalElements", docs.totalHits.value);
         return jo;
     }
 
+    public static String highlightKeyword(String text, String keyword) {
+        if (ObjectUtil.isEmpty(keyword)) {
+            return text;
+        }
+
+        int startIndex = text.indexOf(keyword);
+        if (startIndex != -1) {
+            int endIndex = startIndex + keyword.length();
+            String beforeKeyword = text.substring(0, startIndex);
+            String afterKeyword = text.substring(endIndex);
+            String highlightedKeyword = LogMessageConstant.BACKGROUND_YELLOW + keyword + LogMessageConstant.COLOR_RESET
+                    + LogMessageConstant.COLOR_BLACK;
+            return beforeKeyword + highlightedKeyword + afterKeyword;
+        } else {
+            return text;
+        }
+    }
+
     public static void main(String[] args) {
         String indexDir = "D:\\lucene\\index";
         //查询这个字符串
-        String q = "07.832";
-        Map whereJson = null;
+        JSONObject whereJson = new JSONObject();
+        whereJson.put("size", "500");
+        whereJson.put("page", "1");
+        whereJson.put("message", "请求方法参数");
+//        whereJson.put(LogMessageConstant.FIELD_TRACEID, "13244183367577216");
+
         try {
-            search(indexDir, q,whereJson);
+            search(indexDir, whereJson);
         } catch (Exception e) {
             e.printStackTrace();
         }
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/saconfig/CorsFilter.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/saconfig/CorsFilter.java
index cc2e734..9a67267 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/saconfig/CorsFilter.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/saconfig/CorsFilter.java
@@ -1,56 +1,56 @@
-package org.nl.config.saconfig;
-
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Component;
-import org.springframework.web.cors.CorsConfiguration;
-
-import javax.servlet.*;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-
-/**
- * 跨域过滤器
- * @author kong
- */
-@Component
-@Order(-200)
-public class CorsFilter implements Filter {
-
-	static final String OPTIONS = "OPTIONS";
-
-	@Override
-	public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
-			throws IOException, ServletException {
-		HttpServletRequest request = (HttpServletRequest) req;
-		HttpServletResponse response = (HttpServletResponse) res;
-		// 允许指定域访问跨域资源
-		response.setHeader("Access-Control-Allow-Origin", "*");
-		// 允许所有请求方式
-		response.setHeader("Access-Control-Allow-Methods", "*");
-		// 有效时间
-		response.setHeader("Access-Control-Max-Age", "3600");
-		// 允许的header参数
-		response.setHeader("Access-Control-Allow-Headers", "*");
-		response.setHeader("Access-Control-Allow-Credentials", "true");
-
-		// 如果是预检请求,直接返回
-		if (OPTIONS.equals(request.getMethod())) {
-			System.out.println("=======================浏览器发来了OPTIONS预检请求==========");
-			response.getWriter().print("");
-			return;
-		}
-
-		// System.out.println("*********************************过滤器被使用**************************");
-		chain.doFilter(req, res);
-	}
-
-	@Override
-	public void init(FilterConfig filterConfig) {
-	}
-
-	@Override
-	public void destroy() {
-	}
-
-}
+//package org.nl.config.saconfig;
+//
+//import org.springframework.core.annotation.Order;
+//import org.springframework.stereotype.Component;
+//import org.springframework.web.cors.CorsConfiguration;
+//
+//import javax.servlet.*;
+//import javax.servlet.http.HttpServletRequest;
+//import javax.servlet.http.HttpServletResponse;
+//import java.io.IOException;
+//
+///**
+// * 跨域过滤器
+// * @author kong
+// */
+//@Component
+//@Order(-200)
+//public class CorsFilter implements Filter {
+//
+//	static final String OPTIONS = "OPTIONS";
+//
+//	@Override
+//	public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
+//			throws IOException, ServletException {
+//		HttpServletRequest request = (HttpServletRequest) req;
+//		HttpServletResponse response = (HttpServletResponse) res;
+//		// 允许指定域访问跨域资源
+//		response.setHeader("Access-Control-Allow-Origin", "*");
+//		// 允许所有请求方式
+//		response.setHeader("Access-Control-Allow-Methods", "*");
+//		// 有效时间
+//		response.setHeader("Access-Control-Max-Age", "3600");
+//		// 允许的header参数
+//		response.setHeader("Access-Control-Allow-Headers", "*");
+//		response.setHeader("Access-Control-Allow-Credentials", "true");
+//
+//		// 如果是预检请求,直接返回
+//		if (OPTIONS.equals(request.getMethod())) {
+//			System.out.println("=======================浏览器发来了OPTIONS预检请求==========");
+//			response.getWriter().print("");
+//			return;
+//		}
+//
+//		// System.out.println("*********************************过滤器被使用**************************");
+//		chain.doFilter(req, res);
+//	}
+//
+//	@Override
+//	public void init(FilterConfig filterConfig) {
+//	}
+//
+//	@Override
+//	public void destroy() {
+//	}
+//
+//}
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/saconfig/SaInitCOnfig.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/saconfig/SaInitConfig.java
similarity index 97%
rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/saconfig/SaInitCOnfig.java
rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/saconfig/SaInitConfig.java
index 6a967a9..8c8a046 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/saconfig/SaInitCOnfig.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/saconfig/SaInitConfig.java
@@ -13,7 +13,7 @@ import org.springframework.web.servlet.ModelAndView;
  * @Date 2022/11/28 10:58 上午
  */
 @Configuration
-public class SaInitCOnfig {
+public class SaInitConfig {
 
     @Autowired
     LoginUserHandler loginUserHandler;
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/lucence/LuceneController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/lucence/LuceneController.java
index 1ee76d9..f6f4782 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/lucence/LuceneController.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/lucence/LuceneController.java
@@ -1,5 +1,6 @@
 package org.nl.system.controller.lucence;
 
+import com.alibaba.fastjson.JSONObject;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
@@ -9,10 +10,7 @@ import org.nl.system.service.lucene.LuceneService;
 import org.springframework.data.domain.Pageable;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.Map;
 
@@ -25,11 +23,11 @@ public class LuceneController {
 
     private final LuceneService luceneService;
 
-    @GetMapping("/getAll")
+    @PostMapping("/getAll")
     @Log("日志检索")
     @ApiOperation("日志检索")
     //@PreAuthorize("@el.check('task:list')")
-    public ResponseEntity<Object> get(@RequestParam Map whereJson, Pageable page) {
-        return new ResponseEntity<>(luceneService.getAll(whereJson, page), HttpStatus.OK);
+    public ResponseEntity<Object> get(@RequestBody JSONObject whereJson) {
+        return new ResponseEntity<>(luceneService.getAll(whereJson), HttpStatus.OK);
     }
 }
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/ISysLogService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/ISysLogService.java
index 5ae003c..7300bd1 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/ISysLogService.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/ISysLogService.java
@@ -2,8 +2,10 @@ package org.nl.system.service.logging;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.aspectj.lang.ProceedingJoinPoint;
 import org.nl.common.domain.query.PageQuery;
 import org.nl.system.service.logging.dao.SysLog;
+import org.springframework.scheduling.annotation.Async;
 
 import java.util.Map;
 
@@ -41,4 +43,15 @@ public interface ISysLogService extends IService<SysLog> {
      * 删除所有操作日志
      */
     void delAllByInfo();
+
+    /**
+     * 保存日志数据
+     * @param username 用户
+     * @param browser 浏览器
+     * @param ip 请求IP
+     * @param joinPoint /
+     * @param log 日志实体
+     */
+    @Async
+    void save(String username, String browser, String ip, ProceedingJoinPoint joinPoint, SysLog log);
 }
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/dao/SysLog.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/dao/SysLog.java
index 6067341..369f8dc 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/dao/SysLog.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/dao/SysLog.java
@@ -2,10 +2,11 @@ package org.nl.system.service.logging.dao;
 
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.time.LocalDateTime;
-import java.io.Serializable;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
 
 /**
  * <p>
@@ -16,6 +17,7 @@ import lombok.EqualsAndHashCode;
  * @since 2023-05-08
  */
 @Data
+@NoArgsConstructor
 @EqualsAndHashCode(callSuper = false)
 @TableName("sys_log")
 public class SysLog implements Serializable {
@@ -51,5 +53,8 @@ public class SysLog implements Serializable {
 
     private String create_time;
 
-
+    public SysLog(String logType, Long time) {
+        this.log_type = logType;
+        this.time = time;
+    }
 }
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/impl/SysLogServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/impl/SysLogServiceImpl.java
index 9042e2f..eac87a4 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/impl/SysLogServiceImpl.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/impl/SysLogServiceImpl.java
@@ -1,20 +1,35 @@
 package org.nl.system.service.logging.impl;
 
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.lang.Dict;
+import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.reflect.MethodSignature;
 import org.nl.common.domain.query.PageQuery;
+import org.nl.common.logging.annotation.Log;
+import org.nl.common.utils.StringUtils;
 import org.nl.common.utils.ValidationUtil;
 import org.nl.system.service.logging.ISysLogService;
 import org.nl.system.service.logging.dao.SysLog;
 import org.nl.system.service.logging.dao.mapper.SysLogMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
 
+import java.lang.reflect.Method;
+import java.lang.reflect.Parameter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -71,4 +86,60 @@ public class SysLogServiceImpl extends ServiceImpl<SysLogMapper, SysLog> impleme
     public void delAllByInfo() {
         logMapper.delete(new LambdaQueryWrapper<SysLog>().eq(SysLog::getLog_type, "INFO"));
     }
+
+    @Override
+    public void save(String username, String browser, String ip, ProceedingJoinPoint joinPoint, SysLog logDto) {
+        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
+        Method method = signature.getMethod();
+        Log aopLog = method.getAnnotation(Log.class);
+
+        // 方法路径
+        String methodName = joinPoint.getTarget().getClass().getName() + "." + signature.getName() + "()";
+
+        // 描述
+        if (logDto != null) {
+            logDto.setDescription(aopLog.value());
+        }
+        assert logDto != null;
+        logDto.setRequest_ip(ip);
+
+        logDto.setAddress(StringUtils.getCityInfo(logDto.getRequest_ip()));
+        logDto.setMethod(methodName);
+        logDto.setUsername(username);
+        logDto.setParams(getParameter(method, joinPoint.getArgs()));
+        logDto.setBrowser(browser);
+        logDto.setLog_id(IdUtil.getSnowflake(1,1).nextIdStr());
+        logDto.setCreate_time(DateUtil.now());
+        logMapper.insert(logDto);
+    }
+    /**
+     * 根据方法和传入的参数获取请求参数
+     */
+    private String getParameter(Method method, Object[] args) {
+        List<Object> argList = new ArrayList<>();
+        Parameter[] parameters = method.getParameters();
+        for (int i = 0; i < parameters.length; i++) {
+            //将RequestBody注解修饰的参数作为请求参数
+            RequestBody requestBody = parameters[i].getAnnotation(RequestBody.class);
+            if (requestBody != null) {
+                argList.add(args[i]);
+            }
+            //将RequestParam注解修饰的参数作为请求参数
+            RequestParam requestParam = parameters[i].getAnnotation(RequestParam.class);
+            if (requestParam != null) {
+                Map<String, Object> map = new HashMap<>();
+                String key = parameters[i].getName();
+                if (!StrUtil.isEmpty(requestParam.value())) {
+                    key = requestParam.value();
+                }
+                map.put(key, args[i]);
+                argList.add(map);
+            }
+        }
+        if (argList.size() == 0) {
+            return "";
+        }
+        return argList.size() == 1 ? JSONUtil.toJsonStr(argList.get(0)) : JSONUtil.toJsonStr(argList);
+    }
+
 }
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/LuceneService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/LuceneService.java
index 96560e8..4bb3565 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/LuceneService.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/LuceneService.java
@@ -1,6 +1,7 @@
 package org.nl.system.service.lucene;
 
 import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import org.springframework.data.domain.Pageable;
 
 import java.util.Map;
@@ -12,8 +13,7 @@ public interface LuceneService {
      * 获取数据分页
      *
      * @param whereJson 条件
-     * @param page      分页参数
      * @return Map<String, Object>
      */
-    Map<String, Object> getAll(Map whereJson, Pageable page);
+    Map<String, Object> getAll(JSONObject whereJson);
 }
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/impl/LuceneServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/impl/LuceneServiceImpl.java
index f7cc829..8bafbdf 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/impl/LuceneServiceImpl.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/lucene/impl/LuceneServiceImpl.java
@@ -25,10 +25,10 @@ public class LuceneServiceImpl implements LuceneService {
     private  String luceneUrl;
 
     @Override
-    public Map<String, Object> getAll(Map whereJson, Pageable page) {
+    public Map<String, Object> getAll(JSONObject whereJson) {
         JSONObject jo = new JSONObject();
         try {
-            JSONObject jsonObject = (JSONObject) Searcher.search(luceneUrl, "", whereJson);
+            JSONObject jsonObject = (JSONObject) Searcher.search(luceneUrl, whereJson);
             JSONArray array = jsonObject.getJSONArray("content");
             int totalElements = Integer.parseInt(jsonObject.get("totalElements").toString());
             jo.put("content", array);
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/MesToWmsService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/MesToWmsService.java
deleted file mode 100644
index 1586b16..0000000
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/MesToWmsService.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package org.nl.wms.ext.acs.service;
-
-/**
- * @Author: lyd
- * @Description: mes请求wms
- * @Date: 2023/8/3
- */
-public interface MesToWmsService {
-}
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java
index 68aaf01..6497bf1 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java
@@ -5,6 +5,7 @@ import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.http.HttpStatus;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.SneakyThrows;
@@ -600,21 +601,28 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
      */
     @Override
     public BaseResponse pressRequestMaterial(JSONObject param) {
-        // todo: 换成acs请求
-        String requestNo = param.getString("requestNo");
-        String deviceCode = param.getString("device_code");
+        // 换成acs请求
+        ApplyTaskRequest request = param.toJavaObject(ApplyTaskRequest.class);
+        String deviceCode = request.getDevice_code();
         SchBasePoint basePoint = pointService.getById(deviceCode);
         if (ObjectUtil.isEmpty(basePoint)) {
             throw new BadRequestException("设备[" + deviceCode + "]不存在");
         }
+        if (basePoint.getPoint_status().equals(PointStatusEnum.EMPTY_POINT.getCode())) {
+            throw new BadRequestException("设备[" + deviceCode + "]已经叫料");
+        }
         // 获取设备位
         SchBasePoint devicePoint = pointService.getById(basePoint.getParent_point_code());
-        // todo: 1、校验是否有工单,是否需要叫料
+        // 1、校验是否有工单,是否需要叫料
+        PdmBdWorkorder deviceProductionTask = workorderService.getByCode(request.getOrder_code());
+        if (ObjectUtil.isNotEmpty(deviceProductionTask)) {
+            throw new BadRequestException("压机" + deviceCode + "暂无生产的工单");
+        }
         // todo: 2、通知混碾机生产泥料
-        // todo: 3、修改设备点位为空位,并且更新时间
+        // 3、修改设备点位为空位,并且更新时间
         PointUtils.setUpdateByAcs(devicePoint);
         PointUtils.clearPoint(devicePoint);
-        return null;
+        return BaseResponse.responseOk(request.getRequestNo(), "压机要料完成");
     }
 
     /**
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/MesToWmsServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/MesToWmsServiceImpl.java
deleted file mode 100644
index 1965072..0000000
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/MesToWmsServiceImpl.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.nl.wms.ext.acs.service.impl;
-
-import lombok.extern.slf4j.Slf4j;
-import org.nl.wms.ext.acs.service.MesToWmsService;
-import org.springframework.stereotype.Service;
-
-/**
- * @Author: lyd
- * @Description:
- * @Date: 2023/8/3
- */
-@Slf4j
-@Service
-public class MesToWmsServiceImpl implements MesToWmsService {
-}
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/controller/MesToWmsController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/controller/MesToWmsController.java
new file mode 100644
index 0000000..29ca035
--- /dev/null
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/controller/MesToWmsController.java
@@ -0,0 +1,39 @@
+package org.nl.wms.ext.mes.controller;
+
+import cn.dev33.satoken.annotation.SaIgnore;
+import com.alibaba.fastjson.JSONObject;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.nl.common.logging.annotation.Log;
+import org.nl.wms.ext.mes.service.MesToWmsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Author: lyd
+ * @Description: mes请求wms
+ * @Date: 2023/8/30
+ */
+@RestController
+@Api(tags = "mes请求lms")
+@RequestMapping("/api/mes")
+@Slf4j
+@SaIgnore
+public class MesToWmsController {
+    @Autowired
+    private MesToWmsService mesToWmsService;
+
+    @PostMapping("/downOrder")
+    @Log("下发工单")
+    @ApiOperation("下发工单")
+    @SaIgnore
+    public ResponseEntity<Object> downOrderForMes(@RequestBody JSONObject param) {
+        return new ResponseEntity<>(mesToWmsService.downOrderForMes(param), HttpStatus.OK);
+    }
+}
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/MesToWmsService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/MesToWmsService.java
new file mode 100644
index 0000000..e318b59
--- /dev/null
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/MesToWmsService.java
@@ -0,0 +1,17 @@
+package org.nl.wms.ext.mes.service;
+
+import com.alibaba.fastjson.JSONObject;
+
+/**
+ * @Author: lyd
+ * @Description: mes请求wms
+ * @Date: 2023/8/3
+ */
+public interface MesToWmsService {
+    /**
+     * mes下发工单
+     * @param param
+     * @return
+     */
+    JSONObject downOrderForMes(JSONObject param);
+}
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/WmsToMesService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/WmsToMesService.java
similarity index 75%
rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/WmsToMesService.java
rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/WmsToMesService.java
index 25ee913..02db4cc 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/WmsToMesService.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/WmsToMesService.java
@@ -1,4 +1,4 @@
-package org.nl.wms.ext.acs.service;
+package org.nl.wms.ext.mes.service;
 
 /**
  * @Author: lyd
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/impl/MesToWmsServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/impl/MesToWmsServiceImpl.java
new file mode 100644
index 0000000..ea9497d
--- /dev/null
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/impl/MesToWmsServiceImpl.java
@@ -0,0 +1,21 @@
+package org.nl.wms.ext.mes.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.nl.wms.ext.mes.service.MesToWmsService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Author: lyd
+ * @Description:
+ * @Date: 2023/8/3
+ */
+@Slf4j
+@Service
+public class MesToWmsServiceImpl implements MesToWmsService {
+    @Override
+    public JSONObject downOrderForMes(JSONObject param) {
+        log.info("mes传来工单信息:" + param);
+        return param;
+    }
+}
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToMesServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/impl/WmsToMesServiceImpl.java
similarity index 70%
rename from lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToMesServiceImpl.java
rename to lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/impl/WmsToMesServiceImpl.java
index 903820a..4c296a2 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToMesServiceImpl.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/impl/WmsToMesServiceImpl.java
@@ -1,7 +1,7 @@
-package org.nl.wms.ext.acs.service.impl;
+package org.nl.wms.ext.mes.service.impl;
 
 import lombok.extern.slf4j.Slf4j;
-import org.nl.wms.ext.acs.service.WmsToMesService;
+import org.nl.wms.ext.mes.service.WmsToMesService;
 import org.springframework.stereotype.Service;
 
 /**
diff --git a/lms/nladmin-system/nlsso-server/src/main/resources/IKAnalyzer.cfg.xml b/lms/nladmin-system/nlsso-server/src/main/resources/IKAnalyzer.cfg.xml
new file mode 100644
index 0000000..b2eb693
--- /dev/null
+++ b/lms/nladmin-system/nlsso-server/src/main/resources/IKAnalyzer.cfg.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
+<properties>
+    <comment>IK Analyzer 扩展配置</comment>
+    <!--用户可以在这里配置自己的扩展字典 -->
+    <entry key="ext_dict">ext.dic;</entry>
+
+    <!--用户可以在这里配置自己的扩展停止词字典-->
+    <entry key="ext_stopwords">stopword.dic;</entry>
+
+</properties>
\ No newline at end of file
diff --git a/lms/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml b/lms/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml
index 00e9f62..ae67cb8 100644
--- a/lms/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml
+++ b/lms/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml
@@ -2,56 +2,18 @@ server:
   port: 8010
 #配置数据源
 spring:
+  autoconfigure:
+    exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
   datasource:
-    druid:
-      db-type: com.alibaba.druid.pool.DruidDataSource
-      driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
-      url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:rtmg_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
-#      url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:stand_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
-      username: ${DB_USER:root}
-      password: ${DB_PWD:12356}
-#      password: ${DB_PWD:P@ssw0rd}
-      # 初始连接数
-      initial-size: 5
-      # 最小连接数
-      min-idle: 15
-      # 最大连接数
-      max-active: 30
-      # 超时时间(以秒数为单位)
-      remove-abandoned-timeout: 180
-      # 获取连接超时时间
-      max-wait: 3000
-      # 连接有效性检测时间
-      time-between-eviction-runs-millis: 60000
-      # 连接在池中最小生存的时间
-      min-evictable-idle-time-millis: 300000
-      # 连接在池中最大生存的时间
-      max-evictable-idle-time-millis: 900000
-      # 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除
-      test-while-idle: true
-      # 指明是否在从池中取出连接前进行检验,如果检验失败, 则从池中去除连接并尝试取出另一个
-      test-on-borrow: true
-      # 是否在归还到池中前进行检验
-      test-on-return: false
-      # 检测连接是否有效
-      validation-query: select 1
-      # 配置监控统计
-      webStatFilter:
-        enabled: true
-      stat-view-servlet:
-        enabled: true
-        url-pattern: /druid/*
-        reset-enable: false
-      filter:
-        stat:
-          enabled: true
-          # 记录慢SQL
-          log-slow-sql: true
-          slow-sql-millis: 1000
-          merge-sql: true
-        wall:
-          config:
-            multi-statement-allow: true
+    dynamic:
+      primary: db1
+      datasource:
+        db1:
+          driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
+          url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:rtmg_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
+          username: ${DB_USER:root}
+          password: ${DB_PWD:12356}
+          type: com.alibaba.druid.pool.DruidDataSource
   redis:
     #数据库索引
     host: ${REDIS_HOST:127.0.0.1}
diff --git a/lms/nladmin-system/nlsso-server/src/main/resources/config/application-prod.yml b/lms/nladmin-system/nlsso-server/src/main/resources/config/application-prod.yml
index 53955f1..57376ed 100644
--- a/lms/nladmin-system/nlsso-server/src/main/resources/config/application-prod.yml
+++ b/lms/nladmin-system/nlsso-server/src/main/resources/config/application-prod.yml
@@ -2,55 +2,18 @@ server:
   port: 8010
 #配置数据源
 spring:
+  autoconfigure:
+    exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
   datasource:
-    druid:
-      db-type: com.alibaba.druid.pool.DruidDataSource
-      driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
-      url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.4.121}:${DB_PORT:3306}/${DB_NAME:yy_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
-      username: ${DB_USER:root}
-      password: ${DB_PWD:123456}
-      # 初始连接数
-      initial-size: 5
-      # 最小连接数
-      min-idle: 15
-      # 最大连接数
-      max-active: 60
-      # 获取连接超时时间
-      max-wait: 5000
-      # 连接有效性检测时间
-      time-between-eviction-runs-millis: 60000
-      # 连接在池中最小生存的时间
-      min-evictable-idle-time-millis: 300000
-      # 连接在池中最大生存的时间
-      max-evictable-idle-time-millis: 900000
-      # 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除
-      test-while-idle: true
-      # 指明是否在从池中取出连接前进行检验,如果检验失败, 则从池中去除连接并尝试取出另一个
-      test-on-borrow: true
-      # 是否在归还到池中前进行检验
-      test-on-return: false
-      # 检测连接是否有效
-      validation-query: select 1
-      # 配置监控统计
-      webStatFilter:
-        enabled: true
-      stat-view-servlet:
-        enabled: true
-        # 控制台管理用户名和密码
-        url-pattern: /druid/*
-        reset-enable: false
-        login-username: admin
-        login-password: 123456
-      filter:
-        stat:
-          enabled: true
-          # 记录慢SQL
-          log-slow-sql: true
-          slow-sql-millis: 1000
-          merge-sql: true
-        wall:
-          config:
-            multi-statement-allow: true
+    dynamic:
+      primary: db1
+      datasource:
+        db1:
+          driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
+          url: jdbc:log4jdbc:mysql://${DB_HOST:10.93.41.198}:${DB_PORT:3306}/${DB_NAME:rl_mg_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
+          username: ${DB_USER:root}
+          password: ${DB_PWD:123456}
+          type: com.alibaba.druid.pool.DruidDataSource
   redis:
     #数据库索引
     host: ${REDIS_HOST:127.0.0.1}
diff --git a/lms/nladmin-system/nlsso-server/src/main/resources/config/application.yml b/lms/nladmin-system/nlsso-server/src/main/resources/config/application.yml
index ac11b14..609027f 100644
--- a/lms/nladmin-system/nlsso-server/src/main/resources/config/application.yml
+++ b/lms/nladmin-system/nlsso-server/src/main/resources/config/application.yml
@@ -1,4 +1,44 @@
 spring:
+  datasource:
+    druid:
+      initial-size: 5 #初始化时建立物理连接的个数
+      min-idle: 15 #最小连接池数量
+      maxActive: 30 #最大连接池数量
+      maxWait: 3000 #获取连接时最大等待时间,单位毫秒
+      #申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
+      test-while-idle: true
+      time-between-eviction-runs-millis: 300000 #既作为检测的间隔时间又作为test-while-idle执行的依据
+      min-evictable-idle-time-millis: 900000 #销毁线程时检测当前连接的最后活动时间和当前时间差大于该值时,关闭当前连接
+      #用来检测连接是否有效的sql
+      #mysql中为 select 'x'
+      #oracle中为 select 1 from dual
+      validation-query: SELECT 'x'
+      test-on-borrow: true #申请连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
+      test-on-return: false #归还连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
+      exception-sorter: true #当数据库抛出不可恢复的异常时,抛弃该连接
+      pool-prepared-statements: true #是否缓存preparedStatement,mysql5.5+建议开启
+      max-pool-prepared-statement-per-connection-size: 20 #当值大于20时poolPreparedStatements会自动修改为true
+      #通过connectProperties属性来打开mergeSql功能;慢SQL记录
+      connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
+      use-global-data-source-stat: true #合并多个DruidDataSource的监控数据
+      #filters通过别名的方式配置扩展插件,常用的插件有:
+      #监控统计用的filter:stat 日志用的filter:log4j 防御sql注入的filter:wall
+      filter:
+        stat:
+          enabled: true
+          # 记录慢SQL
+          log-slow-sql: true
+          slow-sql-millis: 1000
+          merge-sql: true
+        wall:
+          config:
+            multi-statement-allow: true
+      #设置访问druid监控页面的拦截路径及账号和密码,默认没有
+      stat-view-servlet:
+        enabled: true
+        url-pattern: /druid/*
+        login-username: admin
+        login-password: admin
   freemarker:
     check-template-location: false
   profiles:
@@ -90,4 +130,4 @@ mybatis-plus:
       id-type: INPUT
 lucene:
   index:
-    path: D:\lucene\index
+    path: C:\lucene\index
diff --git a/lms/nladmin-system/nlsso-server/src/main/resources/ext.dic b/lms/nladmin-system/nlsso-server/src/main/resources/ext.dic
new file mode 100644
index 0000000..e69de29
diff --git a/lms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml b/lms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml
index 9419bb2..631ac9a 100644
--- a/lms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml
+++ b/lms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml
@@ -47,6 +47,7 @@ https://juejin.cn/post/6844903775631572999
         </encoder>
 
     </appender>
+    <appender name="luceneAppender" class="org.nl.config.lucene.LuceneAppender" />
 
     <!--异步到文件-->
     <appender name="asyncFileAppender" class="ch.qos.logback.classic.AsyncAppender">
@@ -102,6 +103,7 @@ https://juejin.cn/post/6844903775631572999
     <springProfile name="prod">
         <root level="debug">
             <appender-ref ref="asyncFileAppender"/>
+            <appender-ref ref="luceneAppender"/>
         </root>
         <logger name="org.springframework" level="ERROR" additivity="false">
             <appender-ref ref="asyncFileAppender"/>
diff --git a/lms/nladmin-system/nlsso-server/src/main/resources/stopword.dic b/lms/nladmin-system/nlsso-server/src/main/resources/stopword.dic
new file mode 100644
index 0000000..a8a5eca
--- /dev/null
+++ b/lms/nladmin-system/nlsso-server/src/main/resources/stopword.dic
@@ -0,0 +1,1241 @@
+a
+an
+and
+are
+as
+at
+be
+but
+by
+for
+if
+in
+into
+is
+it
+no
+not
+of
+on
+or
+such
+that
+the
+their
+then
+there
+these
+they
+this
+to
+was
+will
+with
+,
+?
+、
+。
+“
+”
+《
+》
+!
+,
+:
+;
+?
+人民
+末##末
+啊
+阿
+哎
+哎呀
+哎哟
+唉
+俺
+俺们
+按
+按照
+吧
+吧哒
+把
+罢了
+被
+本
+本着
+比
+比方
+比如
+鄙人
+彼
+彼此
+边
+别
+别的
+别说
+并
+并且
+不比
+不成
+不单
+不但
+不独
+不管
+不光
+不过
+不仅
+不拘
+不论
+不怕
+不然
+不如
+不特
+不惟
+不问
+不只
+朝
+朝着
+趁
+趁着
+乘
+冲
+除
+除此之外
+除非
+除了
+此
+此间
+此外
+从
+从而
+打
+待
+但
+但是
+当
+当着
+到
+得
+的
+的话
+等
+等等
+地
+第
+叮咚
+对
+对于
+多
+多少
+而
+而况
+而且
+而是
+而外
+而言
+而已
+尔后
+反过来
+反过来说
+反之
+非但
+非徒
+否则
+嘎
+嘎登
+该
+赶
+个
+各
+各个
+各位
+各种
+各自
+给
+根据
+跟
+故
+故此
+固然
+关于
+管
+归
+果然
+果真
+过
+哈
+哈哈
+呵
+和
+何
+何处
+何况
+何时
+嘿
+哼
+哼唷
+呼哧
+乎
+哗
+还是
+还有
+换句话说
+换言之
+或
+或是
+或者
+极了
+及
+及其
+及至
+即
+即便
+即或
+即令
+即若
+即使
+几
+几时
+己
+既
+既然
+既是
+继而
+加之
+假如
+假若
+假使
+鉴于
+将
+较
+较之
+叫
+接着
+结果
+借
+紧接着
+进而
+尽
+尽管
+经
+经过
+就
+就是
+就是说
+据
+具体地说
+具体说来
+开始
+开外
+靠
+咳
+可
+可见
+可是
+可以
+况且
+啦
+来
+来着
+离
+例如
+哩
+连
+连同
+两者
+了
+临
+另
+另外
+另一方面
+论
+嘛
+吗
+慢说
+漫说
+冒
+么
+每
+每当
+们
+莫若
+某
+某个
+某些
+拿
+哪
+哪边
+哪儿
+哪个
+哪里
+哪年
+哪怕
+哪天
+哪些
+哪样
+那
+那边
+那儿
+那个
+那会儿
+那里
+那么
+那么些
+那么样
+那时
+那些
+那样
+乃
+乃至
+呢
+能
+你
+你们
+您
+宁
+宁可
+宁肯
+宁愿
+哦
+呕
+啪达
+旁人
+呸
+凭
+凭借
+其
+其次
+其二
+其他
+其它
+其一
+其余
+其中
+起
+起见
+岂但
+恰恰相反
+前后
+前者
+且
+然而
+然后
+然则
+让
+人家
+任
+任何
+任凭
+如
+如此
+如果
+如何
+如其
+如若
+如上所述
+若
+若非
+若是
+啥
+上下
+尚且
+设若
+设使
+甚而
+甚么
+甚至
+省得
+时候
+什么
+什么样
+使得
+是
+是的
+首先
+谁
+谁知
+顺
+顺着
+似的
+虽
+虽然
+虽说
+虽则
+随
+随着
+所
+所以
+他
+他们
+他人
+它
+它们
+她
+她们
+倘
+倘或
+倘然
+倘若
+倘使
+腾
+替
+通过
+同
+同时
+哇
+万一
+往
+望
+为
+为何
+为了
+为什么
+为着
+喂
+嗡嗡
+我
+我们
+呜
+呜呼
+乌乎
+无论
+无宁
+毋宁
+嘻
+吓
+相对而言
+像
+向
+向着
+嘘
+呀
+焉
+沿
+沿着
+要
+要不
+要不然
+要不是
+要么
+要是
+也
+也罢
+也好
+一
+一般
+一旦
+一方面
+一来
+一切
+一样
+一则
+依
+依照
+矣
+以
+以便
+以及
+以免
+以至
+以至于
+以致
+抑或
+因
+因此
+因而
+因为
+哟
+用
+由
+由此可见
+由于
+有
+有的
+有关
+有些
+又
+于
+于是
+于是乎
+与
+与此同时
+与否
+与其
+越是
+云云
+哉
+再说
+再者
+在
+在下
+咱
+咱们
+则
+怎
+怎么
+怎么办
+怎么样
+怎样
+咋
+照
+照着
+者
+这
+这边
+这儿
+这个
+这会儿
+这就是说
+这里
+这么
+这么点儿
+这么些
+这么样
+这时
+这些
+这样
+正如
+吱
+之
+之类
+之所以
+之一
+只是
+只限
+只要
+只有
+至
+至于
+诸位
+着
+着呢
+自
+自从
+自个儿
+自各儿
+自己
+自家
+自身
+综上所述
+总的来看
+总的来说
+总的说来
+总而言之
+总之
+纵
+纵令
+纵然
+纵使
+遵照
+作为
+兮
+呃
+呗
+咚
+咦
+喏
+啐
+喔唷
+嗬
+嗯
+嗳
+~
+!
+.
+:
+"
+'
+(
+)
+*
+A
+白
+社会主义
+--
+..
+>>
+ [
+ ]
+
+<
+>
+/
+\
+|
+-
+_
++
+=
+&
+^
+%
+#
+@
+`
+;
+$
+(
+)
+——
+—
+¥
+·
+...
+‘
+’
+〉
+〈
+…
+ 
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+二
+三
+四
+五
+六
+七
+八
+九
+零
+>
+<
+@
+#
+$
+%
+︿
+&
+*
++
+~
+|
+[
+]
+{
+}
+啊哈
+啊呀
+啊哟
+挨次
+挨个
+挨家挨户
+挨门挨户
+挨门逐户
+挨着
+按理
+按期
+按时
+按说
+暗地里
+暗中
+暗自
+昂然
+八成
+白白
+半
+梆
+保管
+保险
+饱
+背地里
+背靠背
+倍感
+倍加
+本人
+本身
+甭
+比起
+比如说
+比照
+毕竟
+必
+必定
+必将
+必须
+便
+别人
+并非
+并肩
+并没
+并没有
+并排
+并无
+勃然
+不
+不必
+不常
+不大
+不但...而且
+不得
+不得不
+不得了
+不得已
+不迭
+不定
+不对
+不妨
+不管怎样
+不会
+不仅...而且
+不仅仅
+不仅仅是
+不经意
+不可开交
+不可抗拒
+不力
+不了
+不料
+不满
+不免
+不能不
+不起
+不巧
+不然的话
+不日
+不少
+不胜
+不时
+不是
+不同
+不能
+不要
+不外
+不外乎
+不下
+不限
+不消
+不已
+不亦乐乎
+不由得
+不再
+不择手段
+不怎么
+不曾
+不知不觉
+不止
+不止一次
+不至于
+才
+才能
+策略地
+差不多
+差一点
+常
+常常
+常言道
+常言说
+常言说得好
+长此下去
+长话短说
+长期以来
+长线
+敞开儿
+彻夜
+陈年
+趁便
+趁机
+趁热
+趁势
+趁早
+成年
+成年累月
+成心
+乘机
+乘胜
+乘势
+乘隙
+乘虚
+诚然
+迟早
+充分
+充其极
+充其量
+抽冷子
+臭
+初
+出
+出来
+出去
+除此
+除此而外
+除此以外
+除开
+除去
+除却
+除外
+处处
+川流不息
+传
+传说
+传闻
+串行
+纯
+纯粹
+此后
+此中
+次第
+匆匆
+从不
+从此
+从此以后
+从古到今
+从古至今
+从今以后
+从宽
+从来
+从轻
+从速
+从头
+从未
+从无到有
+从小
+从新
+从严
+从优
+从早到晚
+从中
+从重
+凑巧
+粗
+存心
+达旦
+打从
+打开天窗说亮话
+大
+大不了
+大大
+大抵
+大都
+大多
+大凡
+大概
+大家
+大举
+大略
+大面儿上
+大事
+大体
+大体上
+大约
+大张旗鼓
+大致
+呆呆地
+带
+殆
+待到
+单
+单纯
+单单
+但愿
+弹指之间
+当场
+当儿
+当即
+当口儿
+当然
+当庭
+当头
+当下
+当真
+当中
+倒不如
+倒不如说
+倒是
+到处
+到底
+到了儿
+到目前为止
+到头
+到头来
+得起
+得天独厚
+的确
+等到
+叮当
+顶多
+定
+动不动
+动辄
+陡然
+都
+独
+独自
+断然
+顿时
+多次
+多多
+多多少少
+多多益善
+多亏
+多年来
+多年前
+而后
+而论
+而又
+尔等
+二话不说
+二话没说
+反倒
+反倒是
+反而
+反手
+反之亦然
+反之则
+方
+方才
+方能
+放量
+非常
+非得
+分期
+分期分批
+分头
+奋勇
+愤然
+风雨无阻
+逢
+弗
+甫
+嘎嘎
+该当
+概
+赶快
+赶早不赶晚
+敢
+敢情
+敢于
+刚
+刚才
+刚好
+刚巧
+高低
+格外
+隔日
+隔夜
+个人
+各式
+更
+更加
+更进一步
+更为
+公然
+共
+共总
+够瞧的
+姑且
+古来
+故而
+故意
+固
+怪
+怪不得
+惯常
+光
+光是
+归根到底
+归根结底
+过于
+毫不
+毫无
+毫无保留地
+毫无例外
+好在
+何必
+何尝
+何妨
+何苦
+何乐而不为
+何须
+何止
+很
+很多
+很少
+轰然
+后来
+呼啦
+忽地
+忽然
+互
+互相
+哗啦
+话说
+还
+恍然
+会
+豁然
+活
+伙同
+或多或少
+或许
+基本
+基本上
+基于
+极
+极大
+极度
+极端
+极力
+极其
+极为
+急匆匆
+即将
+即刻
+即是说
+几度
+几番
+几乎
+几经
+既...又
+继之
+加上
+加以
+间或
+简而言之
+简言之
+简直
+见
+将才
+将近
+将要
+交口
+较比
+较为
+接连不断
+接下来
+皆可
+截然
+截至
+藉以
+借此
+借以
+届时
+仅
+仅仅
+谨
+进来
+进去
+近
+近几年来
+近来
+近年来
+尽管如此
+尽可能
+尽快
+尽量
+尽然
+尽如人意
+尽心竭力
+尽心尽力
+尽早
+精光
+经常
+竟
+竟然
+究竟
+就此
+就地
+就算
+居然
+局外
+举凡
+据称
+据此
+据实
+据说
+据我所知
+据悉
+具体来说
+决不
+决非
+绝
+绝不
+绝顶
+绝对
+绝非
+均
+喀
+看
+看来
+看起来
+看上去
+看样子
+可好
+可能
+恐怕
+快
+快要
+来不及
+来得及
+来讲
+来看
+拦腰
+牢牢
+老
+老大
+老老实实
+老是
+累次
+累年
+理当
+理该
+理应
+历
+立
+立地
+立刻
+立马
+立时
+联袂
+连连
+连日
+连日来
+连声
+连袂
+临到
+另方面
+另行
+另一个
+路经
+屡
+屡次
+屡次三番
+屡屡
+缕缕
+率尔
+率然
+略
+略加
+略微
+略为
+论说
+马上
+蛮
+满
+没
+没有
+每逢
+每每
+每时每刻
+猛然
+猛然间
+莫
+莫不
+莫非
+莫如
+默默地
+默然
+呐
+那末
+奈
+难道
+难得
+难怪
+难说
+内
+年复一年
+凝神
+偶而
+偶尔
+怕
+砰
+碰巧
+譬如
+偏偏
+乒
+平素
+颇
+迫于
+扑通
+其后
+其实
+奇
+齐
+起初
+起来
+起首
+起头
+起先
+岂
+岂非
+岂止
+迄
+恰逢
+恰好
+恰恰
+恰巧
+恰如
+恰似
+千
+千万
+千万千万
+切
+切不可
+切莫
+切切
+切勿
+窃
+亲口
+亲身
+亲手
+亲眼
+亲自
+顷
+顷刻
+顷刻间
+顷刻之间
+请勿
+穷年累月
+取道
+去
+权时
+全都
+全力
+全年
+全然
+全身心
+然
+人人
+仍
+仍旧
+仍然
+日复一日
+日见
+日渐
+日益
+日臻
+如常
+如此等等
+如次
+如今
+如期
+如前所述
+如上
+如下
+汝
+三番两次
+三番五次
+三天两头
+瑟瑟
+沙沙
+上
+上来
+上去
\ No newline at end of file
diff --git a/lms/nladmin-ui/.env.production b/lms/nladmin-ui/.env.production
index 4c3227d..65580f0 100644
--- a/lms/nladmin-ui/.env.production
+++ b/lms/nladmin-ui/.env.production
@@ -2,6 +2,6 @@ ENV = 'production'
 
 # 如果使用 Nginx 代理后端接口,那么此处需要改为 '/',文件查看 Docker 部署篇,Nginx 配置
 # 接口地址,注意协议,如果你没有配置 ssl,需要将 https 改为 http
-VUE_APP_BASE_API  = 'http://127.0.0.1:8011'
+VUE_APP_BASE_API  = 'http://10.93.41.201:8010'
 # 如果接口是 http 形式, wss 需要改为 ws
-VUE_APP_WS_API = 'ws://127.0.0.1:8011'
+VUE_APP_WS_API = 'ws://10.93.41.201:8010'
diff --git a/lms/nladmin-ui/public/config.js b/lms/nladmin-ui/public/config.js
index 441302a..6d6e117 100644
--- a/lms/nladmin-ui/public/config.js
+++ b/lms/nladmin-ui/public/config.js
@@ -1,9 +1,9 @@
 window.g = {
   dev: {
-    VUE_APP_BASE_API: 'http://127.0.0.1:8010'
+    VUE_APP_BASE_API: 'http://10.93.41.201:8010'
   },
   prod: {
-    VUE_APP_BASE_API: 'http://127.0.0.1:8010'
+    VUE_APP_BASE_API: 'http://10.93.41.201:8010'
   }
 
 }
diff --git a/lms/nladmin-ui/src/views/lucene/api/lucene.js b/lms/nladmin-ui/src/views/lucene/api/lucene.js
index 674bb2c..08f00a5 100644
--- a/lms/nladmin-ui/src/views/lucene/api/lucene.js
+++ b/lms/nladmin-ui/src/views/lucene/api/lucene.js
@@ -3,7 +3,7 @@ import request from '@/utils/request'
 export function getLogData(param) {
   return request({
     url: 'api/lucene/getAll',
-    method: 'get',
+    method: 'post',
     data: param
   })
 }
diff --git a/lms/nladmin-ui/src/views/lucene/index.vue b/lms/nladmin-ui/src/views/lucene/index.vue
index 051df24..cd250b1 100644
--- a/lms/nladmin-ui/src/views/lucene/index.vue
+++ b/lms/nladmin-ui/src/views/lucene/index.vue
@@ -1,102 +1,141 @@
 <template>
   <div class="app-container">
     <div class="head-container">
-      <Search />
-      <crudOperation />
+      <el-form
+        :inline="true"
+        class="demo-form-inline"
+        label-position="right"
+        label-width="90px"
+        label-suffix=":"
+      >
+        <el-form-item label="日志级别">
+          <el-select
+            v-model="query.level"
+            clearable
+            size="mini"
+            placeholder="日志级别"
+            class="filter-item"
+          >
+            <el-option
+              v-for="item in levelOptions"
+              :label="item.label"
+              :value="item.value"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="模糊搜索">
+          <el-input
+            v-model="query.message"
+            clearable
+            size="mini"
+            placeholder="日志内容"
+          />
+        </el-form-item>
+        <el-form-item label="链路ID">
+          <el-input
+            v-model="query.tlogTraceId"
+            clearable
+            size="mini"
+            placeholder="请输入链路ID"
+          />
+        </el-form-item>
+        <el-form-item label="时间">
+          <el-date-picker
+            v-model="query.createTime"
+            type="datetimerange"
+            range-separator="至"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" size="mini" @click="queryData">
+            查询
+          </el-button>
+        </el-form-item>
+      </el-form>
     </div>
     <!--表格渲染-->
-    <el-table
-      ref="table"
-      v-loading="crud.loading"
-      :data="crud.data"
-      style="width: 100%;"
-      @selection-change="crud.selectionChangeHandler"
-    >
-      <!--      <el-table-column type="selection" width="55"/>-->
-      <!--      <el-table-column v-if="false" prop="id" label="id"/>-->
-      <el-table-column prop="operate" width="50" label="操作" />
-      <el-table-column prop="device_code" label="设备号" />
-      <el-table-column prop="task_code" label="任务编号" />
-      <el-table-column prop="instruct_code" label="指令编号" />
-      <el-table-column prop="method" label="方法" />
-      <el-table-column prop="status_code" label="状态码" />
-      <el-table-column prop="requestparam" label="请求参数" />
-      <el-table-column prop="responseparam" label="返回参数" />
-      <el-table-column prop="logTime" width="170" label="记录时间" />
-      <el-table-column prop="content" width="500" label="内容详情" />
-
-    </el-table>
-    <!--分页组件-->
-    <pagination />
+    <el-card shadow="hover" style="width: 100%" class="log-warpper">
+      <div style="width: 100%">
+        <div v-for="(log, index) in logs" :key="index">
+          <div style="margin-bottom: 5px; font-size: 14px;" v-html="log" />
+        </div>
+      </div>
+    </el-card>
+    <!--  分页  -->
+    <el-pagination
+      :page-sizes="[100, 500, 1000]"
+      :page-size.sync="query.size"
+      :total="query.total"
+      :current-page.sync="query.page"
+      style="margin-top: 8px;"
+      layout="total, prev, pager, next, sizes"
+      @size-change="handleSizeChange"
+      @current-change="handleCurrentChange"
+    />
   </div>
 </template>
 
 <script>
-import Search from './search.vue'
-import CRUD, { crud, header, presenter } from '@crud/crud'
-import crudOperation from '@crud/CRUD.operation'
-import pagination from '@crud/Pagination'
-
+import luceneOperation from '@/views/lucene/api/lucene'
+import { default as AnsiUp } from 'ansi_up'
 export default {
   name: 'LuceneLog',
-  components: { Search, pagination, crudOperation },
-  mixins: [presenter(), header(), crud()],
-  cruds: function() {
-    return CRUD({
-      title: '系统参数', url: 'api/lucene/getAll', idField: 'id', sort: 'id,desc',
-      queryOnPresenterCreated: true,
-      optShow: {
-        add: false,
-        edit: false,
-        del: false,
-        download: false
-      },
-      page: {
-        size: 40,
-        total: 0,
-        page: 0
-      },
-      query: {
-        createTime: [new Date(new Date().setTime(new Date().getTime() - 3600 * 1000 * 24)), new Date()]
-      }
-    })
-  },
   data() {
     return {
-      query: { blurry: '123' },
       permission: {
         add: ['admin', 'param:add'],
         edit: ['admin', 'param:edit'],
         del: ['admin', 'param:del']
       },
-
-      rules: {}
+      levelOptions: [{
+        value: 'DEBUG',
+        label: 'DEBUG'
+      }, {
+        value: 'INFO',
+        label: 'INFO'
+      }, {
+        value: 'ERROR',
+        label: 'ERROR'
+      }, {
+        value: 'WARN',
+        label: 'WARN'
+      }],
+      rules: {},
+      logs: [],
+      query: {
+        tlogTraceId: '',
+        message: '',
+        page: 0,
+        size: 100,
+        total: 0,
+        createTime: ''
+      }
     }
   },
   created() {
+    this.queryData()
   },
   methods: {
-    // 钩子:在获取表格数据之前执行,false 则代表不获取数据
-    [CRUD.HOOK.beforeRefresh]() {
-      return true
+    handleSizeChange(val) {
+      this.query.size = val
+      this.queryData()
+    },
+    handleCurrentChange(val) {
+      this.query.page = val
+      this.queryData()
     },
-    confirmDelAll() {
-      this.$confirm(`确认清空所有操作日志吗?`, '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(() => {
-        this.crud.delAllLoading = true
-        delAll('device_execute').then(res => {
-          this.crud.delAllLoading = false
-          this.crud.dleChangePage(1)
-          this.crud.delSuccessNotify()
-          this.crud.toQuery()
-        }).catch(err => {
-          this.crud.delAllLoading = false
-          console.log(err.response.data.message)
-        })
-      }).catch(() => {
+    queryData() {
+      luceneOperation.getLogData(this.query).then(res => {
+        this.logs = [] // 清空
+        var ansi_up = new AnsiUp()
+        // 数据初始化
+        for (const i in res.content) {
+          this.logs[i] = ansi_up.ansi_to_html(res.content[i])
+        }
+        // this.logs = res.content
+        this.query.total = res.totalElements
       })
     }
   }
diff --git a/lms/nladmin-ui/vue.config.js b/lms/nladmin-ui/vue.config.js
index 0bac451..488d833 100644
--- a/lms/nladmin-ui/vue.config.js
+++ b/lms/nladmin-ui/vue.config.js
@@ -19,6 +19,8 @@ module.exports = {
   lintOnSave: process.env.NODE_ENV === 'development',
   productionSourceMap: false,
   devServer: {
+    allowedHosts: ['all'],
+    disableHostCheck: true,
     port: port,
     open: false,
     overlay: {