Browse Source

添加异步多线程调度功能

shilin 5 months ago
parent
commit
eda1749232
23 changed files with 877 additions and 822 deletions
  1. 1 1
      alarm-custom/pom.xml
  2. 6 6
      alarm-custom/src/main/java/com/gyee/alarm/CalculateServer.java
  3. 3 3
      alarm-custom/src/main/java/com/gyee/alarm/config/ThreadPoolTaskConfig.java
  4. 28 10
      alarm-custom/src/main/java/com/gyee/alarm/init/CacheContext.java
  5. 1 1
      alarm-custom/src/main/java/com/gyee/alarm/util/redis/RedisAutoConfiguration.java
  6. 1 1
      alarm-custom/src/main/java/com/gyee/alarm/util/redis/RedisConfig.java
  7. 1 1
      alarm-custom/src/main/java/com/gyee/alarm/util/redis/RedisService.java
  8. 1 1
      alarm-custom/src/main/java/com/gyee/alarm/util/redis/RedisServiceImpl.java
  9. 4 1
      alarm-custom/src/main/java/com/gyee/alarm/service/AlarmCustomAsyncService.java
  10. 18 7
      alarm-custom/src/main/java/com/gyee/alarm/service/AlarmCustomService.java
  11. 1 7
      alarm-custom/src/main/java/com/gyee/alarm/service/CustomAsyncService.java
  12. 2 1
      alarm-custom/src/main/java/com/gyee/alarm/service/initalcache/CacheService.java
  13. 168 19
      alarm-custom/src/main/java/com/gyee/alarm/task/thread/AlarmThread.java
  14. 60 15
      alarm-custom/src/main/java/com/gyee/alarm/task/thread/ReadWtDataThread.java
  15. 189 0
      alarm-custom/src/main/resources/application-db.yml
  16. 1 1
      alarm-custom/src/main/resources/application.yml
  17. 6 6
      alarm-scanner/src/main/java/com/gyee/alarm/CalculateServer.java
  18. 11 4
      alarm-scanner/src/main/java/com/gyee/alarm/service/AlarmScannerService.java
  19. 185 14
      alarm-scanner/src/main/java/com/gyee/alarm/task/thread/AlarmThread.java
  20. 1 1
      alarm-service/pom.xml
  21. 186 0
      alarm-service/src/main/resources/application-db.yml
  22. 1 1
      alarm-service/src/main/resources/application.yml
  23. 2 721
      log/ota.log

+ 1 - 1
alarm-custom/pom.xml

@@ -205,7 +205,7 @@
         <dependency>
             <groupId>com.taosdata.jdbc</groupId>
             <artifactId>taos-jdbcdriver</artifactId>
-            <version>3.2.2</version>
+            <version>2.0.39</version>
         </dependency>
 
     </dependencies>

+ 6 - 6
alarm-custom/src/main/java/com/gyee/alarm/CalculateServer.java

