From a61ca14eb6223d045250d2339adfc79fa508bf54 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Tue, 15 Oct 2024 13:39:01 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=BD=AC=E6=8D=A2paramindex?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/xydl/cac/iec/IecServer.java | 20 ++++++++++++++++++- .../com/xydl/cac/iec/IecServerService.java | 5 ++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/xydl/cac/iec/IecServer.java b/src/main/java/com/xydl/cac/iec/IecServer.java index cb28648..64a046c 100644 --- a/src/main/java/com/xydl/cac/iec/IecServer.java +++ b/src/main/java/com/xydl/cac/iec/IecServer.java @@ -1,8 +1,11 @@ package com.xydl.cac.iec; import com.beanit.iec61850bean.*; +import com.xydl.cac.entity.IcdTransform; +import com.xydl.cac.service.IcdTransformService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; +import org.springframework.util.CollectionUtils; import java.io.InputStream; import java.nio.charset.StandardCharsets; @@ -16,6 +19,11 @@ public class IecServer implements ServerEventListener { public boolean started = false; public String filename = null; public Integer fileId = null; + IcdTransformService _transformService; + + public IecServer(IcdTransformService transformService) { + _transformService = transformService; + } public void start(String xml, int port) throws Exception { if (!started) { @@ -39,7 +47,17 @@ public class IecServer implements ServerEventListener { } public void updateBda(BasicDataAttribute bda) { - BasicDataAttribute node = (BasicDataAttribute) serversServerModel.findModelNode(bda.getReference(), bda.getFc()); + String ref = bda.getReference().toString(); + List list = _transformService.listTransform(); + if (!CollectionUtils.isEmpty(list)) { + for (IcdTransform item : list) { + if (ref.startsWith(item.getRptFrom())) { + ref = ref.replace(item.getRptFrom(), item.getRptTo()); + break; + } + } + } + BasicDataAttribute node = (BasicDataAttribute) serversServerModel.findModelNode(ref, bda.getFc()); if (node != null) { node.setValueFrom(bda); List bdas = new ArrayList<>(); diff --git a/src/main/java/com/xydl/cac/iec/IecServerService.java b/src/main/java/com/xydl/cac/iec/IecServerService.java index 9f74bdc..2e874fa 100644 --- a/src/main/java/com/xydl/cac/iec/IecServerService.java +++ b/src/main/java/com/xydl/cac/iec/IecServerService.java @@ -4,6 +4,7 @@ import com.xydl.cac.entity.*; import com.xydl.cac.entity.constants.Constants; import com.xydl.cac.exception.BusinessException; import com.xydl.cac.repository.IcdFileRepository; +import com.xydl.cac.service.IcdTransformService; import com.xydl.cac.util.IcdXmlUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -20,8 +21,10 @@ public class IecServerService { @Resource IcdFileRepository fileRepository; + @Resource + IcdTransformService transformService; - IecServer iecServer = new IecServer(); + IecServer iecServer = new IecServer(transformService); @PostConstruct private void init() {