src/main/java/com/zhitan/service/impl/CompressedAirSimulator.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zhitan/service/impl/DataServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zhitan/service/impl/OpcServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zhitan/service/impl/WaterMeterSimulator.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/application-prod.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zhitan/service/impl/CompressedAirSimulator.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,81 @@ package com.zhitan.service.impl; import com.influxdb.client.domain.WritePrecision; import com.influxdb.client.write.Point; import com.zhitan.config.influxdb.InfluxdbConfig; import com.zhitan.influxdb.InfluxdbRepository; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.Random; @Slf4j @Service public class CompressedAirSimulator { private final String TAG = "tag"; private final String FIELD_VALUE = "value"; private final String TAGNAME = "yasuokongqi01_StTotal"; private final InfluxdbRepository repository; private final InfluxdbConfig influxdbConfig; private double lastAirTotal = 0; private final Random random = new Random(); @Autowired public CompressedAirSimulator(InfluxdbRepository repository, InfluxdbConfig influxdbConfig) { this.repository = repository; this.influxdbConfig = influxdbConfig; loadLastAirData(); } private void loadLastAirData() { double lastValue = repository.getLastPoint(influxdbConfig.getMeasurement(), TAG, TAGNAME); if (lastValue > 0) { log.info("æ¥è¯¢åºæå䏿¬¡åå ¥influxdbçåç¼©ç©ºæ°æ°æ®:{}", lastValue); lastAirTotal = lastValue; } } @Scheduled(fixedRate = 60000) // æ¯åéæ§è¡ä¸æ¬¡ public void simulateAirUsage() { LocalDateTime now = LocalDateTime.now(); double airUsage = calculateAirUsage(now); lastAirTotal += airUsage; Point point = Point .measurement(influxdbConfig.getMeasurement()) .addTag(TAG, TAGNAME) .addField(FIELD_VALUE, lastAirTotal) .time(Instant.now(), WritePrecision.S); repository.writePoint(point); log.info("åå ¥å缩空æ°è¡¨æ°æ®: {}", lastAirTotal); } private double calculateAirUsage(LocalDateTime time) { int hour = time.getHour(); boolean isWeekend = time.getDayOfWeek().getValue() > 5; // åºç¡ç¨æ°é double baseUsage = 0.1; // 工使¶é´(8-20ç¹)ç¨æ°éå¢å if (hour >= 8 && hour < 20) { baseUsage += 0.3; // 工使¥ç¨æ°éæ´å¤§ if (!isWeekend) { baseUsage += 0.2; } } // æ·»å éæºæ³¢å¨ baseUsage += random.nextDouble() * 0.8; return baseUsage; } } src/main/java/com/zhitan/service/impl/DataServiceImpl.java
@@ -129,6 +129,35 @@ @Override public void writeTimeSeriesData(@NotNull PowerEntity powerEntity) { List<IndexTemplate> templates = getIndexTemplate(); // å¤ææ»æåæ¯å¦ä¸ºç©ºï¼å¦æä¸ºç©ºå¤ææ£åæååååæåæ¯å¦ä¸ºç©ºï¼å¦æå两个任æä¸ä¸ªä¸ä¸ºç©ºï¼å仿¶åºæ°æ®åºä¸è·å为空çé£ä¸ä¸ªï¼ç¶åå°æ»æåè½çµè½èµå¼ä¸ºæ£åæåè½çµè½åå»ååæåè½çµè½ if (powerEntity.getEps() == null) { if (powerEntity.getEpsp() != null && powerEntity.getEpsn() != null) { powerEntity.setEps(powerEntity.getEpsp() - powerEntity.getEpsn()); } else if (powerEntity.getEpsp() != null) { double lastValue = repository.getLastPoint(influxdbConfig.getMeasurement(), TAG, powerEntity.getSn() + "_" + "Exp"); powerEntity.setEps(powerEntity.getEpsp() - lastValue); } else if (powerEntity.getEpsn() != null) { double lastValue = repository.getLastPoint(influxdbConfig.getMeasurement(), TAG, powerEntity.getSn() + "_" + "ActiveZT"); powerEntity.setEps(lastValue - powerEntity.getEpsn()); } } // å¤ææ»æ 忝å¦ä¸ºç©ºï¼å¦æä¸ºç©ºå¤ææ£åæ ååååæ åæ¯å¦ä¸ºç©ºï¼å¦æå两个任æä¸ä¸ªä¸ä¸ºç©ºï¼å仿¶åºæ°æ®åºä¸è·å为空çé£ä¸ä¸ªï¼ç¶åå°æ»æ åçµè½èµå¼ä¸ºæ£åæ åçµè½åååæ åçµè½çç»å¯¹å¼ä¹å if (powerEntity.getEqs() == null) { if (powerEntity.getEqsp() != null && powerEntity.getEqsn() != null) { powerEntity.setEqs(Math.abs(powerEntity.getEqsp()) + Math.abs(powerEntity.getEqsn())); } else if (powerEntity.getEqsp() != null) { double lastValue = repository.getLastPoint(influxdbConfig.getMeasurement(), TAG, powerEntity.getSn() + "_" + "ExpZN"); powerEntity.setEqs(Math.abs(lastValue) + Math.abs(powerEntity.getEqsp())); } else if (powerEntity.getEqsn() != null) { double lastValue = repository.getLastPoint(influxdbConfig.getMeasurement(), TAG, powerEntity.getSn() + "_" + "ActiveZN"); powerEntity.setEqs(Math.abs(lastValue) + Math.abs(powerEntity.getEqsn())); } } // è·åç±»ä¸ææå£°æçåæ®µ Field[] fields = powerEntity.getClass().getDeclaredFields(); List<Point> points = new ArrayList<>(); src/main/java/com/zhitan/service/impl/OpcServiceImpl.java
@@ -366,12 +366,29 @@ // 1. ç´æ¥éè¿InfluxDBåå¨åºåå ¥ for (OpcData data : dataList) { if (data.getValue() != null) { // 妿æ¯çµåï¼åè·¯å ±ç¨ï¼éè¦å¤ç 1-1#yijidiankonggui_1_VoltageA if (data.getName().contains("_Voltage")) { String prefix = data.getName().split("_")[0]; String suffix = data.getName().split("_")[2]; // 循ç¯å次 for (int i = 1; i <= 4; i++) { String name = prefix + "_" + i + "_" + suffix; Point point = Point .measurement(influxdbConfig.getMeasurement()) .addTag(TAG, name) .addField(FIELD_VALUE, data.getValue()) .time(data.getTimestamp(), WritePrecision.NS); points.add(point); } } else { Point point = Point .measurement(influxdbConfig.getMeasurement()) .addTag(TAG, data.getName()) .addField(FIELD_VALUE, data.getValue()) .time(data.getTimestamp(), WritePrecision.NS); points.add(point); } log.debug("ééOPC UAæ°æ®: {} = {}", data.getName(), data.getValue()); } else if (data.getErrorMessage() != null) { log.warn("ééOPC UAæ°æ®å¤±è´¥: {} - {}", data.getName(), data.getErrorMessage()); src/main/java/com/zhitan/service/impl/WaterMeterSimulator.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,83 @@ package com.zhitan.service.impl; import com.influxdb.client.domain.WritePrecision; import com.influxdb.client.write.Point; import com.zhitan.config.influxdb.InfluxdbConfig; import com.zhitan.influxdb.InfluxdbRepository; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.Random; @Slf4j @Service public class WaterMeterSimulator { private final String TAG = "tag"; private final String FIELD_VALUE = "value"; private final String TAGNAME = "shuibiao01_StTotal"; private final InfluxdbRepository repository; private final InfluxdbConfig influxdbConfig; private double lastWaterTotal = 0; private final Random random = new Random(); @Autowired public WaterMeterSimulator(InfluxdbRepository repository, InfluxdbConfig influxdbConfig) { this.repository = repository; this.influxdbConfig = influxdbConfig; // åå§åæ¶ä»æ¶åºæ°æ®åºå è½½ä¸æ¬¡çæ°æ® loadLastWaterData(); } private void loadLastWaterData() { // è¿éåºè¯¥å®ç°ä»InfluxDBæ¥è¯¢æå䏿¬¡è®°å½çé»è¾ double lastValue = repository.getLastPoint(influxdbConfig.getMeasurement(),TAG, TAGNAME); if (lastValue>0) { log.info("æ¥è¯¢åºæå䏿¬¡åå ¥influxdbçæ°æ®:{}", lastValue); lastWaterTotal = lastValue; } } @Scheduled(fixedRate = 60000) // æ¯åéæ§è¡ä¸æ¬¡ public void simulateWaterUsage() { LocalDateTime now = LocalDateTime.now(); double waterUsage = calculateWaterUsage(now); lastWaterTotal += waterUsage; Point point = Point .measurement(influxdbConfig.getMeasurement()) .addTag(TAG, TAGNAME) .addField(FIELD_VALUE, lastWaterTotal) .time(Instant.now(), WritePrecision.S); repository.writePoint(point); log.info("åå ¥æ°´è¡¨æ°æ®: {}", lastWaterTotal); } private double calculateWaterUsage(LocalDateTime time) { int hour = time.getHour(); boolean isWeekend = time.getDayOfWeek().getValue() > 5; // åºç¡ç¨æ°´é double baseUsage = 0.05; // 工使¶é´(8-20ç¹)ç¨æ°´éå¢å if (hour >= 8 && hour < 20) { baseUsage += 0.15; // 工使¥ç¨æ°´éæ´å¤§ if (!isWeekend) { baseUsage += 0.1; } } // æ·»å éæºæ³¢å¨ baseUsage += random.nextDouble() * 0.5; return baseUsage; } } src/main/resources/application-prod.yml
@@ -106,9 +106,7 @@ - "1-1#yijidiankonggui_1_Exp=ns=2;s=modbus.1-1#yijidiankonggui.tag15" - "1-1#yijidiankonggui_1_ExpZN=ns=2;s=modbus.1-1#yijidiankonggui.tag17" # å°ç½é´ CanSeamerRoom - "1-1#yijidiankonggui_2_VoltageA=ns=2;s=modbus.1-1#yijidiankonggui.tag1" - "1-1#yijidiankonggui_2_VoltageB=ns=2;s=modbus.1-1#yijidiankonggui.tag2" - "1-1#yijidiankonggui_2_VoltageC=ns=2;s=modbus.1-1#yijidiankonggui.tag3" - "1-1#yijidiankonggui_2_CurrentA=ns=2;s=modbus.1-1#yijidiankonggui.tag21" - "1-1#yijidiankonggui_2_CurrentB=ns=2;s=modbus.1-1#yijidiankonggui.tag22" - "1-1#yijidiankonggui_2_CurrentC=ns=2;s=modbus.1-1#yijidiankonggui.tag23" @@ -119,9 +117,7 @@ - "1-1#yijidiankonggui_2_Exp=ns=2;s=modbus.1-1#yijidiankonggui.tag29" - "1-1#yijidiankonggui_2_ExpZN=ns=2;s=modbus.1-1#yijidiankonggui.tag31" # æååº FinishedStore - "1-1#yijidiankonggui_3_VoltageA=ns=2;s=modbus.1-1#yijidiankonggui.tag1" - "1-1#yijidiankonggui_3_VoltageB=ns=2;s=modbus.1-1#yijidiankonggui.tag2" - "1-1#yijidiankonggui_3_VoltageC=ns=2;s=modbus.1-1#yijidiankonggui.tag3" - "1-1#yijidiankonggui_3_CurrentA=ns=2;s=modbus.1-1#yijidiankonggui.tag35" - "1-1#yijidiankonggui_3_CurrentB=ns=2;s=modbus.1-1#yijidiankonggui.tag36" - "1-1#yijidiankonggui_3_CurrentC=ns=2;s=modbus.1-1#yijidiankonggui.tag37" @@ -132,9 +128,7 @@ - "1-1#yijidiankonggui_3_Exp=ns=2;s=modbus.1-1#yijidiankonggui.tag43" - "1-1#yijidiankonggui_3_ExpZN=ns=2;s=modbus.1-1#yijidiankonggui.tag45" # æ¸ æ´é´ RightWorkshop - "1-1#yijidiankonggui_4_VoltageA=ns=2;s=modbus.1-1#yijidiankonggui.tag1" - "1-1#yijidiankonggui_4_VoltageB=ns=2;s=modbus.1-1#yijidiankonggui.tag2" - "1-1#yijidiankonggui_4_VoltageC=ns=2;s=modbus.1-1#yijidiankonggui.tag3" - "1-1#yijidiankonggui_4_CurrentA=ns=2;s=modbus.1-1#yijidiankonggui.tag49" - "1-1#yijidiankonggui_4_CurrentB=ns=2;s=modbus.1-1#yijidiankonggui.tag50" - "1-1#yijidiankonggui_4_CurrentC=ns=2;s=modbus.1-1#yijidiankonggui.tag51" @@ -158,9 +152,7 @@ - "1-2#yijidiankonggui_1_Exp=ns=2;s=modbus.1-2#yijidiankonggui.tag15" - "1-2#yijidiankonggui_1_ExpZN=ns=2;s=modbus.1-2#yijidiankonggui.tag17" # åææä»åº RawMaterialWarehouse - "1-2#yijidiankonggui_2_VoltageA=ns=2;s=modbus.1-2#yijidiankonggui.tag1" - "1-2#yijidiankonggui_2_VoltageB=ns=2;s=modbus.1-2#yijidiankonggui.tag2" - "1-2#yijidiankonggui_2_VoltageC=ns=2;s=modbus.1-2#yijidiankonggui.tag3" - "1-2#yijidiankonggui_2_CurrentA=ns=2;s=modbus.1-2#yijidiankonggui.tag21" - "1-2#yijidiankonggui_2_CurrentB=ns=2;s=modbus.1-2#yijidiankonggui.tag22" - "1-2#yijidiankonggui_2_CurrentC=ns=2;s=modbus.1-2#yijidiankonggui.tag23" @@ -171,9 +163,7 @@ - "1-2#yijidiankonggui_2_Exp=ns=2;s=modbus.1-2#yijidiankonggui.tag29" - "1-2#yijidiankonggui_2_ExpZN=ns=2;s=modbus.1-2#yijidiankonggui.tag31" # ææ¸©å®¤ ThermostaticChamber - "1-2#yijidiankonggui_3_VoltageA=ns=2;s=modbus.1-2#yijidiankonggui.tag1" - "1-2#yijidiankonggui_3_VoltageB=ns=2;s=modbus.1-2#yijidiankonggui.tag2" - "1-2#yijidiankonggui_3_VoltageC=ns=2;s=modbus.1-2#yijidiankonggui.tag3" - "1-2#yijidiankonggui_3_CurrentA=ns=2;s=modbus.1-2#yijidiankonggui.tag35" - "1-2#yijidiankonggui_3_CurrentB=ns=2;s=modbus.1-2#yijidiankonggui.tag36" - "1-2#yijidiankonggui_3_CurrentC=ns=2;s=modbus.1-2#yijidiankonggui.tag37" @@ -184,9 +174,7 @@ - "1-2#yijidiankonggui_3_Exp=ns=2;s=modbus.1-2#yijidiankonggui.tag43" - "1-2#yijidiankonggui_3_ExpZN=ns=2;s=modbus.1-2#yijidiankonggui.tag45" # å è¶é´ PackGlueRoom - "1-2#yijidiankonggui_4_VoltageA=ns=2;s=modbus.1-2#yijidiankonggui.tag1" - "1-2#yijidiankonggui_4_VoltageB=ns=2;s=modbus.1-2#yijidiankonggui.tag2" - "1-2#yijidiankonggui_4_VoltageC=ns=2;s=modbus.1-2#yijidiankonggui.tag3" - "1-2#yijidiankonggui_4_CurrentA=ns=2;s=modbus.1-2#yijidiankonggui.tag49" - "1-2#yijidiankonggui_4_CurrentB=ns=2;s=modbus.1-2#yijidiankonggui.tag50" - "1-2#yijidiankonggui_4_CurrentC=ns=2;s=modbus.1-2#yijidiankonggui.tag51" @@ -210,9 +198,7 @@ - "2-1#yijidiankonggui_2_Exp=ns=2;s=modbus.2-1#yijidiankonggui.tag29" - "2-1#yijidiankonggui_2_ExpZN=ns=2;s=modbus.2-1#yijidiankonggui.tag31" # 车é´åå ¬å®¤ WorkshopOffice - "2-1#yijidiankonggui_3_VoltageA=ns=2;s=modbus.2-1#yijidiankonggui.tag1" - "2-1#yijidiankonggui_3_VoltageB=ns=2;s=modbus.2-1#yijidiankonggui.tag2" - "2-1#yijidiankonggui_3_VoltageC=ns=2;s=modbus.2-1#yijidiankonggui.tag3" - "2-1#yijidiankonggui_3_CurrentA=ns=2;s=modbus.2-1#yijidiankonggui.tag35" - "2-1#yijidiankonggui_3_CurrentB=ns=2;s=modbus.2-1#yijidiankonggui.tag36" - "2-1#yijidiankonggui_3_CurrentC=ns=2;s=modbus.2-1#yijidiankonggui.tag37" @@ -223,9 +209,7 @@ - "2-1#yijidiankonggui_3_Exp=ns=2;s=modbus.2-1#yijidiankonggui.tag43" - "2-1#yijidiankonggui_3_ExpZN=ns=2;s=modbus.2-1#yijidiankonggui.tag45" # 1ã2楼ä¸åå ¬å®¤ EastOffice - "2-1#yijidiankonggui_4_VoltageA=ns=2;s=modbus.2-1#yijidiankonggui.tag1" - "2-1#yijidiankonggui_4_VoltageB=ns=2;s=modbus.2-1#yijidiankonggui.tag2" - "2-1#yijidiankonggui_4_VoltageC=ns=2;s=modbus.2-1#yijidiankonggui.tag3" - "2-1#yijidiankonggui_4_CurrentA=ns=2;s=modbus.2-1#yijidiankonggui.tag49" - "2-1#yijidiankonggui_4_CurrentB=ns=2;s=modbus.2-1#yijidiankonggui.tag50" - "2-1#yijidiankonggui_4_CurrentC=ns=2;s=modbus.2-1#yijidiankonggui.tag51" @@ -249,9 +233,7 @@ - "3-1#yijidiankonggui_1_Exp=ns=2;s=modbus.3-1#yijidiankonggui.tag15" - "3-1#yijidiankonggui_1_ExpZN=ns=2;s=modbus.3-1#yijidiankonggui.tag17" # 车é´2楼 SecondFloorWorkshop - "3-1#yijidiankonggui_2_VoltageA=ns=2;s=modbus.3-1#yijidiankonggui.tag1" - "3-1#yijidiankonggui_2_VoltageB=ns=2;s=modbus.3-1#yijidiankonggui.tag2" - "3-1#yijidiankonggui_2_VoltageC=ns=2;s=modbus.3-1#yijidiankonggui.tag3" - "3-1#yijidiankonggui_2_CurrentA=ns=2;s=modbus.3-1#yijidiankonggui.tag21" - "3-1#yijidiankonggui_2_CurrentB=ns=2;s=modbus.3-1#yijidiankonggui.tag22" - "3-1#yijidiankonggui_2_CurrentC=ns=2;s=modbus.3-1#yijidiankonggui.tag23" @@ -262,9 +244,7 @@ - "3-1#yijidiankonggui_2_Exp=ns=2;s=modbus.3-1#yijidiankonggui.tag29" - "3-1#yijidiankonggui_2_ExpZN=ns=2;s=modbus.3-1#yijidiankonggui.tag31" # ç产åå ¬å®¤ ProductionOffice - "3-1#yijidiankonggui_3_VoltageA=ns=2;s=modbus.3-1#yijidiankonggui.tag1" - "3-1#yijidiankonggui_3_VoltageB=ns=2;s=modbus.3-1#yijidiankonggui.tag2" - "3-1#yijidiankonggui_3_VoltageC=ns=2;s=modbus.3-1#yijidiankonggui.tag3" - "3-1#yijidiankonggui_3_CurrentA=ns=2;s=modbus.3-1#yijidiankonggui.tag35" - "3-1#yijidiankonggui_3_CurrentB=ns=2;s=modbus.3-1#yijidiankonggui.tag36" - "3-1#yijidiankonggui_3_CurrentC=ns=2;s=modbus.3-1#yijidiankonggui.tag37" @@ -275,9 +255,7 @@ - "3-1#yijidiankonggui_3_Exp=ns=2;s=modbus.3-1#yijidiankonggui.tag43" - "3-1#yijidiankonggui_3_ExpZN=ns=2;s=modbus.3-1#yijidiankonggui.tag45" # é«ä½æ¸©è¯éªåº HLTempTest - "3-1#yijidiankonggui_4_VoltageA=ns=2;s=modbus.3-1#yijidiankonggui.tag1" - "3-1#yijidiankonggui_4_VoltageB=ns=2;s=modbus.3-1#yijidiankonggui.tag2" - "3-1#yijidiankonggui_4_VoltageC=ns=2;s=modbus.3-1#yijidiankonggui.tag3" - "3-1#yijidiankonggui_4_CurrentA=ns=2;s=modbus.3-1#yijidiankonggui.tag49" - "3-1#yijidiankonggui_4_CurrentB=ns=2;s=modbus.3-1#yijidiankonggui.tag50" - "3-1#yijidiankonggui_4_CurrentC=ns=2;s=modbus.3-1#yijidiankonggui.tag51"