diff --git a/src/main/java/com/xydl/cac/iec/IEDCollectService.java b/src/main/java/com/xydl/cac/iec/IEDCollectService.java index 5543849..3d1009c 100644 --- a/src/main/java/com/xydl/cac/iec/IEDCollectService.java +++ b/src/main/java/com/xydl/cac/iec/IEDCollectService.java @@ -15,7 +15,6 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.util.CollectionUtils; -import java.net.SocketException; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -33,6 +32,7 @@ public class IEDCollectService { String xml; WebSocketServer _webSocketServer; BizConfig _bizConfig; + WarningRepository _warningRepository; String folder = "/record"; HashMap eqmidTimeMap = new HashMap<>(); @@ -41,7 +41,8 @@ public class IEDCollectService { IcdConfigTypeInstRepository instRepository, RptparamindexRepository rptparamindexRepository, IedDlRecordService dlRecordService, DataService dataService, String xml, IcdIed ied, - WebSocketServer webSocketServer, BizConfig bizConfig) { + WebSocketServer webSocketServer, BizConfig bizConfig, + WarningRepository warningRepository) { _configRepository = configRepository; _attRepository = attRepository; _instRepository = instRepository; @@ -52,6 +53,7 @@ public class IEDCollectService { this.ied = ied; _webSocketServer = webSocketServer; _bizConfig = bizConfig; + _warningRepository = warningRepository; iecClient = new IecClient(); } @@ -82,22 +84,33 @@ public class IEDCollectService { this.doDownload(dlList); } } catch (Exception ex) { - String err = "61850采集数据异常, ied=" + ied.getName() + ", ip=" + ied.getIp() + ", port=" + ied.getPort(); + String err = "61850采集数据异常, ied=" + ied.getName() + ", ip=" + ied.getIp() + ", port=" + ied.getPort() + + ", " + ex.getMessage(); log.error(err, ex); + this.saveWarning(err); String key = ied.getName() + ied.getIp() + ied.getPort(); if (!StaticVariable.doneWarnMap.containsKey(key)) { StaticVariable.doneWarnMap.put(key, "1"); _webSocketServer.sendMessage(err, null); } - if (ex instanceof SocketException) { - NetErrorThread thread = new NetErrorThread(ied.getId()); - thread.start(); - } } finally { iecClient.disconnect(); } } + private void saveWarning(String err) { + Warning warning = Warning.builder() + .zsbName("61850采集数据") + .dTime(new Date()) + .warnLevel(2) + .state("1") + .warnDesc(err) + .warnTime(new Date()) + .processTime(new Date()) + .build(); + _warningRepository.save(warning); + } + private void doCollectAndSave(List configTypeList, List rptList) throws Exception { for (IcdConfigType configType : configTypeList) { List instList = _instRepository.findByIcdConfigTypeId(configType.getId()); diff --git a/src/main/java/com/xydl/cac/task/AsyncTask.java b/src/main/java/com/xydl/cac/task/AsyncTask.java index 12c6efe..454402e 100644 --- a/src/main/java/com/xydl/cac/task/AsyncTask.java +++ b/src/main/java/com/xydl/cac/task/AsyncTask.java @@ -33,6 +33,8 @@ public class AsyncTask { WebSocketServer webSocketServer; @Resource BizConfig bizConfig; + @Resource + WarningRepository warningRepository; @Async public void collectIed(String xml, IcdIed ied, List rptList, List dlList) { @@ -40,7 +42,8 @@ public class AsyncTask { instRepository, rptparamindexRepository, dlRecordService, dataService, xml, ied, - webSocketServer, bizConfig); + webSocketServer, bizConfig, + warningRepository); iedService.collectAndSave(rptList, dlList); } } diff --git a/src/main/java/com/xydl/cac/task/Client61850Task.java b/src/main/java/com/xydl/cac/task/Client61850Task.java index cc2b768..3bc20bc 100644 --- a/src/main/java/com/xydl/cac/task/Client61850Task.java +++ b/src/main/java/com/xydl/cac/task/Client61850Task.java @@ -2,6 +2,7 @@ package com.xydl.cac.task; import com.xydl.cac.entity.*; import com.xydl.cac.iec.IecClient; +import com.xydl.cac.iec.NetErrorThread; import com.xydl.cac.model.StaticVariable; import com.xydl.cac.repository.*; import com.xydl.cac.service.ModevTypeService; @@ -144,6 +145,8 @@ public class Client61850Task { ied.setConnected(true); } catch (Exception ex) { ied.setConnected(false); + NetErrorThread thread = new NetErrorThread(ied.getId()); + thread.start(); } finally { iecClient.disconnect(); }