From b7b76af5b6ff0104eef5cb6f69a4290723344869 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Sat, 12 Oct 2024 09:36:02 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E5=85=A8=E9=87=8F=E8=AE=A2=E9=98=85?= =?UTF-8?q?=EF=BC=8C=E5=B1=80=E9=83=A8=E6=9B=B4=E6=96=B0=E7=BB=99=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/xydl/cac/iec/IecClient.java | 14 +++++++------- src/main/java/com/xydl/cac/iec/IecServer.java | 10 ++++++---- .../xydl/cac/service/impl/RealTimeServiceImpl.java | 3 ++- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/xydl/cac/iec/IecClient.java b/src/main/java/com/xydl/cac/iec/IecClient.java index 458083c..874fdfe 100644 --- a/src/main/java/com/xydl/cac/iec/IecClient.java +++ b/src/main/java/com/xydl/cac/iec/IecClient.java @@ -12,7 +12,6 @@ import java.io.IOException; import java.io.InputStream; import java.net.InetAddress; import java.nio.charset.StandardCharsets; -import java.util.Optional; @Slf4j public class IecClient implements ClientEventListener { @@ -20,7 +19,6 @@ public class IecClient implements ClientEventListener { ClientSap clientSap = new ClientSap(); ClientAssociation clientAssociation = null; ServerModel serverModel; - Urcb urcb = null; public void connect(String host, int port, String apTitle, String xml) throws Exception { InputStream in = IOUtils.toInputStream(xml, StandardCharsets.UTF_8); @@ -66,16 +64,18 @@ public class IecClient implements ClientEventListener { public void enableReporting() throws Exception { if (!CollectionUtils.isEmpty(serverModel.getUrcbs())) { - Optional optional = serverModel.getUrcbs().stream().findAny(); - urcb = optional.get(); - clientAssociation.enableReporting(urcb); + for (Urcb urcb : serverModel.getUrcbs()) { + clientAssociation.enableReporting(urcb); + } } } public void disableReporting() { - if (urcb != null) { + if (!CollectionUtils.isEmpty(serverModel.getUrcbs())) { try { - clientAssociation.disableReporting(urcb); + for (Urcb urcb : serverModel.getUrcbs()) { + clientAssociation.disableReporting(urcb); + } } catch (Exception ignore) { } } diff --git a/src/main/java/com/xydl/cac/iec/IecServer.java b/src/main/java/com/xydl/cac/iec/IecServer.java index 34be53f..d0d13d3 100644 --- a/src/main/java/com/xydl/cac/iec/IecServer.java +++ b/src/main/java/com/xydl/cac/iec/IecServer.java @@ -38,10 +38,12 @@ public class IecServer implements ServerEventListener { public void updateBda(BasicDataAttribute bda) { BasicDataAttribute node = (BasicDataAttribute) serversServerModel.findModelNode(bda.getReference(), bda.getFc()); - node.setValueFrom(bda); - List bdas = new ArrayList<>(); - bdas.add(node); - serverSap.setValues(bdas); + if (node != null) { + node.setValueFrom(bda); + List bdas = new ArrayList<>(); + bdas.add(node); + serverSap.setValues(bdas); + } } @Override diff --git a/src/main/java/com/xydl/cac/service/impl/RealTimeServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/RealTimeServiceImpl.java index f3c329a..074a1b1 100644 --- a/src/main/java/com/xydl/cac/service/impl/RealTimeServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/RealTimeServiceImpl.java @@ -45,9 +45,10 @@ public class RealTimeServiceImpl implements RealTimeService { IecClient iecClient = new IecClient(); iecClient.connect(ied.getIp(), 102, ied.getApTitle(), icdFile.getXml()); iecClient.enableReporting(); + log.info("61850订阅成功, ied=" + ied.getName() + ", ip=" + ied.getIp()); clientMap.put(ied.getIp(), iecClient); } catch (Exception ex) { - log.error("61850连接异常, ied=" + ied.getName() + ", ip=" + ied.getIp(), ex); + log.error("61850订阅异常, ied=" + ied.getName() + ", ip=" + ied.getIp(), ex); } } }