Commit 68f8dcfe authored by 高飞's avatar 高飞

init

parents
*.js linguist-language=Java
*.css linguist-language=Java
*.html linguist-language=Java
The MIT License (MIT)
Copyright (c) 2018 杨东川
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
# Excel_To_DB
一款将Excel表格中的数据导入至数据库中的小工具,SpringBoot+EasyPoi+Redis消息队列实现Excel批量异步导入数据库
详细介绍:
1. [【Excel_To_DB】SpringBoot+EasyPoi+Redis消息队列实现Excel批量异步导入数据库(一)](http://blog.csdn.net/yangdongchuan1995/article/details/79277834)
2. [【Excel_To_DB】SpringBoot+EasyPoi+Redis消息队列实现Excel批量异步导入数据库(二)](http://blog.csdn.net/YangDongChuan1995/article/details/79285341)
3. [【Excel_To_DB】SpringBoot+EasyPoi+Redis消息队列实现Excel批量异步导入数据库(三)](http://blog.csdn.net/yangdongchuan1995/article/details/79290027)
<?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="Spring" name="Spring">
<configuration />
</facet>
<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>
</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-web:1.5.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:1.5.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:1.5.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:1.5.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:1.5.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.1.11" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.1.11" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.25" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:log4j-over-slf4j:1.7.25" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.17" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:1.5.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:8.5.27" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-annotations-api:8.5.27" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:8.5.27" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:8.5.27" level="project" />
<orderEntry type="library" name="Maven: org.hibernate:hibernate-validator:5.3.6.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.1.Final" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml:classmate:1.3.4" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.8.10" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-web:4.3.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-aop:4.3.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-beans:4.3.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context:4.3.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-webmvc:4.3.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:4.3.14.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:1.5.10.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:1.5.10.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:1.5.10.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.2.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.2.1" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:1.1" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.ow2.asm:asm:5.0.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.12" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:2.6.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:1.10.19" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.1" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-library:1.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.4.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-core:4.3.14.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:4.3.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-thymeleaf:1.5.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.thymeleaf:thymeleaf-spring4:2.1.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.thymeleaf:thymeleaf:2.1.6.RELEASE" level="project" />
<orderEntry type="library" name="Maven: ognl:ognl:3.0.8" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.21.0-GA" level="project" />
<orderEntry type="library" name="Maven: org.unbescape:unbescape:1.1.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.groovy:groovy:2.4.13" level="project" />
<orderEntry type="library" name="Maven: org.projectlombok:lombok:1.16.20" level="project" />
<orderEntry type="library" name="Maven: cn.afterturn:easypoi-base:3.0.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi:3.15" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:3.15" level="project" />
<orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.04" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:3.15" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:2.6.0" level="project" />
<orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:guava:16.0.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.2.1" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.25" level="project" />
<orderEntry type="library" name="Maven: javax.validation:validation-api:1.1.0.Final" level="project" />
<orderEntry type="library" name="Maven: cn.afterturn:easypoi-web:3.0.3" level="project" />
<orderEntry type="library" name="Maven: cn.afterturn:easypoi-annotation:3.0.3" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.1" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:1.5.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-jdbc:8.5.27" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-juli:8.5.27" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jdbc:4.3.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:1.3.1" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis:3.4.5" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:1.3.1" level="project" />
<orderEntry type="library" name="Maven: com.oracle:ojdbc6:11.2.0.3" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:druid:1.1.7" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:1.5.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-redis:1.8.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-keyvalue:1.2.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:1.13.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-tx:4.3.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-oxm:4.3.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context-support:4.3.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.25" level="project" />
<orderEntry type="library" name="Maven: redis.clients:jedis:2.9.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.4.3" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.38" level="project" />
<orderEntry type="library" name="Maven: log4j:log4j:1.2.12" level="project" />
<orderEntry type="library" name="Maven: commons-httpclient:commons-httpclient:3.1" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.0.4" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.10" level="project" />
<orderEntry type="library" name="Maven: org.apache.thrift:libthrift:0.13.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.5" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.9" level="project" />
<orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.3.2" level="project" />
<orderEntry type="library" name="Maven: commons-net:commons-net:3.6" level="project" />
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.2" level="project" />
<orderEntry type="library" name="Maven: tk.mybatis:mapper-base:1.1.5" level="project" />
<orderEntry type="library" name="Maven: javax.persistence:persistence-api:1.0" level="project" />
<orderEntry type="library" name="Maven: tk.mybatis:mapper-core:1.1.5" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:4.1.21" level="project" />
<orderEntry type="library" name="Maven: org.java-websocket:Java-WebSocket:1.3.8" level="project" />
<orderEntry type="library" name="Maven: commons-io:commons-io:2.6" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-joda:2.9.6" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.8.0" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.8.10" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.9.9" level="project" />
</component>
</module>
\ No newline at end of file
<?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="Spring" name="Spring">
<configuration />
</facet>
<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>
</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-web:1.5.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:1.5.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:1.5.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:1.5.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:1.5.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.1.11" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.1.11" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.25" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:log4j-over-slf4j:1.7.25" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.17" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:1.5.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:8.5.27" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-annotations-api:8.5.27" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:8.5.27" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:8.5.27" level="project" />
<orderEntry type="library" name="Maven: org.hibernate:hibernate-validator:5.3.6.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.1.Final" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml:classmate:1.3.4" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.8.10" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-web:4.3.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-aop:4.3.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-beans:4.3.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context:4.3.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-webmvc:4.3.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:4.3.14.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:1.5.10.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:1.5.10.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:1.5.10.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.2.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.2.1" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:1.1" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.ow2.asm:asm:5.0.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.12" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:2.6.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:1.10.19" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.1" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-library:1.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.4.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-core:4.3.14.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:4.3.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.projectlombok:lombok:1.16.20" level="project" />
<orderEntry type="library" name="Maven: cn.afterturn:easypoi-base:3.0.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi:3.15" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:3.15" level="project" />
<orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.04" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:3.15" level="project" />
<orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:2.6.0" level="project" />
<orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:guava:16.0.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.2.1" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.25" level="project" />
<orderEntry type="library" name="Maven: javax.validation:validation-api:1.1.0.Final" level="project" />
<orderEntry type="library" name="Maven: cn.afterturn:easypoi-web:3.0.3" level="project" />
<orderEntry type="library" name="Maven: cn.afterturn:easypoi-annotation:3.0.3" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.1" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:1.5.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-jdbc:8.5.27" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-juli:8.5.27" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jdbc:4.3.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:1.3.1" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis:3.4.5" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:1.3.1" level="project" />
<orderEntry type="library" name="Maven: com.oracle:ojdbc6:11.2.0" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:druid:1.1.7" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:1.5.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-redis:1.8.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-keyvalue:1.2.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:1.13.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-tx:4.3.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-oxm:4.3.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context-support:4.3.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.25" level="project" />
<orderEntry type="library" name="Maven: redis.clients:jedis:2.9.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.4.3" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.38" level="project" />
<orderEntry type="library" name="Maven: log4j:log4j:1.2.12" level="project" />
<orderEntry type="library" name="Maven: commons-httpclient:commons-httpclient:3.1" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.0.4" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.10" level="project" />
<orderEntry type="library" name="Maven: org.apache.thrift:libthrift:0.13.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.5" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.9" level="project" />
<orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.3.2" level="project" />
<orderEntry type="library" name="Maven: commons-net:commons-net:3.6" level="project" />
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.2" level="project" />
<orderEntry type="library" name="Maven: tk.mybatis:mapper-base:1.1.5" level="project" />
<orderEntry type="library" name="Maven: javax.persistence:persistence-api:1.0" level="project" />
<orderEntry type="library" name="Maven: tk.mybatis:mapper-spring-boot-starter:2.1.5" level="project" />
<orderEntry type="library" name="Maven: tk.mybatis:mapper-weekend:1.1.5" level="project" />
<orderEntry type="library" name="Maven: tk.mybatis:mapper-spring:1.1.5" level="project" />
<orderEntry type="library" name="Maven: tk.mybatis:mapper-extra:1.1.5" level="project" />
<orderEntry type="library" name="Maven: tk.mybatis:mapper-spring-boot-autoconfigure:2.1.5" level="project" />
<orderEntry type="library" name="Maven: tk.mybatis:mapper-core:1.1.5" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:4.1.21" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-websocket:1.5.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-messaging:4.3.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-websocket:4.3.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: commons-io:commons-io:2.6" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-joda:2.9.6" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.8.0" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.8.10" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.9.9" level="project" />
<orderEntry type="library" name="Maven: commons-dbcp:commons-dbcp:1.4" level="project" />
<orderEntry type="library" name="Maven: commons-pool:commons-pool:1.5.4" level="project" />
<orderEntry type="module-library">
<library name="Maven: jms:aqapi_g:1">
<CLASSES>
<root url="jar://$MODULE_DIR$/lib/aqapi_g.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library name="Maven: jms:jmscommon:1">
<CLASSES>
<root url="jar://$MODULE_DIR$/lib/jmscommon.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library name="Maven: jms:jta:1">
<CLASSES>
<root url="jar://$MODULE_DIR$/lib/jta.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library name="Maven: jms:ojdbc6:1">
<CLASSES>
<root url="jar://$MODULE_DIR$/lib/ojdbc6.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
</component>
</module>
\ No newline at end of file
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com</groupId>
<artifactId>hzjt</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>hzjt</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.10.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- easypoi -->
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>3.0.3</version>
</dependency>
<!-- mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<!-- oracle -->
<!-- 数据库相关, 驱动、mybatis、分页插件 -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0</version>
</dependency>
<!-- 连接池druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.7</version>
</dependency>
<!-- redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.38</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>org.apache.thrift</groupId>
<artifactId>libthrift</artifactId>
<version>0.13.0</version>
</dependency>
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.6</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-base</artifactId>
<version>1.1.5</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-core</artifactId>
<version>1.1.5</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.1.21</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-joda</artifactId>
<version>2.9.6</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>1.5.4</version>
</dependency>
<dependency>
<groupId>jms</groupId>
<artifactId>aqapi_g</artifactId>
<version>1</version>
<scope>system</scope>
<systemPath>${pom.basedir}/lib/aqapi_g.jar</systemPath>
</dependency>
<dependency>
<groupId>jms</groupId>
<artifactId>jmscommon</artifactId>
<version>1</version>
<scope>system</scope>
<systemPath>${pom.basedir}/lib/jmscommon.jar</systemPath>
</dependency>
<dependency>
<groupId>jms</groupId>
<artifactId>jta</artifactId>
<version>1</version>
<scope>system</scope>
<systemPath>${pom.basedir}/lib/jta.jar</systemPath>
</dependency>
<dependency>
<groupId>jms</groupId>
<artifactId>ojdbc6</artifactId>
<version>1</version>
<scope>system</scope>
<systemPath>${pom.basedir}/lib/ojdbc6.jar</systemPath>
</dependency>
<!-- <dependency>-->
<!-- <groupId>jms</groupId>-->
<!-- <artifactId>orai18n</artifactId>-->
<!-- <version>1</version>-->
<!-- <scope>system</scope>-->
<!-- <systemPath>${basedir}/lib/orai18n.jar</systemPath>-->
<!-- </dependency>-->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
<!-- <plugin>-->
<!-- <artifactId>maven-assembly-plugin</artifactId>-->
<!-- <configuration>-->
<!-- <archive>-->
<!-- <manifest>-->
<!-- <mainClass>com.allen.capturewebdata.Main</mainClass>-->
<!-- </manifest>-->
<!-- </archive>-->
<!-- <descriptorRefs>-->
<!-- <descriptorRef>jar-with-dependencies</descriptorRef>-->
<!-- </descriptorRefs>-->
<!-- </configuration>-->
<!-- </plugin>-->
</plugins>
</build>
</project>
package com.hzjt;
import com.hzjt.redis.Receiver;
import com.hzjt.util.Constant;
import tk.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.PropertySource;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.listener.PatternTopic;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.data.redis.listener.adapter.MessageListenerAdapter;
@SpringBootApplication
@ServletComponentScan
@MapperScan("com.hzjt.mapper")
@PropertySource("file:${spring.profiles.path}")
public class HZJTApplication {
@Bean
RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapterSingle, MessageListenerAdapter listenerAdapterList) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
// 注入多个消息监听器(receiveSingle/receiveList)
container.addMessageListener(listenerAdapterSingle, new PatternTopic(Constant.receiveSingle));
container.addMessageListener(listenerAdapterList, new PatternTopic(Constant.receiveList));
return container;
}
@Bean
MessageListenerAdapter listenerAdapterSingle(Receiver receiver) {
return new MessageListenerAdapter(receiver, Constant.singleMethodName);
}
@Bean
MessageListenerAdapter listenerAdapterList(Receiver receiver) {
return new MessageListenerAdapter(receiver, Constant.listMethodName);
}
@Bean
Receiver receiver() {
return new Receiver();
}
@Value("${ip.host}")
private String ip;
//
// @Bean
// public RestTemplate restTemplate(RestTemplateBuilder builder) {
// // Do any additional configuration here
// return builder.build();
// }
// @Bean
// public WebSocketClient webSocketClient() {
//
// List<WebSocketClient> list=new ArrayList<>();
//
// String[] ips = iptr.split(",");
// for (String ip : ips) {
// try {
// MyWebSocketClient client = new MyWebSocketClient(new URI("ws://" + ip + "8001/api/message/sub/traffic-incident/alarm"));
// client.connect();
// if (!client.getReadyState().equals(WebSocket.READYSTATE.OPEN)) {
// //连接失败,重新连接
// client.connect();
// list.add(client);
// }
//
// } catch (URISyntaxException e) {
// e.printStackTrace();
// }
//
// }
// return list;
// }
// @Bean
// public WebSocketClient webSocketClient() {
// try {
// MyWebSocketClient client = new MyWebSocketClient(new URI("ws://" + ip + ":8001/api/message/sub/traffic-incident/alarm"));
//// MyWebSocketClient client = new MyWebSocketClient(new URI("ws://local" + ip + "8001/api/message/sub/traffic-incident/alarm"));
////
// if (!client.isOpen()) {
// if (client.getReadyState().equals(WebSocket.READYSTATE.NOT_YET_CONNECTED)) {
// try {
// client.connect();
// } catch (IllegalStateException e) {
// }
// } else if (client.getReadyState().equals(WebSocket.READYSTATE.CLOSING) || client.getReadyState().equals(WebSocket.READYSTATE.CLOSED)) {
// client.reconnect();
// }
// }
// return client;
//
// } catch (URISyntaxException e) {
// e.printStackTrace();
// }
// return null;
// }
public static void main(String[] args) {
// ConfigurableApplicationContext applicationContext=SpringApplication.run(HZJTApplication.class,args);
// WebSocket.setApplicationContext(applicationContext);
SpringApplication.run(HZJTApplication.class,args);
}
}
package com.hzjt.config;
import cn.hutool.json.JSONUtil;
import com.hzjt.domain.*;
import com.hzjt.util.JsonUtil;
import lombok.extern.slf4j.Slf4j;
import oracle.jms.AQjmsAdtMessage;
import oracle.jms.AQjmsDestination;
import oracle.jms.AQjmsFactory;
import oracle.jms.AQjmsSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import javax.jms.*;
import javax.jms.Message;
import javax.jms.Queue;
import java.util.*;
//
@Component
@Slf4j
public class JMS_Oracle implements CommandLineRunner {
@Autowired
JmsConfig config;
@Autowired
private RestTemplate restTemplate;
// @Autowired
// private RestTemplate restTemplate;
@Override
public void run(String... strings) {
try {
QueueConnectionFactory queueConnectionFactory = AQjmsFactory.getQueueConnectionFactory(config.getJdbcUrl(),
new Properties());
QueueConnection conn = queueConnectionFactory.createQueueConnection(config.getUsername(), config.getPassword());
AQjmsSession session = (AQjmsSession) conn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
conn.start();
Queue queue = (AQjmsDestination) session.getQueue(config.getUsername(), config.getQueueName());
MessageConsumer consumer = session.createConsumer(queue, null, QUEUE_MESSAGE_TYPE.getFactory(), null, false);
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
AQjmsAdtMessage adtMessage = (AQjmsAdtMessage) message;
try {
QUEUE_MESSAGE_TYPE payload = (QUEUE_MESSAGE_TYPE) adtMessage.getAdtPayload();
//查询traffconfig 的相关信息推送给第三方数据
//20200604202047023009_1 rtsp://33.52.1.223:5544/1_20200604202047023009_0_0 rtmp://33.51.6.98:1935/live/room24 http://33.51.6.98/live/room?port=1935&app=live&stream=room24
//调用restful 接口直接将数据新增或者更新到python 表中
// {"name":"20200305112026668_1","rtsp_address":"rtsp://33.55.1.81:5544/1_20200305112026668_0_0","rtmp_address":"rtmp://33.51.6.98:1935/live/room954","http_flv_address":"http://33.51.6.98/live/room?port=1935&app=live&stream=room954"}
String msg = payload.getContent();
if (msg.indexOf(",") >= 0) {
String videoid = msg.split(",")[0];
String rtsp = msg.split(",")[1];
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
//查询监控是否存在
PythonQueryResult result = restTemplate.getForObject("http://33.51.6.96:" + 5000 + "/rest/video/query/" + videoid, PythonQueryResult.class);
String[][] list = result.getData();
Rtsprtmp rtmp = new Rtsprtmp();
String id = UUID.randomUUID().toString();
rtmp.setHttp_flv_address("http://33.51.6.98/live/room?port=1935&app=live&stream=room" + id);
rtmp.setName(videoid);
rtmp.setRtsp_address(rtsp);
rtmp.setRtmp_address("rtmp://33.51.6.98:1935/live/room" + id);
//重新拼接rtsp,rtmp
List<Rtsprtmp> rtmplist = new ArrayList<>();
rtmplist.add(rtmp);
HttpEntity<String> requestEntity = new HttpEntity<>(JSONUtil.toJsonStr(rtmplist), headers);
if (null != list && list.length > 0 && list[0].length > 0) {
for (String[] items : list) {
//删除已有的
PythonResult ltObj = restTemplate.getForObject("http://33.51.6.96:" + 5000 + "/rest/video/delete/" + items[0], PythonResult.class);
if (ltObj.getData() != 1 && ltObj.getError() != null) {
log.info(items[0] + "删除失败" + videoid + "rtsp=" + rtsp + "error");
}
}
PythonResult result1 = restTemplate.postForObject("http://33.51.6.96:" + 5000 + "/rest/video/add", requestEntity, PythonResult.class);
if (null != result1.getError()) {
log.info(videoid + "rtsp=" + rtsp + "error");
}
} else {
PythonResult result2 = restTemplate.postForObject("http://33.51.6.96:" + 5000 + "/rest/video/add", requestEntity, PythonResult.class);
if (null != result2.getError()) {
log.info(videoid + "rtsp=" + rtsp + "error");
}
}
}
} catch (Exception e) {
log.info("rtsp=error" + e.toString());
}
}
});
} catch (Exception e) {
log.info("rtsp=error" + e.toString());
}
}
}
package com.hzjt.config;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@Data
public class JmsConfig {
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
@Value("${spring.datasource.url}")
private String jdbcUrl;
@Value("${jms.queueName}")
private String queueName;
}
\ No newline at end of file
package com.hzjt.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate(ClientHttpRequestFactory factory){
return new RestTemplate(factory);
}
@Bean
public ClientHttpRequestFactory simpleClientHttpRequestFactory(){
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setConnectTimeout(15000);
factory.setReadTimeout(5000);
return factory;
}
}
\ No newline at end of file
package com.hzjt.config;
import com.hzjt.handler.WebSocket;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.net.URI;
/**
* 定时任务
*
* @author tycoding
* @date 2019-06-17
*/
//@Slf4j
//@Component
//@Configuration
//@EnableScheduling
public class ScheduleTaskConfig {
// private static final Long MINUTE_30 = 1000 * 60 * 30L;
//
//// @Value("${ip.host}")
//// private String iptr;
//
// @Scheduled(cron = "59 * * * * ?")//每59s 触发一次
// private void reconnectWebsocket() {
//
//// WebSocket webSocket=new WebSocket();
// //根据连接的name ,群发根据videoid 查询的结果
//
//
//
//// String[] ips = iptr.split(",");
//// for (String ip : ips) {
//// try {
////// MyWebSocketClient client = new MyWebSocketClient(new URI("ws://" + ip + "8001/api/message/sub/traffic-incident/alarm"));
////// if (!client.isOpen()) {
////// if (client.getReadyState().equals(WebSocket.READYSTATE.NOT_YET_CONNECTED)) {
////// try {
////// client.connect();
////// } catch (IllegalStateException e) {
////// }
////// } else if (client.getReadyState().equals(WebSocket.READYSTATE.CLOSING) || client.getReadyState().equals(WebSocket.READYSTATE.CLOSED)) {
////// client.reconnect();
////// }
////// }
////
////
//// }catch (Exception ex){
////
////
//// }
// } private static final Long MINUTE_30 = 1000 * 60 * 30L;
//
//// @Value("${ip.host}")
//// private String iptr;
//
// @Scheduled(cron = "59 * * * * ?")//每59s 触发一次
// private void reconnectWebsocket() {
//
//// WebSocket webSocket=new WebSocket();
// //根据连接的name ,群发根据videoid 查询的结果
//
//
//
//// String[] ips = iptr.split(",");
//// for (String ip : ips) {
//// try {
////// MyWebSocketClient client = new MyWebSocketClient(new URI("ws://" + ip + "8001/api/message/sub/traffic-incident/alarm"));
////// if (!client.isOpen()) {
////// if (client.getReadyState().equals(WebSocket.READYSTATE.NOT_YET_CONNECTED)) {
////// try {
////// client.connect();
////// } catch (IllegalStateException e) {
////// }
////// } else if (client.getReadyState().equals(WebSocket.READYSTATE.CLOSING) || client.getReadyState().equals(WebSocket.READYSTATE.CLOSED)) {
////// client.reconnect();
////// }
////// }
////
////
//// }catch (Exception ex){
////
////
//// }
// }
}
package com.hzjt.config;
import org.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.task.TaskExecutor;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
@Configuration
@EnableAsync
public class ThreadPoolConfig {
@Bean
public TaskExecutor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
// 设置核心线程数
executor.setCorePoolSize(5);
// 设置最大线程数
executor.setMaxPoolSize(10);
// 设置队列容量
executor.setQueueCapacity(20);
// 设置线程活跃时间(秒)
executor.setKeepAliveSeconds(60);
// 设置默认线程名称
executor.setThreadNamePrefix("hello-");
// 设置拒绝策略
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
// 等待所有任务结束后再关闭线程池
executor.setWaitForTasksToCompleteOnShutdown(true);
return executor;
}
}
package com.hzjt.config;
import com.hzjt.handler.WebSocket;
import com.hzjt.service.TraffFlowService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
@Configuration
public class WebSocketConfig {
/**
* ServerEndpointExporter 作用
*
* 这个Bean会自动注册使用@ServerEndpoint注解声明的websocket endpoint
*
* @return
*/
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
@Autowired
public void setTraffFlowService(TraffFlowService service)
{
WebSocket.traffFlowService=service;
}
}
\ No newline at end of file
package com.hzjt.controller;
import com.hzjt.domain.ResultObj;
import com.hzjt.domain.Traffalarmrecord;
import com.hzjt.service.EventWriteService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
@RestController
public class EventWriteController {
@Autowired
private EventWriteService eventWriteService;
@PostMapping("/sendEvent")
public ResultObj sendEvent(Long recordid){
return eventWriteService.sendEvent(recordid);
}
@PostMapping("/sendEvents")
public List<ResultObj> sendEvents(@RequestParam("recordid") String recordid){
List<Long> longrecorid=new ArrayList<>();
for(String id:recordid.split(","))
{
longrecorid.add(Long.valueOf(id));
}
return eventWriteService.sendEvents(longrecorid);
}
@GetMapping("/sendEventsByids")
public List<ResultObj> sendEventsByids(){
List<Long> recordid=new ArrayList<>();
recordid.add(Long.valueOf(93228));
recordid.add(Long.valueOf(93834));
return eventWriteService.sendEvents(recordid);
}
}
package com.hzjt.controller;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.Set;
/**
* 路由接口控制器
*
* @author tycoding
* @date 2019-06-13
*/
@Slf4j
@Controller
public class RouterController {
@Autowired
private StringRedisTemplate redisTemplate;
/**
* 登陆页面
*
* @return
*/
@GetMapping("/")
public String index() {
return "login";
}
/**
* 首页入口
*
* @return
*/
@GetMapping("/{id}/chat")
public String index(@PathVariable("id") String id) {
return "index";
}
}
package com.hzjt.controller;
import com.google.common.util.concurrent.RateLimiter;
import com.hzjt.domain.*;
import com.hzjt.handler.WebSocket;
import com.hzjt.mapper.SbtdspsrMapper;
import com.hzjt.service.ImportService;
import com.hzjt.service.TraffFlowService;
import com.hzjt.util.DateUtils;
import com.hzjt.util.JsonUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
@RestController
public class TraffController {
@Autowired
ImportService importService;
@Autowired
WebSocket webSocket;
private Map<String, RateLimiter> rateLimiterMap;
private String port;
private String dept;
private Integer rate = 10;
private SbtdspsrMapper sbtdspsrMapper;
@Autowired
TraffFlowService traffFlowService;
// @Autowired
// private SimpMessagingTemplate template;
private static final String TYPE = "TRAFFIC_INCIDENT_ALARM";
private static final Logger log = LoggerFactory.getLogger(TraffController.class);
@Autowired
public TraffController(
@Value("${port}") String port,
@Value("${message.dept}") String dept,
@Value("${message.rate}") Integer rate, SbtdspsrMapper sbtdspsrMapper) {
this.port = port;
this.rate = rate;
this.dept = dept.substring(0, 5);
this.sbtdspsrMapper = sbtdspsrMapper;
rateLimiterMap = new ConcurrentHashMap<>(16);
}
@PostMapping("/alarmevent")
public ResultObj rece(@RequestBody Alarm trffClientMessage) {
log.debug("/event/receive接收到数据:" + trffClientMessage.toString());
if (!TYPE.equals(trffClientMessage.getType())) {
log.info("type类型不正确" + trffClientMessage.toString());
return ResultObj.error(ResponseEnum.E_1002.getCode(), "type类型不正确");
}
log.debug("/event/receive data:" + trffClientMessage.toString());
if (trffClientMessage.getImg_urls().isEmpty()) {
log.info("img_urls值不能为空" + trffClientMessage.toString());
return ResultObj.error(ResponseEnum.E_1004.getCode(), "img_urls值不能为空");
}
if (StringUtils.isBlank(trffClientMessage.getIncident_type())) {
log.info("incident_type值不能为空" + trffClientMessage.toString());
return ResultObj.error(ResponseEnum.E_1004.getCode(), "incident_type值不能为空");
}
String videoId = trffClientMessage.getVideo_id();
if (StringUtils.isBlank(videoId) || !videoId.contains("_") || videoId.split("_").length != 2) {
log.info("video_id值异常 值为:" + videoId);
return ResultObj.error(ResponseEnum.E_1002.getCode(), "video_id值异常 值为:" + videoId);
}
/* 限流 */
if (!getRateLimiter(videoId).tryAcquire()) {
log.info("[事件推送]->设备" + videoId + "-推送已达到限流限制");
return ResultObj.error(ResponseEnum.E_9999.getCode(), "设备" + videoId + "请求过于频繁");
}
String[] sbAndTd = videoId.split("_");
String sbbh = sbAndTd[0];
int tdbh = Integer.valueOf(sbAndTd[1]) + 1;
List<Sbtdspsr> sbtdspsrs = sbtdspsrMapper.selectBySbbh(sbbh, tdbh);
if (sbtdspsrs.isEmpty()) {
log.info("设备为:" + sbbh + ",通道为:" + tdbh + "未录入(备案)");
return ResultObj.error(ResponseEnum.E_1002.getCode(), "设备为:" + sbbh + ",通道为:" + tdbh + "未录入(备案)");
}
String xzbh = sbtdspsrs.get(0).getXzbh();
if (xzbh.length() != 12) {
log.info("设备为:" + sbbh + ",通道为:" + tdbh + "配置的行政区划" + xzbh + "不合规");
return ResultObj.error(ResponseEnum.E_1002.getCode(), "设备为:" + sbbh + ",通道为:" + tdbh + "配置的行政区划不合规");
}
//ts 時間轉成正常時間
trffClientMessage.setDept(xzbh);
Map map = new HashMap();
map.put("type", "alarm");
map.put("data", trffClientMessage);
WebSocket.GroupSending(JsonUtil.beanToString(map));
try { // 清空redis中的部分旧数据
importService.cleanCache();
// 将参数result中的部分数据存入redis中,并把格式校验成功的数据发布至对应频道中
importService.cacheAndPublish(JsonUtil.beanToString(trffClientMessage));
} catch (Exception e) {
log.error("MessageController receive putData error:" + e.toString());
//return ResultObj.error(ResponseEnum.E_9999.getCode(), e.toString());
}
return ResultObj.ok(trffClientMessage);
}
private RateLimiter getRateLimiter(String videoId) {
RateLimiter rateLimiter;
if (rateLimiterMap.containsKey(videoId)) {
rateLimiter = rateLimiterMap.get(videoId);
} else {
RateLimiter value = RateLimiter.create(rate);
rateLimiter = rateLimiterMap.putIfAbsent(videoId, value);
if (rateLimiter == null) {
rateLimiter = value;
}
}
return rateLimiter;
}
//车流量推送
@PostMapping("/traffflow")
public ResultObj traffflow(@RequestBody Vehicles vehicles) {
if ("TRAFFIC_STATISTICS_VEHICLES".equalsIgnoreCase(vehicles.getType())) {
String time=DateUtils.formatDate(new Date(Long.valueOf(vehicles.getTs())));
vehicles.setTs(time);
String[] sbAndTd = vehicles.getVideo_id().split("_");
String sbbh = sbAndTd[0];
int tdbh = Integer.valueOf(sbAndTd[1]) + 1;
//重置videoid
vehicles.setVideo_id(sbbh+"_"+tdbh);
log.debug("/event/receive接收到数据:" + vehicles.toString());
//直接放入表中
traffFlowService.saveTraffFlow(vehicles);
List<Vehiclesdetail> vels=vehicles.getObjs() ;
for(Vehiclesdetail detail : vels){
log.info(detail.toString());
detail.setObj_id(UUID.randomUUID().toString());
detail.setVehiclesid(vehicles.getId());
traffFlowService.saveTraffFlowDetail(detail);
}
//查询近五分钟的车流量,当天车流量websocket 直接推送过去
log.info("schedule >>>>>>>>>> WebSocket");
//根据连接的name ,群发根据videoid 查询的结果
webSocket.GroupSendingByVideoid(vehicles.getVideo_id());
}
return ResultObj.ok();
}
//获取自动规则
@PostMapping("/autoRule")
public ResultObj autoRule(@RequestBody AutoRule rules) {
// log.info(rules.toString());
Map map = new HashMap();
map.put("type", "rule");
map.put("data", rules);
webSocket.AppointSending(rules.getVideo_id(),JsonUtil.beanToString(map));
return ResultObj.ok();
}
//获取自动规则
@GetMapping("/test")
public ResultObj autoRule() {
AutoRule rule=new AutoRule();
Map<String, BigDecimal> v=new HashMap<>();
v.put("x",BigDecimal.valueOf(111.2));
v.put("y",BigDecimal.valueOf(64.09232));
Map<String, BigDecimal> v1=new HashMap();
v1.put("x",BigDecimal.valueOf(111.2));
v1.put("y",BigDecimal.valueOf(64.09232));
Map<String, BigDecimal> v2=new HashMap();
v2.put("x",(BigDecimal.valueOf(111.2)));
v2.put("y",BigDecimal.valueOf(64.000923232));
List<Map<String, BigDecimal> > list=new ArrayList<>();
list.add(v);
list.add(v1);
list.add(v2);
List<Map<String, BigDecimal>> list2=new ArrayList<>();
list2.add(v);
list2.add(v1);
list2.add(v2);
List list3=new ArrayList();
list3.add(list);
list3.add(list3);
rule.setRule_area(list3);
//webSocket.AppointSending(rules.getVideo_id(),JsonUtil.beanToString(map));
return ResultObj.ok();
}
}
package com.hzjt.controller;
import com.hzjt.domain.ResultObj;
import com.hzjt.service.TraffdevicewriteresultService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@RestController
@RequestMapping("/traffdevicewriteresult")
public class TraffdevicewriteresultController {
@Autowired
private TraffdevicewriteresultService traffdevicewriteresultService;
/***
* 豸Ϣ
* @param xhs
* @return
*/
@PostMapping("/sendDevices")
public List<ResultObj> sendDevices(@RequestParam("xhs") String xhs){
return traffdevicewriteresultService.sendDevices( Arrays.asList(xhs.split(",")));
}
@GetMapping("/sendDevices")
public List<ResultObj> sendEventsByids(){
List<String> recordid=new ArrayList<>();
recordid.add("5988892e-1dcf-4925-85a7-918e2b101040");
recordid.add("5c606b11-aab4-441e-90c3-70bc26f10733");
return traffdevicewriteresultService.sendDevices(recordid);
}
@RequestMapping("/registall")
public ResultObj registall(HttpServletResponse response) {
return traffdevicewriteresultService.registall(response);
}
}
\ No newline at end of file
package com.hzjt.domain;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
@Data
public class Alarm {
private String type;
private String id;
private String video_id;
private String ts;
private String incident_type;
private List<String> img_urls;
private String video_record_url;
private Map<String, BigDecimal> obj_location;
private List<String> img_base64;
private String dept;
private String objLabel;
}
package com.hzjt.domain;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
@Data
public class AutoRule {
private String video_id;
private String ts;
private List<BigDecimal> rule_area_confidence;
private List<Map<String, BigDecimal>> det_area;
private List<Map<String, List<Map<String, BigDecimal>>>> rule_area;
private BigDecimal det_area_confidence;
}
package com.hzjt.domain;
import java.util.HashMap;
import java.util.Map;
/**
* @author chenl
* @version 1.0
* @date 2020/3/15 10:47
*/
public class CodeConst {
//设备注册
public static final Integer device_regist = 1;
//设备更新
public static final Integer device_update = 2;
//设备下架
public static final Integer device_remove = 3;
//状态报告
public static final Integer device_report = 4;
private static Map<Integer, String> eventType = new HashMap<>();
private static Map<String, Integer> eventTypeQZ = new HashMap<>();
static {
eventType.put(1, "异常停车");
eventType.put(2, "行人/非机动车闯入");
eventType.put(3, "倒行/逆行");
eventType.put(4, "拥堵");
eventType.put(5, "交通事件(事故发生)");
eventType.put(6, "恶劣天气-雨");
eventType.put(7, "恶劣天气-雪");
eventType.put(8, "烟火报警");
eventType.put(9, "烟雾报警");
eventType.put(10, "能见度过低");
eventType.put(11, "异常缓驶");
eventType.put(12, "路面障碍物");
eventType.put(13, "道路施工");
eventType.put(14, "拥堵结束");
eventType.put(15, "缓行结束");
eventType.put(16, "特殊事件");
eventType.put(17, "交通事件(事故行人下车)");
eventType.put(18, "其他事件");
}
static {
eventTypeQZ.put("congestion", 4);// 'congestion', '交通拥堵检测'
eventTypeQZ.put("not_congestion", 14);// 'not_congestion', '拥堵结束'
eventTypeQZ.put("illegal_parking", 1);// 'illegal_parking', '车辆异常停驶检测'
eventTypeQZ.put("wrong_direction", 3);// 'wrong_direction', '倒车/逆行检测'
eventTypeQZ.put("no_motor_ban", 2);// 'no_motor_ban', '行人/非机动车闯入检测'
eventTypeQZ.put("slow_deive", 11);// 'slow_deive', '车辆异常缓行检测'
eventTypeQZ.put("not_slow_deive", 15);// 'not_slow_deive', '缓行结束'
eventTypeQZ.put("single_slow_drive", 11);// 'single_slow_drive', '高速公路车辆单车异常缓行检测'
eventTypeQZ.put("accident", 5);// 'accident', '高速公路交通事故检测'
eventTypeQZ.put("roadworks", 13);// 'roadworks', '高速公路道路施工检测'
eventTypeQZ.put("roadworks_out_of_line", 19);// 'roadworks_out_of_line', '高速公路施工违规检测'
eventTypeQZ.put("severe_weather", 6);// 'severe_weather', '恶劣天气(雨雪)检测'
eventTypeQZ.put("low_visibility", 10);// 'low_visibility', '交通雾天检测'
eventTypeQZ.put("abandoned_object", 12);// 'abandoned_object', '路面障碍物检测'
eventTypeQZ.put("tunnel_fire", 8);// 'tunnel_fire', '高速公路隧道火焰检测'
eventTypeQZ.put("tunnel_smoke", 9);// 'tunnel_smoke', '高速公路隧道烟体检测'
eventTypeQZ.put("outside_fire", 8);// 'outside_fire', '交通室外火焰检测'
eventTypeQZ.put("outside_smoke", 9);// 'outside_smoke', '交通室外烟体检测'
}
public static String getEventType(int type) {
if (eventType.containsKey(type)) {
return eventType.get(type);
}
return null;
}
public static Integer getEventTypeQZ(String type) {
if (eventTypeQZ.containsKey(type)) {
Integer code = eventTypeQZ.get(type);
return code == null ? 18 : code;
}
return 18;
}
}
package com.hzjt.domain;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class DeviceChannelid {
private String deviceid;
private Integer channelid;
}
package com.hzjt.domain;
import lombok.Data;
@Data
public class DeviceWriteParam {
private String deviceID;
private String DeviceType;
private String deviceName;
private String regionID;
private Integer deviceStatus;
private String deviceSupplier;
private Integer dataType;
private Integer RoadType;
private String locationType;
private String locationX;
private String locationY;
private String locationEndX;
private String locationEndY;
private Integer DeviceDirection;
private Integer StartNumK;
private Integer StartNumM;
private String RoadNum;
private String LocationDesc;
private Integer toll;
private String locationID;
private Integer serviceArea;
private Integer rampToll;
private Integer rampServiceArea;
private String rampHubRoad;
private Integer rampHubDirection;
}
package com.hzjt.domain;
import lombok.Data;
/**
* @author chenl
* @version 1.0
* @date 2020/3/15 22:18
*/
@Data
public class EventWriteParam {
private String eventID;
private String eventSource;
private String eventType;
private String occurTime;
private Long regionID;
private String eventDeviceID;
private String eventSupplier;
private String locationType;
private String locationX;
private String locationY;
private String locationEndX;
private String locationEndY;
private String eventProof1;
private String eventProof2;
private String eventProof3;
private String eventProof4;
private String eventProof5;
private String eventvideo1;
}
package com.hzjt.domain;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class Ftp {
private String ftpIp;
private Integer ftpPort;
private String ftpUsername;
private String ftpPassword;
@Override
public String toString() {
return "Ftp{" +
"ftpIp='" + ftpIp + '\'' +
", ftpPort=" + ftpPort +
", ftpUsername='" + ftpUsername + '\'' +
", ftpPassword='" + ftpPassword + '\'' +
'}';
}
}
package com.hzjt.domain;
import java.time.LocalDateTime;
import java.util.UUID;
public class Message extends MyMessage {
private String id = UUID.randomUUID().toString();
private LocalDateTime date = LocalDateTime.now();
private String sender;
private Message() {
}
private Message(String content, MessageType type, String sender) {
super(content, type);
this.sender = sender;
date = LocalDateTime.now();
}
public LocalDateTime getDate() {
return date;
}
public String getSender() {
return sender;
}
public String getId() {
return id;
}
public static class MessageBuilder {
private Message message;
private MessageBuilder(Message message) {
this.message = message;
}
public MessageBuilder withContent(String content) {
message.setContent(content);
return this;
}
public MessageBuilder withType(MessageType type) {
message.setType(type);
return this;
}
public MessageBuilder sentBy(String sender) {
message.sender = sender;
return this;
}
public static MessageBuilder empty() {
return new MessageBuilder(new Message());
}
public static MessageBuilder copyOf(Message message) {
Message newMessage = new Message();
newMessage.setContent(message.getContent());
newMessage.setType(message.getType());
newMessage.date = message.getDate();
newMessage.sender = message.getSender();
newMessage.id = message.getId();
return new MessageBuilder(newMessage);
}
public Message build() {
return message;
}
}
}
package com.hzjt.domain;
import lombok.Getter;
@Getter
public enum MessageEnum {
/* websocketmapkey */
MESSAGE_KEY("message");
private String value;
MessageEnum(String value){
this.value =value;
}
}
package com.hzjt.domain;
public enum MessageType {
INFO, WARNING, ERROR;
}
package com.hzjt.domain;
public class MyMessage {
private String content;
private MessageType type;
public MyMessage() {
}
public MyMessage(String content, MessageType type) {
this.content = content;
this.type = type;
}
protected void setContent(String content) {
this.content = content;
}
protected void setType(MessageType type) {
this.type = type;
}
public String getContent() {
return content;
}
public MessageType getType() {
return type;
}
}
package com.hzjt.domain;
import javax.persistence.Column;
import java.io.Serializable;
public class Ptyh implements Serializable {
@Column(name = "KHBH")
private String khbh;
@Column(name = "YHBH")
private String yhbh;
@Column(name = "SFGLY")
private Long sfgly;
@Column(name = "YHZH")
private String yhzh;
@Column(name = "YHMM")
private String yhmm;
@Column(name = "YHMC")
private String yhmc;
@Column(name = "YHMCPY")
private String yhmcpy;
@Column(name = "YHYXJ")
private Long yhyxj;
@Column(name = "YHLX")
private String yhlx;
@Column(name = "JH")
private String jh;
@Column(name = "ZP")
private String zp;
@Column(name = "GDDH")
private String gddh;
@Column(name = "SJHM")
private String sjhm;
@Column(name = "DH")
private String dh;
@Column(name = "YJDZ")
private String yjdz;
@Column(name = "ZZ")
private String zz;
@Column(name = "MS")
private String ms;
@Column(name = "YHZT")
private Long yhzt;
@Column(name = "SFJS")
private Long sfjs;
@Column(name = "BMBH")
private String bmbh;
@Column(name = "KHDLMTSJTX")
private Long khdlmtsjtx;
@Column(name = "DNKHDXDLKG")
private Long dnkhdxdlkg;
@Column(name = "SJKHDXDLKG")
private Long sjkhdxdlkg;
@Column(name = "DNUSBKEYDLKG")
private Long dnusbkeydlkg;
@Column(name = "DTDXFSZDCS")
private Long dtdxfszdcs;
@Column(name = "YXDLIPSZ")
private String yxdlipsz;
@Column(name = "DQX")
private Long dqx;
@Column(name = "XQX")
private Long xqx;
@Column(name = "KQX")
private Long kqx;
@Column(name = "PQX")
private Long pqx;
@Column(name = "LXHFQX")
private Long lxhfqx;
@Column(name = "LXXZQX")
private Long lxxzqx;
@Column(name = "LXDJQX")
private Long lxdjqx;
@Column(name = "DLDXH")
private String dldxh;
@Column(name = "USBKEYMM")
private String usbkeymm;
@Column(name = "USBKEYBH")
private String usbkeybh;
@Column(name = "YGJPZH")
private String ygjpzh;
@Column(name = "YGJPMM")
private String ygjpmm;
@Column(name = "SFZH")
private String sfzh;
@Column(name = "SFHYZ")
private Long sfhyz;
@Column(name = "SFZX")
private Long sfzx;
@Column(name = "JQJSFW")
private String jqjsfw;
@Column(name = "ZDJQJSFW")
private String zdjqjsfw;
@Column(name = "CJRY")
private String cjry;
@Column(name = "CJRQ")
private String cjrq;
@Column(name = "XGRY")
private String xgry;
@Column(name = "XGRQ")
private String xgrq;
@Column(name = "BZ")
private String bz;
@Column(name = "KZ1")
private Long kz1;
@Column(name = "KZ2")
private Long kz2;
@Column(name = "KZ3")
private String kz3;
@Column(name = "KZ4")
private String kz4;
private static final long serialVersionUID = 1L;
/**
* @return KHBH
*/
public String getKhbh() {
return khbh;
}
/**
* @param khbh
*/
public void setKhbh(String khbh) {
this.khbh = khbh;
}
/**
* @return YHBH
*/
public String getYhbh() {
return yhbh;
}
/**
* @param yhbh
*/
public void setYhbh(String yhbh) {
this.yhbh = yhbh;
}
/**
* @return SFGLY
*/
public Long getSfgly() {
return sfgly;
}
/**
* @param sfgly
*/
public void setSfgly(Long sfgly) {
this.sfgly = sfgly;
}
/**
* @return YHZH
*/
public String getYhzh() {
return yhzh;
}
/**
* @param yhzh
*/
public void setYhzh(String yhzh) {
this.yhzh = yhzh;
}
/**
* @return YHMM
*/
public String getYhmm() {
return yhmm;
}
/**
* @param yhmm
*/
public void setYhmm(String yhmm) {
this.yhmm = yhmm;
}
/**
* @return YHMC
*/
public String getYhmc() {
return yhmc;
}
/**
* @param yhmc
*/
public void setYhmc(String yhmc) {
this.yhmc = yhmc;
}
/**
* @return YHMCPY
*/
public String getYhmcpy() {
return yhmcpy;
}
/**
* @param yhmcpy
*/
public void setYhmcpy(String yhmcpy) {
this.yhmcpy = yhmcpy;
}
/**
* @return YHYXJ
*/
public Long getYhyxj() {
return yhyxj;
}
/**
* @param yhyxj
*/
public void setYhyxj(Long yhyxj) {
this.yhyxj = yhyxj;
}
/**
* @return YHLX
*/
public String getYhlx() {
return yhlx;
}
/**
* @param yhlx
*/
public void setYhlx(String yhlx) {
this.yhlx = yhlx;
}
/**
* @return JH
*/
public String getJh() {
return jh;
}
/**
* @param jh
*/
public void setJh(String jh) {
this.jh = jh;
}
/**
* @return ZP
*/
public String getZp() {
return zp;
}
/**
* @param zp
*/
public void setZp(String zp) {
this.zp = zp;
}
/**
* @return GDDH
*/
public String getGddh() {
return gddh;
}
/**
* @param gddh
*/
public void setGddh(String gddh) {
this.gddh = gddh;
}
/**
* @return SJHM
*/
public String getSjhm() {
return sjhm;
}
/**
* @param sjhm
*/
public void setSjhm(String sjhm) {
this.sjhm = sjhm;
}
/**
* @return DH
*/
public String getDh() {
return dh;
}
/**
* @param dh
*/
public void setDh(String dh) {
this.dh = dh;
}
/**
* @return YJDZ
*/
public String getYjdz() {
return yjdz;
}
/**
* @param yjdz
*/
public void setYjdz(String yjdz) {
this.yjdz = yjdz;
}
/**
* @return ZZ
*/
public String getZz() {
return zz;
}
/**
* @param zz
*/
public void setZz(String zz) {
this.zz = zz;
}
/**
* @return MS
*/
public String getMs() {
return ms;
}
/**
* @param ms
*/
public void setMs(String ms) {
this.ms = ms;
}
/**
* @return YHZT
*/
public Long getYhzt() {
return yhzt;
}
/**
* @param yhzt
*/
public void setYhzt(Long yhzt) {
this.yhzt = yhzt;
}
/**
* @return SFJS
*/
public Long getSfjs() {
return sfjs;
}
/**
* @param sfjs
*/
public void setSfjs(Long sfjs) {
this.sfjs = sfjs;
}
/**
* @return BMBH
*/
public String getBmbh() {
return bmbh;
}
/**
* @param bmbh
*/
public void setBmbh(String bmbh) {
this.bmbh = bmbh;
}
/**
* @return KHDLMTSJTX
*/
public Long getKhdlmtsjtx() {
return khdlmtsjtx;
}
/**
* @param khdlmtsjtx
*/
public void setKhdlmtsjtx(Long khdlmtsjtx) {
this.khdlmtsjtx = khdlmtsjtx;
}
/**
* @return DNKHDXDLKG
*/
public Long getDnkhdxdlkg() {
return dnkhdxdlkg;
}
/**
* @param dnkhdxdlkg
*/
public void setDnkhdxdlkg(Long dnkhdxdlkg) {
this.dnkhdxdlkg = dnkhdxdlkg;
}
/**
* @return SJKHDXDLKG
*/
public Long getSjkhdxdlkg() {
return sjkhdxdlkg;
}
/**
* @param sjkhdxdlkg
*/
public void setSjkhdxdlkg(Long sjkhdxdlkg) {
this.sjkhdxdlkg = sjkhdxdlkg;
}
/**
* @return DNUSBKEYDLKG
*/
public Long getDnusbkeydlkg() {
return dnusbkeydlkg;
}
/**
* @param dnusbkeydlkg
*/
public void setDnusbkeydlkg(Long dnusbkeydlkg) {
this.dnusbkeydlkg = dnusbkeydlkg;
}
/**
* @return DTDXFSZDCS
*/
public Long getDtdxfszdcs() {
return dtdxfszdcs;
}
/**
* @param dtdxfszdcs
*/
public void setDtdxfszdcs(Long dtdxfszdcs) {
this.dtdxfszdcs = dtdxfszdcs;
}
/**
* @return YXDLIPSZ
*/
public String getYxdlipsz() {
return yxdlipsz;
}
/**
* @param yxdlipsz
*/
public void setYxdlipsz(String yxdlipsz) {
this.yxdlipsz = yxdlipsz;
}
/**
* @return DQX
*/
public Long getDqx() {
return dqx;
}
/**
* @param dqx
*/
public void setDqx(Long dqx) {
this.dqx = dqx;
}
/**
* @return XQX
*/
public Long getXqx() {
return xqx;
}
/**
* @param xqx
*/
public void setXqx(Long xqx) {
this.xqx = xqx;
}
/**
* @return KQX
*/
public Long getKqx() {
return kqx;
}
/**
* @param kqx
*/
public void setKqx(Long kqx) {
this.kqx = kqx;
}
/**
* @return PQX
*/
public Long getPqx() {
return pqx;
}
/**
* @param pqx
*/
public void setPqx(Long pqx) {
this.pqx = pqx;
}
/**
* @return LXHFQX
*/
public Long getLxhfqx() {
return lxhfqx;
}
/**
* @param lxhfqx
*/
public void setLxhfqx(Long lxhfqx) {
this.lxhfqx = lxhfqx;
}
/**
* @return LXXZQX
*/
public Long getLxxzqx() {
return lxxzqx;
}
/**
* @param lxxzqx
*/
public void setLxxzqx(Long lxxzqx) {
this.lxxzqx = lxxzqx;
}
/**
* @return LXDJQX
*/
public Long getLxdjqx() {
return lxdjqx;
}
/**
* @param lxdjqx
*/
public void setLxdjqx(Long lxdjqx) {
this.lxdjqx = lxdjqx;
}
/**
* @return DLDXH
*/
public String getDldxh() {
return dldxh;
}
/**
* @param dldxh
*/
public void setDldxh(String dldxh) {
this.dldxh = dldxh;
}
/**
* @return USBKEYMM
*/
public String getUsbkeymm() {
return usbkeymm;
}
/**
* @param usbkeymm
*/
public void setUsbkeymm(String usbkeymm) {
this.usbkeymm = usbkeymm;
}
/**
* @return USBKEYBH
*/
public String getUsbkeybh() {
return usbkeybh;
}
/**
* @param usbkeybh
*/
public void setUsbkeybh(String usbkeybh) {
this.usbkeybh = usbkeybh;
}
/**
* @return YGJPZH
*/
public String getYgjpzh() {
return ygjpzh;
}
/**
* @param ygjpzh
*/
public void setYgjpzh(String ygjpzh) {
this.ygjpzh = ygjpzh;
}
/**
* @return YGJPMM
*/
public String getYgjpmm() {
return ygjpmm;
}
/**
* @param ygjpmm
*/
public void setYgjpmm(String ygjpmm) {
this.ygjpmm = ygjpmm;
}
/**
* @return SFZH
*/
public String getSfzh() {
return sfzh;
}
/**
* @param sfzh
*/
public void setSfzh(String sfzh) {
this.sfzh = sfzh;
}
/**
* @return SFHYZ
*/
public Long getSfhyz() {
return sfhyz;
}
/**
* @param sfhyz
*/
public void setSfhyz(Long sfhyz) {
this.sfhyz = sfhyz;
}
/**
* @return SFZX
*/
public Long getSfzx() {
return sfzx;
}
/**
* @param sfzx
*/
public void setSfzx(Long sfzx) {
this.sfzx = sfzx;
}
/**
* @return JQJSFW
*/
public String getJqjsfw() {
return jqjsfw;
}
/**
* @param jqjsfw
*/
public void setJqjsfw(String jqjsfw) {
this.jqjsfw = jqjsfw;
}
/**
* @return ZDJQJSFW
*/
public String getZdjqjsfw() {
return zdjqjsfw;
}
/**
* @param zdjqjsfw
*/
public void setZdjqjsfw(String zdjqjsfw) {
this.zdjqjsfw = zdjqjsfw;
}
/**
* @return CJRY
*/
public String getCjry() {
return cjry;
}
/**
* @param cjry
*/
public void setCjry(String cjry) {
this.cjry = cjry;
}
/**
* @return CJRQ
*/
public String getCjrq() {
return cjrq;
}
/**
* @param cjrq
*/
public void setCjrq(String cjrq) {
this.cjrq = cjrq;
}
/**
* @return XGRY
*/
public String getXgry() {
return xgry;
}
/**
* @param xgry
*/
public void setXgry(String xgry) {
this.xgry = xgry;
}
/**
* @return XGRQ
*/
public String getXgrq() {
return xgrq;
}
/**
* @param xgrq
*/
public void setXgrq(String xgrq) {
this.xgrq = xgrq;
}
/**
* @return BZ
*/
public String getBz() {
return bz;
}
/**
* @param bz
*/
public void setBz(String bz) {
this.bz = bz;
}
/**
* @return KZ1
*/
public Long getKz1() {
return kz1;
}
/**
* @param kz1
*/
public void setKz1(Long kz1) {
this.kz1 = kz1;
}
/**
* @return KZ2
*/
public Long getKz2() {
return kz2;
}
/**
* @param kz2
*/
public void setKz2(Long kz2) {
this.kz2 = kz2;
}
/**
* @return KZ3
*/
public String getKz3() {
return kz3;
}
/**
* @param kz3
*/
public void setKz3(String kz3) {
this.kz3 = kz3;
}
/**
* @return KZ4
*/
public String getKz4() {
return kz4;
}
/**
* @param kz4
*/
public void setKz4(String kz4) {
this.kz4 = kz4;
}
}
\ No newline at end of file
package com.hzjt.domain;
import lombok.Data;
@Data
public class PythonQueryResult {
private String[][] data;
private String error;
}
package com.hzjt.domain;
import lombok.Data;
@Data
public class PythonResult {
private Integer data;
private String error;
}
package com.hzjt.domain;
import oracle.jdbc.driver.OracleConnection;
import oracle.jdbc.internal.OracleTypes;
import oracle.jpub.runtime.MutableStruct;
import oracle.sql.CustomDatum;
import oracle.sql.CustomDatumFactory;
import oracle.sql.Datum;
import oracle.sql.STRUCT;
import java.sql.SQLException;
/**
* @package_Name: com.scale
* @author: wangcy@xxx.qq.com
* @description: TODO
* @date: 2019-08-15 09:14
* @version: v1.0
*/
public class QUEUE_MESSAGE_TYPE implements CustomDatum, CustomDatumFactory {
public static final String _SQL_NAME = "QUEUE_MESSAGE_TYPE";
public static final int _SQL_TYPECODE = OracleTypes.STRUCT;
MutableStruct _struct;
// 12表示字符串
static int[] _sqlType = { 12 };
static CustomDatumFactory[] _factory = new CustomDatumFactory[1];
static final QUEUE_MESSAGE_TYPE _MessageFactory = new QUEUE_MESSAGE_TYPE();
public static CustomDatumFactory getFactory() {
return _MessageFactory;
}
public QUEUE_MESSAGE_TYPE() {
_struct = new MutableStruct(new Object[1], _sqlType, _factory);
}
public Datum toDatum(OracleConnection c) throws SQLException {
return _struct.toDatum(c, _SQL_NAME);
}
public CustomDatum create(Datum d, int sqlType) throws SQLException {
if (d == null)
return null;
QUEUE_MESSAGE_TYPE o = new QUEUE_MESSAGE_TYPE();
o._struct = new MutableStruct((STRUCT) d, _sqlType, _factory);
return o;
}
public String getContent() throws SQLException {
return (String) _struct.getAttribute(0);
}
}
package com.hzjt.domain;
public class ReceiveMessage {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.hzjt.domain;
import lombok.Getter;
/**
* 通用返回值 枚举类
* @author cp
*/
@Getter
public enum ResponseEnum {
/* 错误信息 */
E_1000(1000, "返回值必须为PageResult"),
E_1001(1001, "必须传递分页参数"),
E_1002(1002, "参数值异常"),
E_1003(1003, "参数值转换异常"),
E_1004(1004, "参数值为空"),
/* 保存 更新 重置 删除 等 */
E_1005(1005,"更新失败"),
E_1006(1006,"无结果"),
E_1007(1007,"未登录"),
E_1008(1008,"请求超时"),
E_1009(1009,"请求下游服务异常"),
E_1010(1010,"数据保存失败"),
E_1011(1011,"数据重复"),
E_9999(9999,"系统异常"),
SUCCESS(200,"请求成功");
private int code;
private String msg;
ResponseEnum(int code, String msg) {
this.code = code;
this.msg = msg;
}
}
\ No newline at end of file
package com.hzjt.domain;
public class ResponseMessage {
private String id;
private String name;
private String content;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public ResponseMessage(String id, String name, String content) {
super();
this.id = id;
this.name = name;
this.content = content;
}
}
package com.hzjt.domain;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
/**
* 自定义响应结构
* @author cp
*/
@Getter
@Setter
public class ResultObj {
// 定义jackson对象
private static final ObjectMapper MAPPER = new ObjectMapper();
/**
* 响应业务状态
* 200 成功
* 201 错误
* 400 参数错误
*/
private Integer status;
/**
* 响应消息
*/
private String msg;
/**
* 响应中的数据
*/
private Object data;
public static ResultObj error(Integer status, String msg, Object data) {
return new ResultObj(status, msg, data);
}
public static ResultObj ok(Object data) {
return new ResultObj(data);
}
public static ResultObj ok() {
return ok(null);
}
private ResultObj() {
}
public static ResultObj error(Integer status, String msg) {
return new ResultObj(status, msg, null);
}
private ResultObj(Integer status, String msg, Object data) {
this.status = status;
this.msg = msg;
this.data = data;
}
private ResultObj(Object data) {
this.status = 200;
this.msg = "OK";
this.data = data;
}
/**
* 将json结果集转化为SysResult对象
*
* @param jsonData json数据
* @param clazz SysResult中的object类型
* @return SysResult对象
*/
public static ResultObj formatToPojo(String jsonData, Class<?> clazz) {
try {
if (clazz == null) {
return MAPPER.readValue(jsonData, ResultObj.class);
}
JsonNode jsonNode = MAPPER.readTree(jsonData);
JsonNode data = jsonNode.get("data");
Object obj = null;
if (data.isObject()) {
obj = MAPPER.readValue(data.traverse(), clazz);
} else if (data.isTextual()) {
obj = MAPPER.readValue(data.asText(), clazz);
}
return error(jsonNode.get("status").intValue(), jsonNode.get("msg").asText(), obj);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 没有object对象的转化
*
* @param json 字符串
* @return SysResult对象
*/
public static ResultObj format(String json) {
try {
return MAPPER.readValue(json, ResultObj.class);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* Object是集合转化
*
* @param jsonData json数据
* @param clazz 集合中的类型
* @return SysResult对象
*/
public static ResultObj formatToList(String jsonData, Class<?> clazz) {
try {
JsonNode jsonNode = MAPPER.readTree(jsonData);
JsonNode data = jsonNode.get("data");
Object obj = null;
if (data.isArray() && data.size() > 0) {
obj = MAPPER.readValue(data.traverse(),
MAPPER.getTypeFactory().constructCollectionType(List.class, clazz));
}
return error(jsonNode.get("status").intValue(), jsonNode.get("msg").asText(), obj);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@Override
public String toString() {
return "ResultObj{" +
"status=" + status +
", msg='" + msg + '\'' +
", data=" + data +
'}';
}
}
\ No newline at end of file
package com.hzjt.domain;
import lombok.Data;
import java.io.Serializable;
@Data
public class Rtsprtmp implements Serializable {
private String id;
private String name;
private String rtsp_address;
private String rtmp_address;
private String http_flv_address;
}
\ No newline at end of file
package com.hzjt.domain;
import lombok.Data;
import java.io.Serializable;
@Data
public class Sbtdspsr implements Serializable {
private String xh;
private String sbbh;
private Long tdbh;
private Long tdlx;
private String wbbh;
private String tdmc;
private String tdmcpy;
private Long tdzt;
private String tdazwz;
private String jd;
private String wd;
private Long tpwzx;
private Long tpwzy;
private Long spbmgs;
private Long spxsgs;
private Long ssspsfzzf;
private Long spzt;
private Long lxzt;
private Long lxsfzzf;
private Long spzl;
private Long gjzjg;
private Long ml;
private Long spmlyxgs;
private Long sfzcptzkz;
private String zxcczbh;
private Long zxccxe;
private Long zxccyyrl;
private Long zxccsyrl;
private Long lxblts;
private Long sfqy;
private String jlbh;
private String fxms;
private String jbms;
private String xzbh;
private String ggbh;
private String znbh;
private Long lxfs;
private String jpkzdh;
private Long jdpx;
private Long sfznfxjd;
private String znfxlx;
private Long sqms;
private String squrllj;
private Long ssmlxz;
private Long lxmlxz;
private String zburllj;
private Long zbdk;
private Long dqx;
private Long xqx;
private Long kqx;
private Long pqx;
private Long lxhfqx;
private Long lxxzqx;
private Long lxdjqx;
private Long sfzlx;
private Long sfzx;
private String hb;
private String jmcj;
private String sj;
private Long lxlrcyfs;
private String khdosdxsnr;
private String khdosdxswz;
private String cjry;
private String cjrq;
private String xgry;
private String xgrq;
private String bz;
private Long kz1;
private Long kz2;
private String kz3;
private String kz4;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.hzjt.domain;
import lombok.Data;
import java.io.Serializable;
@Data
public class SbtdspsrParam extends Sbtdspsr implements Serializable {
private String sbcsName;
private String deviceconfig;
}
\ No newline at end of file
package com.hzjt.domain;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
@Getter
@Setter
public class SbtdspsrParams extends Sbtdspsr {
/**
* 创建时间
*/
private Date createtime;
/**
* 推送状态(0成功1失败)
*/
private Long pushstatus;
/**
* 推送描述
*/
private String pushdesc;
/**
* 推送次数
*/
private Long pushcount;
/**
* 行政编号
*/
private String xzbh;
/**
* 备注
*/
private String remark;
/**
* 行政名称
*/
private String xztreename;
private String deviceconfig;
}
package com.hzjt.domain;
import lombok.Data;
import java.io.Serializable;
@Data
public class Sbxx implements Serializable {
private String sbbh;
private String wbbh;
private String sbmc;
private String sbmcpy;
private String sbip;
private Long sbdk;
private String sbdlzh;
private String sbdlmm;
private Long sbzl;
private String sbbbh;
private String sbxh;
private String cjbh;
private String cjmc;
private Long sbzt;
private String xhsj;
private String rjbbh;
private String khbh;
private String sbazwz;
private String jd;
private String wd;
private Long tpwzx;
private Long tpwzy;
private Long spsrtds;
private Long spsrdhmtds;
private Long spsctds;
private Long ypsrtds;
private Long ypsctds;
private Long bjsrtds;
private Long bjsctds;
private Long tmtds;
private Long mlczxy;
private Long zdscdk;
private String qybh;
private Long zdzls;
private String jlbh;
private Long jrms;
private String ms;
private String dlfwzbh;
private String qymc;
private String qydz;
private String xzbh;
private String jrfsbh;
private String jrfsmc;
private String lxr;
private String lxdh;
private String vpnwgbh;
private String cjry;
private String cjrq;
private String xgry;
private String xgrq;
private String bz;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.hzjt.domain;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Id;
import java.io.Serializable;
import java.util.Date;
@Getter
@Setter
public class Serverstatreport implements Serializable {
@Id
private String serverid;
private String servername;
private String serverip;
private Integer serverport;
private String serverdesc;
private String network;
private String realip;
private Integer realport;
private Date firstreporttime;
private Date lastlogintime;
private Date lastreporttime;
private Integer timeoutsecond;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.hzjt.domain;
import lombok.Data;
import javax.persistence.Id;
import java.io.Serializable;
import java.util.Date;
@Data
public class Storageserver implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private Integer serverid;
private String servername;
private String servergroup;
private String servertype ;
private Integer serverstatus;
private String serveurl ;
private String serveip;
private String serverport;
private String serveruser;
private String serverpassword;
private String creator;
private Date createtime;
private String remark;
}
package com.hzjt.domain;
import java.util.concurrent.Delayed;
import java.util.concurrent.TimeUnit;
/**
* @author chenl
* @version 1.0
* @date 2020/4/9 10:00
*/
public class TraffAlarmRecordDelay implements Delayed {
/* 触发时间*/
private long time;
Traffalarmrecord traffalarmrecord;
public TraffAlarmRecordDelay(Traffalarmrecord traffalarmrecord, long time, TimeUnit unit) {
this.traffalarmrecord = traffalarmrecord;
this.time = System.currentTimeMillis() + (time > 0? unit.toMillis(time): 0);
}
@Override
public long getDelay(TimeUnit unit) {
return time - System.currentTimeMillis();
}
@Override
public int compareTo(Delayed o) {
TraffAlarmRecordDelay item = (TraffAlarmRecordDelay) o;
long diff = this.time - item.time;
if (diff <= 0) {
return -1;
}else {
return 1;
}
}
public Traffalarmrecord getTraffalarmrecord(){
return this.traffalarmrecord;
}
@Override
public String toString() {
return "TraffAlarmRecordDelay{" +
"time=" + time +
", traffalarmrecord='" + traffalarmrecord.toString() + '\'' +
'}';
}
}
\ No newline at end of file
package com.hzjt.domain;
import lombok.Data;
import javax.persistence.Id;
import java.util.Date;
@Data
public class Traffalarmrecord implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id
private Long recordid ;// 记录编号 主键序列
private Integer algotype ;//--算法类型 默认是 0:公司 1:第三方公司
private Long areaid ;//--辖区编号
private String fdid ;//设备编号
private Integer channelid ;//--通道编号
private Integer channeletype;//通道类型 可忽略
private String channelname ;//通道名称
private Date recordtime ;//事件记录时间
private String recordtype ;//事件记录类型
private String location ;//目标定位信息
private String img1urlfrom ;//图片源地址
private String img1path ;//图片存储地址
private String img2urlfrom ;//图片源地址
private String img2path ;//图片存储地址
private String img3urlfrom ;//图片源地址
private String img3path ;//图片存储地址
private String img4urlfrom ;//图片源地址
private String img4path ;//图片存储地址
private String img5urlfrom;//图片源地址
private String img5path ;//图片存储地址
private String videourlfrom ;//视频源地址
private String videopath ;//视频存储地址
private Date retrytime ;//video重试的最近一次的读取;时间
private Integer retrycount ;//ideo重试读取总次数
private Integer recordlevel;//事件级别 --默认为0 其他类型暂时未知
private Integer checkstatus ;//0:待审核 1:审核通过 2:审核不通过 9:免审
private String creator;//创建人
private Date createtime ;//创建时间
private String updator ;//更新人
private Date updatetime ;//更新时间
private String remark ;
private Integer pushstatus;//推送状态
private String pushdesc;//推送描述
private String pushcount;//推送次数
private Date pushdate;//推送时间
private String processstatus ;//处理状态;
private String objlable;
@Override
public String toString() {
return "Traffalarmrecord{" +
"recordid=" + recordid +
", algotype=" + algotype +
", areaid=" + areaid +
", fdid='" + fdid + '\'' +
", channelid=" + channelid +
", channeletype=" + channeletype +
", channelname='" + channelname + '\'' +
", recordtime=" + recordtime +
", recordtype='" + recordtype + '\'' +
", location='" + location + '\'' +
", img1urlfrom='" + img1urlfrom + '\'' +
", img1path='" + img1path + '\'' +
", img2urlfrom='" + img2urlfrom + '\'' +
", img2path='" + img2path + '\'' +
", img3urlfrom='" + img3urlfrom + '\'' +
", img3path='" + img3path + '\'' +
", img4urlfrom='" + img4urlfrom + '\'' +
", img4path='" + img4path + '\'' +
", img5urlfrom='" + img5urlfrom + '\'' +
", img5path='" + img5path + '\'' +
", videourlfrom='" + videourlfrom + '\'' +
", videopath='" + videopath + '\'' +
", retrytime=" + retrytime +
", retrycount=" + retrycount +
", recordlevel=" + recordlevel +
", checkstatus=" + checkstatus +
", creator='" + creator + '\'' +
", createtime=" + createtime +
", updator='" + updator + '\'' +
", updatetime=" + updatetime +
", remark='" + remark + '\'' +
", pushstatus=" + pushstatus +
", pushdesc='" + pushdesc + '\'' +
", pushcount='" + pushcount + '\'' +
", pushdate=" + pushdate +
'}';
}
}
package com.hzjt.domain;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class TraffalarmrecordParams extends Traffalarmrecord {
private String starttime;
private String endtime;
private String fdids;
private String channelids;
private Integer page;
private Integer rows;
}
package com.hzjt.domain;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class TraffalarmrecordResult extends Traffalarmrecord {
private String xzmc;
private String tdmc;
private String fileagent;
private String recordname;
}
package com.hzjt.domain;
import lombok.Data;
import javax.persistence.Id;
import java.io.Serializable;
@Data
public class Traffalarmrecordstat implements Serializable {
@Id
private Long countdate;
@Id
private String areaid;
@Id
private String eventtype;
@Id
private String fdid;
@Id
private Integer channelid;
private Integer counthour;
private Short channeltype;
private String channelname;
private String areaname;
private Long totalcount;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.hzjt.domain;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Id;
import java.io.Serializable;
import java.util.Date;
@Getter
@Setter
public class Traffdeviceconfig implements Serializable {
@Id
private String fdid;
@Id
private Short channelid;
private Short devicelocationtype;
private Short devicechecktype;
private Short stakekilometer;
private Short stakemeter;
private Short locationdirection;
private String creator;
private Date createtime;
private Date updatetime;
private String remark1;
private Integer remark2;
private String remark3;
private Integer remark4;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.hzjt.domain;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Id;
import java.io.Serializable;
import java.util.Date;
@Getter
@Setter
public class Traffdevicewriteresult implements Serializable {
/**
* 设备编号
*/
@Id
private String sbbh;
/**
* 通道编号
*/
@Id
private Long tdbh;
/**
* 创建时间
*/
private Date createtime;
/**
* 推送状态(0成功1失败)
*/
private Long pushstatus;
/**
* 推送描述
*/
private String pushdesc;
/**
* 推送次数
*/
private Long pushcount;
/**
* 行政编号
*/
private String xzbh;
/**
* 备注
*/
private String remark;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.hzjt.domain;
import lombok.Data;
import javax.persistence.Id;
@Data
public class Traffuserdevice implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id
private String userid;
@Id
private String fdid;
@Id
private Integer channelid;
private Integer channeletype;
private String channelname;
private String creator;
private String createtime;
private String updator;
private String updatetime;
private String remark;
}
package com.hzjt.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@AllArgsConstructor
@Data
public class TransferResult {
Long recordid;
String pathvalue;
String urlfrom;
String imgpath;
Boolean result;
}
\ No newline at end of file
package com.hzjt.domain;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
@Data
public class TrffClientMessage {
private String type;
private String id;
private String video_id;
private String ts;
private String incident_type;
private List<String> img_urls;
private String video_record_url;
private Map<String, BigDecimal> obj_location;
private List<String> img_base64;
private String dept;
}
package com.hzjt.domain;
import lombok.Getter;
/**
* 用户通用常量类, 单个业务的常量请单开一个类, 方便常量的分类管理
* @author cp
*/
@Getter
public enum UserConstantsEnum {
/**
* cookie中存放用户信息的key值
*/
USER_TOKEN("FACECLOUD_USER"),
FACE_USER_TOKEN("token");
private String value;
UserConstantsEnum(String value){
this.value =value;
}
}
package com.hzjt.domain;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
public class Vehicles {
private String id;
private String type;
private String video_id;
private String ts;
List<Vehiclesdetail> objs;
}
package com.hzjt.domain;
import lombok.Data;
@Data
public class Vehiclesdetail {
private String obj_id;
private String vehiclesid;
private String type;
private Long direction;
private Long classification_confidence;
private String ruleTag;
}
package com.hzjt.domain;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
@Data
public class Vertexes {
List<Map<String, BigDecimal>> vertexes;
}
package com.hzjt.domain;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class WriteResultObj {
private String data;
private String message;
private Integer status;
public WriteResultObj(){}
public WriteResultObj(Integer status, String message) {
this.message = message;
this.status = status;
}
@Override
public String toString() {
return "WriteResultObj{" +
"data=" + data +
", message='" + message + '\'' +
", status=" + status +
'}';
}
}
package com.hzjt.handler;
import lombok.Getter;
/**
* 定义线程池bean中的key名称 即ThreadPoolManager的threadPoolMap中的key
* @author cp
*/
@Getter
public enum ConsumerNameEnum {
/* ThreadPoolManager key消费者名称 */
GS_TRAFF_EVENT("gs-traff-event"),
GS_TRAFF_PUSH_QZPT_EVENT("gs_traff_push_qzpt_event");
private String name;
ConsumerNameEnum(String name) {
this.name = name;
}
}
package com.hzjt.handler;
import com.hzjt.domain.TraffAlarmRecordDelay;
import org.springframework.stereotype.Component;
import java.util.concurrent.DelayQueue;
/**
* @author chenl
* @version 1.0
* @date 2020/4/9 10:31
*/
@Component
public class DelayQueueManager {
private static final DelayQueue<TraffAlarmRecordDelay> delayQueue = new DelayQueue<>();
public boolean pushData(TraffAlarmRecordDelay traffAlarmRecordDelay){
return delayQueue.offer(traffAlarmRecordDelay);
}
public DelayQueue<TraffAlarmRecordDelay> getQueue(){
return delayQueue;
}
}
package com.hzjt.handler;
import com.hzjt.domain.Ftp;
import com.hzjt.domain.Traffalarmrecord;
import com.hzjt.domain.TransferResult;
import com.hzjt.util.DateUtils;
import com.hzjt.util.FTPUtil;
import com.hzjt.util.ThreadPoolUtil;
import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.*;
@Slf4j
public class FileTransferManager {
private static CompletionService<TransferResult> completionService = new ExecutorCompletionService<TransferResult>(ThreadPoolUtil.getPool());
/**
* @param transferRecord
* @param ftp
* @param basePath
* @return
* @throws Exception
*/
public static List<TransferResult> transferFile(final Map<String,Object> transferRecord , final Ftp ftp, final String basePath) throws Exception {
Integer ret = 0 ;
final Long recordid = Long.parseLong(transferRecord.get("recordid").toString());
int count = 0 ;
for(String key : transferRecord.keySet()){
if(key.equals("img1path") || key.equals("img2path")
|| key.equals("img3path") || key.equals("img4path")
|| key.equals("img5path")){
final String url = transferRecord.get(key).toString() ;
count++;
completionService.submit(()->{
TransferResult result = new TransferResult(recordid,key,url,"",false);
try {
String filesuff = "videopath".equals(key) ? ".mp4": ".jpg";
HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
//延迟连接
connection.setReadTimeout(2000);
connection.setConnectTimeout(3000);
connection.setRequestMethod("GET");
/// System.out.println("connection.getResponseCode:" + connection.getResponseCode() );
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
InputStream inputStream = connection.getInputStream();
log.info("url:",url , " --- "+"key:",key);
String pname = DateUtils.formatCurrDayNoSign() + "_"+recordid+"_0000_"+key.replace("path","");
String fileName = pname +filesuff;
String ftputl = FTPUtil.getFtpUrl(ftp) + basePath + "/" + fileName;
boolean r = FTPUtil.uploadFile(ftp,basePath, fileName,inputStream);
result.setResult(r);
if(r){
result.setImgpath(ftputl);
}
log.info("callable thread:" +result.toString());
}else{
log.error("connection code: "+connection.getResponseCode() +" ," +result.toString());
}
} catch (IOException e) {
System.out.println(e.toString());
log.error(e.toString());
}
return result;
});
}
}
List<TransferResult> listret = new ArrayList<>();
for (int i = 0; i < count ; i++) {
listret.add(completionService.poll(10, TimeUnit.SECONDS).get());
}
return listret;
}
public static void fetchUrlsFromRecord(Traffalarmrecord record , Map<String,Object> transferRecord){
if(record ==null || record.getRecordid()==null){
return;
}
transferRecord.put("recordid" , record.getRecordid());
if(record.getImg1path() == null && record.getImg1urlfrom() != null){
transferRecord.put("img1path" , record.getImg1urlfrom());
}
if(record.getImg2path() == null && record.getImg2urlfrom() != null){
transferRecord.put("img2path" , record.getImg2urlfrom());
}
if(record.getImg3path() == null && record.getImg3urlfrom() != null){
transferRecord.put("img3path" , record.getImg3urlfrom());
}
if(record.getImg4path() == null && record.getImg4urlfrom() != null){
transferRecord.put("img4path" , record.getImg4urlfrom());
}
if(record.getImg5path() == null && record.getImg5urlfrom() != null){
transferRecord.put("img5path" , record.getImg5urlfrom());
}
if(record.getVideopath() ==null && record.getVideourlfrom() != null){
transferRecord.put("videopath" , record.getVideourlfrom());
}
}
public static Traffalarmrecord traffAlarmRecordUrlUpdate(List<TransferResult> results) throws Exception{
Traffalarmrecord record = new Traffalarmrecord();
for (TransferResult result : results){
record.setRecordid(result.getRecordid());
if(result.getResult()){
switch (result.getPathvalue()){
case "img1path" :
record.setImg1path(result.getImgpath());
break;
case "img2path" :
record.setImg2path(result.getImgpath());
break;
case "img3path" :
record.setImg3path(result.getImgpath());
break;
case "img4path" :
record.setImg4path(result.getImgpath());
break;
case "img5path" :
record.setImg5path(result.getImgpath());
break;
case "videopath" :
record.setVideopath(result.getImgpath());
break;
default :
log.info("unknow pathvalue"+ result.getPathvalue());
break;
}
}
}
return record;
}
// public static void main(String[] args) {
// urls.add("http://img63.ddimg.cn/2019/12/18/2019121819114913026.jpg");
// urls.add("http://img62.ddimg.cn/2019/12/18/201912181655214974.jpg");
// urls.add("http://img61.ddimg.cn/2019/12/18/2019121816294684833.jpg");
// urls.add("http://img63.ddimg.cn/2019/12/18/2019121819121717247.jpg");
// urls.add("http://img62.ddimg.cn/2019/12/18/201912181655214974.jpg");
// }
}
package com.hzjt.handler;
import cn.hutool.json.JSONUtil;
import com.hzjt.service.TraffFlowService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.websocket.*;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@Slf4j
@Component
@ServerEndpoint("/websocket/{name}")
public class WebSocket {
public static TraffFlowService traffFlowService;
/**
* 与某个客户端的连接对话,需要通过它来给客户端发送消息
*/
private Session session;
/**
* 标识当前连接客户端的用户名
*/
private String name;
// private static ApplicationContext applicationContext;
//
// public static void setApplicationContext(ApplicationContext context){
// applicationContext=context;
// }
/**
* 用于存所有的连接服务的客户端,这个对象存储是安全的
*/
private static ConcurrentHashMap<String, WebSocket> webSocketSet = new ConcurrentHashMap<>();
@OnOpen
public void OnOpen(Session session, @PathParam(value = "name") String name) {
this.session = session;
this.name = name;
// name是用来表示唯一客户端,如果需要指定发送,需要指定发送通过name来区分
webSocketSet.put(name, this);
log.info("[WebSocket] 连接成功,当前连接人数为:={}", webSocketSet.size());
}
@OnClose
public void OnClose() {
webSocketSet.remove(this.name);
log.info("[WebSocket] 退出成功,当前连接人数为:={}", webSocketSet.size());
}
@OnError
public void OnError(@PathParam("name") String name, Throwable throwable, Session session) {
webSocketSet.remove(name);
log.info("[WebSocket] 退出成功,当前连接人数为:={}", webSocketSet.size());
}
@OnMessage
public void OnMessage(String message) {
log.info("[WebSocket] 收到消息:{}", message);
//判断是否需要指定发送,具体规则自定义
if (message.indexOf("videoid") >= 0) {
//连接查询近五分钟并开始每分钟推送数据
List<Map> map = new ArrayList<>();
List<Map> dDayFlowmap = traffFlowService.selectFiveAndDayFlow(name);
if (null != dDayFlowmap)
map.addAll(dDayFlowmap);
List<Map> TypeDayFlow = traffFlowService.selectFiveAndTypeDayFlow(name);
if (null != TypeDayFlow)
map.addAll(TypeDayFlow);
if (!map.isEmpty()) {
AppointSending(name, JSONUtil.toJsonStr(map));
}
}
}
/**
* 群发
*
* @param message
*/
public static void GroupSending(String message) {
for (String name : webSocketSet.keySet()) {
try {
if (null != webSocketSet.get(name) && null != webSocketSet.get(name).session && null != webSocketSet.get(name).session.getBasicRemote())
webSocketSet.get(name).session.getBasicRemote().sendText(message);
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 根据videoid 群发
*/
public void GroupSendingByVideoid(String name) {
if (null == traffFlowService) return;
try {
List<Map> map = new ArrayList<>();
if (null != webSocketSet.get(name) && null != webSocketSet.get(name).session && null != webSocketSet.get(name).session.getBasicRemote()) {
log.info("name" + name);
List<Map> dDayFlowmap = traffFlowService.selectFiveAndDayFlow(name);
if (null != dDayFlowmap)
map.addAll(dDayFlowmap);
List<Map> TypeDayFlow = traffFlowService.selectFiveAndTypeDayFlow(name);
if (null != dDayFlowmap)
map.addAll(TypeDayFlow);
if (!map.isEmpty()) {
synchronized (webSocketSet.get(name).session) {
webSocketSet.get(name).session.getBasicRemote().sendText(JSONUtil.toJsonStr(map));
}
}
}
}catch (Exception e) {
e.printStackTrace();
}
}
/**
* 指定发送
*
* @param name
* @param message
*/
public void AppointSending(String name, String message) {
if (null != webSocketSet.get(name) && null != webSocketSet.get(name).session && null != webSocketSet.get(name).session.getBasicRemote()) {
synchronized (webSocketSet.get(name).session) {
try {
webSocketSet.get(name).session.getBasicRemote().sendText(message);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
package com.hzjt.listener;
import com.hzjt.service.CacheLoadService;
import com.hzjt.service.FtpService;
import com.hzjt.service.QingZhiLoginCacheService;
import com.hzjt.util.ThreadPoolUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.boot.context.event.SpringApplicationEvent;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;
@Slf4j
@Component
public class MyApplicationStartingEventListener implements ApplicationListener<SpringApplicationEvent>, ApplicationContextAware {
private ApplicationContext applicationContext;
private boolean flag = false;
private FtpService ftpService;
@Autowired
public MyApplicationStartingEventListener() {
}
@Override
public void onApplicationEvent(SpringApplicationEvent event) {
if (event instanceof ApplicationReadyEvent) {
try {
if (!flag) {
ThreadPoolUtil.getSchedulePool().scheduleWithFixedDelay(() -> {
log.info("loadFtpCache schedule----------");
CacheLoadService cacheLoadService = applicationContext.getBean(CacheLoadService.class);
cacheLoadService.loadFtpCache();
}, 200, 60000, TimeUnit.MILLISECONDS);
//判断第三方登录是否有效
ThreadPoolUtil.getSchedulePool().scheduleWithFixedDelay(() -> {
log.info("QingZhiLoginCacheService schedule----------");
QingZhiLoginCacheService qingZhiLoginCacheService = applicationContext.getBean(QingZhiLoginCacheService.class);
qingZhiLoginCacheService.keepAlive();
}, 3, 60, TimeUnit.SECONDS);
}
} catch (Exception e) {
e.printStackTrace();
log.error(e.toString());
System.exit(0);
} finally {
flag = true;
}
}
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
}
\ No newline at end of file
package com.hzjt.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface CommonMapper {
long getSeq(@Param("seqname") String seqname);
}
package com.hzjt.mapper;
import com.hzjt.domain.Sbtdspsr;
import com.hzjt.domain.SbtdspsrParam;
import com.hzjt.domain.Traffdeviceconfig;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.additional.dialect.oracle.InsertListMapper;
import tk.mybatis.mapper.common.BaseMapper;
import tk.mybatis.mapper.common.ConditionMapper;
import java.util.List;
public interface SbtdspsrMapper extends BaseMapper<Sbtdspsr>, ConditionMapper<Sbtdspsr>, InsertListMapper<Sbtdspsr> {
String getMinUpdateTime();
String getMaxUpdateTime();
/**
* ��ȡ����ʱ���ڵ��豸��Ϣ
* @param startTime ��ʼʱ��
* @param endTime ����ʱ��
* @return �豸��Ϣlist
*/
List<Sbtdspsr> getSbtdspsrList(@Param("startTime") String startTime, @Param("endTime") String endTime);
List<Sbtdspsr> selectAllSbbhAndTdbh(@Param("xzbh") String xzbh);
List<Sbtdspsr> selectBySbbh(@Param("sbbh") String sbbh,@Param("tdbh") Integer tdbh);
List<SbtdspsrParam> selectDeviceWrite();
}
\ No newline at end of file
package com.hzjt.mapper;
import com.hzjt.domain.Sbxx;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.additional.dialect.oracle.InsertListMapper;
import tk.mybatis.mapper.common.BaseMapper;
import tk.mybatis.mapper.common.ConditionMapper;
import java.util.List;
public interface SbxxMapper extends BaseMapper<Sbxx>, ConditionMapper<Sbxx>, InsertListMapper<Sbxx> {
List<String> selectAllSbbh(@Param("ms") String ms);
}
\ No newline at end of file
package com.hzjt.mapper;
import com.hzjt.domain.Storageserver;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface StorageServerMapper extends tk.mybatis.mapper.common.BaseMapper<Storageserver>, tk.mybatis.mapper.common.ConditionMapper<Storageserver>, tk.mybatis.mapper.common.special.InsertListMapper<Storageserver> {
List<Storageserver> queryStorageServerAll(Storageserver storageServer);
}
\ No newline at end of file
package com.hzjt.mapper;
import com.hzjt.domain.DeviceChannelid;
import com.hzjt.domain.Traffalarmrecord;
import com.hzjt.domain.TraffalarmrecordResult;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.additional.dialect.oracle.InsertListMapper;
import tk.mybatis.mapper.common.BaseMapper;
import tk.mybatis.mapper.common.ConditionMapper;
import java.util.List;
public interface TraffAlarmRecordMapper extends BaseMapper<Traffalarmrecord>, ConditionMapper<Traffalarmrecord>, InsertListMapper<Traffalarmrecord> {
int updateTraffAlarmRecordUrl(Traffalarmrecord record);
int updatePushEvent(Traffalarmrecord traffalarmrecord);
int inserTraffAlarmRecord(Traffalarmrecord traffalarmrecord);
int selectmax();
List<TraffalarmrecordResult> queryTraffalarmrecordByPage(@Param("recordtype")String recordtype, @Param("areaid")Long areaid, @Param("checkstatus")Integer checkstatus,
@Param("starttime")String starttime, @Param("endtime")String endtime,
@Param("deviceChannelids")List<DeviceChannelid> deviceChannelid,
@Param("userAccount") String userAccount, @Param("pushstatus")Integer pushstatus,
@Param("page")Integer page, @Param("rows")Integer rows);
int countQueryTraffalarmrecordByPage(@Param("recordtype")String recordtype,@Param("areaid")Long areaid, @Param("checkstatus")Integer checkstatus,
@Param("starttime")String starttime, @Param("endtime")String endtime,
@Param("deviceChannelids")List<DeviceChannelid> deviceChannelid,
@Param("userAccount") String userAccount,@Param("pushstatus")Integer pushstatus,
@Param("page")Integer page,@Param("rows")Integer rows);
List<TraffalarmrecordResult> queryTraffalarmrecordAllByPage(@Param("recordtype")String recordtype,
@Param("areaid")Long areaid,
@Param("checkstatus")Integer checkstatus);
}
\ No newline at end of file
package com.hzjt.mapper;
import com.hzjt.domain.Vehicles;
import com.hzjt.domain.Vehiclesdetail;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
@Mapper
public interface TraffFlowMapper {
int add(Vehicles excelModel);
int insertlist(Vehiclesdetail vehiclesdetail);
List<Map> selectFiveAndDayFlow(String videoid);
List<Map> selectFiveAndTypeDayFlow(String videoid);
}
package com.hzjt.mapper;
import com.hzjt.domain.Traffalarmrecordstat;
import tk.mybatis.mapper.additional.dialect.oracle.InsertListMapper;
import tk.mybatis.mapper.common.BaseMapper;
import tk.mybatis.mapper.common.ConditionMapper;
public interface TraffalarmrecordstatMapper extends BaseMapper<Traffalarmrecordstat>, ConditionMapper<Traffalarmrecordstat>, InsertListMapper<Traffalarmrecordstat>
{
}
\ No newline at end of file
package com.hzjt.mapper;
import com.hzjt.domain.Traffdeviceconfig;
import com.hzjt.domain.Traffdevicewriteresult;
import tk.mybatis.mapper.additional.dialect.oracle.InsertListMapper;
import tk.mybatis.mapper.common.BaseMapper;
import tk.mybatis.mapper.common.ConditionMapper;
public interface TraffdeviceconfigMapper extends BaseMapper<Traffdeviceconfig>, ConditionMapper<Traffdeviceconfig>, InsertListMapper<Traffdeviceconfig> {
}
\ No newline at end of file
package com.hzjt.mapper;
import com.hzjt.domain.SbtdspsrParams;
import com.hzjt.domain.Traffdevicewriteresult;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.additional.dialect.oracle.InsertListMapper;
import tk.mybatis.mapper.common.BaseMapper;
import tk.mybatis.mapper.common.ConditionMapper;
import java.util.List;
public interface TraffdevicewriteresultMapper extends BaseMapper<Traffdevicewriteresult>, ConditionMapper<Traffdevicewriteresult>, InsertListMapper<Traffdevicewriteresult>{
List<SbtdspsrParams> querySbtdspsrByXh(@Param("xhs")List<String> xhs);
}
\ No newline at end of file
package com.hzjt.redis;
import com.hzjt.domain.*;
import com.hzjt.handler.FileTransferManager;
import com.hzjt.mapper.TraffAlarmRecordMapper;
import com.hzjt.service.EventWriteService;
import com.hzjt.service.FtpService;
import com.hzjt.util.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Callable;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
@Service
public class Receiver {
@Autowired
RedisDao redisDao;
@Autowired
private TraffAlarmRecordMapper traffAlarmRecordMapper;
@Autowired
FtpService ftpService;
@Autowired
EventWriteService eventWriteService;
ScheduledExecutorService schedulepool = Executors.newScheduledThreadPool(5); //创
@Value("ftpIp")
String ftpIp;
@Value("ftpPort")
private String ftpPort;
@Value("ftpUsername")
private String ftpUsername;
@Value("ftpPassword")
private String ftpPassword;
@Value("${alarmrecord.check.enable}")
private String checkEnable;
private static final Logger log = LoggerFactory.getLogger(Receiver.class);
/**
* @Description: 用于接收单个对象,将对象同步至数据库,如果同步失败,则存入redis中
* @Param: [message] “fastjson”转换后的json字符串
* @Retrun: void
*/
public void receiveSingle(String Message) throws InterruptedException {
// 将json字符串转换成实体对
Alarm trffClientMessage= JsonUtil.stringToBean(Message,Alarm.class);
List<String> imgBase64List = trffClientMessage.getImg_base64();
Traffalarmrecord traffAlarmRecord = new Traffalarmrecord();
String imgEnumHead = "IMG";
Ftp ftp = ftpService.reloadFtp();
for (int i = 0; i < imgBase64List.size(); i++) {
/* 图片上传 */
String path = trffClientMessage.getVideo_id() + "/" + DateUtils.formatCurrDayNoSign();
String fileName = UUIDUtils.createuuid() + ".jpg";
if (FTPUtil.uploadFile(ftp, path, fileName, imgBase64List.get(i))) {
TraffAlarmRecordImgEnum.valueOf(imgEnumHead + i).setImg(traffAlarmRecord, FTPUtil.getFtpUrl(ftp) + path + "/" + fileName);
}
}
List<String> imgUrls = trffClientMessage.getImg_urls();
for (int i = 0; i < imgUrls.size(); i++) {
TraffAlarmRecordFromImgEnum.valueOf(imgEnumHead + i).setImg(traffAlarmRecord, imgUrls.get(i));
}
String[] videoIdArr = trffClientMessage.getVideo_id().split("_");
String fdid = videoIdArr[0];
traffAlarmRecord.setFdid(fdid);
Integer channelid = Integer.valueOf(videoIdArr[1]) + 1;
traffAlarmRecord.setChannelid(channelid);
if (StringEnum.ONE.getValue().equals(checkEnable)) {
/* 9:免审 */
traffAlarmRecord.setCheckstatus(9);
}
int recordid = traffAlarmRecordMapper.selectmax();
traffAlarmRecord.setRecordid((long)(recordid+1));
traffAlarmRecord.setProcessstatus("0");
traffAlarmRecord.setAreaid(Long.valueOf(trffClientMessage.getDept()));
traffAlarmRecord.setRecordtype(trffClientMessage.getIncident_type().toLowerCase());
traffAlarmRecord.setVideourlfrom(trffClientMessage.getVideo_record_url());
traffAlarmRecord.setRecordtime(new Date(Long.valueOf(trffClientMessage.getTs())));
traffAlarmRecord.setCreatetime(new Date());
traffAlarmRecord.setObjlable(trffClientMessage.getObjLabel());
traffAlarmRecord.setPushstatus(9);//设置为未推送
traffAlarmRecordMapper.inserTraffAlarmRecord(traffAlarmRecord);
try {
String basepath = "gstraff/" + traffAlarmRecord.getFdid() + (traffAlarmRecord.getChannelid() < 10 ? "0" + traffAlarmRecord.getChannelid() : traffAlarmRecord.getChannelid()) + "/" + DateUtils.formatCurrDayNoSign();
Map<String, Object> transferRecordMap = new HashMap<>();
FileTransferManager.fetchUrlsFromRecord(traffAlarmRecord, transferRecordMap);
List<TransferResult> results = FileTransferManager.transferFile(transferRecordMap, ftp, basepath);
log.info("缓存数据上传结果:" + results.toString());
Traffalarmrecord recordBak = FileTransferManager.traffAlarmRecordUrlUpdate(results);
traffAlarmRecord.setImg2path(recordBak.getImg2path());
traffAlarmRecord.setImg3path(recordBak.getImg3path());
traffAlarmRecord.setImg4path(recordBak.getImg4path());
traffAlarmRecord.setImg5path(recordBak.getImg5path());
traffAlarmRecord.setVideopath(recordBak.getVideopath());
if (traffAlarmRecord != null && traffAlarmRecord.getRecordid() != null) {
traffAlarmRecordMapper.updateTraffAlarmRecordUrl(traffAlarmRecord);
}
//如果监控视频为空,延时加载重新获取
if(null==recordBak.getVideopath() || "".equalsIgnoreCase(recordBak.getVideopath())) {
schedulepool.schedule(()->{
for (String key : transferRecordMap.keySet()) {
if (key.equals("videopath")) {
final String url = transferRecordMap.get(key).toString();
try {
HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
//延迟连接
connection.setReadTimeout(2000);
connection.setConnectTimeout(3000);
connection.setRequestMethod("GET");
String pname = DateUtils.formatCurrDayNoSign() + "_" + recordid + "_0000_" + key.replace("path", "");
String fileName = pname + ".mp4";
String ftputl = FTPUtil.getFtpUrl(ftp) + basepath + "/" + fileName;
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
InputStream inputStream = connection.getInputStream();
log.info("url:", url, " --- " + "key:", key);
boolean r = FTPUtil.uploadFile(ftp, basepath, fileName, inputStream);
if (r) traffAlarmRecord.setVideopath(ftputl);
//只更新监控
if (traffAlarmRecord != null && traffAlarmRecord.getRecordid() != null) {
traffAlarmRecordMapper.updateTraffAlarmRecordUrl(traffAlarmRecord);
//推送给第三方
ResultObj obj = eventWriteService.updateAndAutoSendEvent(traffAlarmRecord);
log.info("调用接口推送给广达返回信息:" + obj.toString());
}
}
} catch (IOException e) {
System.out.println(e.toString());
log.error(e.toString());
return 0;
}
}
}
return 1;
},30, TimeUnit.SECONDS); //等待30秒钟执行
}else {
//推送给第三方
ResultObj obj = eventWriteService.updateAndAutoSendEvent(traffAlarmRecord);
log.info("调用接口推送给广达返回信息:" + obj.toString());
}
} catch (Exception e) {
log.error("解析事件告警数据异常 :" + e.getMessage());
}
//
redisDao.incrOrDecr(Constant.succSizeTempKey, -1);
}
/**
* @Description: 用于接收对象集合,将集合遍历拆分成单个对象并进行发布
* @Param: [message] “fastjson”转换后的json字符串
* @Retrun: void
*/
public void receiveList(String message) throws InterruptedException {
}
}
package com.hzjt.redis;
import com.hzjt.domain.Alarm;
import com.hzjt.domain.Ftp;
import com.hzjt.domain.Traffalarmrecord;
import com.hzjt.handler.DelayQueueManager;
import com.hzjt.handler.FileTransferManager;
import com.hzjt.mapper.TraffAlarmRecordMapper;
import com.hzjt.service.AlarmRecordStatisticsService;
import com.hzjt.service.FtpService;
import com.hzjt.service.ImportService;
import com.hzjt.service.SeqService;
import com.hzjt.util.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Description: 消息接收者,将其在ExcelToDbApplication.java中注入消息监听容器(MessageListenerAdapter)中
* @Author: 杨东川【http://blog.csdn.net/yangdongchuan1995】
* @Date: Created in 2018-2-6
*/
@Service
public class Receiverbak {
@Autowired
ImportService importService;
@Autowired
RedisDao redisDao;
@Autowired
private TraffAlarmRecordMapper traffAlarmRecordMapper;
@Autowired
FtpService ftpService;
@Autowired
AlarmRecordStatisticsService alarmRecordStatisticsService;
@Value("ftpIp")
String ftpIp;
@Value("ftpPort")
private String ftpPort;
@Value("ftpUsername")
private String ftpUsername;
@Value("ftpPassword")
private String ftpPassword;
@Value("${alarmrecord.check.enable}")
private String checkEnable;
@Autowired
private SeqService seqService;
private Long delayTime = 25L;
// @Autowired
// FtpUtil ftpUtil;
@Autowired
private DelayQueueManager delayQueueManager;
private static final Logger log = LoggerFactory.getLogger(Receiverbak.class);
/**
* @Description: 用于接收单个对象,将对象同步至数据库,如果同步失败,则存入redis中
* @Param: [message] “fastjson”转换后的json字符串
* @Retrun: void
*/
public void receiveSinglewww(String Message) throws InterruptedException {
// 将json字符串转换成实体对
Alarm trffClientMessage= JsonUtil.stringToBean(Message,Alarm.class);
List<String> imgBase64List = trffClientMessage.getImg_base64();
Traffalarmrecord traffAlarmRecord = new Traffalarmrecord();
String imgEnumHead = "IMG";
//Ftp ftp = new Ftp(ftpIp,Integer.parseInt(ftpPort),ftpUsername,ftpPassword);
Ftp ftp = ftpService.reloadFtp();
for (int i = 0; i < imgBase64List.size(); i++) {
/* 图片上传 */
String path = trffClientMessage.getVideo_id() + "/" + DateUtils.formatCurrDayNoSign();
String fileName = UUIDUtils.createuuid() + ".jpg";
if (FTPUtil.uploadFile(ftp, path, fileName, imgBase64List.get(i))) {
TraffAlarmRecordImgEnum.valueOf(imgEnumHead + i).setImg(traffAlarmRecord, FTPUtil.getFtpUrl(ftp) + path + "/" + fileName);
}
}
List<String> imgUrls = trffClientMessage.getImg_urls();
for (int i = 0; i < imgUrls.size(); i++) {
TraffAlarmRecordFromImgEnum.valueOf(imgEnumHead + i).setImg(traffAlarmRecord, imgUrls.get(i));
}
String[] videoIdArr = trffClientMessage.getVideo_id().split("_");
String fdid = videoIdArr[0];
traffAlarmRecord.setFdid(fdid);
Integer channelid = Integer.valueOf(videoIdArr[1]) + 1;
traffAlarmRecord.setChannelid(channelid);
if (StringEnum.ONE.getValue().equals(checkEnable)) {
/* 9:免审 */
traffAlarmRecord.setCheckstatus(9);
}
int recordid = traffAlarmRecordMapper.selectmax();
traffAlarmRecord.setRecordid((long)recordid);
String dept = trffClientMessage.getDept();
traffAlarmRecord.setAreaid(Long.valueOf(dept));
String recordtype = trffClientMessage.getIncident_type().toLowerCase();
traffAlarmRecord.setRecordtype(recordtype);
traffAlarmRecord.setVideourlfrom(trffClientMessage.getVideo_record_url());
traffAlarmRecord.setRecordtime(new Date(Long.valueOf(trffClientMessage.getTs())));
traffAlarmRecord.setCreatetime(new Date());
traffAlarmRecordMapper.inserTraffAlarmRecord(traffAlarmRecord);
try {
System.out.println("fetch ftp:" + ftp.toString()+"recordId:"+traffAlarmRecord.getRecordid());
String basepath = "gstraff/" + traffAlarmRecord.getFdid() + (traffAlarmRecord.getChannelid() < 10 ? "0" + traffAlarmRecord.getChannelid() : traffAlarmRecord.getChannelid()) + "/" + DateUtils.formatCurrDayNoSign();
Map<String, Object> transferRecordMap = new HashMap<>();
FileTransferManager.fetchUrlsFromRecord(traffAlarmRecord, transferRecordMap);
FileTransferManager.transferFile(transferRecordMap, ftp, basepath);
// Traffalarmrecord recordBak = FileTransferManager.traffAlarmRecordUrlUpdate(results);
// traffAlarmRecord.setImg1path(recordBak.getImg1path());
// traffAlarmRecord.setImg2path(recordBak.getImg2path());
// traffAlarmRecord.setImg3path(recordBak.getImg3path());
// traffAlarmRecord.setImg4path(recordBak.getImg4path());
// traffAlarmRecord.setImg5path(recordBak.getImg5path());
// traffAlarmRecord.setVideopath(recordBak.getVideopath());
if (traffAlarmRecord != null && traffAlarmRecord.getRecordid() != null) {
traffAlarmRecordMapper.updateTraffAlarmRecordUrl(traffAlarmRecord);
}
} catch (Exception e) {
log.error("解析事件告警数据异常 :" + e.getMessage());
}
//
redisDao.incrOrDecr(Constant.succSizeTempKey, -1);
}
}
package com.hzjt.redis;
import com.hzjt.util.JsonUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Repository;
import java.util.ArrayList;
import java.util.List;
@Repository
public class RedisDao {
@Autowired
private StringRedisTemplate template;
/**
* @Description: 操作redis中数据结构为String的数据,进行set操作
* @Param: [key, value]
* @Retrun: void
*/
public <T> void setStringKey(String key, T value) {
ValueOperations<String, String> ops = template.opsForValue();
// 将参数value转换为String类型
String str = JsonUtil.beanToString(value);
ops.set(key, str);
}
/**
* @Description: 操作redis中数据结构为String的数据,进行get操作,获取单个对象的json字符串
* @Param: [key, clazz]
* @Retrun: T
*/
public <T> T getStringValue(String key, Class<T> clazz) {
ValueOperations<String, String> ops = this.template.opsForValue();
String str = ops.get(key);
// 将json串转换成对应(clazz)的对象
return JsonUtil.stringToBean(str, clazz);
}
/**
* @Description: 操作redis中数据结构为String的数据,进行get操作,获取对象集合的json字符串
* @Param: [key, clazz]
* @Retrun: java.util.List<T>
*/
public <T> List<T> getStringListValue(String key, Class<T> clazz) {
ValueOperations<String, String> ops = this.template.opsForValue();
String str = ops.get(key);
// 将json串转换成对应(clazz)的对象集合
return JsonUtil.stringToList(str, clazz);
}
/**
* @Description: 操作redis中数据结构为List的数据,进行get操作,获取对应list中“所有”的数据
* @Param: [key, clazz]
* @Retrun: java.util.List<T>
*/
public <T> List<T> getListValue(String key, Class<T> clazz) {
ListOperations<String, String> ops = template.opsForList();
// 获取对应list中的所有的数据
List<String> list = ops.range(key, 0, -1);
// 创建大小为对应list大小(ops.size(key)的ArrayList,避免后期进行扩容操作
List<T> result = new ArrayList<T>(ops.size(key).intValue());
// 遍历从redis中获取到的list,依次将其转换为对应(clazz)的对象并添加至结果集(result)中
for (String s : list) {
result.add(JsonUtil.stringToBean(s, clazz));
}
return result;
}
/**
* @Description: 操作redis中数据结构为List的数据,进行push操作(这里默认从左left进行插入)
* @Param: [key, value]
* @Retrun: void
*/
public <T> void leftPushKey(String key, T value) {
ListOperations<String, String> ops = template.opsForList();
// 将参数value转换为String类型
String str = JsonUtil.beanToString(value);
// 将转换后的json字符串存入redis
ops.leftPush(key, str);
}
/**
* @Description: 操作redis中数据结构为List的数据,进行pop操作(这里默认从右right进行取出)
* @Param: [key, clazz]
* @Retrun: T
*/
public <T> T rightPopValue(String key, Class<T> clazz) {
ListOperations<String, String> ops = template.opsForList();
String str = ops.rightPop(key);
return JsonUtil.stringToBean(str, clazz);
}
/**
* @Description: 操作redis中数据结构为List的数据,进行size操作,获取对应的list的长度大小
* @Param: [key]
* @Retrun: java.lang.Long
*/
public Long getListSize(String key) {
ListOperations<String, String> ops = template.opsForList();
return ops.size(key);
}
/**
* @Description: 消息发布
* @Param: [channelName, value] 频道名称
* @Retrun: void
*/
public <T> void publish(String channelName, T value) {
// 将参数value转换为String类型
String str = JsonUtil.beanToString(value);
// 将消息(str)发布到指定的频道(channelName)
template.convertAndSend(channelName, str);
}
/**
* @Description: 操作redis中数据结构为String的数据,进行increment操作
* @Param: [key, num]
* @Retrun: java.lang.Long
*/
public Long incrOrDecr(String key, long num) {
ValueOperations<String, String> ops = template.opsForValue();
return ops.increment(key, num);
}
/**
* @Description: 清空参数keyList中的所有值(key)所对应的redis里的数据
* @Param: [keyList]
* @Retrun: void
*/
public void cleanCache(List<String> keyList) {
template.delete(keyList);
}
}
package com.hzjt.service;
import com.hzjt.domain.Traffalarmrecordstat;
import com.hzjt.mapper.TraffalarmrecordstatMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
@Slf4j
@Service
public class AlarmRecordStatisticsService {
private Map<String, Long> statisticsMap = new HashMap<>(16);
private TraffalarmrecordstatMapper traffalarmrecordstatMapper;
@Autowired
public AlarmRecordStatisticsService(TraffalarmrecordstatMapper traffalarmrecordstatMapper) {
this.traffalarmrecordstatMapper = traffalarmrecordstatMapper;
}
public synchronized void statistics(String key) {
Long count = statisticsMap.putIfAbsent(key, 1L);
if (count != null) {
statisticsMap.put(key, ++count);
}
}
@Transactional(rollbackFor = Exception.class)
public void statisticsToDb() {
if (statisticsMap.isEmpty()) {
return;
}
Map<String, Long> statisticsDbMap;
synchronized (this) {
statisticsDbMap = statisticsMap;
statisticsMap = new HashMap<>(16);
}
Iterator<Map.Entry<String, Long>> iterator = statisticsDbMap.entrySet().iterator();
if (iterator.hasNext()) {
do {
Map.Entry<String, Long> next = iterator.next();
String key = next.getKey();
Long count = next.getValue();
String[] dataArr = key.split("&");
Traffalarmrecordstat traffalarmrecordstat = new Traffalarmrecordstat();
traffalarmrecordstat.setAreaid(dataArr[0]);
traffalarmrecordstat.setFdid(dataArr[1]);
traffalarmrecordstat.setChannelid(Integer.valueOf(dataArr[2]));
traffalarmrecordstat.setEventtype(dataArr[3]);
String countdate = dataArr[4];
traffalarmrecordstat.setCountdate(Long.valueOf(countdate));
Traffalarmrecordstat dbTraffalarmrecordstat = traffalarmrecordstatMapper.selectByPrimaryKey(traffalarmrecordstat);
if (dbTraffalarmrecordstat == null) {
traffalarmrecordstat.setTotalcount(count);
traffalarmrecordstat.setCounthour(Integer.valueOf(countdate.substring(4, 6)));
traffalarmrecordstatMapper.insertSelective(traffalarmrecordstat);
continue;
}
dbTraffalarmrecordstat.setTotalcount(dbTraffalarmrecordstat.getTotalcount() + count);
traffalarmrecordstatMapper.updateByPrimaryKeySelective(dbTraffalarmrecordstat);
} while (iterator.hasNext());
}
log.info("traffalarmrecordstat");
}
}
package com.hzjt.service;
import com.google.gson.Gson;
import com.hzjt.domain.Storageserver;
import com.hzjt.mapper.StorageServerMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
@Slf4j
public class CacheLoadService {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Value("${spring.redis.cachekey.ftplist}")
private String ftplistkey;
@Autowired
private StorageServerMapper storageServerMapper;
public boolean loadFtpCache() {
try {
Storageserver server = new Storageserver();
server.setServerstatus(0);//õ
server.setServertype("ftp");
List<Storageserver> storageServers = storageServerMapper.queryStorageServerAll(server);
if (!storageServers.isEmpty() && storageServers.size() > 0) {
stringRedisTemplate.opsForValue().set(ftplistkey, new Gson().toJson(storageServers));
} else {
System.out.println("storageServers.isEmpty");
}
return true;
} catch (Exception e) {
System.out.println(e.toString());
log.error(e.getMessage());
return false;
}
}
}
package com.hzjt.service;
import com.hzjt.domain.*;
import com.hzjt.mapper.SbtdspsrMapper;
import com.hzjt.mapper.TraffAlarmRecordMapper;
import com.hzjt.util.DateUtils;
import com.hzjt.util.FTPUtil;
import com.hzjt.util.StringEnum;
import com.hzjt.util.ThreadPoolUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import sun.misc.BASE64Encoder;
import tk.mybatis.mapper.entity.Condition;
import tk.mybatis.mapper.entity.Example;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;
@Slf4j
@Service
public class EventWriteService {
private static final String EVENT_SOURCE = "2";
private static final String EVENT_SUPPLIER = "zksy";
private static final String CONTAINS_EXIST = "交通事件已存在";
@Autowired
private RestTemplate restTemplate;
@Value("${qingzhi.eventwrite.url}")
private String url;
@Value("${qingzhi.eventwrite.timeout}")
private Integer timeout;
@Autowired
private TraffAlarmRecordMapper traffAlarmRecordMapper;
@Autowired
private SbtdspsrMapper sbtdspsrMapper;
@Value("${qingzhi.redis.token}")
private String qztoken;
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Value("${alarmrecord.check.push.enable}")
private String checkPushEnable;
@Value("${alarmrecord.check.push.recordtype}")
private String recordtype;
@Autowired
private TraffAlarmRecordMapper traffalarmrecordMapper;
private static CompletionService<ResultObj> completionService = new ExecutorCompletionService<ResultObj>(ThreadPoolUtil.getPool());
public ResultObj sendEvent(Long recordid) {
Traffalarmrecord traffalarmrecord = traffalarmrecordMapper.selectByPrimaryKey(recordid);
ResultObj resultObj;
try {
resultObj = sendMessage(traffalarmrecord);
} catch (TimeoutException e) {
log.error("eventwrite - sendEvent 请求超时:" + e.toString());
return ResultObj.error(ResponseEnum.E_1008.getCode(), ResponseEnum.E_1008.getMsg());
} catch (Exception e) {
log.error("eventwrite - sendEvent 异常:" + e.toString());
return ResultObj.error(ResponseEnum.E_9999.getCode(), e.toString());
}
return resultObj;
}
public List<ResultObj> sendEvents(List<Long> recordid) {
Condition condition = new Condition(Traffalarmrecord.class);
Example.Criteria criteria = condition.createCriteria();
criteria.andIn("recordid",recordid);
List<Traffalarmrecord> traffalarmrecordList = traffalarmrecordMapper.selectByCondition(condition);
List<ResultObj> resultObj=new ArrayList<>();
try {
resultObj = sendAllMessage(traffalarmrecordList);
} catch (TimeoutException e) {
log.error("eventwrite - sendEvents 请求超时:" + e.toString());
resultObj.add(ResultObj.error(ResponseEnum.E_1008.getCode(), ResponseEnum.E_1008.getMsg()));
} catch (Exception e) {
log.error("eventwrite - sendEvents 异常:" + e.toString());
resultObj.add(ResultObj.error(ResponseEnum.E_9999.getCode(), e.toString()));
}
return resultObj;
}
private ResultObj sendMessage(Traffalarmrecord traffalarmrecord) throws InterruptedException, ExecutionException, TimeoutException {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
HttpEntity<Traffalarmrecord> requestEntity = new HttpEntity<>(traffalarmrecord, headers);
return CompletableFuture.supplyAsync(() -> restTemplate.postForObject(url, requestEntity, ResultObj.class)).get(timeout, TimeUnit.SECONDS);
}
private List<ResultObj> sendAllMessage(List<Traffalarmrecord> traffalarmrecord) throws InterruptedException, ExecutionException, TimeoutException {
List<ResultObj> objlist = new ArrayList<>();
for (Traffalarmrecord record : traffalarmrecord) {
completionService.submit(() -> {
ResultObj obj = updateAndSendEvent(record);
obj.setData(record.getRecordid());
return obj;
});
}
for (int i = 0; i < traffalarmrecord.size(); i++) {
objlist.add(completionService.poll(10, TimeUnit.SECONDS).get());
}
return objlist;
}
public ResultObj updateAndSendEvent(Traffalarmrecord traffalarmrecord) {
Long starttime = System.currentTimeMillis();
EventWriteParam eventWriteParam = new EventWriteParam();
eventWriteParam.setEventID(String.valueOf(traffalarmrecord.getRecordid()));
eventWriteParam.setEventSource(EVENT_SOURCE);
eventWriteParam.setRegionID(traffalarmrecord.getAreaid());
eventWriteParam.setEventType(traffalarmrecord.getRecordtype());
eventWriteParam.setOccurTime(DateUtils.formatDateToNoSign(traffalarmrecord.getRecordtime()));
//获得外部编号
List<Sbtdspsr> sbtdspsr = sbtdspsrMapper.selectBySbbh(traffalarmrecord.getFdid(),traffalarmrecord.getChannelid());
eventWriteParam.setEventDeviceID(sbtdspsr.get(0).getWbbh());
eventWriteParam.setEventSupplier(EVENT_SUPPLIER);
BASE64Encoder base64Encoder = new BASE64Encoder();
eventWriteParam.setEventProof1(traffalarmrecord.getImg1path()!=null?base64Encoder.encode(FTPUtil.getFtpPicBytes(traffalarmrecord.getImg1path())):null);
eventWriteParam.setEventProof2(traffalarmrecord.getImg2path()!=null?base64Encoder.encode(FTPUtil.getFtpPicBytes(traffalarmrecord.getImg2path())):null);
eventWriteParam.setEventProof3(traffalarmrecord.getImg3path()!=null?base64Encoder.encode(FTPUtil.getFtpPicBytes(traffalarmrecord.getImg3path())):null);
eventWriteParam.setEventProof4(traffalarmrecord.getImg4path()!=null?base64Encoder.encode(FTPUtil.getFtpPicBytes(traffalarmrecord.getImg4path())):null);
eventWriteParam.setEventProof5(traffalarmrecord.getImg5path()!=null?base64Encoder.encode(FTPUtil.getFtpPicBytes(traffalarmrecord.getImg5path())):null);
eventWriteParam.setEventvideo1(traffalarmrecord.getVideopath()!=null?base64Encoder.encode(FTPUtil.getFtpPicBytes(traffalarmrecord.getVideopath())):null);
//String strBase64 = new BASE64Encoder().encode(FTPUtil.getFtpPicBytes(strings.get(i).get("PICPATH1").toString()));
WriteResultObj writeResultObj;
Long endtime = System.currentTimeMillis();
try {
writeResultObj = sendMessage(eventWriteParam);
} catch (TimeoutException e) {
log.error("事件推送eventwrite - sendEvent 请求超时:"+"事件="+traffalarmrecord.toString()+",错误原因=" + e.toString()+",请求总消耗时长"+(endtime-starttime)+"毫秒,"+writeInfoStr(eventWriteParam));
return ResultObj.error(ResponseEnum.E_1008.getCode(), ResponseEnum.E_1008.getMsg());
} catch (Exception e) {
log.error("事件推送eventwrite - sendEve" +
"nt 请求异常:"+"事件="+traffalarmrecord.toString()+",错误原因=" + e.toString()+",请求总消耗时长"+(endtime-starttime)+"毫秒,"+writeInfoStr(eventWriteParam));
return ResultObj.error(ResponseEnum.E_9999.getCode(), e.toString());
}
log.info("事件推送eventwrite - sendEvent 请求成功:"+"事件="+traffalarmrecord.toString()+",请求总消耗时长"+(endtime-starttime)+"毫秒,"+writeInfoStr(eventWriteParam));
dealResult(writeResultObj, traffalarmrecord);
return ResultObj.error(writeResultObj.getStatus(), writeResultObj.getMessage(), writeResultObj.getData());
}
private String writeInfoStr(EventWriteParam eventWriteParam){
return "图片1Base64长度:"+(eventWriteParam.getEventProof1()!=null?eventWriteParam.getEventProof1().length():0)+","
+"图片2Base64长度:"+(eventWriteParam.getEventProof2()!=null?eventWriteParam.getEventProof2().length():0)+","
+"图片3Base64长度:"+(eventWriteParam.getEventProof3()!=null?eventWriteParam.getEventProof3().length():0)+","
+"图片4Base64长度:"+(eventWriteParam.getEventProof4()!=null?eventWriteParam.getEventProof4().length():0)+","
+"图片5Base64长度:"+(eventWriteParam.getEventProof5()!=null?eventWriteParam.getEventProof5().length():0)+","
+"视频流Base64长度:"+(eventWriteParam.getEventvideo1()!=null?eventWriteParam.getEventvideo1().length():0)+"。";
}
private WriteResultObj sendMessage(EventWriteParam eventWriteParam) throws InterruptedException, ExecutionException, TimeoutException {
eventWriteParam.setEventType(String.valueOf(CodeConst.getEventTypeQZ(eventWriteParam.getEventType())));
List<EventWriteParam> list = new ArrayList<>();
list.add(eventWriteParam);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
String token = stringRedisTemplate.opsForValue().get(qztoken);
headers.add("token", token);
HttpEntity<List<EventWriteParam>> requestEntity = new HttpEntity<>(list, headers);
return CompletableFuture.supplyAsync(() -> restTemplate.postForObject(url, requestEntity, WriteResultObj.class)).get(timeout, TimeUnit.MILLISECONDS);
}
private void dealResult(WriteResultObj writeResultObj, Traffalarmrecord traffalarmrecord) {
Traffalarmrecord condition = new Traffalarmrecord();
condition.setRecordid(traffalarmrecord.getRecordid());
String message = writeResultObj.getMessage();
boolean successFlag = writeResultObj.getStatus() == ResponseEnum.SUCCESS.getCode();
/* 失败但是因为数据已存在 */
if (!successFlag && StringUtils.isNotBlank(message) && message.contains(CONTAINS_EXIST)) {
return;
}
/* 成功 */
condition.setPushdesc(message);
if (successFlag) {
condition.setPushstatus(0);
traffAlarmRecordMapper.updatePushEvent(condition);
return;
}
/* 其他失败 */
condition.setPushstatus(1);
traffAlarmRecordMapper.updatePushEvent(condition);
}
public ResultObj updateAndSendEvents(List<Traffalarmrecord> traffalarmrecord) {
int error = 0;
int success = 0;
for (Traffalarmrecord ta : traffalarmrecord) {
ResultObj resultObj = updateAndSendEvent(ta);
String message = resultObj.getMsg();
boolean successFlag = resultObj.getStatus() == ResponseEnum.SUCCESS.getCode() || (StringUtils.isNotBlank(message) && message.contains(CONTAINS_EXIST));
/* 成功 */
if (successFlag) {
success++;
continue;
}
error++;
}
return ResultObj.error(ResponseEnum.SUCCESS.getCode(), "成功" + success + "条|失败" + error + "条");
}
public ResultObj updateAndAutoSendEvent(Traffalarmrecord traffalarmrecord) {
if (recordtype.equals("1")) {
//过滤掉工程类的
if(traffalarmrecord.getRecordtype().equalsIgnoreCase("roadworks") || traffalarmrecord.getRecordtype().equalsIgnoreCase("roadworks_out_of_line"))
return ResultObj.ok();
}
if (!StringEnum.ONE.getValue().equals(checkPushEnable)) {
/* 自动推送开关是否开启 */
return ResultObj.ok("记录recordid:" + traffalarmrecord.getRecordid() + ",推送开关[未启用],将不会推送");
}
return updateAndSendEvent(traffalarmrecord);
}
}
package com.hzjt.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.hzjt.domain.Ftp;
import com.hzjt.util.RedisEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* ftpַȡ߷
* @author cp
*/
@Slf4j
@Service
public class FtpService {
@Autowired
private StringRedisTemplate stringRedisTemplate;
private List<Ftp> ftpList;
@Autowired
public FtpService(StringRedisTemplate stringRedisTemplate) {
try {
this.ftpList = getFtpList(stringRedisTemplate.opsForValue().get(RedisEnum.FTPLIST.getValue()));
}catch (Exception e){
log.error("ftpListȡʧ:"+e.toString());
}
}
public Ftp reloadFtp() {
try {
ftpList = getFtpList(stringRedisTemplate.opsForValue().get(RedisEnum.FTPLIST.getValue()));
}catch (Exception e){
log.error("ftpListȡʧ:"+e.toString());
}
Long count = null;
try {
count = stringRedisTemplate.opsForValue().increment(RedisEnum.FTPLIST_INDEX.getValue(), 1L);
} catch (Exception e) {
log.error("ȡredis FtpIndex쳣" + e.toString());
}
if (count == null) {
count = 0L;
}
long index = count % ftpList.size();
return ftpList.get((int) index);
}
private List<Ftp> getFtpList(String ftpJson) {
JSONArray jsonArr = JSONObject.parseArray(ftpJson);
List<Ftp> ftpList = new ArrayList<>();
for (int i = 0; i < jsonArr.size(); i++) {
Ftp ftp = new Ftp();
JSONObject jsonObject = jsonArr.getJSONObject(i);
ftp.setFtpIp(jsonObject.getString("serveip"));
ftp.setFtpPort(jsonObject.getInteger("serverport"));
ftp.setFtpUsername(jsonObject.getString("serveruser"));
ftp.setFtpPassword(jsonObject.getString("serverpassword"));
ftpList.add(ftp);
}
return ftpList;
}
}
package com.hzjt.service;
import com.hzjt.domain.Alarm;
public interface ImportService {
/**
* @Description: 清空redis中的部分旧数据
* @Param: []
* @Retrun: void
*/
void cleanCache();
/**
* @Description: 将参数result中的部分数据存入redis中,并把格式校验成功的数据发布至对应频道中
* @Param: [result]
* @Retrun: void
*/
void cacheAndPublish(String result);
/**
* @Description: 根据key值,返回redis中对应的结果
* @Param: [key]
* @Retrun: long
*/
long getTempSize(String key);
}
package com.hzjt.service;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import lombok.extern.log4j.Log4j2;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.http.*;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import javax.annotation.PostConstruct;
import java.lang.reflect.Type;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@Service
@Slf4j
public class QingZhiLoginCacheService {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Value("${qingzhi.redis.token}")
private String qztoken;
@Value("${qingzhi.login.username}")
private String username;
@Value("${qingzhi.login.password}")
private String password;
@Value("${qingzhi.login.url}")
private String url;
@Value("${qingzhi.login.keepaliveurl}")
private String keepaliveurl;
@PostConstruct
public void printConfig(){
log.info("config params:"+ "redis key:" + qztoken +" ,username:"+username+ " ,password:"+password+ " ,url:"+url+ " ,keepaliveurl:"+keepaliveurl);
}
public void keepAlive() {
try {
String tokencache = stringRedisTemplate.opsForValue().get(qztoken);
if (tokencache != null) {
doKeepAlive(tokencache);
} else {
tokencache = loginServer(url, username, password);
if (tokencache != null) {
doKeepAlive(tokencache);
}
}
} catch (Exception e) {
System.out.println(e.toString());
log.error(e.getMessage());
}
}
private void doKeepAlive(String token) {
HttpHeaders headers = getHttpHeaders();
headers.add("token",token);
HttpEntity<String> requestEntity = new HttpEntity<>(null, headers);
RestTemplate client = new RestTemplate();
ResponseEntity<String> request = client.exchange((keepaliveurl+"?token="+token), HttpMethod.GET, requestEntity, String.class);
String newToken = getTokenData(request);
if (newToken != null) {
log.info("doKeepAlive response " + request.getBody());
stringRedisTemplate.opsForValue().set(qztoken, newToken, 2, TimeUnit.MINUTES);
} else {
log.error("doKeepAlive response " + "empty...");
}
}
private String loginServer(String url, String username, String password) {
HttpHeaders headers = getHttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
RestTemplate client = new RestTemplate();
ResponseEntity<String> response = client.getForEntity((url+"?username="+username+"&password="+password),String.class);
return getTokenData(response);
}
private HttpHeaders getHttpHeaders() {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
return headers;
}
private String getTokenData(ResponseEntity<String> response){
try {
if (response != null && response.getBody() != null && response.getBody().contains("status")) {
String ret = response.getBody();
Gson gson = new Gson();
Type stringStringMap = new TypeToken<Map<String, String>>() {
}.getType();
Map<String, String> map = gson.fromJson(ret, stringStringMap);
if (map != null && map.get("data").length() > 10 && Integer.parseInt(map.get("status")) ==200) {
return map.get("data");
} else {
log.error("getTokenData error :" + response.getBody());
}
} else {
log.error("getTokenData empty...");
}
}catch (Exception e){
System.out.println(e.toString());
log.error(e.getMessage());
}
return null;
}
}
package com.hzjt.service;
import com.hzjt.mapper.CommonMapper;
import com.hzjt.util.SeqEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class SeqService {
private CommonMapper commonMapper;
@Autowired
public SeqService(CommonMapper commonMapper) {
this.commonMapper = commonMapper;
}
public long get(String seqname) {
return commonMapper.getSeq(seqname);
}
public long getTraffSeq() {
return commonMapper.getSeq(SeqEnum.SEQ_TRAFF.getValue());
}
}
package com.hzjt.service;
import com.hzjt.domain.Traffalarmrecord;
/**
* TraffAlarmRecordͼƬӿ
* @author cp
*/
public interface TraffAlarmRecordImg {
void setImg(Traffalarmrecord traffAlarmRecord, String img);
}
package com.hzjt.service;
import com.hzjt.domain.Vehicles;
import com.hzjt.domain.Vehiclesdetail;
import com.hzjt.mapper.TraffFlowMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service
public class TraffFlowService {
@Autowired
private TraffFlowMapper traffFlowMapper;
public void saveTraffFlow(Vehicles vehicles) {
traffFlowMapper.add(vehicles);
}
public void saveTraffFlowDetail(Vehiclesdetail vehiclesdetail ) {
traffFlowMapper.insertlist(vehiclesdetail);
}
public List<Map> selectFiveAndDayFlow(String videoid) {
return traffFlowMapper.selectFiveAndDayFlow(videoid);
}
public List<Map> selectFiveAndTypeDayFlow(String videoid) {
return traffFlowMapper.selectFiveAndTypeDayFlow(videoid);
}
}
\ No newline at end of file
package com.hzjt.service;
import com.hzjt.domain.Traffalarmrecord;
import com.hzjt.mapper.TraffAlarmRecordMapper;
import com.hzjt.domain.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class TraffalarmrecordService {
@Autowired
private TraffAlarmRecordMapper traffalarmrecordMapper;
private String fileagentUrl;
@Autowired
public TraffalarmrecordService(TraffAlarmRecordMapper traffalarmrecordMapper,
@Value("${gs.traff.cloud.web.fileagent.url}") String fileagentUrl) {
this.traffalarmrecordMapper = traffalarmrecordMapper;
this.fileagentUrl = fileagentUrl;
}
public void saveTraffalarmrecord(Traffalarmrecord traffalarmrecord) {
traffalarmrecordMapper.insertSelective(traffalarmrecord);
}
public void saveTraffalarmrecordList(List<Traffalarmrecord> traffalarmrecordList) {
traffalarmrecordMapper.insertList(traffalarmrecordList);
}
public void deleteTraffalarmrecord(Traffalarmrecord traffalarmrecord) {
traffalarmrecordMapper.deleteByPrimaryKey(traffalarmrecord);
}
public void deleteTraffalarmrecordList(List<Traffalarmrecord> traffalarmrecordList) {
for (Traffalarmrecord traffalarmrecord:traffalarmrecordList) {
traffalarmrecordMapper.deleteByPrimaryKey(traffalarmrecord);
}
}
public void updateTraffalarmrecord(Traffalarmrecord traffalarmrecord) {
traffalarmrecordMapper.updateByPrimaryKeySelective(traffalarmrecord);
}
public Traffalarmrecord queryTraffalarmrecord(Traffalarmrecord traffalarmrecord) {
return traffalarmrecordMapper.selectOne(traffalarmrecord);
}
public int countTraffalarmrecord(Traffalarmrecord traffalarmrecord) {
return traffalarmrecordMapper.selectCount(traffalarmrecord);
}
}
\ No newline at end of file
package com.hzjt.service;
import cn.hutool.json.JSONUtil;
import com.hzjt.domain.*;
import com.hzjt.mapper.SbtdspsrMapper;
import com.hzjt.mapper.TraffdevicewriteresultMapper;
import com.hzjt.util.ThreadPoolUtil;
import com.hzjt.util.TransHelper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;
@Service
@Slf4j
public class TraffdevicewriteresultService {
@Autowired
private RestTemplate restTemplate;
@Value("${qingzhi.devicewrite.url}")
private String url;
@Value("${qingzhi.devicewrite.timeout}")
private Integer timeout;
@Autowired
private TraffdevicewriteresultMapper traffdevicewriteresultMapper;
@Autowired
SbtdspsrMapper sbtdspsrMapper;
@Autowired
StringRedisTemplate stringRedisTemplate;
@Value("${qingzhi.devicewritesupplier.name}")
String devicesupplier;
@Value("${qingzhi.redis.token}")
String qztoken;
@Value("${qingzhi.devicewrite.url}")
String devicewriteurl;
private static CompletionService<ResultObj> threadService = new ExecutorCompletionService<ResultObj>(ThreadPoolUtil.getPool());
public List<ResultObj> sendDevices(List<String> xhs) {
List<SbtdspsrParams> sbtdspsrs = traffdevicewriteresultMapper.querySbtdspsrByXh(xhs);
List<ResultObj> resultObj = new ArrayList<>();
try {
Traffdevicewriteresult param = new Traffdevicewriteresult();
for (SbtdspsrParams val : sbtdspsrs) {
threadService.submit(() -> {
ResultObj obj = sendToGuangda(val, param);
obj.setData(val.getSbbh() + "_" + val.getTdbh());
return obj;
});
}
for (int i = 0; i < sbtdspsrs.size(); i++) {
resultObj.add(threadService.poll(10, TimeUnit.SECONDS).get());
}
} catch (Exception e) {
log.error("devicewrite - sendEvent 异常:" + e.toString());
resultObj.add(ResultObj.error(ResponseEnum.E_9999.getCode(), e.toString()));
}
return resultObj;
}
public ResultObj sendToGuangda(SbtdspsrParams val, Traffdevicewriteresult param) throws Exception {
if (val.getXzbh() == null) {
log.error("deviceWritePost {} : regist remsg...", "设备所属单位机构编码必填");
return ResultObj.error(ResponseEnum.E_1002.getCode(), "设备所属单位机构编码必填");
} else if (val.getDeviceconfig() == null) {
log.error("deviceWritePost {} : regist remsg...", "请impn先配置设备推送配置");
return ResultObj.error(ResponseEnum.E_1002.getCode(), "请impn先配置设备推送配置");
} else {
//转成第三方对象
DeviceWriteParam item = JSONUtil.toBean(val.getDeviceconfig(), DeviceWriteParam.class);
item.setDeviceID(val.getWbbh());
item.setDeviceName(val.getTdmc());
item.setRegionID(val.getXzbh());
item.setDeviceStatus(1);
item.setDeviceSupplier(devicesupplier);
item.setDataType(1);
WriteResultObj writeResultObj=null;
try {
//调用第三方的restful
writeResultObj = deviceWritePost(item);
}
catch (TimeoutException e) {
log.error("eventwrite - sendEvents 请求超时:" + e.toString());
return ResultObj.error(ResponseEnum.E_1008.getCode(), ResponseEnum.E_1008.getMsg());
} catch (Exception e) {
log.error("eventwrite - sendEvents 异常:" + e.toString());
return ResultObj.error(ResponseEnum.E_9999.getCode(), e.toString());
}
if (writeResultObj == null) {
return ResultObj.error(ResponseEnum.E_9999.getCode(), "token凭证获取失败");
}
param.setSbbh(val.getSbbh());
param.setTdbh(val.getTdbh());
Traffdevicewriteresult traffdevicewriteresult = traffdevicewriteresultMapper.selectOne(param);
param.setPushdesc(writeResultObj.getMessage());
param.setXzbh(val.getXzbh());
param.setPushcount(1L);
if (writeResultObj.getStatus() == 200) {
param.setPushstatus(Long.valueOf(0));
} else {
param.setPushstatus(Long.valueOf(1));
}
//数据库记录操作
if (traffdevicewriteresult == null) {
traffdevicewriteresultMapper.insertSelective(param);
} else {
if (traffdevicewriteresult.getPushstatus() == 0) {
param.setPushstatus(Long.valueOf(0));
param.setPushcount(traffdevicewriteresult.getPushcount() + 1);
}
traffdevicewriteresultMapper.updateByPrimaryKeySelective(param);
}
if (writeResultObj.getStatus() == 200) {
param.setPushstatus(Long.valueOf(0));
return ResultObj.ok(writeResultObj.getStatus());
} else {
param.setPushstatus(Long.valueOf(1));
return ResultObj.error(writeResultObj.getStatus(), writeResultObj.getMessage());
}
}
}
public ResultObj updateAndRegist(SbtdspsrParam sbtdspsr) {
ResultObj res;
String pushdesc;
long pushstatus = 0;
assert sbtdspsr != null;
if (sbtdspsr.getXzbh() == null) {
res = ResultObj.error(ResponseEnum.E_1002.getCode(), "设备所属单位机构编码必填");
log.error("deviceWritePost {} : regist remsg...", "设备所属单位机构编码必填");
} else if (sbtdspsr.getDeviceconfig() == null) {
res = ResultObj.error(ResponseEnum.E_1002.getCode(), "请impn先配置设备推送配置");
log.error("deviceWritePost {} : regist remsg...", "请impn先配置设备推送配置");
} else {
res = doDeviceWriteGetResultObj(sbtdspsr);
}
if (res.getStatus() == 200) {
pushdesc = res.getData().toString();
} else {
pushdesc = res.getMsg();
pushstatus = 1;
}
//数据库记录操作
Traffdevicewriteresult traffdevicewriteresult = traffdevicewriteresultMapper.selectOne(TransHelper.transDeviceWriteResult(sbtdspsr));
if (traffdevicewriteresult == null) {
traffdevicewriteresultMapper.insertSelective(TransHelper.transDeviceWriteResult(sbtdspsr, pushstatus, pushdesc));
} else {
if (traffdevicewriteresult.getPushstatus() == 0) {
pushstatus = 0;
}
traffdevicewriteresultMapper.updateByPrimaryKeySelective(TransHelper.transDeviceWriteResult(sbtdspsr, pushstatus, pushdesc, traffdevicewriteresult.getPushcount() + 1));
}
return res;
}
public ResultObj registall(HttpServletResponse response) {
response.setContentType("text/html;charset=utf-8");
String ret;
int count, susscee = 0, fail = 0;
List<SbtdspsrParam> list = sbtdspsrMapper.selectDeviceWrite();
count = list.size();
try {
write(response, "共查询出需要写入的设备" + count + "条");
} catch (IOException e) {
log.error("设备批量写入 registall -->>io异常" + e.toString());
}
for (SbtdspsrParam val : list) {
try {
write(response, "--->>>开始写入第" + (susscee + fail + 1) + "条,剩余" + (count - susscee - fail - 1) + "条。设备编号:" + val.getSbbh() + ",通道编号:" + val.getTdbh() + ",设备名称:" + val.getTdmc());
ResultObj regest = updateAndRegist(val);
if (regest.getStatus() == 200) {
susscee++;
write(response, "<<<---写入成功:" + regest.getData());
} else {
fail++;
write(response, "<<<---写入失败:" + regest.getMsg());
}
} catch (IOException e) {
log.error("设备批量写入 registall -->>io异常" + e.toString());
}
}
ret = "查询出需要设备写入的设备数:" + count + "条,其中成功" + susscee + "条,失败" + fail + "条";
try {
write(response, ret);
} catch (IOException e) {
log.error("设备批量写入 registall -->>io异常" + e.toString());
}
return ResultObj.ok(ret);
}
public ResultObj update(SbtdspsrParam sbtdspsr) {
DeviceWriteParam param = TransHelper.transDevice(sbtdspsr, CodeConst.device_update);
WriteResultObj writeResultObj = new WriteResultObj(); //deviceWritePost(param);
if (writeResultObj.getStatus() == 200) {
return ResultObj.ok(writeResultObj.getMessage());
}
return ResultObj.error(writeResultObj.getStatus(), writeResultObj.getMessage());
}
public ResultObj remove(SbtdspsrParam sbtdspsr) {
DeviceWriteParam param = TransHelper.transDevice(sbtdspsr, CodeConst.device_remove);
WriteResultObj writeResultObj = new WriteResultObj(); //deviceWritePost(param);
if (writeResultObj.getStatus() == 200) {
return ResultObj.ok(writeResultObj.getMessage());
}
return ResultObj.error(writeResultObj.getStatus(), writeResultObj.getMessage());
}
public ResultObj report(SbtdspsrParam sbtdspsr) {
DeviceWriteParam param = TransHelper.transDevice(sbtdspsr, CodeConst.device_report);
WriteResultObj writeResultObj = new WriteResultObj(); //deviceWritePost(param);
if (writeResultObj.getStatus() == 200) {
return ResultObj.ok(writeResultObj.getMessage());
}
return ResultObj.error(writeResultObj.getStatus(), writeResultObj.getMessage());
}
private WriteResultObj deviceWritePost(DeviceWriteParam param) throws TimeoutException, InterruptedException,Exception{
HttpHeaders headers = new HttpHeaders();
String token = stringRedisTemplate.opsForValue().get(qztoken);
if (token == null) {
log.error("deviceWritePost {} : redis token empty..", qztoken);
return null;
}
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
headers.add("token", token);//
List<DeviceWriteParam> list = new ArrayList<>();
list.add(param);
HttpEntity<List<DeviceWriteParam>> requestEntity = new HttpEntity<>(list, headers);
WriteResultObj writeResultObj = CompletableFuture.supplyAsync(() -> restTemplate.postForObject(devicewriteurl, requestEntity, WriteResultObj.class)).get(timeout, TimeUnit.SECONDS);
return writeResultObj;
}
private ResultObj doDeviceWriteGetResultObj(SbtdspsrParam sbtdspsr) {
ResultObj res;
sbtdspsr.setSbcsName(devicesupplier);
//组装请求数据
DeviceWriteParam param = TransHelper.transDevice(sbtdspsr, CodeConst.device_regist);
WriteResultObj writeResultObj;
try {
//发送请求返回结果
writeResultObj = deviceWritePost(param);
if (writeResultObj == null) {
writeResultObj = new WriteResultObj(ResponseEnum.E_9999.getCode(), "token凭证获取失败");
}
} catch (TimeoutException e) {
log.error("devicewrite - sendEvent 请求超时:" + e.toString());
writeResultObj = new WriteResultObj(ResponseEnum.E_1008.getCode(), ResponseEnum.E_1008.getMsg());
} catch (Exception e) {
log.error("devicewrite - sendEvent 异常:" + e.toString());
writeResultObj = new WriteResultObj(ResponseEnum.E_9999.getCode(), e.toString());
}
//判断成功还是失败
if (writeResultObj.getStatus() == 200) {
res = ResultObj.ok(writeResultObj.getMessage());
log.info("deviceWritePost {} : regist remsg...Data=" + param.toString(), writeResultObj.toString());
} else {
res = ResultObj.error(writeResultObj.getStatus(), writeResultObj.getMessage());
log.error("deviceWritePost {} : regist remsg...Data=" + param.toString(), writeResultObj.toString());
}
return res;
}
private void write(HttpServletResponse response, String content) throws IOException {
response.getWriter().write(content + "<br/>");
response.flushBuffer();
response.getWriter().flush();
}
public ResultObj updateAndRegists(List<SbtdspsrParam> sbtdspsrs) {
int error = 0;
int success = 0;
for (SbtdspsrParam ta : sbtdspsrs) {
ResultObj resultObj = updateAndRegist(ta);
boolean successFlag = resultObj.getStatus() == ResponseEnum.SUCCESS.getCode();
/* 成功 */
if (successFlag) {
success++;
continue;
}
error++;
}
return ResultObj.error(ResponseEnum.SUCCESS.getCode(), "成功" + success + "条|失败" + error + "条");
}
}
\ No newline at end of file
package com.hzjt.service.impl;
import com.hzjt.domain.Alarm;
import com.hzjt.redis.RedisDao;
import com.hzjt.service.ImportService;
import com.hzjt.util.Constant;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
@Service
public class ImportServiceImpl implements ImportService {
@Autowired
RedisDao redisDao;
@Override
@Transactional
public void cleanCache() {
List<String> keyList = new ArrayList<>(10);
keyList.add(Constant.failToDBKey);
keyList.add(Constant.succSizeTempKey);
keyList.add(Constant.failListKey);
keyList.add(Constant.failSizeKey);
keyList.add(Constant.succSizeKey);
redisDao.cleanCache(keyList);
}
/**
* @Description: 将参数result中的部分数据存入redis中,并把格式校验成功的数据发布至对应频道中
* @Param: [result]
* @Retrun: void
*/
@Override
@Transactional
public void cacheAndPublish(String result) {
redisDao.setStringKey(Constant.succSizeKey, 1);
// succSizeTempKey 用于判断消息队列中未消费数据的大小
redisDao.setStringKey(Constant.succSizeTempKey, 1);
// redisDao.setStringKey(Constant.successListKey,successList);
// 发布消息
redisDao.publish(Constant.receiveSingle, result);
//
// // 通过校验的数据
// List<Alarm> successList = result.getList();
// // 未通过校验的数据
// List<Alarm> failList = result.getFailList();
// int succSize = successList.size();
// int failSize = failList.size();
// // 将未通过校验的数据存入redis中
// redisDao.setStringKey(Constant.failListKey, failList);
// redisDao.setStringKey(Constant.failSizeKey, failSize);
// // 将通过校验的数据存入redis中
// redisDao.setStringKey(Constant.succSizeKey, succSize);
// // succSizeTempKey 用于判断消息队列中未消费数据的大小
// redisDao.setStringKey(Constant.succSizeTempKey, succSize);
//// redisDao.setStringKey(Constant.successListKey,successList);
// // 发布消息
// redisDao.publish(Constant.receiveList, successList);
}
/**
* @Description: 根据key值,返回redis中对应的结果
* @Param: [key]
* @Retrun: long
*/
@Override
public long getTempSize(String key) {
return redisDao.getStringValue(key, long.class);
}
}
\ No newline at end of file
package com.hzjt.service.impl;
import com.hzjt.domain.Traffalarmrecord;
import com.hzjt.service.TraffAlarmRecordImg;
/**
* TraffAlarmRecord对象设置图片X地址
* @author cp
*/
public enum TraffAlarmRecordImgEnum implements TraffAlarmRecordImg {
/**
* 根据图片设置地址
*/
IMG0 {
@Override
public void setImg(Traffalarmrecord traffAlarmRecord, String img) {
traffAlarmRecord.setImg1path(img);
}
},
IMG1 {
@Override
public void setImg(Traffalarmrecord traffAlarmRecord, String img) {
traffAlarmRecord.setImg2path(img);
}
},
IMG2 {
@Override
public void setImg(Traffalarmrecord traffAlarmRecord, String img) {
traffAlarmRecord.setImg3path(img);
}
},
IMG3 {
@Override
public void setImg(Traffalarmrecord traffAlarmRecord, String img) {
traffAlarmRecord.setImg4path(img);
}
},
IMG4 {
@Override
public void setImg(Traffalarmrecord traffAlarmRecord, String img) {
traffAlarmRecord.setImg5path(img);
}
}
}
package com.hzjt.util;
/**
* @Description: 常量
* @Author: 杨东川【http://blog.csdn.net/yangdongchuan1995】
* @Date: Created in 2018-2-6
*/
public class Constant {
// 未通过格式校验的数据
public static final String failListKey = "excelToDB:failListKey";
// 已通过格式校验的数据
public static final String successListKey = "excelToDB:successListKey";
// 未通过格式校验的数据大小
public static final String failSizeKey = "excelToDB:failSizeKey";
// 已通过格式校验的数据大小
public static final String succSizeKey = "excelToDB:succSizeKey";
// 消息队列中未被消费的数据大小
public static final String succSizeTempKey = "excelToDB:succSizeTempKey";
// 导入数据库失败的数据大小
public static final String failToDBKey = "excelToDB:failToDBKey";
// redis中,发布者中所使用到的频道名称
public static final String receiveSingle = "excelToDB:receiveSingle";
public static final String receiveList = "excelToDB:receiveList";
// redis中,消费者的方法名
public static final String singleMethodName = "receiveSingle";
public static final String listMethodName = "receiveList";
}
package com.hzjt.util;
import org.joda.time.DateTime;
import org.joda.time.Days;
import org.joda.time.Months;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import java.util.Date;
/**
* ʱ���ʽת���� 2019.10.23
* @author cp
*/
public class DateUtils {
private static final DateTimeFormatter YMD_HMS = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
private static final DateTimeFormatter YMDHMS = DateTimeFormat.forPattern("yyyyMMddHHmmss");
private static final DateTimeFormatter YMD = DateTimeFormat.forPattern("yyyyMMdd");
public static String formatCurrDate(){
return formatCurrDateByType(YMD_HMS);
}
public static String formatCurrDateNoSign(){
return formatCurrDateByType(YMDHMS);
}
public static String formatCurrDayNoSign(){
return formatCurrDateByType(YMD);
}
public static Date parseDate(String date){
return DateTime.parse(date,YMD_HMS).toDate();
}
public static Date parseDateNoSign(String date){
return DateTime.parse(date,YMDHMS).toDate();
}
public static String formatDate(Date date){
return new DateTime(date).toString(YMD_HMS);
}
public static String formatDateToNoSign(Date date){
return new DateTime(date).toString(YMDHMS);
}
public static String formatDateToNoSign(String date){
return DateTime.parse(date,YMD_HMS).toString(YMDHMS);
}
private static String formatCurrDateByType(DateTimeFormatter dateTimeFormatter){
return DateTime.now().toString(dateTimeFormatter);
}
public static Date addMinutes(Date date, int minutes) {
return new DateTime(date).plusMinutes(minutes).toDate();
}
public static Date addDay(Date date, int day) {
if(day == 0){
return date;
}
return new DateTime(date).plusDays(day).toDate();
}
public static Date addMonth(Date date, int month) {
if(month == 0){
return date;
}
return new DateTime(date).plusMonths(month).toDate();
}
/**
* ����ʱ����������
* @param date1 ʱ��1
* @param date2 ʱ��2
* @return ����
*/
public static int diffMonth(Date date1, Date date2) {
if (date1 == null || date2 == null) {
return 0;
}
DateTime dt1 = new DateTime(date1);
DateTime dt2 = new DateTime(date2);
return Months.monthsBetween(dt1, dt2).getMonths();
}
/**
* ����ʱ����������
* @param date1 ʱ��1
* @param date2 ʱ��2
* @return ����
*/
public static int diffDay(Date date1, Date date2) {
if (date1 == null || date2 == null) {
return 0;
}
DateTime dt1 = new DateTime(date1);
DateTime dt2 = new DateTime(date2);
return Days.daysBetween(dt1, dt2).getDays();
}
}
package com.hzjt.util;
import com.hzjt.domain.Ftp;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import sun.misc.BASE64Decoder;
import javax.annotation.PostConstruct;
import java.io.*;
import java.net.MalformedURLException;
import java.net.SocketException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@SuppressWarnings("all")
@Component
public class FTPUtil {
@Value("${ftp.host}")
private String ftpHost ;
private List<Ftp> ftps = new ArrayList<Ftp>();
@PostConstruct
private void initHostMap(){
if(ftpHost==null){
log.error("ftp存储组未配置,请先配置");
log.error("ftp存储组未配置,请先配置");
return;
}
}
public static void downLoadFile(String path, OutputStream toClient) {
BufferedInputStream bis = null;
InputStream is = null;
try {
if (path.toUpperCase().indexOf("FTP") != -1) {
String tempUrl = path;
tempUrl = tempUrl.replaceAll("\\\\", "/");
URL url = new URL(tempUrl);
is = url.openStream();
bis = new BufferedInputStream(is);
IOUtils.copy(bis, toClient);
return;
}
} catch (Exception e) {
log.error("FTP下载图片出错", e);
} finally {
IOUtils.closeQuietly(toClient);
IOUtils.closeQuietly(is);
IOUtils.closeQuietly(bis);
}
}
public static byte[] getFtpPicBytes(String path) {
URL url = null;
try {
url = new URL(path);
} catch (MalformedURLException e) {
log.error("FTP URL路径错误"+e.toString());
}
byte[] buffer = null;
try (InputStream is = url.openStream();ByteArrayOutputStream bos = new ByteArrayOutputStream(1000)){
byte[] b = new byte[1000];
int n;
while ((n = is.read(b)) != -1) {
bos.write(b, 0, n);
}
buffer = bos.toByteArray();
}catch (Exception e) {
log.error("FTP下载图片出错", e);
}
return buffer;
}
//ftp图片上传,图片参数为base64封装的String
public static boolean uploadFile(Ftp ftpUrl, String path, String filename, String inputImg) {
boolean flag = true;
FTPClient ftpClient = null;
ByteArrayInputStream input = null;
try {
if (inputImg == null) {
return false;
}
//base64解码
BASE64Decoder decoder = new BASE64Decoder();
byte[] b_img = decoder.decodeBuffer(inputImg);
input = new ByteArrayInputStream(b_img);
ftpClient = connectServer(ftpUrl);
//new ByteArrayInputStream
if (ftpClient.isConnected()) {
changeWorkingDirectory(ftpClient, path);
flag = ftpClient.storeFile(filename, input);
if (flag) {
log.info("FTP上传文件成功!");
} else {
flag = false;
log.info("FTP上传文件失败!");
}
}
} catch (Exception e) {
flag = false;
log.error("FTP文件上传失败!", e.toString());
} finally {
IOUtils.closeQuietly(input);
closeConnect(ftpClient);
}
return flag;
}
public static boolean uploadFile(Ftp ftpUrl, String path, String filename, InputStream input){
boolean flag = true;
FTPClient ftpClient = null;
try {
ftpClient = connectServer(ftpUrl);
if (ftpClient.isConnected()) {
changeWorkingDirectory(ftpClient, path);
flag = ftpClient.storeFile(filename, input);
if (flag) {
log.info("FTP上传文件成功!");
} else {
log.info("FTP上传文件失败!");
}
} else {
flag = false;
log.info("FTP server refused connection !");
log.info("FTP server refused connection !");
}
} catch (IOException e) {
flag = false;
log.error("FTP文件上传失败!", e);
} catch (Exception e) {
flag = false;
log.error("FTP文件上传失败!", e);
} finally {
IOUtils.closeQuietly(input);
closeConnect(ftpClient);
}
return flag;
}
/*
* 得到配置文件中的FTP服务器地址
*/
public static String getFtpUrl(Ftp ftpUrl) {
StringBuffer buffer = new StringBuffer();
buffer.append("ftp://");
String ftpUsername = ftpUrl.getFtpUsername();
if (ftpUsername != null && ftpUsername.trim().length() > 0) {
buffer.append(ftpUsername);
buffer.append(":");
buffer.append(ftpUrl.getFtpPassword());
buffer.append("@");
}
buffer.append(ftpUrl.getFtpIp());
if (ftpUrl.getFtpPort() != null) {
buffer.append(":");
buffer.append(ftpUrl.getFtpPort());
}
buffer.append("/");
return buffer.toString();
}
/**
* @param ftpUrl
* @return
* @throws Exception
* @description 删除ftp上的文件
* @author sunw
*/
public static boolean deleteFileFromFtpUrl(String ftpUrl) throws Exception {
boolean flag = false;
if (null == ftpUrl || StringUtils.isBlank(ftpUrl)) {
throw new Exception("ftpUrl串为空");
}
Map<String, String> result = getFtpInfoMapByFullPath(ftpUrl);
String ftpUser = result.get("ftpUser");
String ftpPassword = result.get("ftpPassword");
String ftpIp = result.get("ftpIp");
String ftpPort = result.get("ftpPort");
String fileName = result.get("fileName");
String path = result.get("path");
Ftp ftp = FTPUtil.getFtpUrlObj(ftpIp, ftpPort, ftpUser, ftpPassword);
FTPClient ftpClient = connectServer(ftp);
if (null == ftpClient) {
throw new Exception("ftp登录失败 ");
} else {
String fullPath = (null == path || "".equals(path.trim())) ? fileName : (path + "/" + fileName);
try {
flag = ftpClient.deleteFile(fullPath);
} catch (Exception e) {
e.printStackTrace();
}
}
return flag;
}
/**
* @param ftpUrlStr
* @return
* @throws Exception
* @author sunw 通过图片路径
* 获得ftpuser,ftppassword,ftpip,ftpport,在fpt上的文件路径,文件realname
*/
private static Map<String, String> getFtpInfoMapByFullPath(String ftpUrlStr) throws Exception {
if (null == ftpUrlStr || "".equals(ftpUrlStr.trim())) {
throw new Exception("ftpstr串为空");
}
ftpUrlStr = ftpUrlStr.replaceAll("\\\\", "/");
ftpUrlStr = changeUrlCharater(ftpUrlStr);
String array[] = ftpUrlStr.split("/");
String[] ftpUserPasswordAndIpPort = array[2].split("@");
String[] ftpUserAndPassword = ftpUserPasswordAndIpPort[0].split(":");
String[] ftpIpAndPort = ftpUserPasswordAndIpPort[1].split(":");
String ftpUser = ftpUserAndPassword[0];
String ftpPassword = ftpUserAndPassword[1];
String ftpIp = ftpIpAndPort[0];
String ftpPort = ftpIpAndPort.length > 1 ? ftpIpAndPort[1] : "";
String fileName = array[array.length - 1];// 获得文件名
Map<String, String> resultMap = new HashMap<String, String>();
resultMap.put("ftpUser", ftpUser);
resultMap.put("ftpPassword", ftpPassword);
resultMap.put("ftpIp", ftpIp);
resultMap.put("ftpPort", ftpPort);
resultMap.put("fileName", fileName);
String path = "";
for (int i = 3; i < array.length - 1; i++) {
if (i != array.length - 2) {
path += array[i] + "/";
} else {
path += array[i];
}
}
resultMap.put("path", path);
return resultMap;
}
public static void main(String[] args) {
String temp = "ftp://vpftp:zn7070@10.10.10.207:21/2018/0101.jpg";
try {
boolean flag = deleteFileFromFtpUrl(temp);
System.out.println(flag);
} catch (Exception e) {
System.out.println("删除文件失败");
}
// String [] strSplit = temp.split("/");
// for(int i = 0 ; i < strSplit.length ; i++) {
// System.out.println(i+" = " + strSplit[i]);
// }
}
public static String changeUrlCharater(String tempUrl) {
tempUrl = tempUrl.replaceAll("%", "%25").replaceAll("#", "%23").replaceAll("\\+", "%2B").replaceAll("&", "%26");
tempUrl = tempUrl.replaceAll("=", "%3D").replaceAll("\\?", "%3F");
return tempUrl;
}
/**
* 连接到服务器
*/
private static FTPClient connectServer(Ftp ftpUrl) {
FTPClient ftpClient = null;
try {
ftpClient = new FTPClient();
ftpClient.setControlEncoding("utf-8");
if (ftpUrl.getFtpPort() != null) {
ftpClient.setDefaultPort(ftpUrl.getFtpPort());
}
ftpClient.connect(ftpUrl.getFtpIp());
ftpClient.login(ftpUrl.getFtpUsername(), ftpUrl.getFtpPassword());
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
ftpClient.enterLocalPassiveMode();
// ftpClient.setFileTransferMode(FTP.STREAM_TRANSFER_MODE);
ftpClient.setBufferSize(10240);
int reply = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftpClient.disconnect();
System.err.println("FTP server refused connection.");
log.info("FTP 服务拒绝连接!");
}
} catch (SocketException e) {
log.error("登录ftp服务器 " + ftpUrl.getFtpIp() + " 失败,连接超时!", e);
} catch (IOException e) {
log.error("登录ftp服务器 " + ftpUrl.getFtpIp() + " 失败,FTP服务器无法打开!", e);
}
return ftpClient;
}
/**
* 关闭连接
*/
private static void closeConnect(FTPClient ftpClient) {
try {
if (ftpClient != null) {
if (ftpClient.isConnected() == true) {
ftpClient.logout();
}
ftpClient.disconnect();
}
} catch (Exception e) {
log.error("关闭ftp连接失败", e);
}
}
/**
* 进入到服务器的某个目录下
*
* @param directory
*/
private static void changeWorkingDirectory(FTPClient ftpClient, String directory) throws Exception {
try {
if(directory.contains("\\")){
directory = directory.replaceAll("\\\\","/");
}
String splitType = "/";
ftpClient.changeWorkingDirectory(splitType);
String[] subPathArray = directory.split(splitType);
for (String subPath : subPathArray) {
ftpClient.makeDirectory(subPath);
ftpClient.changeWorkingDirectory(subPath);
}
} catch (IOException ioe) {
log.error("改变ftp工作路径失败", ioe);
}
}
/**
* 转码[ISO-8859-1 -> GBK] 不同的平台需要不同的转码
*
* @param obj
* @return ""
*/
private static String iso8859togbk(Object obj) {
try {
if (obj == null) {
return "";
}
return new String(obj.toString().getBytes("iso-8859-1"), "GBK");
} catch (Exception e) {
return "";
}
}
public static Ftp getFtpUrlObj(String ftpIp, String ftpPort, String ftpUser, String ftpPassword) {
Ftp ftpUrl = new Ftp();
ftpUrl.setFtpIp(ftpIp);
if (ftpPort != null) {
ftpUrl.setFtpPort(Integer.parseInt(ftpPort));
}
ftpUrl.setFtpUsername(ftpUser);
ftpUrl.setFtpPassword(ftpPassword);
return ftpUrl;
}
}
package com.hzjt.util;
import com.alibaba.fastjson.JSON;
import java.util.List;
/**
* @Description: 工具类
* @Author: 杨东川【http://blog.csdn.net/yangdongchuan1995】
* @Date: Created in 2018-2-6
*/
public class JsonUtil {
public static <T> String beanToString(T value) {
if (value == null) {
return null;
}
Class<?> clazz = value.getClass();
if (clazz == int.class || clazz == Integer.class) {
return "" + value;
} else if (clazz == String.class) {
return (String) value;
} else if (clazz == long.class || clazz == Long.class) {
return "" + value;
} else {
return JSON.toJSONString(value);
}
}
public static <T> T stringToBean(String str, Class<T> clazz) {
if (str == null || str.length() <= 0 || clazz == null) {
return null;
}
if (clazz == int.class || clazz == Integer.class) {
return (T) Integer.valueOf(str);
} else if (clazz == String.class) {
return (T) str;
} else if (clazz == long.class || clazz == Long.class) {
return (T) Long.valueOf(str);
} else {
return JSON.toJavaObject(JSON.parseObject(str), clazz);
}
}
/**
* @Description: json字符串转换为对应的(clazz)对象集合
* @Param: [str, clazz]
* @Retrun: java.util.List<T>
*/
public static <T> List<T> stringToList(String str, Class<T> clazz) {
return JSON.parseArray(str, clazz);
}
}
package com.hzjt.util;
import lombok.Getter;
/**
* 通用序列枚举类
* @author cp
*/
@Getter
public enum RedisEnum {
/**
* 支队心跳
*/
DETACHMENT_HEART_BEATS("gs:traff:detachment:heartbeats"),
/**
* FTP List
*/
FTPLIST("gs:traff:global:cache:ftplist"),
/**
* ftp index
*/
FTPLIST_INDEX("gs:traff:global:cache:ftplistindex");
private String value;
RedisEnum(String value){
this.value =value;
}
}
package com.hzjt.util;
import lombok.Getter;
/**
* 通用序列枚举类
* @author cp
*/
@Getter
public enum SeqEnum {
/**
* 字符串常量
*/
SEQ_TRAFF("SEQ_TRAFF_COMMON_KEY");
private String value;
SeqEnum(String value){
this.value =value;
}
}
package com.hzjt.util;
import lombok.Getter;
/**
* 通用字符串枚举类
* @author cp
*/
@Getter
public enum StringEnum {
/**
* 字符串常量
*/
ONE("1");
private String value;
StringEnum(String value){
this.value =value;
}
}
package com.hzjt.util;
import java.util.concurrent.*;
import java.util.concurrent.ThreadPoolExecutor.CallerRunsPolicy;
public class ThreadPoolUtil {
private static BlockingQueue<Runnable> queue = new LinkedBlockingQueue<Runnable>(5000);
private static final ExecutorService pool =new ThreadPoolExecutor(10, 30, 2L, TimeUnit.MINUTES,
queue , Executors.defaultThreadFactory(), new CallerRunsPolicy());
private static final ScheduledExecutorService schedulepool = Executors.newScheduledThreadPool(2);
public static ScheduledExecutorService getSchedulePool() {
return schedulepool;
}
public static ExecutorService getPool() {
return pool;
}
public static int getQueueSize(){
return queue.size();
}
public static void executeSchedule(Runnable thread){
getSchedulePool().execute(thread);
}
public static void execute(Runnable thread){
getPool().execute(thread);
}
}
package com.hzjt.util;
import com.hzjt.domain.Traffalarmrecord;
import com.hzjt.service.TraffAlarmRecordImg;
/**
* TraffAlarmRecord对象设置图片X源地址
* @author cp
*/
public enum TraffAlarmRecordFromImgEnum implements TraffAlarmRecordImg {
/**
* 根据图片设置地址
*/
IMG0 {
@Override
public void setImg(Traffalarmrecord traffAlarmRecord, String img) {
traffAlarmRecord.setImg1urlfrom(img);
}
},
IMG1 {
@Override
public void setImg(Traffalarmrecord traffAlarmRecord, String img) {
traffAlarmRecord.setImg2urlfrom(img);
}
},
IMG2 {
@Override
public void setImg(Traffalarmrecord traffAlarmRecord, String img) {
traffAlarmRecord.setImg3urlfrom(img);
}
},
IMG3 {
@Override
public void setImg(Traffalarmrecord traffAlarmRecord, String img) {
traffAlarmRecord.setImg4urlfrom(img);
}
},
IMG4 {
@Override
public void setImg(Traffalarmrecord traffAlarmRecord, String img) {
traffAlarmRecord.setImg5urlfrom(img);
}
}
}
package com.hzjt.util;
import com.hzjt.domain.Traffalarmrecord;
import com.hzjt.service.TraffAlarmRecordImg;
/**
* TraffAlarmRecord对象设置图片X地址
* @author cp
*/
public enum TraffAlarmRecordImgEnum implements TraffAlarmRecordImg {
/**
* 根据图片设置地址
*/
IMG0 {
@Override
public void setImg(Traffalarmrecord traffAlarmRecord, String img) {
traffAlarmRecord.setImg1path(img);
}
},
IMG1 {
@Override
public void setImg(Traffalarmrecord traffAlarmRecord, String img) {
traffAlarmRecord.setImg2path(img);
}
},
IMG2 {
@Override
public void setImg(Traffalarmrecord traffAlarmRecord, String img) {
traffAlarmRecord.setImg3path(img);
}
},
IMG3 {
@Override
public void setImg(Traffalarmrecord traffAlarmRecord, String img) {
traffAlarmRecord.setImg4path(img);
}
},
IMG4 {
@Override
public void setImg(Traffalarmrecord traffAlarmRecord, String img) {
traffAlarmRecord.setImg5path(img);
}
}
}
package com.hzjt.util;
import com.alibaba.fastjson.JSONObject;
import com.hzjt.domain.DeviceWriteParam;
import com.hzjt.domain.SbtdspsrParam;
import com.hzjt.domain.Traffdevicewriteresult;
import org.apache.commons.lang3.StringUtils;
/**
* @author chenl
* @version 1.0
* @date 2020/3/15 22:13
*
* deviceID;
* deviceType;
* deviceName;
* regionID;
* deviceStatus;
* deviceSupplier;
* dataType;
* locationType;
* locationX;
* locationY;
* locationEndX;
* locationEndY;
*/
public class TransHelper {
public static DeviceWriteParam transDevice(SbtdspsrParam sbtdspsr, int dataType){
DeviceWriteParam param = new DeviceWriteParam();
Long sbtdbh = sbtdspsr.getTdbh();
//设备ID
param.setDeviceID(sbtdspsr.getSbbh() + ( sbtdbh >= 10 ? sbtdbh : "0" + sbtdbh));
//设备名称
param.setDeviceName(sbtdspsr.getTdmc());
//设备行政编号
param.setRegionID(sbtdspsr.getXzbh());
//设备状态正常填1
param.setDeviceStatus(1);
//设备推送者zksy中科
param.setDeviceSupplier(sbtdspsr.getSbcsName());
//设备注册操作填1
param.setDataType(dataType);
//设备额外配置JSON字符串
JSONObject jsonObject = JSONObject.parseObject(sbtdspsr.getDeviceconfig());
//道路类型
if(jsonObject.get("RoadType")!=null){
param.setRoadType(Integer.parseInt(jsonObject.get("RoadType").toString()));
}
//设备类型
if(jsonObject.get("DeviceType")!=null && StringUtils.isNotBlank(jsonObject.get("DeviceType").toString())){
param.setDeviceType(jsonObject.get("DeviceType").toString());
}
//所在位置方向。1-上行;2-下行。
if(jsonObject.get("DeviceDirection")!=null){
param.setDeviceDirection(Integer.parseInt(jsonObject.get("DeviceDirection").toString()));
}
//设备所在里程桩公里数
if(jsonObject.get("StartNumK")!=null){
param.setStartNumK(Integer.parseInt(jsonObject.get("StartNumK").toString()));
}
//设备所在里程桩米数
if(jsonObject.get("StartNumM")!=null){
param.setStartNumM(Integer.parseInt(jsonObject.get("StartNumM").toString()));
}
//道路代码 比如:G1504宁波绕城高速
if(jsonObject.get("RoadNum")!=null && StringUtils.isNotBlank(jsonObject.get("RoadNum").toString())){
param.setRoadNum(jsonObject.get("RoadNum").toString());
}
//地点名称。设备所在地点名称例如G15沈海高速、台州收费站、台州服务区、仰义枢纽()
if(jsonObject.get("LocationDesc")!=null && StringUtils.isNotBlank(jsonObject.get("LocationDesc").toString())){
param.setLocationDesc(jsonObject.get("LocationDesc").toString());
}
//所在收费站具体位置
if(jsonObject.get("Toll")!=null){
param.setToll(Integer.parseInt(jsonObject.get("Toll").toString()));
}
//所在地POI编码,例如,XX收费站对应编码
if(jsonObject.get("LocationID")!=null && StringUtils.isNotBlank(jsonObject.get("LocationID").toString())){
param.setLocationID(jsonObject.get("LocationID").toString());
}
//所在服务区具体位置描述
if(jsonObject.get("ServiceArea")!=null){
param.setServiceArea(Integer.parseInt(jsonObject.get("ServiceArea").toString()));
}
//所在匝道(收费站)具体位置描述
if(jsonObject.get("RampToll")!=null){
param.setRampToll(Integer.parseInt(jsonObject.get("RampToll").toString()));
}
//所在匝道(服务区)具体位置描述
if(jsonObject.get("RampServiceArea")!=null){
param.setRampServiceArea(Integer.parseInt(jsonObject.get("RampServiceArea").toString()));
}
//匝道(枢纽)转入的道路代码采用国家统一编码规则比如:G1504宁波绕城高速
if(jsonObject.get("RampHubRoad")!=null && StringUtils.isNotBlank(jsonObject.get("RampHubRoad").toString())){
param.setRampHubRoad(jsonObject.get("RampHubRoad").toString());
}
//匝道(枢纽)转入的道路方向。1-上行;2-下行
if(jsonObject.get("RampHubDirection")!=null){
param.setRampHubDirection(Integer.parseInt(jsonObject.get("RampHubDirection").toString()));
}
// param.setLocationType();
// param.setLocationX();
// param.setLocationY();
// param.setLocationEndX();
// param.setLocationEndY();
return param;
}
public static Traffdevicewriteresult transDeviceWriteResult(SbtdspsrParam sbtdspsr) {
Traffdevicewriteresult param = new Traffdevicewriteresult();
param.setSbbh(sbtdspsr.getSbbh());
param.setTdbh(sbtdspsr.getTdbh());
return param;
}
public static Traffdevicewriteresult transDeviceWriteResult(SbtdspsrParam sbtdspsr, Long pushstatus, String pushdesc) {
Traffdevicewriteresult param = new Traffdevicewriteresult();
param.setSbbh(sbtdspsr.getSbbh());
param.setTdbh(sbtdspsr.getTdbh());
param.setPushstatus(pushstatus);
param.setPushcount(1L);
param.setXzbh(sbtdspsr.getXzbh());
param.setPushdesc(pushdesc);
return param;
}
public static Traffdevicewriteresult transDeviceWriteResult(SbtdspsrParam sbtdspsr, Long pushstatus, String pushdesc, Long pushcount) {
Traffdevicewriteresult param = new Traffdevicewriteresult();
param.setSbbh(sbtdspsr.getSbbh());
param.setTdbh(sbtdspsr.getTdbh());
param.setPushstatus(pushstatus);
param.setPushdesc(pushdesc);
param.setPushdesc(pushdesc);
param.setXzbh(sbtdspsr.getXzbh());
param.setPushcount(pushcount);
return param;
}
}
package com.hzjt.util;
import java.util.UUID;
public class UUIDUtils {
/**
* UUID
* @return String32λUUID
*/
public static String createuuid() {
return UUID.randomUUID().toString().replaceAll("-", "");
}
}
#thymeleaf
server.port=8089
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.cache=false
spring.thymeleaf.content-type=text/html
spring.thymeleaf.enabled=true
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.mode=HTML5
# mybatis
mybatis.type-aliases-package=com.hzjt.domain
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.configuration.default-fetch-size=100
mybatis.configuration.default-statement-timeout=3000
#mybatis.mapperLocations = classpath:xxx.xml
## �������ݿ�-����Դ����
#spring.datasource.url=jdbc:dm://127.0.0.1:12345/auditlocal_cq
#spring.datasource.driver-class-name=dm.jdbc.driver.DmDriver
#spring.datasource.username=SYSDBA
#spring.datasource.password=SYSDBA
##���ӳ�����
#spring.datasource.type=org.apache.commons.dbcp.BasicDataSource
#spring.datasource.dbcp2.max-wait-millis=10000
#spring.datasource.dbcp2.min-idle=5
#spring.datasource.dbcp2.initial-size=5
#spring.datasoe.dbcp2.validation-query=SELECT x
#spring.datasource.dbcp2.connection-properties=characterEncoding=utf8
# Mysql���ݿ�-����Դ����
#spring.datasource.username=test
#spring.datasource.password=test
#spring.datasource.url=jdbc:oracle:thin:@localhost:1521:orcl
spring.datasource.username=hzjt
spring.datasource.password=hzjt
spring.datasource.url=jdbc:oracle:thin:@33.50.1.22:1521:orcl
spring.datasource.driverClassName=oracle.jdbc.OracleDriver
# druid
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# ��ʼ����С����С�����
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20
# ���û�ȡ���ӵȴ���ʱ��ʱ��
spring.datasource.maxWait=60000
# ���ü����òŽ���һ�μ�⣬�����Ҫ�رյĿ������ӣ���λ�Ǻ���
spring.datasource.timeBetweenEvictionRunsMillis=60000
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
# ��PSCache������ָ��ÿ��������PSCache�Ĵ�С
spring.datasource.poolPreparedStatements=true
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
# ���ü��ͳ�����ص�filters��ȥ�����ؽ���sql�޷�ͳ�ƣ�'wall'���ڷ���ǽ
spring.datasource.filters=stat,wall
# ͨ��connectProperties��������mergeSql���ܣ���SQL��¼
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# �ϲ����DruidDataSource�ļ������
spring.datasource.useGlobalDataSourceStat=true
#redis
# Redis��������ַ
spring.redis.host=127.0.0.1
# Redis���������Ӷ˿�
spring.redis.port=6379
# Redis�������������루Ĭ��Ϊ�գ�
#spring.redis.password=123456
# Redis���ݿ�������Ĭ��Ϊ0��
spring.redis.database=0
# ���ӳ������������ʹ�ø�ֵ��ʾû�����ƣ�
spring.redis.pool.max-active=8
# ���ӳ���������ȴ�ʱ�䣨ʹ�ø�ֵ��ʾû�����ƣ�
spring.redis.pool.max-wait=5000
# ���ӳ��е�����������
spring.redis.pool.max-idle=8
# ���ӳ��е���С��������
spring.redis.pool.min-idle=0
# ���ӳ�ʱʱ�䣨���룩
spring.redis.timeout=2000
#spring-session ʹ��
spring.session.store-type=none
ip.host=33.57.1.22
port=21
message.dept=33030
message.rate=10
ftp.host=33.50.1.22:21:reader:reader
alarm.subscribe.data.key=gs:traff:alarmlist
# 免审标记 0需审核 1免审
alarmrecord.check.enable=1
spring.profiles.path= D:/imp/config/im/hzjt.properties
spring.redis.cachekey.ftplist=gs:traff:global:cache:ftplist
qingzhi.redis.token=gs:traff:qingzhi:token
qingzhi.devicewrite.url=http://33.50.1.213:38080/api/jtldpt/impld/deviceWrite
qingzhi.devicewritesupplier.name=zksy
qingzhi.devicewrite.timeout=5000
qingzhi.eventwrite.url=http://33.50.1.213:38080/api/jtldpt/impld/trafficEventWrite
qingzhi.eventwrite.timeout=5000
mybatis.mapper-locations=classpath:mapper/*.xml
spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=true
gs.traff.cloud.web.fileagent.url=ftp://reader:reader@33.50.1.22:21/gstraff/
jms.queueName=demo_queue
\ No newline at end of file
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hzjt.mapper.CommonMapper">
<select id="getSeq" resultType="long">
select nvl(count(*),0)+1 from dual
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hzjt.mapper.SbtdspsrMapper">
<resultMap id="BaseResultMap" type="com.hzjt.domain.Sbtdspsr">
<!--
WARNING - @mbg.generated
-->
<result column="XH" jdbcType="VARCHAR" property="xh"/>
<result column="SBBH" jdbcType="VARCHAR" property="sbbh"/>
<result column="TDBH" jdbcType="DECIMAL" property="tdbh"/>
<result column="TDLX" jdbcType="DECIMAL" property="tdlx"/>
<result column="WBBH" jdbcType="VARCHAR" property="wbbh"/>
<result column="TDMC" jdbcType="VARCHAR" property="tdmc"/>
<result column="TDMCPY" jdbcType="VARCHAR" property="tdmcpy"/>
<result column="TDZT" jdbcType="DECIMAL" property="tdzt"/>
<result column="TDAZWZ" jdbcType="VARCHAR" property="tdazwz"/>
<result column="JD" jdbcType="VARCHAR" property="jd"/>
<result column="WD" jdbcType="VARCHAR" property="wd"/>
<result column="TPWZX" jdbcType="DECIMAL" property="tpwzx"/>
<result column="TPWZY" jdbcType="DECIMAL" property="tpwzy"/>
<result column="SPBMGS" jdbcType="DECIMAL" property="spbmgs"/>
<result column="SPXSGS" jdbcType="DECIMAL" property="spxsgs"/>
<result column="SSSPSFZZF" jdbcType="DECIMAL" property="ssspsfzzf"/>
<result column="SPZT" jdbcType="DECIMAL" property="spzt"/>
<result column="LXZT" jdbcType="DECIMAL" property="lxzt"/>
<result column="LXSFZZF" jdbcType="DECIMAL" property="lxsfzzf"/>
<result column="SPZL" jdbcType="DECIMAL" property="spzl"/>
<result column="GJZJG" jdbcType="DECIMAL" property="gjzjg"/>
<result column="ML" jdbcType="DECIMAL" property="ml"/>
<result column="SPMLYXGS" jdbcType="DECIMAL" property="spmlyxgs"/>
<result column="SFZCPTZKZ" jdbcType="DECIMAL" property="sfzcptzkz"/>
<result column="ZXCCZBH" jdbcType="VARCHAR" property="zxcczbh"/>
<result column="ZXCCXE" jdbcType="DECIMAL" property="zxccxe"/>
<result column="ZXCCYYRL" jdbcType="DECIMAL" property="zxccyyrl"/>
<result column="ZXCCSYRL" jdbcType="DECIMAL" property="zxccsyrl"/>
<result column="LXBLTS" jdbcType="DECIMAL" property="lxblts"/>
<result column="SFQY" jdbcType="DECIMAL" property="sfqy"/>
<result column="JLBH" jdbcType="VARCHAR" property="jlbh"/>
<result column="FXMS" jdbcType="VARCHAR" property="fxms"/>
<result column="JBMS" jdbcType="VARCHAR" property="jbms"/>
<result column="XZBH" jdbcType="VARCHAR" property="xzbh"/>
<result column="GGBH" jdbcType="VARCHAR" property="ggbh"/>
<result column="ZNBH" jdbcType="VARCHAR" property="znbh"/>
<result column="LXFS" jdbcType="DECIMAL" property="lxfs"/>
<result column="JPKZDH" jdbcType="VARCHAR" property="jpkzdh"/>
<result column="JDPX" jdbcType="DECIMAL" property="jdpx"/>
<result column="SFZNFXJD" jdbcType="DECIMAL" property="sfznfxjd"/>
<result column="ZNFXLX" jdbcType="VARCHAR" property="znfxlx"/>
<result column="SQMS" jdbcType="DECIMAL" property="sqms"/>
<result column="SQURLLJ" jdbcType="VARCHAR" property="squrllj"/>
<result column="SSMLXZ" jdbcType="DECIMAL" property="ssmlxz"/>
<result column="LXMLXZ" jdbcType="DECIMAL" property="lxmlxz"/>
<result column="ZBURLLJ" jdbcType="VARCHAR" property="zburllj"/>
<result column="ZBDK" jdbcType="DECIMAL" property="zbdk"/>
<result column="DQX" jdbcType="DECIMAL" property="dqx"/>
<result column="XQX" jdbcType="DECIMAL" property="xqx"/>
<result column="KQX" jdbcType="DECIMAL" property="kqx"/>
<result column="PQX" jdbcType="DECIMAL" property="pqx"/>
<result column="LXHFQX" jdbcType="DECIMAL" property="lxhfqx"/>
<result column="LXXZQX" jdbcType="DECIMAL" property="lxxzqx"/>
<result column="LXDJQX" jdbcType="DECIMAL" property="lxdjqx"/>
<result column="SFZLX" jdbcType="DECIMAL" property="sfzlx"/>
<result column="SFZX" jdbcType="DECIMAL" property="sfzx"/>
<result column="HB" jdbcType="VARCHAR" property="hb"/>
<result column="JMCJ" jdbcType="VARCHAR" property="jmcj"/>
<result column="SJ" jdbcType="VARCHAR" property="sj"/>
<result column="LXLRCYFS" jdbcType="DECIMAL" property="lxlrcyfs"/>
<result column="KHDOSDXSNR" jdbcType="VARCHAR" property="khdosdxsnr"/>
<result column="KHDOSDXSWZ" jdbcType="VARCHAR" property="khdosdxswz"/>
<result column="CJRY" jdbcType="VARCHAR" property="cjry"/>
<result column="CJRQ" jdbcType="VARCHAR" property="cjrq"/>
<result column="XGRY" jdbcType="VARCHAR" property="xgry"/>
<result column="XGRQ" jdbcType="VARCHAR" property="xgrq"/>
<result column="BZ" jdbcType="VARCHAR" property="bz"/>
<result column="KZ1" jdbcType="DECIMAL" property="kz1"/>
<result column="KZ2" jdbcType="DECIMAL" property="kz2"/>
<result column="KZ3" jdbcType="VARCHAR" property="kz3"/>
<result column="KZ4" jdbcType="VARCHAR" property="kz4"/>
</resultMap>
<select id="selectAllSbbhAndTdbh" resultType="com.hzjt.domain.Sbtdspsr">
SELECT XH,SBBH,TDBH FROM SBTDSPSR WHERE XZBH like #{xzbh} || '%'
</select>
<select id="selectBySbbh" resultType="com.hzjt.domain.Sbtdspsr">
SELECT A.* FROM SBTDSPSR A where sbbh=#{sbbh} and tdbh=#{tdbh}
</select>
<select id="selectDeviceWrite" resultType="com.hzjt.domain.SbtdspsrParam">
SELECT A.*,C.remark1 AS deviceconfig FROM SBTDSPSR A
LEFT JOIN TRAFFDEVICEWRITERESULT B ON A.SBBH = B.SBBH AND A.TDBH = B.TDBH
LEFT JOIN TRAFFDEVICECONFIG C ON C.FDID = A.SBBH AND C.CHANNELID = A.TDBH
WHERE B.PUSHSTATUS != 0 OR B.PUSHDESC IS NULL
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hzjt.mapper.SbxxMapper">
<resultMap id="BaseResultMap" type="com.hzjt.domain.Sbxx">
<!--
WARNING - @mbg.generated
-->
<result column="SBBH" jdbcType="VARCHAR" property="sbbh"/>
<result column="WBBH" jdbcType="VARCHAR" property="wbbh"/>
<result column="SBMC" jdbcType="VARCHAR" property="sbmc"/>
<result column="SBMCPY" jdbcType="VARCHAR" property="sbmcpy"/>
<result column="SBIP" jdbcType="VARCHAR" property="sbip"/>
<result column="SBDK" jdbcType="DECIMAL" property="sbdk"/>
<result column="SBDLZH" jdbcType="VARCHAR" property="sbdlzh"/>
<result column="SBDLMM" jdbcType="VARCHAR" property="sbdlmm"/>
<result column="SBZL" jdbcType="DECIMAL" property="sbzl"/>
<result column="SBBBH" jdbcType="VARCHAR" property="sbbbh"/>
<result column="SBXH" jdbcType="VARCHAR" property="sbxh"/>
<result column="CJBH" jdbcType="VARCHAR" property="cjbh"/>
<result column="CJMC" jdbcType="VARCHAR" property="cjmc"/>
<result column="SBZT" jdbcType="DECIMAL" property="sbzt"/>
<result column="XHSJ" jdbcType="VARCHAR" property="xhsj"/>
<result column="RJBBH" jdbcType="VARCHAR" property="rjbbh"/>
<result column="KHBH" jdbcType="VARCHAR" property="khbh"/>
<result column="SBAZWZ" jdbcType="VARCHAR" property="sbazwz"/>
<result column="JD" jdbcType="VARCHAR" property="jd"/>
<result column="WD" jdbcType="VARCHAR" property="wd"/>
<result column="TPWZX" jdbcType="DECIMAL" property="tpwzx"/>
<result column="TPWZY" jdbcType="DECIMAL" property="tpwzy"/>
<result column="SPSRTDS" jdbcType="DECIMAL" property="spsrtds"/>
<result column="SPSRDHMTDS" jdbcType="DECIMAL" property="spsrdhmtds"/>
<result column="SPSCTDS" jdbcType="DECIMAL" property="spsctds"/>
<result column="YPSRTDS" jdbcType="DECIMAL" property="ypsrtds"/>
<result column="YPSCTDS" jdbcType="DECIMAL" property="ypsctds"/>
<result column="BJSRTDS" jdbcType="DECIMAL" property="bjsrtds"/>
<result column="BJSCTDS" jdbcType="DECIMAL" property="bjsctds"/>
<result column="TMTDS" jdbcType="DECIMAL" property="tmtds"/>
<result column="MLCZXY" jdbcType="DECIMAL" property="mlczxy"/>
<result column="ZDSCDK" jdbcType="DECIMAL" property="zdscdk"/>
<result column="QYBH" jdbcType="VARCHAR" property="qybh"/>
<result column="ZDZLS" jdbcType="DECIMAL" property="zdzls"/>
<result column="JLBH" jdbcType="VARCHAR" property="jlbh"/>
<result column="JRMS" jdbcType="DECIMAL" property="jrms"/>
<result column="MS" jdbcType="VARCHAR" property="ms"/>
<result column="DLFWZBH" jdbcType="VARCHAR" property="dlfwzbh"/>
<result column="QYMC" jdbcType="VARCHAR" property="qymc"/>
<result column="QYDZ" jdbcType="VARCHAR" property="qydz"/>
<result column="XZBH" jdbcType="VARCHAR" property="xzbh"/>
<result column="JRFSBH" jdbcType="VARCHAR" property="jrfsbh"/>
<result column="JRFSMC" jdbcType="VARCHAR" property="jrfsmc"/>
<result column="LXR" jdbcType="VARCHAR" property="lxr"/>
<result column="LXDH" jdbcType="VARCHAR" property="lxdh"/>
<result column="VPNWGBH" jdbcType="VARCHAR" property="vpnwgbh"/>
<result column="CJRY" jdbcType="VARCHAR" property="cjry"/>
<result column="CJRQ" jdbcType="VARCHAR" property="cjrq"/>
<result column="XGRY" jdbcType="VARCHAR" property="xgry"/>
<result column="XGRQ" jdbcType="VARCHAR" property="xgrq"/>
<result column="BZ" jdbcType="VARCHAR" property="bz"/>
</resultMap>
<select id="selectAllSbbh" resultType="string">
SELECT SBBH FROM SBXX WHERE ms like #{ms} || '%'
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hzjt.mapper.StorageServerMapper">
<select id="queryStorageServerAll" resultType="com.hzjt.domain.Storageserver">
select SERVERID
,SERVERNAME ,SERVERGROUP ,SERVERTYPE
,SERVERSTATUS ,SERVEURL ,SERVEIP
,SERVERPORT ,SERVERUSER ,SERVERPASSWORD
from StorageServer b
<where>
1 = 1
<if test="serverstatus != null">
and b.serverstatus = #{serverstatus}
</if>
<if test="servertype != null">
and b.servertype = #{servertype}
</if>
<if test="servergroup != null">
and b.servergroup = #{servergroup}
</if>
</where>
order by b.createtime desc
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hzjt.mapper.TraffFlowMapper">
<insert id="insertlist" parameterType="com.hzjt.domain.Vehiclesdetail" >
INSERT INTO vehiclesdetail (obj_id, vehiclesid, type, direction,classification_confidence,ruletag )
values( #{obj_id,jdbcType=VARCHAR},
#{vehiclesid,jdbcType=VARCHAR},
#{type,jdbcType=VARCHAR},
#{direction,jdbcType=NUMERIC},
#{classification_confidence,jdbcType=NUMERIC},
#{ruleTag,jdbcType=VARCHAR})
</insert>
<insert id="add" parameterType="com.hzjt.domain.Vehicles">
insert into vehicles ( id,type,video_id,ts )
values(#{id,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR},
#{video_id,jdbcType=VARCHAR},#{ts,jdbcType=VARCHAR})
</insert>
<select id="selectFiveAndDayFlow" resultType="java.util.HashMap">
select
NVL(sum(case when ts>=to_char( (SYSDATE-1-5/1440),'yyyy-MM-dd HH24:mi:ss') and ts<![CDATA[ <= ]]>to_char (SYSDATE-1,'yyyy-MM-dd HH24:mi:ss') then 1 else 0 end),0)tbfiveflow,
NVL(sum(case when ts>=to_char( (SYSDATE-10/1440),'yyyy-MM-dd HH24:mi:ss') and ts<![CDATA[ <= ]]>to_char( (SYSDATE-5/1440),'yyyy-MM-dd HH24:mi:ss') then 1 else 0 end),0)hbfiveflow,
NVL(sum(case when ts>=to_char( (SYSDATE-5/1440),'yyyy-MM-dd HH24:mi:ss') then 1 else 0 end),0)fiveflow,
NVL(sum(case when ts>=To_char(Trunc(SYSDATE), 'yyyy-mm-dd hh24:mi:ss') then 1 else 0 end),0)dayflow,
'all' name
from vehicles a,vehiclesdetail b where a.id = b.vehiclesid
and a.video_id=#{videoid}
union all
select
NVL(sum(case when ts>=to_char( (SYSDATE-1-5/1440),'yyyy-MM-dd HH24:mi:ss') and ts<![CDATA[ <= ]]>to_char (SYSDATE-1,'yyyy-MM-dd HH24:mi:ss') then 1 else 0 end),0)tbfiveflow,
NVL(sum(case when ts>=to_char( (SYSDATE-10/1440),'yyyy-MM-dd HH24:mi:ss') and ts<![CDATA[ <= ]]>to_char( (SYSDATE-5/1440),'yyyy-MM-dd HH24:mi:ss') then 1 else 0 end),0)hbfiveflow,
NVL(sum(case when ts>=to_char( (SYSDATE-5/1440),'yyyy-MM-dd HH24:mi:ss') then 1 else 0 end),0)fiveflow,
NVL( sum(case when ts>=To_char(Trunc(SYSDATE), 'yyyy-mm-dd hh24:mi:ss') then 1 else 0 end),0)dayflow,
'up' name
from vehicles a,vehiclesdetail b where a.id = b.vehiclesid
and a.video_id=#{videoid} and ruletag ='1'
union all
select
NVL(sum(case when ts>=to_char( (SYSDATE-1-5/1440),'yyyy-MM-dd HH24:mi:ss') and ts<![CDATA[ <= ]]>to_char (SYSDATE-1,'yyyy-MM-dd HH24:mi:ss') then 1 else 0 end),0)tbfiveflow,
NVL(sum(case when ts>=to_char( (SYSDATE-10/1440),'yyyy-MM-dd HH24:mi:ss') and ts<![CDATA[ <= ]]>to_char( (SYSDATE-5/1440),'yyyy-MM-dd HH24:mi:ss') then 1 else 0 end),0)hbfiveflow,
NVL(sum(case when ts>=to_char( (SYSDATE-5/1440),'yyyy-MM-dd HH24:mi:ss') then 1 else 0 end),0)fiveflow,
NVL(sum(case when ts>=To_char(Trunc(SYSDATE), 'yyyy-mm-dd hh24:mi:ss') then 1 else 0 end),0)dayflow,
'down' name
from vehicles a,vehiclesdetail b where a.id = b.vehiclesid
and a.video_id=#{videoid} and ruletag ='2'
</select>
<select id="selectFiveAndTypeDayFlow" resultType="java.util.HashMap">
select 'all' name, NVL(sum(case when b.type='SEDAN' then 1 else 0 end),0)sedan,
NVL(sum(case when b.type='HEAVY_GOODS_VAN' or b.type= 'LIGHT_GOODS_VAN' then 1 else 0 end),0)goodsvan,
NVL(sum(case when b.type='COACH'or b.type='MEDIUM_COACH' then 1 else 0 end),0)coach,
NVL( sum(case when b.type!='COACH'and b.type!='MEDIUM_COACH'
and b.type!='SEDAN'and b.type!='HEAVY_GOODS_VAN' and b.type!='LIGHT_GOODS_VAN' then 1 else 0 end),0)other
from vehicles a,vehiclesdetail b where a.id = b.vehiclesid
and a.video_id=#{videoid}
and ts>=To_char(Trunc(SYSDATE), 'yyyy-mm-dd hh24:mi:ss')
union all
select 'up' name, NVL(sum(case when b.type='SEDAN' then 1 else 0 end),0)sedan,
NVL(sum(case when b.type='HEAVY_GOODS_VAN' or b.type= 'LIGHT_GOODS_VAN' then 1 else 0 end),0)goodsvan,
NVL(sum(case when b.type='COACH'or b.type='MEDIUM_COACH' then 1 else 0 end),0)coach,
NVL( sum(case when b.type!='COACH'and b.type!='MEDIUM_COACH'
and b.type!='SEDAN'and b.type!='HEAVY_GOODS_VAN' and b.type!='LIGHT_GOODS_VAN' then 1 else 0 end),0)other
from vehicles a,vehiclesdetail b where a.id = b.vehiclesid
and a.video_id=#{videoid}
and ts>=To_char(Trunc(SYSDATE), 'yyyy-mm-dd hh24:mi:ss') and ruletag ='1'
union all
select 'down' name, NVL(sum(case when b.type='SEDAN' then 1 else 0 end),0)sedan,
NVL(sum(case when b.type='HEAVY_GOODS_VAN' or b.type= 'LIGHT_GOODS_VAN' then 1 else 0 end),0)goodsvan,
NVL(sum(case when b.type='COACH'or b.type='MEDIUM_COACH' then 1 else 0 end),0)coach,
NVL( sum(case when b.type!='COACH'and b.type!='MEDIUM_COACH'
and b.type!='SEDAN'and b.type!='HEAVY_GOODS_VAN' and b.type!='LIGHT_GOODS_VAN' then 1 else 0 end),0)other
from vehicles a,vehiclesdetail b where a.id = b.vehiclesid
and a.video_id=#{videoid}
and ts>=To_char(Trunc(SYSDATE), 'yyyy-mm-dd hh24:mi:ss') and ruletag ='2'
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hzjt.mapper.TraffAlarmRecordMapper">
<update id="updateTraffAlarmRecordUrl" parameterType="com.hzjt.domain.Traffalarmrecord">
UPDATE traffalarmrecord
set retrytime= sysdate,
retrycount= retrycount+1
<trim prefix="," suffixOverrides=",">
<if test="img1path!=null">img1path=#{img1path},</if>
<if test="img2path!=null">img2path=#{img2path},</if>
<if test="img3path!=null">img3path=#{img3path},</if>
<if test="img4path!=null">img4path=#{img4path},</if>
<if test="img5path!=null">img5path=#{img5path},</if>
<if test="videopath!=null">videopath=#{videopath},</if>
</trim>
WHERE recordid=#{recordid}
</update>
<update id="updatePushEvent" parameterType="com.hzjt.domain.Traffalarmrecord">
UPDATE traffalarmrecord
set PUSHSTATUS = #{pushstatus},
PUSHDESC = #{pushdesc},
PUSHCOUNT= CASE WHEN PUSHCOUNT IS NULL THEN 1 ELSE PUSHCOUNT + 1 END,
PUSHDATE= sysdate
WHERE RECORDID = #{recordid}
</update>
<insert id="inserTraffAlarmRecord">
insert into traffalarmrecord
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="recordid != null" >recordid,</if>
<if test="algotype != null" >algotype,</if>
<if test="areaid != null" >areaid,</if>
<if test="fdid != null" >fdid,</if>
<if test="channelid != null" > channelid,</if>
<if test="channeletype != null" >channeletype,</if>
<if test="channelname != null" > channelname ,</if>
<if test="recordtime != null" > recordtime,</if>
<if test="recordtype != null" > recordtype,</if>
<if test="location != null" > location,</if>
<if test="img1urlfrom != null" >img1urlfrom,</if>
<if test="img1path != null" > img1path,</if>
<if test="img2urlfrom != null" >img2urlfrom,</if>
<if test="img2path != null" > img2path,</if>
<if test="img3urlfrom != null" >img3urlfrom,</if>
<if test="img3path != null" > img3path,</if>
<if test="img4urlfrom != null" >img4urlfrom,</if>
<if test="img4path != null" > img4path,</if>
<if test="img5urlfrom != null" >img5urlfrom,</if>
<if test="img5path != null" > img5path,</if>
<if test="videourlfrom != null" >videourlfrom,</if>
<if test="videopath != null" >videopath,</if>
<if test="retrytime != null" > retrytime,</if>
<if test="retrycount != null" > retrycount,</if>
<if test="recordlevel != null" > recordlevel,</if>
<if test="checkstatus != null" >checkstatus,</if>
<if test="creator != null" > creator,</if>
<if test="createtime != null" > createtime,</if>
<if test="updator != null" > updator,</if>
<if test="updatetime != null" >updatetime,</if>
<if test="remark != null" >remark,</if>
<if test="pushstatus != null" >pushstatus,</if>
<if test="pushdesc != null" > pushdesc,</if>
<if test="processstatus != null" > processstatus,</if>
<if test="objlable != null" > objlable,</if>
</trim>
<trim prefix="select" suffix="from dual" suffixOverrides="," >
<if test="recordid != null" >#{recordid},</if>
<if test="algotype != null" >#{algotype},</if>
<if test="areaid != null" >#{areaid},</if>
<if test="fdid != null" >#{fdid},</if>
<if test="channelid != null" >#{ channelid},</if>
<if test="channeletype != null" >#{channeletype},</if>
<if test="channelname != null" >#{ channelname },</if>
<if test="recordtime != null" >#{ recordtime},</if>
<if test="recordtype != null" >#{ recordtype},</if>
<if test="location != null" >#{ location},</if>
<if test="img1urlfrom != null" >#{img1urlfrom},</if>
<if test="img1path != null" >#{ img1path},</if>
<if test="img2urlfrom != null" >#{img2urlfrom},</if>
<if test="img2path != null" >#{ img2path},</if>
<if test="img3urlfrom != null" >#{img3urlfrom},</if>
<if test="img3path != null" >#{ img3path},</if>
<if test="img4urlfrom != null" >#{img4urlfrom},</if>
<if test="img4path != null" >#{ img4path},</if>
<if test="img5urlfrom != null" >#{img5urlfrom},</if>
<if test="img5path != null" >#{img5path},</if>
<if test="videourlfrom != null" >#{videourlfrom},</if>
<if test="videopath != null" >#{videopath},</if>
<if test="retrytime != null" >#{retrytime},</if>
<if test="retrycount != null" >#{retrycount},</if>
<if test="recordlevel != null" >#{recordlevel,jdbcType=INTEGER},</if>
<if test="checkstatus != null" >#{checkstatus,jdbcType=INTEGER},</if>
<if test="creator != null" >#{creator},</if>
<if test="createtime != null" >#{createtime},</if>
<if test="updator != null" >#{updator},</if>
<if test="updatetime != null" >#{updatetime},</if>
<if test="remark != null" >#{remark},</if>
<if test="pushstatus != null" >#{pushstatus},</if>
<if test="pushdesc != null" >#{pushdesc},</if>
<if test="processstatus != null" > #{processstatus},</if>
<if test="objlable != null" > #{objlable},</if>
</trim>
</insert>
<select id="selectmax" resultType="java.lang.Integer">
select nvl(max(recordid),0)+1 from traffalarmrecord
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hzjt.mapper.TraffalarmrecordstatMapper">
<resultMap id="BaseResultMap" type="com.hzjt.domain.Traffalarmrecordstat">
<!--
WARNING - @mbg.generated
-->
<id column="COUNTDATE" jdbcType="DECIMAL" property="countdate" />
<id column="AREAID" jdbcType="VARCHAR" property="areaid" />
<id column="EVENTTYPE" jdbcType="VARCHAR" property="eventtype" />
<id column="FDID" jdbcType="VARCHAR" property="fdid" />
<id column="CHANNELID" jdbcType="DECIMAL" property="channelid" />
<result column="COUNTHOUR" jdbcType="DECIMAL" property="counthour" />
<result column="CHANNELTYPE" jdbcType="DECIMAL" property="channeltype" />
<result column="CHANNELNAME" jdbcType="VARCHAR" property="channelname" />
<result column="AREANAME" jdbcType="VARCHAR" property="areaname" />
<result column="TOTALCOUNT" jdbcType="DECIMAL" property="totalcount" />
</resultMap>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hzjt.mapper.TraffdeviceconfigMapper">
<resultMap id="BaseResultMap" type="com.hzjt.domain.Traffdeviceconfig">
<id column="FDID" jdbcType="VARCHAR" property="fdid" />
<id column="CHANNELID" jdbcType="DECIMAL" property="channelid" />
<result column="DEVICELOCATIONTYPE" jdbcType="DECIMAL" property="devicelocationtype" />
<result column="DEVICECHECKTYPE" jdbcType="DECIMAL" property="devicechecktype" />
<result column="STAKEKILOMETER" jdbcType="DECIMAL" property="stakekilometer" />
<result column="STAKEMETER" jdbcType="DECIMAL" property="stakemeter" />
<result column="LOCATIONDIRECTION" jdbcType="DECIMAL" property="locationdirection" />
<result column="CREATOR" jdbcType="VARCHAR" property="creator" />
<result column="CREATETIME" jdbcType="TIMESTAMP" property="createtime" />
<result column="UPDATETIME" jdbcType="TIMESTAMP" property="updatetime" />
<result column="REMARK1" jdbcType="VARCHAR" property="remark1" />
<result column="REMARK2" jdbcType="DECIMAL" property="remark2" />
<result column="REMARK3" jdbcType="VARCHAR" property="remark3" />
<result column="REMARK4" jdbcType="DECIMAL" property="remark4" />
</resultMap>
<!--[reference]example by String
<if test="col != null and col!=''">
AND col = #{col}
</if>
[reference]example by other
<if test="col != null">
AND col = #{col}
</if>-->
<!-- <insert id="insertTraffdeviceconfig">
insert into TRAFFDEVICECONFIG(
<if test="channelid != null">CHANNELID,</if>
<if test="createtime != null">CREATETIME,</if>
<if test="creator != null and creator!=''">CREATOR,</if>
<if test="devicechecktype != null">DEVICECHECKTYPE,</if>
<if test="devicelocationtype != null">DEVICELOCATIONTYPE,</if>
<if test="fdid != null and fdid!=''">FDID,</if>
<if test="locationdirection != null">LOCATIONDIRECTION,</if>
<if test="remark1 != null and remark1!=''">REMARK1,</if>
<if test="remark2 != null">REMARK2,</if>
<if test="remark3 != null and remark3!=''">REMARK3,</if>
<if test="remark4 != null">REMARK4,</if>
<if test="stakekilometer != null">STAKEKILOMETER,</if>
<if test="stakemeter != null">STAKEMETER,</if>
<if test="updatetime != null">UPDATETIME</if>
)
values(
<if test="channelid != null">#{channelid},</if>
<if test="createtime != null">#{createtime},</if>
<if test="creator != null and creator!=''">#{creator},</if>
<if test="devicechecktype != null">#{devicechecktype},</if>
<if test="devicelocationtype != null">#{devicelocationtype},</if>
<if test="fdid != null and fdid!=''">#{fdid},</if>
<if test="locationdirection != null">#{locationdirection},</if>
<if test="remark1 != null and remark1!=''">#{remark1},</if>
<if test="remark2 != null">#{remark2},</if>
<if test="remark3 != null and remark3!=''">#{remark3},</if>
<if test="remark4 != null">#{remark4},</if>
<if test="stakekilometer != null">#{stakekilometer},</if>
<if test="stakemeter != null">#{stakemeter},</if>
<if test="updatetime != null">#{updatetime}</if>
)
</insert>-->
<!-- <update id="updateTraffdeviceconfig">
update TRAFFDEVICECONFIG
set
<if test="channelid != null">CHANNELID = #{channelid},</if>
<if test="createtime != null">CREATETIME = #{createtime},</if>
<if test="creator != null and creator!=''">CREATOR = #{creator},</if>
<if test="devicechecktype != null">DEVICECHECKTYPE = #{devicechecktype},</if>
<if test="devicelocationtype != null">DEVICELOCATIONTYPE = #{devicelocationtype},</if>
<if test="fdid != null and fdid!=''">FDID = #{fdid},</if>
<if test="locationdirection != null">LOCATIONDIRECTION = #{locationdirection},</if>
<if test="remark1 != null and remark1!=''">REMARK1 = #{remark1},</if>
<if test="remark2 != null">REMARK2 = #{remark2},</if>
<if test="remark3 != null and remark3!=''">REMARK3 = #{remark3},</if>
<if test="remark4 != null">REMARK4 = #{remark4},</if>
<if test="stakekilometer != null">STAKEKILOMETER = #{stakekilometer},</if>
<if test="stakemeter != null">STAKEMETER = #{stakemeter},</if>
<if test="updatetime != null">UPDATETIME = #{updatetime}</if>
<where>
<if test="channelid != null">AND CHANNELID = #{channelid}</if>
<if test="createtime != null">AND CREATETIME = #{createtime}</if>
<if test="creator != null and creator!=''">AND CREATOR = #{creator}</if>
<if test="devicechecktype != null">AND DEVICECHECKTYPE = #{devicechecktype}</if>
<if test="devicelocationtype != null">AND DEVICELOCATIONTYPE = #{devicelocationtype}</if>
<if test="fdid != null and fdid!=''">AND FDID = #{fdid}</if>
<if test="locationdirection != null">AND LOCATIONDIRECTION = #{locationdirection}</if>
<if test="remark1 != null and remark1!=''">AND REMARK1 = #{remark1}</if>
<if test="remark2 != null">AND REMARK2 = #{remark2}</if>
<if test="remark3 != null and remark3!=''">AND REMARK3 = #{remark3}</if>
<if test="remark4 != null">AND REMARK4 = #{remark4}</if>
<if test="stakekilometer != null">AND STAKEKILOMETER = #{stakekilometer}</if>
<if test="stakemeter != null">AND STAKEMETER = #{stakemeter}</if>
<if test="updatetime != null">AND UPDATETIME = #{updatetime}</if>
</where>
</update>-->
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hzjt.mapper.TraffdevicewriteresultMapper">
<select id="querySbtdspsrByXh" resultType="com.hzjt.domain.SbtdspsrParams">
SELECT
TA.*,
A.CREATETIME,
A.PUSHSTATUS,
A.PUSHCOUNT,
A.REMARK,
A.PUSHDESC,
p.dept_name AS xztreename,
B.remark1 AS deviceconfig
FROM SBTDSPSR TA
LEFT JOIN TRAFFDEVICEWRITERESULT A ON A.SBBH = TA.SBBH AND A.TDBH = TA.TDBH
LEFT JOIN TRAFFDEVICECONFIG B ON B.FDID = TA.SBBH AND B.CHANNELID = TA.TDBH
LEFT JOIN dept P ON P .dept_id = TA.xzbh
WHERE 1=1
<if test="xhs !=null and xhs.size>0 ">
and TA.XH IN
<foreach item="xh" collection="xhs" open="(" separator="," close=")">
#{xh}
</foreach>
</if>
</select>
</mapper>
\ No newline at end of file
package com.hzjt;
import com.hzjt.domain.Traffalarmrecord;
import org.junit.Test;
public class ExcelToDbApplicationTests {
@Test
public void t(){
// Ftp ftp = ftpService.reloadFtp();
Traffalarmrecord record=new Traffalarmrecord();
record.setAreaid(Long.valueOf(1));
record.setRecordid(Long.valueOf(1));
record.setAlgotype(1);
record.setFdid("1");
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment