Procházet zdrojové kódy

报警统计功能优化

shilin před 1 rokem
rodič
revize
6d6697003a
42 změnil soubory, kde provedl 127805 přidání a 634 odebrání
  1. 5 4
      alarm-custom/src/main/java/com/gyee/alarm/config/ThreadPoolTaskConfig.java
  2. 37 37
      alarm-custom/src/main/java/com/gyee/alarm/init/CacheContext.java
  3. 122 128
      alarm-custom/src/main/java/com/gyee/alarm/service/AlarmCustomService.java
  4. 8 5
      alarm-custom/src/main/java/com/gyee/alarm/task/thread/AlarmThread.java
  5. 13 11
      alarm-custom/src/main/java/com/gyee/alarm/task/thread/AlarmThreadPool.java
  6. 7 3
      alarm-custom/src/main/java/com/gyee/alarm/task/thread/ReadWsDataThread.java
  7. 17 15
      alarm-custom/src/main/java/com/gyee/alarm/task/thread/ReadWsDataThreadPoolPool.java
  8. 8 4
      alarm-custom/src/main/java/com/gyee/alarm/task/thread/ReadWtDataThread.java
  9. 15 13
      alarm-custom/src/main/java/com/gyee/alarm/task/thread/ReadWtDataThreadPoolPool.java
  10. 3 2
      alarm-custom/src/main/resources/application-jn.yml
  11. 9 3
      alarm-scanner/src/main/java/com/gyee/alarm/CalculateServer.java
  12. 20 17
      alarm-scanner/src/main/java/com/gyee/alarm/service/AlarmScannerService.java
  13. 6 1
      alarm-scanner/src/main/java/com/gyee/alarm/task/thread/AlarmThread.java
  14. 2 2
      alarm-scanner/src/main/resources/application-bt.yml
  15. 1 1
      alarm-service/src/main/java/com/gyee/alarm/service/AlarmBtService.java
  16. 38 35
      alarm-service/src/main/java/com/gyee/alarm/service/PushDataSevice.java
  17. 3 1
      alarm-web/src/main/java/com/gyee/alarm/controller/AlarmHistoryController.java
  18. 3 0
      alarm-web/src/main/java/com/gyee/alarm/controller/AlertRuleController.java
  19. 29 4
      alarm-web/src/main/java/com/gyee/alarm/controller/AuthController.java
  20. 16 4
      alarm-web/src/main/java/com/gyee/alarm/mapper/auto/AlarmTsMapper.java
  21. 11 6
      alarm-web/src/main/java/com/gyee/alarm/service/AlarmHistoryService.java
  22. 69276 338
      log/ota.log
  23. binární
      log/ota.log.2023-09-12.0.gz
  24. binární
      log/ota.log.2023-09-18.0.gz
  25. binární
      log/ota.log.2023-09-19.0.gz
  26. 58156 0
      log/ota.log.2023-09-19.148206075757799.tmp
  27. binární
      log/ota.log.2023-09-20.0.gz
  28. binární
      log/ota.log.2023-09-20.1.gz
  29. binární
      log/ota.log.2023-09-20.10.gz
  30. binární
      log/ota.log.2023-09-20.11.gz
  31. binární
      log/ota.log.2023-09-20.12.gz
  32. binární
      log/ota.log.2023-09-20.13.gz
  33. binární
      log/ota.log.2023-09-20.14.gz
  34. binární
      log/ota.log.2023-09-20.15.gz
  35. binární
      log/ota.log.2023-09-20.2.gz
  36. binární
      log/ota.log.2023-09-20.3.gz
  37. binární
      log/ota.log.2023-09-20.4.gz
  38. binární
      log/ota.log.2023-09-20.5.gz
  39. binární
      log/ota.log.2023-09-20.6.gz
  40. binární
      log/ota.log.2023-09-20.7.gz
  41. binární
      log/ota.log.2023-09-20.8.gz
  42. binární
      log/ota.log.2023-09-20.9.gz

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

@@ -17,19 +17,19 @@ public class ThreadPoolTaskConfig {
     /**
      * 核心线程数(默认线程数)
      */
-    private static final int corePoolSize = 40;
+    private static final int corePoolSize = 10;
     /**
      * 最大线程数
      */
-    private static final int maxPoolSize = 100;
+    private static final int maxPoolSize = 20;
     /**
      * 允许线程空闲时间(单位:默认为秒)
      */
-    private static final int keepAliveTime = 60;
+    private static final int keepAliveTime = 30;
     /**
      * 缓冲队列大小
      */
-    private static final int queueCapacity = 300;
+    private static final int queueCapacity = 1000;
     /**
      * 允许等待最长时间
      */
@@ -65,6 +65,7 @@ public class ThreadPoolTaskConfig {
         executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
         // 初始化
         executor.initialize();
+
         return executor;
     }
 }

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

@@ -568,43 +568,43 @@ public class CacheContext implements CommandLineRunner {
         statusMap = JSONObject.parseObject(sszzt, new TypeReference<Map<String,List<ProBasicStatusPoint>>>() {
         });
 
-        List<ProEconWtPowerCurveFitting> econWtPowerCurveFittings = proEconWtPowerCurveFittingService.list();
-        if (StringUtils.isNotNull(econWtPowerCurveFittings)){
-            econWtPowerCurveFittings.stream().forEach(curveFitting->{
-                if (curveFittingPowerMap.containsKey(curveFitting.getWindturbineId())){
-                    curveFittingPowerMap.get(curveFitting.getWindturbineId()).put(curveFitting.getSpeed(),curveFitting);
-                }else {
-                    Map<Double,ProEconWtPowerCurveFitting> powerMap = new HashMap<>();
-                    powerMap.put(curveFitting.getSpeed(),curveFitting);
-                    curveFittingPowerMap.put(curveFitting.getWindturbineId(),powerMap);
-                }
-            });
-        }
-        for (int i = 0; i < 9; i++) {
-            Set<String> keys = redisService.keys(i);
-
-            for (String key : keys) {
-                redisDbMap.put(key, i);
-            }
-        }
-
-        pointdis = proBasicStatusPointService.list();
-
-        Map<String, ProBasicStatusPoint> items = null;
-        if (pointdis != null && !pointdis.isEmpty()) {
-            for (int i = 0; i < pointdis.size(); i++) {
-                ProBasicStatusPoint point = pointdis.get(i);
-                if (pointdismap.containsKey(point.getWindturbineId())) {
-                    items = pointdismap.get(point.getWindturbineId());
-                    items.put(point.getUniformCode(), point);
-                } else {
-                    items = new HashMap<String, ProBasicStatusPoint>();
-                    pointdismap.put(point.getWindturbineId(), items);
-                    items.put(point.getUniformCode(), point);
-                }
-
-            }
-        }
+//        List<ProEconWtPowerCurveFitting> econWtPowerCurveFittings = proEconWtPowerCurveFittingService.list();
+//        if (StringUtils.isNotNull(econWtPowerCurveFittings)){
+//            econWtPowerCurveFittings.stream().forEach(curveFitting->{
+//                if (curveFittingPowerMap.containsKey(curveFitting.getWindturbineId())){
+//                    curveFittingPowerMap.get(curveFitting.getWindturbineId()).put(curveFitting.getSpeed(),curveFitting);
+//                }else {
+//                    Map<Double,ProEconWtPowerCurveFitting> powerMap = new HashMap<>();
+//                    powerMap.put(curveFitting.getSpeed(),curveFitting);
+//                    curveFittingPowerMap.put(curveFitting.getWindturbineId(),powerMap);
+//                }
+//            });
+//        }
+//        for (int i = 0; i < 9; i++) {
+//            Set<String> keys = redisService.keys(i);
+//
+//            for (String key : keys) {
+//                redisDbMap.put(key, i);
+//            }
+//        }
+//
+//        pointdis = proBasicStatusPointService.list();
+//
+//        Map<String, ProBasicStatusPoint> items = null;
+//        if (pointdis != null && !pointdis.isEmpty()) {
+//            for (int i = 0; i < pointdis.size(); i++) {
+//                ProBasicStatusPoint point = pointdis.get(i);
+//                if (pointdismap.containsKey(point.getWindturbineId())) {
+//                    items = pointdismap.get(point.getWindturbineId());
+//                    items.put(point.getUniformCode(), point);
+//                } else {
+//                    items = new HashMap<String, ProBasicStatusPoint>();
+//                    pointdismap.put(point.getWindturbineId(), items);
+//                    items.put(point.getUniformCode(), point);
+//                }
+//
+//            }
+//        }
 
         logger.info("缓存结束------------------------------------------------------------");
     }

