ard-alarm.iml
@@ -1,150 +1,150 @@ <?xml version="1.0" encoding="UTF-8"?> <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> <component name="FacetManager"> <facet type="web" name="Web"> <configuration> <webroots /> <sourceRoots> <root url="file://$MODULE_DIR$/src/main/java" /> <root url="file://$MODULE_DIR$/src/main/resources" /> </sourceRoots> </configuration> </facet> <facet type="Spring" name="Spring"> <configuration /> </facet> </component> <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8"> <output url="file://$MODULE_DIR$/target/classes" /> <output-test url="file://$MODULE_DIR$/target/test-classes" /> <content url="file://$MODULE_DIR$"> <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> <excludeFolder url="file://$MODULE_DIR$/target" /> </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.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.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.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: net.java.jna:jna:1.0.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" /> <orderEntry type="library" name="Maven: org.apache.velocity:velocity-engine-core:2.0" level="project" /> <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.36" level="project" /> <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.5.1" level="project" /> <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.5.1" level="project" /> <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.5.1" level="project" /> <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.5.1" level="project" /> <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.5.1" level="project" /> <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:4.3" level="project" /> <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.9" level="project" /> <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.6" level="project" /> <orderEntry type="library" name="Maven: com.oracle.ojdbc:ojdbc8:19.3.0.0" level="project" /> <orderEntry type="library" name="Maven: com.oracle.ojdbc:ucp:19.3.0.0" level="project" /> <orderEntry type="library" name="Maven: com.oracle.ojdbc:oraclepki:19.3.0.0" level="project" /> <orderEntry type="library" name="Maven: com.oracle.ojdbc:osdt_cert:19.3.0.0" level="project" /> <orderEntry type="library" name="Maven: com.oracle.ojdbc:osdt_core:19.3.0.0" level="project" /> <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: 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" /> <orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" /> <orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" /> <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: 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" /> <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.12.0" level="project" /> <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: 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.checkerframework:checker-qual:3.5.0" level="project" /> </component> <?xml version="1.0" encoding="UTF-8"?> <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> <component name="FacetManager"> <facet type="web" name="Web"> <configuration> <webroots /> <sourceRoots> <root url="file://$MODULE_DIR$/src/main/java" /> <root url="file://$MODULE_DIR$/src/main/resources" /> </sourceRoots> </configuration> </facet> <facet type="Spring" name="Spring"> <configuration /> </facet> </component> <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8"> <output url="file://$MODULE_DIR$/target/classes" /> <output-test url="file://$MODULE_DIR$/target/test-classes" /> <content url="file://$MODULE_DIR$"> <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> <excludeFolder url="file://$MODULE_DIR$/target" /> </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.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.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.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: 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" /> <orderEntry type="library" name="Maven: org.apache.velocity:velocity-engine-core:2.0" level="project" /> <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.36" level="project" /> <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.5.1" level="project" /> <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.5.1" level="project" /> <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.5.1" level="project" /> <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.5.1" level="project" /> <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.5.1" level="project" /> <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:4.3" level="project" /> <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.9" level="project" /> <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.6" level="project" /> <orderEntry type="library" name="Maven: com.oracle.ojdbc:ojdbc8:19.3.0.0" level="project" /> <orderEntry type="library" name="Maven: com.oracle.ojdbc:ucp:19.3.0.0" level="project" /> <orderEntry type="library" name="Maven: com.oracle.ojdbc:oraclepki:19.3.0.0" level="project" /> <orderEntry type="library" name="Maven: com.oracle.ojdbc:osdt_cert:19.3.0.0" level="project" /> <orderEntry type="library" name="Maven: com.oracle.ojdbc:osdt_core:19.3.0.0" level="project" /> <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: 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" /> <orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" /> <orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" /> <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: 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" /> <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.12.0" level="project" /> <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: 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.checkerframework:checker-qual:3.5.0" level="project" /> </component> </module> lib/ClientDemoDll/ReadMe.txt
ÎļþÒÑɾ³ý lib/ClientDemoDll/calib.dllBinary files differ
lib/ClientDemoDll/iconv.dllBinary files differ
lib/ClientDemoDll/libcrypto-1_1-x64.dllBinary files differ
lib/ClientDemoDll/libssl-1_1-x64.dllBinary files differ
lib/ClientDemoDll/libxml2.dllBinary files differ
lib/ClientDemoDll/zlib1.dllBinary files differ
lib/OpenAL32.dllBinary files differ
pom.xml
@@ -1,165 +1,166 @@ <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.12</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.ard</groupId> <artifactId>ard-alarm</artifactId> <version>0.0.1-SNAPSHOT</version> <name>ard-alarm</name> <description>ard-alarm</description> <properties> <java.version>1.8</java.version> <docker.image.prefix>ard</docker.image.prefix> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!-- nettyä¾èµ springboot2.xèªå¨å¯¼å ¥çæ¬ --> <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> </dependency> <!--mqtt--> <dependency> <groupId>org.springframework.integration</groupId> <artifactId>spring-integration-mqtt</artifactId> <version>6.0.3</version> </dependency> <dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> <version>2.0.23</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--海康å½åæºäºæ¬¡å¼åä¾èµjarå --> <dependency> <groupId>net.java.jna</groupId> <artifactId>jna</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>net.java.examples</groupId> <artifactId>examples</artifactId> <version>1.0.0</version> </dependency> <!--MP代ç çæå¨ä¾èµ--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.5.3.1</version> </dependency> <!--velocity模æ¿å¼æ--> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.0</version> </dependency> <!--mybatis-plusä¾èµ--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.1</version> </dependency> <!--Oracle jdbc--> <!--è¿é注æï¼æäºojdbcççæ¬ä¸æ¯æjdk1.8ï¼éå°è¿ï¼ç½ä¸è¯´è¿ä¸ªojdbc8æ¯æï¼æä»¥è¿é使ç¨å®--> <dependency> <groupId>com.oracle.ojdbc</groupId> <artifactId>ojdbc8</artifactId> <version>19.3.0.0</version> </dependency> <dependency> <groupId>com.oracle.database.nls</groupId> <artifactId>orai18n</artifactId> <version>21.1.0.0</version> </dependency> <!--minioä¾èµ--> <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.3.5</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version> </dependency> <dependency> <groupId>org.gavaghan</groupId> <artifactId>geodesy</artifactId> <version>1.1.3</version> </dependency> <!--druidä¾èµ--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.14</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> </dependency> </dependencies> <build> <!-- é¡¹ç®æå åç§° --> <finalName>ard_alarm</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> <plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.3.6</version> <configuration> <repository>${docker.image.prefix}/${project.artifactId}</repository> <buildArgs> <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE> </buildArgs> </configuration> </plugin> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.4.1</version> <configuration> <!--é ç½®æä»¶ä½ç½®--> <configurationFile>src/main/resources/GeneratorMapper.xml</configurationFile> <verbose>true</verbose> <overwrite>true</overwrite> </configuration> </plugin> </plugins> </build> </project> <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.12</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.ard</groupId> <artifactId>ard-alarm</artifactId> <version>0.0.1-SNAPSHOT</version> <name>ard-alarm</name> <description>ard-alarm</description> <properties> <java.version>1.8</java.version> <docker.image.prefix>ard</docker.image.prefix> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!-- nettyä¾èµ springboot2.xèªå¨å¯¼å ¥çæ¬ --> <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> </dependency> <!--mqtt--> <dependency> <groupId>org.springframework.integration</groupId> <artifactId>spring-integration-mqtt</artifactId> <version>6.0.3</version> </dependency> <dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> <version>2.0.23</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--海康å½åæºäºæ¬¡å¼åä¾èµjarå --> <dependency> <groupId>net.java.dev.jna</groupId> <artifactId>jna</artifactId> <version>5.4.0</version> </dependency> <dependency> <groupId>net.java.examples</groupId> <artifactId>examples</artifactId> <version>1.0.0</version> </dependency> <!--MP代ç çæå¨ä¾èµ--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.5.3.1</version> </dependency> <!--velocity模æ¿å¼æ--> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.0</version> </dependency> <!--mybatis-plusä¾èµ--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.1</version> </dependency> <!--Oracle jdbc--> <!--è¿é注æï¼æäºojdbcççæ¬ä¸æ¯æjdk1.8ï¼éå°è¿ï¼ç½ä¸è¯´è¿ä¸ªojdbc8æ¯æï¼æä»¥è¿é使ç¨å®--> <dependency> <groupId>com.oracle.ojdbc</groupId> <artifactId>ojdbc8</artifactId> <version>19.3.0.0</version> </dependency> <dependency> <groupId>com.oracle.database.nls</groupId> <artifactId>orai18n</artifactId> <version>21.1.0.0</version> </dependency> <!--minioä¾èµ--> <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.3.5</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version> </dependency> <dependency> <groupId>org.gavaghan</groupId> <artifactId>geodesy</artifactId> <version>1.1.3</version> </dependency> <!--druidä¾èµ--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.14</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> </dependency> </dependencies> <build> <!-- é¡¹ç®æå åç§° --> <finalName>ard_alarm</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> <plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.3.6</version> <configuration> <repository>${docker.image.prefix}/${project.artifactId}</repository> <buildArgs> <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE> </buildArgs> </configuration> </plugin> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.4.1</version> <configuration> <!--é ç½®æä»¶ä½ç½®--> <configurationFile>src/main/resources/GeneratorMapper.xml</configurationFile> <verbose>true</verbose> <overwrite>true</overwrite> </configuration> </plugin> </plugins> </build> </project> src/main/java/com/ard/alarm/camera/service/impl/ArdCamerasServiceImpl.java
@@ -1,134 +1,132 @@ package com.ard.alarm.camera.service.impl; import java.util.*; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import com.ard.alarm.camera.domain.ArdCameras; import com.ard.alarm.camera.mapper.ArdCamerasMapper; import com.ard.alarm.camera.service.IArdCamerasService; import com.ard.alarm.external.domain.ArdEquipExternal; import com.ard.alarm.external.mapper.ArdEquipExternalMapper; import com.ard.utils.hiksdk.service.impl.HikClientUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; import javax.annotation.Resource; /** * ç¸æºè®¾å¤Serviceä¸å¡å±å¤ç * * @author åèä¹ * @date 2023-02-11 */ @Service @Slf4j(topic = "camera") @Order(4) public class ArdCamerasServiceImpl implements IArdCamerasService, ApplicationRunner { private final static ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); public static List<ArdCameras> ardCameraList = new ArrayList<>(); @Resource private ArdCamerasMapper ardCamerasMapper; //åå§åæ§è¡ @Override public void run(ApplicationArguments args) { //å è½½sdkåº HikClientUtil.loadHCNetSDKLib(); //è·åå°å çµå°è¯ç»å½ ardCameraList = selectArdCamerasList(new ArdCameras()); HikClientUtil.loginAllCamera(ardCameraList); syncCameraListTask(); } /** * åæ¥ç¸æºåè¡¨ä»»å¡ * 宿¶è·åå¨çº¿çå°å çµ * åèä¹ * 2023/8/11 9:09:27 */ private void syncCameraListTask() { scheduler.scheduleAtFixedRate(() -> { try { //region 宿¶åæ¥å°å çµ List<ArdCameras> newArdCameraList = selectArdCamerasList(new ArdCameras()); //éè¦æ´æ°çæ°æ® List<ArdCameras> updateList = sameListWithDifferent(ardCameraList, newArdCameraList); if (updateList.size() > 0) { HikClientUtil.logoutAllCamera(updateList); HikClientUtil.loginAllCamera(updateList); ardCameraList.clear(); ardCameraList.addAll(newArdCameraList); } //éè¦å é¤çæ°æ® List<ArdCameras> delList = diffList(ardCameraList, newArdCameraList); if (delList.size() > 0) { HikClientUtil.logoutAllCamera(delList); for (ArdCameras ardCameras : delList) { ardCameraList.remove(ardCameras); } } //éè¦æ°å¢çæ°æ® List<ArdCameras> inserList = diffList(newArdCameraList, ardCameraList); if (inserList.size() > 0) { HikClientUtil.loginAllCamera(inserList); for (ArdCameras ardCameras : inserList) { ardCameraList.add(ardCameras); } } //endregion } catch (Exception e) { log.error("åæ¥ç¸æºä»»å¡æ§è¡åºé" + e.getMessage()); } }, 10, 10, TimeUnit.SECONDS); } /** * æ¥è¯¢ç¸æºè®¾å¤å表 * * @param ardCamera ç¸æºè®¾å¤ * @return ç¸æºè®¾å¤ */ @Override public List<ArdCameras> selectArdCamerasList(ArdCameras ardCamera) { ardCamera.setGdType("0"); ardCamera.setFactory("1"); Wrapper<ArdCameras> queryWrapper=new QueryWrapper<>(ardCamera); return ardCamerasMapper.selectList(queryWrapper); } // æ±ä¸¤ä¸ªå¯¹è±¡Listçå·®é private List<ArdCameras> diffList(List<ArdCameras> oldArrayList, List<ArdCameras> newArrayList) { List<ArdCameras> resultList = oldArrayList.stream() .filter(item -> !newArrayList.stream().map(e -> e.getId()).collect(Collectors.toList()).contains(item.getId())) .collect(Collectors.toList()); return resultList; } //æ±ä¸¤ä¸ªå¯¹è±¡Listç交éåæ®µä¸åIdç¸å private List<ArdCameras> sameListWithDifferent(List<ArdCameras> oldList, List<ArdCameras> newList) { List<ArdCameras> differentFieldsList = newList.stream() .filter(newItem -> { ArdCameras oldItem = oldList.stream() .filter(item -> item.getId().equals(newItem.getId())) .findFirst() .orElse(null); return oldItem == null || !Objects.equals(oldItem.getUpdateTime(), newItem.getUpdateTime()); }) .collect(Collectors.toList()); return differentFieldsList; } } package com.ard.alarm.camera.service.impl; import java.util.*; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import com.ard.alarm.camera.domain.ArdCameras; import com.ard.alarm.camera.mapper.ArdCamerasMapper; import com.ard.alarm.camera.service.IArdCamerasService; import com.ard.alarm.external.domain.ArdEquipExternal; import com.ard.alarm.external.mapper.ArdEquipExternalMapper; import com.ard.utils.hiksdk.service.impl.HikClientUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; import javax.annotation.Resource; /** * ç¸æºè®¾å¤Serviceä¸å¡å±å¤ç * * @author åèä¹ * @date 2023-02-11 */ @Service @Slf4j(topic = "camera") @Order(4) public class ArdCamerasServiceImpl implements IArdCamerasService, ApplicationRunner { private final static ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); public static List<ArdCameras> ardCameraList = new ArrayList<>(); @Resource private ArdCamerasMapper ardCamerasMapper; //åå§åæ§è¡ @Override public void run(ApplicationArguments args) { //è·åå°å çµå°è¯ç»å½ ardCameraList = selectArdCamerasList(new ArdCameras()); HikClientUtil.loginAllCamera(ardCameraList); syncCameraListTask(); } /** * åæ¥ç¸æºåè¡¨ä»»å¡ * 宿¶è·åå¨çº¿çå°å çµ * åèä¹ * 2023/8/11 9:09:27 */ private void syncCameraListTask() { scheduler.scheduleAtFixedRate(() -> { try { //region 宿¶åæ¥å°å çµ List<ArdCameras> newArdCameraList = selectArdCamerasList(new ArdCameras()); //éè¦æ´æ°çæ°æ® List<ArdCameras> updateList = sameListWithDifferent(ardCameraList, newArdCameraList); if (updateList.size() > 0) { HikClientUtil.logoutAllCamera(updateList); HikClientUtil.loginAllCamera(updateList); ardCameraList.clear(); ardCameraList.addAll(newArdCameraList); } //éè¦å é¤çæ°æ® List<ArdCameras> delList = diffList(ardCameraList, newArdCameraList); if (delList.size() > 0) { HikClientUtil.logoutAllCamera(delList); for (ArdCameras ardCameras : delList) { ardCameraList.remove(ardCameras); } } //éè¦æ°å¢çæ°æ® List<ArdCameras> inserList = diffList(newArdCameraList, ardCameraList); if (inserList.size() > 0) { HikClientUtil.loginAllCamera(inserList); for (ArdCameras ardCameras : inserList) { ardCameraList.add(ardCameras); } } //endregion } catch (Exception e) { log.error("åæ¥ç¸æºä»»å¡æ§è¡åºé" + e.getMessage()); } }, 10, 10, TimeUnit.SECONDS); } /** * æ¥è¯¢ç¸æºè®¾å¤å表 * * @param ardCamera ç¸æºè®¾å¤ * @return ç¸æºè®¾å¤ */ @Override public List<ArdCameras> selectArdCamerasList(ArdCameras ardCamera) { ardCamera.setGdType("0"); ardCamera.setFactory("1"); Wrapper<ArdCameras> queryWrapper=new QueryWrapper<>(ardCamera); return ardCamerasMapper.selectList(queryWrapper); } // æ±ä¸¤ä¸ªå¯¹è±¡Listçå·®é private List<ArdCameras> diffList(List<ArdCameras> oldArrayList, List<ArdCameras> newArrayList) { List<ArdCameras> resultList = oldArrayList.stream() .filter(item -> !newArrayList.stream().map(e -> e.getId()).collect(Collectors.toList()).contains(item.getId())) .collect(Collectors.toList()); return resultList; } //æ±ä¸¤ä¸ªå¯¹è±¡Listç交éåæ®µä¸åIdç¸å private List<ArdCameras> sameListWithDifferent(List<ArdCameras> oldList, List<ArdCameras> newList) { List<ArdCameras> differentFieldsList = newList.stream() .filter(newItem -> { ArdCameras oldItem = oldList.stream() .filter(item -> item.getId().equals(newItem.getId())) .findFirst() .orElse(null); return oldItem == null || !Objects.equals(oldItem.getUpdateTime(), newItem.getUpdateTime()); }) .collect(Collectors.toList()); return differentFieldsList; } } src/main/java/com/ard/utils/hiksdk/service/impl/HikClientUtil.java
@@ -1,487 +1,446 @@ package com.ard.utils.hiksdk.service.impl; import com.ard.alarm.camera.domain.ArdCameras; import com.ard.alarm.camera.domain.CameraCmd; import com.ard.alarm.external.domain.ArdEquipExternal; import com.ard.utils.minio.MinioUtil; import com.ard.utils.other.ByteUtils; import com.ard.utils.hiksdk.common.GlobalVariable; import com.ard.utils.hiksdk.domain.DeviceInfo; import com.ard.utils.hiksdk.util.hikSdkUtil.HCNetSDK; import com.ard.utils.spring.SpringUtils; import com.sun.jna.Native; import com.sun.jna.Platform; import com.sun.jna.Pointer; import com.sun.jna.ptr.IntByReference; import lombok.extern.slf4j.Slf4j; import java.io.*; import java.nio.ByteBuffer; import java.util.*; /** * @ClassName: hikClientServiceImpl * @Description: 海康æä½å®¢æ·ç«¯å®ç°ç±» * @Author: Administrator * @Date: 2023å¹´01æ17æ¥ 11:25 * @Version: 1.2 **/ @Slf4j(topic = "hikSdk") public class HikClientUtil { private static HCNetSDK hCNetSDK; // æ¥è¦åè°å½æ°å®ç° public static HCNetSDK.FMSGCallBack_V31 fMSFCallBack_V31; public static void loadHCNetSDKLib() { try { log.debug("å¼å§å è½½sdkåºæä»¶è·¯å¾"); if (Platform.isWindows()) { String WIN_PATH = System.getProperty("user.dir") + File.separator + "lib" + File.separator + "HCNetSDK.dll"; log.debug("å½åWindowså¹³å°çsdkåºè·¯å¾ï¼" + WIN_PATH); hCNetSDK = (HCNetSDK) Native.loadLibrary(WIN_PATH, HCNetSDK.class); } else { log.debug("Linuxå¹³å°"); String LINUX_PATH = System.getProperty("user.dir") + File.separator + "hiklib" + File.separator + "libhcnetsdk.so"; log.debug("å½åLinuxå¹³å°çsdkåºè·¯å¾ï¼" + LINUX_PATH); hCNetSDK = (HCNetSDK) Native.loadLibrary(LINUX_PATH, HCNetSDK.class); //设置HCNetSDKComç»ä»¶åºæå¨è·¯å¾ //libhcnetsdk.so String strPathCom = "/home/hiklib"; HCNetSDK.NET_DVR_LOCAL_SDK_PATH struComPath = new HCNetSDK.NET_DVR_LOCAL_SDK_PATH(); System.arraycopy(strPathCom.getBytes(), 0, struComPath.sPath, 0, strPathCom.length()); struComPath.write(); hCNetSDK.NET_DVR_SetSDKInitCfg(2, struComPath.getPointer()); //设置libcrypto.soæå¨è·¯å¾ HCNetSDK.BYTE_ARRAY ptrByteArrayCrypto = new HCNetSDK.BYTE_ARRAY(256); String strPathCrypto = "/home/hiklib/libcrypto.so.1.1"; System.arraycopy(strPathCrypto.getBytes(), 0, ptrByteArrayCrypto.byValue, 0, strPathCrypto.length()); ptrByteArrayCrypto.write(); hCNetSDK.NET_DVR_SetSDKInitCfg(3, ptrByteArrayCrypto.getPointer()); //设置libssl.soæå¨è·¯å¾ HCNetSDK.BYTE_ARRAY ptrByteArraySsl = new HCNetSDK.BYTE_ARRAY(256); String strPathSsl = "/home/hiklib/libssl.so.1.1"; System.arraycopy(strPathSsl.getBytes(), 0, ptrByteArraySsl.byValue, 0, strPathSsl.length()); ptrByteArraySsl.write(); hCNetSDK.NET_DVR_SetSDKInitCfg(4, ptrByteArraySsl.getPointer()); } } catch (Exception ex) { log.error("å è½½åºæä»¶å¼å¸¸ï¼" + ex.getMessage()); } } /** * @æè¿° 注åç»å½ åªæ¯æåæ¥ç»éï¼ä¸å®æ¹ä¸å»ºè®®ç´æ¥å¨æ¤æ¥å£ä¸åèæ¶æä½ * @åæ° [dvrLogin] * @è¿åå¼ java.lang.Integer * @å建人 åèä¹ * @å建æ¶é´ 2023/1/17 16:12 * @ä¿®æ¹äººåå ¶å®ä¿¡æ¯ */ public ArdCameras login1(ArdCameras camera) { // åå§å if (!hCNetSDK.NET_DVR_Init()) { log.error("SDKåå§å失败"); } //æå°æµ·åº·sdkæ¥å¿ if (Platform.isWindows()) { String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator; hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true); } else { hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true); } String m_sDeviceIP = camera.getIp(); String m_sUsername = camera.getUsername(); String m_sPassword = camera.getPassword(); short m_sPort = camera.getPort().shortValue(); //è®¾ç½®è¿æ¥æ¶é´ä¸éè¿æ¶é´ hCNetSDK.NET_DVR_SetConnectTime(2000, 1); hCNetSDK.NET_DVR_SetReconnect(100000, true); //设å¤ä¿¡æ¯, è¾åºåæ° HCNetSDK.NET_DVR_DEVICEINFO_V30 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30(); int lUserID = hCNetSDK.NET_DVR_Login_V30(m_sDeviceIP, m_sPort, m_sUsername, m_sPassword, m_strDeviceInfo); if (lUserID < 0) { //éæ¾SDKèµæº hCNetSDK.NET_DVR_Cleanup(); camera.setLoginId(-1); } if (GlobalVariable.loginMap.containsKey(camera.getId())) { GlobalVariable.loginMap.remove(camera.getId()); } GlobalVariable.loginMap.put(camera.getId(), lUserID); camera.setLoginId(lUserID); camera.setChannel((int) m_strDeviceInfo.byStartChan); return camera; } /** * @æè¿° 注åç»å½ éæäºNET_DVR_Login_V30ï¼æ¯æåæ¥å弿¥ç»å½ * @å建人 åèä¹ * @å建æ¶é´ 2023/1/17 16:12 */ public static void login(DeviceInfo deviceInfo) { // åå§å if (!hCNetSDK.NET_DVR_Init()) { log.error("SDKåå§å失败"); } //æå°æµ·åº·sdkæ¥å¿ if (Platform.isWindows()) { String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator; hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true); } else { hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true); } String m_sDeviceIP = deviceInfo.getIp(); String m_sUsername = deviceInfo.getUsername(); String m_sPassword = deviceInfo.getPassword(); short m_sPort = deviceInfo.getPort().shortValue(); //è®¾ç½®è¿æ¥æ¶é´ä¸éè¿æ¶é´ hCNetSDK.NET_DVR_SetConnectTime(2000, 1); hCNetSDK.NET_DVR_SetReconnect(100000, true); //设å¤ä¿¡æ¯, è¾åºåæ° HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40(); HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO(); // 注å设å¤-ç»å½åæ°ï¼å æ¬è®¾å¤å°åãç»å½ç¨æ·ãå¯ç ç m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN]; System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length()); m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN]; System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length()); m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN]; System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length()); m_strLoginInfo.wPort = m_sPort; m_strLoginInfo.byVerifyMode = 0; m_strLoginInfo.byLoginMode = 0; //æ¯å¦å¼æ¥ç»å½ï¼0- å¦ï¼1- æ¯ windowsSDK鿝trueåfalse m_strLoginInfo.bUseAsynLogin = true; //弿¥ç»å½åè° m_strLoginInfo.cbLoginResult = new LoginResultCallBack(deviceInfo); m_strLoginInfo.write(); int i = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo); if (i < 0) { int errorCode = hCNetSDK.NET_DVR_GetLastError(); log.info("ç»å½å¼å¸¸ï¼" + errorCode); } } /** * @æè¿° ç¨æ·æ³¨é * @å建人 åèä¹ * @å建æ¶é´ 2023/1/17 16:12 */ public static void logout(DeviceInfo deviceInfo) { String deviceIpPort = deviceInfo.getIp() + ":" + deviceInfo.getPort(); //æ¤é² if (GlobalVariable.alarmMap.containsKey(deviceInfo.getDeviceId())) { Integer lAlarmHandle = GlobalVariable.alarmMap.get(deviceInfo.getDeviceId()); boolean b = hCNetSDK.NET_DVR_CloseAlarmChan_V30(lAlarmHandle); if (b) { log.debug("设å¤ã" + deviceIpPort + "ãæ¤é²æå"); } } //ç»åº if (GlobalVariable.loginMap.containsKey(deviceInfo.getDeviceId())) { Integer lUserID = GlobalVariable.loginMap.get(deviceInfo.getDeviceId()); boolean b = hCNetSDK.NET_DVR_Logout(lUserID); if (b) { log.debug("设å¤ã" + deviceIpPort + "ãæ³¨éæå"); } } } /** * @æè¿° ç»å½ææç¸æº * @å建人 åèä¹ * @å建æ¶é´ 2023/2/3 10:10 */ public static void loginAllCamera(List<ArdCameras> ardCameras) { try { for (ArdCameras camera : ardCameras) { Thread.sleep(100); DeviceInfo info = new DeviceInfo(); info.setDeviceId(camera.getId()); info.setIp(camera.getIp()); info.setPort(camera.getPort()); info.setUsername(camera.getUsername()); info.setPassword(camera.getPassword()); login(info); String key = camera.getIp() + ":" + camera.getPort(); GlobalVariable.cameraMap.put(key, camera); } } catch (Exception ex) { log.error("åå§åç»å½ç¸æºå¼å¸¸ï¼" + ex.getMessage()); } } /** * @æè¿° ç»åºææç¸æº * @å建人 åèä¹ * @å建æ¶é´ 2023/2/3 10:10 */ public static void logoutAllCamera(List<ArdCameras> ardCameras) { try { for (ArdCameras camera : ardCameras) { Thread.sleep(100); DeviceInfo info = new DeviceInfo(); info.setDeviceId(camera.getId()); info.setIp(camera.getIp()); info.setPort(camera.getPort()); info.setUsername(camera.getUsername()); info.setPassword(camera.getPassword()); logout(info); String key = camera.getIp() + ":" + camera.getPort(); GlobalVariable.cameraMap.remove(key); } } catch (Exception ex) { log.error("åå§åç»å½ç¸æºå¼å¸¸ï¼" + ex.getMessage()); } } /** * @æè¿° ç»å½æææ¥è¦ä¸»æº * @å建人 åèä¹ * @å建æ¶é´ 2023/2/3 10:10 */ public static void loginAllAlarmHost(List<ArdEquipExternal> ardEquipExternals) { try { for (ArdEquipExternal alarmHost : ardEquipExternals) { Thread.sleep(100); DeviceInfo info = new DeviceInfo(); info.setDeviceId(alarmHost.getId()); info.setIp(alarmHost.getIp()); info.setPort(alarmHost.getPort()); info.setUsername(alarmHost.getUsername()); info.setPassword(alarmHost.getPassword()); login(info); // String key=alarmHost.getIp()+":"+alarmHost.getPort(); // GlobalVariable.alarmHostMap.put(key, alarmHost); } } catch (Exception ex) { log.error("åå§åæ¥è¦ä¸»æºå¼å¸¸ï¼" + ex.getMessage()); } } /** * @æè¿° ç»åºæææ¥è¦ä¸»æº * @å建人 åèä¹ * @å建æ¶é´ 2023/2/3 10:10 */ public static void logoutAllAlarmHost(List<ArdEquipExternal> ardEquipExternals) { try { for (ArdEquipExternal alarmHost : ardEquipExternals) { Thread.sleep(100); DeviceInfo info = new DeviceInfo(); info.setDeviceId(alarmHost.getId()); info.setIp(alarmHost.getIp()); info.setPort(alarmHost.getPort()); info.setUsername(alarmHost.getUsername()); info.setPassword(alarmHost.getPassword()); logout(info); // String key=alarmHost.getIp()+":"+alarmHost.getPort(); // GlobalVariable.alarmHostMap.remove(key); } } catch (Exception ex) { log.error("åå§åç»å½ç¸æºå¼å¸¸ï¼" + ex.getMessage()); } } /** * @æè¿° ç»å½ææé¨ç¦ä¸»æº * @å建人 åèä¹ * @å建æ¶é´ 2023/2/3 10:10 */ public static void loginAllAccessControlHost(List<ArdEquipExternal> ardEquipExternals) { try { for (ArdEquipExternal accessControlHost : ardEquipExternals) { Thread.sleep(100); DeviceInfo info = new DeviceInfo(); info.setDeviceId(accessControlHost.getId()); info.setIp(accessControlHost.getIp()); info.setPort(accessControlHost.getPort()); info.setUsername(accessControlHost.getUsername()); info.setPassword(accessControlHost.getPassword()); login(info); // // String key=accessControlHost.getIp()+":"+accessControlHost.getPort(); // GlobalVariable.accessHostMap.put(key, accessControlHost); } } catch (Exception ex) { log.error("åå§åæ¥è¦ä¸»æºå¼å¸¸ï¼" + ex.getMessage()); } } /** * @æè¿° ç»åºææé¨ç¦ä¸»æº * @å建人 åèä¹ * @å建æ¶é´ 2023/2/3 10:10 */ public static void logoutAllAccessControlHost(List<ArdEquipExternal> ardEquipExternals) { try { for (ArdEquipExternal accessControlHost : ardEquipExternals) { Thread.sleep(100); DeviceInfo info = new DeviceInfo(); info.setDeviceId(accessControlHost.getId()); info.setIp(accessControlHost.getIp()); info.setPort(accessControlHost.getPort()); info.setUsername(accessControlHost.getUsername()); info.setPassword(accessControlHost.getPassword()); logout(info); // String key=accessControlHost.getIp()+":"+accessControlHost.getPort(); // GlobalVariable.accessHostMap.remove(key); } } catch (Exception ex) { log.error("åå§åæ¥è¦ä¸»æºå¼å¸¸ï¼" + ex.getMessage()); } } /** * 建ç«å¸é²ä¸ä¼ ééï¼ç¨äºä¼ è¾æ°æ® * * @param lUserID å¯ä¸æ è¯ç¬¦ * @param lAlarmHandle æ¥è¦å¤çå¨ */ public static int setupAlarmChan(String deviceIpPort, int lUserID, int lAlarmHandle) { // æ ¹æ®è®¾å¤æ³¨åçæçlUserID建ç«å¸é²çä¸ä¼ ééï¼å³æ°æ®çä¸ä¼ éé if (lUserID == -1) { log.error("è¯·å æ³¨å"); return lUserID; } if (lAlarmHandle < 0) { // 设å¤å°æªå¸é²,éè¦å è¿è¡å¸é² if (fMSFCallBack_V31 == null) { fMSFCallBack_V31 = new FMSGCallBack(); if (!hCNetSDK.NET_DVR_SetDVRMessageCallBack_V50(0, fMSFCallBack_V31, null)) { log.error("设置åè°å½æ°å¤±è´¥!é误ç ==========ã" + hCNetSDK.NET_DVR_GetLastError()); } } // è¿ééè¦å¯¹è®¾å¤è¿è¡ç¸åºçåæ°è®¾ç½®ï¼ä¸è®¾ç½®æè®¾ç½®é误é½ä¼å¯¼è´è®¾å¤æ³¨å失败 HCNetSDK.NET_DVR_SETUPALARM_PARAM m_strAlarmInfo = new HCNetSDK.NET_DVR_SETUPALARM_PARAM(); m_strAlarmInfo.dwSize = m_strAlarmInfo.size(); // æºè½äº¤éå¸é²ä¼å 级ï¼0 - ä¸ç级ï¼é«ï¼ï¼1 - äºç级ï¼ä¸ï¼ï¼2 - ä¸ç级ï¼ä½ï¼ m_strAlarmInfo.byLevel = 2; // æºè½äº¤éæ¥è¦ä¿¡æ¯ä¸ä¼ ç±»åï¼0 - èæ¥è¦ä¿¡æ¯ï¼NET_DVR_PLATE_RESULTï¼, 1 - æ°æ¥è¦ä¿¡æ¯(NET_ITS_PLATE_RESULT) m_strAlarmInfo.byAlarmInfoType = 1; // å¸é²ç±»å(ä» é对é¨ç¦ä¸»æºã人è¯è®¾å¤)ï¼0 - 客æ·ç«¯å¸é²(伿ç½ç»ä¼ )ï¼1 - 宿¶å¸é²(åªä¸ä¼ 宿¶æ°æ®) m_strAlarmInfo.byDeployType = 1; m_strAlarmInfo.write(); // å¸é²æåï¼è¿åå¸é²æåçæ°æ®ä¼ è¾ééå· lAlarmHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, m_strAlarmInfo); if (lAlarmHandle == -1) { log.error("设å¤ã" + deviceIpPort + "ãå¸é²å¤±è´¥ï¼é误ç ==========ã" + hCNetSDK.NET_DVR_GetLastError()); } else { log.debug("设å¤ã" + deviceIpPort + "ãå¸é²æå"); } } return lAlarmHandle; } /** * 注é * * @param lUserID è®¾å¤æ³¨åæåå¯ä¸æ è¯ç¬¦ */ public static void logout(int lUserID) { // 注é hCNetSDK.NET_DVR_Logout(lUserID); // éæ¾sdkèµæº hCNetSDK.NET_DVR_Cleanup(); } /** * æå¾ * * @param cmd æå¾å½ä»¤ */ public static String picCutCate(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChannelNum(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return ""; } Integer userId = GlobalVariable.loginMap.get(cameraId); //å¾çä¿¡æ¯ HCNetSDK.NET_DVR_JPEGPARA jpeg = new HCNetSDK.NET_DVR_JPEGPARA(); //设置å¾çå辨ç //å¾ç尺寸ï¼0-CIF(352*288/352*240)ï¼1-QCIF(176*144/176*120)ï¼2-4CIF(704*576/704*480)æD1(720*576/720*486)ï¼3-UXGA(1600*1200)ï¼ // 4-SVGA(800*600)ï¼5-HD720P(1280*720)ï¼6-VGA(640*480)ï¼7-XVGA(1280*960)ï¼8-HD900P(1600*900)ï¼9-HD1080P(1920*1080)ï¼10-2560*1920ï¼ // 11-1600*304ï¼12-2048*1536ï¼13-2448*2048ï¼14-2448*1200ï¼15-2448*800ï¼16-XGA(1024*768)ï¼17-SXGA(1280*1024)ï¼18-WD1(960*576/960*480), // 19-1080I(1920*1080)ï¼20-576*576ï¼21-1536*1536ï¼22-1920*1920ï¼23-320*240ï¼24-720*720ï¼25-1024*768ï¼26-1280*1280ï¼27-1600*600ï¼ // 28-2048*768ï¼29-160*120ï¼75-336*256ï¼78-384*256ï¼79-384*216ï¼80-320*256ï¼82-320*192ï¼83-512*384ï¼127-480*272ï¼128-512*272ï¼ 161-288*320ï¼ // 162-144*176ï¼163-480*640ï¼164-240*320ï¼165-120*160ï¼166-576*720ï¼167-720*1280ï¼168-576*960ï¼180-180*240, 181-360*480, 182-540*720, // 183-720*960, 184-960*1280, 185-1080*1440, 500-384*288, 0xff-Auto(使ç¨å½åç æµå辨ç) jpeg.wPicSize = 0; //设置å¾çè´¨éï¼0-æå¥½ï¼1-è¾å¥½ï¼2-ä¸è¬ jpeg.wPicQuality = 0; IntByReference a = new IntByReference(); //设置å¾çå¤§å° ByteBuffer jpegBuffer = ByteBuffer.allocate(1024 * 1024); // æå¾å°å åï¼åå¸§æ°æ®æè·å¹¶ä¿åæJPEG忾卿å®çå å空é´ä¸ // log.debug("-----------è¿éå¼å§å°è£ NET_DVR_CaptureJPEGPicture_NEW---------"); boolean is = hCNetSDK.NET_DVR_CaptureJPEGPicture_NEW(userId, channelNum, jpeg, jpegBuffer, 1024 * 1024, a); //log.debug("-----------è¿éå¼å§å¾çåå ¥å å----------" + is); if (is) { // log.debug("hksdk(æå¾)-ç»æç¶æå¼(0表示æå):" + hCNetSDK.NET_DVR_GetLastError()); byte[] array = jpegBuffer.array(); //åå¨å°minio String ContentType = "image/JPEG"; InputStream input = new ByteArrayInputStream(array); String url = ""; try { boolean b = MinioUtil.uploadObject(cmd.getBucketName(), cmd.getObjectName(), input,input.available(), ContentType); if (b) { url = MinioUtil.getBucketObjectUrl(cmd.getBucketName(), cmd.getObjectName()); // log.debug("ä¸ä¼ æä»¶æå!" + url); } } catch (Exception ex) { log.error("ä¸ä¼ æä»¶å¼å¸¸ï¼" + ex.getMessage()); } return url; } else { int code = hCNetSDK.NET_DVR_GetLastError(); log.debug("æå¾å¤±è´¥,请ç¨åéè¯" + code); return ""; } } /** * è·åé²åºåç§° * ééå·==é²åºå· ä»0å¼å§ * åèä¹ * 2023/7/6 10:48 */ public static String getDefenseZoneName(CameraCmd cmd) { String name = ""; try { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getWZoneIndex();//ééå·==é²åºå· if (!GlobalVariable.loginMap.containsKey(cameraId)) { return name; } Integer userId = GlobalVariable.loginMap.get(cameraId); HCNetSDK.NET_DVR_ALARMIN_PARAM netDvrAlarminParam = new HCNetSDK.NET_DVR_ALARMIN_PARAM(); Pointer point = netDvrAlarminParam.getPointer(); IntByReference ibrBytesReturned = new IntByReference(); netDvrAlarminParam.write(); boolean b = hCNetSDK.NET_DVR_GetDVRConfig(userId, HCNetSDK.NET_DVR_GET_ALARMIN_PARAM, channelNum, point, netDvrAlarminParam.size(), ibrBytesReturned); if (b) { netDvrAlarminParam.read(); name = ByteUtils.bytesToStringZh(netDvrAlarminParam.byName); } else { int error = hCNetSDK.NET_DVR_GetLastError(); log.info("è·åé²åºå称失败:" + error); } } catch (Exception ex) { log.error("è·åé²åºåç§°å¼å¸¸:" + ex.getMessage()); } return name; } package com.ard.utils.hiksdk.service.impl; import com.ard.alarm.camera.domain.ArdCameras; import com.ard.alarm.camera.domain.CameraCmd; import com.ard.alarm.external.domain.ArdEquipExternal; import com.ard.utils.minio.MinioUtil; import com.ard.utils.other.ByteUtils; import com.ard.utils.hiksdk.common.GlobalVariable; import com.ard.utils.hiksdk.domain.DeviceInfo; import com.ard.utils.hiksdk.util.hikSdkUtil.HCNetSDK; import com.ard.utils.spring.SpringUtils; import com.sun.jna.Native; import com.sun.jna.Platform; import com.sun.jna.Pointer; import com.sun.jna.ptr.IntByReference; import lombok.extern.slf4j.Slf4j; import java.io.*; import java.nio.ByteBuffer; import java.util.*; /** * @ClassName: hikClientServiceImpl * @Description: 海康æä½å®¢æ·ç«¯å®ç°ç±» * @Author: Administrator * @Date: 2023å¹´01æ17æ¥ 11:25 * @Version: 1.2 **/ @Slf4j(topic = "hikSdk") public class HikClientUtil { public static HCNetSDK hCNetSDK = HCNetSDK.hCNetSDK; // æ¥è¦åè°å½æ°å®ç° public static HCNetSDK.FMSGCallBack_V31 fMSFCallBack_V31; /** * @æè¿° 注åç»å½ åªæ¯æåæ¥ç»éï¼ä¸å®æ¹ä¸å»ºè®®ç´æ¥å¨æ¤æ¥å£ä¸åèæ¶æä½ * @åæ° [dvrLogin] * @è¿åå¼ java.lang.Integer * @å建人 åèä¹ * @å建æ¶é´ 2023/1/17 16:12 * @ä¿®æ¹äººåå ¶å®ä¿¡æ¯ */ public ArdCameras login1(ArdCameras camera) { // åå§å if (!hCNetSDK.NET_DVR_Init()) { log.error("SDKåå§å失败"); } //æå°æµ·åº·sdkæ¥å¿ if (Platform.isWindows()) { String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator; hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true); } else { hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true); } String m_sDeviceIP = camera.getIp(); String m_sUsername = camera.getUsername(); String m_sPassword = camera.getPassword(); short m_sPort = camera.getPort().shortValue(); //è®¾ç½®è¿æ¥æ¶é´ä¸éè¿æ¶é´ hCNetSDK.NET_DVR_SetConnectTime(2000, 1); hCNetSDK.NET_DVR_SetReconnect(100000, true); //设å¤ä¿¡æ¯, è¾åºåæ° HCNetSDK.NET_DVR_DEVICEINFO_V30 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30(); int lUserID = hCNetSDK.NET_DVR_Login_V30(m_sDeviceIP, m_sPort, m_sUsername, m_sPassword, m_strDeviceInfo); if (lUserID < 0) { //éæ¾SDKèµæº hCNetSDK.NET_DVR_Cleanup(); camera.setLoginId(-1); } if (GlobalVariable.loginMap.containsKey(camera.getId())) { GlobalVariable.loginMap.remove(camera.getId()); } GlobalVariable.loginMap.put(camera.getId(), lUserID); camera.setLoginId(lUserID); camera.setChannel((int) m_strDeviceInfo.byStartChan); return camera; } /** * @æè¿° 注åç»å½ éæäºNET_DVR_Login_V30ï¼æ¯æåæ¥å弿¥ç»å½ * @å建人 åèä¹ * @å建æ¶é´ 2023/1/17 16:12 */ public static void login(DeviceInfo deviceInfo) { // åå§å if (!hCNetSDK.NET_DVR_Init()) { log.error("SDKåå§å失败"); } //æå°æµ·åº·sdkæ¥å¿ if (Platform.isWindows()) { String WIN_PATH = System.getProperty("user.dir") + File.separator + "ardLog" + File.separator + "logs" + File.separator; hCNetSDK.NET_DVR_SetLogToFile(3, WIN_PATH, true); } else { hCNetSDK.NET_DVR_SetLogToFile(3, "/home/ardLog/hiklog", true); } String m_sDeviceIP = deviceInfo.getIp(); String m_sUsername = deviceInfo.getUsername(); String m_sPassword = deviceInfo.getPassword(); short m_sPort = deviceInfo.getPort().shortValue(); //è®¾ç½®è¿æ¥æ¶é´ä¸éè¿æ¶é´ hCNetSDK.NET_DVR_SetConnectTime(2000, 1); hCNetSDK.NET_DVR_SetReconnect(100000, true); //设å¤ä¿¡æ¯, è¾åºåæ° HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40(); HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO(); // 注å设å¤-ç»å½åæ°ï¼å æ¬è®¾å¤å°åãç»å½ç¨æ·ãå¯ç ç m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN]; System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length()); m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN]; System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length()); m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN]; System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length()); m_strLoginInfo.wPort = m_sPort; m_strLoginInfo.byVerifyMode = 0; m_strLoginInfo.byLoginMode = 0; //æ¯å¦å¼æ¥ç»å½ï¼0- å¦ï¼1- æ¯ windowsSDK鿝trueåfalse m_strLoginInfo.bUseAsynLogin = true; //弿¥ç»å½åè° m_strLoginInfo.cbLoginResult = new LoginResultCallBack(deviceInfo); m_strLoginInfo.write(); int i = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo); if (i < 0) { int errorCode = hCNetSDK.NET_DVR_GetLastError(); log.info("ç»å½å¼å¸¸ï¼" + errorCode); } } /** * @æè¿° ç¨æ·æ³¨é * @å建人 åèä¹ * @å建æ¶é´ 2023/1/17 16:12 */ public static void logout(DeviceInfo deviceInfo) { String deviceIpPort = deviceInfo.getIp() + ":" + deviceInfo.getPort(); //æ¤é² if (GlobalVariable.alarmMap.containsKey(deviceInfo.getDeviceId())) { Integer lAlarmHandle = GlobalVariable.alarmMap.get(deviceInfo.getDeviceId()); boolean b = hCNetSDK.NET_DVR_CloseAlarmChan_V30(lAlarmHandle); if (b) { log.debug("设å¤ã" + deviceIpPort + "ãæ¤é²æå"); } } //ç»åº if (GlobalVariable.loginMap.containsKey(deviceInfo.getDeviceId())) { Integer lUserID = GlobalVariable.loginMap.get(deviceInfo.getDeviceId()); boolean b = hCNetSDK.NET_DVR_Logout(lUserID); if (b) { log.debug("设å¤ã" + deviceIpPort + "ãæ³¨éæå"); } } } /** * @æè¿° ç»å½ææç¸æº * @å建人 åèä¹ * @å建æ¶é´ 2023/2/3 10:10 */ public static void loginAllCamera(List<ArdCameras> ardCameras) { try { for (ArdCameras camera : ardCameras) { Thread.sleep(100); DeviceInfo info = new DeviceInfo(); info.setDeviceId(camera.getId()); info.setIp(camera.getIp()); info.setPort(camera.getPort()); info.setUsername(camera.getUsername()); info.setPassword(camera.getPassword()); login(info); String key = camera.getIp() + ":" + camera.getPort(); GlobalVariable.cameraMap.put(key, camera); } } catch (Exception ex) { log.error("åå§åç»å½ç¸æºå¼å¸¸ï¼" + ex.getMessage()); } } /** * @æè¿° ç»åºææç¸æº * @å建人 åèä¹ * @å建æ¶é´ 2023/2/3 10:10 */ public static void logoutAllCamera(List<ArdCameras> ardCameras) { try { for (ArdCameras camera : ardCameras) { Thread.sleep(100); DeviceInfo info = new DeviceInfo(); info.setDeviceId(camera.getId()); info.setIp(camera.getIp()); info.setPort(camera.getPort()); info.setUsername(camera.getUsername()); info.setPassword(camera.getPassword()); logout(info); String key = camera.getIp() + ":" + camera.getPort(); GlobalVariable.cameraMap.remove(key); } } catch (Exception ex) { log.error("åå§åç»å½ç¸æºå¼å¸¸ï¼" + ex.getMessage()); } } /** * @æè¿° ç»å½æææ¥è¦ä¸»æº * @å建人 åèä¹ * @å建æ¶é´ 2023/2/3 10:10 */ public static void loginAllAlarmHost(List<ArdEquipExternal> ardEquipExternals) { try { for (ArdEquipExternal alarmHost : ardEquipExternals) { Thread.sleep(100); DeviceInfo info = new DeviceInfo(); info.setDeviceId(alarmHost.getId()); info.setIp(alarmHost.getIp()); info.setPort(alarmHost.getPort()); info.setUsername(alarmHost.getUsername()); info.setPassword(alarmHost.getPassword()); login(info); // String key=alarmHost.getIp()+":"+alarmHost.getPort(); // GlobalVariable.alarmHostMap.put(key, alarmHost); } } catch (Exception ex) { log.error("åå§åæ¥è¦ä¸»æºå¼å¸¸ï¼" + ex.getMessage()); } } /** * @æè¿° ç»åºæææ¥è¦ä¸»æº * @å建人 åèä¹ * @å建æ¶é´ 2023/2/3 10:10 */ public static void logoutAllAlarmHost(List<ArdEquipExternal> ardEquipExternals) { try { for (ArdEquipExternal alarmHost : ardEquipExternals) { Thread.sleep(100); DeviceInfo info = new DeviceInfo(); info.setDeviceId(alarmHost.getId()); info.setIp(alarmHost.getIp()); info.setPort(alarmHost.getPort()); info.setUsername(alarmHost.getUsername()); info.setPassword(alarmHost.getPassword()); logout(info); // String key=alarmHost.getIp()+":"+alarmHost.getPort(); // GlobalVariable.alarmHostMap.remove(key); } } catch (Exception ex) { log.error("åå§åç»å½ç¸æºå¼å¸¸ï¼" + ex.getMessage()); } } /** * @æè¿° ç»å½ææé¨ç¦ä¸»æº * @å建人 åèä¹ * @å建æ¶é´ 2023/2/3 10:10 */ public static void loginAllAccessControlHost(List<ArdEquipExternal> ardEquipExternals) { try { for (ArdEquipExternal accessControlHost : ardEquipExternals) { Thread.sleep(100); DeviceInfo info = new DeviceInfo(); info.setDeviceId(accessControlHost.getId()); info.setIp(accessControlHost.getIp()); info.setPort(accessControlHost.getPort()); info.setUsername(accessControlHost.getUsername()); info.setPassword(accessControlHost.getPassword()); login(info); // // String key=accessControlHost.getIp()+":"+accessControlHost.getPort(); // GlobalVariable.accessHostMap.put(key, accessControlHost); } } catch (Exception ex) { log.error("åå§åæ¥è¦ä¸»æºå¼å¸¸ï¼" + ex.getMessage()); } } /** * @æè¿° ç»åºææé¨ç¦ä¸»æº * @å建人 åèä¹ * @å建æ¶é´ 2023/2/3 10:10 */ public static void logoutAllAccessControlHost(List<ArdEquipExternal> ardEquipExternals) { try { for (ArdEquipExternal accessControlHost : ardEquipExternals) { Thread.sleep(100); DeviceInfo info = new DeviceInfo(); info.setDeviceId(accessControlHost.getId()); info.setIp(accessControlHost.getIp()); info.setPort(accessControlHost.getPort()); info.setUsername(accessControlHost.getUsername()); info.setPassword(accessControlHost.getPassword()); logout(info); // String key=accessControlHost.getIp()+":"+accessControlHost.getPort(); // GlobalVariable.accessHostMap.remove(key); } } catch (Exception ex) { log.error("åå§åæ¥è¦ä¸»æºå¼å¸¸ï¼" + ex.getMessage()); } } /** * 建ç«å¸é²ä¸ä¼ ééï¼ç¨äºä¼ è¾æ°æ® * * @param lUserID å¯ä¸æ è¯ç¬¦ * @param lAlarmHandle æ¥è¦å¤çå¨ */ public static int setupAlarmChan(String deviceIpPort, int lUserID, int lAlarmHandle) { // æ ¹æ®è®¾å¤æ³¨åçæçlUserID建ç«å¸é²çä¸ä¼ ééï¼å³æ°æ®çä¸ä¼ éé if (lUserID == -1) { log.error("è¯·å æ³¨å"); return lUserID; } if (lAlarmHandle < 0) { // 设å¤å°æªå¸é²,éè¦å è¿è¡å¸é² if (fMSFCallBack_V31 == null) { fMSFCallBack_V31 = new FMSGCallBack(); if (!hCNetSDK.NET_DVR_SetDVRMessageCallBack_V50(0, fMSFCallBack_V31, null)) { log.error("设置åè°å½æ°å¤±è´¥!é误ç ==========ã" + hCNetSDK.NET_DVR_GetLastError()); } } // è¿ééè¦å¯¹è®¾å¤è¿è¡ç¸åºçåæ°è®¾ç½®ï¼ä¸è®¾ç½®æè®¾ç½®é误é½ä¼å¯¼è´è®¾å¤æ³¨å失败 HCNetSDK.NET_DVR_SETUPALARM_PARAM m_strAlarmInfo = new HCNetSDK.NET_DVR_SETUPALARM_PARAM(); m_strAlarmInfo.dwSize = m_strAlarmInfo.size(); // æºè½äº¤éå¸é²ä¼å 级ï¼0 - ä¸ç级ï¼é«ï¼ï¼1 - äºç级ï¼ä¸ï¼ï¼2 - ä¸ç级ï¼ä½ï¼ m_strAlarmInfo.byLevel = 2; // æºè½äº¤éæ¥è¦ä¿¡æ¯ä¸ä¼ ç±»åï¼0 - èæ¥è¦ä¿¡æ¯ï¼NET_DVR_PLATE_RESULTï¼, 1 - æ°æ¥è¦ä¿¡æ¯(NET_ITS_PLATE_RESULT) m_strAlarmInfo.byAlarmInfoType = 1; // å¸é²ç±»å(ä» é对é¨ç¦ä¸»æºã人è¯è®¾å¤)ï¼0 - 客æ·ç«¯å¸é²(伿ç½ç»ä¼ )ï¼1 - 宿¶å¸é²(åªä¸ä¼ 宿¶æ°æ®) m_strAlarmInfo.byDeployType = 1; m_strAlarmInfo.write(); // å¸é²æåï¼è¿åå¸é²æåçæ°æ®ä¼ è¾ééå· lAlarmHandle = hCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, m_strAlarmInfo); if (lAlarmHandle == -1) { log.error("设å¤ã" + deviceIpPort + "ãå¸é²å¤±è´¥ï¼é误ç ==========ã" + hCNetSDK.NET_DVR_GetLastError()); } else { log.debug("设å¤ã" + deviceIpPort + "ãå¸é²æå"); } } return lAlarmHandle; } /** * 注é * * @param lUserID è®¾å¤æ³¨åæåå¯ä¸æ è¯ç¬¦ */ public static void logout(int lUserID) { // 注é hCNetSDK.NET_DVR_Logout(lUserID); // éæ¾sdkèµæº hCNetSDK.NET_DVR_Cleanup(); } /** * æå¾ * * @param cmd æå¾å½ä»¤ */ public static String picCutCate(CameraCmd cmd) { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getChannelNum(); if (!GlobalVariable.loginMap.containsKey(cameraId)) { return ""; } Integer userId = GlobalVariable.loginMap.get(cameraId); //å¾çä¿¡æ¯ HCNetSDK.NET_DVR_JPEGPARA jpeg = new HCNetSDK.NET_DVR_JPEGPARA(); //设置å¾çå辨ç //å¾ç尺寸ï¼0-CIF(352*288/352*240)ï¼1-QCIF(176*144/176*120)ï¼2-4CIF(704*576/704*480)æD1(720*576/720*486)ï¼3-UXGA(1600*1200)ï¼ // 4-SVGA(800*600)ï¼5-HD720P(1280*720)ï¼6-VGA(640*480)ï¼7-XVGA(1280*960)ï¼8-HD900P(1600*900)ï¼9-HD1080P(1920*1080)ï¼10-2560*1920ï¼ // 11-1600*304ï¼12-2048*1536ï¼13-2448*2048ï¼14-2448*1200ï¼15-2448*800ï¼16-XGA(1024*768)ï¼17-SXGA(1280*1024)ï¼18-WD1(960*576/960*480), // 19-1080I(1920*1080)ï¼20-576*576ï¼21-1536*1536ï¼22-1920*1920ï¼23-320*240ï¼24-720*720ï¼25-1024*768ï¼26-1280*1280ï¼27-1600*600ï¼ // 28-2048*768ï¼29-160*120ï¼75-336*256ï¼78-384*256ï¼79-384*216ï¼80-320*256ï¼82-320*192ï¼83-512*384ï¼127-480*272ï¼128-512*272ï¼ 161-288*320ï¼ // 162-144*176ï¼163-480*640ï¼164-240*320ï¼165-120*160ï¼166-576*720ï¼167-720*1280ï¼168-576*960ï¼180-180*240, 181-360*480, 182-540*720, // 183-720*960, 184-960*1280, 185-1080*1440, 500-384*288, 0xff-Auto(使ç¨å½åç æµå辨ç) jpeg.wPicSize = 0; //设置å¾çè´¨éï¼0-æå¥½ï¼1-è¾å¥½ï¼2-ä¸è¬ jpeg.wPicQuality = 0; IntByReference a = new IntByReference(); //设置å¾çå¤§å° ByteBuffer jpegBuffer = ByteBuffer.allocate(1024 * 1024); // æå¾å°å åï¼åå¸§æ°æ®æè·å¹¶ä¿åæJPEG忾卿å®çå å空é´ä¸ // log.debug("-----------è¿éå¼å§å°è£ NET_DVR_CaptureJPEGPicture_NEW---------"); boolean is = hCNetSDK.NET_DVR_CaptureJPEGPicture_NEW(userId, channelNum, jpeg, jpegBuffer, 1024 * 1024, a); //log.debug("-----------è¿éå¼å§å¾çåå ¥å å----------" + is); if (is) { // log.debug("hksdk(æå¾)-ç»æç¶æå¼(0表示æå):" + hCNetSDK.NET_DVR_GetLastError()); byte[] array = jpegBuffer.array(); //åå¨å°minio String ContentType = "image/JPEG"; InputStream input = new ByteArrayInputStream(array); String url = ""; try { boolean b = MinioUtil.uploadObject(cmd.getBucketName(), cmd.getObjectName(), input,input.available(), ContentType); if (b) { url = MinioUtil.getBucketObjectUrl(cmd.getBucketName(), cmd.getObjectName()); // log.debug("ä¸ä¼ æä»¶æå!" + url); } } catch (Exception ex) { log.error("ä¸ä¼ æä»¶å¼å¸¸ï¼" + ex.getMessage()); } return url; } else { int code = hCNetSDK.NET_DVR_GetLastError(); log.debug("æå¾å¤±è´¥,请ç¨åéè¯" + code); return ""; } } /** * è·åé²åºåç§° * ééå·==é²åºå· ä»0å¼å§ * åèä¹ * 2023/7/6 10:48 */ public static String getDefenseZoneName(CameraCmd cmd) { String name = ""; try { String cameraId = cmd.getCameraId(); Integer channelNum = cmd.getWZoneIndex();//ééå·==é²åºå· if (!GlobalVariable.loginMap.containsKey(cameraId)) { return name; } Integer userId = GlobalVariable.loginMap.get(cameraId); HCNetSDK.NET_DVR_ALARMIN_PARAM netDvrAlarminParam = new HCNetSDK.NET_DVR_ALARMIN_PARAM(); Pointer point = netDvrAlarminParam.getPointer(); IntByReference ibrBytesReturned = new IntByReference(); netDvrAlarminParam.write(); boolean b = hCNetSDK.NET_DVR_GetDVRConfig(userId, HCNetSDK.NET_DVR_GET_ALARMIN_PARAM, channelNum, point, netDvrAlarminParam.size(), ibrBytesReturned); if (b) { netDvrAlarminParam.read(); name = ByteUtils.bytesToStringZh(netDvrAlarminParam.byName); } else { int error = hCNetSDK.NET_DVR_GetLastError(); log.info("è·åé²åºå称失败:" + error); } } catch (Exception ex) { log.error("è·åé²åºåç§°å¼å¸¸:" + ex.getMessage()); } return name; } } src/main/java/com/ard/utils/hiksdk/util/hikSdkUtil/HCNetSDK.java
ÎļþÌ«´ó src/main/java/com/ard/utils/sdk/DynamicParseUtil.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,127 @@ package com.ard.utils.sdk; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; /** * @author 47081 * @version 1.0 * @description * @date 2021/3/10 */ public class DynamicParseUtil { private DynamicLibParseHandler handler; private SAXParserFactory saxParserFactory; private SAXParser saxParser; /** * éé åç³»ç»å¨æåºå称大å°åä¸å,以ålibåç¼é æçæ¾ä¸å°åºçé®é¢ * * @param currentSystem å½åç³»ç»:win64,win32,linux64,linux32,mac64 * @param libName 卿åºåç§° * @return */ public String compareLibName(String currentSystem, String libName) { String dynamicLibName = libName; List<String> libs = handler.getLibsBySystem(currentSystem); if (currentSystem.toLowerCase().contains("win")) { return findLibs(libs, libName); } if (libName.startsWith("lib")) { dynamicLibName = libName.substring(3); } return findLibs(libs, dynamicLibName); } private String findLibs(List<String> libs, String libName) { for (String lib : libs) { if (libName.equalsIgnoreCase(lib)) { return lib; } } return ""; } public List<String> getLibsSystem(String system) { return handler.getLibsBySystem(system); } private DynamicParseUtil() throws ParserConfigurationException { // è·åSAXåæå¨çå·¥åå®ä¾ï¼ä¸é¨è´è´£å建SAXParseråæå¨ saxParserFactory = SAXParserFactory.newInstance(); // è·åSAXParseråæå¨çå®ä¾ try { saxParser = saxParserFactory.newSAXParser(); handler = new DynamicLibParseHandler(); } catch (Exception e) { e.printStackTrace(); } } public DynamicParseUtil(InputStream inputSteam) throws ParserConfigurationException, IOException, SAXException { this(); saxParser.parse(inputSteam, handler); } /** xmlè§£æhandler */ private class DynamicLibParseHandler extends DefaultHandler { private HashMap<String, List<String>> dynamics = new HashMap<String, List<String>>(); private List<String> systems = Arrays.asList("win64", "win32", "linux64", "linux32", "mac64", "linuxARM"); private String currentDynamicSystem; private List<String> libs; public List<String> getLibsBySystem(String system) { return dynamics.get(system); } @Override public void startDocument() throws SAXException { super.startDocument(); } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { super.startElement(uri, localName, qName, attributes); if (systems.contains(qName)) { currentDynamicSystem = qName; if (libs == null) { libs = new ArrayList<String>(); } } } @Override public void endElement(String uri, String localName, String qName) throws SAXException { super.endElement(uri, localName, qName); if (systems.contains(qName)) { // ä¿åå°hashmapä¸ dynamics.put(currentDynamicSystem, libs); // æ¸ é¤libs libs = null; } } @Override public void characters(char[] ch, int start, int length) throws SAXException { super.characters(ch, start, length); String lib = new String(ch, start, length); if (!lib.trim().isEmpty()) { libs.add(lib); } } } } src/main/java/com/ard/utils/sdk/LibraryLoad.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,194 @@ package com.ard.utils.sdk; import lombok.extern.slf4j.Slf4j; import java.io.*; /** * @author 47081 * @version 1.0 * @description 卿åºå è½½ * @date 2020/11/14 */ @Slf4j(topic = "hikSdk") public class LibraryLoad { private static final String ARCH_WINDOWS = "win"; private static final String ARCH_LINUX = "linux"; private static final String ARCH_MAC = "mac"; private static final int PREFIX_64 = 64; private static final int PREFIX_32 = 32; private static final String PREFIX_ARM = "ARM"; private static final String EXTERNAL_WIN = ".dll"; private static final String EXTERNAL_LINUX = ".so"; private static final String EXTERNAL_MAC = ".dylib"; private static DynamicParseUtil dynamicParseUtil; /** å½å读åçç®å½ */ private static String currentFold; /** 卿åºéè¦åå ¥çç®å½ */ private static String EXTRACT_PATH = System.getProperty("java.io.tmpdir"); private static boolean written = false; /** * è®¾ç½®å¨æåºåå ¥çè·¯å¾,éç¨äºéè¦èªå®ä¹å 载路å¾çç¨æ· * * @param path 卿åºåå ¥çæä»¶å¤¹,ä»è¯¥æä»¶å¤¹ä¸å è½½sdkçå¨æåº */ public static void setExtractPath(String path) { EXTRACT_PATH = path; } public static String getExtractPath() { return EXTRACT_PATH; } /** 卿åºè·¯å¾ */ private static String INNER_PATH; // private static final String EXTERNAL_MAC = ".so"; private static String extractNetSDKLib(String libName) { return extractLibrary(libName); } public static String getLoadLibrary(String libraryName) { currentFold = getLibraryFold(); if (dynamicParseUtil == null) { try { dynamicParseUtil = new DynamicParseUtil( LibraryLoad.class.getClassLoader().getResourceAsStream("dynamic-lib-load.xml")); if (!written) { for (String libName : dynamicParseUtil.getLibsSystem(currentFold)) { extractLibrary(libName); } written = true; } } catch (Exception e) { e.printStackTrace(); } } String fullName = getLibraryName(libraryName); String path = EXTRACT_PATH; if (!(EXTRACT_PATH.endsWith("/") || EXTRACT_PATH.endsWith("\\"))) { path = EXTRACT_PATH + "/"; } log.debug("load library: " + path + fullName); return path + fullName; } /** * å°jarå éç卿åºåå ¥å°ç³»ç»ç¼åç®å½,使ç¨ç»å¯¹è·¯å¾å è½½å¨æåº * * @param libName * @return */ private static String extractLibrary(String libName) { return extractLibrary("/lib", libName); } /** * ç¸å¯¹è·¯å¾æä»¶å¤¹ * * @param relativePath ç¸å¯¹è·¯å¾ * @param libName 卿åºè·¯å¾ * @return */ private static String extractLibrary(String relativePath, String libName) { if (libName.trim().equals("")) { return ""; } String libFullName = getLibraryName(libName); String dir = getLibraryFold(); if (!(relativePath.endsWith("/") || relativePath.endsWith("\\"))) { relativePath = relativePath + "/"; } String fileName = relativePath + dir + "/" + libFullName; InputStream in = LibraryLoad.class.getResourceAsStream(fileName); BufferedInputStream reader; FileOutputStream writer; File extractedLibFile = null; try { if (in == null) { in = new FileInputStream(fileName); } String nativeTempDir = EXTRACT_PATH; if (!(nativeTempDir.endsWith("/") || nativeTempDir.endsWith("\\"))) { nativeTempDir = nativeTempDir + "/"; } extractedLibFile = new File(nativeTempDir + libFullName); reader = new BufferedInputStream(in); // æ£æ¥æä»¶å¤¹æ¯å¦åå¨ï¼å¦æä¸åå¨åå建 File parentDir = extractedLibFile.getParentFile(); if (!parentDir.exists()) { parentDir.mkdirs(); } writer = new FileOutputStream(extractedLibFile); byte[] buffer = new byte[1024]; while (true) { int len = reader.read(buffer); if (len == 0 || len == -1) break; writer.write(buffer, 0, len); } reader.close(); writer.close(); in.close(); } catch (Exception e) { log.error("dynamic file[ " + fileName + " ] not found in project.please ensure you need this library."); } return extractedLibFile != null ? extractedLibFile.getAbsolutePath() : ""; } /** * è·å卿åºå®æ´åç§° * * @param libName * @return */ private static String getLibraryName(String libName) { String dir = currentFold; String libPrefix = ""; String libExtension = EXTERNAL_WIN; if (!dir.contains("win")) { libPrefix = "lib"; if (dir.contains("linux")) { libExtension = EXTERNAL_LINUX; } else { // libExtension=".dylib"; libExtension = EXTERNAL_MAC; } } libName = dynamicParseUtil.compareLibName(currentFold, libName); // 卿åºä»¥libå¼å¤´ï¼å䏿·»å libåç¼ // 以libå¼å¤´çåºå䏿·»å libåç¼ return (libName.startsWith("lib") ? "" : libPrefix) + libName + libExtension; } // è·åç³»ç»å¯¹åºçå¨æåºæä»¶å¤¹ private static String getLibraryFold() { String osType; String osName = System.getProperty("os.name"); if (osName.toLowerCase().startsWith("linux")) { osType = ARCH_LINUX; } else if (osName.toLowerCase().startsWith("mac") || osName.toLowerCase().startsWith("darwin")) { osType = ARCH_MAC; } else if (osName.toLowerCase().startsWith("windows")) { osType = ARCH_WINDOWS; } else { osType = ""; } String arch = System.getProperty("os.arch"); arch = arch.toLowerCase().trim(); if ("i386".equals(arch) || "i686".equals(arch)||"x86".equals(arch)) { arch = PREFIX_32 + ""; } else if ("x86_64".equals(arch) || "amd64".equals(arch)) { arch = PREFIX_64 + ""; } else if (arch.startsWith("arm")) { arch = PREFIX_ARM + ""; } return osType + arch; } } src/main/resources/application-dev.yml
@@ -1,74 +1,74 @@ # å¼åç¯å¢ server: port: 8088 # springé ç½® spring: servlet: multipart: enabled: true max-file-size: 30MB max-request-size: 30MB datasource: druid: #å¼å¯druidçæ§web stat-view-servlet: enabled: true driver-class-name: org.postgresql.Driver url: jdbc:postgresql://192.168.2.15:5432/ry-vue username: postgres password: postgres #æå¤§è¿æ¥æ° maxActive: 30 #æå°è¿æ¥æ° minIdle: 5 #è·åè¿æ¥çæå¤§çå¾ æ¶é´ maxWait: 10000 #è§£å³mysql8å°æ¶çé®é¢ validation-query: SELECT 'X' #空é²è¿æ¥çæ£æ¥æ¶é´é´é timeBetweenEvictionRunsMillis: 60000 #空é²è¿æ¥æå°ç©ºé²æ¶é´ minEvictableIdleTimeMillis: 300000 # nettyé ç½® netty: udp: port: 40000 enabled: true tcp: enabled: true # mqtté ç½® mqtt: host: tcp://192.168.2.15:1883 clientId: client-227 username: admin password: admin timeout: 100 keepalive: 60 enabled: true # ççµæ¥å£å°å stealelec: enabled: true url: http://iot.zhdk.net:8090/Warning/GetWarning?userName=cy4oil # ä¸åæ°ååå°å digitization3: enabled: true # minioé ç½® minio: endpoint: http://192.168.2.15:9001 accessKey: admin secretKey: xzx12345 # mybatis-plusé ç½® mybatis-plus: type-aliases-package: com.ard.alarm.**.domain mapper-locations: classpath:/mapper/*.xml # æ¥å¿ç级é ç½® logging: level: hikSdk: info mqtt: info netty: info external: info camera: info tube: info digitization3: info stealAlarm: info # å¼åç¯å¢ server: port: 8088 # springé ç½® spring: servlet: multipart: enabled: true max-file-size: 30MB max-request-size: 30MB datasource: druid: #å¼å¯druidçæ§web stat-view-servlet: enabled: true driver-class-name: org.postgresql.Driver url: jdbc:postgresql://192.168.2.15:5432/ry-vue username: postgres password: postgres #æå¤§è¿æ¥æ° maxActive: 30 #æå°è¿æ¥æ° minIdle: 5 #è·åè¿æ¥çæå¤§çå¾ æ¶é´ maxWait: 10000 #è§£å³mysql8å°æ¶çé®é¢ validation-query: SELECT 'X' #空é²è¿æ¥çæ£æ¥æ¶é´é´é timeBetweenEvictionRunsMillis: 60000 #空é²è¿æ¥æå°ç©ºé²æ¶é´ minEvictableIdleTimeMillis: 300000 # nettyé ç½® netty: udp: port: 40000 enabled: true tcp: enabled: true # mqtté ç½® mqtt: host: tcp://192.168.2.15:1883 clientId: client-2272 username: admin password: admin timeout: 100 keepalive: 60 enabled: true # ççµæ¥å£å°å stealelec: enabled: true url: http://iot.zhdk.net:8090/Warning/GetWarning?userName=cy4oil # ä¸åæ°ååå°å digitization3: enabled: true # minioé ç½® minio: endpoint: http://192.168.2.15:9001 accessKey: admin secretKey: xzx12345 # mybatis-plusé ç½® mybatis-plus: type-aliases-package: com.ard.alarm.**.domain mapper-locations: classpath:/mapper/*.xml # æ¥å¿ç级é ç½® logging: level: hikSdk: debug mqtt: info netty: info external: info camera: debug tube: info digitization3: info stealAlarm: info src/main/resources/dynamic-lib-load.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,39 @@ <?xml version="1.0" encoding="UTF-8" ?> <dynamic-lib> <win64> <lib>sdk\HCNetSDK</lib> <lib>sdk\HCCore</lib> <lib>sdk\GdiPlus</lib> <lib>sdk\hlog</lib> <lib>sdk\HmMerge</lib> <lib>sdk\/hpr</lib> <lib>sdk\HXVA</lib> <lib>sdk\libcrypto-1_1-x64</lib> <lib>sdk\libmmd</lib> <lib>sdk\libssl-1_1-x64</lib> <lib>sdk\MP_Render</lib> <lib>sdk\NPQos</lib> <lib>sdk\OpenAL32</lib> <lib>sdk\PlayCtrl</lib> <lib>sdk\SuperRender</lib> <lib>sdk\YUVProcess</lib> <lib>sdk\zlib1</lib> <lib>sdk\HCNetSDKCom\AnalyzeData</lib> <lib>sdk\HCNetSDKCom\AudioIntercom</lib> <lib>sdk\HCNetSDKCom\AudioRender</lib> <lib>sdk\HCNetSDKCom\HCAlarm</lib> <lib>sdk\HCNetSDKCom\HCCoreDevCfg</lib> <lib>sdk\HCNetSDKCom\HCDisplay</lib> <lib>sdk\HCNetSDKCom\HCGeneralCfgMgr</lib> <lib>sdk\HCNetSDKCom\HCGeneralCfgMgr</lib> <lib>sdk\HCNetSDKCom\HCIndustry</lib> <lib>sdk\HCNetSDKCom\HCPlayBack</lib> <lib>sdk\HCNetSDKCom\HCPreview</lib> <lib>sdk\HCNetSDKCom\HCVoiceTalk</lib> <lib>sdk\HCNetSDKCom\libiconv2</lib> <lib>sdk\HCNetSDKCom\OpenAL32</lib> <lib>sdk\HCNetSDKCom\StreamTransClient</lib> <lib>sdk\HCNetSDKCom\SystemTransform</lib> </win64> </dynamic-lib> src/main/resources/lib/win64/sdk/AudioRender.dllBinary files differ
src/main/resources/lib/win64/sdk/GdiPlus.dllBinary files differ
src/main/resources/lib/win64/sdk/HCCore.dllBinary files differ
src/main/resources/lib/win64/sdk/HCNetSDK.dllBinary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/AnalyzeData.dllBinary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/AudioIntercom.dllBinary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/AudioRender.dllBinary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCAlarm.dllBinary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCAlarm.libBinary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCCoreDevCfg.dllBinary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCDisplay.dllBinary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCGeneralCfgMgr.dllBinary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCGeneralCfgMgr.libBinary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCIndustry.dllBinary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCPlayBack.dllBinary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCPreview.dllBinary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCPreview.libBinary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/HCVoiceTalk.dllBinary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/OpenAL32.dllBinary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/StreamTransClient.dllBinary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/SystemTransform.dllBinary files differ
src/main/resources/lib/win64/sdk/HCNetSDKCom/libiconv2.dllBinary files differ
src/main/resources/lib/win64/sdk/HXVA.dllBinary files differ
src/main/resources/lib/win64/sdk/HmMerge.dllBinary files differ
src/main/resources/lib/win64/sdk/ImageAlg.dllBinary files differ
src/main/resources/lib/win64/sdk/Infra.dllBinary files differ
src/main/resources/lib/win64/sdk/IvsDrawer.dllBinary files differ
src/main/resources/lib/win64/sdk/MP_Render.dllBinary files differ
src/main/resources/lib/win64/sdk/NPQos.dllBinary files differ
src/main/resources/lib/win64/sdk/OpenAL32.dllcopy from lib/HCNetSDKCom/OpenAL32.dll copy to src/main/resources/lib/win64/sdk/OpenAL32.dll Binary files differ
src/main/resources/lib/win64/sdk/PlayCtrl.dllBinary files differ
src/main/resources/lib/win64/sdk/RenderEngine.dllBinary files differ
src/main/resources/lib/win64/sdk/StreamConvertor.dllBinary files differ
src/main/resources/lib/win64/sdk/SuperRender.dllBinary files differ
src/main/resources/lib/win64/sdk/YUVProcess.dllBinary files differ
src/main/resources/lib/win64/sdk/avnetsdk.dllBinary files differ
src/main/resources/lib/win64/sdk/dhconfigsdk.dllBinary files differ
src/main/resources/lib/win64/sdk/dhnetsdk.dllBinary files differ
src/main/resources/lib/win64/sdk/dhplay.dllBinary files differ
src/main/resources/lib/win64/sdk/hlog.dllBinary files differ
src/main/resources/lib/win64/sdk/hpr.dllBinary files differ
src/main/resources/lib/win64/sdk/libcrypto-1_1-x64.dllBinary files differ
src/main/resources/lib/win64/sdk/libmmd.dllBinary files differ
src/main/resources/lib/win64/sdk/libssl-1_1-x64.dllBinary files differ
src/main/resources/lib/win64/sdk/zlib1.dllBinary files differ