Browse Source

修正升压站报警异常

shilin 1 year ago
parent
commit
59531444b2

+ 64 - 29
alarm-scanner/src/main/java/com/gyee/alarm/service/AlarmScannerService.java

@@ -17,6 +17,7 @@ import org.springframework.beans.factory.annotation.Value;
 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;
@@ -45,6 +46,8 @@ public class AlarmScannerService {
     @Resource
     private  IAlarmTsService alarmTsService;
     private List<AlarmTag>  alarmTags=new CopyOnWriteArrayList<>();
+
+    private List<AlarmTag>  alarmInTags=new CopyOnWriteArrayList<>();
     @Resource
     @Qualifier(value = "taskExecutor")
     private Executor executor;
@@ -63,27 +66,44 @@ public class AlarmScannerService {
         switch (alarmType){
             case "wt_alarms":
                 alarmTags =alarmService.findTagsByWt(runWindpowerstation);
-                history();
+                history(alarmTags);
                 break;
             case "bt_alarms":
-                alarmTags =alarmService.findTagsByBt();
-                history();
+                List<AlarmTag>  templs =alarmService.findTagsByBt();
+
+                if(!templs.isEmpty())
+                {
+                    for(AlarmTag tag:templs)
+                    {
+                        if(StringUtils.notEmp(tag.getTagId()) )
+                        {
+                            if(tag.getTagId().startsWith("FD"))
+                            {
+                                alarmTags.add(tag);
+                            }else   if(tag.getTagId().startsWith("GF"))
+                            {
+                                alarmInTags.add(tag);
+                            }
+                        }
+                    }
+                }
+                history(templs);
                 break;
             case "in_alarms":
                 alarmTags =alarmService.findTagsByIn();
-                history();
+                history(alarmTags);
                 break;
         }
     }
 
-    public void history() {
+    public void history(List<AlarmTag> tags) {
 
         StringBuilder sb = new StringBuilder();
 
 
         List<AlarmSimpleVo> alarmvols = new CopyOnWriteArrayList<>();
         AtomicInteger times = new AtomicInteger(0);
-        for (AlarmTag alarm : alarmTags) {
+        for (AlarmTag alarm : tags) {
 
             sb.append("'").append(alarm.getId().toLowerCase()).append("',");
             times.getAndAdd(1);
@@ -136,39 +156,54 @@ public class AlarmScannerService {
     /**
      * 分配任务
      */
-    public void taskJobs(boolean start) throws InterruptedException {
+    public synchronized void taskJobs(boolean start) throws InterruptedException {
 
 
         while (start) {
-            int len = 1;
 
-            List<AlarmTag> alarmls = new CopyOnWriteArrayList<>();
+            if (alarmType.equals("bt_alarms")) {
 
-            int listNumber = alarmTags.size() / taskCount;
-            int number = 0;
-            if (alarmTags.size() % taskCount != 0) {
-                listNumber = listNumber + 1;
-            }
-            CountDownLatch countDownLatch = new CountDownLatch(listNumber);
-
-            StringBuilder str = new StringBuilder();
-            str.append("总数:").append(alarmTags.size()).append(",线程数:").append(listNumber).append(",分块大小:").append(taskCount);
-            log.info(String.valueOf(str));
-            for (int i = 0; i < alarmTags.size(); i++) {
-                alarmls.add(alarmTags.get(i));
-                if (i != 0 && (i) % taskCount == 0) {
-                    new Thread(new AlarmThread(executor, edosUtil, alarmService, alarmls, interval, String.valueOf(len), readRows, alarmType,countDownLatch,alarmTsService,historymap)).start();
-                    alarmls = new CopyOnWriteArrayList<>();
-                    len++;
+                CountDownLatch countDownLatch = new CountDownLatch(2);
+
+                new Thread(new AlarmThread(executor, edosUtil, alarmService, alarmTags, interval, String.valueOf(1), readRows, alarmType, countDownLatch, alarmTsService, historymap)).start();
+                new Thread(new AlarmThread(executor, edosUtil, alarmService, alarmInTags, interval, String.valueOf(2), readRows, alarmType, countDownLatch, alarmTsService, historymap)).start();
+
+                countDownLatch.await(30, TimeUnit.SECONDS);
+            } else {
+
+
+                int len = 1;
+
+                List<AlarmTag> alarmls = new ArrayList<>();
+
+                int listNumber = alarmTags.size() / taskCount;
+                int number = 0;
+                if (alarmTags.size() % taskCount != 0) {
+                    listNumber = listNumber + 1;
+                }
+                CountDownLatch countDownLatch = new CountDownLatch(listNumber);
+
+                StringBuilder str = new StringBuilder();
+                str.append("总数:").append(alarmTags.size()).append(",线程数:").append(listNumber).append(",分块大小:").append(taskCount);
+                log.info(String.valueOf(str));
+                for (int i = 0; i < alarmTags.size(); i++) {
+                    alarmls.add(alarmTags.get(i));
+                    if (i != 0 && (i) % taskCount == 0) {
+                        new Thread(new AlarmThread(executor, edosUtil, alarmService, alarmls, interval, String.valueOf(len), readRows, alarmType, countDownLatch, alarmTsService, historymap)).start();
+                        alarmls = new ArrayList<>();
+                        len++;
+                    }
+                }
+
+                if (!alarmls.isEmpty()) {
+                    new Thread(new AlarmThread(executor, edosUtil, alarmService, alarmls, interval, String.valueOf(len), readRows, alarmType, countDownLatch, alarmTsService, historymap)).start();
                 }
-            }
 
-            if (!alarmls.isEmpty()) {
-                new Thread(new AlarmThread(executor, edosUtil, alarmService, alarmls, interval, String.valueOf(len), readRows, alarmType,countDownLatch,alarmTsService,historymap)).start();
+                countDownLatch.await(30, TimeUnit.SECONDS);
             }
 
 
-            countDownLatch.await(30, TimeUnit.SECONDS);
+
             log.info("报警排查完成!");
 
 

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

@@ -50,7 +50,7 @@ public class AlarmThread implements Runnable {
 
 
     @Override
-    public  void run() {
+    public synchronized  void run() {
 
 
         String task = "task@ " + str;

+ 12 - 10
alarm-scanner/src/main/java/com/gyee/alarm/task/thread/AlarmThreadPool.java

@@ -53,29 +53,31 @@ public class AlarmThreadPool implements Callable<String>, Serializable {
         this.historymap = historymap;
     }
 
-    public String call() throws Exception {
+    public synchronized String call() throws Exception {
 
         String result = "";
 
 
 //			while (true)
 //			{
-        List<String> ls = new CopyOnWriteArrayList<>();
-        List<PointData> values = new CopyOnWriteArrayList<>();
+        List<String> ls = new ArrayList<>();
+        List<PointData> values = new ArrayList<>();
 
 
-        AtomicInteger times = new AtomicInteger(0);
+        int times = 0;
+
         for (AlarmTag vo : alarmVoList) {
 
             ls.add(vo.getTagId());
-            times.getAndAdd(1);
-            if (times.get() == readRows) {
+            times++;
+            if (times == readRows) {
                 List<PointData> templs = edosUtil.getRealData(ls);
                 values.addAll(templs);
-                ls = new CopyOnWriteArrayList<>();
-                times.set(0);
+                ls = new ArrayList<>();
+                times=0;
             }
         }
+
         if (!ls.isEmpty()) {
             List<PointData> templs = edosUtil.getRealData(ls);
             values.addAll(templs);
@@ -132,9 +134,9 @@ public class AlarmThreadPool implements Callable<String>, Serializable {
 //				System.out.println(values.size()+"____"+ alarmVoList.size());
         int alarmNumber = 0;
         if (values.size() == alarmVoList.size()) {
-            List<AlarmTag> saveAlarmTags = new CopyOnWriteArrayList<>();
+            List<AlarmTag> saveAlarmTags = new ArrayList<>();
 
-            List<AlarmTag> updateAlarmTags = new CopyOnWriteArrayList<>();
+            List<AlarmTag> updateAlarmTags = new ArrayList<>();
 
             for (int i = 0; i < alarmVoList.size(); i++) {
 

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

@@ -134,8 +134,8 @@ logging:
 
 #db url
 db:
-  url1: http://10.81.3.154:8011/ts
-  url2: http://10.81.3.154:8012/ts
+  url1: http://10.81.3.160:8011/ts
+  url2: http://10.81.3.160:8012/ts
 
 
 #参与计算的场站

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

@@ -166,6 +166,7 @@ public class AlarmBtService {
                     po.setVal(null);
                     po.setRank(vo.getRank());
                     po.setAlarmType(vo.getAlarmtype());
+                    po.setWpId(vo.getStationid());
                     ls.add(po);
                 }
             }

+ 2 - 2
alarm-service/src/main/java/com/gyee/alarm/websocket/WebSocket.java

@@ -85,9 +85,9 @@ public class WebSocket {
      * @param message 客户端发送过来的消息
      */
     @OnMessage
-    public void onMessage(String message, Session session) {
+    public void onMessage(String message, Session session) throws IOException {
         logger.info("来自客户端用户:{} 消息:{}",userId, message);
-
+        sendMessageByUserId(userId,"ok");
         //群发消息
         /*for (String item : webSocketMap.keySet()) {
             try {

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

@@ -53,6 +53,30 @@ public class AlertRuleController {
     @Resource
     private TokenService tokenService;
 
+    @GetMapping(value = "/querywtalarmdesclist")
+    @ApiOperation(value = "通过场站、型号和部件查询报警描述信息", notes = "通过场站、型号和部件查询报警描述信息")
+    @ApiImplicitParams({
+
+            @ApiImplicitParam(name = "wpId", value = "风场编号", required = true, dataType = "string", paramType = "query"),
+            @ApiImplicitParam(name = "modelId", value = "型号", required = true, dataType = "string", paramType = "query"),
+            @ApiImplicitParam(name = "components", value = "部件", required = true, dataType = "string", paramType = "query")})
+    public AjaxResult queryWtAlarmDescList(String wpId, String modelId,String components) {
+
+        List<AlarmConfigurationVo> vos=new ArrayList<>();
+
+        if (StringUtils.notEmp(wpId) && StringUtils.notEmp(modelId) && StringUtils.notEmp(components)) {
+
+            vos= alarmRuleService.queryWtAlarmDescList(wpId, modelId,components);
+
+        }
+
+        if (StringUtils.notEmp(vos)) {
+
+            return AjaxResult.successData(AjaxStatus.success.code, vos);
+        } else {
+            return AjaxResult.successData(AjaxStatus.loginexpire.code, "error");
+        }
+    }
 
     @GetMapping(value = "/querymodellist")
     @ApiOperation(value = "查询型号信息", notes = "查询型号信息")

+ 49 - 0
alarm-web/src/main/java/com/gyee/alarm/service/AlarmRuleService.java

@@ -31,6 +31,55 @@ public class AlarmRuleService {
     @Resource
     private RuleUpdateEventService ruleUpdateEventService;
 
+
+    /**
+     * 查询报警信息接口
+     * @param wpId 场站不编号
+     * @param modelId 型号编号
+     * @param components 部件编号
+     * @return
+     */
+    public List<AlarmConfigurationVo> queryWtAlarmDescList(String wpId, String modelId, String components) {
+
+        List<AlarmConfigurationVo> vos=new ArrayList<>();
+        StringBuilder sb=new StringBuilder();
+        sb.append(wpId).append(modelId);
+
+
+        Map<String,String> map=new HashMap<>();
+
+        if(com.gyee.common.model.StringUtils.notEmp(components))
+        {
+            String [] componentsStr=components.split(",");
+            for(String c:componentsStr)
+            {
+                map.put(c,c);
+            }
+
+        }
+        if(CacheContext.ctAlarmlsMap.containsKey(String.valueOf(sb)))
+        {
+            List<ProEconAlarmRule> ls=CacheContext.ctAlarmlsMap.get(String.valueOf(sb));
+
+            if(!ls.isEmpty())
+            {
+                for(ProEconAlarmRule ac:ls)
+                {
+                    if(map.containsKey(ac.getRelatedParts()))
+                    {
+
+                        AlarmConfigurationVo vo=new AlarmConfigurationVo();
+                        vo.setAlarmId(ac.getId());
+                        vo.setDescription(ac.getDescription());
+                        vos.add(vo);
+                    }
+                }
+            }
+
+        }
+
+        return vos;
+    }
     /**
      * 查询报警信息接口
      * @param wpId 场站不编号

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

@@ -134,8 +134,8 @@ logging:
 
 #db url
 db:
-  url1: http://10.81.3.154:8021/ts
-  url2: http://10.81.3.154:8022/ts
+  url1: http://10.81.3.160:8021/ts
+  url2: http://10.81.3.160:8022/ts
 
 
 #参与计算的场站

File diff suppressed because it is too large
+ 1908 - 94
log/ota.log


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


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