+ 122 - 128
alarm-custom/src/main/java/com/gyee/alarm/service/AlarmCustomService.java

@@ -8,11 +8,9 @@ import com.gyee.alarm.model.auto.ProBasicEquipmentPoint;
 import com.gyee.alarm.model.auto.ProBasicPowerstationPoint;
 import com.gyee.alarm.model.vo.AlarmCustomTag;
 import com.gyee.alarm.model.vo.AlarmTag;
-import com.gyee.alarm.task.thread.AlarmThread;
-import com.gyee.alarm.task.thread.ReadWpDataThread;
-import com.gyee.alarm.task.thread.ReadWsDataThread;
-import com.gyee.alarm.task.thread.ReadWtDataThread;
+import com.gyee.alarm.task.thread.*;
 import com.gyee.alarm.util.realtimesource.IEdosUtil;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.ss.formula.functions.T;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -22,12 +20,12 @@ import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.concurrent.Executor;
-import java.util.concurrent.TimeUnit;
+import java.util.concurrent.*;
+import java.util.concurrent.atomic.AtomicInteger;
 
 
 @Service
-
+@Slf4j
 public class AlarmCustomService {
 
     private Logger logger = LoggerFactory.getLogger(this.getClass());
@@ -51,174 +49,170 @@ public class AlarmCustomService {
     @Resource
     private IAlarmService alarmService;
 
-    private List<AlarmCustomTag>  alarmTags=new ArrayList<>();
+    private List<AlarmCustomTag> alarmTags = new ArrayList<>();
     @Resource
     private Executor executor;
 
-    private  StringBuilder str=new StringBuilder();
     /**
      * 初始化
      */
     public void init() {
 
-        alarmTags =alarmService.findTagsByCt();
+        alarmTags = alarmService.findTagsByCt();
     }
 
     public void taskJobs(boolean runStarted) throws InterruptedException {
-        readTaskJobs(runStarted);
-//        Thread.sleep(interval);
-        calTaskJobs(runStarted);
+
+        while (runStarted) {
+
+            readTaskJobs(runStarted);
+
+            Thread.sleep((interval * 500));
+
+            calTaskJobs(runStarted);
+
+            Thread.sleep((interval * 500));
+        }
     }
 
+
     /**
      * 读取测点数据,缓存到内存
      */
-    public void readTaskJobs(boolean runStarted) {
+    public synchronized void readTaskJobs(boolean runStarted) throws InterruptedException {
 
+            List<ProBasicEquipmentPoint> wtPointList = CacheContext.wtPointList;// 设备测点集合
 
-        while (runStarted)
-        {
+            List<ProBasicPowerstationPoint> wsPointList = CacheContext.wsPointList; //升压站测点集合
 
-        int wtlen = 1;
+            //读取设备测点
+            List<ProBasicEquipmentPoint> wtpols = new ArrayList<>();
 
-        List<ProBasicEquipmentPoint> wtPointList = CacheContext.wtPointList;// 设备测点集合
-         List<ProBasicPowerstationPoint> wpPointList =CacheContext.wpPointList; //场站测点集合
-        List<ProBasicPowerstationPoint> wsPointList =CacheContext.wsPointList; //升压站测点集合
+            int wtlistNumber = wtPointList.size() / readCount;
+            int wslistNumber = wsPointList.size() / readCount;
 
-        //读取设备测点
-        List<ProBasicEquipmentPoint> wtpols=new ArrayList<>();
 
-        int listNumber=wtPointList.size()/readCount;
+            int number = 0;
+            if (wtPointList.size() % wtlistNumber == 0) {
+                number = readCount;
+            } else {
+                number = readCount + 1;
+            }
 
-        for(int i=0;i<wtPointList.size();i++)
-        {
-            wtpols.add(wtPointList.get(i));
-            if(i!=0 && i%listNumber==0)
-            {
-                str.setLength(0);
-                str.append("设备读取线程号:").append(wtlen);
-                new Thread(new ReadWtDataThread(executor, edosUtil, readRows,  wtpols,interval,str)).start();
-                wtpols=new ArrayList<>();
-                wtlen++;
+            if (wsPointList.size() % wslistNumber == 0) {
+                number =  number+readCount;
+            } else {
+                number =  number+readCount + 1;
             }
-        }
+            CountDownLatch countDownLatch = new CountDownLatch(number);
 
-        if(!wtpols.isEmpty())
-        {
-            str.setLength(0);
-            str.append("设备读取线程号:").append(wtlen);
-            new Thread(new ReadWtDataThread(executor, edosUtil, readRows,  wtpols,interval,str)).start();
-            listNumber++;
-        }
+            int time=0;
+            StringBuilder str = new StringBuilder();
+            str.append("设备读取总数:").append(alarmTags.size()).append(",线程数:").append(number).append(",分块大小:").append(wtlistNumber+wslistNumber);
+            log.info(String.valueOf(str));
 
-        StringBuilder str=new StringBuilder();
-        str.append("设备读取总数:").append(alarmTags.size()).append(",线程数:").append(taskCount).append(",分块大小:").append(listNumber);
-
-
-//        System.out.println(str.toString());
-//        //读取场站测点
-//        int wplen = 1;
-//        List<ProBasicPowerstationPoint> wppols=new ArrayList<>();
-//        listNumber=wpPointList.size()/readCount;
-//        for(int i=0;i<wpPointList.size();i++)
-//        {
-//            wppols.add(wpPointList.get(i));
-//            if(i!=0 && i%listNumber==0)
-//            {
-//                str.setLength(0);
-//                str.append("场站读取线程号:").append(wplen);
-//                new Thread(new ReadWpDataThread(executor, edosUtil, readRows,  wppols,interval,str)).start();
-//                wppols=new ArrayList<>();
-//                wplen++;
-//            }
-//        }
-//
-//        if(!wppols.isEmpty())
-//        {
-//            str.setLength(0);
-//            str.append("场站读取线程号:").append(wplen);
-//            new Thread(new ReadWpDataThread(executor, edosUtil, readRows,  wppols,interval,str)).start();
-//            listNumber++;
-//        }
-//
-//        str=new StringBuilder();
-//        str.append("场站读取总数:").append(alarmTags.size()).append(",线程数:").append(taskCount).append(",分块大小:").append(listNumber);
-//
-//        System.out.println(str.toString());
-
-        str.setLength(0);
-        //读取升压站测点
-        int wslen = 1;
-        List<ProBasicPowerstationPoint> wspols=new ArrayList<>();
-        for(int i=0;i<wsPointList.size();i++)
-        {
-            wspols.add(wsPointList.get(i));
-            if(i!=0 && i%readCount==0)
-            {
-                str.setLength(0);
-                str.append("总数:").append(wspols.size()).append(",线程数:").append(readCount).append(",分块大小:").append(wslen);
+            for (int i = 0; i < wtPointList.size(); i++) {
+                wtpols.add(wtPointList.get(i));
+                if (i != 0 && (i+1) % wtlistNumber == 0) {
 
-                new Thread(new ReadWsDataThread(executor, edosUtil, readRows,  wspols,interval,str)).start();
-                wspols=new ArrayList<>();
-                wslen++;
+                    time++;
+                    str.setLength(0);
+                    str.append("数据读取").append(time).append("线程");
+                   new Thread(new ReadWtDataThread(executor, edosUtil, readRows, wtpols, interval, str, countDownLatch)).start();
+                    wtpols = new ArrayList<>();
+                 }
             }
-        }
 
-        if(!wspols.isEmpty())
-        {
-            str.setLength(0);
-            str.append("总数:").append(wspols.size()).append(",线程数:").append(readCount).append(",分块大小:").append(wslen);
+            if (!wtpols.isEmpty()) {
 
-            new Thread(new ReadWsDataThread(executor, edosUtil, readRows,  wspols,interval,str)).start();
+                time++;
+                str.setLength(0);
+                str.append("数据读取").append(time).append("线程");
+                new Thread(new ReadWtDataThread(executor, edosUtil, readRows, wtpols, interval, str, countDownLatch)).start();
+            }
 
-        }
 
-        }
-        try {
-            Thread.sleep((interval * 1000));
-        } catch (InterruptedException e) {
-            throw new RuntimeException(e);
-        }
-    }
+/***************************************************************************************************************************/
 
+            //读取升压站测点
 
-    public void calTaskJobs(boolean runStarted) {
+            List<ProBasicPowerstationPoint> wspols = new ArrayList<>();
+            for (int i = 0; i < wsPointList.size(); i++) {
+                wspols.add(wsPointList.get(i));
+                if (i != 0 && (i+1) % wslistNumber == 0) {
+                    time++;
+                    str.setLength(0);
+                    str.append("数据读取").append(time).append("线程");
+                    new Thread(new ReadWsDataThread(executor, edosUtil, readRows, wspols, interval, str, countDownLatch)).start();
+                    wspols = new ArrayList<>();
+                }
+            }
 
+            if (!wspols.isEmpty()) {
+                time++;
+                str.setLength(0);
+                str.append("数据读取").append(time).append("线程");
+                new Thread(new ReadWsDataThread(executor, edosUtil, readRows, wspols, interval, str, countDownLatch)).start();
 
-        while(runStarted)
-        {
-            int len = 1;
+            }
+            countDownLatch.await();
+            log.info("数据读取完成!");
+            try {
+                Thread.sleep((interval * 500));
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+
+
+    }
 
-            List<AlarmCustomTag> alarmls=new ArrayList<>();
 
-            for(int i=0;i<alarmTags.size();i++)
-            {
+    public  synchronized void calTaskJobs(boolean runStarted) throws InterruptedException {
+
+            List<AlarmCustomTag> alarmls = new ArrayList<>();
+            int number = 0;
+            int listNumber = alarmTags.size() / taskCount;
+            if (alarmTags.size() % listNumber == 0) {
+                number = taskCount;
+            } else {
+                number = taskCount+1;
+            }
+            StringBuilder str = new StringBuilder();
+            str.append("自定义分析总数:").append(alarmTags.size()).append(",线程数:").append(number).append(",分块大小:").append(listNumber);
+            log.info(String.valueOf(str));
+            CountDownLatch countDownLatch = new CountDownLatch(number);
+
+            int time=0;
+            for (int i = 0; i < alarmTags.size(); i++) {
                 alarmls.add(alarmTags.get(i));
-                if(i!=0 && i%taskCount==0)
-                {
+                if (i != 0 && (i+1) % listNumber == 0) {
+
+                    time++;
                     str.setLength(0);
-                    str.append("总数:").append(alarmTags.size()).append(",线程数:").append(taskCount).append(",分块大小:").append(len);
+                    str.append("自定义分析").append(time).append("线程");
+                    new Thread(new AlarmThread(executor,  alarmService,  alarmls,interval,str,readRows,countDownLatch)).start();
+                    alarmls = new ArrayList<>();
 
-                    new Thread(new AlarmThread(executor,  alarmService,  alarmls,interval,str,readRows)).start();
-                    alarmls=new ArrayList<>();
-                    len++;
                 }
             }
 
-            if(!alarmls.isEmpty())
-            {
-                str.setLength(0);
-                str.append("总数:").append(alarmTags.size()).append(",线程数:").append(taskCount).append(",分块大小:").append(len);
+            if (!alarmls.isEmpty()) {
 
-                new Thread(new AlarmThread(executor,  alarmService,  alarmls,interval,str,readRows)).start();
+                time++;
+                str.setLength(0);
+                str.append("自定义分析").append(time).append("线程");
+                new Thread(new AlarmThread(executor,  alarmService,  alarmls,interval,str,readRows,countDownLatch)).start();
 
             }
-        }
 
-        try {
-            Thread.sleep((interval * 1000));
-        } catch (InterruptedException e) {
-            throw new RuntimeException(e);
+            countDownLatch.await();
+            log.info("自定义分析完成!");
+            try {
+                Thread.sleep((interval * 500));
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
         }
-    }
+//
+//    }
 }

+ 8 - 5
alarm-custom/src/main/java/com/gyee/alarm/task/thread/AlarmThread.java

@@ -8,6 +8,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.List;
+import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
 import java.util.concurrent.FutureTask;
@@ -26,14 +27,16 @@ public class AlarmThread implements Runnable {
 
     private Integer interval;
 
-    public AlarmThread(Executor executor,  IAlarmService alarmService, List<AlarmCustomTag> alarmVoList, Integer interval,
-                       StringBuilder str,Integer readRows) {
+    private CountDownLatch countDownLatch;
+    public AlarmThread(Executor executor, IAlarmService alarmService, List<AlarmCustomTag> alarmVoList, Integer interval,
+                       StringBuilder str, Integer readRows, CountDownLatch countDownLatch) {
         this.executor = executor;
         this.alarmService = alarmService;
         this.alarmVoList = alarmVoList;
         this.interval = interval;
         this.str = str;
         this.readRows = readRows;
+        this.countDownLatch = countDownLatch;
     }
 
 
@@ -43,17 +46,17 @@ public class AlarmThread implements Runnable {
 
         String task = "task@ " + String.valueOf(str);
         logger.info("创建任务并提交到线程池中:" + task);
-        FutureTask<String> futureTask = new FutureTask<>(new AlarmThreadPool(task,
-				 alarmService,  alarmVoList,interval,str,readRows));
+        FutureTask<Integer> futureTask = new FutureTask<>(new AlarmThreadPool(alarmService,  alarmVoList,interval,str,readRows));
 
         executor.execute(futureTask);
 
 
         // 在这里可以做别的任何事情
-        String result = null;
+        Integer result = null;
         try {
             // 取得结果,同时设置超时执行时间为1秒。同样可以用future.get(),不设置执行超时时间取得结果
             result = futureTask.get();
+            countDownLatch.countDown();
         } catch (InterruptedException e) {
             futureTask.cancel(true);
         } catch (ExecutionException e) {

+ 13 - 11
alarm-custom/src/main/java/com/gyee/alarm/task/thread/AlarmThreadPool.java

@@ -17,7 +17,7 @@ import java.io.Serializable;
 import java.util.*;
 import java.util.concurrent.Callable;
 
-public class AlarmThreadPool implements Callable<String>, Serializable {
+public class AlarmThreadPool implements Callable<Integer>, Serializable {
 
 	private Logger logger = LoggerFactory.getLogger(this.getClass());
 
@@ -39,25 +39,26 @@ public class AlarmThreadPool implements Callable<String>, Serializable {
 	private Integer readRows;
 
 
-	public AlarmThreadPool(Object tasks,  IAlarmService alarmService, List<AlarmCustomTag> alarmVoList,
+	public AlarmThreadPool( IAlarmService alarmService, List<AlarmCustomTag> alarmVoList,
 						   Integer interval, StringBuilder str,Integer readRows
 	) {
 
-		this.threadPoolTaskData = tasks;
+
 		this.alarmService = alarmService;
 		this.alarmVoList = alarmVoList;
 		this.interval = interval;
 		this.str = str;
 		this.readRows = readRows;
+
 	}
 
-	public synchronized String call() throws Exception {
+	public synchronized Integer call() throws Exception {
 
-		String result = "";
+		Integer result = 1;
 
 		try {
 
-//			while (true)
+//			while (runStarted)
 //			{
 
 				List<AlarmTag>  saveAlarmTags=new ArrayList<>();
@@ -82,16 +83,17 @@ public class AlarmThreadPool implements Callable<String>, Serializable {
 				}
 
 
-				try {
-					Thread.sleep((interval * 1000));
-				} catch (InterruptedException e) {
-					throw new RuntimeException(e);
-				}
+//				try {
+//					Thread.sleep((interval * 1000));
+//				} catch (InterruptedException e) {
+//					throw new RuntimeException(e);
+//				}
 //			}
 
 		} catch (Exception e) {
 
 			e.printStackTrace();
+			result = 0;
 		}
 		threadPoolTaskData = null;
 

+ 7 - 3
alarm-custom/src/main/java/com/gyee/alarm/task/thread/ReadWsDataThread.java

@@ -6,6 +6,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.List;
+import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
 import java.util.concurrent.FutureTask;
@@ -25,14 +26,16 @@ public class ReadWsDataThread implements Runnable {
     private Integer interval;
 
     private boolean serverStarted=true;
+    private CountDownLatch countDownLatch;
 
-    public ReadWsDataThread(Executor executor, IEdosUtil edosUtil, Integer readRows, List<ProBasicPowerstationPoint> wpPointList, Integer interval, StringBuilder str) {
+    public ReadWsDataThread(Executor executor, IEdosUtil edosUtil, Integer readRows, List<ProBasicPowerstationPoint> wpPointList, Integer interval, StringBuilder str, CountDownLatch countDownLatch) {
         this.executor = executor;
         this.edosUtil = edosUtil;
         this.readRows = readRows;
         this.wpPointList = wpPointList;
         this.interval = interval;
         this.str = str;
+        this.countDownLatch = countDownLatch;
     }
 
 
@@ -42,17 +45,18 @@ public class ReadWsDataThread implements Runnable {
 
         String task = "task@ " + String.valueOf(str);
         logger.info("创建任务并提交到线程池中:" + task);
-        FutureTask<String> futureTask = new FutureTask<>(new ReadWsDataThreadPoolPool(task,
+        FutureTask<Integer> futureTask = new FutureTask<>(new ReadWsDataThreadPoolPool(
 				edosUtil, readRows,  wpPointList,interval,str));
 
         executor.execute(futureTask);
 
 
         // 在这里可以做别的任何事情
-        String result = null;
+        Integer result = null;
         try {
             // 取得结果,同时设置超时执行时间为1秒。同样可以用future.get(),不设置执行超时时间取得结果
             result = futureTask.get();
+            countDownLatch.countDown();
         } catch (InterruptedException e) {
             futureTask.cancel(true);
         } catch (ExecutionException e) {

+ 17 - 15
alarm-custom/src/main/java/com/gyee/alarm/task/thread/ReadWsDataThreadPoolPool.java

@@ -15,7 +15,7 @@ import java.util.Map;
 import java.util.concurrent.Callable;
 import java.util.concurrent.atomic.AtomicInteger;
 
-public class ReadWsDataThreadPoolPool implements Callable<String>, Serializable {
+public class ReadWsDataThreadPoolPool implements Callable<Integer>, Serializable {
 
 	private Logger logger = LoggerFactory.getLogger(this.getClass());
 
@@ -23,7 +23,6 @@ public class ReadWsDataThreadPoolPool implements Callable<String>, Serializable
 
 	// 保存任务所需要的数据
 
-	private Object threadPoolTaskData;
 
 	private IEdosUtil edosUtil;
 
@@ -35,26 +34,27 @@ public class ReadWsDataThreadPoolPool implements Callable<String>, Serializable
 	private Integer interval;
 
 
-	public ReadWsDataThreadPoolPool(Object tasks, IEdosUtil edosUtil, Integer readRows, List<ProBasicPowerstationPoint> pointList,
+	public ReadWsDataThreadPoolPool( IEdosUtil edosUtil, Integer readRows, List<ProBasicPowerstationPoint> pointList,
                                     Integer interval, StringBuilder str
 	) {
 
-		this.threadPoolTaskData = tasks;
+
 		this.edosUtil = edosUtil;
 		this.readRows = readRows;
 		this.pointList = pointList;
 		this.interval = interval;
 		this.str = str;
+
 	}
 
-	public synchronized String call() throws Exception {
+	public synchronized Integer call() throws Exception {
 
-		String result = "";
+		Integer result = 1;
 
 		try {
 
-			while (true)
-			{
+//			while (runStarted)
+//			{
 				List<String>  ls=new ArrayList<>();
 				List<PointData> values=new ArrayList<>();
 
@@ -99,18 +99,20 @@ public class ReadWsDataThreadPoolPool implements Callable<String>, Serializable
 
 				}
 
-				try {
-					Thread.sleep(interval * 1000);
-				} catch (InterruptedException e) {
-					throw new RuntimeException(e);
-				}
-			}
+//				try {
+//					Thread.sleep(interval * 1000);
+//				} catch (InterruptedException e) {
+//					throw new RuntimeException(e);
+//				}
+//			}
 
 		} catch (Exception e) {
 
 			e.printStackTrace();
+
+			return 0;
 		}
-		threadPoolTaskData = null;
+
 
 		return result;
 

+ 8 - 4
alarm-custom/src/main/java/com/gyee/alarm/task/thread/ReadWtDataThread.java

@@ -8,6 +8,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.List;
+import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
 import java.util.concurrent.FutureTask;
@@ -27,14 +28,15 @@ public class ReadWtDataThread implements Runnable {
     private Integer interval;
 
     private boolean serverStarted=true;
-
-    public ReadWtDataThread(Executor executor, IEdosUtil edosUtil, Integer readRows, List<ProBasicEquipmentPoint> pointList, Integer interval, StringBuilder str) {
+    private CountDownLatch countDownLatch;
+    public ReadWtDataThread(Executor executor, IEdosUtil edosUtil, Integer readRows, List<ProBasicEquipmentPoint> pointList, Integer interval, StringBuilder str, CountDownLatch countDownLatch) {
         this.executor = executor;
         this.edosUtil = edosUtil;
         this.readRows = readRows;
         this.pointList = pointList;
         this.interval = interval;
         this.str = str;
+        this.countDownLatch = countDownLatch;
     }
 
 
@@ -44,17 +46,19 @@ public class ReadWtDataThread implements Runnable {
 
         String task = "task@ " + String.valueOf(str);
         logger.info("创建任务并提交到线程池中:" + task);
-        FutureTask<String> futureTask = new FutureTask<>(new ReadWtDataThreadPoolPool(task,
+        FutureTask<Integer> futureTask = new FutureTask<>(new ReadWtDataThreadPoolPool(
 				edosUtil, readRows,  pointList,interval,str));
 
         executor.execute(futureTask);
 
 
         // 在这里可以做别的任何事情
-        String result = null;
+        Integer result = null;
         try {
             // 取得结果,同时设置超时执行时间为1秒。同样可以用future.get(),不设置执行超时时间取得结果
             result = futureTask.get();
+
+            countDownLatch.countDown();
         } catch (InterruptedException e) {
             futureTask.cancel(true);
         } catch (ExecutionException e) {

+ 15 - 13
alarm-custom/src/main/java/com/gyee/alarm/task/thread/ReadWtDataThreadPoolPool.java

@@ -6,6 +6,7 @@ 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 io.swagger.models.auth.In;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -17,7 +18,7 @@ import java.util.Map;
 import java.util.concurrent.Callable;
 import java.util.concurrent.atomic.AtomicInteger;
 
-public class ReadWtDataThreadPoolPool implements Callable<String>, Serializable {
+public class ReadWtDataThreadPoolPool implements Callable<Integer>, Serializable {
 
 	private Logger logger = LoggerFactory.getLogger(this.getClass());
 
@@ -25,7 +26,6 @@ public class ReadWtDataThreadPoolPool implements Callable<String>, Serializable
 
 	// 保存任务所需要的数据
 
-	private Object threadPoolTaskData;
 
 	private IEdosUtil edosUtil;
 
@@ -37,25 +37,26 @@ public class ReadWtDataThreadPoolPool implements Callable<String>, Serializable
 	private Integer interval;
 
 
-	public ReadWtDataThreadPoolPool(Object tasks, IEdosUtil edosUtil, Integer readRows, List<ProBasicEquipmentPoint> pointList,
+	public ReadWtDataThreadPoolPool(IEdosUtil edosUtil, Integer readRows, List<ProBasicEquipmentPoint> pointList,
                                     Integer interval, StringBuilder str
 	) {
 
-		this.threadPoolTaskData = tasks;
+
 		this.edosUtil = edosUtil;
 		this.readRows = readRows;
 		this.pointList = pointList;
 		this.interval = interval;
 		this.str = str;
+
 	}
 
-	public synchronized String call() throws Exception {
+	public synchronized Integer call() throws Exception {
 
-		String result = "";
+		Integer result = 1;
 
 		try {
 
-//			while (true)
+//			while (runStarted)
 //			{
 				List<String>  ls=new ArrayList<>();
 				List<PointData> values=new ArrayList<>();
@@ -101,18 +102,19 @@ public class ReadWtDataThreadPoolPool implements Callable<String>, Serializable
 
 				}
 
-				try {
-					Thread.sleep((interval * 1000));
-				} catch (InterruptedException e) {
-					throw new RuntimeException(e);
-				}
+//				try {
+//					Thread.sleep((interval * 1000));
+//				} catch (InterruptedException e) {
+//					throw new RuntimeException(e);
+//				}
 //			}
 
 		} catch (Exception e) {
 
 			e.printStackTrace();
+			result=0;
 		}
-		threadPoolTaskData = null;
+
 
 		return result;
 

+ 3 - 2
alarm-custom/src/main/resources/application-jn.yml

@@ -169,9 +169,10 @@ frequency:
   cutinandout: 1
 urls:
   alarm-service: http://10.81.3.154:6014
+#  alarm-service: http://127.0.0.1:6014
 
-task-count: 10
-read-count: 10
+task-count: 3
+read-count: 2
 interval: 1
 
 #WT("wt_alarms", "设备报警超级表"),

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

@@ -16,7 +16,10 @@ public class CalculateServer {
 
     @Resource
     AlarmScannerService alarmScannerService;
-
+    @Value("${interval}")
+    private Integer interval;
+    @Value("${task-count}")
+    private Integer taskCount;
     private boolean serverStarted = false;
     private boolean runStarted = false;
     public boolean start() throws InterruptedException {
@@ -25,7 +28,6 @@ public class CalculateServer {
             return true;
         }
 
-
         try {
             //GlobalVar.config = configProperties;
             log.warn("警计算服务启动...... ");
@@ -41,7 +43,11 @@ public class CalculateServer {
             return false;
         }
 
-
+        try {
+            Thread.sleep((interval * 1000));
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        }
         return true;
     }
 

+ 20 - 17
alarm-scanner/src/main/java/com/gyee/alarm/service/AlarmScannerService.java

@@ -7,6 +7,7 @@ import com.gyee.alarm.model.vo.AlarmSuperTalbeType;
 import com.gyee.alarm.model.vo.AlarmTag;
 import com.gyee.alarm.task.thread.AlarmThread;
 import com.gyee.alarm.util.realtimesource.IEdosUtil;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -19,7 +20,7 @@ import java.util.concurrent.Executor;
 
 
 @Service
-
+@Slf4j
 public class AlarmScannerService {
 
     @Value("${task-count}")
@@ -76,37 +77,39 @@ public class AlarmScannerService {
             List<AlarmTag> alarmls = new ArrayList<>();
 
             int listNumber = alarmTags.size() / taskCount;
-
-//            if(alarmTags.size() % taskCount!=0)
-//            {
-//                listNumber++;
-//            }
+            int number = 0;
+            if (alarmTags.size() % listNumber == 0) {
+                number = taskCount;
+            } else {
+                number = taskCount + 1;
+            }
+            CountDownLatch countDownLatch = new CountDownLatch(number);
             StringBuilder str = new StringBuilder();
-
-            //   System.out.println(str.toString());
-//            final CountDownLatch latch = new CountDownLatch(listNumber);
+            str.append("总数:").append(alarmTags.size()).append(",线程数:").append(number).append(",分块大小:").append(listNumber);
+            log.info(String.valueOf(str));
             for (int i = 0; i < alarmTags.size(); i++) {
                 alarmls.add(alarmTags.get(i));
-                if (i != 0 && i % listNumber == 0) {
-                    new Thread(new AlarmThread(executor, edosUtil, alarmService, alarmls, interval, String.valueOf(len), readRows, alarmType)).start();
+                if (i != 0 && (i+1) % listNumber == 0) {
+                    new Thread(new AlarmThread(executor, edosUtil, alarmService, alarmls, interval, String.valueOf(len), readRows, alarmType,countDownLatch)).start();
                     alarmls = new ArrayList<>();
                     len++;
                 }
             }
 
             if (!alarmls.isEmpty()) {
-                new Thread(new AlarmThread(executor, edosUtil, alarmService, alarmls, interval, String.valueOf(len), readRows, alarmType)).start();
-                listNumber++;
+                new Thread(new AlarmThread(executor, edosUtil, alarmService, alarmls, interval, String.valueOf(len), readRows, alarmType,countDownLatch)).start();
+
             }
 
-            str.append("总数:").append(alarmTags.size()).append(",线程数:").append(taskCount).append(",分块大小:").append(listNumber);
-//            latch.await();
-//            System.out.println("一组线程完成......");
+
+            countDownLatch.await();
+            log.info("报警排查完成!");
             try {
-                Thread.sleep((interval * 1000));
+                Thread.sleep((interval * 500));
             } catch (InterruptedException e) {
                 throw new RuntimeException(e);
             }
+
         }
     }
 

+ 6 - 1
alarm-scanner/src/main/java/com/gyee/alarm/task/thread/AlarmThread.java

@@ -8,6 +8,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.List;
+import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
 import java.util.concurrent.FutureTask;
@@ -29,7 +30,9 @@ public class AlarmThread implements Runnable {
     private Integer readRows;
     private String alarmType;
     private boolean serverStarted=true;
-    public AlarmThread(Executor executor, IEdosUtil edosUtil, IAlarmService alarmService, List<AlarmTag> alarmVoList, Integer interval, String str,Integer readRows,String alarmType) {
+
+    private CountDownLatch countDownLatch;
+    public AlarmThread(Executor executor, IEdosUtil edosUtil, IAlarmService alarmService, List<AlarmTag> alarmVoList, Integer interval, String str,Integer readRows,String alarmType,CountDownLatch countDownLatch) {
         this.executor = executor;
         this.edosUtil = edosUtil;
         this.alarmService = alarmService;
@@ -38,6 +41,7 @@ public class AlarmThread implements Runnable {
         this.str = str;
         this.readRows = readRows;
         this.alarmType=alarmType;
+        this.countDownLatch=countDownLatch;
     }
 
 
@@ -58,6 +62,7 @@ public class AlarmThread implements Runnable {
         try {
             // 取得结果,同时设置超时执行时间为1秒。同样可以用future.get(),不设置执行超时时间取得结果
             result = futureTask.get();
+            countDownLatch.countDown();
         } catch (InterruptedException e) {
             futureTask.cancel(true);
         } catch (ExecutionException e) {

+ 2 - 2
alarm-scanner/src/main/resources/application-bt.yml

@@ -168,8 +168,8 @@ frequency:
   #切入切出
   cutinandout: 1
 urls:
-#  alarm-service: http://10.81.3.154:6014
-  alarm-service: http://127.0.0.1:6014
+  alarm-service: http://10.81.3.154:6014
+#  alarm-service: http://127.0.0.1:6014
 
 #分隔10个线程
 task-count: 10

+ 1 - 1
alarm-service/src/main/java/com/gyee/alarm/service/AlarmBtService.java

@@ -406,7 +406,7 @@ public class AlarmBtService {
                         {
                             alarm.setWpName(CacheContext.subwpmap.get(vo.getStationid()).getName());
                         }
-
+                        alarm.setWpId(vo.getStationid());
                         pushDataSevice.pushBtData(alarm);
 
                         tempmap.put(po.getTbname(),po);

+ 38 - 35
alarm-service/src/main/java/com/gyee/alarm/service/PushDataSevice.java

@@ -18,9 +18,7 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.websocket.EncodeException;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 
 
@@ -88,6 +86,7 @@ public class PushDataSevice {
 
     public  void pushBtData(AlarmTag po) throws EncodeException, IOException {
         ConcurrentHashMap<String, WebSocket> webSocketPushMap = WebSocket.webSocketMap;
+        ConcurrentHashMap<String, WebSocketBt> webSocketPushBtMap = WebSocketBt.webSocketBtMap;
         ConcurrentHashMap<String, PushParams> webSocketPushParamsMap = WebSocket.webSocketParamsMap;
 
         ConcurrentHashMap<String, List<String>> btParamsMap = WebSocketBt.btParamsMap;
@@ -96,47 +95,34 @@ public class PushDataSevice {
             for(String key : webSocketPushMap.keySet()){
                 // 根据ws连接用户ID获取推送参数
 //                PushParams pushParams = webSocketPushParamsMap.get(key);
-
-
                 synchronized(po.getId())
                 {
-//                    if(webSocketPushParamsMap.contains(po.getId()))
-//                    {
-//                        PushParams pp=webSocketPushParamsMap.get(po.getId());
-//
-//                        double hours= DateUtils.hoursDiff(pp.getStartTime(),new Date());
-//                        if(hours>pushinterval)
-//                        {
-//                            if(checkBtId(key,po.getWpId()))
-//                            {
-//                                webSocket.sendMessageByUserId(key,po);
-//                                pp.setStartTime(new Date(po.getTs()));
-//                            }
-//                        }
-//                    }else
-//                    {
-//                        if(checkBtId(key,po.getWpId()))
-//                        {
-//                            webSocket.sendMessageByUserId(key,po);
-//                            PushParams pp=new PushParams();
-//                            pp.setStartTime(new Date());
-//                            webSocketPushParamsMap.put(po.getId(),pp);
-//
-//                        }
-//
-//                    }
-
                     if(checkBtId(key,po.getWpId()))
                     {
                         webSocket.sendMessageByUserId(key,po);
 
+                    }
+                }
+            }
+        }
+
+        if(!webSocketPushBtMap.isEmpty()){
+            for(String key : webSocketPushBtMap.keySet()){
+                // 根据ws连接用户ID获取推送参数
+//                PushParams pushParams = webSocketPushParamsMap.get(key);
+
+
+                synchronized(po.getId())
+                {
+                    if(checkBtId(key,po.getWpId()))
+                    {
                         if(po.getRank()>3)
                         {
-                            if(btParamsMap.contains(po.getWpId()))
+                            if(btParamsMap.containsKey(po.getWpId()))
                             {
                                 List<String> btls=btParamsMap.get(po.getWpId());
 
-                                if(btls.contains(po.getAlarmId()) )
+                                if(btls.contains(po.getAlarmId()))
                                 {
                                     btls.remove(po.getAlarmId());
                                 }else
@@ -145,7 +131,14 @@ public class PushDataSevice {
                                 }
                                 if(btls.isEmpty())
                                 {
-                                    webSocketBt.sendMessageByUserId(key,false);
+                                    Map<String,Boolean> map=new HashMap<>();
+                                    map.put(po.getWpId(),false);
+                                    webSocketBt.sendMessageByUserId(key,map);
+                                }else
+                                {
+                                    Map<String,Boolean> map=new HashMap<>();
+                                    map.put(po.getWpId(),true);
+                                    webSocketBt.sendMessageByUserId(key,map);
                                 }
                             }else
                             {
@@ -153,7 +146,17 @@ public class PushDataSevice {
 
                                 btls.add(po.getAlarmId());
                                 btParamsMap.put(po.getWpId(),btls);
-                                webSocketBt.sendMessageByUserId(key,true);
+                                Map<String,Boolean> map=new HashMap<>();
+                                if(StringUtils.empty(po.getIsClose()))
+                                {
+                                    map.put(po.getWpId(),false);
+                                    webSocketBt.sendMessageByUserId(key,map);
+                                }else
+                                {
+                                    map.put(po.getWpId(),true);
+                                    webSocketBt.sendMessageByUserId(key,map);
+                                }
+
                             }
                         }
                     }

+ 3 - 1
alarm-web/src/main/java/com/gyee/alarm/controller/AlarmHistoryController.java

@@ -63,6 +63,7 @@ public class AlarmHistoryController {
             @ApiImplicitParam(name = "deviceType", value = "报警类型 booststation:升压站报警,windturbine:设备报警", required = false, dataType = "string", paramType = "query"),
             @ApiImplicitParam(name = "components", value = "部件编号", required = false, dataType = "string", paramType = "query"),
             @ApiImplicitParam(name = "alarmId", value = "报警编号", required = false, dataType = "string", paramType = "query"),
+            @ApiImplicitParam(name = "isclose", value = "是否完成 不传全查,true 完成的,false 没完成的", required = false, dataType = "Boolean", paramType = "query"),
             @ApiImplicitParam(name = "pageNum", value = "页号", required = true, dataType = "string", paramType = "query"),
             @ApiImplicitParam(name = "pageSize", value = "每页显示行数", required = true, dataType = "string", paramType = "query")})
     public AjaxResult findAlarmlist(
@@ -76,6 +77,7 @@ public class AlarmHistoryController {
             @RequestParam(value = "deviceType", required = false) String deviceType,
             @RequestParam(value = "components", required = false) String components,
             @RequestParam(value = "alarmId", required = false) String alarmId,
+            @RequestParam(value = "isclose", required = false) Boolean isclose,
             @RequestParam(value = "pageNum", required = true) Integer pageNum,
             @RequestParam(value = "pageSize", required = true) Integer pageSize
 
@@ -85,7 +87,7 @@ public class AlarmHistoryController {
         Date beginDate = df.parse(begin);
         Date endDate = df.parse(end);
         pageNum=pageNum-1;
-        Map<String,Object> map = alarmHistoryService.findAlarmlist(modelId,beginDate.getTime(), endDate.getTime(), alarmType, stationid,deviceid, description,deviceType,components,alarmId, pageNum, pageSize);
+        Map<String,Object> map = alarmHistoryService.findAlarmlist(modelId,beginDate.getTime(), endDate.getTime(), alarmType, stationid,deviceid, description,deviceType,components,alarmId,isclose, pageNum, pageSize);
         return AjaxResult.successData(AjaxStatus.success.code, map);
 
     }

+ 3 - 0
alarm-web/src/main/java/com/gyee/alarm/controller/AlertRuleController.java

@@ -177,6 +177,9 @@ public class AlertRuleController {
                         List<ProBasicSubStation> subwpls = tokenService.getSubwpls(request);
                         return AjaxResult.successData(AjaxStatus.success.code, subwpls);
                     }
+                }else
+                {
+                    vos =wpls;
                 }
             }
         }

+ 29 - 4
alarm-web/src/main/java/com/gyee/alarm/controller/AuthController.java

@@ -1,5 +1,8 @@
 package com.gyee.alarm.controller;
 
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.TypeReference;
+import com.gyee.alarm.init.redis.RedisService;
 import com.gyee.alarm.model.vo.AjaxResult;
 import com.gyee.alarm.model.vo.AjaxStatus;
 import com.gyee.alarm.model.vo.TokenVo;
@@ -8,6 +11,7 @@ import com.gyee.common.model.StringUtils;
 
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -16,6 +20,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
 
 import javax.annotation.Resource;
 import java.util.Date;
+import java.util.Map;
 
 @Controller
 @RequestMapping("/auth")
@@ -23,19 +28,31 @@ import java.util.Date;
 public class AuthController {
 
 
+
     @Resource
     private TokenService tokenService;
-
+    @Resource
+    private RedisService redisService;
     @PostMapping("/login")
     @ResponseBody
     @ApiOperation(value = "使用账号密码登录")
     public AjaxResult login(@RequestBody TokenVo tokenVo) {
 
         if (StringUtils.notEmp(tokenVo)) {
+            redisService.select(9);
+            if (redisService.hasKey("userSessions")) {
+                String cp0String = redisService.get("userSessions");
+                tokenService.sessionMap= JSONObject.parseObject(cp0String, new TypeReference<Map<String, TokenVo>>() {
+                });
+            }
 
             if (!tokenService.sessionMap.containsKey(tokenVo.getToken())) {
                 tokenVo.setTime(new Date());
                 tokenService.sessionMap.put(tokenVo.getToken(), tokenVo);
+
+
+                String s = JSONObject.toJSONString(tokenService.sessionMap);
+                redisService.set("userSessions",s);
             }
 
         }
@@ -46,13 +63,23 @@ public class AuthController {
     @PostMapping("/logout")
     @ApiOperation(value = "登出系统")
     @ResponseBody
-    public AjaxResult logout(@RequestBody  TokenVo tokenVo) {
+    public AjaxResult logout(@RequestBody TokenVo tokenVo) {
         if (StringUtils.notEmp(tokenVo) && StringUtils.notEmp(tokenVo.getToken())) {
+            redisService.select(9);
+            if (redisService.hasKey("userSessions")) {
+                String cp0String = redisService.get("userSessions");
+                tokenService.sessionMap= JSONObject.parseObject(cp0String, new TypeReference<Map<String, TokenVo>>() {
+                });
+            }
 
             if (tokenService.sessionMap.containsKey(tokenVo.getToken())) {
                 tokenService.sessionMap.remove(tokenVo.getToken());
             }
 
+            String s = JSONObject.toJSONString(tokenService.sessionMap);
+            redisService.set("userSessions",s);
+
+
             if (tokenService.sessionWtMap.containsKey(tokenVo.getToken())) {
                 tokenService.sessionWtMap.remove(tokenVo.getToken());
             }
@@ -74,6 +101,4 @@ public class AuthController {
 
         return AjaxResult.successData(AjaxStatus.success.code, "ok");
     }
-
-
 }

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 16 - 4
alarm-web/src/main/java/com/gyee/alarm/mapper/auto/AlarmTsMapper.java


+ 11 - 6
alarm-web/src/main/java/com/gyee/alarm/service/AlarmHistoryService.java

@@ -244,7 +244,7 @@ public class AlarmHistoryService   {
      * @param pageSize 每页多少条
      * @return
      */
-    public Map<String,Object> findAlarmlist(String modelId, long begin,long end ,String alarmType,String stationid,String deviceid,String description,String deviceType,String components,String alarmId, int pageNum, int pageSize) {
+    public Map<String,Object> findAlarmlist(String modelId, long begin,long end ,String alarmType,String stationid,String deviceid,String description,String deviceType,String components,String alarmId,Boolean isclose, int pageNum, int pageSize) {
 
         Map<String,Object> map=new HashMap<>();
 
@@ -315,9 +315,14 @@ public class AlarmHistoryService   {
         {
             alarmId=null;
         }
-        vos = alarmTsMapper.selectByWtLimit(begin,end,modelId,superTableName, alarmType, stationid, deviceid, description,deviceType,components, alarmId,pageNum*pageSize, pageSize);
+
+        if(StringUtils.empty(isclose)  )
+        {
+            isclose=null;
+        }
+        vos = alarmTsMapper.selectByWtLimit(begin,end,modelId,superTableName, alarmType, stationid, deviceid, description,deviceType,components, alarmId,isclose,pageNum*pageSize, pageSize);
         map.put("ls",vos);
-        List<Integer> total=alarmTsMapper.selectByWtCount(begin,end,modelId,superTableName, alarmType, stationid, deviceid, description,deviceType,components,alarmId);
+        List<Integer> total=alarmTsMapper.selectByWtCount(begin,end,modelId,superTableName, alarmType, stationid, deviceid, description,deviceType,components,alarmId,isclose);
 
         if(!total.isEmpty())
         {
@@ -343,15 +348,15 @@ public class AlarmHistoryService   {
             Date beginDate = DateUtils.truncate(endDate);
             if(type.equals(AlarmTypeValue.BT.getCode()))
             {
-                vos = alarmTsMapper.selectByWtLimit(beginDate.getTime(),endDate.getTime(),null,AlarmSuperTalbeType.BT.getCode(), AlarmTypeValue.BT.getCode(), null, null, null,null,null, null,1, home_pagep_size);
+                vos = alarmTsMapper.selectByWtLimit(beginDate.getTime(),endDate.getTime(),null,AlarmSuperTalbeType.BT.getCode(), AlarmTypeValue.BT.getCode(), null, null, null,null,null, null,null,1, home_pagep_size);
 
             }else if(type.equals(AlarmTypeValue.WT.getCode()))
             {
-                vos = alarmTsMapper.selectByWtLimit(beginDate.getTime(),endDate.getTime(),null,AlarmSuperTalbeType.WT.getCode(), AlarmTypeValue.WT.getCode(), null, null, null,null, null,null,1, home_pagep_size);
+                vos = alarmTsMapper.selectByWtLimit(beginDate.getTime(),endDate.getTime(),null,AlarmSuperTalbeType.WT.getCode(), AlarmTypeValue.WT.getCode(), null, null, null,null, null,null,null,1, home_pagep_size);
 
             }else if(type.equals(AlarmTypeValue.CT.getCode()))
             {
-                vos = alarmTsMapper.selectByWtLimit(beginDate.getTime(),endDate.getTime(),null,AlarmSuperTalbeType.CT.getCode(), AlarmTypeValue.CT.getCode(), null, null, null,null, null,null,1, home_pagep_size);
+                vos = alarmTsMapper.selectByWtLimit(beginDate.getTime(),endDate.getTime(),null,AlarmSuperTalbeType.CT.getCode(), AlarmTypeValue.CT.getCode(), null, null, null,null, null,null,null,1, home_pagep_size);
 
             }
 

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 69276 - 338
log/ota.log


binární
log/ota.log.2023-09-12.0.gz


binární
log/ota.log.2023-09-18.0.gz


binární
log/ota.log.2023-09-19.0.gz


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 58156 - 0
log/ota.log.2023-09-19.148206075757799.tmp


binární
log/ota.log.2023-09-20.0.gz


binární
log/ota.log.2023-09-20.1.gz


binární
log/ota.log.2023-09-20.10.gz


binární
log/ota.log.2023-09-20.11.gz


binární
log/ota.log.2023-09-20.12.gz


binární
log/ota.log.2023-09-20.13.gz


binární
log/ota.log.2023-09-20.14.gz


binární
log/ota.log.2023-09-20.15.gz


binární
log/ota.log.2023-09-20.2.gz


binární
log/ota.log.2023-09-20.3.gz


binární
log/ota.log.2023-09-20.4.gz


binární
log/ota.log.2023-09-20.5.gz


binární
log/ota.log.2023-09-20.6.gz


binární
log/ota.log.2023-09-20.7.gz


binární
log/ota.log.2023-09-20.8.gz


binární
log/ota.log.2023-09-20.9.gz