@@ -12,11 +12,11 @@ import javax.annotation.Resource;
 @Component
 public class CalculateServer {
 
-//    @Resource
-//    AlarmCustomService alarmCustomService;
-
     @Resource
-    AlarmCustomAsyncService alarmCustomAsyncService;
+    AlarmCustomService alarmCustomService;
+
+//    @Resource
+//    AlarmCustomAsyncService alarmCustomAsyncService;
     private boolean serverStarted = false;
 
     private boolean runStarted = false;
@@ -29,9 +29,9 @@ public class CalculateServer {
             //GlobalVar.config = configProperties;
             log.warn("自定义报警计算服务启动...... ");
             log.info("开始加载配置及测点数据......");
-            alarmCustomAsyncService.init();
+            alarmCustomService.init();
             runStarted = true;
-            alarmCustomAsyncService.taskJobs(runStarted);
+            alarmCustomService.taskJobs(runStarted);
             serverStarted = true;
         } catch (Exception ex) {
             serverStarted = false;

+ 3 - 3
alarm-custom/src/main/java/com/gyee/alarm/config/ThreadPoolTaskConfig.java

@@ -17,11 +17,11 @@ public class ThreadPoolTaskConfig {
     /**
      * 核心线程数(默认线程数)
      */
-    private static final int corePoolSize = 10;
+    private static final int corePoolSize = 60;
     /**
      * 最大线程数
      */
-    private static final int maxPoolSize = 20;
+    private static final int maxPoolSize = 120;
     /**
      * 允许线程空闲时间(单位:默认为秒)
      */
@@ -33,7 +33,7 @@ public class ThreadPoolTaskConfig {
     /**
      * 允许等待最长时间
      */
-    private static final int awaitTime = 15;
+    private static final int awaitTime = 180;
     /**
      * 线程池名前缀
      */

+ 28 - 10
alarm-custom/src/main/java/com/gyee/alarm/init/CacheContext.java

@@ -3,13 +3,14 @@ package com.gyee.alarm.init;
 
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.TypeReference;
+import com.gyee.alarm.init.redis.RedisService;
 import com.gyee.alarm.model.vo.AlarmVo;
 import com.gyee.common.model.PointData;
 import com.gyee.common.model.StringUtils;
 import com.gyee.alarm.model.auto.*;
 import com.gyee.alarm.service.auto.*;
 import com.gyee.alarm.service.realtimelibrary.TheoreticalPowerService;
-import com.gyee.alarm.util.redis.RedisService;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Value;
@@ -351,9 +352,13 @@ public class CacheContext implements CommandLineRunner {
             Map<String, ProBasicPowerstationPoint> stringWindpowerstationpointnewMap = JSONObject.parseObject(wsString, new TypeReference<Map<String, ProBasicPowerstationPoint>>() {
             });
 
-            for(Map.Entry<String,ProBasicPowerstationPoint> entry : stringWindpowerstationpointnewMap.entrySet()){
-                wsPointList.add(entry.getValue());
+            if(null !=stringWindpowerstationpointnewMap)
+            {
+                for(Map.Entry<String,ProBasicPowerstationPoint> entry : stringWindpowerstationpointnewMap.entrySet()){
+                    wsPointList.add(entry.getValue());
+                }
             }
+
             wspointmap.put(p.getId(),stringWindpowerstationpointnewMap);
 
         });
@@ -389,9 +394,13 @@ public class CacheContext implements CommandLineRunner {
             Map<String, ProBasicEquipmentPoint> stringWindturbinetestingpointnewMap = JSONObject.parseObject(wtString, new TypeReference<Map<String, ProBasicEquipmentPoint>>() {
             });
 
-            for(Map.Entry<String,ProBasicEquipmentPoint> entry : stringWindturbinetestingpointnewMap.entrySet()){
-               wtPointList.add(entry.getValue());
+            if(null !=stringWindturbinetestingpointnewMap)
+            {
+                for(Map.Entry<String,ProBasicEquipmentPoint> entry : stringWindturbinetestingpointnewMap.entrySet()){
+                    wtPointList.add(entry.getValue());
+                }
             }
+
             wtpAimap.put(wt.getId(),stringWindturbinetestingpointnewMap);
 
 
@@ -544,9 +553,13 @@ public class CacheContext implements CommandLineRunner {
         zwpls = proBasicWindpowerstationService.list().stream().filter(i->runWpids.contains(i.getId())&& i.getIsAble()==1).collect(Collectors.toList());
         wpls = proBasicWindpowerstationService.list().stream().filter(i->runWpids.contains(i.getId()) && i.getIsAble()==1).collect(Collectors.toList());;
         meterpoints = proBasicMeterPointService.list().stream().filter(i->runWpids.contains(i.getWindpowerstationId()) && i.getIsAble()==1).collect(Collectors.toList());
-        meterpoints.stream().forEach(meterpoint -> {
-            meterpointMap.put(meterpoint.getNemCode(),meterpoint);
-        });
+        if(null !=meterpoints)
+        {
+            meterpoints.stream().forEach(meterpoint -> {
+                meterpointMap.put(meterpoint.getNemCode(),meterpoint);
+            });
+        }
+
 
 
         wpls.stream().forEach(wp->{
@@ -555,9 +568,14 @@ public class CacheContext implements CommandLineRunner {
             String wpString = redisService.get(wp.getId());
             Map<String, ProBasicPowerstationPoint> stringMapMap = JSONObject.parseObject(wpString, new TypeReference<Map<String, ProBasicPowerstationPoint>>() {
             });
-            for(Map.Entry<String,ProBasicPowerstationPoint> entry : stringMapMap.entrySet()){
-                wpPointList.add(entry.getValue());
+
+            if(null !=stringMapMap)
+            {
+                for(Map.Entry<String,ProBasicPowerstationPoint> entry : stringMapMap.entrySet()){
+                    wpPointList.add(entry.getValue());
+                }
             }
+
             wppointmap.put(wp.getId(),stringMapMap);
         });
 

+ 1 - 1
alarm-custom/src/main/java/com/gyee/alarm/util/redis/RedisAutoConfiguration.java

@@ -1,4 +1,4 @@
-package com.gyee.alarm.util.redis;
+package com.gyee.alarm.init.redis;
 
 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;

+ 1 - 1
alarm-custom/src/main/java/com/gyee/alarm/util/redis/RedisConfig.java

@@ -1,4 +1,4 @@
-package com.gyee.alarm.util.redis;
+package com.gyee.alarm.init.redis;
 
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 import com.fasterxml.jackson.annotation.PropertyAccessor;

+ 1 - 1
alarm-custom/src/main/java/com/gyee/alarm/util/redis/RedisService.java

@@ -1,4 +1,4 @@
-package com.gyee.alarm.util.redis;
+package com.gyee.alarm.init.redis;
 
 import java.util.List;
 import java.util.Map;

+ 1 - 1
alarm-custom/src/main/java/com/gyee/alarm/util/redis/RedisServiceImpl.java

@@ -1,4 +1,4 @@
-package com.gyee.alarm.util.redis;
+package com.gyee.alarm.init.redis;
 
 import org.springframework.dao.DataAccessException;
 import org.springframework.data.redis.connection.RedisConnection;

+ 4 - 1
alarm-custom/src/main/java/com/gyee/alarm/service/AlarmCustomAsyncService.java

@@ -55,7 +55,7 @@ public class AlarmCustomAsyncService {
     private CustomAsyncService customAsyncService;
 
     /**
-     * 初始化
+     * 初始化,从服务端获得自定义报警
      */
     public void init() {
 
@@ -66,9 +66,12 @@ public class AlarmCustomAsyncService {
 
         while (runStarted) {
 
+
+            //读取庚顿数据库实时数据
             readTaskJobs(runStarted);
 
             Thread.sleep((interval * 1000));
+            //针对读取的数据库进行,自定义报警判定
 
             calTaskJobs(runStarted);
 

+ 18 - 7
alarm-custom/src/main/java/com/gyee/alarm/service/AlarmCustomService.java

@@ -133,7 +133,11 @@ public class AlarmCustomService {
                 time++;
                 str.setLength(0);
                 str.append("数据读取").append(time).append("线程");
-                new Thread(new ReadWtDataThread(executor, edosUtil, readRows, wtpols, interval, str, countDownLatch)).start();
+
+
+
+                executor.execute(new ReadWtDataThread(executor, edosUtil, readRows, wtpols, interval, str, countDownLatch));
+
                 wtpols = new ArrayList<>();
             }
         }
@@ -143,8 +147,10 @@ public class AlarmCustomService {
             time++;
             str.setLength(0);
             str.append("数据读取").append(time).append("线程");
-            new Thread(new ReadWtDataThread(executor, edosUtil, readRows, wtpols, interval, str, countDownLatch)).start();
+            executor.execute(new ReadWtDataThread(executor, edosUtil, readRows, wtpols, interval, str, countDownLatch));
         }
+
+        countDownLatch.await(60, TimeUnit.SECONDS);
 /***************************************************************************************************************************/
 
         //读取设备测点
@@ -174,7 +180,8 @@ public class AlarmCustomService {
                 time++;
                 str.setLength(0);
                 str.append("数据读取").append(time).append("线程");
-                new Thread(new ReadWtDataThread(executor, edosUtil, readRows, wtpols, interval, str, countDownLatch)).start();
+//                new Thread(new ReadWtDataThread(executor, edosUtil, readRows, wtpols, interval, str, countDownLatch)).start();
+                executor.execute(new ReadWtDataThread(executor, edosUtil, readRows, wtpols, interval, str, countDownLatch));
                 wtpols = new ArrayList<>();
             }
         }
@@ -184,7 +191,7 @@ public class AlarmCustomService {
             time++;
             str.setLength(0);
             str.append("数据读取").append(time).append("线程");
-            new Thread(new ReadWtDataThread(executor, edosUtil, readRows, wtpols, interval, str, countDownLatch)).start();
+            executor.execute(new ReadWtDataThread(executor, edosUtil, readRows, wtpols, interval, str, countDownLatch));
         }
 /***************************************************************************************************************************/
 
@@ -209,6 +216,7 @@ public class AlarmCustomService {
 //            new Thread(new ReadWsDataThread(executor, edosUtil, readRows, wspols, interval, str, countDownLatch)).start();
 //
 //        }
+//        countDownLatch.await(60, TimeUnit.SECONDS);
         countDownLatch.await(60, TimeUnit.SECONDS);
         log.info("数据读取完成!");
         try {
@@ -243,7 +251,8 @@ public class AlarmCustomService {
                 time++;
                 str.setLength(0);
                 str.append("自定义分析").append(time).append("线程");
-                new Thread(new AlarmThread(executor, alarmService, alarmls, interval, str, readRows, countDownLatch, alarmTsService)).start();
+                executor.execute(new AlarmThread(executor, alarmService, alarmls, interval, str, readRows, countDownLatch, alarmTsService));
+
                 alarmls = new ArrayList<>();
 
             }
@@ -254,11 +263,13 @@ public class AlarmCustomService {
             time++;
             str.setLength(0);
             str.append("自定义分析").append(time).append("线程");
-            new Thread(new AlarmThread(executor, alarmService, alarmls, interval, str, readRows, countDownLatch, alarmTsService)).start();
+            executor.execute(new AlarmThread(executor, alarmService, alarmls, interval, str, readRows, countDownLatch, alarmTsService));
+
 
         }
 
-        countDownLatch.await(30, TimeUnit.SECONDS);
+//        countDownLatch.await(30, TimeUnit.SECONDS);
+        countDownLatch.await(60, TimeUnit.SECONDS);
         log.info("自定义分析完成!");
         try {
             Thread.sleep((interval * 1000));

+ 1 - 7
alarm-custom/src/main/java/com/gyee/alarm/service/CustomAsyncService.java

@@ -34,15 +34,9 @@ public class CustomAsyncService {
     private Logger logger = LoggerFactory.getLogger(this.getClass());
 
 
-    @Resource
-    private Executor executor;
 
 
-    @Resource
-    private IAlarmTsService alarmTsService;
 
-
-    @SneakyThrows
     @Async("taskExecutor")
     public CompletableFuture<String> readCall(IEdosUtil edosUtil, Integer readRows, List<ProBasicEquipmentPoint> pointList,String str) throws Exception {
 
@@ -108,7 +102,7 @@ public class CustomAsyncService {
 
 
 
-    @SneakyThrows
+
     @Async("taskExecutor")
     public CompletableFuture<String>  checkCall(IAlarmService alarmService, List<AlarmCustomTag> alarmVoList,
                                      StringBuilder str, Integer readRows, IAlarmTsService alarmTsService) throws Exception {

+ 2 - 1
alarm-custom/src/main/java/com/gyee/alarm/service/initalcache/CacheService.java

@@ -5,9 +5,10 @@ package com.gyee.alarm.service.initalcache;/*
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.gyee.alarm.init.redis.RedisService;
 import com.gyee.alarm.model.auto.*;
 import com.gyee.alarm.service.auto.*;
-import com.gyee.alarm.util.redis.RedisService;
+
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;

+ 168 - 19
alarm-custom/src/main/java/com/gyee/alarm/task/thread/AlarmThread.java

@@ -1,18 +1,21 @@
 package com.gyee.alarm.task.thread;
 
 import com.gyee.alarm.feigns.IAlarmService;
-import com.gyee.alarm.model.vo.AlarmCustomTag;
-import com.gyee.alarm.model.vo.AlarmVo;
+import com.gyee.alarm.model.vo.*;
+import com.gyee.alarm.rule.AlarmFunction;
+import com.gyee.alarm.rule.expression.AlarmExpression;
+import com.gyee.alarm.rule.expression.Analyzer;
 import com.gyee.alarm.service.auto.IAlarmTsService;
 import com.gyee.alarm.util.realtimesource.IEdosUtil;
+import com.gyee.common.model.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Executor;
-import java.util.concurrent.FutureTask;
+import java.util.Map;
+import java.util.concurrent.*;
 
 public class AlarmThread implements Runnable {
 
@@ -50,27 +53,173 @@ public class AlarmThread implements Runnable {
 
         String task = "task@ " + String.valueOf(str);
         logger.info("创建任务并提交到线程池中:" + task);
-        FutureTask<Integer> futureTask = new FutureTask<>(new AlarmThreadPool(alarmService,  alarmVoList,interval,str,readRows,alarmTsService));
+        Integer result = 1;
 
-        executor.execute(futureTask);
+        try {
 
+//			while (runStarted)
+//			{
+
+            List<AlarmTag> saveAlarmTags =   new CopyOnWriteArrayList<>();
+            List<AlarmTag> updateAlarmTags  = new CopyOnWriteArrayList<>();
+
+
+            StringBuilder sb = new StringBuilder();
+
+
+            List<AlarmSimpleVo> alarmls = new CopyOnWriteArrayList<>();
+            int times = 0;
+            for (AlarmCustomTag alarm : alarmVoList) {
+
+                sb.append("'").append(alarm.getId().toLowerCase()).append("',");
+                times++;
+                if (times == 1000) {
+                    String ids =  sb.substring(0, sb.length() - 1);
+                    List<AlarmSimpleVo>  templs=new ArrayList<>();
+                    templs =  alarmTsService.selectLastRowByTbname(AlarmSuperTalbeType.CT.getCode(), ids);
+                    alarmls.addAll(templs);
+                    sb.setLength(0);
+                    times = 0;
+                }
+            }
+            if (sb.length()>0) {
+
+                String ids =  sb.substring(0, sb.length() - 1);
+                List<AlarmSimpleVo>  templs=new ArrayList<>();
+                templs =  alarmTsService.selectLastRowByTbname(AlarmSuperTalbeType.CT.getCode(), ids);
+                alarmls.addAll(templs);
+            }
+
+            Map<String, AlarmSimpleVo> map = new ConcurrentHashMap<>();
+
+
+            if (!alarmls.isEmpty()) {
+                for (AlarmSimpleVo vo : alarmls) {
+                    map.put(vo.getTbName().toLowerCase(), vo);
+                }
+            }
 
-        // 在这里可以做别的任何事情
-        Integer result = null;
-        try {
-            // 取得结果,同时设置超时执行时间为1秒。同样可以用future.get(),不设置执行超时时间取得结果
-            result = futureTask.get();
 
-        } catch (InterruptedException e) {
-            futureTask.cancel(true);
-        } catch (ExecutionException e) {
-            futureTask.cancel(true);
+            for (AlarmCustomTag vo : alarmVoList) {
+
+                checkRule(saveAlarmTags, updateAlarmTags, vo,map);
+
+            }
+
+            if (!saveAlarmTags.isEmpty()) {
+                alarmService.saveAlarm(saveAlarmTags);
+            }
+
+            if (!updateAlarmTags.isEmpty()) {
+                alarmService.updateAlarm(updateAlarmTags);
+            }
+
+
+//				try {
+//					Thread.sleep((interval * 1000));
+//				} catch (InterruptedException e) {
+//					throw new RuntimeException(e);
+//				}
+//			}
+            logger.info(str+ "新增报警数量:" + saveAlarmTags.size());
+            logger.info(str+ "结束报警数量:" + updateAlarmTags.size());
         } catch (Exception e) {
-            futureTask.cancel(true);
-            // 超时后,进行相应处理
+
+            e.printStackTrace();
+            result = 0;
         } finally {
             countDownLatch.countDown();
             logger.info("完成任务并提交到线程池中:" + task);
         }
     }
+
+    private synchronized void checkRule(List<AlarmTag> saveAlarmTags, List<AlarmTag> updateAlarmTags, AlarmCustomTag ar, Map<String, AlarmSimpleVo> map) {
+
+
+        try {
+
+            AlarmExpression alarmExpression = Analyzer.getAlarmExpression(ar.getTagId());
+
+            AlarmFunction alarmFunction = null;
+
+            if (ar.getDevicetype().equals(DeviceTypeValue.WT.getCode())) {
+                alarmFunction = new AlarmFunction(alarmExpression, DeviceTypeValue.WT, ar.getDeviceid());
+
+
+            }else if (ar.getDevicetype().equals(DeviceTypeValue.IN.getCode())) {
+                alarmFunction = new AlarmFunction(alarmExpression, DeviceTypeValue.IN, ar.getDeviceid());
+
+
+            } else if (ar.getDevicetype().equals(DeviceTypeValue.BT.getCode())) {
+                alarmFunction = new AlarmFunction(alarmExpression, DeviceTypeValue.BT, ar.getStationid());
+            }
+
+            try {
+
+                Object obj = alarmFunction.explain();
+
+                if (obj instanceof Boolean) {
+
+
+                    boolean endStatus = true;
+
+                    if(map.containsKey(ar.getId().toLowerCase()))
+                    {
+                        AlarmSimpleVo vo=map.get(ar.getId().toLowerCase());
+
+                        if(StringUtils.notEmp(vo.getEndts()))
+                        {
+                            endStatus=true;
+                        }else
+                        {
+                            endStatus=false;
+                        }
+                    }else
+                    {
+                        endStatus = true;
+                    }
+                    if (true == (boolean) obj) {
+
+                        if(endStatus)
+                        {
+                            AlarmTag po = new AlarmTag();
+                            po.setId(ar.getId());
+                            po.setTs(new Date().getTime());
+                            po.setEndts(null);
+                            po.setVal(1.0);
+                            po.setOval(1.0);
+                            po.setTimeLong(0.0);
+
+                            saveAlarmTags.add(po);
+                        }
+
+                    } else {
+
+                        if(!endStatus)
+                        {
+                            AlarmTag po = new AlarmTag();
+                            po.setId(ar.getId());
+                            po.setTs(new Date().getTime());
+                            po.setEndts(new Date().getTime());
+                            po.setVal(0.0);
+                            po.setOval(0.0);
+                            po.setTimeLong(0.0);
+
+                            updateAlarmTags.add(po);
+                        }
+
+                    }
+                } else {
+                    // System.out.print(obj.toString());
+                }
+            } catch (Exception ex) {
+                // ex.printStackTrace();
+                logger.error("自定义报警规则执行时出错!" + alarmFunction.getThingId() + "--" + ar.getTagId() + "----" + ex.getMessage());
+            }
+
+        } catch (Exception ex) {
+            logger.error("生成自定义报警规则失败!规则id:" + ar.getId());
+        }
+    }
+
 }

+ 60 - 15
alarm-custom/src/main/java/com/gyee/alarm/task/thread/ReadWtDataThread.java

@@ -1,13 +1,18 @@
 package com.gyee.alarm.task.thread;
 
 import com.gyee.alarm.feigns.IAlarmService;
+import com.gyee.alarm.init.CacheContext;
 import com.gyee.alarm.model.auto.ProBasicEquipmentPoint;
 import com.gyee.alarm.model.vo.AlarmCustomTag;
 import com.gyee.alarm.util.realtimesource.IEdosUtil;
+import com.gyee.common.model.PointData;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
@@ -46,26 +51,66 @@ public class ReadWtDataThread implements Runnable {
 
         String task = "task@ " + String.valueOf(str);
         logger.info("创建任务并提交到线程池中:" + task);
-        FutureTask<Integer> futureTask = new FutureTask<>(new ReadWtDataThreadPoolPool(
-				edosUtil, readRows,  pointList,interval,str));
+        Integer result = 1;
 
-        executor.execute(futureTask);
-
-
-        // 在这里可以做别的任何事情
-        Integer result = null;
         try {
-            // 取得结果,同时设置超时执行时间为1秒。同样可以用future.get(),不设置执行超时时间取得结果
-            result = futureTask.get();
 
+//			while (runStarted)
+//			{
+            List<String>  ls=new ArrayList<>();
+            List<PointData> values=new ArrayList<>();
+
+            int times=0;
+            for(ProBasicEquipmentPoint vo:pointList)
+            {
+                ls.add(vo.getNemCode());
+                times++;
+                if(times==readRows)
+                {
+                    List<PointData> templs=edosUtil.getRealData(ls);
+                    values.addAll(templs);
+                    ls=new ArrayList<>();
+                    times=0;
+                }
+            }
+            if(!ls.isEmpty())
+            {
+                List<PointData> templs=edosUtil.getRealData(ls);
+                values.addAll(templs);
+            }
+
+            if(values.size() == pointList.size())
+            {
+
+                for(int i=0;i<pointList.size();i++)
+                {
+                    ProBasicEquipmentPoint point=pointList.get(i);
+                    PointData value=values.get(i);
+                    if(CacheContext.wtDataValueMap.containsKey(point.getWindturbineId()))
+                    {
+                        Map<String, PointData> map=CacheContext.wtDataValueMap.get(point.getWindturbineId());
+                        map.put(point.getUniformCode(),value);
+                    }else
+                    {
+                        Map<String, PointData> map=new HashMap<>();
+
+                        map.put(point.getUniformCode(),value);
+                        CacheContext.wtDataValueMap.put(point.getWindturbineId(),map);
+                    }
+                }
+            }
+
+//				try {
+//					Thread.sleep((interval * 1000));
+//				} catch (InterruptedException e) {
+//					throw new RuntimeException(e);
+//				}
+//			}
 
-        } catch (InterruptedException e) {
-            futureTask.cancel(true);
-        } catch (ExecutionException e) {
-            futureTask.cancel(true);
         } catch (Exception e) {
-            futureTask.cancel(true);
-            // 超时后,进行相应处理
+
+            e.printStackTrace();
+            result=0;
         } finally {
             countDownLatch.countDown();
             logger.info("完成任务并提交到线程池中:" + task);

+ 189 - 0
alarm-custom/src/main/resources/application-db.yml

@@ -0,0 +1,189 @@
+
+server:
+  port: 6013
+  servlet:
+    context-path: /
+
+
+spring:
+  main:
+    allow-bean-definition-overriding: true #当遇到同样名字的时候,是否允许覆盖注册
+  #redis集群
+  redis:
+    #host: 127.0.0.1
+    host: 172.16.12.103
+    port: 6379
+    timeout: 100000
+    #    集群环境打开下面注释,单机不需要打开
+    #    cluster:
+    #      #集群信息
+    #      nodes: 10.83.68.151:6379,10.83.68.152:6379,10.83.68.153:6379,10.83.68.154:6379,10.83.68.155:6379,10.83.68.156:6379,10.83.68.157:6379,10.83.68.158:6379,10.83.68.159:6379
+    #      #默认值是5 一般当此值设置过大时,容易报:Too many Cluster redirections
+    #      maxRedirects: 3
+    password: GYee@#56
+    application:
+      name: test
+    jedis:
+      pool:
+        max-active: 8
+        min-idle: 0
+        max-idle: 8
+        max-wait: -1
+    database: 10
+  autoconfigure:
+    exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
+  datasource:
+    #type: com.alibaba.druid.pool.DruidDataSource
+    type: com.alibaba.druid.pool.DruidDataSource
+    dynamic:
+      primary: master #设置默认的数据源或者数据源组,默认值即为master
+      strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
+      datasource:
+        master:
+          url: jdbc:postgresql://172.16.12.102:5432/power_lcm
+          username: postgres
+          password: GYee@#56
+          driver-class-name: org.postgresql.Driver
+        slave:
+          driver-class-name: com.taosdata.jdbc.TSDBDriver
+          url: jdbc:TAOS://172.16.12.101:6030/jsfw_db?charset=UTF-8&locale=en_US.UTF-8&timezone=UTC-8
+          username: root
+          password: taosdata
+        #配置初始化连接数大小
+      initial-size: 10
+      # 最大连接数
+      max-active: 50
+      #最小连接数
+      min-idle: 10
+      #获取连接等待超时时间
+      max-wait: 5000
+      pool-prepared-statements: true #是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
+      max-pool-prepared-statement-per-connection-size: 20
+      validation-query: SELECT 1 FROM DUAL
+      validation-query-timeout: 20000
+      test-on-borrow: false #申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
+      test-on-return: false #归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
+      test-while-idle: true #建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
+      time-between-eviction-runs-millis: 60000 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+      min-evictable-idle-time-millis: 300000  #一个连接在池中最小生存的时间,单位是毫秒
+      #StatViewServlet配置。(因为暴露的监控信息比较敏感,支持密码加密和访问ip限定)
+      stat-view-servlet:
+        enabled: true
+        url-pattern: /druid/*
+        #可以增加访问账号密码【去掉注释就可以】
+        #login-username: admin
+        #login-password: admin
+      filter:
+        stat:
+          log-slow-sql: true
+          slow-sql-millis: 1000
+          merge-sql: false
+        wall:
+          config:
+            multi-statement-allow: true
+  servlet:
+    multipart:
+      # 开启 multipart 上传功能
+      enabled: true
+      # 文件写入磁盘的阈值
+      file-size-threshold: 2KB
+      # 最大文件大小
+      max-file-size: 200MB
+      # 最大请求大小
+      max-request-size: 215MB
+
+mybatis-plus:
+  configuration:
+    map-underscore-to-camel-case: true
+    auto-mapping-behavior: full
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+  mapper-locations: classpath*:mapper/**/*Mapper.xml
+  global-config:
+    # 逻辑删除配置
+    db-config:
+      id-type: auto
+      # 删除前
+      logic-not-delete-value: 1
+      # 删除后
+      logic-delete-value: 0
+# 日志配置
+logging:
+  level:
+    root: info
+  charset:
+    # 输出控制台编码
+    console: UTF-8
+    # 输出文件编码
+    file: UTF-8
+  # 输出文件名及路径,不配置则不输出文件
+  file:
+    # 切记,该文件表示正在产出日志的日志文件。并不会打包,当文件大于max-file-size,会根据file-name-pattern格式打包
+    # 名称为log/ota.log文件夹会在项目根目录下,打包后会在启动包同目录下;名称为/log/ota.log的文件夹会在项目所在磁盘的跟目录下
+    name: log/ota.log
+  logback:
+    rollingpolicy:
+      # 单文件的大小,默认10M, 超过之后打包成一个日志文件
+      max-file-size: 1MB
+      # 日志保存的天数
+      max-history: 30
+      # 打包文件格式,默认: ${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz,书写格式为:文件路径/文件名.%i.文件后缀,其中%i不可省去,否则无日志显示
+      # 例如: 日期为:2021/11/5 ,则打包文件之后为: log/ota.2021-11-05.0.gz,0表示日志的第一部分,后续就是,1,2,3...
+      # 如果是压缩包,里面会多一个名log/ota.2021-11-05.0的日志文件
+      # 如下面的例子,打包之后为: log/2021-11/ota.2020-11-5.0.log,这是一个日志文件
+      file-name-pattern: log/%d{yyyy-MM}/ota.%d{yyyy-MM-dd}.%i.log
+
+#db url
+db:
+  url1: http://172.16.12.103:8011/ts
+  url2: http://172.16.12.103:8011/ts
+
+
+#参与计算的场站
+runWindpowerstation: GJNY_SXGS_JSL_FDC_STA,GJNY_SXGS_CSL_FDC_STA,GJNY_SXGS_LJS_FDC_STA,GJNY_SXGS_ZZ_FDC_STA,GJNY_SXGS_XZ_FDC_STA,GJNY_SXGS_FSG_FDC_STA
+#计算状态用ai或者di
+clauStatus:
+  ai: GJY03_GC,YLZ01_GC,PTZ02_GC   #配置期次
+  di: GJY01_GC,GJY02_GC,DJY01_GC,DJY02_GC,YF01_GC,YF02_GC,HSM01_GC,PTZ01_GC,ZK01_GC,NJL01_GC,YTY01_GC,PDL01_GC
+#判断数据终端
+second: 1800
+#判断降出力
+AI110: 17.4    #叶轮转速给定
+AI178: 17.4    #转矩给定
+#AI443:容量
+
+#功率曲线拟合
+curvefitting:
+  #维度
+  dimension: 20
+  #尺度
+  scale: 0.01
+initialcode: INITIAL
+##调用区间间隔时长,需要与XXLJOB调度时长结合,保证查询区间时长大于调度时长,单位分钟
+frequency:
+  #停机
+  shutdown: 1
+  #限电
+  powerrationing: 1
+  #切入切出
+  cutinandout: 1
+urls:
+#  alarm-service: http://10.81.3.154:6014
+  alarm-service: http://127.0.0.1:6014
+
+task-count: 5000
+read-count: 300000
+interval: 1
+
+#WT("wt_alarms", "设备报警超级表"),
+#BT("bt_alarms", "升压站报警超级表"),
+#CT("custom_alarms", "自定义报警超级表");
+alarmType: custom_alarms
+#CT("custom_alarms", "自定义报警超级表");
+read-rows: 1000
+
+
+
+
+
+
+

+ 1 - 1
alarm-custom/src/main/resources/application.yml

@@ -1,6 +1,6 @@
 spring:
   profiles:
-    active: jn
+    active: db
 #    active: yun
 
 #    active: td

+ 6 - 6
alarm-scanner/src/main/java/com/gyee/alarm/CalculateServer.java

@@ -15,11 +15,11 @@ import java.util.concurrent.CountDownLatch;
 @Component
 public class CalculateServer {
 
-//    @Resource
-//    AlarmScannerService alarmScannerService;
-
     @Resource
-    AlarmScannerAsyncService alarmScannerAsyncService;
+    AlarmScannerService alarmScannerService;
+
+//    @Resource
+//    AlarmScannerAsyncService alarmScannerAsyncService;
     @Value("${interval}")
     private Integer interval;
     @Value("${task-count}")
@@ -36,10 +36,10 @@ public class CalculateServer {
             //GlobalVar.config = configProperties;
             log.warn("警计算服务启动...... ");
             log.info("开始加载配置及测点数据......");
-            alarmScannerAsyncService.init();
+            alarmScannerService.init();
 
             runStarted=true;
-            alarmScannerAsyncService.taskJobs(runStarted);
+            alarmScannerService.taskJobs(runStarted);
             serverStarted = true;
         } catch (Exception ex) {
             serverStarted = false;

+ 11 - 4
alarm-scanner/src/main/java/com/gyee/alarm/service/AlarmScannerService.java

@@ -167,8 +167,10 @@ public class AlarmScannerService {
 
                 CountDownLatch countDownLatch = new CountDownLatch(2);
 
-                new Thread(new AlarmThread(executor, edosUtil, alarmService, alarmTags, interval, String.valueOf(1), readRows, alarmType, countDownLatch, alarmTsService, historymap)).start();
-                new Thread(new AlarmThread(executor, edosUtil, alarmService, alarmInTags, interval, String.valueOf(2), readRows, alarmType, countDownLatch, alarmTsService, historymap)).start();
+//                new Thread(new AlarmThread(executor, edosUtil, alarmService, alarmTags, interval, String.valueOf(1), readRows, alarmType, countDownLatch, alarmTsService, historymap)).start();
+//                new Thread(new AlarmThread(executor, edosUtil, alarmService, alarmInTags, interval, String.valueOf(2), readRows, alarmType, countDownLatch, alarmTsService, historymap)).start();
+                executor.execute(new AlarmThread(executor, edosUtil, alarmService, alarmTags, interval, String.valueOf(1), readRows, alarmType, countDownLatch, alarmTsService, historymap));
+                executor.execute(new AlarmThread(executor, edosUtil, alarmService, alarmInTags, interval, String.valueOf(2), readRows, alarmType, countDownLatch, alarmTsService, historymap));
 
 //                countDownLatch.await(30, TimeUnit.SECONDS);
                 countDownLatch.await();
@@ -192,14 +194,19 @@ public class AlarmScannerService {
                 for (int i = 0; i < alarmTags.size(); i++) {
                     alarmls.add(alarmTags.get(i));
                     if (i != 0 && (i) % taskCount == 0) {
-                        new Thread(new AlarmThread(executor, edosUtil, alarmService, alarmls, interval, String.valueOf(len), readRows, alarmType, countDownLatch, alarmTsService, historymap)).start();
+//                        new Thread(new AlarmThread(executor, edosUtil, alarmService, alarmls, interval, String.valueOf(len), readRows, alarmType, countDownLatch, alarmTsService, historymap)).start();
+
+                        executor.execute(new AlarmThread(executor, edosUtil, alarmService, alarmls, interval, String.valueOf(len), readRows, alarmType, countDownLatch, alarmTsService, historymap));
+
                         alarmls = new ArrayList<>();
                         len++;
                     }
                 }
 
                 if (!alarmls.isEmpty()) {
-                    new Thread(new AlarmThread(executor, edosUtil, alarmService, alarmls, interval, String.valueOf(len), readRows, alarmType, countDownLatch, alarmTsService, historymap)).start();
+                    executor.execute(new AlarmThread(executor, edosUtil, alarmService, alarmls, interval, String.valueOf(len), readRows, alarmType, countDownLatch, alarmTsService, historymap));
+
+//                    new Thread(new AlarmThread(executor, edosUtil, alarmService, alarmls, interval, String.valueOf(len), readRows, alarmType, countDownLatch, alarmTsService, historymap)).start();
                 }
 //                countDownLatch.await(30, TimeUnit.SECONDS);
                 countDownLatch.await();

+ 185 - 14
alarm-scanner/src/main/java/com/gyee/alarm/task/thread/AlarmThread.java

@@ -4,9 +4,11 @@ import com.gyee.alarm.controller.feigns.IAlarmService;
 import com.gyee.alarm.model.vo.AlarmTag;
 import com.gyee.alarm.service.auto.IAlarmTsService;
 import com.gyee.alarm.util.realtimesource.IEdosUtil;
+import com.gyee.common.model.PointData;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.*;
@@ -55,25 +57,194 @@ public class AlarmThread implements Runnable {
 
         String task = "task@ " + str;
         logger.info("创建任务并提交到线程池中:" + task);
-        FutureTask<String> futureTask = new FutureTask<>(new AlarmThreadPool(task,
-				edosUtil, alarmService,  alarmVoList,interval,str,readRows,alarmType,alarmTsService,historymap));
+        String result = "";
 
-        executor.execute(futureTask);
 
+//			while (true)
+//			{
+        List<String> ls = new ArrayList<>();
+        List<PointData> values = new ArrayList<>();
 
-        // 在这里可以做别的任何事情
-        String result = null;
-        try {
-            // 取得结果,同时设置超时执行时间为1秒。同样可以用future.get(),不设置执行超时时间取得结果
-            result = futureTask.get();
 
+        int times = 0;
+
+        for (AlarmTag vo : alarmVoList) {
+
+            ls.add(vo.getTagId());
+            times++;
+            if (times == readRows) {
+                List<PointData> templs = null;
+                try {
+                    templs = edosUtil.getRealData(ls);
+                } catch (Exception e) {
+                    throw new RuntimeException(e);
+                }
+                values.addAll(templs);
+                ls = new ArrayList<>();
+                times=0;
+            }
+        }
+
+        if (!ls.isEmpty()) {
+            List<PointData> templs = null;
+            try {
+                templs = edosUtil.getRealData(ls);
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+            values.addAll(templs);
+        }
+
+
+//				System.out.println(values.size()+"____"+ alarmVoList.size());
+        int alarmNumber = 0;
+        if (values.size() == alarmVoList.size()) {
+            List<AlarmTag> saveAlarmTags = new ArrayList<>();
+
+            List<AlarmTag> updateAlarmTags = new ArrayList<>();
+
+            for (int i = 0; i < alarmVoList.size(); i++) {
+
+                AlarmTag vo = alarmVoList.get(i);
+
+//                    if(vo.getTagId().equals("FD-DJY-YuanDong.140623F0221MDQ02GS006DB0111SW09RAW00"))
+//                    {
+//                        System.out.println("");
+//                    }
+
+                PointData value = values.get(i);
+
+//                    if (vo.getTagId().equals("FD-PYZK-Taizhong1.140728F0111MDY01GS002DB0111SW01RAW00")) {
+//                        System.out.println("");
+//                    }
+                if (vo.updateAndCheck(value)) {
+                    if (vo.getVal() == 1) {
+                        AlarmTag po = new AlarmTag();
+
+                        po.setId(vo.getId());
+                        po.setTs(vo.getTs());
+//                        po.setEndts(po.getEndts());
+                        po.setVal(vo.getVal());
+                        po.setOval(vo.getOval());
+                        po.setTriggerType(vo.getTriggerType());
+                        po.setTagId(vo.getTagId());
+                        po.setRank(vo.getRank());
+                        po.setTimeLong(0.0);
+                        saveAlarmTags.add(po);
+                        alarmNumber++;
+
+                        historymap.put(vo.getId().toLowerCase(),0);
+
+
+                    } else if (vo.getVal() == 2) {
+
+                        if (historymap.containsKey(vo.getId().toLowerCase())) {
+                            //有结束时间,创建新的报警
+                            if (historymap.get(vo.getId().toLowerCase()) == 0) {
+                                //没有有结束时间,结束报警
+                                AlarmTag po = new AlarmTag();
+
+                                po.setId(vo.getId());
+                                po.setTs(vo.getTs());
+                                po.setEndts(vo.getEndts());
+                                po.setVal(vo.getVal());
+                                po.setOval(vo.getOval());
+                                po.setTriggerType(vo.getTriggerType());
+                                po.setTagId(vo.getTagId());
+                                po.setRank(vo.getRank());
+                                po.setTimeLong(0.0);
+                                updateAlarmTags.add(po);
+                                historymap.put(vo.getId().toLowerCase(),1);
+                            }
+                        }
+
+                    } else {
+                        AlarmTag po = new AlarmTag();
+
+                        po.setId(vo.getId());
+                        po.setTs(vo.getTs());
+                        po.setEndts(vo.getEndts());
+                        po.setVal(vo.getVal());
+                        po.setOval(vo.getOval());
+                        po.setTriggerType(vo.getTriggerType());
+                        po.setTagId(vo.getTagId());
+                        po.setRank(vo.getRank());
+                        po.setTimeLong(0.0);
+                        updateAlarmTags.add(po);
+                        alarmNumber++;
+                        historymap.put(vo.getId().toLowerCase(),1);
+                    }
+                }
+//                else  if (!historymap.containsKey(vo.getId().toLowerCase())) {
+//                    if (vo.updateAndCheckNoInfo(value)) {
+//                        if (vo.getVal() == 1) {
+//                            AlarmTag po = new AlarmTag();
+//
+//                            po.setId(vo.getId());
+//                            po.setTs(vo.getTs());
+//                            po.setEndts(po.getEndts());
+//                            po.setVal(vo.getVal());
+//                            po.setOval(vo.getOval());
+//                            po.setTriggerType(vo.getTriggerType());
+//                            po.setTagId(vo.getTagId());
+//                            po.setRank(vo.getRank());
+//                            po.setTimeLong(0.0);
+//                            saveAlarmTags.add(po);
+//                            alarmNumber++;
+//                            historymap.put(vo.getId().toLowerCase(),0);
+//                        }
+//                    }
+//                }
+            }
+
+            switch (alarmType) {
+                case "in_alarms":
+                    if (!saveAlarmTags.isEmpty()) {
+                        alarmService.saveInTags(saveAlarmTags);
+                    }
+                    if (!updateAlarmTags.isEmpty()) {
+                        alarmService.updateInTags(updateAlarmTags);
+                    }
+                    break;
+                case "wt_alarms":
+                    if (!saveAlarmTags.isEmpty()) {
+                        alarmService.saveWtTags(saveAlarmTags);
+                    }
+                    if (!updateAlarmTags.isEmpty()) {
+                        alarmService.updateWtTags(updateAlarmTags);
+                    }
+                    break;
+                case "bt_alarms":
+                    if (!saveAlarmTags.isEmpty()) {
+
+//                        for(AlarmTag tag:saveAlarmTags)
+//                        {
+//                            logger.info("tagId_"+tag.getTagId()+"_wpId_"+tag.getWpId()+"_ts_"+tag.getTs()+"_val_"+tag.getVal());
+//                        }
+
+                        alarmService.saveBtTags(saveAlarmTags);
+                    }
+                    if (!updateAlarmTags.isEmpty()) {
+//                        for(AlarmTag tag:updateAlarmTags)
+//                        {
+//                            logger.info("tagId_"+tag.getTagId()+"_wpId_"+tag.getWpId()+"_ts_"+tag.getTs()+"_val_"+tag.getVal());
+//                        }
+                        alarmService.updateBtTags(updateAlarmTags);
+                    }
+
+                    break;
+
+            }
+
+
+            logger.info("开始报警数量:" + saveAlarmTags.size());
+            logger.info( "结束报警数量:" + updateAlarmTags.size());
+        }
+
+        try {
+            Thread.sleep(interval * 500);
         } catch (InterruptedException e) {
-            futureTask.cancel(true);
-        } catch (ExecutionException e) {
-            futureTask.cancel(true);
-        } catch (Exception e) {
-            futureTask.cancel(true);
-            // 超时后,进行相应处理
+            throw new RuntimeException(e);
         } finally {
 
             countDownLatch.countDown();

+ 1 - 1
alarm-service/pom.xml

@@ -187,7 +187,7 @@
         <dependency>
             <groupId>com.taosdata.jdbc</groupId>
             <artifactId>taos-jdbcdriver</artifactId>
-            <version>3.2.2</version>
+            <version>2.0.39</version>
         </dependency>
 
     </dependencies>

+ 186 - 0
alarm-service/src/main/resources/application-db.yml

@@ -0,0 +1,186 @@
+
+server:
+  port: 6014
+  servlet:
+    context-path: /
+
+
+spring:
+  main:
+    allow-bean-definition-overriding: true #当遇到同样名字的时候,是否允许覆盖注册
+  #redis集群
+  redis:
+    #host: 127.0.0.1
+    host: 172.16.12.103
+    port: 6379
+    timeout: 100000
+    #    集群环境打开下面注释,单机不需要打开
+    #    cluster:
+    #      #集群信息
+    #      nodes: 10.83.68.151:6379,10.83.68.152:6379,10.83.68.153:6379,10.83.68.154:6379,10.83.68.155:6379,10.83.68.156:6379,10.83.68.157:6379,10.83.68.158:6379,10.83.68.159:6379
+    #      #默认值是5 一般当此值设置过大时,容易报:Too many Cluster redirections
+    #      maxRedirects: 3
+    password: GYee@#56
+    application:
+      name: test
+    jedis:
+      pool:
+        max-active: 8
+        min-idle: 0
+        max-idle: 8
+        max-wait: -1
+    database: 10
+  autoconfigure:
+    exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
+  datasource:
+    #type: com.alibaba.druid.pool.DruidDataSource
+    type: com.alibaba.druid.pool.DruidDataSource
+    dynamic:
+      primary: master #设置默认的数据源或者数据源组,默认值即为master
+      strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
+      datasource:
+        master:
+          url: jdbc:postgresql://172.16.12.102:5432/power_lcm
+          username: postgres
+          password: GYee@#56
+          driver-class-name: org.postgresql.Driver
+        slave:
+          driver-class-name: com.taosdata.jdbc.TSDBDriver
+          url: jdbc:TAOS://172.16.12.101:6030/jsfw_db?charset=UTF-8&locale=en_US.UTF-8&timezone=UTC-8
+          username: root
+          password: taosdata
+        #配置初始化连接数大小
+      initial-size: 10
+      # 最大连接数
+      max-active: 50
+      #最小连接数
+      min-idle: 10
+      #获取连接等待超时时间
+      max-wait: 5000
+      pool-prepared-statements: true #是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
+      max-pool-prepared-statement-per-connection-size: 20
+      validation-query: SELECT 1 FROM DUAL
+      validation-query-timeout: 20000
+      test-on-borrow: false #申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
+      test-on-return: false #归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
+      test-while-idle: true #建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
+      time-between-eviction-runs-millis: 60000 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+      min-evictable-idle-time-millis: 300000  #一个连接在池中最小生存的时间,单位是毫秒
+      #StatViewServlet配置。(因为暴露的监控信息比较敏感,支持密码加密和访问ip限定)
+      stat-view-servlet:
+        enabled: true
+        url-pattern: /druid/*
+        #可以增加访问账号密码【去掉注释就可以】
+        #login-username: admin
+        #login-password: admin
+      filter:
+        stat:
+          log-slow-sql: true
+          slow-sql-millis: 1000
+          merge-sql: false
+        wall:
+          config:
+            multi-statement-allow: true
+  servlet:
+    multipart:
+      # 开启 multipart 上传功能
+      enabled: true
+      # 文件写入磁盘的阈值
+      file-size-threshold: 2KB
+      # 最大文件大小
+      max-file-size: 200MB
+      # 最大请求大小
+      max-request-size: 215MB
+
+mybatis-plus:
+  configuration:
+    map-underscore-to-camel-case: true
+    auto-mapping-behavior: full
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+  mapper-locations: classpath*:mapper/**/*Mapper.xml
+  global-config:
+    # 逻辑删除配置
+    db-config:
+      id-type: auto
+      # 删除前
+      logic-not-delete-value: 1
+      # 删除后
+      logic-delete-value: 0
+# 日志配置
+logging:
+  level:
+    root: info
+  charset:
+    # 输出控制台编码
+    console: UTF-8
+    # 输出文件编码
+    file: UTF-8
+  # 输出文件名及路径,不配置则不输出文件
+  file:
+    # 切记,该文件表示正在产出日志的日志文件。并不会打包,当文件大于max-file-size,会根据file-name-pattern格式打包
+    # 名称为log/ota.log文件夹会在项目根目录下,打包后会在启动包同目录下;名称为/log/ota.log的文件夹会在项目所在磁盘的跟目录下
+    name: log/ota.log
+  logback:
+    rollingpolicy:
+      # 单文件的大小,默认10M, 超过之后打包成一个日志文件
+      max-file-size: 1MB
+      # 日志保存的天数
+      max-history: 30
+      # 打包文件格式,默认: ${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz,书写格式为:文件路径/文件名.%i.文件后缀,其中%i不可省去,否则无日志显示
+      # 例如: 日期为:2021/11/5 ,则打包文件之后为: log/ota.2021-11-05.0.gz,0表示日志的第一部分,后续就是,1,2,3...
+      # 如果是压缩包,里面会多一个名log/ota.2021-11-05.0的日志文件
+      # 如下面的例子,打包之后为: log/2021-11/ota.2020-11-5.0.log,这是一个日志文件
+      file-name-pattern: log/%d{yyyy-MM}/ota.%d{yyyy-MM-dd}.%i.log
+
+#db url
+db:
+#  url1: http://10.81.3.154:8011/ts
+#  url2: http://10.81.3.154:8012/ts
+  url1: http://172.16.12.103:8011/ts
+  url2: http://172.16.12.103:8011/ts
+
+#参与计算的场站
+runWindpowerstation: GJNY_SXGS_JSL_FDC_STA,GJNY_SXGS_CSL_FDC_STA,GJNY_SXGS_LJS_FDC_STA,GJNY_SXGS_ZZ_FDC_STA,GJNY_SXGS_XZ_FDC_STA,GJNY_SXGS_FSG_FDC_STA
+#计算状态用ai或者di
+clauStatus:
+  ai: GJY03_GC,YLZ01_GC,PTZ02_GC   #配置期次
+  di: GJY01_GC,GJY02_GC,DJY01_GC,DJY02_GC,YF01_GC,YF02_GC,HSM01_GC,PTZ01_GC,ZK01_GC,NJL01_GC,YTY01_GC,PDL01_GC
+#判断数据终端
+second: 1800
+#判断降出力
+AI110: 17.4    #叶轮转速给定
+AI178: 17.4    #转矩给定
+#AI443:容量
+
+#功率曲线拟合
+curvefitting:
+  #维度
+  dimension: 20
+  #尺度
+  scale: 0.01
+initialcode: INITIAL
+##调用区间间隔时长,需要与XXLJOB调度时长结合,保证查询区间时长大于调度时长,单位分钟
+frequency:
+  #停机
+  shutdown: 1
+  #限电
+  powerrationing: 1
+  #切入切出
+  cutinandout: 1
+
+task-count: 10
+
+interval: 1
+#报警websockt重复报警推送间隔
+pushinterval: 1
+read-rows: 1000
+
+
+
+
+
+
+
+
+
+

+ 1 - 1
alarm-service/src/main/resources/application.yml

@@ -1,6 +1,6 @@
 spring:
   profiles:
-    active: jn
+    active: db
 #    active: yun
 
 #    active: td

+ 2 - 721
log/ota.log

@@ -1,721 +1,2 @@
-2023-11-01 17:09:32.587  INFO 19064 --- [main] com.gyee.alarm.AlarmWeb                  : Starting AlarmWeb on sltc with PID 19064 (E:\idea_workspace\alarmNew\alarm-web\target\classes started by shilin in E:\idea_workspace\alarmNew)
-2023-11-01 17:09:32.599  INFO 19064 --- [main] com.gyee.alarm.AlarmWeb                  : The following profiles are active: jn
-2023-11-01 17:09:33.893  INFO 19064 --- [main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
-2023-11-01 17:09:33.895  INFO 19064 --- [main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode.
-2023-11-01 17:09:33.981  INFO 19064 --- [main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 69ms. Found 0 Redis repository interfaces.
-2023-11-01 17:09:34.311  INFO 19064 --- [main] trationDelegate$BeanPostProcessorChecker : Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
-2023-11-01 17:09:34.316  INFO 19064 --- [main] trationDelegate$BeanPostProcessorChecker : Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$8952b060] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
-2023-11-01 17:09:34.332  INFO 19064 --- [main] trationDelegate$BeanPostProcessorChecker : Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
-2023-11-01 17:09:34.557  INFO 19064 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 6015 (http)
-2023-11-01 17:09:34.564  INFO 19064 --- [main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
-2023-11-01 17:09:34.564  INFO 19064 --- [main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.29]
-2023-11-01 17:09:34.670  INFO 19064 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
-2023-11-01 17:09:34.670  INFO 19064 --- [main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1882 ms
-2023-11-01 17:09:34.916  INFO 19064 --- [main] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1,master} inited
-2023-11-01 17:09:34.918 ERROR 19064 --- [main] com.alibaba.druid.pool.DruidDataSource   : testWhileIdle is true, validationQuery not set
-2023-11-01 17:09:34.918  INFO 19064 --- [main] com.alibaba.druid.pool.DruidDataSource   : {dataSource-2,slave} inited
-2023-11-01 17:09:34.918  INFO 19064 --- [main] c.b.d.d.DynamicRoutingDataSource         : dynamic-datasource - add a datasource named [slave] success
-2023-11-01 17:09:34.918  INFO 19064 --- [main] c.b.d.d.DynamicRoutingDataSource         : dynamic-datasource - add a datasource named [master] success
-2023-11-01 17:09:34.918  INFO 19064 --- [main] c.b.d.d.DynamicRoutingDataSource         : dynamic-datasource initial loaded [2] datasource,primary datasource named [master]
-2023-11-01 17:09:36.541 ERROR 19064 --- [main] c.b.m.core.MybatisConfiguration          : mapper[com.gyee.alarm.mapper.auto.AlarmTsMapper.createTable] is ignored, because it exists, maybe from xml file
-2023-11-01 17:09:39.754  INFO 19064 --- [main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 2 endpoint(s) beneath base path '/actuator'
-2023-11-01 17:09:39.811  INFO 19064 --- [main] pertySourcedRequestMappingHandlerMapping : Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)]
-2023-11-01 17:09:39.911  INFO 19064 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
-2023-11-01 17:09:40.522  INFO 19064 --- [main] d.s.w.p.DocumentationPluginsBootstrapper : Context refreshed
-2023-11-01 17:09:40.533  INFO 19064 --- [main] d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s)
-2023-11-01 17:09:40.562  INFO 19064 --- [main] s.d.s.w.s.ApiListingReferenceScanner     : Scanning for api listing references
-2023-11-01 17:09:40.726  INFO 19064 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteAlertruleUsingDELETE_1
-2023-11-01 17:09:40.732  INFO 19064 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: saveAndUpdateAlertruleUsingPOST_1
-2023-11-01 17:09:40.737  INFO 19064 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteAlertruleUsingDELETE_2
-2023-11-01 17:09:40.738  INFO 19064 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: importExcelUsingPOST_1
-2023-11-01 17:09:40.740  INFO 19064 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: importTemplateUsingGET_1
-2023-11-01 17:09:40.745  INFO 19064 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: queryByPageUsingGET_1
-2023-11-01 17:09:40.754  INFO 19064 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: queryWtAlarmDescListUsingGET_1
-2023-11-01 17:09:40.764  INFO 19064 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: saveAndUpdateAlertruleUsingPOST_2
-2023-11-01 17:09:40.827  INFO 19064 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: findListUsingGET_1
-2023-11-01 17:09:40.837  INFO 19064 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getAllDeviceStructureUsingGET_1
-2023-11-01 17:09:40.848  INFO 19064 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getDeviceStructureTreeUsingGET_1
-2023-11-01 17:09:40.851  INFO 19064 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: queryByPageUsingGET_2
-2023-11-01 17:09:40.852  INFO 19064 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: queryByPageUsingGET_3
-2023-11-01 17:09:40.868  INFO 19064 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: findAlarmlistUsingGET_1
-2023-11-01 17:09:40.922  INFO 19064 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 6015 (http) with context path ''
-2023-11-01 17:09:40.924  INFO 19064 --- [main] com.gyee.alarm.AlarmWeb                  : Started AlarmWeb in 8.691 seconds (JVM running for 9.907)
-2023-11-01 17:09:40.927  INFO 19064 --- [main] com.gyee.alarm.init.CacheContext         : 缓存开始------------------------------------------------------------
-2023-11-01 17:09:41.006 ERROR 19064 --- [Druid-ConnectionPool-Create-1510967269] com.alibaba.druid.pool.DruidDataSource   : create connection SQLException, url: jdbc:postgresql://10.81.3.151:5432/IMS_NEM_JN, errorCode 0, state 08001
-
-org.postgresql.util.PSQLException: 尝试连线已失败。
-	at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:292) ~[postgresql-42.2.5.jar:42.2.5]
-	at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) ~[postgresql-42.2.5.jar:42.2.5]
-	at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195) ~[postgresql-42.2.5.jar:42.2.5]
-	at org.postgresql.Driver.makeConnection(Driver.java:454) ~[postgresql-42.2.5.jar:42.2.5]
-	at org.postgresql.Driver.connect(Driver.java:256) ~[postgresql-42.2.5.jar:42.2.5]
-	at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:156) ~[druid-1.1.10.jar:1.1.10]
-	at com.alibaba.druid.filter.stat.StatFilter.connection_connect(StatFilter.java:218) ~[druid-1.1.10.jar:1.1.10]
-	at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:150) ~[druid-1.1.10.jar:1.1.10]
-	at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1560) ~[druid-1.1.10.jar:1.1.10]
-	at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1623) ~[druid-1.1.10.jar:1.1.10]
-	at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2468) ~[druid-1.1.10.jar:1.1.10]
-Caused by: java.net.NoRouteToHostException: No route to host: connect
-	at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[na:1.8.0_351]
-	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81) ~[na:1.8.0_351]
-	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476) ~[na:1.8.0_351]
-	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218) ~[na:1.8.0_351]
-	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200) ~[na:1.8.0_351]
-	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162) ~[na:1.8.0_351]
-	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394) ~[na:1.8.0_351]
-	at java.net.Socket.connect(Socket.java:606) ~[na:1.8.0_351]
-	at org.postgresql.core.PGStream.<init>(PGStream.java:70) ~[postgresql-42.2.5.jar:42.2.5]
-	at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:91) ~[postgresql-42.2.5.jar:42.2.5]
-	at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:192) ~[postgresql-42.2.5.jar:42.2.5]
-	... 10 common frames omitted
-
-2023-11-01 17:09:41.007 ERROR 19064 --- [Druid-ConnectionPool-Create-1510967269] com.alibaba.druid.pool.DruidDataSource   : create connection SQLException, url: jdbc:postgresql://10.81.3.151:5432/IMS_NEM_JN, errorCode 0, state 08001
-
-org.postgresql.util.PSQLException: 尝试连线已失败。
-	at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:292) ~[postgresql-42.2.5.jar:42.2.5]
-	at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) ~[postgresql-42.2.5.jar:42.2.5]
-	at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195) ~[postgresql-42.2.5.jar:42.2.5]
-	at org.postgresql.Driver.makeConnection(Driver.java:454) ~[postgresql-42.2.5.jar:42.2.5]
-	at org.postgresql.Driver.connect(Driver.java:256) ~[postgresql-42.2.5.jar:42.2.5]
-	at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:156) ~[druid-1.1.10.jar:1.1.10]
-	at com.alibaba.druid.filter.stat.StatFilter.connection_connect(StatFilter.java:218) ~[druid-1.1.10.jar:1.1.10]
-	at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:150) ~[druid-1.1.10.jar:1.1.10]
-	at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1560) ~[druid-1.1.10.jar:1.1.10]
-	at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1623) ~[druid-1.1.10.jar:1.1.10]
-	at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2468) ~[druid-1.1.10.jar:1.1.10]
-Caused by: java.net.NoRouteToHostException: No route to host: connect
-	at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[na:1.8.0_351]
-	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81) ~[na:1.8.0_351]
-	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476) ~[na:1.8.0_351]
-	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218) ~[na:1.8.0_351]
-	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200) ~[na:1.8.0_351]
-	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162) ~[na:1.8.0_351]
-	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394) ~[na:1.8.0_351]
-	at java.net.Socket.connect(Socket.java:606) ~[na:1.8.0_351]
-	at org.postgresql.core.PGStream.<init>(PGStream.java:70) ~[postgresql-42.2.5.jar:42.2.5]
-	at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:91) ~[postgresql-42.2.5.jar:42.2.5]
-	at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:192) ~[postgresql-42.2.5.jar:42.2.5]
-	... 10 common frames omitted
-
-2023-11-01 17:09:41.525 ERROR 19064 --- [Druid-ConnectionPool-Create-1510967269] com.alibaba.druid.pool.DruidDataSource   : create connection SQLException, url: jdbc:postgresql://10.81.3.151:5432/IMS_NEM_JN, errorCode 0, state 08001
-
-org.postgresql.util.PSQLException: 尝试连线已失败。
-	at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:292) ~[postgresql-42.2.5.jar:42.2.5]
-	at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) ~[postgresql-42.2.5.jar:42.2.5]
-	at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195) ~[postgresql-42.2.5.jar:42.2.5]
-	at org.postgresql.Driver.makeConnection(Driver.java:454) ~[postgresql-42.2.5.jar:42.2.5]
-	at org.postgresql.Driver.connect(Driver.java:256) ~[postgresql-42.2.5.jar:42.2.5]
-	at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:156) ~[druid-1.1.10.jar:1.1.10]
-	at com.alibaba.druid.filter.stat.StatFilter.connection_connect(StatFilter.java:218) ~[druid-1.1.10.jar:1.1.10]
-	at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:150) ~[druid-1.1.10.jar:1.1.10]
-	at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1560) ~[druid-1.1.10.jar:1.1.10]
-	at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1623) ~[druid-1.1.10.jar:1.1.10]
-	at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2468) ~[druid-1.1.10.jar:1.1.10]
-Caused by: java.net.NoRouteToHostException: No route to host: connect
-	at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[na:1.8.0_351]
-	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81) ~[na:1.8.0_351]
-	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476) ~[na:1.8.0_351]
-	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218) ~[na:1.8.0_351]
-	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200) ~[na:1.8.0_351]
-	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162) ~[na:1.8.0_351]
-	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394) ~[na:1.8.0_351]
-	at java.net.Socket.connect(Socket.java:606) ~[na:1.8.0_351]
-	at org.postgresql.core.PGStream.<init>(PGStream.java:70) ~[postgresql-42.2.5.jar:42.2.5]
-	at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:91) ~[postgresql-42.2.5.jar:42.2.5]
-	at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:192) ~[postgresql-42.2.5.jar:42.2.5]
-	... 10 common frames omitted
-
-2023-11-01 17:09:42.032 ERROR 19064 --- [Druid-ConnectionPool-Create-1510967269] com.alibaba.druid.pool.DruidDataSource   : create connection SQLException, url: jdbc:postgresql://10.81.3.151:5432/IMS_NEM_JN, errorCode 0, state 08001
-
-org.postgresql.util.PSQLException: 尝试连线已失败。
-	at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:292) ~[postgresql-42.2.5.jar:42.2.5]
-	at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) ~[postgresql-42.2.5.jar:42.2.5]
-	at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195) ~[postgresql-42.2.5.jar:42.2.5]
-	at org.postgresql.Driver.makeConnection(Driver.java:454) ~[postgresql-42.2.5.jar:42.2.5]
-	at org.postgresql.Driver.connect(Driver.java:256) ~[postgresql-42.2.5.jar:42.2.5]
-	at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:156) ~[druid-1.1.10.jar:1.1.10]
-	at com.alibaba.druid.filter.stat.StatFilter.connection_connect(StatFilter.java:218) ~[druid-1.1.10.jar:1.1.10]
-	at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:150) ~[druid-1.1.10.jar:1.1.10]
-	at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1560) ~[druid-1.1.10.jar:1.1.10]
-	at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1623) ~[druid-1.1.10.jar:1.1.10]
-	at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2468) ~[druid-1.1.10.jar:1.1.10]
-Caused by: java.net.SocketException: Network is unreachable: connect
-	at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[na:1.8.0_351]
-	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81) ~[na:1.8.0_351]
-	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476) ~[na:1.8.0_351]
-	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218) ~[na:1.8.0_351]
-	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200) ~[na:1.8.0_351]
-	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162) ~[na:1.8.0_351]
-	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394) ~[na:1.8.0_351]
-	at java.net.Socket.connect(Socket.java:606) ~[na:1.8.0_351]
-	at org.postgresql.core.PGStream.<init>(PGStream.java:70) ~[postgresql-42.2.5.jar:42.2.5]
-	at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:91) ~[postgresql-42.2.5.jar:42.2.5]
-	at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:192) ~[postgresql-42.2.5.jar:42.2.5]
-	... 10 common frames omitted
-
-2023-11-01 17:09:42.736  INFO 19064 --- [main] com.gyee.alarm.init.CacheContext         : SXJ_KGDL_DJY_FDC_STA------------------20
-2023-11-01 17:09:43.717  INFO 19064 --- [main] io.lettuce.core.EpollProvider            : Starting without optional epoll library
-2023-11-01 17:09:43.719  INFO 19064 --- [main] io.lettuce.core.KqueueProvider           : Starting without optional kqueue library
-2023-11-01 17:09:46.368  INFO 19064 --- [main] com.gyee.alarm.init.CacheContext         : 3227
-2023-11-01 17:10:00.883  INFO 19064 --- [http-nio-6015-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
-2023-11-01 17:10:00.883  INFO 19064 --- [http-nio-6015-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
-2023-11-01 17:10:00.891  INFO 19064 --- [http-nio-6015-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 6 ms
-2023-11-01 17:10:01.048 ERROR 19064 --- [http-nio-6015-exec-9] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
-
-java.lang.NullPointerException: null
-	at com.gyee.alarm.service.TokenService.getWpls(TokenService.java:144) ~[classes/:na]
-	at com.gyee.alarm.controller.AlertRuleController.queryWplList(AlertRuleController.java:195) ~[classes/:na]
-	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_351]
-	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_351]
-	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_351]
-	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_351]
-	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:888) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123) ~[druid-1.1.10.jar:1.1.10]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:108) ~[spring-boot-actuator-2.2.2.RELEASE.jar:2.2.2.RELEASE]
-	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1591) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_351]
-	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_351]
-	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at java.lang.Thread.run(Thread.java:750) [na:1.8.0_351]
-
-2023-11-01 17:10:22.608 ERROR 19064 --- [http-nio-6015-exec-8] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
-
-java.lang.NullPointerException: null
-	at com.gyee.alarm.service.auto.impl.AlarmTsServiceImpl.createSql(AlarmTsServiceImpl.java:102) ~[classes/:na]
-	at com.gyee.alarm.service.auto.impl.AlarmTsServiceImpl.insertList(AlarmTsServiceImpl.java:83) ~[classes/:na]
-	at com.gyee.alarm.service.AlarmHistoryService.updateAlarms(AlarmHistoryService.java:150) ~[classes/:na]
-	at com.gyee.alarm.controller.AlarmHistoryController.updateAlarms(AlarmHistoryController.java:47) ~[classes/:na]
-	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_351]
-	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_351]
-	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_351]
-	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_351]
-	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:888) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123) ~[druid-1.1.10.jar:1.1.10]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:108) ~[spring-boot-actuator-2.2.2.RELEASE.jar:2.2.2.RELEASE]
-	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1591) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_351]
-	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_351]
-	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at java.lang.Thread.run(Thread.java:750) [na:1.8.0_351]
-
-2023-11-01 17:11:31.153 ERROR 19064 --- [http-nio-6015-exec-9] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
-
-java.lang.NullPointerException: null
-	at com.gyee.alarm.service.auto.impl.AlarmTsServiceImpl.createSql(AlarmTsServiceImpl.java:102) ~[classes/:na]
-	at com.gyee.alarm.service.auto.impl.AlarmTsServiceImpl.insertList(AlarmTsServiceImpl.java:83) ~[classes/:na]
-	at com.gyee.alarm.service.AlarmHistoryService.updateAlarms(AlarmHistoryService.java:150) ~[classes/:na]
-	at com.gyee.alarm.controller.AlarmHistoryController.updateAlarms(AlarmHistoryController.java:47) ~[classes/:na]
-	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_351]
-	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_351]
-	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_351]
-	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_351]
-	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:888) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123) ~[druid-1.1.10.jar:1.1.10]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:108) ~[spring-boot-actuator-2.2.2.RELEASE.jar:2.2.2.RELEASE]
-	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1591) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_351]
-	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_351]
-	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at java.lang.Thread.run(Thread.java:750) [na:1.8.0_351]
-
-2023-11-01 17:11:31.187  INFO 19064 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'
-2023-11-01 17:11:31.310  INFO 19064 --- [main] ConditionEvaluationReportLoggingListener : 
-
-Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
-2023-11-01 17:11:31.323 ERROR 19064 --- [main] o.s.boot.SpringApplication               : Application run failed
-
-java.lang.IllegalStateException: Failed to execute CommandLineRunner
-	at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:787) [spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
-	at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:768) [spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
-	at org.springframework.boot.SpringApplication.run(SpringApplication.java:322) [spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
-	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) [spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
-	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) [spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
-	at com.gyee.alarm.AlarmWeb.main(AlarmWeb.java:17) [classes/:na]
-Caused by: org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to 10.81.3.155:6379
-	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.translateException(LettuceConnectionFactory.java:1534) ~[spring-data-redis-2.3.6.RELEASE.jar:2.3.6.RELEASE]
-	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1442) ~[spring-data-redis-2.3.6.RELEASE.jar:2.3.6.RELEASE]
-	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getNativeConnection(LettuceConnectionFactory.java:1228) ~[spring-data-redis-2.3.6.RELEASE.jar:2.3.6.RELEASE]
-	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getConnection(LettuceConnectionFactory.java:1211) ~[spring-data-redis-2.3.6.RELEASE.jar:2.3.6.RELEASE]
-	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getSharedConnection(LettuceConnectionFactory.java:975) ~[spring-data-redis-2.3.6.RELEASE.jar:2.3.6.RELEASE]
-	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getConnection(LettuceConnectionFactory.java:360) ~[spring-data-redis-2.3.6.RELEASE.jar:2.3.6.RELEASE]
-	at org.springframework.data.redis.core.RedisConnectionUtils.doGetConnection(RedisConnectionUtils.java:134) ~[spring-data-redis-2.3.6.RELEASE.jar:2.3.6.RELEASE]
-	at org.springframework.data.redis.core.RedisConnectionUtils.getConnection(RedisConnectionUtils.java:97) ~[spring-data-redis-2.3.6.RELEASE.jar:2.3.6.RELEASE]
-	at org.springframework.data.redis.core.RedisConnectionUtils.getConnection(RedisConnectionUtils.java:84) ~[spring-data-redis-2.3.6.RELEASE.jar:2.3.6.RELEASE]
-	at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:215) ~[spring-data-redis-2.3.6.RELEASE.jar:2.3.6.RELEASE]
-	at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:188) ~[spring-data-redis-2.3.6.RELEASE.jar:2.3.6.RELEASE]
-	at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:175) ~[spring-data-redis-2.3.6.RELEASE.jar:2.3.6.RELEASE]
-	at com.gyee.alarm.init.redis.RedisServiceImpl.get(RedisServiceImpl.java:41) ~[classes/:na]
-	at com.gyee.alarm.init.CacheContext.lambda$run$8(CacheContext.java:393) ~[classes/:na]
-	at java.util.ArrayList.forEach(ArrayList.java:1259) ~[na:1.8.0_351]
-	at com.gyee.alarm.init.CacheContext.run(CacheContext.java:379) ~[classes/:na]
-	at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:784) [spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
-	... 5 common frames omitted
-Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to 10.81.3.155:6379
-	at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78) ~[lettuce-core-5.2.1.RELEASE.jar:5.2.1.RELEASE]
-	at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56) ~[lettuce-core-5.2.1.RELEASE.jar:5.2.1.RELEASE]
-	at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:234) ~[lettuce-core-5.2.1.RELEASE.jar:5.2.1.RELEASE]
-	at io.lettuce.core.RedisClient.connect(RedisClient.java:207) ~[lettuce-core-5.2.1.RELEASE.jar:5.2.1.RELEASE]
-	at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.lambda$getConnection$1(StandaloneConnectionProvider.java:115) ~[spring-data-redis-2.3.6.RELEASE.jar:2.3.6.RELEASE]
-	at java.util.Optional.orElseGet(Optional.java:267) ~[na:1.8.0_351]
-	at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.getConnection(StandaloneConnectionProvider.java:115) ~[spring-data-redis-2.3.6.RELEASE.jar:2.3.6.RELEASE]
-	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1440) ~[spring-data-redis-2.3.6.RELEASE.jar:2.3.6.RELEASE]
-	... 20 common frames omitted
-Caused by: java.nio.channels.ClosedChannelException: null
-	at io.netty.channel.nio.AbstractNioChannel.doClose(AbstractNioChannel.java:502) ~[netty-transport-4.1.43.Final.jar:4.1.43.Final]
-	at io.netty.channel.socket.nio.NioSocketChannel.doClose(NioSocketChannel.java:342) ~[netty-transport-4.1.43.Final.jar:4.1.43.Final]
-	at io.netty.channel.AbstractChannel$AbstractUnsafe.doClose0(AbstractChannel.java:760) ~[netty-transport-4.1.43.Final.jar:4.1.43.Final]
-	at io.netty.channel.AbstractChannel$AbstractUnsafe.close(AbstractChannel.java:737) ~[netty-transport-4.1.43.Final.jar:4.1.43.Final]
-	at io.netty.channel.AbstractChannel$AbstractUnsafe.close(AbstractChannel.java:608) ~[netty-transport-4.1.43.Final.jar:4.1.43.Final]
-	at io.netty.channel.nio.NioEventLoop.closeAll(NioEventLoop.java:748) ~[netty-transport-4.1.43.Final.jar:4.1.43.Final]
-	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:527) ~[netty-transport-4.1.43.Final.jar:4.1.43.Final]
-	at io.netty.util.concurrent.SingleThreadEventExecutor$6.run(SingleThreadEventExecutor.java:1050) ~[netty-common-4.1.43.Final.jar:4.1.43.Final]
-	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.43.Final.jar:4.1.43.Final]
-	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.43.Final.jar:4.1.43.Final]
-	at java.lang.Thread.run(Thread.java:750) ~[na:1.8.0_351]
-
-2023-11-01 17:11:31.423  INFO 19064 --- [SpringContextShutdownHook] c.b.d.d.DynamicRoutingDataSource         : dynamic-datasource start closing ....
-2023-11-01 17:11:31.429  INFO 19064 --- [SpringContextShutdownHook] com.alibaba.druid.pool.DruidDataSource   : {dataSource-2} closed
-2023-11-01 17:11:31.430  INFO 19064 --- [SpringContextShutdownHook] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} closed
-2023-11-01 17:11:31.430  INFO 19064 --- [SpringContextShutdownHook] c.b.d.d.DynamicRoutingDataSource         : dynamic-datasource all closed success,bye
-2023-11-01 17:11:37.680  INFO 9532 --- [main] com.gyee.alarm.AlarmWeb                  : Starting AlarmWeb on sltc with PID 9532 (E:\idea_workspace\alarmNew\alarm-web\target\classes started by shilin in E:\idea_workspace\alarmNew)
-2023-11-01 17:11:37.683  INFO 9532 --- [main] com.gyee.alarm.AlarmWeb                  : The following profiles are active: jn
-2023-11-01 17:11:38.894  INFO 9532 --- [main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
-2023-11-01 17:11:38.896  INFO 9532 --- [main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode.
-2023-11-01 17:11:38.984  INFO 9532 --- [main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 74ms. Found 0 Redis repository interfaces.
-2023-11-01 17:11:39.315  INFO 9532 --- [main] trationDelegate$BeanPostProcessorChecker : Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
-2023-11-01 17:11:39.320  INFO 9532 --- [main] trationDelegate$BeanPostProcessorChecker : Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$fb96dc03] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
-2023-11-01 17:11:39.336  INFO 9532 --- [main] trationDelegate$BeanPostProcessorChecker : Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
-2023-11-01 17:11:39.575  INFO 9532 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 6015 (http)
-2023-11-01 17:11:39.582  INFO 9532 --- [main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
-2023-11-01 17:11:39.582  INFO 9532 --- [main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.29]
-2023-11-01 17:11:39.688  INFO 9532 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
-2023-11-01 17:11:39.688  INFO 9532 --- [main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1826 ms
-2023-11-01 17:11:39.936  INFO 9532 --- [main] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1,master} inited
-2023-11-01 17:11:39.938 ERROR 9532 --- [main] com.alibaba.druid.pool.DruidDataSource   : testWhileIdle is true, validationQuery not set
-2023-11-01 17:11:39.938  INFO 9532 --- [main] com.alibaba.druid.pool.DruidDataSource   : {dataSource-2,slave} inited
-2023-11-01 17:11:39.938  INFO 9532 --- [main] c.b.d.d.DynamicRoutingDataSource         : dynamic-datasource - add a datasource named [slave] success
-2023-11-01 17:11:39.938  INFO 9532 --- [main] c.b.d.d.DynamicRoutingDataSource         : dynamic-datasource - add a datasource named [master] success
-2023-11-01 17:11:39.939  INFO 9532 --- [main] c.b.d.d.DynamicRoutingDataSource         : dynamic-datasource initial loaded [2] datasource,primary datasource named [master]
-2023-11-01 17:11:41.483 ERROR 9532 --- [main] c.b.m.core.MybatisConfiguration          : mapper[com.gyee.alarm.mapper.auto.AlarmTsMapper.createTable] is ignored, because it exists, maybe from xml file
-2023-11-01 17:11:44.381  INFO 9532 --- [main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 2 endpoint(s) beneath base path '/actuator'
-2023-11-01 17:11:44.435  INFO 9532 --- [main] pertySourcedRequestMappingHandlerMapping : Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)]
-2023-11-01 17:11:44.528  INFO 9532 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
-2023-11-01 17:11:45.074  INFO 9532 --- [main] d.s.w.p.DocumentationPluginsBootstrapper : Context refreshed
-2023-11-01 17:11:45.085  INFO 9532 --- [main] d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s)
-2023-11-01 17:11:45.117  INFO 9532 --- [main] s.d.s.w.s.ApiListingReferenceScanner     : Scanning for api listing references
-2023-11-01 17:11:45.273  INFO 9532 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteAlertruleUsingDELETE_1
-2023-11-01 17:11:45.279  INFO 9532 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: saveAndUpdateAlertruleUsingPOST_1
-2023-11-01 17:11:45.283  INFO 9532 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteAlertruleUsingDELETE_2
-2023-11-01 17:11:45.284  INFO 9532 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: importExcelUsingPOST_1
-2023-11-01 17:11:45.285  INFO 9532 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: importTemplateUsingGET_1
-2023-11-01 17:11:45.290  INFO 9532 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: queryByPageUsingGET_1
-2023-11-01 17:11:45.297  INFO 9532 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: queryWtAlarmDescListUsingGET_1
-2023-11-01 17:11:45.307  INFO 9532 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: saveAndUpdateAlertruleUsingPOST_2
-2023-11-01 17:11:45.370  INFO 9532 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: findListUsingGET_1
-2023-11-01 17:11:45.379  INFO 9532 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getAllDeviceStructureUsingGET_1
-2023-11-01 17:11:45.391  INFO 9532 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getDeviceStructureTreeUsingGET_1
-2023-11-01 17:11:45.394  INFO 9532 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: queryByPageUsingGET_2
-2023-11-01 17:11:45.395  INFO 9532 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: queryByPageUsingGET_3
-2023-11-01 17:11:45.410  INFO 9532 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: findAlarmlistUsingGET_1
-2023-11-01 17:11:45.455  INFO 9532 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 6015 (http) with context path ''
-2023-11-01 17:11:45.457  INFO 9532 --- [main] com.gyee.alarm.AlarmWeb                  : Started AlarmWeb in 8.096 seconds (JVM running for 9.303)
-2023-11-01 17:11:45.461  INFO 9532 --- [main] com.gyee.alarm.init.CacheContext         : 缓存开始------------------------------------------------------------
-2023-11-01 17:11:45.658  INFO 9532 --- [main] com.gyee.alarm.init.CacheContext         : SXJ_KGDL_DJY_FDC_STA------------------20
-2023-11-01 17:11:46.896  INFO 9532 --- [main] io.lettuce.core.EpollProvider            : Starting without optional epoll library
-2023-11-01 17:11:46.899  INFO 9532 --- [main] io.lettuce.core.KqueueProvider           : Starting without optional kqueue library
-2023-11-01 17:11:49.214  INFO 9532 --- [main] com.gyee.alarm.init.CacheContext         : 3227
-2023-11-01 17:12:46.926  INFO 9532 --- [main] com.gyee.alarm.init.CacheContext         : 缓存结束------------------------------------------------------------
-2023-11-01 17:12:46.928  INFO 9532 --- [main] com.gyee.alarm.AlarmWeb                  : 
--------------------------------------------------------------------
-	智能报警系统启动成功,访问路径如下:
-	本地路径: 		http://localhost:6015/
-	网络地址: 		http://192.168.56.1:6015/
-	API文档: 		http://192.168.56.1:6015//swagger-ui.html
------------------------------------------------------------------------
-2023-11-01 17:12:47.908  INFO 9532 --- [RMI TCP Connection(3)-192.168.56.1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
-2023-11-01 17:12:47.908  INFO 9532 --- [RMI TCP Connection(3)-192.168.56.1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
-2023-11-01 17:12:47.919  INFO 9532 --- [RMI TCP Connection(3)-192.168.56.1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 10 ms
-2023-11-01 17:13:21.121 ERROR 9532 --- [http-nio-6015-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
-
-java.lang.NullPointerException: null
-	at com.gyee.alarm.service.AlarmHistoryService.updateAlarms(AlarmHistoryService.java:170) ~[classes/:na]
-	at com.gyee.alarm.controller.AlarmHistoryController.updateAlarms(AlarmHistoryController.java:47) ~[classes/:na]
-	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_351]
-	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_351]
-	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_351]
-	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_351]
-	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:888) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123) ~[druid-1.1.10.jar:1.1.10]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:108) ~[spring-boot-actuator-2.2.2.RELEASE.jar:2.2.2.RELEASE]
-	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1591) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_351]
-	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_351]
-	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at java.lang.Thread.run(Thread.java:750) [na:1.8.0_351]
-
-2023-11-01 17:21:04.927 ERROR 9532 --- [http-nio-6015-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
-
-java.lang.NullPointerException: null
-	at com.gyee.alarm.service.AlarmHistoryService.updateAlarms(AlarmHistoryService.java:170) ~[classes/:na]
-	at com.gyee.alarm.controller.AlarmHistoryController.updateAlarms(AlarmHistoryController.java:47) ~[classes/:na]
-	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_351]
-	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_351]
-	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_351]
-	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_351]
-	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:888) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123) ~[druid-1.1.10.jar:1.1.10]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:108) ~[spring-boot-actuator-2.2.2.RELEASE.jar:2.2.2.RELEASE]
-	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.2.RELEASE.jar:5.2.2.RELEASE]
-	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1591) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_351]
-	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_351]
-	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.29.jar:9.0.29]
-	at java.lang.Thread.run(Thread.java:750) [na:1.8.0_351]
-
-2023-11-01 17:21:04.957  INFO 9532 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'
-2023-11-01 17:21:05.182  INFO 9532 --- [SpringContextShutdownHook] c.b.d.d.DynamicRoutingDataSource         : dynamic-datasource start closing ....
-2023-11-01 17:21:05.186  INFO 9532 --- [SpringContextShutdownHook] com.alibaba.druid.pool.DruidDataSource   : {dataSource-2} closed
-2023-11-01 17:21:05.187  INFO 9532 --- [SpringContextShutdownHook] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} closed
-2023-11-01 17:21:05.187  INFO 9532 --- [SpringContextShutdownHook] c.b.d.d.DynamicRoutingDataSource         : dynamic-datasource all closed success,bye
-2023-11-01 17:21:10.992  INFO 4132 --- [main] com.gyee.alarm.AlarmWeb                  : Starting AlarmWeb on sltc with PID 4132 (E:\idea_workspace\alarmNew\alarm-web\target\classes started by shilin in E:\idea_workspace\alarmNew)
-2023-11-01 17:21:10.994  INFO 4132 --- [main] com.gyee.alarm.AlarmWeb                  : The following profiles are active: jn
-2023-11-01 17:21:12.169  INFO 4132 --- [main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
-2023-11-01 17:21:12.171  INFO 4132 --- [main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode.
-2023-11-01 17:21:12.253  INFO 4132 --- [main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 69ms. Found 0 Redis repository interfaces.
-2023-11-01 17:21:12.564  INFO 4132 --- [main] trationDelegate$BeanPostProcessorChecker : Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
-2023-11-01 17:21:12.569  INFO 4132 --- [main] trationDelegate$BeanPostProcessorChecker : Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$3010057d] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
-2023-11-01 17:21:12.583  INFO 4132 --- [main] trationDelegate$BeanPostProcessorChecker : Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
-2023-11-01 17:21:12.795  INFO 4132 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 6015 (http)
-2023-11-01 17:21:12.801  INFO 4132 --- [main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
-2023-11-01 17:21:12.802  INFO 4132 --- [main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.29]
-2023-11-01 17:21:12.905  INFO 4132 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
-2023-11-01 17:21:12.905  INFO 4132 --- [main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1745 ms
-2023-11-01 17:21:13.146  INFO 4132 --- [main] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1,master} inited
-2023-11-01 17:21:13.147 ERROR 4132 --- [main] com.alibaba.druid.pool.DruidDataSource   : testWhileIdle is true, validationQuery not set
-2023-11-01 17:21:13.148  INFO 4132 --- [main] com.alibaba.druid.pool.DruidDataSource   : {dataSource-2,slave} inited
-2023-11-01 17:21:13.148  INFO 4132 --- [main] c.b.d.d.DynamicRoutingDataSource         : dynamic-datasource - add a datasource named [slave] success
-2023-11-01 17:21:13.148  INFO 4132 --- [main] c.b.d.d.DynamicRoutingDataSource         : dynamic-datasource - add a datasource named [master] success
-2023-11-01 17:21:13.148  INFO 4132 --- [main] c.b.d.d.DynamicRoutingDataSource         : dynamic-datasource initial loaded [2] datasource,primary datasource named [master]
-2023-11-01 17:21:14.576 ERROR 4132 --- [main] c.b.m.core.MybatisConfiguration          : mapper[com.gyee.alarm.mapper.auto.AlarmTsMapper.createTable] is ignored, because it exists, maybe from xml file
-2023-11-01 17:21:17.478  INFO 4132 --- [main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 2 endpoint(s) beneath base path '/actuator'
-2023-11-01 17:21:17.527  INFO 4132 --- [main] pertySourcedRequestMappingHandlerMapping : Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)]
-2023-11-01 17:21:17.618  INFO 4132 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
-2023-11-01 17:21:18.147  INFO 4132 --- [main] d.s.w.p.DocumentationPluginsBootstrapper : Context refreshed
-2023-11-01 17:21:18.157  INFO 4132 --- [main] d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s)
-2023-11-01 17:21:18.184  INFO 4132 --- [main] s.d.s.w.s.ApiListingReferenceScanner     : Scanning for api listing references
-2023-11-01 17:21:18.324  INFO 4132 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteAlertruleUsingDELETE_1
-2023-11-01 17:21:18.329  INFO 4132 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: saveAndUpdateAlertruleUsingPOST_1
-2023-11-01 17:21:18.332  INFO 4132 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteAlertruleUsingDELETE_2
-2023-11-01 17:21:18.333  INFO 4132 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: importExcelUsingPOST_1
-2023-11-01 17:21:18.334  INFO 4132 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: importTemplateUsingGET_1
-2023-11-01 17:21:18.338  INFO 4132 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: queryByPageUsingGET_1
-2023-11-01 17:21:18.344  INFO 4132 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: queryWtAlarmDescListUsingGET_1
-2023-11-01 17:21:18.353  INFO 4132 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: saveAndUpdateAlertruleUsingPOST_2
-2023-11-01 17:21:18.431  INFO 4132 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: findListUsingGET_1
-2023-11-01 17:21:18.448  INFO 4132 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getAllDeviceStructureUsingGET_1
-2023-11-01 17:21:18.471  INFO 4132 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getDeviceStructureTreeUsingGET_1
-2023-11-01 17:21:18.474  INFO 4132 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: queryByPageUsingGET_2
-2023-11-01 17:21:18.475  INFO 4132 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: queryByPageUsingGET_3
-2023-11-01 17:21:18.491  INFO 4132 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: findAlarmlistUsingGET_1
-2023-11-01 17:21:18.540  INFO 4132 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 6015 (http) with context path ''
-2023-11-01 17:21:18.543  INFO 4132 --- [main] com.gyee.alarm.AlarmWeb                  : Started AlarmWeb in 7.846 seconds (JVM running for 8.966)
-2023-11-01 17:21:18.546  INFO 4132 --- [main] com.gyee.alarm.init.CacheContext         : 缓存开始------------------------------------------------------------
-2023-11-01 17:21:18.735  INFO 4132 --- [main] com.gyee.alarm.init.CacheContext         : SXJ_KGDL_DJY_FDC_STA------------------20
-2023-11-01 17:21:19.574  INFO 4132 --- [main] io.lettuce.core.EpollProvider            : Starting without optional epoll library
-2023-11-01 17:21:19.576  INFO 4132 --- [main] io.lettuce.core.KqueueProvider           : Starting without optional kqueue library
-2023-11-01 17:21:21.347  INFO 4132 --- [main] com.gyee.alarm.init.CacheContext         : 3227
-2023-11-01 17:21:34.921  INFO 4132 --- [http-nio-6015-exec-3] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
-2023-11-01 17:21:34.921  INFO 4132 --- [http-nio-6015-exec-3] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
-2023-11-01 17:21:34.927  INFO 4132 --- [http-nio-6015-exec-3] o.s.web.servlet.DispatcherServlet        : Completed initialization in 6 ms
-2023-11-01 17:26:56.056  INFO 4132 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'
-2023-11-01 17:26:56.428  INFO 4132 --- [SpringContextShutdownHook] c.b.d.d.DynamicRoutingDataSource         : dynamic-datasource start closing ....
-2023-11-01 17:26:56.434  INFO 4132 --- [SpringContextShutdownHook] com.alibaba.druid.pool.DruidDataSource   : {dataSource-2} closed
-2023-11-01 17:26:56.435  INFO 4132 --- [SpringContextShutdownHook] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} closed
-2023-11-01 17:26:56.435  INFO 4132 --- [SpringContextShutdownHook] c.b.d.d.DynamicRoutingDataSource         : dynamic-datasource all closed success,bye
-2023-11-01 17:27:03.375  INFO 23988 --- [main] com.gyee.alarm.AlarmWeb                  : Starting AlarmWeb on sltc with PID 23988 (E:\idea_workspace\alarmNew\alarm-web\target\classes started by shilin in E:\idea_workspace\alarmNew)
-2023-11-01 17:27:03.377  INFO 23988 --- [main] com.gyee.alarm.AlarmWeb                  : The following profiles are active: jn
-2023-11-01 17:27:04.555  INFO 23988 --- [main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
-2023-11-01 17:27:04.556  INFO 23988 --- [main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode.
-2023-11-01 17:27:04.641  INFO 23988 --- [main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 71ms. Found 0 Redis repository interfaces.
-2023-11-01 17:27:04.953  INFO 23988 --- [main] trationDelegate$BeanPostProcessorChecker : Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
-2023-11-01 17:27:04.957  INFO 23988 --- [main] trationDelegate$BeanPostProcessorChecker : Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$bfe30e6f] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
-2023-11-01 17:27:04.972  INFO 23988 --- [main] trationDelegate$BeanPostProcessorChecker : Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
-2023-11-01 17:27:05.187  INFO 23988 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 6015 (http)
-2023-11-01 17:27:05.194  INFO 23988 --- [main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
-2023-11-01 17:27:05.194  INFO 23988 --- [main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.29]
-2023-11-01 17:27:05.295  INFO 23988 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
-2023-11-01 17:27:05.295  INFO 23988 --- [main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1755 ms
-2023-11-01 17:27:05.542  INFO 23988 --- [main] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1,master} inited
-2023-11-01 17:27:05.544 ERROR 23988 --- [main] com.alibaba.druid.pool.DruidDataSource   : testWhileIdle is true, validationQuery not set
-2023-11-01 17:27:05.544  INFO 23988 --- [main] com.alibaba.druid.pool.DruidDataSource   : {dataSource-2,slave} inited
-2023-11-01 17:27:05.544  INFO 23988 --- [main] c.b.d.d.DynamicRoutingDataSource         : dynamic-datasource - add a datasource named [slave] success
-2023-11-01 17:27:05.544  INFO 23988 --- [main] c.b.d.d.DynamicRoutingDataSource         : dynamic-datasource - add a datasource named [master] success
-2023-11-01 17:27:05.545  INFO 23988 --- [main] c.b.d.d.DynamicRoutingDataSource         : dynamic-datasource initial loaded [2] datasource,primary datasource named [master]
-2023-11-01 17:27:07.009 ERROR 23988 --- [main] c.b.m.core.MybatisConfiguration          : mapper[com.gyee.alarm.mapper.auto.AlarmTsMapper.createTable] is ignored, because it exists, maybe from xml file
-2023-11-01 17:27:09.838  INFO 23988 --- [main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 2 endpoint(s) beneath base path '/actuator'
-2023-11-01 17:27:09.888  INFO 23988 --- [main] pertySourcedRequestMappingHandlerMapping : Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)]
-2023-11-01 17:27:09.981  INFO 23988 --- [main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
-2023-11-01 17:27:10.510  INFO 23988 --- [main] d.s.w.p.DocumentationPluginsBootstrapper : Context refreshed
-2023-11-01 17:27:10.522  INFO 23988 --- [main] d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s)
-2023-11-01 17:27:10.549  INFO 23988 --- [main] s.d.s.w.s.ApiListingReferenceScanner     : Scanning for api listing references
-2023-11-01 17:27:10.694  INFO 23988 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteAlertruleUsingDELETE_1
-2023-11-01 17:27:10.698  INFO 23988 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: saveAndUpdateAlertruleUsingPOST_1
-2023-11-01 17:27:10.701  INFO 23988 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: deleteAlertruleUsingDELETE_2
-2023-11-01 17:27:10.703  INFO 23988 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: importExcelUsingPOST_1
-2023-11-01 17:27:10.703  INFO 23988 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: importTemplateUsingGET_1
-2023-11-01 17:27:10.708  INFO 23988 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: queryByPageUsingGET_1
-2023-11-01 17:27:10.714  INFO 23988 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: queryWtAlarmDescListUsingGET_1
-2023-11-01 17:27:10.724  INFO 23988 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: saveAndUpdateAlertruleUsingPOST_2
-2023-11-01 17:27:10.801  INFO 23988 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: findListUsingGET_1
-2023-11-01 17:27:10.812  INFO 23988 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getAllDeviceStructureUsingGET_1
-2023-11-01 17:27:10.823  INFO 23988 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: getDeviceStructureTreeUsingGET_1
-2023-11-01 17:27:10.826  INFO 23988 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: queryByPageUsingGET_2
-2023-11-01 17:27:10.827  INFO 23988 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: queryByPageUsingGET_3
-2023-11-01 17:27:10.843  INFO 23988 --- [main] .d.s.w.r.o.CachingOperationNameGenerator : Generating unique operation named: findAlarmlistUsingGET_1
-2023-11-01 17:27:10.888  INFO 23988 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 6015 (http) with context path ''
-2023-11-01 17:27:10.890  INFO 23988 --- [main] com.gyee.alarm.AlarmWeb                  : Started AlarmWeb in 7.816 seconds (JVM running for 8.986)
-2023-11-01 17:27:10.894  INFO 23988 --- [main] com.gyee.alarm.init.CacheContext         : 缓存开始------------------------------------------------------------
-2023-11-01 17:27:11.080  INFO 23988 --- [main] com.gyee.alarm.init.CacheContext         : SXJ_KGDL_DJY_FDC_STA------------------20
-2023-11-01 17:27:11.853  INFO 23988 --- [main] io.lettuce.core.EpollProvider            : Starting without optional epoll library
-2023-11-01 17:27:11.855  INFO 23988 --- [main] io.lettuce.core.KqueueProvider           : Starting without optional kqueue library
-2023-11-01 17:27:13.757  INFO 23988 --- [main] com.gyee.alarm.init.CacheContext         : 3227
-2023-11-01 17:28:06.793  INFO 23988 --- [main] com.gyee.alarm.init.CacheContext         : 缓存结束------------------------------------------------------------
-2023-11-01 17:28:06.795  INFO 23988 --- [main] com.gyee.alarm.AlarmWeb                  : 
--------------------------------------------------------------------
-	智能报警系统启动成功,访问路径如下:
-	本地路径: 		http://localhost:6015/
-	网络地址: 		http://192.168.56.1:6015/
-	API文档: 		http://192.168.56.1:6015//swagger-ui.html
------------------------------------------------------------------------
-2023-11-01 17:28:08.229  INFO 23988 --- [RMI TCP Connection(28)-192.168.56.1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
-2023-11-01 17:28:08.229  INFO 23988 --- [RMI TCP Connection(28)-192.168.56.1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
-2023-11-01 17:28:08.248  INFO 23988 --- [RMI TCP Connection(28)-192.168.56.1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 19 ms
-2023-11-01 17:29:15.107  INFO 23988 --- [SpringContextShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'
-2023-11-01 17:29:15.300  INFO 23988 --- [SpringContextShutdownHook] c.b.d.d.DynamicRoutingDataSource         : dynamic-datasource start closing ....
-2023-11-01 17:29:15.307  INFO 23988 --- [SpringContextShutdownHook] com.alibaba.druid.pool.DruidDataSource   : {dataSource-2} closed
-2023-11-01 17:29:15.309  INFO 23988 --- [SpringContextShutdownHook] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} closed
-2023-11-01 17:29:15.309  INFO 23988 --- [SpringContextShutdownHook] c.b.d.d.DynamicRoutingDataSource         : dynamic-datasource all closed success,bye
+2024-08-07 08:18:45.510  INFO 12136 --- [main] com.gyee.alarm.AlarmCustom               : Starting AlarmCustom on sltc with PID 12136 (E:\idea_workspace\alarmNew\alarm-custom\target\classes started by shilin in E:\idea_workspace\alarmNew)
+2024-08-07 08:18:45.522  INFO 12136 --- [main] com.gyee.alarm.AlarmCustom               : The following profiles are active: jn