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
File was deleted 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
Diff too large src/main/java/com/ard/utils/sdk/DynamicParseUtil.java
New file @@ -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
New file @@ -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
New file @@ -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