From f0de929d33b856c853e85c3452b7e63af2f6938d Mon Sep 17 00:00:00 2001
From: liyongde <1419499670@qq.com>
Date: Wed, 27 Dec 2023 18:49:54 +0800
Subject: [PATCH] =?UTF-8?q?opt:=20lucene,=E9=93=BE=E8=B7=AF=E8=BF=BD?=
 =?UTF-8?q?=E8=B8=AA=EF=BC=8CMDC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 lms/nladmin-system/nlsso-server/pom.xml       |  7 +-
 .../src/main/java/org/nl/AppRun.java          | 10 ++-
 .../nl/config/lucene/LogMessageConstant.java  | 13 ++-
 .../org/nl/config/lucene/LuceneAppender.java  | 31 ++++++-
 .../java/org/nl/config/lucene/Searcher.java   | 19 ++--
 .../org/nl/config/thread/TestCollector.java   |  4 +-
 .../controller/param/SysParamController.java  |  5 --
 .../lucene/impl/LuceneServiceImpl.java        |  5 +-
 .../param/impl/SysParamServiceImpl.java       |  7 ++
 .../service/quartz/config/QuartzConfig.java   | 16 +++-
 .../service/quartz/utils/ExecutionJob.java    |  6 +-
 .../controller/MdBaseMaterialController.java  |  4 -
 .../mes/service/impl/WmsToMesServiceImpl.java |  2 +
 .../controller/PdmBdWorkorderController.java  |  1 -
 .../workorder/service/dao/PdmBdWorkorder.java |  1 +
 ...chBaseVehiclematerialgroupServiceImpl.java |  4 +
 .../task/tasks/fj/mapper/FJMapper.xml         |  1 -
 .../src/main/resources/config/application.yml | 90 +++++++++++++------
 .../src/main/resources/logback-spring.xml     | 22 ++++-
 .../src/views/wms/pdm/workerorder/index.vue   |  9 ++
 .../src/views/wms/sch/group/index.vue         | 18 ++++
 21 files changed, 213 insertions(+), 62 deletions(-)

diff --git a/lms/nladmin-system/nlsso-server/pom.xml b/lms/nladmin-system/nlsso-server/pom.xml
index 4737bde..77cc8b1 100644
--- a/lms/nladmin-system/nlsso-server/pom.xml
+++ b/lms/nladmin-system/nlsso-server/pom.xml
@@ -355,7 +355,12 @@
         <dependency>
             <groupId>com.alicp.jetcache</groupId>
             <artifactId>jetcache-starter-redis</artifactId>
-            <version>2.5.14</version>
+            <version>2.7.3</version>
+        </dependency>
+        <dependency>
+            <groupId>redis.clients</groupId>
+            <artifactId>jedis</artifactId>
+            <version>4.3.1</version>
         </dependency>
 
 
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 a119464..2c6a8ed 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
@@ -3,15 +3,16 @@ package org.nl;
 import cn.dev33.satoken.annotation.SaIgnore;
 import com.alicp.jetcache.anno.config.EnableCreateCacheAnnotation;
 import com.alicp.jetcache.anno.config.EnableMethodCache;
+import lombok.extern.slf4j.Slf4j;
 import org.dromara.dynamictp.core.spring.EnableDynamicTp;
 import org.mybatis.spring.annotation.MapperScan;
 import org.nl.common.annotation.Limit;
 import org.nl.config.SpringContextHolder;
+import org.slf4j.MDC;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
+import org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration;
 import org.springframework.boot.web.servlet.ServletComponentScan;
-import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
 import org.springframework.context.annotation.Bean;
 import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
@@ -26,10 +27,12 @@ import org.springframework.web.bind.annotation.RestController;
  * @author ldjun
  * @date 2021/2/22 9:20:19
  */
