魏志亮 2 місяців тому
батько
коміт
b5f0b69a87

+ 30 - 3
src/main/java/com/energy/online/data/common/CommonData.java

@@ -22,7 +22,8 @@ public class CommonData {
         // -1 表示时间
 //        log.info("数据长度(包含时间):" + map.size());
         if (!map.isEmpty()) {
-            map.put(0, sdf.format(System.currentTimeMillis()));
+            String nowTime = sdf.format(System.currentTimeMillis());
+            map.put(0, nowTime);
             list.add(new TreeMap<>(map));
         }
     }
@@ -32,8 +33,34 @@ public class CommonData {
     }
 
     public static List<Map<Integer, Object>> getListAndClean() {
-        List<Map<Integer, Object>> nowList = new ArrayList<>(list);
-        list.clear();
+        int index = list.size() - 1;
+        for (int i = list.size() - 1; i >= 0; i--) {
+            if (String.valueOf(list.get(i).get(0)).endsWith("9:50") || String.valueOf(list.get(i).get(0)).endsWith("9:59")) {
+                index = i;
+                break;
+            }
+        }
+
+        List<Map<Integer, Object>> nowList = new ArrayList<>(list.subList(0, index + 1));
+        list.subList(0, index + 1).clear();
         return nowList;
     }
+
+    public static void main(String[] args) throws InterruptedException {
+        put(1, 2);
+        for (int j = 0; j < 3; j++) {
+            for (int i = 0; i < 60; i++) {
+                addList();
+                Thread.sleep(1000);
+            }
+            for (Map<Integer, Object> entry : getListAndClean()) {
+                System.out.println(entry);
+            }
+            System.out.println("----------------------------------");
+            for (Map<Integer, Object> entry : list) {
+                System.out.println(entry);
+            }
+            System.out.println("**************************************");
+        }
+    }
 }

+ 48 - 0
src/main/java/com/energy/online/data/handle/HandelNormalizedIntegerWithTimeType.java

@@ -0,0 +1,48 @@
+package com.energy.online.data.handle;
+
+import com.energy.online.data.common.CommonData;
+import lombok.extern.slf4j.Slf4j;
+import wei.yigulu.iec104.annotation.AsduType;
+import wei.yigulu.iec104.apdumodel.Apdu;
+import wei.yigulu.iec104.asdudataframe.NormalizedIntegerWithTimeType;
+import wei.yigulu.iec104.asdudataframe.qualitydescription.IeMeasuredQuality;
+import wei.yigulu.iec104.asdudataframe.typemodel.InformationBodyAddress;
+
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+@AsduType(typeId = 34)
+public class HandelNormalizedIntegerWithTimeType extends NormalizedIntegerWithTimeType {
+
+    /**
+     * 处理短整型数据
+     *
+     * @param apdu
+     * @return
+     */
+    @Override
+    public byte[][] handleAndAnswer(Apdu apdu) {
+        log.debug("----------处理NormalizedIntegerWithTimeType型数据---------");
+        HandleShortInteger handleShortFloat = (HandleShortInteger) apdu.getAsdu().getDataFrame();
+        List<InformationBodyAddress> address = handleShortFloat.getAddresses();
+        Map<IeMeasuredQuality, Integer> datas = handleShortFloat.getDatas();
+        int i = 0;
+        //存入共享服务端
+        if (apdu.getAsdu().getVsq().getSq() == 0) {
+            log.debug("------处理NormalizedIntegerWithTimeTypee型单一寻址-----");
+            for (Map.Entry<IeMeasuredQuality, Integer> e : datas.entrySet()) {
+                CommonData.put(address.get(i++).getAddress(), e.getValue());
+            }
+        } else if (apdu.getAsdu().getVsq().getSq() == 1) {
+            log.debug("------处理NormalizedIntegerWithTimeType型连续寻址-----");
+            i = address.get(0).getAddress();
+            for (Map.Entry<IeMeasuredQuality, Integer> e : datas.entrySet()) {
+                CommonData.put(i++, e.getValue());
+            }
+        }
+
+        //如果有需要返回数据帧可以创建byte数据  向内置入要返回的数据帧encode()后的数组
+        return null;
+    }
+}

+ 49 - 0
src/main/java/com/energy/online/data/handle/HandleNormalizedIntegerType.java

@@ -0,0 +1,49 @@
+package com.energy.online.data.handle;
+
+import com.energy.online.data.common.CommonData;
+import lombok.extern.slf4j.Slf4j;
+import wei.yigulu.iec104.annotation.AsduType;
+import wei.yigulu.iec104.apdumodel.Apdu;
+import wei.yigulu.iec104.asdudataframe.NormalizedIntegerType;
+import wei.yigulu.iec104.asdudataframe.qualitydescription.IeMeasuredQuality;
+import wei.yigulu.iec104.asdudataframe.typemodel.InformationBodyAddress;
+
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+@AsduType(typeId = 9)
+public class HandleNormalizedIntegerType extends NormalizedIntegerType {
+
+    /**
+     * 处理短整型数据
+     *
+     * @param apdu
+     * @return
+     */
+    @Override
+    public byte[][] handleAndAnswer(Apdu apdu) {
+        log.debug("----------处理NormalizedIntegerType型数据---------");
+        HandleShortInteger handleShortFloat = (HandleShortInteger) apdu.getAsdu().getDataFrame();
+        List<InformationBodyAddress> address = handleShortFloat.getAddresses();
+        Map<IeMeasuredQuality, Integer> datas = handleShortFloat.getDatas();
+        int i = 0;
+        //存入共享服务端
+//        log.info("获取到数据{}个", address.size());
+        if (apdu.getAsdu().getVsq().getSq() == 0) {
+            log.debug("------处理NormalizedIntegerType型单一寻址-----");
+            for (Map.Entry<IeMeasuredQuality, Integer> e : datas.entrySet()) {
+                CommonData.put(address.get(i++).getAddress(), e.getValue());
+            }
+        } else if (apdu.getAsdu().getVsq().getSq() == 1) {
+            log.debug("------处理NormalizedIntegerType型连续寻址-----");
+            i = address.get(0).getAddress();
+            for (Map.Entry<IeMeasuredQuality, Integer> e : datas.entrySet()) {
+                CommonData.put(i++, e.getValue());
+            }
+        }
+
+        //如果有需要返回数据帧可以创建byte数据  向内置入要返回的数据帧encode()后的数组
+        return null;
+    }
+}

