diff --git a/src/main/java/com/xydl/cac/entity/NSensor.java b/src/main/java/com/xydl/cac/entity/NSensor.java index cf27262..8cde16b 100644 --- a/src/main/java/com/xydl/cac/entity/NSensor.java +++ b/src/main/java/com/xydl/cac/entity/NSensor.java @@ -10,6 +10,7 @@ import lombok.NoArgsConstructor; import javax.persistence.*; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; @JsonInclude(JsonInclude.Include.NON_NULL) @@ -85,6 +86,9 @@ public class NSensor { @Transient N103Sensor n103Sensor; + @Transient + HashMap lastData; + public String addPoint(NPoint point) { if (points == null) { points = new ArrayList<>(); diff --git a/src/main/java/com/xydl/cac/iec/IEDCollectService.java b/src/main/java/com/xydl/cac/iec/IEDCollectService.java index 7493d59..1c19169 100644 --- a/src/main/java/com/xydl/cac/iec/IEDCollectService.java +++ b/src/main/java/com/xydl/cac/iec/IEDCollectService.java @@ -9,6 +9,7 @@ import com.xydl.cac.service.DataService; import lombok.extern.slf4j.Slf4j; import org.springframework.util.CollectionUtils; +import java.util.HashMap; import java.util.List; @Slf4j @@ -22,6 +23,8 @@ public class IEDCollectService { IcdIed ied; String xml; + public static HashMap> lastDataMap = new HashMap<>(); + public IEDCollectService(IcdConfigTypeRepository configRepository, IcdConfigTypeAttRepository attRepository, IcdConfigTypeInstRepository instRepository, RptparamindexRepository rptparamindexRepository, DataService dataService, String xml, IcdIed ied) { @@ -89,6 +92,14 @@ public class IEDCollectService { log.info("采集到" + fc + " " + paramindexNew + "=" + value + ", t=" + time); time = time.replace("T", " ").replace("Z", "").replace("z", ""); _dataService.insertData(rpt.getTablename(), rpt.getEqmid(), time, rpt.getColname(), value); + + HashMap map = lastDataMap.get(rpt.getEqmid()); + if (map == null) { + map = new HashMap<>(); + lastDataMap.put(rpt.getEqmid(), map); + } + map.put(rpt.getColname(), value); + map.put("acquisitionTime", time); } private Rptparamindex findRpt(List rptList, String paramindex) { diff --git a/src/main/java/com/xydl/cac/iec/RealTimeDataService.java b/src/main/java/com/xydl/cac/iec/RealTimeDataService.java index 84b5a1f..315b204 100644 --- a/src/main/java/com/xydl/cac/iec/RealTimeDataService.java +++ b/src/main/java/com/xydl/cac/iec/RealTimeDataService.java @@ -27,7 +27,6 @@ public class RealTimeDataService { @Resource IcdIedRepository iedRepository; - public static HashMap dataMap = new HashMap<>(); public static IecServer iecServer = null; public static boolean inDoing = false; HashMap clientMap = new HashMap<>(); @@ -133,9 +132,6 @@ public class RealTimeDataService { } private static void processBdaNodeValue(BasicDataAttribute bda) { - String ref = bda.getReference().toString(); - String value = bda.getValueString(); - dataMap.put(ref, value); if (iecServer != null) { iecServer.updateBda(bda); } diff --git a/src/main/java/com/xydl/cac/service/impl/NSensorServiceImpl.java b/src/main/java/com/xydl/cac/service/impl/NSensorServiceImpl.java index 4534e53..6ed4ac8 100644 --- a/src/main/java/com/xydl/cac/service/impl/NSensorServiceImpl.java +++ b/src/main/java/com/xydl/cac/service/impl/NSensorServiceImpl.java @@ -3,6 +3,7 @@ package com.xydl.cac.service.impl; import com.xydl.cac.entity.*; import com.xydl.cac.entity.constants.Constants; import com.xydl.cac.exception.BusinessException; +import com.xydl.cac.iec.IEDCollectService; import com.xydl.cac.model.ConditionModel; import com.xydl.cac.model.OnePage; import com.xydl.cac.model.SensorDetail; @@ -83,6 +84,8 @@ public class NSensorServiceImpl implements NSensorService { sensor.setTableName(type.getTablename()); } } + HashMap map = IEDCollectService.lastDataMap.get(sensor.getDevId()); + sensor.setLastData(map); } } }