Commit eb774678 authored by wangjinjing's avatar wangjinjing

init

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