From ddebb2ea352012c10ec31a9d9774b0320af4caac Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Thu, 10 Jun 2021 16:48:15 +0800
Subject: [PATCH] Merge branch 'dev' of http://blit.7drlb.com:8888/r/moral into dev
---
screen-api/src/main/resources/mapper/MenuMapper.xml | 4
screen-manage/src/main/java/com/moral/api/service/impl/HistoryMinutelyServiceImpl.java | 63 +++
screen-common/src/main/java/com/moral/constant/KafkaConstants.java | 19 +
screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaReceiver.java | 97 +++++
screen-manage/src/main/java/com/moral/api/service/DeviceService.java | 9
screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java | 97 ++++
screen-job/src/main/java/com/moral/api/config/mybatis/MybatisPlusConfig.java | 20 +
screen-job/src/main/java/com/moral/api/ScreenJobBootStrap.java | 19 +
screen-manage/src/main/resources/mapper/HistoryMinutelyMapper.xml | 9
pom.xml | 7
screen-job/pom.xml | 77 ++++
screen-manage/src/main/java/com/moral/api/controller/TestController.java | 43 +-
screen-job/screen-job.iml | 152 ++++++++
screen-job/src/main/resources/application-dev.yml | 108 ++++++
screen-job/src/main/java/com/moral/api/config/xxl/XxlJobConfig.java | 135 +++++++
screen-manage/src/main/java/com/moral/api/service/HistoryMinutelyService.java | 20 +
screen-job/src/main/resources/logback.xml | 29 +
screen-job/src/main/java/com/moral/api/service/Test.java | 4
screen-manage/src/main/java/com/moral/api/mapper/HistoryMinutelyMapper.java | 20 +
screen-job/src/main/java/com/moral/api/config/datasource/DataSourceConfig.java | 22 +
screen-common/src/main/java/com/moral/constant/Constants.java | 18
screen-job/src/main/java/com/moral/api/jobHandler/TestHandler.java | 21 +
screen-common/src/main/java/com/moral/constant/RedisConstants.java | 28 +
23 files changed, 974 insertions(+), 47 deletions(-)
diff --git a/pom.xml b/pom.xml
index 02b98d7..b1e7a37 100644
--- a/pom.xml
+++ b/pom.xml
@@ -42,6 +42,7 @@
<io.springfox.version>2.7.0</io.springfox.version>
<swagger-bootstrap-ui.version>1.9.6</swagger-bootstrap-ui.version>
<spring.kafka.version>2.2.2</spring.kafka.version>
+ <xxl-job.version>2.3.0</xxl-job.version>
</properties>
@@ -116,7 +117,11 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
-
+ <dependency>
+ <groupId>com.xuxueli</groupId>
+ <artifactId>xxl-job-core</artifactId>
+ <version>${xxl-job.version}</version>
+ </dependency>
</dependencies>
diff --git a/screen-api/src/main/resources/mapper/MenuMapper.xml b/screen-api/src/main/resources/mapper/MenuMapper.xml
index abfa655..bfe661a 100644
--- a/screen-api/src/main/resources/mapper/MenuMapper.xml
+++ b/screen-api/src/main/resources/mapper/MenuMapper.xml
@@ -28,7 +28,7 @@
AND gm.menu_id = m.id
AND ug.is_delete = 0
AND gm.is_delete = 0
- AND gm.channel_key = 1
+ AND gm.channel_key = 0
AND m.is_delete = 0
</select>
@@ -38,7 +38,7 @@
FROM `menu` m, `organization_menu` om
WHERE om.organization_id = #{orgId}
AND m.id = om.menu_id
- AND om.channel_key = 1
+ AND om.channel_key = 0
AND om.menu_id = m.id
AND om.is_delete = 0
AND m.is_delete = 0
diff --git a/screen-common/src/main/java/com/moral/constant/Constants.java b/screen-common/src/main/java/com/moral/constant/Constants.java
index fb9db76..a56abbd 100644
--- a/screen-common/src/main/java/com/moral/constant/Constants.java
+++ b/screen-common/src/main/java/com/moral/constant/Constants.java
@@ -85,18 +85,18 @@
public static final String DELETE_OPERATE_TYPE = "3";
/*
- * ���������������������������������������
- * */
+ * ���������������������������������������
+ * */
public static final String FORMULA_PLACEHOLDER = "{0}";
/*
- * ������������������
- * */
+ * ������������������
+ * */
public static final String SYSTEM_DICT_TYPE_UNIT = "unit";
/*
- * ������������������
- * */
+ * ������������������
+ * */
public static final String SYSTEM_DICT_TYPE_PROFESSION = "profession";
/*
@@ -115,4 +115,10 @@
public static final String SYSTEM_DICT_TYPE_PURCHASER = "purchaser";
+ /*
+ * ������������������������
+ * */
+ public static final String UN_ADJUST = "unadjust";
+
+
}
diff --git a/screen-common/src/main/java/com/moral/constant/KafkaConstants.java b/screen-common/src/main/java/com/moral/constant/KafkaConstants.java
new file mode 100644
index 0000000..8f904d1
--- /dev/null
+++ b/screen-common/src/main/java/com/moral/constant/KafkaConstants.java
@@ -0,0 +1,19 @@
+package com.moral.constant;
+
+public class KafkaConstants {
+
+ /**
+ * ������������������
+ */
+ public static final String TOPIC_MINUTE = "test_topic";
+
+ /**
+ * ������������������
+ */
+ public static final String TOPIC_HOUR = "hour";
+
+ /**
+ * ���������
+ */
+ public static final String GROUP_ID = "test";
+}
diff --git a/screen-common/src/main/java/com/moral/constant/RedisConstants.java b/screen-common/src/main/java/com/moral/constant/RedisConstants.java
index 2578c67..db0ec8c 100644
--- a/screen-common/src/main/java/com/moral/constant/RedisConstants.java
+++ b/screen-common/src/main/java/com/moral/constant/RedisConstants.java
@@ -12,20 +12,30 @@
@Data
public class RedisConstants {
/*
- * ������������ redis������key
- * ������Map<String,List<sysDictData>>���������key������������������������Value������������������������
- * */
+ * ������������ redis������key
+ * ������Map<String,List<sysDictData>>���������key������������������������Value������������������������
+ * */
public static final String DICT_DATA_KEY = "dict_data";
/*
- * ������������ redis������key
- * ������List<sysDictType>������
- * */
+ * ������������ redis������key
+ * ������List<sysDictType>������
+ * */
public static final String DICT_TYPE_KEY = "dict_type";
/*
- * ������ redis������key
- * ������Map<Integer,Sensor>������
- * */
+ * ������ redis������key
+ * ������Map<Integer,Sensor>������
+ * */
public static final String SENSOR_KEY = "sensor";
+
+ /*
+ * ������������������
+ * */
+ public static final String DEVICE = "device";
+
+ /*
+ * ������������������������
+ * */
+ public static final String STATE = "state";
}
diff --git a/screen-job/pom.xml b/screen-job/pom.xml
new file mode 100644
index 0000000..a22891e
--- /dev/null
+++ b/screen-job/pom.xml
@@ -0,0 +1,77 @@
+<?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">
+ <parent>
+ <artifactId>screen</artifactId>
+ <groupId>org.moral</groupId>
+ <version>1.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>screen-job</artifactId>
+
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-devtools</artifactId>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>org.moral</groupId>
+ <artifactId>screen-common</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <finalName>screen-job</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>${java.version}</source>
+ <target>${java.version}</target>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-resources-plugin</artifactId>
+ <version>${maven-resources-plugin.version}</version>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven.shared</groupId>
+ <artifactId>maven-filtering</artifactId>
+ <version>${maven-filtering.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.shared</groupId>
+ <artifactId>maven-common-artifact-filters</artifactId>
+ <version>${maven-common-artifact-filters.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.shared</groupId>
+ <artifactId>maven-dependency-tree</artifactId>
+ <version>${maven-dependency-tree.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.shared</groupId>
+ <artifactId>maven-shared-incremental</artifactId>
+ <version>${maven-shared-incremental.version}</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+
+ </plugins>
+ </build>
+
+
+</project>
\ No newline at end of file
diff --git a/screen-job/screen-job.iml b/screen-job/screen-job.iml
new file mode 100644
index 0000000..c6acaa0
--- /dev/null
+++ b/screen-job/screen-job.iml
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+ <component name="FacetManager">
+ <facet type="Spring" name="Spring">
+ <configuration />
+ </facet>
+ <facet type="web" name="Web">
+ <configuration>
+ <webroots />
+ <sourceRoots>
+ <root url="file://$MODULE_DIR$/src/main/java" />
+ <root url="file://$MODULE_DIR$/src/main/resources" />
+ </sourceRoots>
+ </configuration>
+ </facet>
+ </component>
+ <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
+ <output url="file://$MODULE_DIR$/target/classes" />
+ <output-test url="file://$MODULE_DIR$/target/test-classes" />
+ <content url="file://$MODULE_DIR$">
+ <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+ <excludeFolder url="file://$MODULE_DIR$/target" />
+ </content>
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ <orderEntry type="module" module-name="screen-common" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.1.13.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.data:spring-data-redis:2.1.16.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.data:spring-data-keyvalue:2.1.16.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:2.1.16.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-oxm:5.1.14.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.1.14.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: io.lettuce:lettuce-core:5.1.8.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.45.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.45.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.45.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.45.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.45.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.45.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.2.15.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.3" level="project" />
+ <orderEntry type="library" name="Maven: redis.clients:jedis:2.9.3" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.6.2" level="project" />
+ <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.46" level="project" />
+ <orderEntry type="library" name="Maven: commons-net:commons-net:3.6" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-devtools:2.1.13.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.1.13.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.1.13.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.1.13.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.1.13.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.1.13.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
+ <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.11.2" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.11.2" level="project" />
+ <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.30" level="project" />
+ <orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.3.2" level="project" />
+ <orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.23" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.1.13.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.10.3" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.10" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.9.10" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.10" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.9.10" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.1.13.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.31" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:9.0.31" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.31" level="project" />
+ <orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.0.18.Final" level="project" />
+ <orderEntry type="library" name="Maven: javax.validation:validation-api:2.0.1.Final" level="project" />
+ <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.3.Final" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-web:5.1.14.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.1.14.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.1.14.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.1.14.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.7.0" level="project" />
+ <orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.13" level="project" />
+ <orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.13" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.10" level="project" />
+ <orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.7.0" level="project" />
+ <orderEntry type="library" name="Maven: io.springfox:springfox-core:2.7.0" level="project" />
+ <orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.7.0" level="project" />
+ <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:2.7.0" level="project" />
+ <orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.7.0" level="project" />
+ <orderEntry type="library" name="Maven: org.reflections:reflections:0.9.11" level="project" />
+ <orderEntry type="library" name="Maven: com.google.guava:guava:18.0" level="project" />
+ <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.4.0" level="project" />
+ <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.1.0.Final" level="project" />
+ <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.7.0" level="project" />
+ <orderEntry type="library" name="Maven: com.github.xiaoymin:swagger-bootstrap-ui:1.9.6" level="project" />
+ <orderEntry type="library" name="Maven: org.javassist:javassist:3.25.0-GA" level="project" />
+ <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.16.18" level="project" />
+ <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.3.2" level="project" />
+ <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.3.2" level="project" />
+ <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.3.2" level="project" />
+ <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.3.2" level="project" />
+ <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.3.2" level="project" />
+ <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:3.1" level="project" />
+ <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.4" level="project" />
+ <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.4" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.1.13.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.2.0" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.1.14.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.kafka:spring-kafka:2.2.12.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-context:5.1.14.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-messaging:5.1.14.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.1.14.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.retry:spring-retry:1.2.5.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.kafka:kafka-streams:2.2.2" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.kafka:connect-json:2.0.1" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.kafka:connect-api:2.0.1" level="project" />
+ <orderEntry type="library" name="Maven: org.rocksdb:rocksdbjni:5.15.10" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.kafka:kafka-clients:2.2.2" level="project" />
+ <orderEntry type="library" name="Maven: com.github.luben:zstd-jni:1.3.8-1" level="project" />
+ <orderEntry type="library" name="Maven: org.lz4:lz4-java:1.5.0" level="project" />
+ <orderEntry type="library" name="Maven: org.xerial.snappy:snappy-java:1.1.7.2" level="project" />
+ <orderEntry type="library" name="Maven: com.alibaba:druid:1.1.5" level="project" />
+ <orderEntry type="library" scope="RUNTIME" name="Maven: mysql:mysql-connector-java:8.0.19" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.1.13.RELEASE" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:2.1.13.RELEASE" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.1.13.RELEASE" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.4.0" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.3" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:1.2" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: org.ow2.asm:asm:5.0.4" 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:3.11.1" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:2.23.4" level="project" />
+ <orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.9.16" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.9.16" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.6" 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.5.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:5.1.14.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.1.14.RELEASE" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:5.1.14.RELEASE" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: org.xmlunit:xmlunit-core:2.6.3" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: javax.xml.bind:jaxb-api:2.3.1" level="project" />
+ <orderEntry type="library" scope="TEST" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
+ <orderEntry type="library" name="Maven: com.google.code.kaptcha:kaptcha:2.3.2" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.1.13.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.1.14.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.5" level="project" />
+ </component>
+</module>
\ No newline at end of file
diff --git a/screen-job/src/main/java/com/moral/api/ScreenJobBootStrap.java b/screen-job/src/main/java/com/moral/api/ScreenJobBootStrap.java
new file mode 100644
index 0000000..ea8af5a
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/ScreenJobBootStrap.java
@@ -0,0 +1,19 @@
+package com.moral.api;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.ApplicationContext;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+import com.moral.util.SpringContextUtils;
+
+@MapperScan("com.moral.api.mapper")
+@EnableTransactionManagement
+@SpringBootApplication
+public class ScreenJobBootStrap {
+ public static void main(String[] args) {
+ ApplicationContext applicationContext = SpringApplication.run(ScreenJobBootStrap.class, args);
+ SpringContextUtils.setApplicationContext(applicationContext);
+ }
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/config/datasource/DataSourceConfig.java b/screen-job/src/main/java/com/moral/api/config/datasource/DataSourceConfig.java
new file mode 100644
index 0000000..9e1430a
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/config/datasource/DataSourceConfig.java
@@ -0,0 +1,22 @@
+package com.moral.api.config.datasource;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+
+import javax.sql.DataSource;
+
+@Configuration
+public class DataSourceConfig {
+
+ @Primary
+ @Bean(name = "primaryDataSource")
+ @Qualifier("primaryDataSource")
+ @ConfigurationProperties(prefix = "spring.datasource")
+ public DataSource primaryDataSource(){
+ return new DruidDataSource();
+ }
+}
diff --git a/screen-job/src/main/java/com/moral/api/config/mybatis/MybatisPlusConfig.java b/screen-job/src/main/java/com/moral/api/config/mybatis/MybatisPlusConfig.java
new file mode 100644
index 0000000..3468cf7
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/config/mybatis/MybatisPlusConfig.java
@@ -0,0 +1,20 @@
+package com.moral.api.config.mybatis;
+
+import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisPlusConfig {
+
+ /**
+ * ������������
+ */
+ @Bean
+ public PaginationInterceptor paginationInterceptor() {
+ PaginationInterceptor page = new PaginationInterceptor();
+ return page;
+ }
+
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/config/xxl/XxlJobConfig.java b/screen-job/src/main/java/com/moral/api/config/xxl/XxlJobConfig.java
new file mode 100644
index 0000000..fc087e1
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/config/xxl/XxlJobConfig.java
@@ -0,0 +1,135 @@
+package com.moral.api.config.xxl;
+
+
+import lombok.extern.slf4j.Slf4j;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+
+import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
+
+@Configuration
+@ComponentScan(basePackages = "com.moral.api.jobHandler")
+@Slf4j
+public class XxlJobConfig {
+
+ @Value("${xxl.job.admin.addresses}")
+ private String adminAddresses;
+
+ @Value("${xxl.job.executor.appname}")
+ private String appName;
+
+ @Value("${xxl.job.executor.ip}")
+ private String ip;
+
+ @Value("${xxl.job.executor.port}")
+ private Integer port;
+
+ @Value("${xxl.job.accessToken}")
+ private String accessToken;
+
+ @Value("${xxl.job.executor.logpath}")
+ private String logPath;
+
+ @Value("${xxl.job.executor.logretentiondays}")
+ private Integer logRetentionDays;
+
+ @Bean
+ public XxlJobSpringExecutor xxlJobSpringExecutor(){
+ log.info("xxl jon config init");
+ XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
+ xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
+ xxlJobSpringExecutor.setAppname(appName);
+ xxlJobSpringExecutor.setIp(ip);
+ xxlJobSpringExecutor.setPort(port);
+ xxlJobSpringExecutor.setAccessToken(accessToken);
+ xxlJobSpringExecutor.setLogPath(logPath);
+ xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
+ return xxlJobSpringExecutor;
+ }
+
+ @Override
+ public String toString() {
+ return "XxlJobConfig{" +
+ "adminAddresses='" + adminAddresses + '\'' +
+ ", appName='" + appName + '\'' +
+ ", ip='" + ip + '\'' +
+ ", port=" + port +
+ ", accessToken='" + accessToken + '\'' +
+ ", logPath='" + logPath + '\'' +
+ ", logRetentionDays=" + logRetentionDays +
+ '}';
+ }
+
+ public XxlJobConfig() {
+ }
+
+ public XxlJobConfig(String adminAddresses, String appName, String ip, Integer port, String accessToken, String logPath, Integer logRetentionDays) {
+ this.adminAddresses = adminAddresses;
+ this.appName = appName;
+ this.ip = ip;
+ this.port = port;
+ this.accessToken = accessToken;
+ this.logPath = logPath;
+ this.logRetentionDays = logRetentionDays;
+ }
+
+ public String getAdminAddresses() {
+ return adminAddresses;
+ }
+
+ public void setAdminAddresses(String adminAddresses) {
+ this.adminAddresses = adminAddresses;
+ }
+
+ public String getAppName() {
+ return appName;
+ }
+
+ public void setAppName(String appName) {
+ this.appName = appName;
+ }
+
+ public String getIp() {
+ return ip;
+ }
+
+ public void setIp(String ip) {
+ this.ip = ip;
+ }
+
+ public Integer getPort() {
+ return port;
+ }
+
+ public void setPort(Integer port) {
+ this.port = port;
+ }
+
+ public String getAccessToken() {
+ return accessToken;
+ }
+
+ public void setAccessToken(String accessToken) {
+ this.accessToken = accessToken;
+ }
+
+ public String getLogPath() {
+ return logPath;
+ }
+
+ public void setLogPath(String logPath) {
+ this.logPath = logPath;
+ }
+
+ public Integer getLogRetentionDays() {
+ return logRetentionDays;
+ }
+
+ public void setLogRetentionDays(Integer logRetentionDays) {
+ this.logRetentionDays = logRetentionDays;
+ }
+}
diff --git a/screen-job/src/main/java/com/moral/api/jobHandler/TestHandler.java b/screen-job/src/main/java/com/moral/api/jobHandler/TestHandler.java
new file mode 100644
index 0000000..9f0cf69
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/jobHandler/TestHandler.java
@@ -0,0 +1,21 @@
+package com.moral.api.jobHandler;
+
+import org.springframework.stereotype.Component;
+
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+
+@Component
+public class TestHandler{
+
+ @XxlJob("testJobHandler")
+ public ReturnT<String> execute(){
+ //���������������
+ String param = XxlJobHelper.getJobParam();
+ System.out.println(param);
+ System.out.println("������������������");
+ return ReturnT.SUCCESS;
+ }
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/service/Test.java b/screen-job/src/main/java/com/moral/api/service/Test.java
new file mode 100644
index 0000000..7b34503
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/Test.java
@@ -0,0 +1,4 @@
+package com.moral.api.service;
+
+public class Test {
+}
diff --git a/screen-job/src/main/resources/application-dev.yml b/screen-job/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..d996a3c
--- /dev/null
+++ b/screen-job/src/main/resources/application-dev.yml
@@ -0,0 +1,108 @@
+server:
+ port: 8083
+ tomcat:
+ uri-encoding: UTF-8
+ #���������������
+ min-spare-threads: 500
+ #���������������
+ max-threads: 2500
+ #���������������
+ max-connections: 6500
+ #������������������������
+ accept-count: 1000
+spring:
+ profiles:
+ active: dev
+ include:
+ moduleFormColumn
+ application:
+ name: screen-job
+ redis:
+ host: r-bp1xdlb9wfc6zt0msp.redis.rds.aliyuncs.com
+ port: 6379
+ password: moral_123456
+ timeout: 30000
+ jedis:
+ pool:
+ max-active: 256
+ max-wait: 30000
+ max-idle: 64
+ min-idle: 32
+ lettuce:
+ pool:
+ max-active: 256
+ max-idle: 64
+ max-wait: 30000
+ min-idle: 32
+ tokenRedis:
+ host: r-bp1xdlb9wfc6zt0msp.redis.rds.aliyuncs.com
+ port: 6379
+ password: moral_123456
+ timeout: 30000
+ database: 14
+ pool:
+ max-active: 256
+ max-wait: 30000
+ max-idle: 64
+ min-idle: 32
+
+ datasource:
+ minIdle: 1
+ time-between-eviction-runs-millis: 60000
+ max-active: 20
+ test-while-idle: true
+ validation-query: select 'x'
+ filters: stat
+ type: com.alibaba.druid.pool.DruidDataSource
+ max-wait: 60000
+ url: jdbc:mysql://rm-bp1pr3rx9m3fnkwsk.mysql.rds.aliyuncs.com:3306/moral?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+ username: root
+ password: moral_123456
+ test-on-borrow: false
+ sql-script-encoding: utf-8
+ pool-prepared-statements: true
+ min-evictable-idle-time-millis: 300000
+ initial-size: 1
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ max-conn-lifetime-millis: 20
+ test-on-return: false
+
+mybatis-plus:
+ mapper-locations: classpath:mapper/*.xml
+ global-config:
+ db-config:
+ id-type: auto
+ field-strategy: NOT_EMPTY
+ db-type: MYSQL
+ configuration:
+ map-underscore-to-camel-case: true
+ call-setters-on-nulls: true
+ log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+
+logging:
+ config: classpath:logback.xml
+xxl:
+ job:
+ admin:
+ # ���������������������������������������������������������������������������������������������������������������������������������"���������������������"���"������������������"
+ addresses: http://172.16.44.70:8090/xxl-job-admin
+
+ #���������������TOKEN������TOKEN���������������
+ accessToken:
+
+ #���������������,������������������
+ executor:
+ # ������������������������������������������������������������������������������������
+ #������������������"���������������������������������"���"���������������"���
+ #������������������������9999������������IP������������������������������IP������������������������������������IP������IP������������Host������������������������
+ #���������������������������������������������������������������������
+ appname: xxl-job-executor-sample-springboot
+ ip:
+ port: 9999
+ #���������������������������������������������������������������������������������������
+ logpath: /data/applogs/xxl-job/jobhandler
+ #������������������������������������������������������������������������������������������������������3���������������������-1���������������
+ logretentiondays: -1
+
+
+
diff --git a/screen-job/src/main/resources/logback.xml b/screen-job/src/main/resources/logback.xml
new file mode 100644
index 0000000..d5a0d2c
--- /dev/null
+++ b/screen-job/src/main/resources/logback.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration debug="false" scan="true" scanPeriod="1 seconds">
+
+ <contextName>logback</contextName>
+ <property name="log.path" value="/data/applogs/xxl-job/xxl-job-executor-sample-springboot.log"/>
+
+ <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
+ </encoder>
+ </appender>
+
+ <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <file>${log.path}</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
+ </rollingPolicy>
+ <encoder>
+ <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
+ </pattern>
+ </encoder>
+ </appender>
+
+ <root level="info">
+ <appender-ref ref="console"/>
+ <appender-ref ref="file"/>
+ </root>
+
+</configuration>
\ No newline at end of file
diff --git a/screen-manage/src/main/java/com/moral/api/controller/TestController.java b/screen-manage/src/main/java/com/moral/api/controller/TestController.java
index f15c064..12d9db2 100644
--- a/screen-manage/src/main/java/com/moral/api/controller/TestController.java
+++ b/screen-manage/src/main/java/com/moral/api/controller/TestController.java
@@ -8,6 +8,7 @@
import com.moral.util.PageResult;
import com.moral.util.TokenEncryptUtils;
import com.moral.util.TokenUtils;
+
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -18,6 +19,7 @@
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+
import java.io.*;
@@ -32,6 +34,7 @@
@Resource
private TestService testService;
+
/**
* name ������
* email ������
@@ -39,9 +42,9 @@
*/
@ApiOperation(value = "������������", notes = "������������")
@RequestMapping(value = "/saveTest", method = RequestMethod.POST)
- public ResultMessage save() {
+ public ResultMessage save() {
- Test test=new Test();
+ Test test = new Test();
test.setEmail("test@qq.com");
test.setName("name");
test.setMobile("13965898745");
@@ -49,27 +52,28 @@
return ResultMessage.ok();
}
+
/**
* page ���������
* size ������������
*/
@ApiOperation(value = "������", notes = "������")
@ApiImplicitParams({
- @ApiImplicitParam(name="page",value="������������",required=true,paramType="path",dataType="Int"),
- @ApiImplicitParam(name="size",value="������������",required=true,paramType="path",dataType="Int")
+ @ApiImplicitParam(name = "page", value = "������������", required = true, paramType = "path", dataType = "Int"),
+ @ApiImplicitParam(name = "size", value = "������������", required = true, paramType = "path", dataType = "Int")
})
@RequestMapping(value = "search/{page}/{size}", method = RequestMethod.GET)
public ResultMessage findBypage(@PathVariable("page") Integer page, @PathVariable("size") Integer size) {
- log.info("page is:"+ page+" size is:"+size);
+ log.info("page is:" + page + " size is:" + size);
//������������������������
Page<Test> userPage = testService.selectByPage(null, page, size);
//������������������������
PageResult<Test> pageResult = new PageResult<>(
- userPage.getTotal(), userPage.getPages(),userPage.getRecords()
+ userPage.getTotal(), userPage.getPages(), userPage.getRecords()
);
//������������
- return ResultMessage.ok(pageResult);
+ return ResultMessage.ok(pageResult);
}
@@ -79,7 +83,7 @@
@ApiOperation(value = "redis������", notes = "redis������")
@RequestMapping(value = "redis", method = RequestMethod.GET)
public ResultMessage testRedis() {
- RedisUtil.set("redistest","test");
+ RedisUtil.set("redistest", "test");
return ResultMessage.ok(RedisUtil.get("redistest"));
}
@@ -89,7 +93,7 @@
*/
@ApiOperation(value = "������������", notes = "������������")
@RequestMapping(value = "saveTest", method = RequestMethod.GET)
- public ResultMessage saveTest() throws Exception{
+ public ResultMessage saveTest() throws Exception {
testService.saveTest();
return ResultMessage.ok();
@@ -99,13 +103,16 @@
* kafka������
*/
@ApiOperation(value = "kafka������", notes = "kafka������")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
+ })
@RequestMapping(value = "kafkaTest", method = RequestMethod.GET)
public void kafkaTest() {
- kafkaTemplate.send("test_topic","test111111111111111");
+ kafkaTemplate.send("test_topic", "{'mac': 'p5dnd1234567','DataTime':1623058244104,'e1':10,'e2':20,'ver':2}");
}
@GetMapping("testToken")
- public void testToken(){
+ public void testToken() {
String decoded = TokenEncryptUtils.decoded("5b53480d4e570b54565f555775");
String decoded2 = TokenEncryptUtils.decoded("584f560a49510f5453515453");
System.out.println(decoded);
@@ -117,7 +124,7 @@
BufferedReader fis = new BufferedReader(new FileReader(path));
BufferedWriter writer = new BufferedWriter(new FileWriter("C:\\Users\\cdl\\Desktop\\provin1ce.txt"));
String line = "";
- while((line = fis.readLine())!=null){
+ while ((line = fis.readLine()) != null) {
//������code
StringBuilder str = new StringBuilder(line);
String code = str.substring(31, 37);
@@ -127,9 +134,9 @@
int i = 0;
StringBuilder buffered = new StringBuilder();
for (char aChar : chars) {
- if(aChar=='\'')
- i ++;
- if(i==1){
+ if (aChar == '\'')
+ i++;
+ if (i == 1) {
buffered.append(aChar);
}
}
@@ -142,15 +149,15 @@
int j = 0;
StringBuilder buffered2 = new StringBuilder();
for (char c : chars1) {
- if(j==6){
+ if (j == 6) {
buffered2.append(c);
}
- if(c==',')
+ if (c == ',')
j++;
}
StringBuilder parentCode = buffered2.deleteCharAt(buffered2.length() - 1);
//������
- writer.write("INSERT INTO `sys_area` VALUES ("+code+","+name+","+parentCode+");");
+ writer.write("INSERT INTO `sys_area` VALUES (" + code + "," + name + "," + parentCode + ");");
writer.newLine();
}
diff --git a/screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaReceiver.java b/screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaReceiver.java
new file mode 100644
index 0000000..8119640
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaReceiver.java
@@ -0,0 +1,97 @@
+package com.moral.api.kafka.consumer;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.kafka.clients.consumer.ConsumerRecord;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.kafka.annotation.KafkaListener;
+import org.springframework.kafka.support.Acknowledgment;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import com.alibaba.fastjson.JSON;
+import com.moral.api.service.DeviceService;
+import com.moral.api.service.HistoryHourlyService;
+import com.moral.api.service.HistoryMinutelyService;
+import com.moral.constant.KafkaConstants;
+
+/*@Slf4j
+@Component
+public class KafkaReceiver {
+
+ @Autowired
+ private HistoryMinutelyService historyMinutelyService;
+
+ @Autowired
+ private HistoryHourlyService historyHourlyService;
+
+ @Autowired
+ private DeviceService deviceService;
+
+ //������������
+ @KafkaListener(topics = KafkaConstants.TOPIC_MINUTE, groupId = KafkaConstants.GROUP_ID, containerFactory = "kafkaListenerContainerFactory")
+ public void listenMinute(ConsumerRecord<String, String> record, Acknowledgment ack) {
+ String msg = record.value();
+ try {
+ Map<String, Object> data = JSON.parseObject(msg, HashMap.class);
+ System.out.println(data);
+ Object mac = data.get("mac");
+ Object time = data.get("DataTime");
+ Object ver = data.get("ver");
+ if (StringUtils.isEmpty(ver) || StringUtils.isEmpty(time) || StringUtils.isEmpty(mac)) {
+ log.warn("some properties is null, param[0] message:" + msg);
+ return;
+ }
+ Map<String, Object> deviceInfo = deviceService.getDeviceByMac(mac.toString());
+ if (deviceInfo == null) {
+ String deviceRealState = "null or deleted";
+ log.warn("device record is " + deviceRealState + ", param[0] message:" + msg);
+ return;
+ }
+ //���������������������������
+ data.put("DataTime", Math.round(new Double((Long) time) / 1000) * 1000);
+
+ //���������������
+ historyMinutelyService.insertHistoryMinutely(data);
+
+
+ ack.acknowledge();
+ } catch (Exception e) {
+ log.error("param[0] message:" + msg);
+ }
+ }
+
+ //������������
+ @KafkaListener(topics = KafkaConstants.TOPIC_HOUR, groupId = KafkaConstants.GROUP_ID, containerFactory = "kafkaListenerContainerFactory")
+ public void listenHour(ConsumerRecord<String, String> record, Acknowledgment ack) {
+ String msg = record.value();
+ try {
+ Map<String, Object> data = JSON.parseObject(msg, HashMap.class);
+ System.out.println(data);
+ Object mac = data.get("mac");
+ Object time = data.get("DataTime");
+ Object ver = data.get("ver");
+ if (StringUtils.isEmpty(ver) || StringUtils.isEmpty(time) || StringUtils.isEmpty(mac)) {
+ log.warn("some properties is null, param[0] message:" + msg);
+ return;
+ }
+ Map<String, Object> deviceInfo = deviceService.getDeviceByMac(mac.toString());
+ if (deviceInfo == null) {
+ String deviceRealState = "null or deleted";
+ log.warn("device record is " + deviceRealState + ", param[0] message:" + msg);
+ return;
+ }
+ //���������������������������
+ data.put("DataTime", Math.round(new Double((Long) time) / 1000) * 1000);
+
+ //���������������
+ historyHourlyService.insertHistoryHourly(data);
+
+ ack.acknowledge();
+ } catch (Exception e) {
+ log.error("param[0] message:" + msg);
+ }
+ }
+}*/
diff --git a/screen-manage/src/main/java/com/moral/api/mapper/HistoryMinutelyMapper.java b/screen-manage/src/main/java/com/moral/api/mapper/HistoryMinutelyMapper.java
new file mode 100644
index 0000000..ce88532
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/mapper/HistoryMinutelyMapper.java
@@ -0,0 +1,20 @@
+package com.moral.api.mapper;
+
+import java.util.Map;
+
+import com.moral.api.entity.HistoryHourly;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * ��������� Mapper ������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-06-04
+ */
+public interface HistoryMinutelyMapper{
+
+ int insertHistoryMinutely(Map<String,Object> params);
+
+}
\ No newline at end of file
diff --git a/screen-manage/src/main/java/com/moral/api/service/DeviceService.java b/screen-manage/src/main/java/com/moral/api/service/DeviceService.java
index eb68f0a..5fac936 100644
--- a/screen-manage/src/main/java/com/moral/api/service/DeviceService.java
+++ b/screen-manage/src/main/java/com/moral/api/service/DeviceService.java
@@ -52,4 +52,13 @@
//������������id������������������������������������������������������������������������������������������������
Map<String, Object> selectDeviceInfoById(Integer deviceId);
+ //������mac������������������
+ Map<String, Object> getDeviceByMac(String mac);
+
+ //������������������
+ Map<String, Object> adjustDeviceData(Map<String, Object> deviceData, Map<String, Object> deviceInfo);
+
+ //���������������������������
+ Map<String, Object> judgeDeviceState(Map<String, Object> data, Map<String, Object> deviceInfo);
+
}
diff --git a/screen-manage/src/main/java/com/moral/api/service/HistoryMinutelyService.java b/screen-manage/src/main/java/com/moral/api/service/HistoryMinutelyService.java
new file mode 100644
index 0000000..8d2994c
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/service/HistoryMinutelyService.java
@@ -0,0 +1,20 @@
+package com.moral.api.service;
+
+import java.util.Map;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.moral.api.entity.HistoryHourly;
+
+/**
+ * <p>
+ * ��������� ���������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-06-04
+ */
+public interface HistoryMinutelyService {
+
+ void insertHistoryMinutely(Map<String, Object> deviceData);
+
+}
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
index 01836ff..6a972f9 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
@@ -1,5 +1,6 @@
package com.moral.api.service.impl;
+import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -22,11 +23,12 @@
import com.moral.api.util.LogUtils;
import com.moral.constant.Constants;
-import com.moral.redis.RedisUtil;
+import com.moral.constant.RedisConstants;
import com.moral.util.ConvertUtils;
import com.moral.util.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.context.request.RequestContextHolder;
@@ -75,6 +77,49 @@
@Autowired
private LogUtils logUtils;
+ @Autowired
+ private RedisTemplate redisTemplate;
+
+
+ /*
+ * ���redis������������������
+ * */
+ private Map<String, Object> getDeviceInfoFromRedis(String mac) {
+ Map<String, Object> deviceInfo = (Map<String, Object>) redisTemplate.opsForValue().get(RedisConstants.DEVICE + mac);
+ return deviceInfo;
+ }
+
+ /*
+ * ������������������redis
+ */
+ private void setDeviceInfoToRedis(String mac, Map<String, Object> deviceInfo) {
+ redisTemplate.opsForValue().set(getDeviceKey(mac), deviceInfo);
+ }
+
+ /*
+ * ���redis������������������
+ */
+ private void delDeviceInfoFromRedis(String mac) {
+ redisTemplate.delete(getDeviceKey(mac));
+ }
+
+ /*
+ * ���������������������redis������key
+ */
+ private String getDeviceKey(String mac) {
+ return keysConnect(RedisConstants.DEVICE, mac);
+ }
+
+ //redis key������
+ private String keysConnect(String... keys) {
+ StringBuilder key = new StringBuilder(keys[0]);
+ for (int i = 1; i < keys.length; i++) {
+ key.append("_");
+ key.append(keys[i]);
+ }
+ return key.toString().toLowerCase();
+ }
+
@Override
@Transactional
public void insert(Device device) {
@@ -83,12 +128,15 @@
deviceMapper.insert(device);
Map<String, Object> deviceInfo = selectDeviceInfoById(device.getId());
//������������������������redis
- RedisUtil.del("device_" + device.getMac());
- RedisUtil.set("device_" + device.getMac(), deviceInfo);
+ String mac = device.getMac();
+ //���redis���������������������
+ delDeviceInfoFromRedis(mac);
+ //������������������redis
+ setDeviceInfoToRedis(mac, deviceInfo);
//������������������
HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
StringBuilder content = new StringBuilder();
- content.append("������������������").append(device.getName()).append("���").append("mac���").append(device.getMac());
+ content.append("������������������").append(device.getName()).append("���").append("mac���").append(mac);
logUtils.saveOperationForManage(request, content.toString(), Constants.INSERT_OPERATE_TYPE);
}
@@ -100,8 +148,8 @@
deviceMapper.update(null, updateWrapper);
Device device = deviceMapper.selectById(deviceId);
String mac = device.getMac();
- //������redis
- RedisUtil.del("device_" + mac);
+ //���redis���������������������
+ delDeviceInfoFromRedis(mac);
//������������������
HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
StringBuilder content = new StringBuilder();
@@ -116,10 +164,11 @@
Device oldDevice = deviceMapper.selectById(deviceId);
deviceMapper.updateById(device);
String mac = deviceMapper.selectById(deviceId).getMac();
- //������redis
- RedisUtil.del("device_" + mac);
+ //���redis���������������������
+ delDeviceInfoFromRedis(mac);
Map<String, Object> deviceInfo = selectDeviceInfoById(deviceId);
- RedisUtil.set("device_" + mac, deviceInfo);
+ //������������������redis
+ setDeviceInfoToRedis(mac, deviceInfo);
//������������������
HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
StringBuilder content = new StringBuilder();
@@ -249,7 +298,7 @@
@Override
public Map<String, Object> selectDeviceInfoById(Integer deviceId) {
String mac = deviceMapper.selectById(deviceId).getMac();
- Map<String, Object> deviceInfo = (Map<String, Object>) RedisUtil.get("device_" + mac);
+ Map<String, Object> deviceInfo = getDeviceInfoFromRedis(mac);
//������redis������
if (deviceInfo != null) {
return deviceInfo;
@@ -317,7 +366,7 @@
mpInfo.put("name", monitorPoint.getName());
deviceInfo.put("monitorPoint", mpInfo);
- RedisUtil.set("device_" + mac, deviceInfo);
+ setDeviceInfoToRedis(mac, deviceInfo);
return deviceInfo;
}
@@ -335,4 +384,30 @@
return monitorPointMapper.selectMaps(queryWrapper);
}
+ @Override
+ public Map<String, Object> getDeviceByMac(String mac) {
+ Map<String, Object> deviceInfo = getDeviceInfoFromRedis(mac);
+ if (deviceInfo == null) {
+ QueryWrapper<Device> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("mac", mac).eq("is_delete", Constants.NOT_DELETE);
+ Device device = deviceMapper.selectOne(queryWrapper);
+ if (device != null) {
+ deviceInfo = selectDeviceInfoById(device.getId());
+ setDeviceInfoToRedis(mac, deviceInfo);
+ }
+ }
+ return deviceInfo;
+ }
+
+ @Override
+ public Map<String, Object> adjustDeviceData(Map<String, Object> deviceData, Map<String, Object> deviceInfo) {
+ return null;
+ }
+
+ @Override
+ public Map<String, Object> judgeDeviceState(Map<String, Object> deviceData, Map<String, Object> deviceInfo) {
+ return null;
+ }
+
+
}
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/HistoryMinutelyServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/HistoryMinutelyServiceImpl.java
new file mode 100644
index 0000000..6df638c
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/HistoryMinutelyServiceImpl.java
@@ -0,0 +1,63 @@
+package com.moral.api.service.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import com.alibaba.fastjson.JSON;
+import com.moral.api.mapper.HistoryMinutelyMapper;
+import com.moral.api.service.DeviceService;
+import com.moral.api.service.HistoryMinutelyService;
+import com.moral.constant.Constants;
+import com.moral.util.DateUtils;
+
+@Service
+public class HistoryMinutelyServiceImpl implements HistoryMinutelyService {
+
+ @Autowired
+ private HistoryMinutelyMapper historyMinutelyMapper;
+
+ @Autowired
+ private DeviceService deviceService;
+
+ @Override
+ public void insertHistoryMinutely(Map<String, Object> deviceData) {
+ Map<String, Object> result = new HashMap<>();
+ Object mac = deviceData.remove("mac");
+ result.put("mac", mac);
+ result.put("version", deviceData.remove("ver"));
+ Date time = new Date((Long) deviceData.remove("DataTime"));
+ result.put("time", DateUtils.dateToDateString(time));
+ result.put("value", JSON.toJSONString(deviceData));
+ String timeUnits = DateUtils.dateToDateString(time, DateUtils.yyyyMM_EN);
+ result.put("timeUnits", tableSuffix(timeUnits, Constants.UN_ADJUST));
+ //���������
+ historyMinutelyMapper.insertHistoryMinutely(result);
+
+ //������������
+ Map<String, Object> deviceInfo = deviceService.getDeviceByMac(mac.toString());
+
+ //���������������������������������������
+ result.put("timeUnits", timeUnits);
+ deviceData = deviceService.adjustDeviceData(deviceData, deviceInfo);
+ result.put("value", JSON.toJSONString(deviceData));
+ historyMinutelyMapper.insertHistoryMinutely(result);
+
+ //������������������
+ Map<String, Object> deviceState = deviceService.judgeDeviceState(deviceData, deviceInfo);
+ }
+
+ //���������
+ private String tableSuffix(String... keys) {
+ StringBuilder key = new StringBuilder(keys[0]);
+ for (int i = 1; i < keys.length; i++) {
+ key.append("_");
+ key.append(keys[i]);
+ }
+ return key.toString();
+ }
+
+}
diff --git a/screen-manage/src/main/resources/mapper/HistoryMinutelyMapper.xml b/screen-manage/src/main/resources/mapper/HistoryMinutelyMapper.xml
new file mode 100644
index 0000000..2094b2a
--- /dev/null
+++ b/screen-manage/src/main/resources/mapper/HistoryMinutelyMapper.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.moral.api.mapper.HistoryMinutelyMapper">
+
+ <insert id="insertHistoryMinutely">
+ INSERT INTO history_minutely_${timeUnits} VALUES (#{mac}, #{time}, #{value}, #{version})
+ </insert>
+
+</mapper>
\ No newline at end of file
--
Gitblit v1.8.0