+ 49 - 0
src/main/java/com/energy/online/data/handle/HandleShortIntegerWithTimeType.java

@@ -0,0 +1,49 @@
+package com.energy.online.data.handle;
+
+import com.energy.online.data.common.CommonData;
+import lombok.extern.slf4j.Slf4j;
+import wei.yigulu.iec104.annotation.AsduType;
+import wei.yigulu.iec104.apdumodel.Apdu;
+import wei.yigulu.iec104.asdudataframe.ShortIntegerWithTimeType;
+import wei.yigulu.iec104.asdudataframe.qualitydescription.IeMeasuredQuality;
+import wei.yigulu.iec104.asdudataframe.typemodel.InformationBodyAddress;
+
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+@AsduType(typeId = 35)
+public class HandleShortIntegerWithTimeType extends ShortIntegerWithTimeType {
+
+    /**
+     * 处理短整型数据
+     *
+     * @param apdu
+     * @return
+     */
+    @Override
+    public byte[][] handleAndAnswer(Apdu apdu) {
+        log.debug("----------处理短整型带时间数据---------");
+        HandleShortInteger handleShortFloat = (HandleShortInteger) apdu.getAsdu().getDataFrame();
+        List<InformationBodyAddress> address = handleShortFloat.getAddresses();
+        Map<IeMeasuredQuality, Integer> datas = handleShortFloat.getDatas();
+        int i = 0;
+        //存入共享服务端
+//        log.info("获取到数据{}个", address.size());
+        if (apdu.getAsdu().getVsq().getSq() == 0) {
+            log.debug("------处理短整型单一寻址-----");
+            for (Map.Entry<IeMeasuredQuality, Integer> e : datas.entrySet()) {
+                CommonData.put(address.get(i++).getAddress(), e.getValue());
+            }
+        } else if (apdu.getAsdu().getVsq().getSq() == 1) {
+            log.debug("------处理短整型连续寻址-----");
+            i = address.get(0).getAddress();
+            for (Map.Entry<IeMeasuredQuality, Integer> e : datas.entrySet()) {
+                CommonData.put(i++, e.getValue());
+            }
+        }
+
+        //如果有需要返回数据帧可以创建byte数据  向内置入要返回的数据帧encode()后的数组
+        return null;
+    }
+}

+ 4 - 1
src/main/resources/application-2404.yml

@@ -15,4 +15,7 @@ iec104:
 my:
   scheduled:
     cron: "0/10 * * * * *"
-    sendTotal: "0 0/10 * * * *"
+    sendTotal: "0 0/10 * * * *"
+
+logging:
+  config: classpath:logback-spring-2404.xml

+ 4 - 1
src/main/resources/application-2405.yml

@@ -15,4 +15,7 @@ iec104:
 my:
   scheduled:
     cron: "0/10 * * * * *"
-    sendTotal: "0 0/10 * * * *"
+    sendTotal: "0 0/10 * * * *"
+
+logging:
+  config: classpath:logback-spring-2405.xml

+ 4 - 1
src/main/resources/application-2406.yml

@@ -15,4 +15,7 @@ iec104:
 my:
   scheduled:
     cron: "0/1 * * * * *"
-    sendTotal: "0 0/1 * * * *"
+    sendTotal: "0 0/1 * * * *"
+
+logging:
+  config: classpath:logback-spring-2406.xml

+ 21 - 0
src/main/resources/logback-spring-2404.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
+    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
+
+    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>/home/caiji/project/logs/104/2404.log</file>
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+        </encoder>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>/home/caiji/project/logs/104/history/2404/%d{yyyy-MM-dd}.log</fileNamePattern>
+            <maxHistory>30</maxHistory>
+        </rollingPolicy>
+    </appender>
+
+    <root level="INFO">
+        <appender-ref ref="CONSOLE"/>
+        <appender-ref ref="FILE"/>
+    </root>
+</configuration>

+ 21 - 0
src/main/resources/logback-spring-2405.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
+    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
+
+    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>/home/caiji/project/logs/104/2405.log</file>
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+        </encoder>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>/home/caiji/project/logs/104/history/2405/%d{yyyy-MM-dd}.log</fileNamePattern>
+            <maxHistory>30</maxHistory>
+        </rollingPolicy>
+    </appender>
+
+    <root level="INFO">
+        <appender-ref ref="CONSOLE"/>
+        <appender-ref ref="FILE"/>
+    </root>
+</configuration>

+ 21 - 0
src/main/resources/logback-spring-2406.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
+    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
+
+    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>/home/caiji/project/logs/104/2406.log</file>
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+        </encoder>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>/home/caiji/project/logs/104/history/2406/%d{yyyy-MM-dd}.log</fileNamePattern>
+            <maxHistory>30</maxHistory>
+        </rollingPolicy>
+    </appender>
+
+    <root level="INFO">
+        <appender-ref ref="CONSOLE"/>
+        <appender-ref ref="FILE"/>
+    </root>
+</configuration>