Browse Source

报警统计功能

shilin 1 year ago
parent
commit
3e13271013
36 changed files with 1324 additions and 817 deletions
  1. 19 0
      alarm-custom/src/main/java/com/gyee/alarm/ApplicationReadyEventListener.java
  2. 14 1
      alarm-custom/src/main/java/com/gyee/alarm/CalculateServer.java
  3. 41 23
      alarm-custom/src/main/java/com/gyee/alarm/service/AlarmCustomService.java
  4. 3 3
      alarm-custom/src/main/java/com/gyee/alarm/task/thread/AlarmThreadPool.java
  5. 3 3
      alarm-custom/src/main/java/com/gyee/alarm/task/thread/ReadWtDataThreadPoolPool.java
  6. 2 0
      alarm-scanner/src/main/java/com/gyee/alarm/AlarmScannerMain.java
  7. 25 1
      alarm-scanner/src/main/java/com/gyee/alarm/ApplicationReadyEventListener.java
  8. 23 2
      alarm-scanner/src/main/java/com/gyee/alarm/CalculateServer.java
  9. 2 0
      alarm-scanner/src/main/java/com/gyee/alarm/config/ThreadPoolTaskConfig.java
  10. 35 21
      alarm-scanner/src/main/java/com/gyee/alarm/service/AlarmScannerService.java
  11. 4 8
      alarm-scanner/src/main/java/com/gyee/alarm/task/thread/AlarmThreadPool.java
  12. 1 1
      alarm-scanner/src/test/java/com/gyee/AppTest.java
  13. 3 4
      alarm-service/src/main/java/com/gyee/alarm/mapper/auto/AlarmTsMapper.java
  14. 1 1
      alarm-service/src/main/java/com/gyee/alarm/mapper/auto/SysUserMapper.java
  15. 13 5
      alarm-service/src/main/java/com/gyee/alarm/service/AlarmBtService.java
  16. 14 4
      alarm-service/src/main/java/com/gyee/alarm/service/AlarmCtService.java
  17. 13 4
      alarm-service/src/main/java/com/gyee/alarm/service/AlarmInService.java
  18. 13 5
      alarm-service/src/main/java/com/gyee/alarm/service/AlarmWtService.java
  19. 21 16
      alarm-service/src/main/java/com/gyee/alarm/service/PushDataSevice.java
  20. 172 0
      alarm-service/src/main/java/com/gyee/alarm/service/ReloadVoSevice.java
  21. 39 0
      alarm-service/src/main/java/com/gyee/alarm/task/thread/SaticScheduleTask.java
  22. 30 3
      alarm-web/src/main/java/com/gyee/alarm/controller/AlarmConfigurationController.java
  23. 95 0
      alarm-web/src/main/java/com/gyee/alarm/controller/AlarmSwitchController.java
  24. 18 18
      alarm-web/src/main/java/com/gyee/alarm/init/CacheContext.java
  25. 2 2
      alarm-web/src/main/java/com/gyee/alarm/mapper/auto/AlarmTsMapper.java
  26. 1 1
      alarm-web/src/main/java/com/gyee/alarm/mapper/auto/SysUserMapper.java
  27. 3 0
      alarm-web/src/main/java/com/gyee/alarm/model/auto/ProEconAlarmConfiguration.java
  28. 133 0
      alarm-web/src/main/java/com/gyee/alarm/model/vo/ProEconAlarmConfigurationVo.java
  29. 12 13
      alarm-web/src/main/java/com/gyee/alarm/service/AlarmCtService.java
  30. 15 6
      alarm-web/src/main/java/com/gyee/alarm/service/AlarmHistoryService.java
  31. 3 3
      alarm-web/src/main/java/com/gyee/alarm/service/AlarmInService.java
  32. 77 0
      alarm-web/src/main/java/com/gyee/alarm/service/AlarmSwitchService.java
  33. 4 4
      alarm-web/src/main/java/com/gyee/alarm/service/AlarmWtService.java
  34. 6 0
      alarm-web/src/main/java/com/gyee/alarm/service/auto/IProEconAlarmSwitchService.java
  35. 464 665
      log/ota.log
  36. BIN
      log/ota.log.2023-09-03.0.gz

+ 19 - 0
alarm-custom/src/main/java/com/gyee/alarm/ApplicationReadyEventListener.java

@@ -1,9 +1,12 @@
 package com.gyee.alarm;
 
 
+import com.gyee.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.context.event.ApplicationReadyEvent;
 import org.springframework.context.ApplicationListener;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 @Component
@@ -20,4 +23,20 @@ public class ApplicationReadyEventListener implements
         calculateServer.start();
     }
 
