Commit a11e7e9c authored by wangjinjing's avatar wangjinjing

init

parents
Pipeline #53 failed with stages
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ 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: 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.core:jackson-databind:2.8.10" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.8.10" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" 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>
<orderEntry type="library" name="Maven: org.springframework.integration:spring-integration-stream:4.3.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.integration:spring-integration-core:4.3.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.retry:spring-retry:1.2.2.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.integration:spring-integration-mqtt:4.3.14.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.0.2" level="project" />
</component>
</module>
\ No newline at end of file
File added
File added
File added
File added
<?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>
<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>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</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>
<!-- mqtt -->
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-stream</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-mqtt</artifactId>
</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>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</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
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;
public interface IMQTTPublisher {
/**
* 发布消息
*
* @param topic 主题
* @param message 消息
*/
public void publishMessage(String topic, String message);
/**
* 断开MQTT客户端
*/
public void disconnect();
}
package com.hzjt.config;
/**
* <p>
* 订阅者接口
*/
public interface IMQTTSubscriber {
/**
* 订阅消息
*
* @param topic
*/
public void subscribeMessage(String topic);
/**
* 断开MQTT客户端
*/
public void disconnect();
}
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 com.hzjt.mapper.SbtdspsrMapper;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
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.Component;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
@Component
public class MQTTSubsribe {
private static final Logger log = LoggerFactory.getLogger(MQTTSubsribe.class);
@Value("${spring.mqtt.password}")
private String password;
@Value("${spring.mqtt.username}")
private String username;
@Value("${spring.mqtt.url}")
private String url;
@Value("${spring.mqtt.qos}")
private Integer qos;
// 连接超时时间
@Value("${spring.mqtt.completionTimeout}")
private int completionTimeout;
@Autowired
SbtdspsrMapper sbtdspsrMapper;
private String[] topics;
private int[] qoslist;
private MqttClient client;
private MqttConnectOptions mqttConnectOptions;
@Autowired
private PushCallback pushCallback;
private ScheduledExecutorService scheduled;
public void startReconnect() {
this.scheduled = Executors.newSingleThreadScheduledExecutor();
// 定时任务——重新连接mqtt服务器
this.scheduled.scheduleAtFixedRate(new Runnable() {
public void run() {
if (!MQTTSubsribe.this.client.isConnected()) {
try {
log.info("---mqtt reconnect ---");
List<String> sbbhlist= sbtdspsrMapper.selectAllWbbh();
client.connect(mqttConnectOptions);
subscribe(sbbhlist);
} catch (MqttSecurityException var2) {
var2.printStackTrace();
} catch (MqttException var3) {
var3.printStackTrace();
}
}
}
}, 5000L, 10000L, TimeUnit.MILLISECONDS);
}
public MqttConnectOptions getMqttConnectOptions() {
this.mqttConnectOptions = new MqttConnectOptions();
this.mqttConnectOptions.setCleanSession(true);
if(!"".equals(username) ) {
this.mqttConnectOptions.setUserName(username);
}
if(!"".equals(password) ) {
this.mqttConnectOptions.setPassword(password.toCharArray());
}
this.mqttConnectOptions.setServerURIs(new String[]{url});
this.mqttConnectOptions.setConnectionTimeout(completionTimeout);
this.mqttConnectOptions.setKeepAliveInterval(2000);
return mqttConnectOptions;
}
// 连接mqtt服务器订阅信息方法
// topic也可作为参数传入
public void subscribe(List<String> topics) {
if(null!=topics &&topics.size()>0) {
try {
this.topics = topics.toArray(new String[topics.size()]);
this.client = new MqttClient(url, getClientId(), new MemoryPersistence());
this.getMqttConnectOptions();
this.client.setCallback(this.pushCallback);
this.client.connect(this.mqttConnectOptions);
//遍历topic ,获得qs
int[] qoslist= new int[topics.size()];
for( int i=0;i<topics.size();i++)
{qoslist[i]=qos;
}
this.qoslist=qoslist;
// 可将订阅的一个或多个topic都存入数组中,同时订阅
// String[] topic1 = {defaultTopic};
this.client.subscribe(this.topics, qoslist);
boolean connected = this.client.isConnected();
log.info("连接状态为:" + connected);
String flag = connected ? "成功" : "失败";
} catch (MqttException e) {
log.info(e.toString());
startReconnect();
}
}else {
log.info("topic is empty");
}
}
// 随机生成唯一client.id方法
public String getClientId() {
String nums = "";
String[] codeChars = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
for (int i = 0; i < 23; i++) {
int charNum = (int) Math.floor(Math.random() * codeChars.length);
nums = nums + codeChars[charNum];
}
return nums;
}
public void publishMessage(String topic, String message) {
try {
MqttMessage mqttmessage = new MqttMessage(message.getBytes());
mqttmessage.setQos(this.qos);
client.publish(topic, mqttmessage);
log.info("client.publish finish");
} catch (MqttException me) {
log.info(me.toString());
}
}
}
\ No newline at end of file
package com.hzjt.config;
import com.alibaba.fastjson.JSONObject;
import com.hzjt.domain.MqttResult;
import com.hzjt.service.TraffalarmrecordService;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import java.util.concurrent.ScheduledExecutorService;
@Configuration
public class PushCallback implements MqttCallback,IMQTTPublisher {
private static final Logger log = LoggerFactory.getLogger(PushCallback.class);
@Autowired
private MQTTSubsribe mqttSubsribe;
@Autowired
private TraffalarmrecordService traffalarmrecordService;
// 定时任务——定时缓存查询的数据
private ScheduledExecutorService scheduled;
@Override
public void connectionLost(Throwable throwable) {
// 连接丢失后,一般在这里面进行重连
log.info("连接断开,可以做重连");
this.mqttSubsribe.startReconnect();
}
@Override
public void messageArrived(String topic, MqttMessage message){
log.info("topic result"+topic+new String(message.getPayload()));
try {
MqttResult result = JSONObject.parseObject(message.getPayload(), MqttResult.class);
//根据mqtt返回的处理结果进行处理,更新表中数据
if(result.getCompanyId().startsWith("66211") && null!=result.getStatus())
{
traffalarmrecordService.updateState(result);
}
} catch (Exception ex){
log.info("解析错误:{}",ex);
}
// subscribe后得到的消息会执行到这里面
// String[] topics = topic.split("/");
// this.scheduled = Executors.newSingleThreadScheduledExecutor();
// //周期定时方法,可以在里面进行定时数据存储操作,我测试时是先将数据存储到了redis中,可做实时数据来用
// this.scheduled.scheduleAtFixedRate(new Runnable() {
// @Override
// public void run() {
// String key = topics[0] + topics[1];
// String value = new String(message.getPayload());
// log.info("topic result");
//// if (redisTemplate.hasKey(key)){
//// redisTemplate.delete(key);
//// }
//// redisTemplate.opsForValue().set(key,value);
//// System.out.println("redis缓存数据"+value);
//// //下面是我对数据的一些处理,仅供参考
//// JSONObject jsonObject = JSONObject.parseObject(value);
//// Map map = jsonObject;
//// List<Map<String,Object>> list = (List<Map<String, Object>>) ((Map) map.get("lines")).get("data");
//// log.error("-----------------------------"+list);
// }
// //此处 120为每120秒执行一次
// },0,120, TimeUnit.SECONDS);
}
@Override
public void deliveryComplete(IMqttDeliveryToken token) {
log.info("deliveryComplete---------" + token.isComplete());
}
@Override
public void publishMessage(String topic, String message) {
}
@Override
public void disconnect() {
log.info("disconnect---------" );
}
}
\ 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.domain.*;
import com.hzjt.handler.WebSocket;
import com.hzjt.service.TraffFlowService;
import com.hzjt.service.TraffalarmrecordService;
import com.hzjt.util.DateUtils;
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.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.net.URI;
import java.util.Calendar;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
@Slf4j
@Configuration
@EnableScheduling
public class ScheduleTaskConfig {
@Autowired
TraffFlowService traffFlowService;
@Autowired
TraffalarmrecordService traffalarmrecordService;
@Autowired
private RestTemplate restTemplate;
@Scheduled(cron = "0 */1 * * * ?")//每天凌晨2点执行
private void statis() {
// //取帧
// HttpHeaders headers = new HttpHeaders();
// headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
// RTSPFrame result = restTemplate.getForObject(rtspformUrl, RTSPFrame.class);
// if(result.getRet()==0)
// {
// //获取成功
//
// result.getUrl();
//
//
//
// }
//查询监控是否存在
//查询rtsp 多线程进行图片抽取,并记录表中,ftp 上传到服务器,路径返回表中
}
@Scheduled(cron = "0 */1 * * * ?")//每一个月执行一次
private void reconnectWebsocket() {
final Calendar c = Calendar.getInstance();
if (c.get(Calendar.DATE) == c.getActualMaximum(Calendar.DATE)) {
// log.info("每个月最后一天执行删除前2个月车流量数据操作start");
//删除2个月之前车流量详情的数据
traffFlowService.deleteBeforeTwoMonthVehicles();
}
}
// @Scheduled(cron = "0 30/5 6-19 * * ?")//每隔5分钟统计当天目前为止的数据
// private void statistoday() {
// //判断是否为空表
// //执行查询存在更新,不存在新增
// log.info("每隔5分钟");
// Integer result= traffFlowService.insertOrUpdatevehicleTodaystatistic();
// log.info("today"+result);
//
// }
}
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.domain.WriteResultObj;
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<WriteResultObj> 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<WriteResultObj> 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 lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.*;
/**
* 路由接口控制器
*
* @author tycoding
* @date 2019-06-13
*/
@Slf4j
@Controller
public class RouterController {
private static final Logger log = LoggerFactory.getLogger(TraffController.class);
@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 cn.hutool.core.codec.Base64Encoder;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.common.util.concurrent.RateLimiter;
import com.hzjt.config.MQTTSubsribe;
import com.hzjt.domain.*;
import com.hzjt.handler.FileTransferManager;
import com.hzjt.handler.WebSocket;
import com.hzjt.mapper.SbtdspsrMapper;
import com.hzjt.mapper.TraffAlarmRecordMapper;
import com.hzjt.redis.RedisDao;
import com.hzjt.service.*;
import com.hzjt.util.*;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import javax.annotation.PostConstruct;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.tomcat.util.http.fileupload.IOUtils;
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.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.*;
import sun.net.www.protocol.ftp.FtpURLConnection;
@RestController
public class TraffController {
private static final Logger log = LoggerFactory.getLogger(TraffController.class);
@Autowired
ImportService importService;
@Autowired
WebSocket webSocket;
private Map<String, RateLimiter> rateLimiterMap;
private String port;
private String dept;
private Integer rate = Integer.valueOf(10);
private SbtdspsrMapper sbtdspsrMapper;
@Autowired
TraffFlowService traffFlowService;
@Value("${flv.resisvalue}")
private String resisvalue;
@Value("${json.resisurl}")
private String resisjsonvalue;
@Value("${ftppath}")
private String ftppath;
@Value("${ftpServiceUrl}")
private String ftpServiceUrl;
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Autowired
RedisDao redisDao;
@Autowired
private TraffAlarmRecordMapper traffAlarmRecordMapper;
@Autowired
FtpService ftpService;
@Autowired
EventWriteService eventWriteService;
@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;
Long ldir = new Long(180L);
@Autowired
FLVCacheService flvCacheService;
Long eightHour = Long.valueOf(25200000L);
@Autowired
MQTTSubsribe mQTTSubsribe;
String manualStatus = "0";
private static final String TYPE = "TRAFFIC_INCIDENT_ALARM";
ScheduledExecutorService schedulepool = Executors.newScheduledThreadPool(5);
@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;
this.rateLimiterMap = new ConcurrentHashMap<>(16);
}
@PostConstruct
public void init() {
List<String> sbbhlist = this.sbtdspsrMapper.selectAllWbbh();
//消息结果处理返回topic
sbbhlist.add("notice/66211/videoEventConfirm");
this.mQTTSubsribe.subscribe(sbbhlist);
}
@PostMapping({"/alarmevent"})
public ResultObj rece(@RequestBody Alarm trffClientMessage) {
// log.info("trffClientMessage:{}" ,JsonUtil.beanToString(trffClientMessage));
if (!TYPE.equals(trffClientMessage.getType())) {
return ResultObj.error(Integer.valueOf(ResponseEnum.E_1002.getCode()), "type类型不正确");
}
if (trffClientMessage.getImg_urls().isEmpty()) {
return ResultObj.error(Integer.valueOf(ResponseEnum.E_1004.getCode()), "img_urls值不能为空");
}
if (StringUtils.isBlank(trffClientMessage.getIncident_type())) {
log.info("incident_type值不能为空" + trffClientMessage.toString());
return ResultObj.error(Integer.valueOf(ResponseEnum.E_1004.getCode()), "incident_type值不能为空");
}
Long current = Long.valueOf((new Date()).getTime() - Long.valueOf(trffClientMessage.getTs()).longValue());
log.info("current.longValue()>=eightHour.longValue()======" + ((current.longValue() >= this.eightHour.longValue()) ? 1 : 0));
if (current.longValue() >= this.eightHour.longValue()) {
Long lontime = Long.valueOf(Long.valueOf(trffClientMessage.getTs()).longValue() + 28800000L);
log.info("trffClientMessage lontime=====" + lontime);
trffClientMessage.setTs(String.valueOf(lontime));
}
String videoId = trffClientMessage.getVideo_id();
if (StringUtils.isBlank(videoId)) {
log.info("video_id值异常 值为:" + videoId);
return ResultObj.error(Integer.valueOf(ResponseEnum.E_1002.getCode()), "video_id值异常 值为:" + videoId);
}
String sbbh = videoId;
int tdbh = 0;
List<Sbtdspsr> sbtdspsrs = this.sbtdspsrMapper.selectBySbbh(sbbh, Integer.valueOf(tdbh));
if (sbtdspsrs.isEmpty()) {
log.info("设备为:" + sbbh + ",通道为:" + tdbh + "未录入(备案)");
return ResultObj.error(Integer.valueOf(ResponseEnum.E_1002.getCode()), "设备为:" + sbbh + ",通道为:" + tdbh + "未录入(备案)");
}
String xzbh = ((Sbtdspsr)sbtdspsrs.get(0)).getXzbh();
if (xzbh.length() != 12) {
log.info("设备为:" + sbbh + ",通道为:" + tdbh + "配置的行政区划" + xzbh + "不合规");
return ResultObj.error(Integer.valueOf(ResponseEnum.E_1002.getCode()), "设备为:" + sbbh + ",通道为:" + tdbh + "配置的行政区划不合规");
}
trffClientMessage.setDept(xzbh);
try {
sendevent(trffClientMessage, (Sbtdspsr)sbtdspsrs.get(0));
} catch (Exception e) {
log.error("MessageController receive putData error:{}", e.toString());
}
return ResultObj.ok(trffClientMessage);
}
public void sendevent(Alarm trffClientMessage,Sbtdspsr spr) {
String wbbh=spr.getWbbh();
Traffalarmrecord traffAlarmRecord = new Traffalarmrecord();
traffAlarmRecord.setAreaid(Long.valueOf(trffClientMessage.getDept()));
traffAlarmRecord.setRecordtype(trffClientMessage.getIncident_type().toLowerCase());
traffAlarmRecord.setRecordtime(DateUtils.getDateString(new Date(Long.valueOf(trffClientMessage.getTs()).longValue())));
traffAlarmRecord.setFdid(trffClientMessage.getVideo_id());
traffAlarmRecord.setChannelid(Integer.valueOf(0));
traffAlarmRecord.setVideourlfrom(trffClientMessage.getVideo_record_url());
traffAlarmRecord.setCreatetime(DateUtils.getDateString(new Date()));
traffAlarmRecord.setObjlable(trffClientMessage.getObjLabel());
traffAlarmRecord.setPushstatus(Integer.valueOf(9));
traffAlarmRecord.setChannelname(spr.getBz());
List<String> imgBase64List = trffClientMessage.getImg_base64();
String imgEnumHead = "IMG";
Ftp ftp = this.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 j = 0; j < imgUrls.size(); j++) {
TraffAlarmRecordFromImgEnum.valueOf(imgEnumHead + j).setImg(traffAlarmRecord, imgUrls.get(j));
}
if (StringEnum.ONE.getValue().equals(this.checkEnable))
{
traffAlarmRecord.setCheckstatus(Integer.valueOf(9));
}
Map<Object, Object> map = new HashMap<>();
if (this.manualStatus.equalsIgnoreCase("1")) {
map.put("type", "recordalarm");
traffAlarmRecord.setManualstatus(Integer.valueOf(0));
} else {
map.put("type", "alarm");
traffAlarmRecord.setManualstatus(Integer.valueOf(1));
}
//为了适配mqtt返回的处理状态,将状态设置为mqtt的事件主键
traffAlarmRecord.setEventid("66211"+UUIDUtils.createuuid());
this.traffAlarmRecordMapper.inserTraffAlarmRecord(traffAlarmRecord);
map.put("data", trffClientMessage);
map.put("recordid", traffAlarmRecord.getRecordid());
this.webSocket.GroupSending(JsonUtil.beanToString(map));
try {
String basepath = "gstraff/" + traffAlarmRecord.getFdid() + ((traffAlarmRecord.getChannelid().intValue() < 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);
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) {
this.traffAlarmRecordMapper.updateTraffAlarmRecordUrl(traffAlarmRecord);
}
if (null != transferRecordMap.get("videopath") &&
!"".equals(transferRecordMap.get("videopath").toString()) && (null == recordBak
.getVideopath() || "".equalsIgnoreCase(recordBak.getVideopath()))) {
String pname = DateUtils.formatCurrDayNoSign() + traffAlarmRecord.getRecordid() + "_video";
String fileName = pname + ".mp4";
String ftputl = FTPUtil.getFtpUrl(ftp) + basepath + "/" + fileName;
log.info("send to mqtt video is not empty");
schedulepool.schedule(() -> {
String url = transferRecordMap.get("videopath").toString();
try {
HttpURLConnection connection = (HttpURLConnection) (new URL(url)).openConnection();
connection.setReadTimeout(2000);
connection.setConnectTimeout(3000);
connection.setRequestMethod("GET");
if (connection.getResponseCode() == 200) {
InputStream inputStream = connection.getInputStream();
log.info("url:", url);
boolean r = FTPUtil.uploadFile(ftp, basepath, fileName, inputStream);
if (r) {
log.info("video:{} upload success:", ftputl);
traffAlarmRecord.setVideopath(ftputl);
if (traffAlarmRecord != null && traffAlarmRecord.getRecordid() != null) {
this.traffAlarmRecordMapper.updateTraffAlarmRecordUrl(traffAlarmRecord);
}
}
} else {
log.info("video:{} upload fail:", ftputl);
}
sendtomqtt(trffClientMessage, wbbh, traffAlarmRecord);
} catch (IOException e) {
log.error(e.toString());
sendtomqtt(trffClientMessage, wbbh, traffAlarmRecord);
return Integer.valueOf(0);
}
return Integer.valueOf(1);
}, 50, TimeUnit.SECONDS); //等待50秒钟执行
}
traffAlarmRecord.setPushdesc("success");
traffAlarmRecord.setPushstatus(Integer.valueOf(0));
this.traffAlarmRecordMapper.updatePushEvent(traffAlarmRecord);
} catch (Exception e) {
log.error("alarmevent error :{}" , e.toString());
}
}
private void sendtomqtt(Alarm trffClientMessage, String wbbh, Traffalarmrecord traffAlarmRecord) {
log.info("sendtomqtt");
if (null == wbbh || "".equals(wbbh)) {
log.info("设备为:{}wbbh is empty",traffAlarmRecord.getFdid());
} else {
MqttAlarm mqttalarm = new MqttAlarm();
String mqttbh = this.traffAlarmRecordMapper.seletmqttbh(trffClientMessage.getIncident_type());
mqttalarm.setAlarmTime(traffAlarmRecord.getRecordtime());
mqttalarm.setCompanyId("66211");
mqttalarm.setEventid(traffAlarmRecord.getEventid());
mqttalarm.setImagePath((traffAlarmRecord.getImg1path() == null) ? "" : (this.ftpServiceUrl + "?location=" + traffAlarmRecord.getImg1path().replace("ftp://" + this.ftppath + "/", "")));
mqttalarm.setVideoPath((traffAlarmRecord.getVideopath() == null) ? "" : (this.ftpServiceUrl + "?location=" + traffAlarmRecord.getVideopath().replace("ftp://" + this.ftppath + "/", "")));
mqttalarm.setDeviceId(wbbh);
log.info("mqtt data1:{}",JsonUtil.beanToString(mqttalarm));
//查询部门是否包含隧道
mqttalarm.setLocation(traffAlarmRecord.getChannelname()!=null&&traffAlarmRecord.getChannelname().contains("隧道")?2:1);
if (null != trffClientMessage.getObj_location()) {
mqttalarm.setX(trffClientMessage.getObj_location().get("x") == null? null : (trffClientMessage.getObj_location().get("x")).toString());
mqttalarm.setY(trffClientMessage.getObj_location().get("y") == null ? null : (trffClientMessage.getObj_location().get("y")).toString());
mqttalarm.setWidth(trffClientMessage.getObj_location().get("width") == null ? null : (trffClientMessage.getObj_location().get("width")).toString());
mqttalarm.setHeight(trffClientMessage.getObj_location().get("height") == null ? null : (trffClientMessage.getObj_location().get("height")).toString());
}
mqttalarm.setEventTypeId(mqttbh);
log.info("mqtt data:{}",JsonUtil.beanToString(mqttalarm));
this.mQTTSubsribe.publishMessage("event/" + wbbh + "/videoEvent", JSON.toJSONString(mqttalarm));
}
}
private RateLimiter getRateLimiter(String videoId) {
RateLimiter rateLimiter;
if (this.rateLimiterMap.containsKey(videoId)) {
rateLimiter = this.rateLimiterMap.get(videoId);
} else {
RateLimiter value = RateLimiter.create(this.rate.intValue());
rateLimiter = this.rateLimiterMap.putIfAbsent(videoId, value);
if (rateLimiter == null) {
rateLimiter = value;
}
}
return rateLimiter;
}
@GetMapping({"/getflv/{videoid}"})
public String getflv(@PathVariable("videoid") String videoid) {
String rtsp = this.traffFlowService.selectSbtddspsrRtspByVideoid(videoid);
if (null != rtsp) {
if (null == this.stringRedisTemplate.opsForValue().get(videoid))
{
this.flvCacheService.getvalue(videoid, rtsp);
}
JSONObject jsonObject = JSONObject.parseObject((String)this.stringRedisTemplate.opsForValue().get(videoid));
if (null != jsonObject.getJSONArray("play_list") && jsonObject.getJSONArray("play_list").size() > 0) {
return String.valueOf(jsonObject.getJSONArray("play_list").get(0));
}
}
return "";
}
@GetMapping({"/sendtouser/{recordid}"})
@ResponseBody
public Integer sendtouser(@PathVariable("recordid") String recordid) {
Traffalarmrecord traffalarmrecord = (Traffalarmrecord)this.traffAlarmRecordMapper.selectByPrimaryKey(recordid);
if (traffalarmrecord == null) return Integer.valueOf(0);
Alarm alarm = new Alarm();
Base64Encoder base64Encoder = new Base64Encoder();
alarm.setTs(Long.toString((traffalarmrecord.getRecordtime() == null) ? (new Date()).getTime() : DateUtils.Parsedate(traffalarmrecord.getRecordtime()).getTime()));
alarm.setDept((traffalarmrecord.getAreaid() == null) ? null : Long.toString(traffalarmrecord.getAreaid().longValue()));
alarm.setVideo_id(traffalarmrecord.getFdid() + "_" + traffalarmrecord.getChannelid());
alarm.setIncident_type(traffalarmrecord.getRecordtype());
List<String> strImgs = new ArrayList<>();
if (traffalarmrecord.getImg1path() != null) {
byte[] Img = FTPUtil.getFtpPicBytes(traffalarmrecord.getImg1path());
strImgs.add((Img != null) ? Base64Encoder.encode(Img) : null);
}
if (traffalarmrecord.getImg2path() != null) {
byte[] Img = FTPUtil.getFtpPicBytes(traffalarmrecord.getImg2path());
strImgs.add((Img != null) ? Base64Encoder.encode(Img) : null);
}
if (traffalarmrecord.getImg3path() != null) {
byte[] Img = FTPUtil.getFtpPicBytes(traffalarmrecord.getImg3path());
strImgs.add((Img != null) ? Base64Encoder.encode(Img) : null);
}
if (traffalarmrecord.getImg4path() != null) {
byte[] Img = FTPUtil.getFtpPicBytes(traffalarmrecord.getImg4path());
strImgs.add((Img != null) ? Base64Encoder.encode(Img) : null);
}
if (traffalarmrecord.getImg5path() != null) {
byte[] Img = FTPUtil.getFtpPicBytes(traffalarmrecord.getImg5path());
strImgs.add((Img != null) ? Base64Encoder.encode(Img) : null);
}
alarm.setImg_base64(strImgs);
Map<Object, Object> map = new HashMap<>();
map.put("type", "alarm");
map.put("data", alarm);
map.put("recordid", recordid);
this.webSocket.GroupSending(JsonUtil.beanToString(map));
try {
ResultObj obj = this.eventWriteService.updateAndAutoSendEvent(traffalarmrecord);
log.info("send to guangda novideopath --->response message" + obj.toString());
if (obj.getStatus().intValue() == 200) {
return Integer.valueOf(1);
}
return Integer.valueOf(0);
}
catch (Exception ex) {
log.info("send to guangda novideopath --->response error" + ex.toString());
return Integer.valueOf(1);
}
}
@GetMapping({"/test"})
@ResponseBody
public void test() {
String manualStatus = this.traffAlarmRecordMapper.seletManualStatus();
Alarm alarm = new Alarm();
alarm.setVideo_id("33_65_230_156_554_fbXdTkVe98u_ecvs_0");
alarm.setIncident_type("NO_MOTOR_BAN");
String str = "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAB1UlEQVRIS5WVjTEEQRBG30WACBABGSACLgJEgAicCBABIkAEiIAMkAERUG9remtua2Z3rquuam935nvTPf0zY9y2gENgH/B5Ny3/AL6AV+A5PReVZhV9xS6Bk/RdEUVzE7qXXtwDVyVQCaDoNeC3m/T7qRxkHThPvz9gnrzqlw8Bi3RyTyyoJjzkCTJcO8ApoEed5QAF74CHLDRDofwOShA9PgYOwpMAGPN34A04Grl3T6kZ/5KFJ5vAthEIgC4pLGgsLFMAoWp8pktfCFh6MZG2LQAlPLDpvS3ALDBrNhoutRUQh54LcJNhGYt9ONYKcH1XiAJ80CVTdMpWATwB6wIsEKswALpnupZsLE1dfwsorKl3WAP0hTKgCDcFTeeSWQc5YF+APcaXLSGKSq/1sBzah6h7GCmefNMqgP6SV0nTVsBSmq5SaK2A6AxdFi1V3kSxtQDMNPtal5l5s/Oy7SF2wlo/EmBIvbOS+f4ldQVBfbNzsR3Sj7p3UYG4yZBGKuaQELeLqtVNwGG6xUzwo9PJTGgxwY/p5HpYHDghJN0TrqVxaXXWQAqfpQH1nfrZ0uyuFUw+awUJcGNsVjjC9Ts2u6cqMgowhpH/IwGE2fxK99GH9R91mncY+HKoHAAAAABJRU5ErkJggg==";
List<String> arrlist = new ArrayList();
arrlist.add(str);
arrlist.add(str);
arrlist.add(str);
arrlist.add(str);
arrlist.add(str);
alarm.setImg_base64(arrlist);
alarm.setTs("1345677777");
alarm.setType("TRAFFIC_INCIDENT_ALARM");
Map<Object, Object> map = new HashMap<>();
map.put("type", "alarm");
map.put("data", alarm);
map.put("recordid", "33448");
this.webSocket.GroupSending(JsonUtil.beanToString(map));
Traffalarmrecord traffAlarmRecord = new Traffalarmrecord();
traffAlarmRecord.setRecordid(Long.valueOf(Long.parseLong("33448")));
traffAlarmRecord.setChannelid(new Integer(1));
traffAlarmRecord.setFdid("20200305112042989");
traffAlarmRecord.setRecordtype("NO_MOTOR_BAN");
map.put("recordid", "33449");
this.webSocket.GroupSending(JsonUtil.beanToString(map));
Traffalarmrecord traffAlarmRecord2 = new Traffalarmrecord();
traffAlarmRecord2.setRecordid(Long.valueOf(Long.parseLong("33449")));
traffAlarmRecord2.setChannelid(new Integer(1));
traffAlarmRecord2.setFdid("20200305112042989");
traffAlarmRecord2.setRecordtype("WRONG_DIRECTION");
}
@GetMapping({"/testevent"})
@ResponseBody
public void testevent() {
String json = "{ \"type\": \"TRAFFIC_INCIDENT_ALARM\", \"id\": \"d9a2b0f0-f0cf-49b9-9b64-3da86a122afa\", \"video_id\": \"201809180950119121_0\", \"ts\": \"1544602970458\", \"incident_type\": \"WRONG_DIRECTION\", \"img_urls\": [ \"http://192.168.1.3:8001/api/alg/files/1535740000-test\",\n \"http://192.168.1.3:8001/api/alg/files/1535740000-test2\", \"http://192.168.1.3:8001/api/alg/files/1535740000-test3\", \"http://192.168.1.3:8001/api/alg/files/1535740000-test4\", \"http://192.168.1.3:8001/api/alg/files/1535740000-test5\" ], \"video_record_url\": \"http://192.168.1.3:8001/api/alg/files/1576459828-test\", \"obj_location\": { \"x\": 0.1,\n \"y\": 0.2, \"width\": 0.4, \"height\": 0.7 }, \"img_base64\": [\"d0xEMHcFAESwdwaUjWDqB6/1Qw4LapAiSICVTOFWsGT0sgt\"]\n }";
MqttAlarm alarm = new MqttAlarm();
alarm.setHeight("0.7");
alarm.setWidth("0.7");
this.mQTTSubsribe.publishMessage("event/1111/videoEvent", JSONUtil.toJsonStr(alarm));
}
@GetMapping({"/api/alg/files"})
protected void fielagent(@RequestParam("location") String location, HttpServletRequest request, HttpServletResponse response) {
ServletOutputStream servletOutputStream;
long startTime = System.currentTimeMillis();
String ftpPath = "ftp://" + this.ftppath + "/" + location;
FileInputStream hFile = null;
OutputStream toClient = null;
InputStream inputStream = null;
BufferedInputStream bis = null;
try { response.reset();
response.setHeader("Expires", "Sat, 10 May 2059 12:00:00 GMT");
response.setHeader("Cache-Control", "max-age=315360000");
if (StringUtils.isNotBlank(ftpPath)) {
if (ftpPath.endsWith(".jpg") || ftpPath.endsWith(".JPG") || ftpPath.endsWith(".png") || ftpPath.endsWith(".PNG") || ftpPath.endsWith(".gif") || ftpPath.endsWith(".GIF")) {
response.setContentType("image/" + ftpPath.substring(ftpPath.lastIndexOf(".") + 1) + "; charset=utf-8");
} else if (ftpPath.endsWith(".mp4") || ftpPath.endsWith(".MP4")) {
response.setContentType("video/mpeg4; charset=utf-8");
String mp4file = ftpPath.substring(ftpPath.lastIndexOf("/") + 1);
response.setHeader("Content-Disposition", "attachment;fileName=" + mp4file);
}
String destUrl = ftpPath;
destUrl = new String(destUrl.getBytes("ISO8859-1"), "GBK");
String[] arr = destUrl.split(";");
FtpURLConnection ftpUrl = null;
HttpURLConnection httpUrl = null;
for (int i = 0; i < arr.length; i++) {
try { URL url = new URL(arr[i]);
if (arr[i].toUpperCase().indexOf("FTP") != -1) {
ftpUrl = (FtpURLConnection)url.openConnection();
ftpUrl.setConnectTimeout(30000);
ftpUrl.setReadTimeout(30000);
bis = new BufferedInputStream(ftpUrl.getInputStream());
response.setContentLength(ftpUrl.getContentLength());
} else {
httpUrl = (HttpURLConnection)url.openConnection();
httpUrl.setConnectTimeout(30000);
httpUrl.setReadTimeout(30000);
bis = new BufferedInputStream(httpUrl.getInputStream());
response.setContentLength(httpUrl.getContentLength());
}
servletOutputStream = response.getOutputStream();
IOUtils.copy(bis, (OutputStream)servletOutputStream);
if (bis != null) {
bis.close();
}
if (httpUrl != null) {
httpUrl.disconnect();
}
if (ftpUrl != null) {
ftpUrl.close();
}
if (servletOutputStream != null)
servletOutputStream.close(); }
catch (Exception e) {
response.setContentType("text/html;charset=GBK");
response.setCharacterEncoding("GBK");
PrintWriter out = response.getWriter();
out.write("无法打开图片!");
out.flush(); log.info("ftpagent error " + ftpUrl + e.toString()); }
finally {
if (bis != null) {
bis.close();
}
if (httpUrl != null) {
httpUrl.disconnect();
}
if (ftpUrl != null) {
ftpUrl.close();
}
if (toClient != null) {
toClient.close();
}
}
}
return;
} }
catch (Exception exception) { }
finally
{ IOUtils.closeQuietly(bis);
IOUtils.closeQuietly(toClient);
IOUtils.closeQuietly(hFile);
IOUtils.closeQuietly(inputStream); }
}
@GetMapping({"/testmqtt"})
public String testmqtt() {
String json="{\"alarmTime\":\"2021-11-26 10:40:38\",\"companyId\":\"66211\",\"deviceId\":\"401150076\",\"eventTypeId\":\"66003\",\"eventid\":\"662115a9fb682b4324f3cb1a69943bcaf845b\",\"height\":\"0.2665441036224365\",\"imagePath\":\"http://33.65.219.103:8089/api/alg/files?location=20210521001321054002_1/20211126/e1491a815a744f47bed58f2c83d520a5.jpg\",\"location\":1,\"videoPath\":\"http://33.65.219.103:8089/api/alg/files?location=gstraff/20210521001321054002_100/20211126/20211126143488_video.mp4\",\"width\":\"0.14374999701976776\",\"x\":\"0.4677083194255829\",\"y\":\"0.6158088445663452\"}";
this.mQTTSubsribe.publishMessage("event/" + 401150294 + "/videoEvent", json);
return "";
}
}
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;
}
\ No newline at end of file
package com.hzjt.domain;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
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;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getVideo_id() {
return video_id;
}
public void setVideo_id(String video_id) {
this.video_id = video_id;
}
public String getTs() {
return ts;
}
public void setTs(String ts) {
this.ts = ts;
}
public String getIncident_type() {
return incident_type;
}
public void setIncident_type(String incident_type) {
this.incident_type = incident_type;
}
public List<String> getImg_urls() {
return img_urls;
}
public void setImg_urls(List<String> img_urls) {
this.img_urls = img_urls;
}
public String getVideo_record_url() {
return video_record_url;
}
public void setVideo_record_url(String video_record_url) {
this.video_record_url = video_record_url;
}
public Map<String, BigDecimal> getObj_location() {
return obj_location;
}
public void setObj_location(Map<String, BigDecimal> obj_location) {
this.obj_location = obj_location;
}
public List<String> getImg_base64() {
return img_base64;
}
public void setImg_base64(List<String> img_base64) {
this.img_base64 = img_base64;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
public String getObjLabel() {
return objLabel;
}
public void setObjLabel(String objLabel) {
this.objLabel = 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 lombok.Data;
import java.util.List;
@Data
public class AutoVehicles {
private String id;
private String type;
private String video_id;
private String ts;
List<AutoVehiclesdetail> objs;
}
package com.hzjt.domain;
import lombok.Data;
@Data
public class AutoVehiclesdetail {
private String obj_id;
private String vehiclesid;
private String type;
private Long direction;
private Long classification_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;
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;
public String getDeviceID() {
return deviceID;
}
public void setDeviceID(String deviceID) {
this.deviceID = deviceID;
}
public String getDeviceType() {
return DeviceType;
}
public void setDeviceType(String deviceType) {
DeviceType = deviceType;
}
public String getDeviceName() {
return deviceName;
}
public void setDeviceName(String deviceName) {
this.deviceName = deviceName;
}
public String getRegionID() {
return regionID;
}
public void setRegionID(String regionID) {
this.regionID = regionID;
}
public Integer getDeviceStatus() {
return deviceStatus;
}
public void setDeviceStatus(Integer deviceStatus) {
this.deviceStatus = deviceStatus;
}
public String getDeviceSupplier() {
return deviceSupplier;
}
public void setDeviceSupplier(String deviceSupplier) {
this.deviceSupplier = deviceSupplier;
}
public Integer getDataType() {
return dataType;
}
public void setDataType(Integer dataType) {
this.dataType = dataType;
}
public Integer getRoadType() {
return RoadType;
}
public void setRoadType(Integer roadType) {
RoadType = roadType;
}
public String getLocationType() {
return locationType;
}
public void setLocationType(String locationType) {
this.locationType = locationType;
}
public String getLocationX() {
return locationX;
}
public void setLocationX(String locationX) {
this.locationX = locationX;
}
public String getLocationY() {
return locationY;
}
public void setLocationY(String locationY) {
this.locationY = locationY;
}
public String getLocationEndX() {
return locationEndX;
}
public void setLocationEndX(String locationEndX) {
this.locationEndX = locationEndX;
}
public String getLocationEndY() {
return locationEndY;
}
public void setLocationEndY(String locationEndY) {
this.locationEndY = locationEndY;
}
public Integer getDeviceDirection() {
return DeviceDirection;
}
public void setDeviceDirection(Integer deviceDirection) {
DeviceDirection = deviceDirection;
}
public Integer getStartNumK() {
return StartNumK;
}
public void setStartNumK(Integer startNumK) {
StartNumK = startNumK;
}
public Integer getStartNumM() {
return StartNumM;
}
public void setStartNumM(Integer startNumM) {
StartNumM = startNumM;
}
public String getRoadNum() {
return RoadNum;
}
public void setRoadNum(String roadNum) {
RoadNum = roadNum;
}
public String getLocationDesc() {
return LocationDesc;
}
public void setLocationDesc(String locationDesc) {
LocationDesc = locationDesc;
}
public Integer getToll() {
return toll;
}
public void setToll(Integer toll) {
this.toll = toll;
}
public String getLocationID() {
return locationID;
}
public void setLocationID(String locationID) {
this.locationID = locationID;
}
public Integer getServiceArea() {
return serviceArea;
}
public void setServiceArea(Integer serviceArea) {
this.serviceArea = serviceArea;
}
public Integer getRampToll() {
return rampToll;
}
public void setRampToll(Integer rampToll) {
this.rampToll = rampToll;
}
public Integer getRampServiceArea() {
return rampServiceArea;
}
public void setRampServiceArea(Integer rampServiceArea) {
this.rampServiceArea = rampServiceArea;
}
public String getRampHubRoad() {
return rampHubRoad;
}
public void setRampHubRoad(String rampHubRoad) {
this.rampHubRoad = rampHubRoad;
}
public Integer getRampHubDirection() {
return rampHubDirection;
}
public void setRampHubDirection(Integer rampHubDirection) {
this.rampHubDirection = rampHubDirection;
}
}
package com.hzjt.domain;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
@Data
public class DiskSpace {
private String diskName;
private String freeSpace;
private String totalSpace;
}
package com.hzjt.domain;
import lombok.Data;
/**
* @author chenl
* @version 1.0
* @date 2020/3/15 22:18
*/
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;
public String getEventID() {
return eventID;
}
public void setEventID(String eventID) {
this.eventID = eventID;
}
public String getEventSource() {
return eventSource;
}
public void setEventSource(String eventSource) {
this.eventSource = eventSource;
}
public String getEventType() {
return eventType;
}
public void setEventType(String eventType) {
this.eventType = eventType;
}
public String getOccurTime() {
return occurTime;
}
public void setOccurTime(String occurTime) {
this.occurTime = occurTime;
}
public Long getRegionID() {
return regionID;
}
public void setRegionID(Long regionID) {
this.regionID = regionID;
}
public String getEventDeviceID() {
return eventDeviceID;
}
public void setEventDeviceID(String eventDeviceID) {
this.eventDeviceID = eventDeviceID;
}
public String getEventSupplier() {
return eventSupplier;
}
public void setEventSupplier(String eventSupplier) {
this.eventSupplier = eventSupplier;
}
public String getLocationType() {
return locationType;
}
public void setLocationType(String locationType) {
this.locationType = locationType;
}
public String getLocationX() {
return locationX;
}
public void setLocationX(String locationX) {
this.locationX = locationX;
}
public String getLocationY() {
return locationY;
}
public void setLocationY(String locationY) {
this.locationY = locationY;
}
public String getLocationEndX() {
return locationEndX;
}
public void setLocationEndX(String locationEndX) {
this.locationEndX = locationEndX;
}
public String getLocationEndY() {
return locationEndY;
}
public void setLocationEndY(String locationEndY) {
this.locationEndY = locationEndY;
}
public String getEventProof1() {
return eventProof1;
}
public void setEventProof1(String eventProof1) {
this.eventProof1 = eventProof1;
}
public String getEventProof2() {
return eventProof2;
}
public void setEventProof2(String eventProof2) {
this.eventProof2 = eventProof2;
}
public String getEventProof3() {
return eventProof3;
}
public void setEventProof3(String eventProof3) {
this.eventProof3 = eventProof3;
}
public String getEventProof4() {
return eventProof4;
}
public void setEventProof4(String eventProof4) {
this.eventProof4 = eventProof4;
}
public String getEventProof5() {
return eventProof5;
}
public void setEventProof5(String eventProof5) {
this.eventProof5 = eventProof5;
}
public String getEventvideo1() {
return eventvideo1;
}
public void setEventvideo1(String eventvideo1) {
this.eventvideo1 = eventvideo1;
}
}
package com.hzjt.domain;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
public class Ftp {
private String ftpIp;
private Integer ftpPort;
private String ftpUsername;
private String ftpPassword;
public Ftp(String ftpIp, Integer ftpPort, String ftpUsername, String ftpPassword) {
this.ftpIp = ftpIp;
this.ftpPort = ftpPort;
this.ftpUsername = ftpUsername;
this.ftpPassword = ftpPassword;
}
public Ftp() {
}
public String getFtpIp() {
return ftpIp;
}
public void setFtpIp(String ftpIp) {
this.ftpIp = ftpIp;
}
public Integer getFtpPort() {
return ftpPort;
}
public void setFtpPort(Integer ftpPort) {
this.ftpPort = ftpPort;
}
public String getFtpUsername() {
return ftpUsername;
}
public void setFtpUsername(String ftpUsername) {
this.ftpUsername = ftpUsername;
}
public String getFtpPassword() {
return ftpPassword;
}
public void setFtpPassword(String ftpPassword) {
this.ftpPassword = ftpPassword;
}
@Override
public String toString() {
return "Ftp{" +
"ftpIp='" + ftpIp + '\'' +
", ftpPort=" + ftpPort +
", ftpUsername='" + ftpUsername + '\'' +
", ftpPassword='" + ftpPassword + '\'' +
'}';
}
}
package com.hzjt.domain;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnore;
import java.util.List;
public class GoalStructureParam {
private Output Output;
private int Model;
@JsonIgnore
private String apiout;
private List<ImageList> ImageList;
public void setOutput(Output Output) {
this.Output = Output;
}
@JSONField(name = "Output")
public Output getOutput() {
return this.Output;
}
public void setModel(int Model) {
this.Model = Model;
}
@JSONField(name = "Model")
public int getModel() {
return this.Model;
}
public void setApiout(String apiout) {
this.apiout = apiout;
}
public String getApiout() {
return this.apiout;
}
public void setImageList(List<ImageList> ImageList) {
this.ImageList = ImageList;
}
@JSONField(name = "ImageList")
public List<ImageList> getImageList() {
return this.ImageList;
}
}
package com.hzjt.domain;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnore;
public class ImageList {
private String ImageID;
@JsonIgnore
private int Format;
private String Data;
public ImageList(String imageID, String data) {
ImageID = imageID;
Data = data;
}
public void setImageID(String ImageID){
this.ImageID = ImageID;
}
@JSONField(name = "ImageID")
public String getImageID(){
return this.ImageID;
}
public void setFormat(int Format){
this.Format = Format;
}
@JSONField(name = "Format")
public int getFormat(){
return this.Format;
}
public void setData(String Data){
this.Data = Data;
}
@JSONField(name = "Data")
public String getData(){
return this.Data;
}
}
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;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
public class MqttAlarm {
private String deviceId;
private String eventTypeId;
private String companyId;
private String alarmTime;
private String x;
private String y;
private String height;
private String width;
private String imagePath;
private String videoPath;
private String content;
private String eventid;
private int location;
public String getDeviceId() {
return deviceId;
}
public void setDeviceId(String deviceId) {
this.deviceId = deviceId;
}
public String getEventTypeId() {
return eventTypeId;
}
public void setEventTypeId(String eventTypeId) {
this.eventTypeId = eventTypeId;
}
public String getCompanyId() {
return companyId;
}
public void setCompanyId(String companyId) {
this.companyId = companyId;
}
public String getAlarmTime() {
return alarmTime;
}
public void setAlarmTime(String alarmTime) {
this.alarmTime = alarmTime;
}
public String getX() {
return x;
}
public void setX(String x) {
this.x = x;
}
public String getY() {
return y;
}
public void setY(String y) {
this.y = y;
}
public String getHeight() {
return height;
}
public void setHeight(String height) {
this.height = height;
}
public String getWidth() {
return width;
}
public void setWidth(String width) {
this.width = width;
}
public String getImagePath() {
return imagePath;
}
public void setImagePath(String imagePath) {
this.imagePath = imagePath;
}
public String getVideoPath() {
return videoPath;
}
public void setVideoPath(String videoPath) {
this.videoPath = videoPath;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getEventid() {
return eventid;
}
public void setEventid(String eventid) {
this.eventid = eventid;
}
public int getLocation() {
return location;
}
public void setLocation(int location) {
this.location = location;
}
}
package com.hzjt.domain;
import lombok.Data;
public class MqttResult {
private String deviceId ;
private String eventid;
private String companyId;
private String status;
private String confirmTime;
private String confirmUser;
public String getDeviceId() {
return deviceId;
}
public void setDeviceId(String deviceId) {
this.deviceId = deviceId;
}
public String getEventid() {
return eventid;
}
public void setEventid(String eventid) {
this.eventid = eventid;
}
public String getCompanyId() {
return companyId;
}
public void setCompanyId(String companyId) {
this.companyId = companyId;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getConfirmTime() {
return confirmTime;
}
public void setConfirmTime(String confirmTime) {
this.confirmTime = confirmTime;
}
public String getConfirmUser() {
return confirmUser;
}
public void setConfirmUser(String confirmUser) {
this.confirmUser = confirmUser;
}
}
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 com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnore;
public class Output {
private int SubClass;
//最大行人细类输出个数为1
@JsonIgnore
private int MaxHumanSubClassNum;
//最大车辆细类输出个数为输出全部
@JsonIgnore
private int MaxVehicleSubClassNum;
//最大骑行细类输出个数为3
@JsonIgnore
private int MaxBikeSubClassNum;
public Output(int subClass, int maxHumanSubClassNum, int maxVehicleSubClassNum, int maxBikeSubClassNum) {
SubClass = subClass;
MaxHumanSubClassNum = maxHumanSubClassNum;
MaxVehicleSubClassNum = maxVehicleSubClassNum;
MaxBikeSubClassNum = maxBikeSubClassNum;
}
public void setSubClass(int SubClass) {
this.SubClass = SubClass;
}
@JSONField(name = "SubClass")
public int getSubClass() {
return this.SubClass;
}
public void setMaxHumanSubClassNum(int MaxHumanSubClassNum) {
this.MaxHumanSubClassNum = MaxHumanSubClassNum;
}
@JSONField(name = "MaxHumanSubClassNum")
public int getMaxHumanSubClassNum() {
return this.MaxHumanSubClassNum;
}
public void setMaxVehicleSubClassNum(int MaxVehicleSubClassNum) {
this.MaxVehicleSubClassNum = MaxVehicleSubClassNum;
}
@JSONField(name = "MaxVehicleSubClassNum")
public int getMaxVehicleSubClassNum() {
return this.MaxVehicleSubClassNum;
}
public void setMaxBikeSubClassNum(int MaxBikeSubClassNum) {
this.MaxBikeSubClassNum = MaxBikeSubClassNum;
}
@JSONField(name = "MaxBikeSubClassNum")
public int getMaxBikeSubClassNum() {
return this.MaxBikeSubClassNum;
}
}
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;
import lombok.Data;
@Data
public class RTSPFrame {
private Integer ret;
private String desc;
private String url;
}
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
*/
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,"系统异常"),
E_9991(9991,"发送异常"),
SUCCESS(200,"请求成功");
private int code;
private String msg;
ResponseEnum(int code, String msg) {
this.code = code;
this.msg = msg;
}
public int getCode() {
return code;
}
public String getMsg() {
return 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
*/
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 +
'}';
}
public static ObjectMapper getMAPPER() {
return MAPPER;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.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;
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;
public String getXh() {
return xh;
}
public void setXh(String xh) {
this.xh = xh;
}
public String getSbbh() {
return sbbh;
}
public void setSbbh(String sbbh) {
this.sbbh = sbbh;
}
public Long getTdbh() {
return tdbh;
}
public void setTdbh(Long tdbh) {
this.tdbh = tdbh;
}
public Long getTdlx() {
return tdlx;
}
public void setTdlx(Long tdlx) {
this.tdlx = tdlx;
}
public String getWbbh() {
return wbbh;
}
public void setWbbh(String wbbh) {
this.wbbh = wbbh;
}
public String getTdmc() {
return tdmc;
}
public void setTdmc(String tdmc) {
this.tdmc = tdmc;
}
public String getTdmcpy() {
return tdmcpy;
}
public void setTdmcpy(String tdmcpy) {
this.tdmcpy = tdmcpy;
}
public Long getTdzt() {
return tdzt;
}
public void setTdzt(Long tdzt) {
this.tdzt = tdzt;
}
public String getTdazwz() {
return tdazwz;
}
public void setTdazwz(String tdazwz) {
this.tdazwz = tdazwz;
}
public String getJd() {
return jd;
}
public void setJd(String jd) {
this.jd = jd;
}
public String getWd() {
return wd;
}
public void setWd(String wd) {
this.wd = wd;
}
public Long getTpwzx() {
return tpwzx;
}
public void setTpwzx(Long tpwzx) {
this.tpwzx = tpwzx;
}
public Long getTpwzy() {
return tpwzy;
}
public void setTpwzy(Long tpwzy) {
this.tpwzy = tpwzy;
}
public Long getSpbmgs() {
return spbmgs;
}
public void setSpbmgs(Long spbmgs) {
this.spbmgs = spbmgs;
}
public Long getSpxsgs() {
return spxsgs;
}
public void setSpxsgs(Long spxsgs) {
this.spxsgs = spxsgs;
}
public Long getSsspsfzzf() {
return ssspsfzzf;
}
public void setSsspsfzzf(Long ssspsfzzf) {
this.ssspsfzzf = ssspsfzzf;
}
public Long getSpzt() {
return spzt;
}
public void setSpzt(Long spzt) {
this.spzt = spzt;
}
public Long getLxzt() {
return lxzt;
}
public void setLxzt(Long lxzt) {
this.lxzt = lxzt;
}
public Long getLxsfzzf() {
return lxsfzzf;
}
public void setLxsfzzf(Long lxsfzzf) {
this.lxsfzzf = lxsfzzf;
}
public Long getSpzl() {
return spzl;
}
public void setSpzl(Long spzl) {
this.spzl = spzl;
}
public Long getGjzjg() {
return gjzjg;
}
public void setGjzjg(Long gjzjg) {
this.gjzjg = gjzjg;
}
public Long getMl() {
return ml;
}
public void setMl(Long ml) {
this.ml = ml;
}
public Long getSpmlyxgs() {
return spmlyxgs;
}
public void setSpmlyxgs(Long spmlyxgs) {
this.spmlyxgs = spmlyxgs;
}
public Long getSfzcptzkz() {
return sfzcptzkz;
}
public void setSfzcptzkz(Long sfzcptzkz) {
this.sfzcptzkz = sfzcptzkz;
}
public String getZxcczbh() {
return zxcczbh;
}
public void setZxcczbh(String zxcczbh) {
this.zxcczbh = zxcczbh;
}
public Long getZxccxe() {
return zxccxe;
}
public void setZxccxe(Long zxccxe) {
this.zxccxe = zxccxe;
}
public Long getZxccyyrl() {
return zxccyyrl;
}
public void setZxccyyrl(Long zxccyyrl) {
this.zxccyyrl = zxccyyrl;
}
public Long getZxccsyrl() {
return zxccsyrl;
}
public void setZxccsyrl(Long zxccsyrl) {
this.zxccsyrl = zxccsyrl;
}
public Long getLxblts() {
return lxblts;
}
public void setLxblts(Long lxblts) {
this.lxblts = lxblts;
}
public Long getSfqy() {
return sfqy;
}
public void setSfqy(Long sfqy) {
this.sfqy = sfqy;
}
public String getJlbh() {
return jlbh;
}
public void setJlbh(String jlbh) {
this.jlbh = jlbh;
}
public String getFxms() {
return fxms;
}
public void setFxms(String fxms) {
this.fxms = fxms;
}
public String getJbms() {
return jbms;
}
public void setJbms(String jbms) {
this.jbms = jbms;
}
public String getXzbh() {
return xzbh;
}
public void setXzbh(String xzbh) {
this.xzbh = xzbh;
}
public String getGgbh() {
return ggbh;
}
public void setGgbh(String ggbh) {
this.ggbh = ggbh;
}
public String getZnbh() {
return znbh;
}
public void setZnbh(String znbh) {
this.znbh = znbh;
}
public Long getLxfs() {
return lxfs;
}
public void setLxfs(Long lxfs) {
this.lxfs = lxfs;
}
public String getJpkzdh() {
return jpkzdh;
}
public void setJpkzdh(String jpkzdh) {
this.jpkzdh = jpkzdh;
}
public Long getJdpx() {
return jdpx;
}
public void setJdpx(Long jdpx) {
this.jdpx = jdpx;
}
public Long getSfznfxjd() {
return sfznfxjd;
}
public void setSfznfxjd(Long sfznfxjd) {
this.sfznfxjd = sfznfxjd;
}
public String getZnfxlx() {
return znfxlx;
}
public void setZnfxlx(String znfxlx) {
this.znfxlx = znfxlx;
}
public Long getSqms() {
return sqms;
}
public void setSqms(Long sqms) {
this.sqms = sqms;
}
public String getSqurllj() {
return squrllj;
}
public void setSqurllj(String squrllj) {
this.squrllj = squrllj;
}
public Long getSsmlxz() {
return ssmlxz;
}
public void setSsmlxz(Long ssmlxz) {
this.ssmlxz = ssmlxz;
}
public Long getLxmlxz() {
return lxmlxz;
}
public void setLxmlxz(Long lxmlxz) {
this.lxmlxz = lxmlxz;
}
public String getZburllj() {
return zburllj;
}
public void setZburllj(String zburllj) {
this.zburllj = zburllj;
}
public Long getZbdk() {
return zbdk;
}
public void setZbdk(Long zbdk) {
this.zbdk = zbdk;
}
public Long getDqx() {
return dqx;
}
public void setDqx(Long dqx) {
this.dqx = dqx;
}
public Long getXqx() {
return xqx;
}
public void setXqx(Long xqx) {
this.xqx = xqx;
}
public Long getKqx() {
return kqx;
}
public void setKqx(Long kqx) {
this.kqx = kqx;
}
public Long getPqx() {
return pqx;
}
public void setPqx(Long pqx) {
this.pqx = pqx;
}
public Long getLxhfqx() {
return lxhfqx;
}
public void setLxhfqx(Long lxhfqx) {
this.lxhfqx = lxhfqx;
}
public Long getLxxzqx() {
return lxxzqx;
}
public void setLxxzqx(Long lxxzqx) {
this.lxxzqx = lxxzqx;
}
public Long getLxdjqx() {
return lxdjqx;
}
public void setLxdjqx(Long lxdjqx) {
this.lxdjqx = lxdjqx;
}
public Long getSfzlx() {
return sfzlx;
}
public void setSfzlx(Long sfzlx) {
this.sfzlx = sfzlx;
}
public Long getSfzx() {
return sfzx;
}
public void setSfzx(Long sfzx) {
this.sfzx = sfzx;
}
public String getHb() {
return hb;
}
public void setHb(String hb) {
this.hb = hb;
}
public String getJmcj() {
return jmcj;
}
public void setJmcj(String jmcj) {
this.jmcj = jmcj;
}
public String getSj() {
return sj;
}
public void setSj(String sj) {
this.sj = sj;
}
public Long getLxlrcyfs() {
return lxlrcyfs;
}
public void setLxlrcyfs(Long lxlrcyfs) {
this.lxlrcyfs = lxlrcyfs;
}
public String getKhdosdxsnr() {
return khdosdxsnr;
}
public void setKhdosdxsnr(String khdosdxsnr) {
this.khdosdxsnr = khdosdxsnr;
}
public String getKhdosdxswz() {
return khdosdxswz;
}
public void setKhdosdxswz(String khdosdxswz) {
this.khdosdxswz = khdosdxswz;
}
public String getCjry() {
return cjry;
}
public void setCjry(String cjry) {
this.cjry = cjry;
}
public String getCjrq() {
return cjrq;
}
public void setCjrq(String cjrq) {
this.cjrq = cjrq;
}
public String getXgry() {
return xgry;
}
public void setXgry(String xgry) {
this.xgry = xgry;
}
public String getXgrq() {
return xgrq;
}
public void setXgrq(String xgrq) {
this.xgrq = xgrq;
}
public String getBz() {
return bz;
}
public void setBz(String bz) {
this.bz = bz;
}
public Long getKz1() {
return kz1;
}
public void setKz1(Long kz1) {
this.kz1 = kz1;
}
public Long getKz2() {
return kz2;
}
public void setKz2(Long kz2) {
this.kz2 = kz2;
}
public String getKz3() {
return kz3;
}
public void setKz3(String kz3) {
this.kz3 = kz3;
}
public String getKz4() {
return kz4;
}
public void setKz4(String kz4) {
this.kz4 = kz4;
}
}
\ No newline at end of file
package com.hzjt.domain;
import lombok.Data;
import java.io.Serializable;
public class SbtdspsrParam extends Sbtdspsr implements Serializable {
private String sbcsName;
private String deviceconfig;
public String getSbcsName() {
return sbcsName;
}
public void setSbcsName(String sbcsName) {
this.sbcsName = sbcsName;
}
public String getDeviceconfig() {
return deviceconfig;
}
public void setDeviceconfig(String deviceconfig) {
this.deviceconfig = 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;
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;
public Integer getServerid() {
return serverid;
}
public void setServerid(Integer serverid) {
this.serverid = serverid;
}
public String getServername() {
return servername;
}
public void setServername(String servername) {
this.servername = servername;
}
public String getServergroup() {
return servergroup;
}
public void setServergroup(String servergroup) {
this.servergroup = servergroup;
}
public String getServertype() {
return servertype;
}
public void setServertype(String servertype) {
this.servertype = servertype;
}
public Integer getServerstatus() {
return serverstatus;
}
public void setServerstatus(Integer serverstatus) {
this.serverstatus = serverstatus;
}
public String getServeurl() {
return serveurl;
}
public void setServeurl(String serveurl) {
this.serveurl = serveurl;
}
public String getServeip() {
return serveip;
}
public void setServeip(String serveip) {
this.serveip = serveip;
}
public String getServerport() {
return serverport;
}
public void setServerport(String serverport) {
this.serverport = serverport;
}
public String getServeruser() {
return serveruser;
}
public void setServeruser(String serveruser) {
this.serveruser = serveruser;
}
public String getServerpassword() {
return serverpassword;
}
public void setServerpassword(String serverpassword) {
this.serverpassword = serverpassword;
}
public String getCreator() {
return creator;
}
public void setCreator(String creator) {
this.creator = creator;
}
public Date getCreatetime() {
return createtime;
}
public void setCreatetime(Date createtime) {
this.createtime = createtime;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = 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 javax.persistence.Id;
import java.util.Date;
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 String 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 String 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;
private String rectificationtype;
private Integer manualstatus;
private String eventid;
public Long getRecordid() {
return recordid;
}
public void setRecordid(Long recordid) {
this.recordid = recordid;
}
public Integer getAlgotype() {
return algotype;
}
public void setAlgotype(Integer algotype) {
this.algotype = algotype;
}
public Long getAreaid() {
return areaid;
}
public void setAreaid(Long areaid) {
this.areaid = areaid;
}
public String getFdid() {
return fdid;
}
public void setFdid(String fdid) {
this.fdid = fdid;
}
public Integer getChannelid() {
return channelid;
}
public void setChannelid(Integer channelid) {
this.channelid = channelid;
}
public Integer getChanneletype() {
return channeletype;
}
public void setChanneletype(Integer channeletype) {
this.channeletype = channeletype;
}
public String getChannelname() {
return channelname;
}
public void setChannelname(String channelname) {
this.channelname = channelname;
}
public String getRecordtime() {
return recordtime;
}
public void setRecordtime(String recordtime) {
this.recordtime = recordtime;
}
public String getRecordtype() {
return recordtype;
}
public void setRecordtype(String recordtype) {
this.recordtype = recordtype;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getImg1urlfrom() {
return img1urlfrom;
}
public void setImg1urlfrom(String img1urlfrom) {
this.img1urlfrom = img1urlfrom;
}
public String getImg1path() {
return img1path;
}
public void setImg1path(String img1path) {
this.img1path = img1path;
}
public String getImg2urlfrom() {
return img2urlfrom;
}
public void setImg2urlfrom(String img2urlfrom) {
this.img2urlfrom = img2urlfrom;
}
public String getImg2path() {
return img2path;
}
public void setImg2path(String img2path) {
this.img2path = img2path;
}
public String getImg3urlfrom() {
return img3urlfrom;
}
public void setImg3urlfrom(String img3urlfrom) {
this.img3urlfrom = img3urlfrom;
}
public String getImg3path() {
return img3path;
}
public void setImg3path(String img3path) {
this.img3path = img3path;
}
public String getImg4urlfrom() {
return img4urlfrom;
}
public void setImg4urlfrom(String img4urlfrom) {
this.img4urlfrom = img4urlfrom;
}
public String getImg4path() {
return img4path;
}
public void setImg4path(String img4path) {
this.img4path = img4path;
}
public String getImg5urlfrom() {
return img5urlfrom;
}
public void setImg5urlfrom(String img5urlfrom) {
this.img5urlfrom = img5urlfrom;
}
public String getImg5path() {
return img5path;
}
public void setImg5path(String img5path) {
this.img5path = img5path;
}
public String getVideourlfrom() {
return videourlfrom;
}
public void setVideourlfrom(String videourlfrom) {
this.videourlfrom = videourlfrom;
}
public String getVideopath() {
return videopath;
}
public void setVideopath(String videopath) {
this.videopath = videopath;
}
public Date getRetrytime() {
return retrytime;
}
public void setRetrytime(Date retrytime) {
this.retrytime = retrytime;
}
public Integer getRetrycount() {
return retrycount;
}
public void setRetrycount(Integer retrycount) {
this.retrycount = retrycount;
}
public Integer getRecordlevel() {
return recordlevel;
}
public void setRecordlevel(Integer recordlevel) {
this.recordlevel = recordlevel;
}
public Integer getCheckstatus() {
return checkstatus;
}
public void setCheckstatus(Integer checkstatus) {
this.checkstatus = checkstatus;
}
public String getCreator() {
return creator;
}
public void setCreator(String creator) {
this.creator = creator;
}
public String getCreatetime() {
return createtime;
}
public void setCreatetime(String createtime) {
this.createtime = createtime;
}
public String getUpdator() {
return updator;
}
public void setUpdator(String updator) {
this.updator = updator;
}
public Date getUpdatetime() {
return updatetime;
}
public void setUpdatetime(Date updatetime) {
this.updatetime = updatetime;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public Integer getPushstatus() {
return pushstatus;
}
public void setPushstatus(Integer pushstatus) {
this.pushstatus = pushstatus;
}
public String getPushdesc() {
return pushdesc;
}
public void setPushdesc(String pushdesc) {
this.pushdesc = pushdesc;
}
public String getPushcount() {
return pushcount;
}
public void setPushcount(String pushcount) {
this.pushcount = pushcount;
}
public Date getPushdate() {
return pushdate;
}
public void setPushdate(Date pushdate) {
this.pushdate = pushdate;
}
public String getProcessstatus() {
return processstatus;
}
public void setProcessstatus(String processstatus) {
this.processstatus = processstatus;
}
public String getObjlable() {
return objlable;
}
public void setObjlable(String objlable) {
this.objlable = objlable;
}
public String getRectificationtype() {
return rectificationtype;
}
public void setRectificationtype(String rectificationtype) {
this.rectificationtype = rectificationtype;
}
public Integer getManualstatus() {
return manualstatus;
}
public void setManualstatus(Integer manualstatus) {
this.manualstatus = manualstatus;
}
public String getEventid() {
return eventid;
}
public void setEventid(String eventid) {
this.eventid = eventid;
}
@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;
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;
public Long getCountdate() {
return countdate;
}
public void setCountdate(Long countdate) {
this.countdate = countdate;
}
public String getAreaid() {
return areaid;
}
public void setAreaid(String areaid) {
this.areaid = areaid;
}
public String getEventtype() {
return eventtype;
}
public void setEventtype(String eventtype) {
this.eventtype = eventtype;
}
public String getFdid() {
return fdid;
}
public void setFdid(String fdid) {
this.fdid = fdid;
}
public Integer getChannelid() {
return channelid;
}
public void setChannelid(Integer channelid) {
this.channelid = channelid;
}
public Integer getCounthour() {
return counthour;
}
public void setCounthour(Integer counthour) {
this.counthour = counthour;
}
public Short getChanneltype() {
return channeltype;
}
public void setChanneltype(Short channeltype) {
this.channeltype = channeltype;
}
public String getChannelname() {
return channelname;
}
public void setChannelname(String channelname) {
this.channelname = channelname;
}
public String getAreaname() {
return areaname;
}
public void setAreaname(String areaname) {
this.areaname = areaname;
}
public Long getTotalcount() {
return totalcount;
}
public void setTotalcount(Long totalcount) {
this.totalcount = totalcount;
}
}
\ 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;
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;
public String getSbbh() {
return sbbh;
}
public void setSbbh(String sbbh) {
this.sbbh = sbbh;
}
public Long getTdbh() {
return tdbh;
}
public void setTdbh(Long tdbh) {
this.tdbh = tdbh;
}
public Date getCreatetime() {
return createtime;
}
public void setCreatetime(Date createtime) {
this.createtime = createtime;
}
public Long getPushstatus() {
return pushstatus;
}
public void setPushstatus(Long pushstatus) {
this.pushstatus = pushstatus;
}
public String getPushdesc() {
return pushdesc;
}
public void setPushdesc(String pushdesc) {
this.pushdesc = pushdesc;
}
public Long getPushcount() {
return pushcount;
}
public void setPushcount(Long pushcount) {
this.pushcount = pushcount;
}
public String getXzbh() {
return xzbh;
}
public void setXzbh(String xzbh) {
this.xzbh = xzbh;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}
\ 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;
public class TransferResult {
Long recordid;
String pathvalue;
String urlfrom;
String imgpath;
Boolean result;
public TransferResult() {
}
public TransferResult(Long recordid, String pathvalue, String urlfrom, String imgpath, Boolean result) {
this.recordid = recordid;
this.pathvalue = pathvalue;
this.urlfrom = urlfrom;
this.imgpath = imgpath;
this.result = result;
}
public Long getRecordid() {
return recordid;
}
public void setRecordid(Long recordid) {
this.recordid = recordid;
}
public String getPathvalue() {
return pathvalue;
}
public void setPathvalue(String pathvalue) {
this.pathvalue = pathvalue;
}
public String getUrlfrom() {
return urlfrom;
}
public void setUrlfrom(String urlfrom) {
this.urlfrom = urlfrom;
}
public String getImgpath() {
return imgpath;
}
public void setImgpath(String imgpath) {
this.imgpath = imgpath;
}
public Boolean getResult() {
return result;
}
public void setResult(Boolean result) {
this.result = 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.Data;
import java.util.Date;
@Data
public class Vehicle {
private String id;
private String type;
private String video_id;
private Date create_time;
private Long direction;
private Long classification_confidence;
private String ruleTag;
}
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;
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;
}
public WriteResultObj(Integer status, String message,String data) {
this.message = message;
this.status = status;
this.data=data;
}
@Override
public String toString() {
return "WriteResultObj{" +
"data=" + data +
", message='" + message + '\'' +
", status=" + status +
'}';
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.*;
public class FileTransferManager {
private static final Logger log = LoggerFactory.getLogger(FileTransferManager.class);
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");
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
InputStream inputStream = connection.getInputStream();
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 com.hzjt.util.DateUtils;
import com.hzjt.util.JsonUtil;
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.*;
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);
}
@OnClose
public void OnClose() {
webSocketSet.remove(this.name);
}
@OnError
public void OnError(@PathParam("name") String name, Throwable throwable, Session session) {
webSocketSet.remove(name);
}
@OnMessage
public void OnMessage(String message) {
//判断是否需要指定发送,具体规则自定义
if(message.indexOf("HEARTBEAT")>=0){
Map map=new HashMap();
map.put("type","HEARTBEAT");
map.put("ts",new Date().getTime());
AppointSending(name, JSONUtil.toJsonStr(map));
}
}
/**
* 群发
*
* @param message
*/
public boolean GroupSending(String message){
boolean send=true;
for (String name : webSocketSet.keySet()) {
try {
if (null != webSocketSet.get(name) && null != webSocketSet.get(name).session && null != webSocketSet.get(name).session.getBasicRemote())
synchronized (webSocketSet.get(name).session) {
webSocketSet.get(name).session.getBasicRemote().sendText(message);
}
} catch (Exception e) {
send=false;
}
}
return send;
}
/**
* 根据videoid 群发
*/
public void GroupSendingByVideoid(String name) {
// log.info("name" + 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);
// log.info("JSONUtil.toJsonStr(map)" + JSONUtil.toJsonStr(map));
if (!map.isEmpty() && null!=webSocketSet.get(name) && null!=webSocketSet.get(name).session) {
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.util.ThreadPoolUtil;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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;
public class MyApplicationStartingEventListener implements ApplicationListener<SpringApplicationEvent>, ApplicationContextAware {
private static final Logger log = LoggerFactory.getLogger(MyApplicationStartingEventListener.class);
private ApplicationContext applicationContext;
private boolean flag = false;
@Autowired
public MyApplicationStartingEventListener() {
}
@Override
public void onApplicationEvent(SpringApplicationEvent event) {
if (event instanceof ApplicationReadyEvent) {
try {
if (!flag) {
ThreadPoolUtil.getSchedulePool().scheduleWithFixedDelay(() -> {
CacheLoadService cacheLoadService = applicationContext.getBean(CacheLoadService.class);
cacheLoadService.loadFtpCache();
}, 200, 120, TimeUnit.SECONDS);
// //判断第三方登录是否有效
// ThreadPoolUtil.getSchedulePool().scheduleWithFixedDelay(() -> {
// QingZhiLoginCacheService qingZhiLoginCacheService = applicationContext.getBean(QingZhiLoginCacheService.class);
// qingZhiLoginCacheService.keepAlive();
// }, 3, 120, TimeUnit.SECONDS);
//查询flv值
// ThreadPoolUtil.getSchedulePool().scheduleWithFixedDelay(() -> {
// FLVCacheService flvservice = applicationContext.getBean(FLVCacheService.class);
// flvservice.getvalue();
// }, 3, 1800, 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 org.apache.ibatis.annotations.Mapper;
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;
@Mapper
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();
List<String> selectAllWbbh();
}
\ No newline at end of file
package com.hzjt.mapper;
import com.hzjt.domain.Sbxx;
import org.apache.ibatis.annotations.Mapper;
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;
@Mapper
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.MqttResult;
import com.hzjt.domain.Traffalarmrecord;
import org.apache.ibatis.annotations.Mapper;
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;
@Mapper
public interface TraffAlarmRecordMapper extends BaseMapper<Traffalarmrecord>, ConditionMapper<Traffalarmrecord>, InsertListMapper<Traffalarmrecord> {
int updateTraffAlarmRecordUrl(Traffalarmrecord record);
int updatePushEvent(Traffalarmrecord traffalarmrecord);
int inserTraffAlarmRecord(Traffalarmrecord traffalarmrecord);
int selectmax();
Integer statisTraffalarmrecordstatByDay();
Integer updateTraffAlarmRectificationType(Traffalarmrecord traffalarmrecord);
Integer selectExitsTraffAlarm(Traffalarmrecord traffalarmrecord);
Integer selectInChecktimeTraffAlarm(Traffalarmrecord traffalarmrecord);
Integer updateInworkRectifytimeTraffAlarm(Traffalarmrecord traffalarmrecord);
String seletManualStatus();
String seletmqttbh(@Param("recordtype") String recordtype);
Integer updateState(MqttResult result);
}
\ No newline at end of file
package com.hzjt.mapper;
import com.hzjt.domain.Vehicle;
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(Vehicle vehiclesdetail);
List<Map> selectFiveAndDayFlow(String videoid);
List<Map> selectFiveAndTypeDayFlow(String videoid);
Integer statisVehiclesByDay();
Integer deleteBeforeTwoMonthVehiclesDetails();
Integer deleteVehiclesByDay();
Integer insertOrUpdatevehicleTodaystatistic();
String selectSbtddspsrRtspByVideoid(String videoid);
}
package com.hzjt.mapper;
import com.hzjt.domain.Traffalarmrecordstat;
import org.apache.ibatis.annotations.Mapper;
import tk.mybatis.mapper.additional.dialect.oracle.InsertListMapper;
import tk.mybatis.mapper.common.BaseMapper;
import tk.mybatis.mapper.common.ConditionMapper;
@Mapper
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 org.apache.ibatis.annotations.Mapper;
import tk.mybatis.mapper.additional.dialect.oracle.InsertListMapper;
import tk.mybatis.mapper.common.BaseMapper;
import tk.mybatis.mapper.common.ConditionMapper;
@Mapper
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.Mapper;
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;
@Mapper
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(DateUtils.getDateString(new Date(Long.valueOf(trffClientMessage.getTs()))));
traffAlarmRecord.setCreatetime(DateUtils.getDateString(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()+ "_" + traffAlarmRecord.getFdid()+ "_" + traffAlarmRecord.getRecordid() + 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.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.slf4j.Logger;
import org.slf4j.LoggerFactory;
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;
import java.util.concurrent.TimeUnit;
@Service
public class CacheLoadService {
private static final Logger log = LoggerFactory.getLogger(CacheLoadService.class);
@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),60*10, TimeUnit.SECONDS);
} 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.handler.WebSocket;
import com.hzjt.mapper.SbtdspsrMapper;
import com.hzjt.mapper.TraffAlarmRecordMapper;
import com.hzjt.util.*;
import lombok.extern.slf4j.Slf4j;
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.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.*;
@Service
public class EventWriteService {
private static final Logger log = LoggerFactory.getLogger(EventWriteService.class);
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;
@Autowired
WebSocket webSocket;
BASE64Encoder base64Encoder = new BASE64Encoder();
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<WriteResultObj> 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<WriteResultObj> resultObj=new ArrayList<>();
//将返回结果转化为Alarm格式
List<Alarm> alarmList=new ArrayList<>();
for(Traffalarmrecord record : traffalarmrecordList){
Alarm alarm=new Alarm();
alarm.setDept(record.getAreaid().toString());
alarm.setIncident_type(record.getRecordtype());
alarm.setType("TRAFFIC_INCIDENT_ALARM");
alarm.setTs(record.getRecordtime());
alarm.setVideo_id(record.getFdid());
List<String> img_urls=new ArrayList<>();
img_urls.add(record.getImg1urlfrom());
img_urls.add(record.getImg2urlfrom());
img_urls.add(record.getImg3urlfrom());
img_urls.add(record.getImg4urlfrom());
img_urls.add(record.getImg5urlfrom());
alarm.setImg_urls(img_urls);
alarm.setId(record.getRecordid().toString());
alarm.setObjLabel(record.getObjlable());
// alarm.setObj_location(record.getLocation());
List<String> img_base64=new ArrayList<>();
if(record.getImg1path() != null ){
byte[] Img=FTPUtil.getFtpPicBytes(record.getImg1path());
img_base64.add(Img!=null?base64Encoder.encode(Img) : null);
}
if(record.getImg2path() != null ){
byte[] Img=FTPUtil.getFtpPicBytes(record.getImg2path());
img_base64.add(Img!= null ? base64Encoder.encode(Img) : null);
}
if(record.getImg3path() != null ) {
byte[] Img = FTPUtil.getFtpPicBytes(record.getImg3path());
img_base64.add(Img != null ? base64Encoder.encode(Img) : null);
}
if(record.getImg4path() != null ) {
byte[] Img = FTPUtil.getFtpPicBytes(record.getImg4path());
img_base64.add(Img != null ? base64Encoder.encode(Img) : null);
}
if(record.getImg5path() != null ) {
byte[] Img = FTPUtil.getFtpPicBytes(record.getImg5path());
img_base64.add(Img != null ? base64Encoder.encode(Img) : null);
}
alarm.setImg_base64(img_base64);
if(record.getVideopath() != null ) {
alarm.setVideo_record_url(record.getVideopath());
}
//推送给第三方
boolean send =webSocket.GroupSending(JsonUtil.beanToString(alarm));
if(send){
//更新推送状态
record.setPushstatus(0);
record.setPushdesc("发送成功");
traffAlarmRecordMapper.updatePushEvent(record);
resultObj.add(new WriteResultObj(200,"推送成功",record.getRecordid().toString()));
}
else {
//推送失败
record.setPushstatus(1);
record.setPushdesc("发送失败");
traffAlarmRecordMapper.updatePushEvent(record);
resultObj.add(new WriteResultObj(ResponseEnum.E_9991.getCode(),"发送失败",record.getRecordid().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(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();
if(traffalarmrecord.getImg1path() != null ){
byte[] Img=FTPUtil.getFtpPicBytes(traffalarmrecord.getImg1path());
eventWriteParam.setEventProof1(Img!=null?base64Encoder.encode(Img) : null);
}
if(traffalarmrecord.getImg2path() != null ){
byte[] Img=FTPUtil.getFtpPicBytes(traffalarmrecord.getImg2path());
eventWriteParam.setEventProof2(Img!= null ? base64Encoder.encode(Img) : null);
}
if(traffalarmrecord.getImg3path() != null ) {
byte[] Img = FTPUtil.getFtpPicBytes(traffalarmrecord.getImg3path());
eventWriteParam.setEventProof3(Img != null ? base64Encoder.encode(Img) : null);
}
if(traffalarmrecord.getImg4path() != null ) {
byte[] Img = FTPUtil.getFtpPicBytes(traffalarmrecord.getImg4path());
eventWriteParam.setEventProof4(Img != null ? base64Encoder.encode(Img) : null);
}
if(traffalarmrecord.getImg5path() != null ) {
byte[] Img = FTPUtil.getFtpPicBytes(traffalarmrecord.getImg5path());
eventWriteParam.setEventProof5(Img != null ? base64Encoder.encode(Img) : null);
}
if(traffalarmrecord.getVideopath() != null ) {
byte[] video = FTPUtil.getFtpPicBytes(traffalarmrecord.getVideopath());
eventWriteParam.setEventvideo1(video != null ? base64Encoder.encode(video) : 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();
condition.setPushdesc(message);
/* 失败但是因为数据已存在 */
if (!successFlag && StringUtils.isNotBlank(message) && message.contains(CONTAINS_EXIST)) {
condition.setPushstatus(1);
traffAlarmRecordMapper.updatePushEvent(condition);
return;
}
/* 成功 */
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 lombok.extern.slf4j.Slf4j;
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.data.redis.core.StringRedisTemplate;
import org.springframework.http.*;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.util.concurrent.TimeUnit;
@Service
@Slf4j
public class FLVCacheService {
private static final Logger log = LoggerFactory.getLogger(FLVCacheService.class);
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Value("${flv.resisvalue}")
private String resisvalue;
@Value("${flv.url}")
private String url;
public void getvalue(String videoid,String rtsp) {
try {
HttpHeaders headers = new HttpHeaders();
RestTemplate client = new RestTemplate();
String jsonString = "{\"video_id\":\""+videoid+"\",\"url\":\""+rtsp+"\"}";
// log.info("jsonString"+jsonString);
headers.setContentType(MediaType.valueOf("application/json;UTF-8"));
HttpEntity<String> strEntity = new HttpEntity<>(jsonString,headers);
ResponseEntity<String> response = client.postForEntity(url, strEntity, String.class);
//解析返回结果
// log.info("response"+response.getBody());
if (response.getBody() != null) {
// log.info("flv response success" );
stringRedisTemplate.opsForValue().set(videoid,response.getBody(), 10, TimeUnit.MINUTES);
} else {
log.error("flv response " + "empty...");
}
} catch (Exception e) {
System.out.println(e.toString());
log.error(e.getMessage());
}
}
private HttpHeaders getHttpHeaders() {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
return headers;
}
}
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.slf4j.Logger;
import org.slf4j.LoggerFactory;
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
*/
@Service
public class FtpService {
private static final Logger log = LoggerFactory.getLogger(FtpService.class);
@Autowired
private StringRedisTemplate stringRedisTemplate;
private List<Ftp> ftpList;
@Autowired
CacheLoadService cacheLoadService;
@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 {
if(null==stringRedisTemplate.opsForValue().get(RedisEnum.FTPLIST.getValue())){
cacheLoadService.loadFtpCache();
}
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.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.Vehicle;
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 org.springframework.transaction.annotation.Transactional;
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 int saveTraffFlowDetail(Vehicle vehiclesdetail) {
return traffFlowMapper.insertlist(vehiclesdetail);
}
public List<Map> selectFiveAndDayFlow(String videoid) {
return traffFlowMapper.selectFiveAndDayFlow(videoid);
}
public List<Map> selectFiveAndTypeDayFlow(String videoid) {
return traffFlowMapper.selectFiveAndTypeDayFlow(videoid);
}
public Integer statisVehiclesByDay() {
return traffFlowMapper.statisVehiclesByDay();
}
public void deleteBeforeTwoMonthVehicles() {
traffFlowMapper.deleteBeforeTwoMonthVehiclesDetails();
}
public void deleteVehiclesByDay() {
traffFlowMapper.deleteVehiclesByDay();
}
public Integer insertOrUpdatevehicleTodaystatistic() {
return traffFlowMapper.insertOrUpdatevehicleTodaystatistic();
}
public String selectSbtddspsrRtspByVideoid(String videoid) {
return traffFlowMapper.selectSbtddspsrRtspByVideoid(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;
public Integer statisTraffalarmrecordstatByDay() {
return traffalarmrecordMapper.statisTraffalarmrecordstatByDay();
}
public Integer updateState(MqttResult result) {
return traffalarmrecordMapper.updateState(result);
}
}
\ 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 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 void write(HttpServletResponse response, String content) throws IOException {
response.getWriter().write(content + "<br/>");
response.flushBuffer();
response.getWriter().flush();
}
}
\ 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;
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 lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
/**
* ʱ���ʽת���� 2019.10.23
* @author cp
*/
public class DateUtils {
private static final Logger log = LoggerFactory.getLogger(DateUtils.class);
public static String getDateString(Date date) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
log.info("date timezone:{}",formatter.getTimeZone()) ;
formatter.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
log.info("date timezone:{}",formatter.getTimeZone()) ;
String dateString = formatter.format(date);
return dateString ;
}
public static String getDateStringNoSign(Date date) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
log.info("date timezone:{}",formatter.getTimeZone()) ;
formatter.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
log.info("date timezone:{}",formatter.getTimeZone()) ;
String dateString = formatter.format(date);
return dateString ;
}
public static String formatCurrDayNoSign() {
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
log.info("date timezone:{}",formatter.getTimeZone()) ;
formatter.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
log.info("date timezone:{}",formatter.getTimeZone()) ;
String dateString = formatter.format(new Date());
return dateString ;
}
public static Date Parsedate(String datestr) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
log.info("date timezone:{}",formatter.getTimeZone()) ;
formatter.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
log.info("date timezone:{}",formatter.getTimeZone()) ;
try {
Date dateString = formatter.parse(datestr);
return dateString ;
}catch (Exception ex){
return null;
}
}
}
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.slf4j.Logger;
import org.slf4j.LoggerFactory;
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;
@SuppressWarnings("all")
@Component
public class FTPUtil {
private static final Logger log = LoggerFactory.getLogger(FTPUtil.class);
@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 upload success!");
} else {
log.info("FTP upload fail!");
}
} else {
flag = false;
// log.info("FTP server refused connection !");
}
} catch (IOException e) {
flag = false;
log.error("FTP upload fail!", e);
} catch (Exception e) {
flag = false;
log.error("FTP upload fail!", 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;
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;
/**
* ͨ������ö����
* @author cp
*/
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;
}
public String getValue() {
return value;
}
}
package com.hzjt.util;
import lombok.Getter;
/**
* 通用序列枚举类
* @author cp
*/
public enum SeqEnum {
/**
* 字符串常量
*/
SEQ_TRAFF("SEQ_TRAFF_COMMON_KEY");
private String value;
SeqEnum(String value){
this.value =value;
}
public String getValue() {
return value;
}
}
package com.hzjt.util;
import lombok.Getter;
/**
* 通用字符串枚举类
* @author cp
*/
public enum StringEnum {
/**
* 字符串常量
*/
ONE("1");
private String value;
StringEnum(String value){
this.value =value;
}
public String getValue() {
return 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=8084
spring.datasource.username=hzjt
spring.datasource.password=hzjt
spring.datasource.url=jdbc:oracle:thin:@33.65.219.103:1521:helowin
spring.datasource.driverClassName=oracle.jdbc.OracleDriver
#redis
spring.redis.host=33.65.219.103
spring.redis.port=6379
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.store-type=none
ip.host=33.65.219.103
port=21
message.dept=33030
message.rate=10
ftp.host=33.65.219.40:21:hzjt:1qaz2wsx
ftppath=hzjt:1qaz2wsx@33.65.219.40:21
ftpServiceUrl=http://33.65.219.103:8089/api/alg/files
gs.traff.cloud.web.fileagent.url=ftp://hzjt:1qaz2wsx@33.65.219.103:21/gstraff/
#mqtt配置 - start
#用户名
spring.mqtt.username =cico
#密码
spring.mqtt.password =cico@123
#服务器连接地址
spring.mqtt.url = tcp://33.65.219.23:1883
#连接超时
spring.mqtt.completionTimeout=3000
spring.mqtt.qos=2
#mqtt配置 - end
spring.datasource.username=hzjt
spring.datasource.password=hzjt
spring.datasource.url=jdbc:oracle:thin:@192.168.168.212:1521:helowin
spring.datasource.driverClassName=oracle.jdbc.OracleDriver
#redis
spring.redis.host=127.0.0.1
spring.redis.port=6379
#spring.redis.password=123456
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.store-type=none
ip.host=33.65.219.103
port=21
message.dept=33030
message.rate=10
ftp.host=33.65.219.40:21:hzjt:1qaz2wsx
ftp.host=192.168.168.211:21:wcyuee:1qaz2wsx
ftppath=hzjt:1qaz2wsx@33.65.219.40:21
ftpServiceUrl=http://33.65.219.103:8089/api/alg/files
gs.traff.cloud.web.fileagent.url=ftp://hzjt:1qaz2wsx@33.65.219.103:21/gstraff/
#mqtt配置 - start
#用户名
spring.mqtt.username =cico
#密码
spring.mqtt.password =cico@123
#服务器连接地址
#spring.mqtt.url = tcp://33.65.219.23:1883
spring.mqtt.url =tcp://gitlab.51iotx.com:57607
#连接超时
spring.mqtt.completionTimeout=3000
spring.mqtt.qos=2
#mqtt配置 - end
#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
spring.profiles.active= dev
# 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:mapper/*.xml
logging.level.com.hzjt=debug
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
spring.datasource.poolPreparedStatements=true
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
spring.datasource.filters=stat,wall
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
spring.datasource.useGlobalDataSourceStat=true
alarm.subscribe.data.key=gs:traff:alarmlist
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
# 免审标记 0需审核 1免审
alarmrecord.check.enable=1
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
spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=true
jms.queueName=demo_queue
alarmrecord.check.push.enable=1
alarmrecord.check.push.recordtype=1
flv.resisvalue=flvvalue
json.resisurl=http://33.50.1.21:57081/record/ecvs
flv.url=http://33.50.1.21:57080/ecvs/get_play_list
qingzhi.login.username=zksy
qingzhi.login.password=zksy@123
qingzhi.login.url=http://33.50.1.213:38080/api/auth/login
qingzhi.login.keepaliveurl=http://33.50.1.213:38080/api/auth/token/keepalive
<?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 XH,
SBBH,
TDBH,
TDLX,
WBBH,
TDMC,
TDMCPY,
TDZT,
TDAZWZ,
JD,
WD,
TPWZX ,
TPWZY ,
SPBMGS,
SPXSGS,
SSSPSFZZF ,
SPZT,
LXZT,
LXSFZZF ,
SPZL,
GJZJG ,
ML,
SPMLYXGS,
SFZCPTZKZ ,
ZXCCZBH ,
ZXCCXE,
ZXCCYYRL,
ZXCCSYRL,
LXBLTS,
SFQY,
JLBH,
FXMS,
JBMS,
XZBH,
GGBH,
ZNBH,
LXFS,
JPKZDH,
JDPX,
SFZNFXJD,
ZNFXLX,
SQMS,
SQURLLJ ,
SSMLXZ,
LXMLXZ,
ZBURLLJ ,
ZBDK,
DQX ,
XQX ,
KQX ,
PQX ,
LXHFQX,
LXXZQX,
LXDJQX,
SFZLX ,
SFZX,
HB,
JMCJ,
SJ,
LXLRCYFS,
KHDOSDXSNR,
KHDOSDXSWZ,
CJRY,
CJRQ,
XGRY,
XGRQ,b.dept_name bz FROM SBTDSPSR A left join dept b on a.xzbh=b.dept_id 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>
<select id="selectAllWbbh" resultType="java.lang.String">
select concat(concat('event/',wbbh),'/videoEvent') from sbtdspsr where wbbh is not 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.Vehicle" >
INSERT INTO vehicle (video_id, type,
direction,classification_confidence,ruletag,create_time)
values(
#{video_id,jdbcType=VARCHAR},
#{type,jdbcType=VARCHAR},
#{direction,jdbcType=NUMERIC},
#{classification_confidence,jdbcType=NUMERIC},
#{ruleTag,jdbcType=VARCHAR},#{create_time,jdbcType=TIMESTAMP})
</insert>
<insert id="add" parameterType="com.hzjt.domain.Vehicles">
insert into vehicles ( id,type,video_id,ts ,create_time)
values(#{id,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR},
#{video_id,jdbcType=VARCHAR},#{ts,jdbcType=VARCHAR},sysdate)
</insert>
<select id="selectFiveAndDayFlow" resultType="java.util.HashMap">
select
NVL(sum(case when CREATE_TIME>=(SYSDATE-1-5/1440) and CREATE_TIME<![CDATA[ <= ]]>(SYSDATE-1) then 1 else 0 end),0)tbfiveflow,
NVL(sum(case when CREATE_TIME>= (SYSDATE-10/1440) and CREATE_TIME<![CDATA[ <= ]]> (SYSDATE-5/1440) then 1 else 0 end),0)hbfiveflow,
NVL(sum(case when CREATE_TIME>= (SYSDATE-5/1440) then 1 else 0 end),0)fiveflow,
NVL(sum(case when CREATE_TIME>=Trunc(SYSDATE) then 1 else 0 end),0)dayflow,
'all' name
from vehicle b where b.video_id=#{videoid}
and ( (CREATE_TIME >=(SYSDATE-1-5/1440) and CREATE_TIME<![CDATA[ <= ]]>(SYSDATE-1))
or(CREATE_TIME>= (SYSDATE-10/1440) and CREATE_TIME<![CDATA[ <= ]]> (SYSDATE-5/1440) )
or (CREATE_TIME>=Trunc(SYSDATE)))
union all
select
NVL(sum(case when CREATE_TIME>=(SYSDATE-1-5/1440) and CREATE_TIME<![CDATA[ <= ]]>(SYSDATE-1) then 1 else 0 end),0)tbfiveflow,
NVL(sum(case when CREATE_TIME>= (SYSDATE-10/1440) and CREATE_TIME<![CDATA[ <= ]]>(SYSDATE-5/1440) then 1 else 0 end),0)hbfiveflow,
NVL(sum(case when CREATE_TIME>= (SYSDATE-5/1440) then 1 else 0 end),0)fiveflow,
NVL( sum(case when CREATE_TIME>=Trunc(SYSDATE) then 1 else 0 end),0)dayflow,
'up' name
from vehicle b where b.video_id=#{videoid} and ruletag ='1'
and ( (CREATE_TIME >=(SYSDATE-1-5/1440) and CREATE_TIME<![CDATA[ <= ]]>(SYSDATE-1))
or(CREATE_TIME>= (SYSDATE-10/1440) and CREATE_TIME<![CDATA[ <= ]]> (SYSDATE-5/1440) )
or (CREATE_TIME>=Trunc(SYSDATE)))
union all
select
NVL(sum(case when CREATE_TIME>= (SYSDATE-1-5/1440) and CREATE_TIME<![CDATA[ <= ]]>(SYSDATE-1) then 1 else 0 end),0)tbfiveflow,
NVL(sum(case when CREATE_TIME>= (SYSDATE-10/1440) and CREATE_TIME<![CDATA[ <= ]]> (SYSDATE-5/1440) then 1 else 0 end),0)hbfiveflow,
NVL(sum(case when CREATE_TIME>= (SYSDATE-5/1440) then 1 else 0 end),0)fiveflow,
NVL(sum(case when CREATE_TIME>=Trunc(SYSDATE) then 1 else 0 end),0)dayflow,
'down' name
from vehicle b where b.video_id=#{videoid} and ruletag ='2'
and ( (CREATE_TIME >=(SYSDATE-1-5/1440) and CREATE_TIME<![CDATA[ <= ]]>(SYSDATE-1))
or(CREATE_TIME>= (SYSDATE-10/1440) and CREATE_TIME<![CDATA[ <= ]]> (SYSDATE-5/1440) )
or (CREATE_TIME>=Trunc(SYSDATE)))
</select>
<select id="selectFiveAndTypeDayFlow" resultType="java.util.HashMap">
select 'all' name, NVL(sum(case when b.type='SEDAN' then total else 0 end),0)sedan,
NVL(sum(case when b.type='HEAVY_GOODS_VAN' or b.type= 'LIGHT_GOODS_VAN' then total else 0 end),0)goodsvan,
NVL(sum(case when b.type='COACH'or b.type='MEDIUM_COACH' then total 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 total else 0 end),0)other
from vehicleTodaystatistic b where video_id=#{videoid}
and ts=to_char(SYSDATE,'yyyy-mm-dd')
union all
select 'up' name, NVL(sum(case when b.type='SEDAN' then total else 0 end),0)sedan,
NVL(sum(case when b.type='HEAVY_GOODS_VAN' or b.type= 'LIGHT_GOODS_VAN' then total 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 total else 0 end),0)other
from vehicleTodaystatistic b where b.video_id=#{videoid}
and ts=to_char(SYSDATE,'yyyy-mm-dd') and ruletag ='1'
union all
select 'down' name, NVL(sum(case when b.type='SEDAN' then total else 0 end),0)sedan,
NVL(sum(case when b.type='HEAVY_GOODS_VAN' or b.type= 'LIGHT_GOODS_VAN' then total 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 total else 0 end),0)other
from vehicleTodaystatistic b where b.video_id=#{videoid}
and ts=to_char(SYSDATE,'yyyy-mm-dd') and ruletag ='2'
</select>
<insert id="statisVehiclesByDay" >
insert into vehiclestatistic
select video_id ,
to_char(CREATE_TIME, 'yyyy-mm-dd') ts,
type,
ruletag,
count(*) total
from vehicle b
where CREATE_TIME>= TRUNC (SYSDATE-1)
and CREATE_TIME<![CDATA[ < ]]>TRUNC(SYSDATE)
group by to_char(CREATE_TIME, 'yyyy-mm-dd'),
type,
ruletag,
b.video_id
</insert>
<delete id="deleteBeforeTwoMonthVehiclesDetails">
delete from vehicle WHERE create_time <![CDATA[ <= ]]>sysdate-33
</delete>
<delete id="deleteVehiclesByDay">
delete from vehicleTodaystatistic
</delete>
<insert id="insertOrUpdatevehicleTodaystatistic" >
MERGE INTO vehicleTodaystatistic t1 USING (
SELECT
video_id,
TO_CHAR (CREATE_TIME, 'yyyy-mm-dd') ts,
TYPE,nvl(ruletag,0)ruletag,
COUNT (*) total,
NVL(sum(case when CREATE_TIME>= (SYSDATE-5/1440) then 1 else 0 end),0)five
FROM
vehicle
WHERE
(
create_time >= TRUNC (SYSDATE)
AND create_time <![CDATA[ <= ]]> SYSDATE
)
OR (
create_time >= TRUNC (SYSDATE - 7)
AND create_time <![CDATA[ <= ]]> SYSDATE - 7
)
OR (
create_time >= TRUNC (ADD_MONTHS(SYSDATE ,- 1))
AND create_time <![CDATA[ <= ]]> ADD_MONTHS (SYSDATE ,- 1)
)
GROUP BY
TO_CHAR (CREATE_TIME, 'yyyy-mm-dd'),
TYPE,ruletag,
video_id
) t2 ON (
t1.video_id = t2.video_id
AND t1.ts = t2.ts
AND t1.TYPE = t2.TYPE
AND t1.ruletag=t2.ruletag
)
WHEN MATCHED THEN
UPDATE
SET t1.total = t2.total,
t1.five = t2.five
WHEN NOT MATCHED THEN
INSERT (video_id, ts, TYPE, ruletag,total,five)
VALUES
(
t2.video_id,
t2.ts,
t2.TYPE,
t2.ruletag,
t2.total,
t2.five
)
</insert>
<select id="selectSbtddspsrRtspByVideoid" resultType="string">
select squrllj from sbtdspsr where sbbh||'_'||tdbh =#{videoid} and rownum=1
</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">
<selectKey keyProperty="recordid" resultType="Long" order="BEFORE">
select nvl(max(recordid),0)+1 from traffalarmrecord
</selectKey>
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>
<if test="rectificationtype != null">rectificationtype ,</if>
<if test="manualstatus != null">manualstatus ,</if>
<if test="eventid != null">eventid ,</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">to_date(#{recordtime},'yyyy-mm-dd hh24:mi:ss'),</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">to_date(#{createtime},'yyyy-mm-dd hh24:mi:ss'),</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>
<if test="rectificationtype != null">#{rectificationtype},</if>
<if test="manualstatus != null">#{manualstatus,jdbcType=INTEGER},</if>
<if test="eventid != null">#{eventid},</if>
</trim>
</insert>
<select id="selectmax" resultType="java.lang.Integer">
select nvl(max(recordid),0)+1 from traffalarmrecord
</select>
<insert id="statisTraffalarmrecordstatByDay">
insert into TRAFFALARMRECORDSTATE
SELECT A.FDID,CHANNELID, to_char(A.RECORDTIME,'yyyy-MM-DD')countdate,count(*) totalcount,recordtype eventtype,areaid,
(select B.TDMC from SBTDSPSR B where A.FDID=B.SBBH and CHANNELID=B.TDBH and rownum=1)tdmc,
(select C.NAME from T_CODE C where C.KEY=UPPER(RECORDTYPE)and rownum=1 ) eventtypename,
(SELECT DEPT_NAME FROM Dept d where d.dept_id=a.areaid and rownum=1)areaname,
sum( case when pushstatus is null or pushstatus=9 then 1 else 0 end)nopush,
sum( case when pushstatus =0 then 1 else 0 end)successpush,
sum( case when pushstatus =1 then 1 else 0 end)failpush
FROM TRAFFALARMRECORD A
where A.RECORDTIME>=TRUNC(SYSDATE-1)
and A.RECORDTIME<![CDATA[ < ]]>TRUNC(SYSDATE)
group by to_char(A.RECORDTIME,'yyyy-MM-DD'),recordtype,A.FDID,CHANNELID,areaid
</insert>
<update id="updateTraffAlarmRectificationType" parameterType="com.hzjt.domain.Traffalarmrecord">
UPDATE TRAFFALARMRECORD
<set>
<if test="processstatus != null">
rectificationtype=1,
</if>
</set>
from TRAFFALARMRECORD a,
(select * from TRAFFALARMRECORD a,(select * from TRAFFALARMRECORD b where
recordid=#{recordid,jdbcType=VARCHAR} )b
where a.fdid =b.fdid and a.channelid=b.channelid
AND ( a.recordtime<![CDATA[ <= ]]> b.recordtime-10/1440)
AND recordtype in ('roadworks_out_of_line','roadworks'))b
where recordtype in('illegal_parking','no_motor_ban') and a.fdid =b.fdid and a.channelid=b.channelid
</update>
<!--<select id="selectExitsTraffAlarm" parameterType="com.hzjt.domain.Traffalarmrecord" resultType="java.lang.Integer">-->
<!--select count(1) from TRAFFALARMRECORD a,t_code b where a.recordtype=#{recordtype,jdbcType=VARCHAR}-->
<!--and a.recordtype=LOWER (b.key)and recordtime>=sysdate-(b.REPEATTIME)/(24*60)-->
<!--and a.fdid=#{fdid,jdbcType=VARCHAR}-->
<!--and a.channelid=#{channelid,jdbcType=VARCHAR}-->
<!--</select>-->
<select id="selectInChecktimeTraffAlarm" parameterType="com.hzjt.domain.Traffalarmrecord" resultType="java.lang.Integer">
select count(1) from videochecktime a,t_code b where
a.FDID=#{fdid,jdbcType=VARCHAR}
and a.CHANNELID=#{channelid,jdbcType=VARCHAR}
and a.RECORDTYPE=#{recordtype,jdbcType=VARCHAR}
and a.RECORDTYPE=lower(b.key)
and LASTCHECKTIME+(b.PUSHCHECKTIME)/1440 <![CDATA[ >= ]]>#{recordtime,jdbcType=TIMESTAMP}
and LASTCHECKTIME <![CDATA[ < ]]>#{recordtime,jdbcType=TIMESTAMP}
</select>
<update id="updateInworkRectifytimeTraffAlarm" parameterType="com.hzjt.domain.Traffalarmrecord">
update TRAFFALARMRECORD set rectificationtype=1,recordtype='roadworks'
where fdid=#{fdid,jdbcType=VARCHAR}
and channelid=#{channelid,jdbcType=VARCHAR}
and recordtime>=#{recordtime,jdbcType=TIMESTAMP}-(select b.RECTIFYTIME from t_code b where recordtype=LOWER (b.key) )/1440
and recordtime<![CDATA[ < ]]>#{recordtime,jdbcType=TIMESTAMP}
and recordtype in ('illegal_parking','no_motor_ban')
</update>
<select id="seletManualStatus" resultType="java.lang.String">
select name from t_code where type=4
</select>
<select id="seletmqttbh" resultType="java.lang.String">
select mqttbh from t_code where type=1 and key=#{recordtype}
</select>
<update id="updateState" parameterType="com.hzjt.domain.MqttResult">
update TRAFFALARMRECORD set processstatus=#{status},
confirmUser=#{confirmUser},confirmTime=#{confirmTime}
where eventid=#{eventid}
</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.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>
<if test="xhs !=null and xhs.size>0 ">
and TA.XH IN
<foreach item="xh" collection="xhs" open="(" separator="," close=")">
#{xh}
</foreach>
</if>
</where>
</select>
</mapper>
\ No newline at end of file
package com.hzjt;
import com.hzjt.domain.Alarm;
import com.hzjt.domain.Traffalarmrecord;
import com.hzjt.util.JsonUtil;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringBootVersion;
import org.springframework.core.SpringVersion;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ExcelToDbApplicationTests {
private static final Logger log = LoggerFactory.getLogger(ExcelToDbApplicationTests.class);
@Test
public void t() {
}
}
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