ard-alarm.iml
@@ -25,78 +25,77 @@ </content> <orderEntry type="inheritedJdk" /> <orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.7.12" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.7.12" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-context:5.3.27" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.7.12" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.7.12" level="project" /> <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.12" level="project" /> <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.12" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.5.14" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.5.14" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-context:5.3.20" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.5.14" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.5.14" level="project" /> <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.11" level="project" /> <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.11" level="project" /> <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.17.2" level="project" /> <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.17.2" level="project" /> <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.36" level="project" /> <orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-core:5.3.27" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.3.27" level="project" /> <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.30" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-all:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-codec-dns:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-codec-haproxy:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-codec-http:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-codec-http2:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-codec-memcache:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-codec-mqtt:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-codec-redis:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-codec-smtp:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-codec-socks:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-codec-stomp:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-codec-xml:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-transport-native-unix-common:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-handler-proxy:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-handler-ssl-ocsp:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-resolver-dns:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-transport-rxtx:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-transport-sctp:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-transport-udt:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-transport-classes-epoll:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-transport-classes-kqueue:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-resolver-dns-classes-macos:4.1.92.Final" level="project" /> <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-epoll:linux-x86_64:4.1.92.Final" level="project" /> <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-epoll:linux-aarch_64:4.1.92.Final" level="project" /> <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-kqueue:osx-x86_64:4.1.92.Final" level="project" /> <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-kqueue:osx-aarch_64:4.1.92.Final" level="project" /> <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-resolver-dns-native-macos:osx-x86_64:4.1.92.Final" level="project" /> <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-resolver-dns-native-macos:osx-aarch_64:4.1.92.Final" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-core:5.3.20" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.3.20" level="project" /> <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.28" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-all:4.1.77.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.77.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.77.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-codec-dns:4.1.77.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-codec-haproxy:4.1.77.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-codec-http:4.1.77.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-codec-http2:4.1.77.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-codec-memcache:4.1.77.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-codec-mqtt:4.1.77.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-codec-redis:4.1.77.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-codec-smtp:4.1.77.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-codec-socks:4.1.77.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-codec-stomp:4.1.77.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-codec-xml:4.1.77.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.77.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.77.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-handler-proxy:4.1.77.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.77.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-resolver-dns:4.1.77.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.77.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-transport-rxtx:4.1.77.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-transport-sctp:4.1.77.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-transport-udt:4.1.77.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-transport-classes-epoll:4.1.77.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-transport-native-unix-common:4.1.77.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-transport-classes-kqueue:4.1.77.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-resolver-dns-classes-macos:4.1.77.Final" level="project" /> <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-epoll:linux-x86_64:4.1.77.Final" level="project" /> <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-epoll:linux-aarch_64:4.1.77.Final" level="project" /> <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-kqueue:osx-x86_64:4.1.77.Final" level="project" /> <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-kqueue:osx-aarch_64:4.1.77.Final" level="project" /> <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-resolver-dns-native-macos:osx-x86_64:4.1.77.Final" level="project" /> <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-resolver-dns-native-macos:osx-aarch_64:4.1.77.Final" level="project" /> <orderEntry type="library" name="Maven: org.springframework.integration:spring-integration-mqtt:6.0.3" level="project" /> <orderEntry type="library" name="Maven: org.springframework.integration:spring-integration-core:5.5.18" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.3.27" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-messaging:5.3.27" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.3.27" level="project" /> <orderEntry type="library" name="Maven: org.springframework.retry:spring-retry:1.3.4" level="project" /> <orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.4.29" level="project" /> <orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.4" level="project" /> <orderEntry type="library" name="Maven: org.springframework.integration:spring-integration-core:5.5.12" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.3.20" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-messaging:5.3.20" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.3.20" level="project" /> <orderEntry type="library" name="Maven: org.springframework.retry:spring-retry:1.3.3" level="project" /> <orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.4.18" level="project" /> <orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.3" level="project" /> <orderEntry type="library" name="Maven: org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5" level="project" /> <orderEntry type="library" name="Maven: com.alibaba.fastjson2:fastjson2:2.0.23" level="project" /> <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.26" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.7.12" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.7.12" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.13.5" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.5" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.13.5" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.7.12" level="project" /> <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.75" level="project" /> <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:9.0.75" level="project" /> <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.75" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-web:5.3.27" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.3.27" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.3.27" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.3.27" level="project" /> <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.24" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.5.14" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.5.14" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.12.6" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.6" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.12.6" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.5.14" level="project" /> <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.63" level="project" /> <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:9.0.63" level="project" /> <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.63" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-web:5.3.20" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.3.20" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.3.20" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.3.20" level="project" /> <orderEntry type="library" name="Maven: net.java.dev.jna:jna:5.4.0" level="project" /> <orderEntry type="library" name="Maven: net.java.examples:examples:1.0.0" level="project" /> <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-generator:3.5.3.1" level="project" /> @@ -118,6 +117,11 @@ <orderEntry type="library" name="Maven: com.oracle.ojdbc:simplefan:19.3.0.0" level="project" /> <orderEntry type="library" name="Maven: com.oracle.ojdbc:ons:19.3.0.0" level="project" /> <orderEntry type="library" name="Maven: com.oracle.database.nls:orai18n:21.1.0.0" level="project" /> <orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:4.8.1" level="project" /> <orderEntry type="library" name="Maven: com.squareup.okio:okio:2.7.0" level="project" /> <orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-stdlib-common:1.5.32" level="project" /> <orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-stdlib:1.5.32" level="project" /> <orderEntry type="library" name="Maven: org.jetbrains:annotations:13.0" level="project" /> <orderEntry type="library" name="Maven: io.minio:minio:8.3.5" level="project" /> <orderEntry type="library" name="Maven: com.carrotsearch.thirdparty:simple-xml-safe:2.7.1" level="project" /> <orderEntry type="library" name="Maven: com.google.guava:guava:30.1.1-jre" level="project" /> @@ -126,14 +130,9 @@ <orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" /> <orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.5.1" level="project" /> <orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" /> <orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:4.9.3" level="project" /> <orderEntry type="library" name="Maven: com.squareup.okio:okio:2.8.0" level="project" /> <orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-stdlib-common:1.6.21" level="project" /> <orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-stdlib:1.6.21" level="project" /> <orderEntry type="library" name="Maven: org.jetbrains:annotations:13.0" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.13.5" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.13.5" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.13.5" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.12.6" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.12.6" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.12.6.1" level="project" /> <orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.69" level="project" /> <orderEntry type="library" name="Maven: org.apache.commons:commons-compress:1.21" level="project" /> <orderEntry type="library" name="Maven: org.xerial.snappy:snappy-java:1.1.8.4" level="project" /> @@ -141,10 +140,10 @@ <orderEntry type="library" name="Maven: org.gavaghan:geodesy:1.1.3" level="project" /> <orderEntry type="library" name="Maven: com.alibaba:druid-spring-boot-starter:1.2.14" level="project" /> <orderEntry type="library" name="Maven: com.alibaba:druid:1.2.14" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.7.12" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.5.14" level="project" /> <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:4.0.3" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.3.27" level="project" /> <orderEntry type="library" name="Maven: org.postgresql:postgresql:42.3.8" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.3.20" level="project" /> <orderEntry type="library" name="Maven: org.postgresql:postgresql:42.2.25" level="project" /> <orderEntry type="library" name="Maven: org.checkerframework:checker-qual:3.5.0" level="project" /> </component> </module> pom.xml
@@ -5,7 +5,7 @@ <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.12</version> <version>2.5.14</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.ard</groupId> @@ -90,11 +90,23 @@ <artifactId>orai18n</artifactId> <version>21.1.0.0</version> </dependency> <!-- okhttp3--> <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.8.1</version> </dependency> <!--minioä¾èµ--> <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.3.5</version> <exclusions> <exclusion> <groupId>com.squareup.okhttp3</groupId><!--被æé¤çjarå --> <artifactId>okhttp</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.commons</groupId> @@ -120,6 +132,11 @@ <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> </dependencies> <build> src/main/java/com/ard/alarm/digitization/model/CylbdBj.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,54 @@ package com.ard.alarm.digitization.model; import lombok.Data; import java.util.Date; @Data public class CylbdBj { private Integer id; private String orgName; private String km; private String dm; private String dmc; private String jh; private String wellCommonName; private Date fssj; private String bdbj; private String bjtz; private Float cyl1; private Float cyl2; private String hsqk; private String gxsj; private String xqkdm; private String qdfs; private String cyfs; private String czsj; private String czr; private String cznr; private String bz; private String alarmType; } src/main/java/com/ard/alarm/digitization/model/Gkbj.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,54 @@ package com.ard.alarm.digitization.model; import lombok.Data; import java.util.Date; @Data public class Gkbj { private Integer id; private String orgName; private String km; private String dm; private String dmc; private String jh; private String wellCommonName; private Date fssj; private String bdbj; private String bjtz; private Float cyl1; private Float cyl2; private String hsqk; private String gxsj; private String xqkdm; private String qdfs; private String cyfs; private String czsj; private String czr; private String cznr; private String bz; private String alarmType; } src/main/java/com/ard/alarm/digitization/service/Digitization2Service.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,4 @@ package com.ard.alarm.digitization.service; public interface Digitization2Service { } src/main/java/com/ard/alarm/digitization/service/impl/Digitization2ServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,272 @@ package com.ard.alarm.digitization.service.impl; import com.alibaba.fastjson2.JSON; import com.ard.alarm.digitization.model.CylbdBj; import com.ard.alarm.digitization.model.Gkbj; import com.ard.alarm.digitization.service.Digitization2Service; import com.ard.utils.jdbc.Query; import com.ard.utils.mqtt.MqttProducer; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import java.sql.*; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; @Service @Slf4j(topic = "digitization2") public class Digitization2ServiceImpl implements Digitization2Service { @Value("${digitization2.enabled}") private Boolean digitization2Enabled; @Value("${digitization2.mysql.dbIP}") private String digitization2MysqlIP; @Value("${digitization2.mysql.dbPort}") private Integer digitization2MysqlPort; @Value("${digitization2.mysql.dbName}") private String digitization2MysqlName; @Value("${digitization2.mysql.dbCount}") private String digitization2MysqlCount; @Value("${digitization2.mysql.dbPassword}") private String digitization2MysqlPassword; Connection connection = null; Statement statement = null; private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //public Date gkbjLastTime; public String gkbjLastTime; //public Date cylbdBjLastTime; public String cylbdBjLastTime; @Scheduled(cron = "*/5 * * * * ?") public void alarmHandler() { if(!digitization2Enabled){ return; } Thread gkbjThread = new Thread(){ @Override public void run() { try { Class.forName("com.mysql.cj.jdbc.Driver"); Connection connection = DriverManager.getConnection("jdbc:mysql://" + digitization2MysqlIP + ":" + digitization2MysqlPort + "/" + digitization2MysqlName, digitization2MysqlCount, digitization2MysqlPassword); Statement statement = (Statement) connection.createStatement(); if (gkbjLastTime == null) { //忬¡æ¥è¯¢ï¼åªè·å10æ¡æè¿æ°æ®ã String sql = "select * from gkbj order by fssj desc limit 0,10"; ResultSet resultSet = statement.executeQuery(sql); while (resultSet.next()) { if(resultSet.isFirst()){ gkbjLastTime = sdf.format(resultSet.getTimestamp("fssj")); } Gkbj gkbj = new Gkbj(); gkbj.setId(resultSet.getInt("id")); gkbj.setOrgName(resultSet.getString("org_name")); gkbj.setKm(resultSet.getString("km")); gkbj.setDm(resultSet.getString("dm")); gkbj.setDmc(resultSet.getString("dmc")); gkbj.setJh(resultSet.getString("jh")); gkbj.setWellCommonName(resultSet.getString("well_common_name")); gkbj.setFssj(resultSet.getTimestamp("fssj")); gkbj.setBdbj(resultSet.getString("bdbj")); gkbj.setBjtz(resultSet.getString("bdbj")); gkbj.setCyl1(resultSet.getFloat("cyl1")); gkbj.setCyl2(resultSet.getFloat("cyl2")); gkbj.setHsqk(resultSet.getString("hsqk")); gkbj.setGxsj(resultSet.getString("gxsj")); gkbj.setXqkdm(resultSet.getString("xqkdm")); gkbj.setQdfs(resultSet.getString("qdfs")); gkbj.setCyfs(resultSet.getString("cyfs")); gkbj.setCzsj(resultSet.getString("czsj")); gkbj.setCzr(resultSet.getString("czr")); gkbj.setCznr(resultSet.getString("cznr")); gkbj.setBz(resultSet.getString("bz")); gkbj.setAlarmType("å·¥åµé¢è¦"); MqttProducer.publish(2, false, "digitization2", JSON.toJSONString(gkbj)); } connection.close(); statement.close(); resultSet.close(); } else { //æ¥è¯¢å¤§äºä¸æ¬¡æ¥è¯¢æå䏿¡æ°æ®çæ¶é´ String sql = "select * from gkbj where fssj >= \'" + gkbjLastTime + " \'order by fssj desc"; ResultSet resultSet = statement.executeQuery(sql); while (resultSet.next()) { if(resultSet.isFirst()){ gkbjLastTime = sdf.format(resultSet.getTimestamp("fssj")); } Gkbj gkbj = new Gkbj(); gkbj.setId(resultSet.getInt("id")); gkbj.setOrgName(resultSet.getString("org_name")); gkbj.setKm(resultSet.getString("km")); gkbj.setDm(resultSet.getString("dm")); gkbj.setDmc(resultSet.getString("dmc")); gkbj.setJh(resultSet.getString("jh")); gkbj.setWellCommonName(resultSet.getString("well_common_name")); gkbj.setFssj(resultSet.getTimestamp("fssj")); gkbj.setBdbj(resultSet.getString("bdbj")); gkbj.setBjtz(resultSet.getString("bdbj")); gkbj.setCyl1(resultSet.getFloat("cyl1")); gkbj.setCyl2(resultSet.getFloat("cyl2")); gkbj.setHsqk(resultSet.getString("hsqk")); gkbj.setGxsj(resultSet.getString("gxsj")); gkbj.setXqkdm(resultSet.getString("xqkdm")); gkbj.setQdfs(resultSet.getString("qdfs")); gkbj.setCyfs(resultSet.getString("cyfs")); gkbj.setCzsj(resultSet.getString("czsj")); gkbj.setCzr(resultSet.getString("czr")); gkbj.setCznr(resultSet.getString("cznr")); gkbj.setBz(resultSet.getString("bz")); gkbj.setAlarmType("工嵿¥è¦"); MqttProducer.publish(2, false, "digitization2", JSON.toJSONString(gkbj)); } connection.close(); statement.close(); resultSet.close(); } } catch (Exception ex) { ex.printStackTrace(); log.error("äºåæ°åå工嵿¥è¦æ°æ®å¤çå¼å¸¸ï¼" + ex.getMessage()); } } }; gkbjThread.start(); Thread cylbdBjThread = new Thread(){ @Override public void run() { try { Class.forName("com.mysql.cj.jdbc.Driver"); Connection connection = DriverManager.getConnection("jdbc:mysql://" + digitization2MysqlIP + ":" + digitization2MysqlPort + "/" + digitization2MysqlName, digitization2MysqlCount, digitization2MysqlPassword); Statement statement = (Statement) connection.createStatement(); if (cylbdBjLastTime == null) { //忬¡æ¥è¯¢ï¼åªè·å10æ¡æè¿æ°æ®ã String sql = "select * from cylbd_bj order by fssj desc limit 0,10"; ResultSet resultSet = statement.executeQuery(sql); while (resultSet.next()) { if(resultSet.isFirst()){ cylbdBjLastTime = sdf.format(resultSet.getTimestamp("fssj")); } CylbdBj cylbdBj = new CylbdBj(); cylbdBj.setId(resultSet.getInt("id")); cylbdBj.setOrgName(resultSet.getString("org_name")); cylbdBj.setKm(resultSet.getString("km")); cylbdBj.setDm(resultSet.getString("dm")); cylbdBj.setDmc(resultSet.getString("dmc")); cylbdBj.setJh(resultSet.getString("jh")); cylbdBj.setWellCommonName(resultSet.getString("well_common_name")); cylbdBj.setFssj(resultSet.getTimestamp("fssj")); cylbdBj.setBdbj(resultSet.getString("bdbj")); cylbdBj.setBjtz(resultSet.getString("bdbj")); cylbdBj.setCyl1(resultSet.getFloat("cyl1")); cylbdBj.setCyl2(resultSet.getFloat("cyl2")); cylbdBj.setHsqk(resultSet.getString("hsqk")); cylbdBj.setGxsj(resultSet.getString("gxsj")); cylbdBj.setXqkdm(resultSet.getString("xqkdm")); cylbdBj.setQdfs(resultSet.getString("qdfs")); cylbdBj.setCyfs(resultSet.getString("cyfs")); cylbdBj.setCzsj(resultSet.getString("czsj")); cylbdBj.setCzr(resultSet.getString("czr")); cylbdBj.setCznr(resultSet.getString("cznr")); cylbdBj.setBz(resultSet.getString("bz")); cylbdBj.setAlarmType("åæºæ¥è¦"); MqttProducer.publish(2, false, "digitization2", JSON.toJSONString(cylbdBj)); } connection.close(); statement.close(); resultSet.close(); } else { //æ¥è¯¢å¤§äºä¸æ¬¡æ¥è¯¢æå䏿¡æ°æ®çæ¶é´ String sql = "select * from cylbd_bj where fssj >= \'" + cylbdBjLastTime + "\' order by fssj desc"; ResultSet resultSet = statement.executeQuery(sql); while (resultSet.next()) { if(resultSet.isFirst()){ cylbdBjLastTime = sdf.format(resultSet.getTimestamp("fssj")); } CylbdBj cylbdBj = new CylbdBj(); cylbdBj.setId(resultSet.getInt("id")); cylbdBj.setOrgName(resultSet.getString("org_name")); cylbdBj.setKm(resultSet.getString("km")); cylbdBj.setDm(resultSet.getString("dm")); cylbdBj.setDmc(resultSet.getString("dmc")); cylbdBj.setJh(resultSet.getString("jh")); cylbdBj.setWellCommonName(resultSet.getString("well_common_name")); cylbdBj.setFssj(resultSet.getTimestamp("fssj")); cylbdBj.setBdbj(resultSet.getString("bdbj")); cylbdBj.setBjtz(resultSet.getString("bdbj")); cylbdBj.setCyl1(resultSet.getFloat("cyl1")); cylbdBj.setCyl2(resultSet.getFloat("cyl2")); cylbdBj.setHsqk(resultSet.getString("hsqk")); cylbdBj.setGxsj(resultSet.getString("gxsj")); cylbdBj.setXqkdm(resultSet.getString("xqkdm")); cylbdBj.setQdfs(resultSet.getString("qdfs")); cylbdBj.setCyfs(resultSet.getString("cyfs")); cylbdBj.setCzsj(resultSet.getString("czsj")); cylbdBj.setCzr(resultSet.getString("czr")); cylbdBj.setCznr(resultSet.getString("cznr")); cylbdBj.setBz(resultSet.getString("bz")); cylbdBj.setAlarmType("åæºæ¥è¦"); MqttProducer.publish(2, false, "digitization2", JSON.toJSONString(cylbdBj)); } connection.close(); statement.close(); resultSet.close(); } } catch (Exception ex) { ex.printStackTrace(); log.error("äºåæ°åå工嵿¥è¦æ°æ®å¤çå¼å¸¸ï¼" + ex.getMessage()); } } }; cylbdBjThread.start(); } public void initMysql() throws ClassNotFoundException, SQLException { if(this.connection != null){ if(!this.connection.isClosed()){ try{ this.connection.close(); this.connection = null; }catch(Exception e){ this.connection = null; } } } if(this.statement != null){ if(!this.statement.isClosed()){ try{ this.statement.close(); this.statement = null; }catch(Exception e){ this.statement = null; } } } Class.forName("com.mysql.cj.jdbc.Driver"); this.connection = DriverManager.getConnection("jdbc:mysql://" + digitization2MysqlIP + ":" + digitization2MysqlPort + "/" + digitization2MysqlName, digitization2MysqlCount, digitization2MysqlPassword); this.statement = (Statement) connection.createStatement(); } } src/main/java/com/ard/alarm/radar/controller/RadarController.java
@@ -6,9 +6,10 @@ import com.ard.utils.http.AjaxResult; import com.ard.utils.util.ByteUtils; import com.ard.utils.util.GisUtils; import com.ard.utils.netty.tcp.ClientInitialize; import com.ard.utils.netty.tcp.RadarNettyTcpClient; import io.netty.buffer.ByteBuf; import io.netty.channel.Channel; import io.netty.channel.ChannelFuture; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -43,7 +44,7 @@ if (ardEquipRadar == null) { return AjaxResult.error("é·è¾¾ä¸åå¨"); } Channel channel = ClientInitialize.SucChannelMap.get(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort()); Channel channel= RadarNettyTcpClient.SERVER_MAP.get(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort()); if (channel == null) { return AjaxResult.error("é·è¾¾æªè¿æ¥"); } src/main/java/com/ard/alarm/radar/service/impl/ArdEquipRadarServiceImpl.java
@@ -20,6 +20,7 @@ */ @Service public class ArdEquipRadarServiceImpl implements IArdEquipRadarService { @Resource private ArdEquipRadarMapper ardEquipRadarMapper; src/main/java/com/ard/config/AsyncConfiguration.java
@@ -25,6 +25,27 @@ //é ç½®éåå¤§å° executor.setQueueCapacity(1000); //线ç¨çåç§°åç¼ executor.setThreadNamePrefix("alarmExecutor-"); //çº¿ç¨æ´»è·æ¶é´ï¼ç§ï¼ //executor.setKeepAliveSeconds(60); //çå¾ ææä»»å¡ç»æååå ³éçº¿ç¨æ± executor.setWaitForTasksToCompleteOnShutdown(true); //设置æç»çç¥ //executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); //æ§è¡åå§å executor.initialize(); return executor; } @Bean("exec") public ThreadPoolTaskExecutor executor(){ ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); //é ç½®æ ¸å¿çº¿ç¨æ° executor.setCorePoolSize(15); //é ç½®æå¤§çº¿ç¨æ° executor.setMaxPoolSize(30); //é ç½®éåå¤§å° executor.setQueueCapacity(1000); //线ç¨çåç§°åç¼ executor.setThreadNamePrefix("Executor-"); //çº¿ç¨æ´»è·æ¶é´ï¼ç§ï¼ //executor.setKeepAliveSeconds(60); @@ -36,4 +57,4 @@ executor.initialize(); return executor; } } } src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java
ÎļþÒÑɾ³ý src/main/java/com/ard/utils/netty/tcp/NettyInit.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,49 @@ package com.ard.utils.netty.tcp; import com.ard.alarm.radar.domain.ArdEquipRadar; import com.ard.alarm.radar.service.IArdEquipRadarService; import com.ard.utils.netty.config.NettyTcpConfiguration; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import javax.annotation.Resource; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import static com.ard.utils.netty.tcp.RadarNettyTcpClient.RADAR_MAP; @Component @Slf4j(topic = "netty") public class NettyInit { @Resource NettyTcpConfiguration nettyTcpConfig; @Resource private RadarNettyTcpClient radarNettyTcpClient; @Resource IArdEquipRadarService ardEquipRadarService; @PostConstruct public void createRadarConnect() { try { if (!nettyTcpConfig.getEnabled()) { return; } List<Map<String, Object>> list = new ArrayList<>(); List<ArdEquipRadar> ardEquipRadars = ardEquipRadarService.selectArdEquipRadarList(new ArdEquipRadar()); for (ArdEquipRadar ardEquipRadar : ardEquipRadars) { String host = ardEquipRadar.getIp(); Integer port = Integer.valueOf(ardEquipRadar.getPort()); Map<String,Object> mapParam =new HashMap<String, Object>(); mapParam.put("IP",host); mapParam.put("PORT",port); list.add(mapParam); RADAR_MAP.put(host+":"+port,ardEquipRadar); } radarNettyTcpClient.initAllChannel(list); }catch (Exception e) { e.printStackTrace(); } } } src/main/java/com/ard/utils/netty/tcp/RadarNettyTcpClient.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,251 @@ package com.ard.utils.netty.tcp; import java.util.List; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import com.ard.alarm.radar.domain.ArdEquipRadar; import com.ard.alarm.radar.service.IArdEquipRadarService; import com.ard.utils.netty.tcp.handler.*; import io.netty.bootstrap.Bootstrap; import io.netty.channel.*; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioSocketChannel; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import javax.annotation.Resource; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; /** * 客æ·ç«¯åå§å * * @author lijiamin */ @Component @Slf4j(topic = "netty") public class RadarNettyTcpClient { @Resource IArdEquipRadarService ardEquipRadarService; @Autowired @Qualifier("exec") ThreadPoolTaskExecutor executorService; EventLoopGroup eventLoopGroup = new NioEventLoopGroup(); public static ConcurrentHashMap<String, MessageHandler> SucMessageHandlerMap = new ConcurrentHashMap();//æåè¿æ¥çip端å£å¯¹åºçæ¥æè§£æå¨ public static ConcurrentHashMap<String, Integer> aroundScanfMap = new ConcurrentHashMap();//æ¯å¦å¯å¨å¨è§ public static final Map<String, Channel> SERVER_MAP = new ConcurrentHashMap(); public static final Map<String, ArdEquipRadar> RADAR_MAP = new ConcurrentHashMap(); /** * åå§åæ¹æ³ */ public void initAllChannel(List<Map<String, Object>> portHosts) { for (Map<String, Object> map : portHosts) { String host = (String) map.get("IP"); Integer port = (Integer) map.get("PORT"); try { connectServer(host, port); } catch (Exception ex) { log.error(ex.getMessage()); } } } /** * åå§åBootstrap * åèä¹ * 2024/3/25 9:53:57 */ public Bootstrap getBootstrap(EventLoopGroup group) { if (null == group) { group = eventLoopGroup; } Bootstrap bootstrap = new Bootstrap(); bootstrap.group(group) .channel(NioSocketChannel.class) .option(ChannelOption.TCP_NODELAY, true) .option(ChannelOption.SO_KEEPALIVE, true) .handler(new ChannelInitializer<SocketChannel>() { @Override protected void initChannel(SocketChannel socketChannel) throws Exception { ChannelPipeline pipeline = socketChannel.pipeline(); pipeline.addLast("handler", new ClientHandler()); } }); return bootstrap; } /** * æå¡è¿æ¥ * åèä¹ * 2024/3/25 9:52:28 */ public void connectServer(String host, Integer port) { try { //弿¥è¿æ¥tcpæå¡ç«¯ Bootstrap bootstrap = getBootstrap(null); bootstrap.remoteAddress(host, port); ChannelFuture channelFuture = bootstrap.connect().sync(); if (channelFuture.isSuccess()) { log.info("é·è¾¾ã" + host + ":" + port + "ãè¿æ¥æå"); String serverKey = String.format("%s:%d", host, port); SERVER_MAP.put(serverKey, channelFuture.channel()); SucMessageHandlerMap.put(serverKey, new MessageHandler()); } channelFuture.channel().closeFuture().addListener(new ChannelFutureListener() { public void operationComplete(ChannelFuture future) throws Exception { String serverKey = String.format("%s:%d", host, port); SERVER_MAP.remove(serverKey); //æå¡ç«¯ç¦»çº¿ï¼è§¦åéè¿æä½ reconnect(host, port); } }); } catch (Exception e) { reconnect(host, port); throw new RuntimeException("é·è¾¾ã" + host + ":" + port + "ãè¿æ¥å¼å¸¸:" + e.getMessage()); } } /** * éè¿æå¡ç«¯ * åèä¹ * 2024/3/25 9:52:15 */ public void reconnect(final String host, final int port) { log.debug("é·è¾¾ã" + host + ":" + port + "ãè¿æ¥å¤±è´¥ï¼è¿è¡éè¿..."); executorService.submit(new Runnable() { public void run() { for (; ; ) { try { TimeUnit.SECONDS.sleep(3); connectServer(host, port); if (SERVER_MAP.containsKey(String.format("%s:%d", host, port))) { break; } } catch (Exception e) { log.error(e.getMessage()); break; } } } }); } /** * çæµé·è¾¾è¿æ¥ç¶æ */ // @Scheduled(cron = "0/5 * * * * ?") public void monitorConnectStatus1() { try { log.debug("宿¶çæµé·è¾¾è¿æ¥ç¶æ..."); List<ArdEquipRadar> ardEquipRadars = ardEquipRadarService.selectArdEquipRadarList(new ArdEquipRadar()); ardEquipRadars.stream().forEach(ardEquipRadar -> { //夿ä¸é·è¾¾å®¢æ·ç«¯è¿æ¥ç¶æ boolean online = SERVER_MAP.containsKey(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort()); if (online) { //è¿æ¥é·è¾¾å®¢æ·ç«¯æå 夿卿«ç¶æ if (aroundScanfMap.containsKey(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort())) { Integer state = aroundScanfMap.get(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort()); if (state == 1) {//1-卿«æå¼-è¿æ¥æå if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("1")) { ardEquipRadar.setState("1"); ardEquipRadarService.updateArdEquipRadar(ardEquipRadar); } } else { if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("2")) { //2-卿«æªå¼ ardEquipRadar.setState("2"); ardEquipRadarService.updateArdEquipRadar(ardEquipRadar); } } } else { if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("2")) { //2-卿«æªå¼ ardEquipRadar.setState("2"); ardEquipRadarService.updateArdEquipRadar(ardEquipRadar); } } } else { //è¿æ¥é·è¾¾å®¢æ·ç«¯å¤±è´¥ if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("0")) { //0-客æ·ç«¯ä¸é ardEquipRadar.setState("0"); ardEquipRadarService.updateArdEquipRadar(ardEquipRadar); } } }); } catch (Exception e) { log.error("宿¶çæµé·è¾¾è¿æ¥ç¶æå¼å¸¸:" + e.getMessage()); } } @PostConstruct public void monitorConnectStatus() { ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); Runnable task = () -> { try { // 宿¶ä»»å¡çé»è¾ log.debug("宿¶çæµé·è¾¾è¿æ¥ç¶æ..."); List<ArdEquipRadar> ardEquipRadars = ardEquipRadarService.selectArdEquipRadarList(new ArdEquipRadar()); ardEquipRadars.stream().forEach(ardEquipRadar -> { // 夿ä¸é·è¾¾å®¢æ·ç«¯è¿æ¥ç¶æ boolean online = SERVER_MAP.containsKey(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort()); if (online) { log.debug("é·è¾¾ã" + ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort() + "ãç¶æï¼å¨çº¿"); // è¿æ¥é·è¾¾å®¢æ·ç«¯æå 夿卿«ç¶æ if (aroundScanfMap.containsKey(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort())) { Integer state = aroundScanfMap.get(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort()); log.debug("é·è¾¾ã" + ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort() + "ãè·åå°å¨æ«ç¶æï¼" + state); if (state == 1) { // 1-卿«æå¼-è¿æ¥æå log.debug("é·è¾¾ã" + ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort() + "ã卿«ç¶æå¼"); if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("1")) { ardEquipRadar.setState("1"); ardEquipRadarService.updateArdEquipRadar(ardEquipRadar); } } else { log.debug("é·è¾¾ã" + ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort() + "ã卿«ç¶æå ³"); if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("2")) { // 2-卿«æªå¼ ardEquipRadar.setState("2"); ardEquipRadarService.updateArdEquipRadar(ardEquipRadar); } } } else { log.debug("é·è¾¾ã" + ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort() + "ãæªè·åå°å¨æ«ç¶æ"); if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("2")) { // 2-卿«æªå¼ ardEquipRadar.setState("2"); ardEquipRadarService.updateArdEquipRadar(ardEquipRadar); } } } else { log.debug("é·è¾¾ã" + ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort() + "ãç¶æï¼ç¦»çº¿"); // è¿æ¥é·è¾¾å®¢æ·ç«¯å¤±è´¥ if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("0")) { // 0-客æ·ç«¯ä¸é ardEquipRadar.setState("0"); ardEquipRadarService.updateArdEquipRadar(ardEquipRadar); } } }); } catch (Exception e) { log.error("宿¶çæµé·è¾¾è¿æ¥ç¶æå¼å¸¸:" + e.getMessage()); } }; scheduler.scheduleAtFixedRate(task, 0, 5, TimeUnit.SECONDS); } } src/main/java/com/ard/utils/netty/tcp/handler/ClientHandler.java
ÎļþÃû´Ó src/main/java/com/ard/utils/netty/tcp/ClientHandler.java ÐÞ¸Ä @@ -1,26 +1,26 @@ package com.ard.utils.netty.tcp; package com.ard.utils.netty.tcp.handler; import com.alibaba.fastjson2.JSON; import com.ard.alarm.radar.domain.ArdAlarmRadar; import com.ard.alarm.radar.domain.ArdEquipRadar; import com.ard.alarm.radar.domain.RadarAlarmData; import com.ard.utils.netty.tcp.RadarNettyTcpClient; import com.ard.utils.util.ByteUtils; import com.ard.utils.util.GisUtils; import com.ard.utils.mqtt.MqttProducer; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelId; import io.netty.channel.SimpleChannelInboundHandler; import io.netty.channel.*; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; import javax.xml.bind.DatatypeConverter; import java.net.InetSocketAddress; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; import java.util.concurrent.*; import static com.ard.utils.netty.tcp.RadarNettyTcpClient.aroundScanfMap; import static com.ard.utils.util.ByteUtils.toLittleEndian; /** @@ -30,7 +30,8 @@ * @Date: 2023å¹´07æ05æ¥13:13 * @Version: 1.0 **/ @Component //@ChannelHandler.Sharable @Slf4j(topic = "netty") public class ClientHandler extends SimpleChannelInboundHandler<ByteBuf> { private ChannelHandlerContext context; @@ -57,18 +58,9 @@ @Override public void channelInactive(ChannelHandlerContext ctx) throws Exception { InetSocketAddress ipSocket = (InetSocketAddress) ctx.channel().remoteAddress(); String ipPort = ipSocket.getHostString() + ":" + ipSocket.getPort(); log.error("ä¸è®¾å¤" + ipPort + "è¿æ¥æå¼!"); // è¿æ¥æå¼åçæåå¤ç ctx.pipeline().remove(this); ctx.deregister(); ctx.close(); // å°å¤±è´¥ä¿¡æ¯æå ¥Setéå ArdEquipRadar radar = ClientInitialize.trueConnectMap.get(ipPort); if (radar != null) { ClientInitialize.falseConnectSet.add(radar); ClientInitialize.trueConnectMap.remove(ipPort); } String ip = ipSocket.getHostString(); int port = ipSocket.getPort(); log.error("ä¸é·è¾¾è®¾å¤ã" + ip + ":" + port + "ãè¿æ¥æå¼!"); super.channelInactive(ctx); } @@ -84,11 +76,11 @@ public void channelRead0(ChannelHandlerContext ctx, ByteBuf msg) { InetSocketAddress ipSocket = (InetSocketAddress) ctx.channel().remoteAddress(); String ipPort = ipSocket.getHostString() + ":" + ipSocket.getPort(); ArdEquipRadar radar = ClientInitialize.trueConnectMap.get(ipPort); ArdEquipRadar radar = RadarNettyTcpClient.RADAR_MAP.get(ipPort); if (radar == null) { return; } MessageHandler messageHandler = ClientInitialize.SucMessageHandlerMap.get(ipPort); MessageHandler messageHandler = RadarNettyTcpClient.SucMessageHandlerMap.get(ipPort); if (messageHandler == null) { return; } @@ -158,7 +150,7 @@ message.writeBytes(heart); context.writeAndFlush(message); }, 0, 5, TimeUnit.SECONDS); }, 0, 2, TimeUnit.SECONDS); } /** @@ -211,6 +203,36 @@ String alarmTime = ""; Integer targetNum = 0; log.debug("å¤çé·è¾¾" + radarName + "æ°æ®-->å½ä»¤ID:" + cmdIdStr); //å端工ä½ç¶æåé¦ if (Arrays.equals(cmdId, new byte[]{0x00})) { //region åè¦ä¿¡æ¯åé¦ byte[] dfScanAngV = Arrays.copyOfRange(data, 4, 12); dfScanAngV = toLittleEndian(dfScanAngV); double ScanAngV = ByteUtils.bytesToDouble(dfScanAngV); //log.info("è®¾å¤æ«æç俯仰è§åº¦:" + ScanAngV); byte[] dfAngDy = Arrays.copyOfRange(data, 12, 20); dfAngDy = toLittleEndian(dfAngDy); double AngDy = ByteUtils.bytesToDouble(dfAngDy); //log.info("å¨è§å¾åçåç´è§åºè§åº¦:" + AngDy); byte[] iImgW = Arrays.copyOfRange(data, 20, 24); iImgW = toLittleEndian(iImgW); int ImgW = ByteUtils.bytesToDecimal(iImgW); //log.info("å¨è§å¾åç宽:" + ImgW); byte[] iImgH = Arrays.copyOfRange(data, 24, 28); iImgH = toLittleEndian(iImgH); int ImgH = ByteUtils.bytesToDecimal(iImgH); //log.info("å¨è§å¾åçé«:" + ImgH); byte[] cStat = Arrays.copyOfRange(data, 28, 29); // æå第4ä½è³ç¬¬6ä½çå¼ cStat = toLittleEndian(cStat); int Stat = cStat[0] & 0b00000001; log.info("设å¤å½åå·¥ä½ç¶æ:" + Stat); aroundScanfMap.put(radar.getIp() + ":" + radar.getPort(), Stat); } //é·è¾¾ç§»å¨é²ç«æ¥è¦ if (Arrays.equals(cmdId, new byte[]{0x01})) { //region åè¦ä¿¡æ¯åé¦ @@ -508,4 +530,4 @@ log.error("é·è¾¾æ¥æè§£æå¼å¸¸:" + ex.getMessage()); } } } } src/main/java/com/ard/utils/netty/tcp/handler/MessageHandler.java
ÎļþÃû´Ó src/main/java/com/ard/utils/netty/tcp/MessageHandler.java ÐÞ¸Ä @@ -1,4 +1,4 @@ package com.ard.utils.netty.tcp; package com.ard.utils.netty.tcp.handler; import com.ard.utils.util.ByteUtils; @@ -60,12 +60,13 @@ //System.out.println(DatatypeConverter.printHexBinary(payloadCrc32)); //è·åå°æ°æ®æºå¸¦çcrc32å¼ byte[] oldCrc32 = ByteUtils.getLastBytes(payloadCrc32, crcLength); //System.out.println(DatatypeConverter.printHexBinary(oldCrc32)); //廿å 头å å°¾crc32åèï¼ä» ä¿çè´è½½ byte[] payload = ByteUtils.removeHeaderFooterAndCRC(packet, headerLength, footerLength, crcLength); // System.out.println(DatatypeConverter.printHexBinary(payload)); //System.out.println(DatatypeConverter.printHexBinary(payload)); //计ç®è´è½½çcrc32å¼ byte[] NewCrc32 = ByteUtils.parseCrc32(payload); //System.out.println(DatatypeConverter.printHexBinary(NewCrc32)); //å¤ææ°æ®çcrc32æ ¡éªå¼å计ç®å¼æ¯å¦ç¸å if (Arrays.equals(oldCrc32, NewCrc32)) { return true;