+    /**
+     * 统计内报故障损失电量
+     */
+    @Scheduled(cron = "0 0/16 * * * ?")
+    //或直接指定时间间隔,例如:5秒
+    //@Scheduled(fixedRate=5000)
+    private void saveFaultrecord() {
+
+        try {
+            calculateServer.stop();
+            calculateServer.start();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
 }

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

@@ -14,6 +14,8 @@ public class CalculateServer {
     @Resource
     AlarmCustomService alarmCustomService;
     private boolean serverStarted = false;
+
+    private boolean runStarted = false;
     public boolean start() {
 
         if (serverStarted) {
@@ -25,7 +27,7 @@ public class CalculateServer {
             log.info("开始加载配置及测点数据......");
             alarmCustomService.init();
 
-            alarmCustomService.taskJobs();
+            alarmCustomService.taskJobs(runStarted);
             serverStarted = true;
         } catch (Exception ex) {
             serverStarted = false;
@@ -35,4 +37,15 @@ public class CalculateServer {
         return true;
     }
 
+
+    public void stop() {
+        serverStarted=false;
+        runStarted=false;
+        try {
+            Thread.sleep(5000);
+
+        } catch (Exception ex) {
+            log.info(ex.getMessage());
+        }
+    }
 }

+ 41 - 23
alarm-custom/src/main/java/com/gyee/alarm/service/AlarmCustomService.java

@@ -64,16 +64,20 @@ public class AlarmCustomService {
         alarmTags =alarmService.findTagsByCt();
     }
 
-    public void taskJobs() throws InterruptedException {
-        readTaskJobs();
+    public void taskJobs(boolean runStarted) throws InterruptedException {
+        readTaskJobs(runStarted);
         Thread.sleep(interval*3);
-        calTaskJobs();
+        calTaskJobs(runStarted);
     }
 
     /**
      * 读取测点数据,缓存到内存
      */
-    public void readTaskJobs() {
+    public void readTaskJobs(boolean runStarted) {
+
+
+        while (runStarted)
+        {
 
 
         int wtlen = 1;
@@ -111,7 +115,8 @@ public class AlarmCustomService {
         StringBuilder str=new StringBuilder();
         str.append("设备读取总数:").append(alarmTags.size()).append(",线程数:").append(taskCount).append(",分块大小:").append(listNumber);
 
-        System.out.println(str.toString());
+
+//        System.out.println(str.toString());
 //        //读取场站测点
 //        int wplen = 1;
 //        List<ProBasicPowerstationPoint> wppols=new ArrayList<>();
@@ -169,39 +174,52 @@ public class AlarmCustomService {
 
         }
 
-
+        }
+        try {
+            Thread.sleep((interval * 1000));
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        }
     }
 
 
-    public void calTaskJobs() {
+    public void calTaskJobs(boolean runStarted) {
 
 
-        int len = 1;
+        while(runStarted)
+        {
+            int len = 1;
 
-        List<AlarmCustomTag> alarmls=new ArrayList<>();
+            List<AlarmCustomTag> alarmls=new ArrayList<>();
 
-        for(int i=0;i<alarmTags.size();i++)
-        {
-            alarmls.add(alarmTags.get(i));
-            if(i!=0 && i%taskCount==0)
+            for(int i=0;i<alarmTags.size();i++)
+            {
+                alarmls.add(alarmTags.get(i));
+                if(i!=0 && i%taskCount==0)
+                {
+                    str.setLength(0);
+                    str.append("总数:").append(alarmTags.size()).append(",线程数:").append(taskCount).append(",分块大小:").append(len);
+
+                    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);
 
                 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);
-
-            new Thread(new AlarmThread(executor,  alarmService,  alarmls,interval,str,readRows)).start();
-
+        try {
+            Thread.sleep((interval * 1000));
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
         }
-
     }
 }

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

@@ -57,8 +57,8 @@ public class AlarmThreadPool implements Callable<String>, Serializable {
 
 		try {
 
-			while (true)
-			{
+//			while (true)
+//			{
 
 				List<AlarmTag>  saveAlarmTags=new ArrayList<>();
 				List<AlarmTag>  updateAlarmTags=new ArrayList<>();
@@ -87,7 +87,7 @@ public class AlarmThreadPool implements Callable<String>, Serializable {
 				} catch (InterruptedException e) {
 					throw new RuntimeException(e);
 				}
-			}
+//			}
 
 		} catch (Exception e) {
 

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

@@ -55,8 +55,8 @@ public class ReadWtDataThreadPoolPool implements Callable<String>, Serializable
 
 		try {
 
-			while (true)
-			{
+//			while (true)
+//			{
 				List<String>  ls=new ArrayList<>();
 				List<PointData> values=new ArrayList<>();
 
@@ -106,7 +106,7 @@ public class ReadWtDataThreadPoolPool implements Callable<String>, Serializable
 				} catch (InterruptedException e) {
 					throw new RuntimeException(e);
 				}
-			}
+//			}
 
 		} catch (Exception e) {
 

+ 2 - 0
alarm-scanner/src/main/java/com/gyee/alarm/AlarmScannerMain.java

@@ -3,9 +3,11 @@ package com.gyee.alarm;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableScheduling;
 
 
 @SpringBootApplication
+@EnableScheduling
 @MapperScan("com.gyee.alarm.mapper")
 public class AlarmScannerMain {
     public static void main(String[] args) throws Exception {

+ 25 - 1
alarm-scanner/src/main/java/com/gyee/alarm/ApplicationReadyEventListener.java

@@ -2,8 +2,10 @@ package com.gyee.alarm;
 
 
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.boot.context.event.ApplicationReadyEvent;
 import org.springframework.context.ApplicationListener;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 @Component
@@ -17,7 +19,29 @@ public class ApplicationReadyEventListener implements
     public void onApplicationEvent(ApplicationReadyEvent event) {
         System.out.println("ApplicationReadyEvent start!");
         System.out.println("listener: " + event.toString());
-        calculateServer.start();
+        try {
+            calculateServer.start();
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        }
     }
 
+
+
+    /**
+     * 统计内报故障损失电量
+     */
+    @Scheduled(cron = "0 0/16 * * * ?")
+    //或直接指定时间间隔,例如:5秒
+    //@Scheduled(fixedRate=5000)
+
+    private void saveFaultrecord() {
+
+        try {
+            calculateServer.stop();
+            calculateServer.start();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
 }

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

@@ -1,11 +1,14 @@
 package com.gyee.alarm;
 
 
+import com.gyee.alarm.init.CacheContext;
 import com.gyee.alarm.service.AlarmScannerService;
 
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 import lombok.extern.slf4j.Slf4j;
 import javax.annotation.Resource;
+import java.util.concurrent.CountDownLatch;
 
 @Slf4j
 @Component
@@ -13,26 +16,44 @@ public class CalculateServer {
 
     @Resource
     AlarmScannerService alarmScannerService;
+
     private boolean serverStarted = false;
-    public boolean start() {
+    private boolean runStarted = false;
+    public boolean start() throws InterruptedException {
 
         if (serverStarted) {
             return true;
         }
+
+
         try {
             //GlobalVar.config = configProperties;
             log.warn("警计算服务启动...... ");
             log.info("开始加载配置及测点数据......");
             alarmScannerService.init();
 
-            alarmScannerService.taskJobs();
+            runStarted=true;
+            alarmScannerService.taskJobs(runStarted);
             serverStarted = true;
         } catch (Exception ex) {
             serverStarted = false;
             log.error(ex.getMessage());
             return false;
         }
+
+
         return true;
     }
 
+    public void stop() {
+        serverStarted=false;
+        runStarted=false;
+        try {
+            Thread.sleep(5000);
+
+        } catch (Exception ex) {
+            log.info(ex.getMessage());
+        }
+    }
+
 }

+ 2 - 0
alarm-scanner/src/main/java/com/gyee/alarm/config/ThreadPoolTaskConfig.java

@@ -2,11 +2,13 @@ package com.gyee.alarm.config;
 
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 
 import java.util.concurrent.ThreadPoolExecutor;
 
 @Configuration
+
 public class ThreadPoolTaskConfig {
     /**
      *   默认情况下,在创建了线程池后,线程池中的线程数为0,当有任务来之后,就会创建一个线程去执行任务,

+ 35 - 21
alarm-scanner/src/main/java/com/gyee/alarm/service/AlarmScannerService.java

@@ -7,12 +7,14 @@ 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 org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.Executor;
 
 
@@ -37,6 +39,7 @@ public class AlarmScannerService {
 
     private List<AlarmTag>  alarmTags=new ArrayList<>();
     @Resource
+    @Qualifier(value = "taskExecutor")
     private Executor executor;
 
 
@@ -64,37 +67,48 @@ public class AlarmScannerService {
     /**
      * 分配任务
      */
-    public void taskJobs() {
+    public void taskJobs(boolean start) throws InterruptedException {
 
 
-        int len = 1;
+        while (start) {
+            int len = 1;
 
-        List<AlarmTag> alarmls=new ArrayList<>();
+            List<AlarmTag> alarmls = new ArrayList<>();
 
-        int listNumber=alarmTags.size()/taskCount;
+            int listNumber = alarmTags.size() / taskCount;
 
-        StringBuilder str=new StringBuilder();
+//            if(alarmTags.size() % taskCount!=0)
+//            {
+//                listNumber++;
+//            }
+            StringBuilder str = new StringBuilder();
 
-     //   System.out.println(str.toString());
+            //   System.out.println(str.toString());
+//            final CountDownLatch latch = new CountDownLatch(listNumber);
+            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();
+                    alarmls = new ArrayList<>();
+                    len++;
+                }
+            }
 
-        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();
-                alarmls=new ArrayList<>();
-                len++;
+            if (!alarmls.isEmpty()) {
+                new Thread(new AlarmThread(executor, edosUtil, alarmService, alarmls, interval, String.valueOf(len), readRows, alarmType)).start();
+                listNumber++;
             }
-        }
 
-        if(!alarmls.isEmpty())
-        {
-            new Thread(new AlarmThread(executor, edosUtil, alarmService,  alarmls,interval,String.valueOf(len),readRows,alarmType)).start();
-            listNumber++;
+            str.append("总数:").append(alarmTags.size()).append(",线程数:").append(taskCount).append(",分块大小:").append(listNumber);
+//            latch.await();
+//            System.out.println("一组线程完成......");
+            try {
+                Thread.sleep((interval * 1000));
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
         }
+    }
 
-        str.append("总数:").append(alarmTags.size()).append(",线程数:").append(taskCount).append(",分块大小:").append(listNumber);
 
-    }
 }

+ 4 - 8
alarm-scanner/src/main/java/com/gyee/alarm/task/thread/AlarmThreadPool.java

@@ -63,8 +63,8 @@ public class AlarmThreadPool implements Callable<String>, Serializable {
 
 		try {
 
-			while (true)
-			{
+//			while (true)
+//			{
 				List<String>  ls=new ArrayList<>();
 				List<PointData> values=new ArrayList<>();
 
@@ -176,12 +176,8 @@ public class AlarmThreadPool implements Callable<String>, Serializable {
 					logger.info(String.valueOf(threadPoolTaskData)+"报警数量:" + alarmNumber);
 				}
 
-				try {
-					Thread.sleep((interval * 1000));
-				} catch (InterruptedException e) {
-					throw new RuntimeException(e);
-				}
-			}
+
+//			}
 
 		} catch (Exception e) {
 

+ 1 - 1
alarm-scanner/src/test/java/com/gyee/AppTest.java

@@ -19,7 +19,7 @@ public class AppTest
 
         alarmScannerService.init();
 
-        alarmScannerService.taskJobs();
+//        alarmScannerService.taskJobs();
 
 
 

+ 3 - 4
alarm-service/src/main/java/com/gyee/alarm/mapper/auto/AlarmTsMapper.java

@@ -55,17 +55,16 @@ public interface AlarmTsMapper extends BaseMapper<AlarmTs> {
             "components NCHAR(50),description NCHAR(500),deviceid NCHAR(50),devicename NCHAR(70)," +
             "devicetype NCHAR(50),enabled BOOL,lineid NCHAR(50),linename NCHAR(70),modelId NCHAR(50),projectid NCHAR(50)," +
             "projectname NCHAR(70),rank INT,resettable BOOL,stationid NCHAR(50),stationname NCHAR(70),subcomponents NCHAR(50)," +
-            "suffix NCHAR(50),tagid NCHAR(100),triggertype INT,uniformcode NCHAR(50),name NCHAR(50),nemCode NCHAR(50),faultCause NCHAR(1000),resolvent NCHAR(1000));")
+            "suffix NCHAR(50),tagid NCHAR(100),triggertype INT,uniformcode NCHAR(50),name NCHAR(100),nemCode NCHAR(50),faultCause NCHAR(1000),resolvent NCHAR(1000));")
     int createAlarmSuperTable(@Param("superTableName") String superTableName);
 
 
 
     @Update("create table if not exists ${tbName} using ${superTableName} tags( #{alarmid}, #{alarmtype}," +
-            "#{characteristic}, #{components},  #{description}, #{deviceid}, #{devicename}," +
+            "#{characteristic}, #{components},#{description}, #{deviceid}, #{devicename}," +
             "#{devicetype}, #{enabled}, #{lineid}, #{linename}, #{modelId}, #{projectid}," +
             "#{projectname}, #{rank}, #{resettable}, #{stationid}, #{stationname}, #{subcomponents}," +
-            "#{suffix},  #{tagid}, #{triggertype}, #{uniformcode},#{name},  #{nemCode}, #{faultCause}, #{resolvent}" +
-            ")")
+            "#{suffix},  #{tagid}, #{triggertype}, #{uniformcode},#{name}, #{nemCode}, #{faultCause}, #{resolvent}  )")
     int createTable(@Param("tbName") String tbName, @Param("alarmid") String alarmid, @Param("alarmtype") String alarmtype,
                     @Param("characteristic") String characteristic, @Param("components") String components,
                     @Param("description") String description,

+ 1 - 1
alarm-service/src/main/java/com/gyee/alarm/mapper/auto/SysUserMapper.java

@@ -18,6 +18,6 @@ import java.util.List;
  */
 public interface SysUserMapper extends BaseMapper<SysUser> {
 
-    @Select("SELECT d.nem_code FROM system_dept as d,system_users as u where u.dept_id=d.id and u.id=#{userId} ")
+    @Select("SELECT d.nemcode FROM system_dept as d,system_users as u where u.dept_id=d.id and u.id=#{userId} ")
     public List<String> getUserByuserId(@Param(value = "userId") Long userId);
 }

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

@@ -175,7 +175,7 @@ public class AlarmBtService {
         if (StringUtils.notEmp(ls) && !ls.isEmpty()) {
 
             alarmTsService.insertList(ls);
-
+            Map<String,ProEconAlarmInfo> tempmap=new HashMap<>();
 
             if (StringUtils.notEmp(ls) && !ls.isEmpty()) {
 
@@ -233,11 +233,14 @@ public class AlarmBtService {
                             alarm.setCode(CacheContext.wtmap.get(vo.getDeviceid()).getNemCode());
                         }
                         pushDataSevice.pushData(alarm);
-                        valuels.add(po);
+
+                        tempmap.put(po.getTbname(),po);
                     }
                 }
 
-
+                for (Map.Entry<String, ProEconAlarmInfo> entry : tempmap.entrySet()) {
+                    valuels.add(entry.getValue());
+                }
 
                 List<String> idls = new ArrayList<>();
                 for (ProEconAlarmInfo vo : valuels) {
@@ -326,7 +329,7 @@ public class AlarmBtService {
 
             alarmTsService.insertList(ls);
 
-
+            Map<String,ProEconAlarmInfo> tempmap=new HashMap<>();
             if (StringUtils.notEmp(ls) && !ls.isEmpty()) {
 
                 List<ProEconAlarmInfo> valuels = new ArrayList<>();
@@ -398,10 +401,15 @@ public class AlarmBtService {
                             alarm.setCode(CacheContext.wtmap.get(vo.getDeviceid()).getNemCode());
                         }
                         pushDataSevice.pushData(alarm);
-                        valuels.add(po);
+
+                        tempmap.put(po.getTbname(),po);
                     }
                 }
 
+                for (Map.Entry<String, ProEconAlarmInfo> entry : tempmap.entrySet()) {
+                    valuels.add(entry.getValue());
+                }
+
                 List<String> idls = new ArrayList<>();
                 for (ProEconAlarmInfo vo : valuels) {
                     idls.add(vo.getTbname());

+ 14 - 4
alarm-service/src/main/java/com/gyee/alarm/service/AlarmCtService.java

@@ -427,7 +427,7 @@ public class AlarmCtService {
 
             alarmTsService.insertList(ls);
 
-
+            Map<String,ProEconAlarmInfo> tempmap=new HashMap<>();
             if (StringUtils.notEmp(ls) && !ls.isEmpty()) {
 
                 List<ProEconAlarmInfo> valuels = new ArrayList<>();
@@ -482,9 +482,14 @@ public class AlarmCtService {
                             alarm.setCode(CacheContext.wtmap.get(vo.getDeviceid()).getNemCode());
                         }
                         pushDataSevice.pushData(alarm);
-                        valuels.add(po);
+
+                        tempmap.put(po.getTbname(),po);
                     }
                 }
+
+                for (Map.Entry<String, ProEconAlarmInfo> entry : tempmap.entrySet()) {
+                    valuels.add(entry.getValue());
+                }
                 List<String> idls = new ArrayList<>();
                 for (ProEconAlarmInfo vo : valuels) {
                     idls.add(vo.getTbname());
@@ -574,7 +579,7 @@ public class AlarmCtService {
                 }
 
                 alarmTsService.insertList(ls);
-
+                Map<String,ProEconAlarmInfo> tempmap=new HashMap<>();
 
                 if (StringUtils.notEmp(ls) && !ls.isEmpty()) {
 
@@ -632,9 +637,14 @@ public class AlarmCtService {
                                 alarm.setCode(CacheContext.wtmap.get(vo.getDeviceid()).getNemCode());
                             }
                            pushDataSevice.pushData(alarm);
-                            valuels.add(po);
+
+                            tempmap.put(po.getTbname(),po);
                         }
                     }
+
+                    for (Map.Entry<String, ProEconAlarmInfo> entry : tempmap.entrySet()) {
+                        valuels.add(entry.getValue());
+                    }
                     List<String> idls = new ArrayList<>();
                     for (ProEconAlarmInfo vo : valuels) {
                         idls.add(vo.getTbname());

+ 13 - 4
alarm-service/src/main/java/com/gyee/alarm/service/AlarmInService.java

@@ -262,7 +262,7 @@ public class AlarmInService {
 
             alarmTsService.insertList(ls);
 
-
+            Map<String,ProEconAlarmInfo> tempmap=new HashMap<>();
             if (StringUtils.notEmp(ls) && !ls.isEmpty()) {
 
                 List<ProEconAlarmInfo> valuels = new ArrayList<>();
@@ -317,10 +317,15 @@ public class AlarmInService {
                         }
                         pushDataSevice.pushData(alarm);
 
-                        valuels.add(po);
+
+                        tempmap.put(po.getTbname(),po);
                     }
                 }
 
+
+                for (Map.Entry<String, ProEconAlarmInfo> entry : tempmap.entrySet()) {
+                    valuels.add(entry.getValue());
+                }
                 List<String> idls = new ArrayList<>();
                 for (ProEconAlarmInfo vo : valuels) {
                     idls.add(vo.getTbname());
@@ -406,7 +411,7 @@ public class AlarmInService {
             }
 
             alarmTsService.insertList(ls);
-
+            Map<String,ProEconAlarmInfo> tempmap=new HashMap<>();
 
             if (StringUtils.notEmp(ls) && !ls.isEmpty()) {
 
@@ -463,10 +468,14 @@ public class AlarmInService {
                             alarm.setCode(CacheContext.wtmap.get(vo.getDeviceid()).getNemCode());
                         }
                         pushDataSevice.pushData(alarm);
-                        valuels.add(po);
+
+                        tempmap.put(po.getTbname(),po);
                     }
                 }
 
+                for (Map.Entry<String, ProEconAlarmInfo> entry : tempmap.entrySet()) {
+                    valuels.add(entry.getValue());
+                }
                 List<String> idls = new ArrayList<>();
                 for (ProEconAlarmInfo vo : valuels) {
                     idls.add(vo.getTbname());

+ 13 - 5
alarm-service/src/main/java/com/gyee/alarm/service/AlarmWtService.java

@@ -275,7 +275,7 @@ public class AlarmWtService {
 
             }
             alarmTsService.insertList(ls);
-
+            Map<String,ProEconAlarmInfo> tempmap=new HashMap<>();
 
             if (StringUtils.notEmp(ls) && !ls.isEmpty()) {
 
@@ -332,10 +332,15 @@ public class AlarmWtService {
                         }
                         pushDataSevice.pushData(alarm);
 
-                        valuels.add(po);
+
+                        tempmap.put(po.getTbname(),po);
                     }
                 }
 
+
+                for (Map.Entry<String, ProEconAlarmInfo> entry : tempmap.entrySet()) {
+                    valuels.add(entry.getValue());
+                }
                 List<String> idls = new ArrayList<>();
                 for (ProEconAlarmInfo vo : valuels) {
                     idls.add(vo.getTbname());
@@ -423,7 +428,7 @@ public class AlarmWtService {
 
             alarmTsService.insertList(ls);
 
-
+            Map<String,ProEconAlarmInfo> tempmap=new HashMap<>();
             if (StringUtils.notEmp(ls) && !ls.isEmpty()) {
 
                 List<ProEconAlarmInfo> valuels = new ArrayList<>();
@@ -481,10 +486,13 @@ public class AlarmWtService {
 
                         pushDataSevice.pushData(alarm);
 
-                        valuels.add(po);
+
+                        tempmap.put(po.getTbname(),po);
                     }
                 }
-
+                for (Map.Entry<String, ProEconAlarmInfo> entry : tempmap.entrySet()) {
+                    valuels.add(entry.getValue());
+                }
                 List<String> idls = new ArrayList<>();
                 for (ProEconAlarmInfo vo : valuels) {
                     idls.add(vo.getTbname());

+ 21 - 16
alarm-service/src/main/java/com/gyee/alarm/service/PushDataSevice.java

@@ -29,7 +29,7 @@ public class PushDataSevice {
     private Double pushinterval;
     @Resource
     private WebSocket webSocket;
-    public synchronized void pushData(AlarmTag po) throws EncodeException, IOException {
+    public  void pushData(AlarmTag po) throws EncodeException, IOException {
         ConcurrentHashMap<String, WebSocket> webSocketPushMap = WebSocket.webSocketMap;
         ConcurrentHashMap<String, PushParams> webSocketPushParamsMap = WebSocket.webSocketParamsMap;
         if(!webSocketPushMap.isEmpty()){
@@ -37,30 +37,35 @@ public class PushDataSevice {
                 // 根据ws连接用户ID获取推送参数
                 PushParams pushParams = webSocketPushParamsMap.get(key);
 
-                if(webSocketPushParamsMap.contains(po.getId()))
+
+                synchronized(po.getId())
                 {
-                    PushParams pp=webSocketPushParamsMap.get(po.getId());
+                    if(webSocketPushParamsMap.contains(po.getId()))
+                    {
+                        PushParams pp=webSocketPushParamsMap.get(po.getId());
 
-                    double hours= DateUtils.hoursDiff(pp.getStartTime(),new Date());
-                    if(hours>pushinterval)
+                        double hours= DateUtils.hoursDiff(pp.getStartTime(),new Date());
+                        if(hours>pushinterval)
+                        {
+                            if(checkWtId(key,po.getDeviceId()))
+                            {
+                                webSocket.sendMessageByUserId(key,po);
+                                pp.setStartTime(new Date(po.getTs()));
+                            }
+                        }
+                    }else
                     {
                         if(checkWtId(key,po.getDeviceId()))
                         {
                             webSocket.sendMessageByUserId(key,po);
-                            pp.setStartTime(new Date(po.getTs()));
+                            PushParams pp=new PushParams();
+                            pp.setStartTime(new Date());
+                            webSocketPushParamsMap.put(po.getId(),pp);
                         }
-                    }
-                }else
-                {
-                    if(checkWtId(key,po.getDeviceId()))
-                    {
-                        webSocket.sendMessageByUserId(key,po);
-                        PushParams pp=new PushParams();
-                        pp.setStartTime(new Date());
-                        webSocketPushParamsMap.put(po.getId(),pp);
-                    }
 
+                    }
                 }
+
             }
         }
 

+ 172 - 0
alarm-service/src/main/java/com/gyee/alarm/service/ReloadVoSevice.java

@@ -0,0 +1,172 @@
+package com.gyee.alarm.service;
+
+import com.gyee.alarm.init.CacheContext;
+import com.gyee.alarm.model.auto.ProBasicEquipment;
+import com.gyee.alarm.model.auto.ProEconAlarmConfiguration;
+import com.gyee.alarm.model.auto.ProEconAlarmRule;
+import com.gyee.alarm.model.vo.AlarmCustomType;
+import com.gyee.alarm.model.vo.AlarmTag;
+import com.gyee.alarm.model.vo.AlarmTypeValue;
+import com.gyee.alarm.model.vo.AlarmVo;
+import com.gyee.alarm.service.auto.IProEconAlarmConfigurationService;
+import com.gyee.alarm.service.auto.IProEconAlarmRuleService;
+import com.gyee.alarm.service.auto.ISysUserService;
+import com.gyee.alarm.util.DateUtils;
+import com.gyee.alarm.websocket.PushParams;
+import com.gyee.alarm.websocket.WebSocket;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.websocket.EncodeException;
+import java.io.IOException;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.stream.Collectors;
+
+
+@Service
+public class ReloadVoSevice {
+
+    @Resource
+    private AlarmWtService alarmWtService;
+    @Resource
+    private AlarmInService alarmInService;
+    @Resource
+    private AlarmBtService alarmBtService;
+    @Resource
+    private IProEconAlarmRuleService proEconAlarmRuleService;
+    @Resource
+    private AlarmCtService alarmCtService;
+    @Resource
+    private IProEconAlarmConfigurationService proEconAlarmConfigurationService;
+    public synchronized void reload() throws EncodeException, IOException {
+
+
+        Map<String, List<ProEconAlarmRule>> alarmRulesMap = new HashMap<>();
+        List<ProEconAlarmConfiguration> inalarmls = new ArrayList<>();
+        List<ProEconAlarmConfiguration> btalarmls = new ArrayList<>();
+        List<ProEconAlarmConfiguration> wtalarmls = new ArrayList<>();
+         Map<String,List<ProEconAlarmConfiguration>> wtAlarmMap=new HashMap<>();
+         List<AlarmVo> alarmWtList=new ArrayList<>();
+         Map<String,AlarmVo> alarmWtMap=new HashMap<>();
+         List<AlarmVo> alarmInList=new ArrayList<>();
+         Map<String,AlarmVo> alarmInMap=new HashMap<>();
+         List<AlarmVo> alarmBtList=new ArrayList<>();
+         Map<String,AlarmVo> alarmBtMap=new HashMap<>();
+         List<AlarmVo> alarmCtList=new ArrayList<>();
+         Map<String,AlarmVo> alarmCtMap=new HashMap<>();
+
+
+        List<ProEconAlarmRule> customls =proEconAlarmRuleService.list().stream().filter(i -> i.getEnable()).collect(Collectors.toList());
+
+        List<ProEconAlarmRule> wtCustomls=new ArrayList<>();
+        List<ProEconAlarmRule> inCustomls=new ArrayList<>();
+        List<ProEconAlarmRule> btCustomls=new ArrayList<>();
+        if(!customls.isEmpty())
+        {
+            for(ProEconAlarmRule vo: customls)
+            {
+                if(vo.getCategory().equals(AlarmCustomType.WT.getCode()))
+                {
+                    wtCustomls.add(vo);
+                }else  if(vo.getCategory().equals(AlarmCustomType.IN.getCode()))
+                {
+                    inCustomls.add(vo);
+                }else  if(vo.getCategory().equals(AlarmCustomType.Bt.getCode()))
+                {
+                    btCustomls.add(vo);
+                }
+
+            }
+        }
+        alarmRulesMap.put(AlarmCustomType.Bt.getCode(),btCustomls);
+        alarmRulesMap.put(AlarmCustomType.WT.getCode(),wtCustomls);
+        alarmRulesMap.put(AlarmCustomType.IN.getCode(),inCustomls);
+
+
+        List<ProEconAlarmConfiguration> templs = proEconAlarmConfigurationService.list().stream().filter(i -> i.getEnable()).collect(Collectors.toList());
+        if (!templs.isEmpty()) {
+            for (ProEconAlarmConfiguration alarm : templs) {
+                if (alarm.getAlarmType().equals(AlarmTypeValue.WT.getCode())) {
+                    wtalarmls.add(alarm);
+                    StringBuilder sb=new StringBuilder();
+                    sb.append(alarm.getStationId()).append(alarm.getModelId());
+
+                    if(wtAlarmMap.containsKey(String.valueOf(sb)))
+                    {
+                        List<ProEconAlarmConfiguration> ls=wtAlarmMap.get(String.valueOf(sb));
+                        ls.add(alarm);
+                    }else
+                    {
+                        List<ProEconAlarmConfiguration> ls=new ArrayList<>();
+                        ls.add(alarm);
+                        wtAlarmMap.put(String.valueOf(sb),ls);
+                    }
+                } else if (alarm.getAlarmType().equals(AlarmTypeValue.BT.getCode())) {
+                    btalarmls.add(alarm);
+
+                }
+                else if (alarm.getAlarmType().equals(AlarmTypeValue.IN.getCode())) {
+                    inalarmls.add(alarm);
+
+                }
+            }
+        }
+
+        //风机报警初始化标签
+        alarmWtList=alarmWtService.initalAlarmVo();
+        if(!alarmWtList.isEmpty())
+        {
+            for(AlarmVo vo: alarmWtList)
+            {
+                alarmWtMap.put(vo.getTbName(),vo);
+            }
+        }
+        //逆变器报警初始化标签
+        alarmInList=alarmInService.initalAlarmVo();
+        if(!alarmInList.isEmpty())
+        {
+            for(AlarmVo vo: alarmInList)
+            {
+                alarmInMap.put(vo.getTbName(),vo);
+            }
+        }
+
+
+        //升压站报警初始化标签
+        alarmBtList=alarmBtService.initalAlarmVo();
+        if(!alarmBtList.isEmpty())
+        {
+            for(AlarmVo vo: alarmBtList)
+            {
+                alarmBtMap.put(vo.getTbName(),vo);
+            }
+        }
+        //自定义报警初始化标签
+        alarmCtList=alarmCtService.initalAlarmVo();
+        if(!alarmCtList.isEmpty())
+        {
+            for(AlarmVo vo: alarmCtList)
+            {
+                alarmCtMap.put(vo.getTbName(),vo);
+            }
+        }
+
+        CacheContext.alarmRulesMap =alarmRulesMap;
+        CacheContext.inalarmls = inalarmls;
+        CacheContext.btalarmls =  btalarmls;
+        CacheContext.wtalarmls = wtalarmls;
+        CacheContext.wtAlarmMap=wtAlarmMap;
+        CacheContext.alarmWtList=alarmWtList;
+        CacheContext.alarmWtMap=alarmWtMap;
+        CacheContext.alarmInList=alarmInList;
+        CacheContext.alarmInMap=alarmInMap;
+        CacheContext.alarmBtList=alarmBtList;
+        CacheContext.alarmBtMap=alarmBtMap;
+        CacheContext.alarmCtList=alarmCtList;
+        CacheContext.alarmCtMap=alarmCtMap;
+    }
+
+
+}

+ 39 - 0
alarm-service/src/main/java/com/gyee/alarm/task/thread/SaticScheduleTask.java

@@ -0,0 +1,39 @@
+package com.gyee.alarm.task.thread;
+
+
+import com.gyee.alarm.service.ReloadVoSevice;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+
+import javax.annotation.Resource;
+
+/**
+ * @ClassName : SaticScheduleTask
+ * @Author : xieshengjie
+ * @Date: 2021/1/21 19:43
+ * @Description : 调度
+ */
+@Configuration      //1.主要用于标记配置类,兼备Component的效果。
+@EnableScheduling   // 2.开启定时任务
+public class SaticScheduleTask {
+
+    @Resource
+    private ReloadVoSevice reloadVoSevice;
+
+    /**
+     * 重新读取配置信息
+     */
+    @Scheduled(cron = "0 0/9 * * * ?")
+    private void reloadData() {
+
+        try {
+            reloadVoSevice.reload();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+
+}

+ 30 - 3
alarm-web/src/main/java/com/gyee/alarm/controller/AlarmConfigurationController.java

@@ -1,5 +1,6 @@
 package com.gyee.alarm.controller;
 
+import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.gyee.alarm.init.CacheContext;
@@ -122,11 +123,37 @@ public class AlarmConfigurationController {
         Page<ProEconAlarmConfiguration> page = new Page(pageNum, pageSize);
 
         IPage<ProEconAlarmConfiguration> pageResult = alarmConfigurationService.pageQueryAll(page, name, wpId, modelId,alarmType);
+        IPage<ProEconAlarmConfigurationVo> result=new Page<>();
+        result.setPages(pageResult.getPages());
+        result.setCurrent(pageResult.getCurrent());
+        result.setSize(pageResult.getSize());
+        result.setTotal(pageResult.getTotal());
+
+        List<ProEconAlarmConfigurationVo> vos=new ArrayList<>();
+
+            if(!pageResult.getRecords().isEmpty())
+            {
+                for(ProEconAlarmConfiguration ac:pageResult.getRecords())
+                {
+                    ProEconAlarmConfigurationVo vo= new ProEconAlarmConfigurationVo();
+
+                    BeanUtil.copyProperties( ac,vo);
+                    if(CacheContext.wpmap.containsKey(ac.getStationId()))
+                    {
+                        vo.setStationName(CacheContext.wpmap.get(ac.getStationId()).getName());
+                    }
 
+                    if(CacheContext.alarmTypeMap.containsKey(ac.getComponents()))
+                    {
+                        vo.setComponentsName(CacheContext.alarmTypeMap.get(ac.getComponents()).getName());
+                    }
+                    vos.add(vo);
+                }
+            }
+        result.setRecords(vos);
+        if (StringUtils.notEmp(result)) {
 
-        if (StringUtils.notEmp(pageResult)) {
-
-            return AjaxResult.successData(AjaxStatus.success.code, pageResult);
+            return AjaxResult.successData(AjaxStatus.success.code, result);
         } else {
             return AjaxResult.successData(AjaxStatus.error.code, "error");
         }

+ 95 - 0
alarm-web/src/main/java/com/gyee/alarm/controller/AlarmSwitchController.java

@@ -0,0 +1,95 @@
+package com.gyee.alarm.controller;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gyee.alarm.init.CacheContext;
+import com.gyee.alarm.model.auto.ProEconAlarmSwitch;
+import com.gyee.alarm.model.auto.ProEconAlarmSwitch;
+import com.gyee.alarm.model.vo.*;
+import com.gyee.alarm.service.AlarmSwitchService;
+import com.gyee.alarm.util.ExcelUtils;
+import com.gyee.alarm.util.StringUtils;
+import com.gyee.common.util.DateUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.*;
+
+
+@Slf4j
+@RestController
+@RequestMapping("/alarmswitch")
+@CrossOrigin
+@Api(value = "报警开关", tags = "报警开关")
+public class AlarmSwitchController {
+
+
+    @Autowired
+    private AlarmSwitchService alarmSwitchService;
+
+    @GetMapping(value = "/queryAll")
+    @ApiOperation(value = "报警开关信息", notes = "报警开关信息")
+    @ApiImplicitParams({})
+    public AjaxResult queryAll() {
+
+        List<ProEconAlarmSwitch> vos=new ArrayList<>();
+
+        vos= alarmSwitchService.queryAll();
+
+        if (StringUtils.notEmp(vos)) {
+
+            return AjaxResult.successData(AjaxStatus.success.code, vos);
+        } else {
+            return AjaxResult.successData(AjaxStatus.loginexpire.code, "error");
+        }
+    }
+
+    //@UserLoginToken
+    @PostMapping(value = "/save")
+    @ResponseBody
+    @ApiOperation(value = "进行修改和保存", notes = "进行修改和保存")
+    public AjaxResult saveAndUpdateAlertrule(HttpServletRequest request, @RequestBody ProEconAlarmSwitch alarmRule) throws Exception {
+
+
+        if (StringUtils.notEmp(alarmRule)) {
+
+            boolean result = alarmSwitchService.saveAndUpdateAlertrule(alarmRule);
+
+            return AjaxResult.successData(AjaxStatus.success.code, result);
+        } else {
+            return AjaxResult.successData(AjaxStatus.loginexpire.code, "error");
+        }
+
+
+    }
+
+    @DeleteMapping(value = "/delete")
+    @ApiOperation(value = "删除", notes = "删除")
+    @ApiImplicitParams({
+
+            @ApiImplicitParam(name = "id", value = "报警主键", required = true, dataType = "string", paramType = "query")})
+    public AjaxResult deleteAlertrule(String id) {
+
+        boolean i = alarmSwitchService.deleteAlertrule(id);
+
+        if (StringUtils.notEmp(i)) {
+            return AjaxResult.successData(AjaxStatus.success.code, i);
+        } else {
+            return AjaxResult.successData(AjaxStatus.error.code, "error");
+        }
+    }
+
+
+
+
+}

+ 18 - 18
alarm-web/src/main/java/com/gyee/alarm/init/CacheContext.java

@@ -346,25 +346,7 @@ public class CacheContext implements CommandLineRunner {
         }
 
 
-        for (ProBasicCompany cp : cpls) {
-            if (rgcpmap.containsKey(cp.getRegionId())) {
-                rgcpmap.get(cp.getRegionId()).add(cp);
-            } else {
-                List<ProBasicCompany> wps = new ArrayList<>();
-                wps.add(cp);
-                rgcpmap.put(cp.getRegionId(), wps);
-            }
-        }
 
-        for (ProBasicPowerstation wp : wpls) {
-            if (cpwpmap.containsKey(wp.getCompanyId())) {
-                cpwpmap.get(wp.getCompanyId()).add(wp);
-            } else {
-                List<ProBasicPowerstation> wps = new ArrayList<>();
-                wps.add(wp);
-                cpwpmap.put(wp.getCompanyId(), wps);
-            }
-        }
 
         wsls.stream().forEach(p -> {
 
@@ -584,7 +566,25 @@ public class CacheContext implements CommandLineRunner {
             wppointmap.put(wp.getId(), stringMapMap);
         });
 
+        for (ProBasicCompany cp : cpls) {
+            if (rgcpmap.containsKey(cp.getRegionId())) {
+                rgcpmap.get(cp.getRegionId()).add(cp);
+            } else {
+                List<ProBasicCompany> wps = new ArrayList<>();
+                wps.add(cp);
+                rgcpmap.put(cp.getRegionId(), wps);
+            }
+        }
 
+        for (ProBasicPowerstation wp : wpls) {
+            if (cpwpmap.containsKey(wp.getCompanyId())) {
+                cpwpmap.get(wp.getCompanyId()).add(wp);
+            } else {
+                List<ProBasicPowerstation> wps = new ArrayList<>();
+                wps.add(wp);
+                cpwpmap.put(wp.getCompanyId(), wps);
+            }
+        }
 //        String llglString = redisService.get("ZLLGL");
 //        theoreticalPowerMap = JSONObject.parseObject(llglString, new TypeReference<Map<String, Map<Double, ProBasicModelPowerRd>>>() {
 //        });

+ 2 - 2
alarm-web/src/main/java/com/gyee/alarm/mapper/auto/AlarmTsMapper.java

@@ -95,7 +95,7 @@ public interface AlarmTsMapper extends BaseMapper<AlarmTs> {
 
     @Select({"<script>",
             "select  last_row(ts) as lastts,ts,val,alarmid,alarmtype,characteristic,components,confirmed,description,deviceid,devicename,devicetype,enabled,lineid,linename," +
-                    "modelId,projectid,projectname,rank,resettable,stationid,stationname,subcomponents,suffix,tagid,triggertype,uniformcode from #{superTableName} " ,
+                    "modelId,projectid,projectname,rank,resettable,stationid,stationname,subcomponents,suffix,tagid,triggertype,uniformcode,nemCode ,faultCause,resolvent from #{superTableName} " ,
             "<where>" ,
 
             "<if test='modelId != null'>",
@@ -124,7 +124,7 @@ public interface AlarmTsMapper extends BaseMapper<AlarmTs> {
 //            " and  confirmed = false ",
             " and  enabled = true ",
             "</where>",
-            " group by tbname,alarmid,alarmtype,characteristic,components,description,deviceid,devicename,devicetype,enabled,lineid,linename,modelId,projectid,projectname,rank,resettable,stationid,stationname,subcomponents,suffix,tagid,triggertype,uniformcode ",
+            " group by tbname,alarmid,alarmtype,characteristic,components,description,deviceid,devicename,devicetype,enabled,lineid,linename,modelId,projectid,projectname,rank,resettable,stationid,stationname,subcomponents,suffix,tagid,triggertype,uniformcode,nemCode ,faultCause,resolvent ",
             " order by ts desc limit #{limit},#{offset} ",
             "</script>"})
     List<AlarmVo> selectByWtLimit(@Param("begin")long begin,@Param("end")long end,@Param("modelId")String modelId,@Param("superTableName") String superTableName,@Param("alarmType")String alarmType,@Param("stationid")String stationid,@Param("deviceid")String deviceid,@Param("description")String description, @Param("deviceType")String deviceType, @Param("components")String components, @Param("alarmid")String alarmid,@Param("limit")int limit, @Param("offset") int offset);

+ 1 - 1
alarm-web/src/main/java/com/gyee/alarm/mapper/auto/SysUserMapper.java

@@ -18,6 +18,6 @@ import java.util.List;
  */
 public interface SysUserMapper extends BaseMapper<SysUser> {
 
-    @Select("SELECT d.nem_code FROM system_dept as d,system_users as u where u.dept_id=d.id and u.id=#{userId} ")
+    @Select("SELECT d.nemcode FROM system_dept as d,system_users as u where u.dept_id=d.id and u.id=#{userId} ")
     public List<String> getUserByuserId(@Param(value = "userId") Long userId);
 }

+ 3 - 0
alarm-web/src/main/java/com/gyee/alarm/model/auto/ProEconAlarmConfiguration.java

@@ -1,5 +1,6 @@
 package com.gyee.alarm.model.auto;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import lombok.Builder;
 import lombok.Data;
@@ -124,4 +125,6 @@ public class ProEconAlarmConfiguration extends Model {
      * 排查方法
      */
     private String resolvent;
+
+
 }

+ 133 - 0
alarm-web/src/main/java/com/gyee/alarm/model/vo/ProEconAlarmConfigurationVo.java

@@ -0,0 +1,133 @@
+package com.gyee.alarm.model.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 报警配置表
+ * </p>
+ *
+ * @author shilin
+ * @since 2023-06-19
+ */
+@Data
+
+public class ProEconAlarmConfigurationVo  {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 编号
+     */
+    private String id;
+
+    /**
+     * 测点(如果根据uniformcode配置此字段可为空)
+     */
+    private String tagId;
+
+    /**
+     * 报警类别,0触发,1触发,-1变化触发,4ai点触发
+     */
+    private Integer triggerType;
+
+    /**
+     * 设备ID
+     */
+    private String deviceId;
+
+    /**
+     * 后缀
+     */
+    private String suffix;
+
+    /**
+     * 报警级别
+     */
+    private Integer rank;
+
+    /**
+     * 统一识别码(如果通过uniformCode配置,则设备类型,场站,机型不能为空)
+     */
+    private String uniformCode;
+
+    /**
+     * 场站ID
+     */
+    private String stationId;
+
+    /**
+     * 机型
+     */
+    private String modelId;
+
+    /**
+     * 报警类型 /自定义报警 custom,风机 windturbine,场站 station,升压站 booststation
+     */
+    private String alarmType;
+
+    /**
+     * 设备类型,场站 station,风机 windturbine,升压站 booststation
+     */
+    private String deviceType;
+
+    /**
+     * 设备部件
+     */
+    private String components;
+
+    /**
+     * 设备子部件
+     */
+    private String subcomponents;
+
+    /**
+     * 报警描述
+     */
+    private String description;
+
+    /**
+     * 特性
+     */
+    private String characteristic;
+
+    /**
+     * 是否可复位
+     */
+    private Boolean resetTable;
+
+    /**
+     * 是否启用
+     */
+    private Boolean enable;
+
+    /**
+     * 故障名称
+     */
+    private String name;
+
+    /**
+     *故障码
+     */
+    private String nemCode;
+
+    /**
+     * 故障原因
+     */
+    private String faultCause;
+
+    /**
+     * 排查方法
+     */
+    private String resolvent;
+
+    @TableField(exist = false)
+    private String stationName;
+
+    @TableField(exist = false)
+    private String componentsName;
+}

+ 12 - 13
alarm-web/src/main/java/com/gyee/alarm/service/AlarmCtService.java

@@ -70,9 +70,8 @@ public class AlarmCtService {
                 }
             }
         }
-        HttpServletRequest request = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest();
-        List<ProBasicEquipment> wtls = tokenService.getWtls(request);
-        for (ProBasicEquipment wt : wtls) {
+
+        for (ProBasicEquipment wt : CacheContext.wtls) {
             StringBuilder sb = new StringBuilder();
             sb.append(wt.getWindpowerstationId() + wt.getModelId());
 
@@ -151,10 +150,10 @@ public class AlarmCtService {
                 }
             }
         }
-
-        HttpServletRequest request = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest();
-        List<ProBasicEquipment> wtls = tokenService.getWtls(request);
-        for (ProBasicEquipment wt : wtls) {
+//
+//        HttpServletRequest request = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest();
+//        List<ProBasicEquipment> wtls = tokenService.getWtls(request);
+        for (ProBasicEquipment wt : CacheContext.wtls) {
             StringBuilder sb = new StringBuilder();
             sb.append(wt.getWindpowerstationId() + wt.getModelId());
 
@@ -218,9 +217,9 @@ public class AlarmCtService {
             alarmls = alarmRulesMap.get(DeviceTypeValue.WP.getCode());
 
         }
-        HttpServletRequest request = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest();
-        List<ProBasicPowerstation> wpls = tokenService.getWpls(request);
-        for (ProBasicPowerstation wp : wpls) {
+//        HttpServletRequest request = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest();
+//        List<ProBasicPowerstation> wpls = tokenService.getWpls(request);
+        for (ProBasicPowerstation wp : CacheContext.wpls) {
             if (!alarmls.isEmpty()) {
                 for (ProEconAlarmRule alarm : alarmls) {
                     AlarmVo vo = new AlarmVo();
@@ -297,9 +296,9 @@ public class AlarmCtService {
                 }
             }
         }
-        HttpServletRequest request = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest();
-        List<ProBasicSubStation> subwpls = tokenService.getSubwpls(request);
-        for (ProBasicSubStation wp : subwpls) {
+//        HttpServletRequest request = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest();
+//        List<ProBasicSubStation> subwpls = tokenService.getSubwpls(request);
+        for (ProBasicSubStation wp : CacheContext.subwpls) {
 
             if (!alarmMap.isEmpty() && alarmMap.containsKey(wp.getId())) {
 

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

@@ -130,10 +130,10 @@ public class AlarmHistoryService   {
                 if(map.containsKey(alarm.getId().toLowerCase()))
                 {
                     AlarmSimpleVo tag=map.get(alarm.getId().toLowerCase());
-                    alarm.setTs(tag.getTs().getTime());
-                    alarm.setVal((double)tag.getVal());
+                    alarm.setTs(null!=tag.getTs()?tag.getTs().getTime():null);
+                    alarm.setVal(null!=tag.getVal()?(double)tag.getVal():null);
                     alarm.setEndts(null!=tag.getEndts()?tag.getEndts().getTime():null);
-                    alarm.setTimeLong(tag.getTimelong());
+                    alarm.setTimeLong(null!=tag.getTimelong()?tag.getTimelong():null);
 
 //                    Date begin = new Date(alarm.getEndts());
 //                    Date end = new Date(alarm.getTs());
@@ -145,6 +145,8 @@ public class AlarmHistoryService   {
             }
 
             alarmTsService.insertList(ls);
+
+            Map<String,ProEconAlarmInfo> tempmap=new HashMap<>();
             if (com.gyee.alarm.util.StringUtils.notEmp(ls) && !ls.isEmpty()) {
 
                 List<ProEconAlarmInfo> valuels = new ArrayList<>();
@@ -153,7 +155,7 @@ public class AlarmHistoryService   {
                         AlarmVo vo = CacheContext.alarmWtMap.get(alarm.getId());
                         ProEconAlarmInfo po = new ProEconAlarmInfo();
                         po.setTbname(vo.getTbName());
-                        po.setLastUpdateTime(new Date(alarm.getEndts()));
+                        po.setLastUpdateTime(new Date());
                         po.setTagId(alarm.getTagId());
                         po.setTriggerType(alarm.getTriggerType());
                         po.setAlarmId(vo.getAlarmid());
@@ -179,14 +181,21 @@ public class AlarmHistoryService   {
                         po.setLineidName(vo.getLinename());
                         po.setDeviceName(vo.getDevicename());
                         po.setOval(alarm.getOval().intValue());
-                        po.setCloseTime(new Date(alarm.getEndts()));
+                        po.setCloseTime(null!=alarm.getEndts()?new Date(alarm.getEndts()):null);
                         po.setIsOpen(0);
                         po.setVal(alarm.getVal().intValue());
 
-                        valuels.add(po);
+
+                        tempmap.put(po.getTbname(),po);
+
                     }
                 }
 
+
+                for (Map.Entry<String, ProEconAlarmInfo> entry : tempmap.entrySet()) {
+                   valuels.add(entry.getValue());
+                }
+
                 List<String> idls = new ArrayList<>();
                 for (ProEconAlarmInfo vo : valuels) {
                     idls.add(vo.getTbname());

+ 3 - 3
alarm-web/src/main/java/com/gyee/alarm/service/AlarmInService.java

@@ -40,9 +40,9 @@ public class AlarmInService {
         Map<String, List<ProEconAlarmConfiguration>> wtAlarmMap = CacheContext.wtAlarmMap;
         Map<String, Map<String, ProBasicEquipmentPoint>> wtpAimap = CacheContext.wtpAimap;
 
-        HttpServletRequest request = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest();
-        List<ProBasicEquipment> wtls = tokenService.getWtls(request);
-        for (ProBasicEquipment wt : wtls) {
+//        HttpServletRequest request = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest();
+//        List<ProBasicEquipment> wtls = tokenService.getWtls(request);
+        for (ProBasicEquipment wt : CacheContext.wtls) {
 
             if (wtpAimap.containsKey(wt.getId())) {
                 Map<String, ProBasicEquipmentPoint> pointMap = wtpAimap.get(wt.getId());

+ 77 - 0
alarm-web/src/main/java/com/gyee/alarm/service/AlarmSwitchService.java

@@ -0,0 +1,77 @@
+package com.gyee.alarm.service;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gyee.alarm.init.CacheContext;
+import com.gyee.alarm.mapper.auto.ProEconAlarmConfigurationMapper;
+import com.gyee.alarm.mapper.auto.ProEconAlarmSwitchMapper;
+import com.gyee.alarm.model.auto.ProEconAlarmSwitch;
+import com.gyee.alarm.model.auto.ProEconInputOrOutputSpeed;
+import com.gyee.alarm.model.vo.AlarmConfigurationVo;
+import com.gyee.alarm.service.RuleUpdateEventService;
+import com.gyee.alarm.service.auto.IProEconAlarmConfigurationService;
+import com.gyee.alarm.service.auto.IProEconAlarmSwitchService;
+import com.gyee.alarm.util.SnowflakeGenerator;
+import com.gyee.alarm.util.StringUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+
+@Service
+public class AlarmSwitchService {
+
+    @Resource
+    private IProEconAlarmSwitchService proEconAlarmSwitchService;
+
+    @Resource
+    private ProEconAlarmSwitchMapper proEconAlarmSwitchMapper;
+
+
+
+    public boolean saveAndUpdateAlertrule(ProEconAlarmSwitch alarmRule) throws Exception {
+
+        boolean result =false;
+
+        if (StringUtils.notEmp(alarmRule)) {
+
+
+            if (StringUtils.notEmp(alarmRule.getId())) {
+                  result = proEconAlarmSwitchService.updateById(alarmRule);
+
+            }else
+            {
+                alarmRule.setId(String.valueOf(SnowflakeGenerator.generateId()));
+                result = proEconAlarmSwitchService.save(alarmRule);
+            }
+
+        }else
+        {
+            alarmRule.setId(String.valueOf(SnowflakeGenerator.generateId()));
+            result = proEconAlarmSwitchService.save(alarmRule);
+        }
+
+        return result;
+    }
+
+    public boolean deleteAlertrule(String id) {
+        return proEconAlarmSwitchService.removeById(id);
+    }
+
+
+
+    public List<ProEconAlarmSwitch> queryAll() {
+
+        QueryWrapper<ProEconAlarmSwitch> queryWrapper = new QueryWrapper<>();
+        queryWrapper.orderByAsc("alarm_level");
+        List<ProEconAlarmSwitch> vos=proEconAlarmSwitchMapper.selectList(queryWrapper);
+
+        return vos;
+    }
+}

+ 4 - 4
alarm-web/src/main/java/com/gyee/alarm/service/AlarmWtService.java

@@ -23,7 +23,6 @@ import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 
 @Service
-
 public class AlarmWtService {
     @Resource
     private IAlarmTsService alarmTsService;
@@ -41,9 +40,10 @@ public class AlarmWtService {
         List<AlarmVo> alarmVoList=new ArrayList<>();
         Map<String, List<ProEconAlarmConfiguration>> wtAlarmMap = CacheContext.wtAlarmMap;
         Map<String, Map<String, ProBasicEquipmentPoint>> wtpAimap = CacheContext.wtpAimap;
-        HttpServletRequest request = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest();
-        List<ProBasicEquipment> wtls = tokenService.getWtls(request);
-        for (ProBasicEquipment wt : wtls) {
+
+//        HttpServletRequest request = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest();
+//        List<ProBasicEquipment> wtls = CacheContext.wtls.getWtls(request);
+        for (ProBasicEquipment wt : CacheContext.wtls) {
 
 //            if(wt.getId().contains("SXJ_KGDL_DJY_F_WT_0001_EQ"))
 //            {

+ 6 - 0
alarm-web/src/main/java/com/gyee/alarm/service/auto/IProEconAlarmSwitchService.java

@@ -1,5 +1,8 @@
 package com.gyee.alarm.service.auto;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gyee.alarm.model.auto.ProEconAlarmConfiguration;
 import com.gyee.alarm.model.auto.ProEconAlarmSwitch;
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -11,6 +14,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @author shilin
  * @since 2023-09-07
  */
+
 public interface IProEconAlarmSwitchService extends IService<ProEconAlarmSwitch> {
 
+
+
 }

File diff suppressed because it is too large
+ 464 - 665
log/ota.log


BIN
log/ota.log.2023-09-03.0.gz