+@Slf4j
 @EnableAsync
 @RestController
 @EnableDynamicTp
 @SpringBootApplication(exclude = {
+        QuartzAutoConfiguration.class,
         org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class
 })
 @ServletComponentScan
@@ -48,7 +51,6 @@ public class AppRun {
         return new SpringContextHolder();
     }
 
-    
 
     /**
      * 访问首页提示
@@ -59,6 +61,8 @@ public class AppRun {
     @Limit(period = 2, count = 1)
     @SaIgnore
     public String index() {
+        MDC.put("system", "SSS");
+        log.info("sssss");
         return "Backend service started successfully";
     }
 }
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
index 31242b6..e776132 100644
--- 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
@@ -7,9 +7,17 @@ package org.nl.config.lucene;
  */
 public class LogMessageConstant {
     /**
-     *
+     * 标签
+     */
+    public final static String LABEL = "label";
+    /**
+     * 时间
      */
     public final static String SORT_NAME = "time";
+    /**
+     * IP
+     */
+    public final static String IP = "ip";
     /**
      * 级别
      */
@@ -30,6 +38,9 @@ public class LogMessageConstant {
      * 日志内容
      */
     public final static String FIELD_MESSAGE = "message";
+    /**
+     * tlogTraceId
+     */
     public final static String FIELD_TRACEID = "tlogTraceId";
     // 定义颜色值
     /**
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
index 94d6d6a..48d037c 100644
--- 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
@@ -20,9 +20,13 @@ import org.nl.common.utils.YmlConfigFileUtil;
 import org.wltea.analyzer.lucene.IKAnalyzer;
 
 import java.io.IOException;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
 import java.nio.file.Paths;
 import java.util.Map;
 import java.util.Properties;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 public class LuceneAppender extends AppenderBase<ILoggingEvent> {
 
@@ -61,18 +65,43 @@ public class LuceneAppender extends AppenderBase<ILoggingEvent> {
         Map<String, String> mdcPropertyMap = event.getMDCPropertyMap();
         Document doc = new Document();
         long timeStamp = event.getTimeStamp();
+        // 获取本机的IP地址
+        String ipAddress = "-";
+        try {
+            ipAddress = InetAddress.getLocalHost().getHostAddress();
+        } catch (UnknownHostException e) {
+            throw new RuntimeException(e);
+        }
         String formattedDateTime = DateUtil.format(new java.util.Date(timeStamp), "yyyy-MM-dd HH:mm:ss.SSS");
         doc.add(new LongPoint(LogMessageConstant.SORT_NAME, timeStamp));
         doc.add(new NumericDocValuesField(LogMessageConstant.SORT_NAME, timeStamp));
         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.IP, ipAddress));
         doc.add(new StoredField(LogMessageConstant.FIELD_THREAD, event.getThreadName()));
         if (ObjectUtil.isNotEmpty(mdcPropertyMap) && ObjectUtil.isNotEmpty(mdcPropertyMap.get(LogMessageConstant.FIELD_TRACEID))) {
             String traceId = mdcPropertyMap.get(LogMessageConstant.FIELD_TRACEID);
             doc.add(new StringField(LogMessageConstant.FIELD_TRACEID, traceId, Field.Store.YES));
+            doc.add(new StringField(LogMessageConstant.LABEL, ObjectUtil.isNotEmpty(mdcPropertyMap.get("tag_name"))
+                    ? mdcPropertyMap.get("tag_name") : "-", Field.Store.YES));
         } else {
-            doc.add(new StringField(LogMessageConstant.FIELD_TRACEID, "无生成链路ID", Field.Store.YES));
+            // 定义正则表达式,匹配17位数字
+            String regex = "\\d{17}";
+            // 创建 Pattern 对象
+            Pattern pattern = Pattern.compile(regex);
+            // 创建 Matcher 对象
+            Matcher matcher = pattern.matcher(message);
+            String matchedNumber = null;
+            // 查找匹配的数字
+            while (matcher.find()) {
+                matchedNumber = matcher.group();
+            }
+            if (ObjectUtil.isNotEmpty(matchedNumber)) {
+                doc.add(new StringField(LogMessageConstant.FIELD_TRACEID, matchedNumber, 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 {
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 2126e2b..8fb0631 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
@@ -92,17 +92,20 @@ public class Searcher {
                     whereJson.get(LogMessageConstant.FIELD_LEVEL).toString()));
             booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST);
         }
-        docs = searcher.search(booleanQueryBuilder.build(), end, sort);
         List<String> list = new ArrayList<>();
+        TopFieldCollector collector = TopFieldCollector.create(sort, 20000, 0);
+        searcher.search(booleanQueryBuilder.build(), collector);
+        docs = collector.topDocs(pageNum*pageSize, pageSize);
         ScoreDoc[] scoreDocs = docs.scoreDocs;
-        if (end > docs.totalHits.value) {
-            end = (int) docs.totalHits.value;
-        }
+        int totalSize = collector.getTotalHits();
 
-        for (int i = start; i < end; i++) {
-            ScoreDoc scoreDoc = scoreDocs[i];
+        for (ScoreDoc scoreDoc : scoreDocs) {
             Document doc = reader.document(scoreDoc.doc);
-            String logInfo = LogMessageConstant.COLOR_YELLOW + doc.get(LogMessageConstant.FIELD_TRACEID) +
+            String logInfo = LogMessageConstant.COLOR_CYAN + doc.get(LogMessageConstant.LABEL) +
+                    LogMessageConstant.COLOR_RESET + " - " +
+                    LogMessageConstant.COLOR_BLUE + doc.get(LogMessageConstant.IP) +
+                    LogMessageConstant.COLOR_RESET + " - " +
+                    LogMessageConstant.COLOR_YELLOW + doc.get(LogMessageConstant.FIELD_TRACEID) +
                     LogMessageConstant.COLOR_RESET + " - " +
                     LogMessageConstant.COLOR_RED + doc.get(LogMessageConstant.FIELD_TIMESTAMP) +
                     LogMessageConstant.COLOR_RESET + " - " +
@@ -118,7 +121,7 @@ public class Searcher {
         reader.close();
         JSONObject jo = new JSONObject();
         jo.put("content", list);
-        jo.put("totalElements", docs.totalHits.value);
+        jo.put("totalElements", totalSize);
         return jo;
     }
 
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/thread/TestCollector.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/thread/TestCollector.java
index c919f76..35bc57d 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/thread/TestCollector.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/thread/TestCollector.java
@@ -11,9 +11,7 @@ import org.dromara.dynamictp.core.monitor.collector.AbstractCollector;
 public class TestCollector extends AbstractCollector {
     @Override
     public void collect(ThreadPoolStats threadPoolStats) {
-        if (threadPoolStats.getPoolName().equals("el-thread")) {
-            System.out.println("ssssssssssssssss:" + threadPoolStats);
-        }
+//        System.out.println("ssssssssssssssss:" + threadPoolStats);
     }
 
     @Override
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/param/SysParamController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/param/SysParamController.java
index ac8048b..8273a55 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/param/SysParamController.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/controller/param/SysParamController.java
@@ -36,7 +36,6 @@ class SysParamController {
 
     @GetMapping
     @Log("查询系统参数")
-
     //@SaCheckPermission("param:list")
     public ResponseEntity<Object> query(@RequestParam Map whereJson, PageQuery page) {
         return new ResponseEntity<>(TableDataInfo.build(paramService.queryPage(whereJson, page)), HttpStatus.OK);
@@ -44,7 +43,6 @@ class SysParamController {
 
     @PostMapping
     @Log("新增系统参数")
-
     //@SaCheckPermission("param:add")
     public ResponseEntity<Object> create(@Validated @RequestBody Param param) {
         paramService.create(param);
@@ -53,7 +51,6 @@ class SysParamController {
 
     @PutMapping
     @Log("修改系统参数")
-
     //@SaCheckPermission("param:edit")
     public ResponseEntity<Object> update(@Validated @RequestBody Param param) {
         paramService.update(param);
@@ -61,7 +58,6 @@ class SysParamController {
     }
 
     @Log("删除系统参数")
-
     //@SaCheckPermission("param:del")
     @DeleteMapping
     public ResponseEntity<Object> delete(@RequestBody String[] ids) {
@@ -72,7 +68,6 @@ class SysParamController {
 
     @PostMapping("/getValueByCode/{code}")
     @Log("根据编码获取值")
-
     @SaIgnore
     public ResponseEntity<Object> getValueByCode(@PathVariable String code) {
         return new ResponseEntity<>(paramService.findByCode(code), HttpStatus.CREATED);
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 c995ad4..1e8aaea 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
@@ -17,10 +17,11 @@ import java.util.Map;
 @Slf4j
 public class LuceneServiceImpl implements LuceneService {
 
-    //日志索引目录
+    /**
+     * 日志索引目录
+     */
     @Value("${lucene.index.path}")
     private String luceneUrl;
-
     @Override
     public Map<String, Object> getAll(JSONObject whereJson) {
         JSONObject jo = new JSONObject();
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/param/impl/SysParamServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/param/impl/SysParamServiceImpl.java
index ffb0e5d..9946c5b 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/param/impl/SysParamServiceImpl.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/param/impl/SysParamServiceImpl.java
@@ -3,6 +3,10 @@ package org.nl.system.service.param.impl;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.alicp.jetcache.anno.CachePenetrationProtect;
+import com.alicp.jetcache.anno.CacheType;
+import com.alicp.jetcache.anno.CacheUpdate;
+import com.alicp.jetcache.anno.Cached;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -66,6 +70,7 @@ public class SysParamServiceImpl extends ServiceImpl<SysParamMapper, Param> impl
     }
 
     @Override
+    @CacheUpdate(name="paramCache-", key="#param.code", value="#param")
     @Transactional(rollbackFor = Exception.class)
     public void update(Param param) {
         Param paramObj = paramMapper.selectById(param.getId());
@@ -90,6 +95,8 @@ public class SysParamServiceImpl extends ServiceImpl<SysParamMapper, Param> impl
     }
 
     @Override
+    @CachePenetrationProtect
+    @Cached(name="paramCache-",key = "#code", expire = 3600, cacheType = CacheType.REMOTE)
     public Param findByCode(String code) {
         QueryWrapper<Param> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("code", code);
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/config/QuartzConfig.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/config/QuartzConfig.java
index 3469fe3..b3b88e5 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/config/QuartzConfig.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/config/QuartzConfig.java
@@ -9,9 +9,10 @@ import org.springframework.scheduling.quartz.AdaptableJobFactory;
 import org.springframework.scheduling.quartz.SchedulerFactoryBean;
 import org.springframework.stereotype.Component;
 
+import java.util.Properties;
+
 /**
  * 定时任务配置
- *
  * @author /
  * @date 2019-01-07
  */
@@ -42,17 +43,24 @@ public class QuartzConfig {
 
     /**
      * 注入scheduler到spring
-     *
      * @param quartzJobFactory /
      * @return Scheduler
      * @throws Exception /
      */
     @Bean(name = "scheduler")
     public Scheduler scheduler(QuartzJobFactory quartzJobFactory) throws Exception {
-        SchedulerFactoryBean factoryBean = new SchedulerFactoryBean();
+        SchedulerFactoryBean factoryBean=new SchedulerFactoryBean();
+
+        //https://blog.csdn.net/YuChenIT/article/details/133344898
+        Properties prop = new Properties();
+        prop.put("org.quartz.threadPool.threadCount", "9");
+        factoryBean.setWaitForJobsToCompleteOnShutdown(true);
+
+        factoryBean.setQuartzProperties(prop);
+
         factoryBean.setJobFactory(quartzJobFactory);
         factoryBean.afterPropertiesSet();
-        Scheduler scheduler = factoryBean.getScheduler();
+        Scheduler scheduler=factoryBean.getScheduler();
         scheduler.start();
         return scheduler;
     }
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/utils/ExecutionJob.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/utils/ExecutionJob.java
index 9faf0da..19ea970 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/utils/ExecutionJob.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/quartz/utils/ExecutionJob.java
@@ -2,6 +2,7 @@ package org.nl.system.service.quartz.utils;
 
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
+import com.yomahub.tlog.task.quartz.TLogQuartzJobBean;
 import lombok.extern.slf4j.Slf4j;
 import org.nl.common.utils.RedisUtils;
 import org.nl.common.utils.ThrowableUtil;
@@ -32,7 +33,7 @@ import java.util.concurrent.ThreadPoolExecutor;
 @SuppressWarnings({"unchecked", "all"})
 @Slf4j
 @DisallowConcurrentExecution
-public class ExecutionJob extends QuartzJobBean {
+public class ExecutionJob extends TLogQuartzJobBean {
 
     /**
      * 该处仅供参考
@@ -41,8 +42,9 @@ public class ExecutionJob extends QuartzJobBean {
     @Qualifier("threadPoolExecutor")
     private ThreadPoolExecutor EXECUTOR;
 
+
     @Override
-    protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
+    public void executeTask(JobExecutionContext context) throws JobExecutionException {
         SysQuartzJob quartzJob = (SysQuartzJob) context.getMergedJobDataMap().get(SysQuartzJob.JOB_KEY);
         // 获取spring bean
         ISysQuartzJobService quartzJobService = SpringContextHolder.getBean(SysQuartzJobServiceImpl.class);
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/controller/MdBaseMaterialController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/controller/MdBaseMaterialController.java
index 5aed83d..5aa9026 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/controller/MdBaseMaterialController.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/controller/MdBaseMaterialController.java
@@ -43,7 +43,6 @@ public class MdBaseMaterialController {
 
     @PostMapping
     @Log("新增物料基础信息")
-
     //@SaCheckPermission("@el.check('mdBaseMaterial:add')")
     public ResponseEntity<Object> create(@Validated @RequestBody MdBaseMaterial entity) {
         mdBaseMaterialService.create(entity);
@@ -52,7 +51,6 @@ public class MdBaseMaterialController {
 
     @PutMapping
     @Log("修改物料基础信息")
-
     //@SaCheckPermission("@el.check('mdBaseMaterial:edit')")
     public ResponseEntity<Object> update(@Validated @RequestBody MdBaseMaterial entity) {
         mdBaseMaterialService.update(entity);
@@ -60,7 +58,6 @@ public class MdBaseMaterialController {
     }
 
     @Log("删除物料基础信息")
-
     //@SaCheckPermission("@el.check('mdBaseMaterial:del')")
     @DeleteMapping
     public ResponseEntity<Object> delete(@RequestBody Set<String> ids) {
@@ -70,7 +67,6 @@ public class MdBaseMaterialController {
 
     @PostMapping("/synchronize")
     @Log("物料同步")
-
     @Limit(period = 1, count = 1)
     //@SaCheckPermission("materialtype:list")
     public ResponseEntity<Object> synchronize(@RequestBody Map whereJson) {
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/impl/WmsToMesServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/impl/WmsToMesServiceImpl.java
index 5b3c05c..018a0f1 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/impl/WmsToMesServiceImpl.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/impl/WmsToMesServiceImpl.java
@@ -27,6 +27,7 @@ import org.nl.wms.sch.task_manage.GeneralDefinition;
 import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
 import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
 import org.nl.wms.sch.task_manage.enums.WorkOrderStatusEnum;
+import org.slf4j.MDC;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
@@ -73,6 +74,7 @@ public class WmsToMesServiceImpl implements WmsToMesService {
 
     @Override
     public void synchronizeMaterialInfo() {
+        MDC.put("system", "log");
         log.info("同步物料开始");
         // 获取lms数据库中的最后获取时间
 //        LambdaQueryWrapper<MdBaseMaterial> lmsMaterialTabQuery = new QueryWrapper<MdBaseMaterial>().lambda();
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/controller/PdmBdWorkorderController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/controller/PdmBdWorkorderController.java
index d0c34ab..ceb1a6f 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/controller/PdmBdWorkorderController.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/controller/PdmBdWorkorderController.java
@@ -62,7 +62,6 @@ public class PdmBdWorkorderController {
 
     @GetMapping("/materials")
     @Log("查询物料基础信息")
-
     //@SaCheckPermission("@el.check('mdBaseMaterial:list')")
     public ResponseEntity<Object> queryMaterials(MdBaseMaterialQuery whereJson, PageQuery page) {
         return new ResponseEntity<>(TableDataInfo.build(mdBaseMaterialService.queryByInventory(whereJson, page)), HttpStatus.OK);
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/PdmBdWorkorder.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/PdmBdWorkorder.java
index 0fb65a3..849a053 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/PdmBdWorkorder.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/PdmBdWorkorder.java
@@ -138,6 +138,7 @@ public class PdmBdWorkorder implements Serializable {
     private Integer qualified_qty;
 
     private Integer unqualified_qty;
+    private Integer priority;
 
     @TableField(exist = false)
     private String material_name;
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/SchBaseVehiclematerialgroupServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/SchBaseVehiclematerialgroupServiceImpl.java
index 4512cd5..1bc829c 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/SchBaseVehiclematerialgroupServiceImpl.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/SchBaseVehiclematerialgroupServiceImpl.java
@@ -2,6 +2,7 @@ package org.nl.wms.sch.group.service.impl;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -65,6 +66,9 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
         entity.setUpdate_id(currentUserId);
         entity.setUpdate_name(nickName);
         entity.setUpdate_time(now);
+        if (ObjectUtil.isNotEmpty(entity.getOut_kiln_time())) {
+            entity.setIs_firing(true);
+        }
         vehiclematerialgroupMapper.insert(entity);
     }
 
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.xml
index 030e09e..8ebd4fe 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.xml
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.xml
@@ -13,7 +13,6 @@
         WHERE (p.ing_task_code = '' OR p.ing_task_code IS NULL)
         AND p.is_used = 1
         AND p.point_status = '3'
-        AND vg.is_firing = true
         AND vg.material_id = #{materialId}
         AND TIMESTAMPDIFF(HOUR, vg.instorage_time, NOW()) >= ma.cooling_time
         AND p.region_code IN
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 21303f4..97d4172 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,25 +1,15 @@
+server:
+  tomcat:
+    relaxed-query-chars: [ '|','{','}','[',']' ]  #字符问题:https://blog.csdn.net/CanYue_Yi/article/details/109182577
+    relaxed-path-chars: [ '|','{','}','[',']' ]  #字符问题: https://blog.csdn.net/weixin_41996632/article/details/90715118
 spring:
-  dynamic:
-    tp:
-      enabled: true                               # 是否启用 dynamictp,默认true
-      enabledCollect: true                        # 是否开启监控指标采集,默认true
-      collectorTypes: logging,test_collect          # 监控数据采集器类型(logging | micrometer | internal_logging),默认micrometer
-      logPath: C:\log\lms # 监控日志数据路径,默认 ${user.home}/logs,采集类型非logging不用配置
-      monitorInterval: 8
-      tomcatTp: # tomcat webserver 线程池配置
-        threadPoolAliasName: tomcat 线程池          # 线程池别名,可选
-        corePoolSize: 100
-        maximumPoolSize: 200
-        keepAliveTime: 60
-        runTimeout: 200
-        queueTimeout: 100
   datasource:
     druid:
       initial-size: 5 #初始化时建立物理连接的个数
       min-idle: 15 #最小连接池数量
       maxActive: 30 #最大连接池数量
       maxWait: 3000 #获取连接时最大等待时间,单位毫秒
-      #申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
+      # 申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
       test-while-idle: true
       time-between-eviction-runs-millis: 300000 #既作为检测的间隔时间又作为test-while-idle执行的依据
       min-evictable-idle-time-millis: 900000 #销毁线程时检测当前连接的最后活动时间和当前时间差大于该值时,关闭当前连接
@@ -63,16 +53,45 @@ spring:
     redis:
       repositories:
         enabled: false
-#
-#  #配置 Jpa
-#  jpa:
-#    hibernate:
-#      ddl-auto: none
-#    open-in-view: true
-#    properties:
-#      hibernate:
-#        dialect: org.hibernate.dialect.MySQL5InnoDBDialect
-#        enable_lazy_load_no_trans: true
+  dynamic:
+    tp:
+      enabled: true                               # 是否启用 dynamictp,默认true
+      enabledCollect: true                        # 是否开启监控指标采集,默认true
+      enabled-banner: false
+      collectorTypes: logging,test_collect          # 监控数据采集器类型(logging | micrometer | internal_logging),默认micrometer
+      logPath: C:\log\lms # 监控日志数据路径,默认 ${user.home}/logs,采集类型非logging不用配置
+      monitorInterval: 8
+      tomcatTp: # tomcat webserver 线程池配置
+        threadPoolAliasName: tomcat 线程池          # 线程池别名,可选
+        corePoolSize: 100
+        maximumPoolSize: 200
+        keepAliveTime: 60
+        runTimeout: 200
+        queueTimeout: 100
+        notifyItems: # 报警项,不配置自动会按默认值配置(变更通知、容量报警、活性报警、拒绝报警、任务超时报警)
+          - type: change
+            enabled: true
+
+          - type: capacity               # 队列容量使用率,报警项类型,查看源码 NotifyTypeEnum枚举类
+            enabled: true
+            threshold: 80                # 报警阈值,默认70,意思是队列使用率达到70%告警
+            interval: 120                # 报警间隔(单位:s),默认120
+
+          - type: liveness               # 线程池活性
+            enabled: true
+            threshold: 80                # 报警阈值,默认 70,意思是活性达到70%告警
+
+          - type: reject                 # 触发任务拒绝告警
+            enabled: true
+            threshold: 100               # 默认阈值10
+
+          - type: run_timeout            # 任务执行超时告警
+            enabled: true
+            threshold: 100               # 默认阈值10
+
+          - type: queue_timeout          # 任务排队超时告警
+            enabled: true
+            threshold: 100               # 默认阈值10
 task:
   pool:
     # 核心线程池大小
@@ -147,3 +166,24 @@ mybatis-plus:
 lucene:
   index:
     path: D:\lucene\index
+
+jetcache:
+  statIntervalMinutes: 15
+  areaInCacheName: false
+  local:
+    default:
+      type: linkedhashmap
+      keyConvertor: fastjson
+  remote:
+    default:
+      type: redis
+      keyConvertor: fastjson2
+      broadcastChannel: projectA
+      valueEncoder: java
+      valueDecoder: java
+      poolConfig:
+        minIdle: 5 # 连接池中的最小空闲连接数
+        maxIdle: 20 # 连接池中的最大空闲连接数
+        maxTotal: 50 # 连接池中的最大连接数
+      host: 127.0.0.1
+      port: 6379
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 c27d02c..3849727 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
@@ -51,7 +51,7 @@ https://juejin.cn/post/6844903775631572999
     </appender>
     <appender name="luceneAppender" class="org.nl.config.lucene.LuceneAppender" >
         <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>INFO</level>
+            <level>DEBUG</level>
             <onMatch>ACCEPT</onMatch>
             <onMismatch>DENY</onMismatch>
         </filter>
@@ -75,6 +75,26 @@ https://juejin.cn/post/6844903775631572999
             <appender-ref ref="asyncFileAppender"/>
             <appender-ref ref="asyncLuceneAppender"/>
         </root>
+        <logger name="com.baomidou.mybatisplus.core.MybatisConfiguration" level="ERROR" additivity="false">
+            <appender-ref ref="asyncLuceneAppender"/>
+            <appender-ref ref="asyncFileAppender"/>
+        </logger>
+        <logger name="org.redisson.command.RedisExecutor" level="ERROR" additivity="false">
+            <appender-ref ref="asyncLuceneAppender"/>
+            <appender-ref ref="asyncFileAppender"/>
+        </logger>
+        <logger name="org.reflections.Reflections" level="ERROR" additivity="false">
+            <appender-ref ref="asyncLuceneAppender"/>
+            <appender-ref ref="asyncFileAppender"/>
+        </logger>
+        <logger name="org.redisson.connection.ClientConnectionsEntry" level="ERROR" additivity="false">
+            <appender-ref ref="asyncLuceneAppender"/>
+            <appender-ref ref="asyncFileAppender"/>
+        </logger>
+        <logger name="org.mybatis.spring.mapper.ClassPathMapperScanner" level="ERROR" additivity="false">
+            <appender-ref ref="asyncLuceneAppender"/>
+            <appender-ref ref="asyncFileAppender"/>
+        </logger>
         <logger name="org.springframework" level="ERROR" additivity="true">
             <appender-ref ref="CONSOLE"/>
         </logger>
diff --git a/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue b/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue
index c2911a1..977f20a 100644
--- a/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue
+++ b/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue
@@ -289,6 +289,14 @@
               <el-radio :label="false">否</el-radio>
             </el-radio-group>
           </el-form-item>
+          <el-form-item v-if="form.region_code === 'YZ'" label="优先级">
+            <el-input-number
+              v-model.number="form.priority"
+              :min="0"
+              :max="99"
+              style="width: 240px;"
+            />
+          </el-form-item>
           <el-form-item label="是否加急" prop="is_needmove">
             <el-radio-group v-model="form.is_urgent" style="width: 240px">
               <el-radio :label="true">是</el-radio>
@@ -498,6 +506,7 @@ const defaultForm = {
   order_subnum: 0,
   guadansum: 0,
   ext_data: 0,
+  priority: 1,
   show: false
 }
 export default {
diff --git a/lms/nladmin-ui/src/views/wms/sch/group/index.vue b/lms/nladmin-ui/src/views/wms/sch/group/index.vue
index 24cdddd..cbf943c 100644
--- a/lms/nladmin-ui/src/views/wms/sch/group/index.vue
+++ b/lms/nladmin-ui/src/views/wms/sch/group/index.vue
@@ -209,6 +209,24 @@
               />
             </el-select>
           </el-form-item>
+          <el-form-item label="入窑时间">
+            <el-date-picker
+              v-model="form.into_kiln_time"
+              type="datetime"
+              value-format="yyyy-MM-dd HH:mm:ss"
+              style="width: 240px;"
+              placeholder="选择日期时间">
+            </el-date-picker>
+          </el-form-item>
+          <el-form-item label="出窑时间">
+            <el-date-picker
+              v-model="form.out_kiln_time"
+              type="datetime"
+              value-format="yyyy-MM-dd HH:mm:ss"
+              style="width: 240px;"
+              placeholder="选择日期时间">
+            </el-date-picker>
+          </el-form-item>
           <!--<el-form-item label="是否首个流程任务">
             <el-input v-model="form.is_first_flow_task" style="width: 240px;" />
           </el-form-item>-->