From eb51b2364e9a3fbe806fde61fa255660a098fc8b Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Thu, 24 Jun 2021 14:06:41 +0800
Subject: [PATCH] Merge branch 'dev' of http://blit.7drlb.com:8888/r/moral into dev
---
screen-job/src/main/java/com/moral/api/service/DeviceService.java | 20
screen-api/src/main/java/com/moral/api/service/impl/GroupServiceImpl.java | 32
screen-api/src/main/java/com/moral/api/service/GroupMenuService.java | 2
screen-job/src/main/java/com/moral/api/entity/HistoryDaily.java | 36
screen-job/src/main/java/com/moral/api/service/HistoryDailyService.java | 21
screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java | 83 +
screen-job/src/main/java/com/moral/api/mapper/HistoryMinutelyMapper.java | 11
screen-manage/src/main/java/com/moral/api/controller/DeviceController.java | 2
screen-api/src/main/resources/application-dev.yml | 13
screen-job/src/main/java/com/moral/api/mapper/CityAqiConfigMapper.java | 16
screen-job/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java | 33
screen-api/src/main/java/com/moral/api/service/impl/UserGroupServiceImpl.java | 16
screen-job/src/main/java/com/moral/api/mapper/HistoryDailyMapper.java | 21
screen-job/src/main/java/com/moral/api/entity/HistoryAqi.java | 45 +
screen-api/src/main/resources/mapper/GroupMapper.xml | 5
screen-api/src/main/java/com/moral/api/controller/MenuController.java | 4
screen-common/src/main/java/com/moral/util/DateUtils.java | 42
screen-job/src/main/java/com/moral/api/service/HistoryMinutelyService.java | 12
screen-manage/src/main/java/com/moral/api/service/DeviceService.java | 6
screen-job/src/main/resources/mapper/HistoryFiveMinutelyMapper.xml | 25
screen-manage/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java | 63 +
screen-manage/src/main/java/com/moral/api/service/impl/SensorServiceImpl.java | 25
screen-job/src/main/java/com/moral/api/config/redis/RedisConfig.java | 67 +
screen-manage/src/main/resources/application-dev.yml | 9
screen-job/src/main/java/com/moral/api/service/HistoryFiveMinutelyService.java | 9
screen-manage/src/main/resources/mapper/HistoryHourlyMapper.xml | 17
screen-api/src/main/java/com/moral/api/entity/Group.java | 2
screen-manage/src/main/resources/mapper/DeviceMapper.xml | 8
myBatisPlusGenerator/src/main/java/com/moral/CodeGenerator.java | 3
screen-job/src/main/java/com/moral/api/mapper/DeviceMapper.java | 16
screen-job/src/main/java/com/moral/api/task/CreateTableTask.java | 52 +
screen-job/src/main/java/com/moral/api/service/impl/HistoryMinutelyServiceImpl.java | 27
screen-job/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java | 64 +
screen-manage/src/main/java/com/moral/api/service/impl/HistoryMinutelyServiceImpl.java | 34
screen-manage/src/main/java/com/moral/api/util/AdjustDataUtils.java | 81 +
.gitignore | 5
screen-job/src/main/java/com/moral/api/entity/CityAqiConfig.java | 50 +
screen-job/src/main/resources/logback-spring.xml | 56 +
screen-api/src/main/java/com/moral/api/service/GroupService.java | 9
screen.iml | 125 ++
pom.xml | 9
screen-api/src/main/java/com/moral/api/controller/GroupController.java | 37
screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java | 123 ++
screen-api/src/main/java/com/moral/api/kafka/consumer/SecondsDataConsumer.java | 2
screen-job/src/main/java/com/moral/api/service/impl/CityAqiConfigServiceImpl.java | 31
screen-manage/src/main/java/com/moral/api/config/kafka/KafkaProducerConfig.java | 4
screen-api/src/main/java/com/moral/api/service/UserService.java | 12
screen-manage/src/main/java/com/moral/api/entity/HistoryHourly.java | 51 +
screen-job/src/main/java/com/moral/api/config/xxljob/XxlJobConfig.java | 68 +
screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java | 74 +
screen-api/src/main/java/com/moral/api/entity/User.java | 7
screen-common/src/main/java/com/moral/constant/Constants.java | 5
screen-job/src/main/java/com/moral/api/task/JudgeOffLineDeviceTask.java | 28
screen-api/src/main/resources/mapper/GroupMenuMapper.xml | 22
screen-job/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java | 69 +
screen-common/src/main/java/com/moral/constant/RedisConstants.java | 32
screen-api/src/main/resources/mapper/MenuMapper.xml | 17
screen-job/src/main/java/com/moral/api/service/CityAqiConfigService.java | 20
screen-job/src/main/resources/mapper/DeviceMapper.xml | 29
screen-common/src/main/java/com/moral/constant/KafkaConstants.java | 16
screen-job/src/main/resources/mapper/CityAqiConfigMapper.xml | 13
screen-api/src/main/java/com/moral/api/service/impl/GroupMenuServiceImpl.java | 6
screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java | 175 ++-
screen-api/src/main/java/com/moral/api/controller/LoginController.java | 32
screen-api/src/main/java/com/moral/api/controller/UserController.java | 31
myBatisPlusGenerator/myBatisPlusGenerator.iml | 137 +++
screen-manage/src/main/java/com/moral/api/config/kafka/KafkaConsumerConfig.java | 13
screen-job/src/main/java/com/moral/api/service/impl/HistoryAqiServiceImpl.java | 77 +
screen-api/src/main/java/com/moral/api/service/UserGroupService.java | 3
screen-job/src/main/resources/mapper/HistoryDailyMapper.xml | 19
screen-job/src/main/java/com/moral/api/service/HistoryAqiService.java | 10
screen-job/src/main/resources/mapper/HistoryAqiMapper.xml | 12
screen-job/src/main/java/com/moral/api/mapper/HistoryAqiMapper.java | 17
/dev/null | 4
screen-job/src/main/java/com/moral/api/mapper/HistoryFiveMinutelyMapper.java | 15
screen-manage/src/main/java/com/moral/api/controller/TestController.java | 25
screen-job/src/main/java/com/moral/api/task/HistoryAqiInsertTask.java | 27
screen-manage/src/main/java/com/moral/api/service/HistoryHourlyService.java | 20
screen-job/src/main/resources/application-dev.yml | 1
screen-manage/src/main/java/com/moral/api/service/HistoryMinutelyService.java | 2
screen-manage/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java | 20
screen-job/src/main/java/com/moral/api/entity/Device.java | 132 ++
screen-job/src/main/resources/mapper/HistoryMinutelyMapper.xml | 50 +
83 files changed, 2,355 insertions(+), 309 deletions(-)
diff --git a/.gitignore b/.gitignore
index 9a8a286..fae67da 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,3 +17,8 @@
myBatisPlusGenerator/src/test/
screen-common/src/main/resources/
screen-manage/src/test/
+/home
+/screen-api/screen-api.iml
+/screen-job/screen-job.iml
+/screen-common/screen-common.iml
+/screen-manage/screen-manage.iml
\ No newline at end of file
diff --git a/myBatisPlusGenerator/myBatisPlusGenerator.iml b/myBatisPlusGenerator/myBatisPlusGenerator.iml
new file mode 100644
index 0000000..9128d11
--- /dev/null
+++ b/myBatisPlusGenerator/myBatisPlusGenerator.iml
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+ <component name="FacetManager">
+ <facet type="web" name="Web">
+ <configuration>
+ <webroots />
+ </configuration>
+ </facet>
+ <facet type="Spring" name="Spring">
+ <configuration />
+ </facet>
+ </component>
+ <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
+ <output url="file://$MODULE_DIR$/target/classes" />
+ <output-test url="file://$MODULE_DIR$/target/test-classes" />
+ <content url="file://$MODULE_DIR$">
+ <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+ <excludeFolder url="file://$MODULE_DIR$/target" />
+ </content>
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.12" 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: org.springframework.boot:spring-boot-autoconfigure: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-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: com.baomidou:mybatis-plus-generator: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.apache.velocity:velocity-engine-core:2.0" level="project" />
+ <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.8.1" level="project" />
+ <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
+ <orderEntry type="library" name="Maven: org.freemarker:freemarker:2.3.23" level="project" />
+ <orderEntry type="library" scope="RUNTIME" name="Maven: mysql:mysql-connector-java:8.0.19" level="project" />
+ <orderEntry type="library" name="Maven: com.alibaba:druid:1.1.5" 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.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.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.springframework.boot:spring-boot-starter-websocket:2.1.13.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-websocket:5.1.14.RELEASE" 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" 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" />
+ <orderEntry type="library" name="Maven: com.xuxueli:xxl-job-core:2.3.0" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-all:4.1.45.Final" level="project" />
+ <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.6" level="project" />
+ <orderEntry type="library" name="Maven: org.codehaus.groovy:groovy:2.5.9" level="project" />
+ <orderEntry type="library" name="Maven: com.googlecode.aviator:aviator:5.2.5" level="project" />
+ </component>
+</module>
\ No newline at end of file
diff --git a/myBatisPlusGenerator/src/main/java/com/moral/CodeGenerator.java b/myBatisPlusGenerator/src/main/java/com/moral/CodeGenerator.java
index 23d5672..1ace387 100644
--- a/myBatisPlusGenerator/src/main/java/com/moral/CodeGenerator.java
+++ b/myBatisPlusGenerator/src/main/java/com/moral/CodeGenerator.java
@@ -43,7 +43,7 @@
// ������������
GlobalConfig gc = new GlobalConfig();
//String projectPath = System.getProperty("user.dir");
- String projectPath="C:\\Users\\cdl\\Desktop\\comProject\\newProject\\moral\\screen-manage\\";
+ String projectPath="D:\\tools\\IdeaProjects\\moral\\screen-job";
gc.setOutputDir(projectPath + "/src/main/java");
gc.setAuthor("moral");
gc.setOpen(false);
@@ -67,6 +67,7 @@
// ���������������
DataSourceConfig dsc = new DataSourceConfig();
+ dsc.setUrl("jdbc:mysql://rm-bp1pr3rx9m3fnkwsk8o.mysql.rds.aliyuncs.com:3306/moral?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC");
dsc.setUrl("jdbc:mysql://rm-bp1pr3rx9m3fnkwsk8o.mysql.rds.aliyuncs.com:3306/moral?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
diff --git a/pom.xml b/pom.xml
index 247deb0..10090e3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -43,6 +43,7 @@
<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>
+ <aviator.version>5.2.5</aviator.version>
</properties>
@@ -51,7 +52,6 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
-
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
@@ -126,6 +126,13 @@
<artifactId>xxl-job-core</artifactId>
<version>${xxl-job.version}</version>
</dependency>
+ <!-- https://mvnrepository.com/artifact/com.googlecode.aviator/aviator -->
+ <dependency>
+ <groupId>com.googlecode.aviator</groupId>
+ <artifactId>aviator</artifactId>
+ <version>${aviator.version}</version>
+ </dependency>
+
</dependencies>
diff --git a/screen-api/src/main/java/com/moral/api/controller/GroupController.java b/screen-api/src/main/java/com/moral/api/controller/GroupController.java
index 3223ef9..302b910 100644
--- a/screen-api/src/main/java/com/moral/api/controller/GroupController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/GroupController.java
@@ -17,7 +17,6 @@
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.moral.api.entity.Group;
import com.moral.api.service.GroupService;
@@ -25,6 +24,7 @@
import com.moral.constant.ResponseCodeEnum;
import com.moral.constant.ResultMessage;
import com.moral.util.PageResult;
+import com.moral.util.WebUtils;
@Slf4j
@Api(tags = {"���������"})
@@ -57,21 +57,16 @@
@ApiOperation(value = "���������", notes = "���������")
@ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "���id", required = true, paramType = "query", dataType = "int"),
@ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
})
- @RequestMapping(value = "delete", method = RequestMethod.POST)
- public ResultMessage delete(@RequestBody Group group) {
- if (group.getId() == null) {
+ @RequestMapping(value = "delete", method = RequestMethod.GET)
+ public ResultMessage delete(Integer id) {
+ if (id == null) {
return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
}
- QueryWrapper<Group> queryWrapper = new QueryWrapper<>();
- queryWrapper.eq("id", group.getId());
- group = groupService.getOne(queryWrapper);
- if (group == null) {
- return ResultMessage.fail(ResponseCodeEnum.ACCOUNT_NOT_EXIST.getCode(), ResponseCodeEnum.ACCOUNT_NOT_EXIST.getMsg());
- }
- groupService.deleteGroup(group);
+ groupService.deleteGroup(id);
return ResultMessage.ok();
}
@@ -80,8 +75,7 @@
@ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
})
@RequestMapping(value = "update", method = RequestMethod.POST)
- public ResultMessage update(@RequestBody Group group, HttpServletRequest request) {
- String token = request.getHeader("token");
+ public ResultMessage update(@RequestBody Group group) {
Map<String, Object> result = groupService.updateGroup(group);
if (!result.isEmpty()) {
return ResultMessage.fail((int) result.get("code"), result.get("msg").toString());
@@ -98,8 +92,9 @@
@ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String"),
@ApiImplicitParam(name = "groupName", value = "������������������", required = false, paramType = "query", dataType = "String")
})
- @RequestMapping(value = "select", method = RequestMethod.POST)
- public ResultMessage select(@RequestBody Map<String, Object> parameters) {
+ @RequestMapping(value = "select", method = RequestMethod.GET)
+ public ResultMessage select(HttpServletRequest request) {
+ Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
Page<Group> userPage = groupService.selectGroups(parameters);
PageResult<Group> pageResult = new PageResult<>(
userPage.getTotal(), userPage.getPages(), userPage.getRecords()
@@ -109,12 +104,18 @@
@ApiOperation(value = "���������������������ids", notes = "���������������������ids")
@ApiImplicitParams({
+ @ApiImplicitParam(name = "userId", value = "������id", required = true, paramType = "query", dataType = "int"),
@ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
})
- @RequestMapping(value = "get-group-ids", method = RequestMethod.GET)
+ @RequestMapping(value = "getGroupIds", method = RequestMethod.GET)
public ResultMessage getGroupIds(Integer userId) {
- List<Integer> groupIds = userGroupService.getGroupIds(userId);
- return ResultMessage.ok(groupIds);
+ System.out.println(userId);
+ if (userId == null) {
+ return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
+ ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+ }
+ List<Map<String, Object>> groups = groupService.getGroupIds(userId);
+ return ResultMessage.ok(groups);
}
@ApiOperation(value = "���������������", notes = "���������������")
diff --git a/screen-api/src/main/java/com/moral/api/controller/LoginController.java b/screen-api/src/main/java/com/moral/api/controller/LoginController.java
index 2f34eee..ea704fe 100644
--- a/screen-api/src/main/java/com/moral/api/controller/LoginController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/LoginController.java
@@ -7,6 +7,7 @@
import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
+import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
@@ -22,7 +23,6 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.moral.api.entity.SysConfig;
import com.moral.api.service.SysConfigService;
-import com.moral.api.service.UserLogService;
import com.moral.api.service.UserService;
import com.moral.constant.Constants;
import com.moral.constant.ResponseCodeEnum;
@@ -50,25 +50,35 @@
ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
}
Map<String, Object> result = userService.login(parameters);
- if (!result.containsKey("data")) {
+ if (!result.containsKey("token")) {
return ResultMessage.fail((int) result.get("code"), (String) result.get("msg"));
}
- Map<String, Object> data = (Map<String, Object>) result.get("data");
- return ResultMessage.ok(data);
+ return ResultMessage.ok(result);
}
- @ApiOperation(value = "������", notes = "������")
- @RequestMapping(value = "logout", method = RequestMethod.POST)
+ @ApiOperation(value = "������������������", notes = "������������������")
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
})
- public ResultMessage logout(@RequestBody Map<String, Object> parameters, HttpServletRequest request) {
- if (!parameters.containsKey("uid")) {
+ @RequestMapping(value = "getUserInfo", method = RequestMethod.POST)
+ public ResultMessage getUserInfo(HttpServletRequest request) {
+ String token = request.getHeader("token");
+ Map<String, Object> result = userService.getUserInfo(token);
+ return ResultMessage.ok(result);
+ }
+
+ @ApiOperation(value = "������", notes = "������")
+ @RequestMapping(value = "logout", method = RequestMethod.GET)
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
+ })
+ public ResultMessage logout(Integer userId, HttpServletRequest request) {
+ if (userId == null) {
return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
}
String token = request.getHeader("token");
- TokenUtils.destoryToken(parameters.get("uid").toString(), token);
+ TokenUtils.destoryToken(userId.toString(), token);
return ResultMessage.ok();
}
@@ -79,9 +89,9 @@
queryWrapper.eq(Constants.FRONT_VERIFICATIONCODE_COLUMN, Constants.FRONT_ERIFICATIONCODE_VALUE);
SysConfig sysConfig = sysConfigService.getOne(queryWrapper);
if (Constants.VERFICATIONCODE_OPEN.equals(sysConfig.getCode())) {
- return new ResultMessage(ResponseCodeEnum.VERIFICATION_OPEN,null);
+ return new ResultMessage(ResponseCodeEnum.VERIFICATION_OPEN, null);
}
- return new ResultMessage(ResponseCodeEnum.VERIFICATION_CLOSE,null);
+ return new ResultMessage(ResponseCodeEnum.VERIFICATION_CLOSE, null);
}
@ApiOperation(value = "���������������", notes = "���������������")
diff --git a/screen-api/src/main/java/com/moral/api/controller/MenuController.java b/screen-api/src/main/java/com/moral/api/controller/MenuController.java
index f8b69ba..7ae682a 100644
--- a/screen-api/src/main/java/com/moral/api/controller/MenuController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/MenuController.java
@@ -67,7 +67,7 @@
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String"),
})
- @RequestMapping(value = "select", method = RequestMethod.POST)
+ @RequestMapping(value = "select", method = RequestMethod.GET)
public ResultMessage select(HttpServletRequest request) {
String token = request.getHeader("token");
Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
@@ -80,7 +80,7 @@
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
})
- @RequestMapping(value = "get-menu-ids", method = RequestMethod.GET)
+ @RequestMapping(value = "getMenuIds", method = RequestMethod.GET)
public ResultMessage getMenuIds(Integer groupId) {
List<Integer> menusIds = groupMenuService.getMenusIds(groupId);
return ResultMessage.ok(menusIds);
diff --git a/screen-api/src/main/java/com/moral/api/controller/UserController.java b/screen-api/src/main/java/com/moral/api/controller/UserController.java
index ba6d30a..39b7c5a 100644
--- a/screen-api/src/main/java/com/moral/api/controller/UserController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/UserController.java
@@ -24,6 +24,7 @@
import com.moral.constant.ResponseCodeEnum;
import com.moral.constant.ResultMessage;
import com.moral.util.PageResult;
+import com.moral.util.WebUtils;
@Slf4j
@Api(tags = {"������������"})
@@ -40,6 +41,7 @@
})
@RequestMapping(value = "insert", method = RequestMethod.POST)
public ResultMessage insert(@RequestBody User user) {
+ System.out.println(user);
if (user.getAccount().isEmpty() || user.getPassword().isEmpty()) {
return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
@@ -53,22 +55,16 @@
@ApiOperation(value = "������������", notes = "������������")
@ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "������id", required = true, paramType = "query", dataType = "int"),
@ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
})
- @RequestMapping(value = "delete", method = RequestMethod.POST)
- public ResultMessage delete(@RequestBody User user) {
- if (user.getId() == null) {
+ @RequestMapping(value = "delete", method = RequestMethod.GET)
+ public ResultMessage delete(Integer id) {
+ if (id == null) {
return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
}
- QueryWrapper<User> queryWrapper = new QueryWrapper<>();
- queryWrapper.eq("id", user.getId());
- user = userService.getOne(queryWrapper);
- if (user == null) {
- return ResultMessage.fail(ResponseCodeEnum.ACCOUNT_NOT_EXIST.getCode(),
- ResponseCodeEnum.ACCOUNT_NOT_EXIST.getMsg());
- }
- userService.deleteUser(user);
+ userService.deleteUser(id);
return ResultMessage.ok();
}
@@ -91,8 +87,8 @@
@ApiOperation(value = "������������������������", notes = "������������������������")
@ApiImplicitParams({
- @ApiImplicitParam(name = "page", value = "���������", required = false, paramType = "query", dataType = "Integer"),
- @ApiImplicitParam(name = "size", value = "������������", required = false, paramType = "query", dataType = "Integer"),
+ @ApiImplicitParam(name = "page", value = "���������", required = false, paramType = "query", dataType = "int"),
+ @ApiImplicitParam(name = "size", value = "������������", required = false, paramType = "query", dataType = "int"),
@ApiImplicitParam(name = "order", value = "������������", required = false, paramType = "query", dataType = "String"),
@ApiImplicitParam(name = "orderType", value = "������������������������0������������1", defaultValue = "0", required = false, paramType = "query", dataType = "String"),
@ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String"),
@@ -103,8 +99,13 @@
@ApiImplicitParam(name = "wechat", value = "������������������", required = false, paramType = "query", dataType = "String"),
})
- @RequestMapping(value = "select", method = RequestMethod.POST)
- public ResultMessage select(@RequestBody Map<String, Object> parameters) {
+ @RequestMapping(value = "select", method = RequestMethod.GET)
+ public ResultMessage select(HttpServletRequest request) {
+ Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+ if (!parameters.containsKey("page") || !parameters.containsKey("size")) {
+ return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
+ ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+ }
Page<User> userPage = userService.selectUsers(parameters);
PageResult<User> pageResult = new PageResult<>(
userPage.getTotal(), userPage.getPages(), userPage.getRecords()
diff --git a/screen-api/src/main/java/com/moral/api/entity/Group.java b/screen-api/src/main/java/com/moral/api/entity/Group.java
index dc0d63e..0b79a9b 100644
--- a/screen-api/src/main/java/com/moral/api/entity/Group.java
+++ b/screen-api/src/main/java/com/moral/api/entity/Group.java
@@ -22,7 +22,7 @@
*/
@Data
@EqualsAndHashCode(callSuper = false)
-@TableName("`groupMenu`")
+@TableName("`group`")
public class Group extends Model<Group> {
private static final long serialVersionUID = 1L;
diff --git a/screen-api/src/main/java/com/moral/api/entity/User.java b/screen-api/src/main/java/com/moral/api/entity/User.java
index 678ff19..cf22cd8 100644
--- a/screen-api/src/main/java/com/moral/api/entity/User.java
+++ b/screen-api/src/main/java/com/moral/api/entity/User.java
@@ -13,9 +13,7 @@
import lombok.Data;
import lombok.EqualsAndHashCode;
-
-import javax.persistence.Transient;
-
+import org.springframework.format.annotation.DateTimeFormat;
/**
* <p>
@@ -93,7 +91,8 @@
/**
* ������������
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
private Date expireTime;
/**
diff --git a/screen-api/src/main/java/com/moral/api/kafka/consumer/SecondsDataConsumer.java b/screen-api/src/main/java/com/moral/api/kafka/consumer/SecondsDataConsumer.java
index 710e4a9..6b412cd 100644
--- a/screen-api/src/main/java/com/moral/api/kafka/consumer/SecondsDataConsumer.java
+++ b/screen-api/src/main/java/com/moral/api/kafka/consumer/SecondsDataConsumer.java
@@ -19,7 +19,7 @@
* @Date 2021/6/15 14:49
* @Version TODO
**/
-@Component
+//@Component
public class SecondsDataConsumer implements ConsumerSeekAware {
@KafkaListener(topics = "test",groupId = "SecondsDataGroup3")
diff --git a/screen-api/src/main/java/com/moral/api/service/GroupMenuService.java b/screen-api/src/main/java/com/moral/api/service/GroupMenuService.java
index 45edad9..70d23fb 100644
--- a/screen-api/src/main/java/com/moral/api/service/GroupMenuService.java
+++ b/screen-api/src/main/java/com/moral/api/service/GroupMenuService.java
@@ -16,7 +16,9 @@
*/
public interface GroupMenuService extends IService<GroupMenu> {
+ //������������
void allotMenus(Map<String, Object> parameters);
+ //���������������������������������������
List<Integer> getMenusIds(Integer groupId);
}
diff --git a/screen-api/src/main/java/com/moral/api/service/GroupService.java b/screen-api/src/main/java/com/moral/api/service/GroupService.java
index 02c1ea8..cde76b5 100644
--- a/screen-api/src/main/java/com/moral/api/service/GroupService.java
+++ b/screen-api/src/main/java/com/moral/api/service/GroupService.java
@@ -18,12 +18,19 @@
*/
public interface GroupService extends IService<Group> {
+ //���������������������
Map<String, Object> addGroup(Group group);
- void deleteGroup(Group group);
+ //���������������������
+ void deleteGroup(Integer id);
+ //���������������������
Map<String, Object> updateGroup(Group group);
+ //���������������������������
Page<Group> selectGroups(Map<String, Object> parameters);
+ //���������������������������
+ List<Map<String, Object>> getGroupIds(Integer userId);
+
}
diff --git a/screen-api/src/main/java/com/moral/api/service/UserGroupService.java b/screen-api/src/main/java/com/moral/api/service/UserGroupService.java
index 4bf9c24..8743a60 100644
--- a/screen-api/src/main/java/com/moral/api/service/UserGroupService.java
+++ b/screen-api/src/main/java/com/moral/api/service/UserGroupService.java
@@ -1,6 +1,5 @@
package com.moral.api.service;
-import java.util.List;
import java.util.Map;
import com.moral.api.entity.UserGroup;
@@ -16,7 +15,7 @@
*/
public interface UserGroupService extends IService<UserGroup> {
+ //���������������������������
void allotGroups(Map<String, Object> parameters);
- List<Integer> getGroupIds(Integer userId);
}
diff --git a/screen-api/src/main/java/com/moral/api/service/UserService.java b/screen-api/src/main/java/com/moral/api/service/UserService.java
index 5680a37..90e5581 100644
--- a/screen-api/src/main/java/com/moral/api/service/UserService.java
+++ b/screen-api/src/main/java/com/moral/api/service/UserService.java
@@ -20,18 +20,28 @@
*/
public interface UserService extends IService<User> {
+ //������
Map<String, Object> login(Map<String, Object> parameters);
+ //������token������������������
+ Map<String,Object> getUserInfo(String token);
+
+ //������������
Map<String, Object> getMenus(Map<String, Object> parameters);
+ //������������
Map<String, Object> addUser(User user);
- void deleteUser(User user);
+ //������������
+ void deleteUser(Integer userId);
+ //������������
Map<String, Object> updateUser(User user);
+ //������������������
Page<User> selectUsers(Map<String, Object> parameters);
+ //������������������������������������
UserBO selectUserInfo(Map<String, Object> parameters);
}
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/GroupMenuServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/GroupMenuServiceImpl.java
index 7ddf506..ec6709b 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/GroupMenuServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/GroupMenuServiceImpl.java
@@ -20,6 +20,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
@@ -62,7 +63,7 @@
deleteWrapper.eq("group_id", groupId).eq("channel_key", Constants.WEB_CHANNEL);
groupMenuMapper.delete(deleteWrapper);
List<String> menus = new ArrayList<>();
- if (menuIds != null && !menuIds.isEmpty()) {
+ if (!ObjectUtils.isEmpty(menuIds)) {
menuIds.forEach(menuId -> {
menus.add(menuMapper.selectById(menuId).getName());
GroupMenu groupMenu = new GroupMenu();
@@ -74,10 +75,9 @@
});
}
-
//������
String groupName = groupMapper.selectById((Integer) parameters.get("groupId")).getGroupName();
- String content = "���������" + groupName + "������������������" + menus.toString();
+ String content = "���������" + groupName + "������������������" + menus;
operationLogUtils.insertLog(request, content, Constants.UPDATE_OPERATE_TYPE);
}
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/GroupServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/GroupServiceImpl.java
index f03442c..166a709 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/GroupServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/GroupServiceImpl.java
@@ -2,6 +2,7 @@
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -80,21 +81,22 @@
}
@Override
- public void deleteGroup(Group group) {
+ public void deleteGroup(Integer id) {
//������������group
- group.setIsDelete(Constants.DELETE);
- groupMapper.updateById(group);
+ UpdateWrapper<Group> updateWrapper = new UpdateWrapper<>();
+ updateWrapper.eq("id", id).set("is_delete", Constants.DELETE);
+ groupMapper.update(null, updateWrapper);
//������group_menu
UpdateWrapper<GroupMenu> deleteGroupWrapper = new UpdateWrapper<>();
- deleteGroupWrapper.eq("group_id", group.getId());
+ deleteGroupWrapper.eq("group_id", id);
groupMenuMapper.delete(deleteGroupWrapper);
//������user_group
UpdateWrapper<UserGroup> deleteUserGroupWrapper = new UpdateWrapper<>();
- deleteUserGroupWrapper.eq("group_id", group.getId());
+ deleteUserGroupWrapper.eq("group_id", id);
userGroupMapper.delete(deleteUserGroupWrapper);
//������
HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
- String content = "���������������" + group.getGroupName();
+ String content = "���������������" + groupMapper.selectById(id).getGroupName();
operationLogUtils.insertLog(request, content, Constants.DELETE_OPERATE_TYPE);
}
@@ -136,7 +138,8 @@
Integer orgId = (Integer) orgInfo.get("id");
QueryWrapper<Group> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("organization_id", orgId)
- .eq("is_delete", Constants.NOT_DELETE);
+ .eq("is_delete", Constants.NOT_DELETE)
+ .ne("group_name", "admin");
Object order = parameters.get("order");
Object orderType = parameters.get("orderType");
Object groupName = parameters.get("groupName");
@@ -145,18 +148,9 @@
queryWrapper.like("group_name", groupName);
}
- //������������
- if (!parameters.containsKey("page")) {
- parameters.put("page", 0);
- }
- if (!parameters.containsKey("size")) {
- parameters.put("size", 10);
- }
-
int page = Integer.parseInt(parameters.get("page").toString());
int size = Integer.parseInt(parameters.get("size").toString());
Page<Group> pageData = new Page<>(page, size);
- //������������,������id������
//������������,������create_time������
if (order != null && orderType != null) {
if (Constants.ORDER_ASC.equals(orderType)) {
@@ -171,4 +165,10 @@
return pageData;
}
+ @Override
+ public List<Map<String, Object>> getGroupIds(Integer userId) {
+ Map<String, Object> params = new HashMap<>();
+ params.put("userId", userId);
+ return groupMapper.selectUserGroup(params);
+ }
}
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/UserGroupServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/UserGroupServiceImpl.java
index 4515798..bcdc290 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/UserGroupServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/UserGroupServiceImpl.java
@@ -5,7 +5,6 @@
import java.util.Map;
import java.util.Objects;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.moral.api.entity.UserGroup;
import com.moral.api.mapper.GroupMapper;
@@ -20,6 +19,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
@@ -62,7 +62,7 @@
deleteWrapper.eq("user_id", userId);
userGroupMapper.delete(deleteWrapper);
List<String> groups = new ArrayList<>();
- if (groupIds != null && !groupIds.isEmpty()) {
+ if (!ObjectUtils.isEmpty(groupIds)) {
groupIds.forEach(groupId -> {
groups.add(groupMapper.selectById(groupId).getGroupName());
UserGroup userGroup = new UserGroup();
@@ -75,17 +75,7 @@
//������
String account = userMapper.selectById((Integer) parameters.get("userId")).getAccount();
- String content = "������������" + account + "���������������" + groups.toString();
+ String content = "������������" + account + "���������������" + groups;
operationLogUtils.insertLog(request, content, Constants.UPDATE_OPERATE_TYPE);
- }
-
- @Override
- public List<Integer> getGroupIds(Integer userId) {
- QueryWrapper<UserGroup> queryWrapper = new QueryWrapper<>();
- queryWrapper.eq("user_id", userId).eq("is_delete", Constants.NOT_DELETE);
- List<UserGroup> userGroups = userGroupMapper.selectList(queryWrapper);
- List<Integer> groupIds = new ArrayList<>();
- userGroups.forEach(userGroup -> groupIds.add(userGroup.getGroupId()));
- return groupIds;
}
}
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
index 9a82667..12dad29 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
@@ -1,9 +1,11 @@
package com.moral.api.service.impl;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
@@ -57,6 +59,7 @@
* @since 2021-03-09
*/
@Service
+@Slf4j
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Autowired
@@ -76,7 +79,6 @@
@Value("${AES.KEY}")
private String AESKey;
-
@Override
public UserBO selectUserInfo(Map<String, Object> parameters) {
@@ -153,14 +155,12 @@
try {
//������token������������redis
String token = TokenUtils.getToken(userBo.getId().toString(), userInfo);
- Map<String, Object> data = new HashMap<>();
- data.put("token", token);
- data.put("user", userInfo);
- result.put("data", data);
+ result.put("token", token);
} catch (Exception e) {
log.error("token���������������" + e.getMessage());
result.put("code", ResponseCodeEnum.TOKEN_CREATE_ERROR.getCode());
result.put("msg", ResponseCodeEnum.TOKEN_CREATE_ERROR.getMsg());
+ return result;
}
//������
HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
@@ -172,6 +172,12 @@
userLog.setContent("������������������" + userBo.getAccount());
userLogMapper.insert(userLog);
return result;
+ }
+
+ @Override
+ public Map<String, Object> getUserInfo(String token) {
+ Map<String, Object> userInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
+ return userInfo;
}
@Override
@@ -195,10 +201,10 @@
oneMenu.forEach(o -> {
Map<String, Object> menuMap = new LinkedHashMap<>();
menuMap.put("id", o.getId());
- menuMap.put("name", o.getName());
+ menuMap.put("label", o.getName());
menuMap.put("url", o.getUrl());
menuMap.put("icon", o.getIcon());
- menuMap.put("child", getMenusByRecursion(o, allMenus));
+ menuMap.put("children", getMenusByRecursion(o, allMenus));
newList.add(menuMap);
});
resultMap.put("menus", newList);
@@ -242,24 +248,25 @@
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("account", user.getAccount()).eq("is_delete", Constants.NOT_DELETE);
//������������������������
- if (user.selectOne(queryWrapper) != null) {
+ if (user.selectCount(queryWrapper) > 0) {
result.put("code", ResponseCodeEnum.ACCOUNT_EXIST.getCode());
result.put("msg", ResponseCodeEnum.ACCOUNT_EXIST.getMsg());
return result;
}
- //������������������
+ //������������
if (!RegexUtils.checkAccount(user.getAccount())) {
result.put("code", ResponseCodeEnum.ACCOUNT_INVALID.getCode());
result.put("msg", ResponseCodeEnum.ACCOUNT_INVALID.getMsg());
return result;
}
- //������������������
- if (user.getEmail() != null && !RegexUtils.checkEmail(user.getEmail())) {
+
+ //������������
+ if (!ObjectUtils.isEmpty(user.getEmail()) && !RegexUtils.checkEmail(user.getEmail())) {
result.put("code", ResponseCodeEnum.EMAIL_INVALID.getCode());
result.put("msg", ResponseCodeEnum.EMAIL_INVALID.getMsg());
return result;
}
- //������������������
+ //������������
String password = user.getPassword();
//������������
password = AESUtils.decrypt(password, AESKey);
@@ -268,8 +275,8 @@
result.put("msg", ResponseCodeEnum.PASSWORD_INVALID.getMsg());
return result;
}
- //���������������������
- if (user.getMobile() != null && !RegexUtils.checkMobile(user.getMobile())) {
+ //���������������
+ if (!ObjectUtils.isEmpty(user.getMobile()) && !RegexUtils.checkMobile(user.getMobile())) {
result.put("code", ResponseCodeEnum.MOBILE_INVALID.getCode());
result.put("msg", ResponseCodeEnum.MOBILE_INVALID.getMsg());
return result;
@@ -304,19 +311,20 @@
@Override
@Transactional
- public void deleteUser(User user) {
- String userId = user.getId().toString();
+ public void deleteUser(Integer userId) {
+ User user = userMapper.selectById(userId);
//������������user
- user.setIsDelete(Constants.DELETE);
- userMapper.updateById(user);
+ UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
+ updateWrapper.eq("id", userId).set("is_delete", Constants.DELETE);
+ userMapper.update(null, updateWrapper);
//������user_group
UpdateWrapper<UserGroup> deleteWrapper = new UpdateWrapper<>();
deleteWrapper.eq("user_id", userId);
userGroupMapper.delete(deleteWrapper);
- //������redis
- if (TokenUtils.hHasKey(userId)) {
- String token = TokenUtils.hget(userId).toString();
- TokenUtils.destoryToken(userId, token);
+ //������redis
+ if (TokenUtils.hHasKey(userId.toString())) {
+ String token = TokenUtils.hget(userId.toString()).toString();
+ TokenUtils.destoryToken(userId.toString(), token);
}
//������
HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
@@ -330,25 +338,36 @@
HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
String token = request.getHeader("token");
+ Map<String, Object> result = new HashMap<>();
//���������������
Map<String, Object> update = JSONObject.parseObject(JSON.toJSONString(user), Map.class);
- Map<String, Object> result = new HashMap<>();
Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
User beforeUser = userMapper.selectById(user.getId());
Map<String, Object> before = JSONObject.parseObject(JSON.toJSONString(beforeUser), Map.class);
- String account = beforeUser.getAccount();
+ /*String account = beforeUser.getAccount();
//account������������
- user.setAccount(account);
+ user.setAccount(account);*/
+ System.out.println(user);
+ if (!ObjectUtils.isEmpty(user.getAccount())) {
+ QueryWrapper<User> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("is_delete", Constants.NOT_DELETE).eq("account", user.getAccount());
+ if (userMapper.selectCount(queryWrapper) > 0) {
+ result.put("code", ResponseCodeEnum.ACCOUNT_EXIST.getCode());
+ result.put("msg", ResponseCodeEnum.ACCOUNT_EXIST.getMsg());
+ return result;
+ }
+ }
//������������
- if (user.getEmail() != null && !RegexUtils.checkEmail(user.getEmail())) {
+ if (!ObjectUtils.isEmpty(user.getEmail()) && !RegexUtils.checkEmail(user.getEmail())) {
result.put("code", ResponseCodeEnum.EMAIL_INVALID.getCode());
result.put("msg", ResponseCodeEnum.EMAIL_INVALID.getMsg());
return result;
}
//������������
String password = user.getPassword();
- if (password != null) {
+ System.out.println("password==" + password);
+ if (!ObjectUtils.isEmpty(password)) {
//������������
password = AESUtils.decrypt(password, AESKey);
if (!RegexUtils.checkPassword(password)) {
@@ -359,7 +378,7 @@
}
//���������������������
- if (user.getMobile() != null && !RegexUtils.checkMobile(user.getMobile())) {
+ if (!ObjectUtils.isEmpty(user.getMobile()) && !RegexUtils.checkMobile(user.getMobile())) {
result.put("code", ResponseCodeEnum.MOBILE_INVALID.getCode());
result.put("msg", ResponseCodeEnum.MOBILE_INVALID.getMsg());
return result;
@@ -404,7 +423,6 @@
}
}
operationLogUtils.insertLog(request, content.toString(), Constants.UPDATE_OPERATE_TYPE);
-
return result;
}
@@ -417,7 +435,8 @@
Map<String, Object> orgInfo = (Map<String, Object>) currentUserInfo.get("organization");
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("organization_id", orgInfo.get("id"))
- .eq("is_delete", Constants.NOT_DELETE);
+ .eq("is_delete", Constants.NOT_DELETE)
+ .eq("is_admin", false);
Object order = parameters.get("order");
Object orderType = parameters.get("orderType");
Object account = parameters.get("account");
@@ -442,8 +461,8 @@
queryWrapper.like("wechat", wechat);
}
- Integer page = (Integer) parameters.get("page");
- Integer size = (Integer) parameters.get("size");
+ int page = Integer.parseInt(parameters.get("page").toString());
+ int size = Integer.parseInt(parameters.get("size").toString());
Page<User> pageData = new Page<>(page, size);
//������������,������create_time������
if (order != null && orderType != null) {
diff --git a/screen-api/src/main/resources/application-dev.yml b/screen-api/src/main/resources/application-dev.yml
index 3ec8fff..e8c8b6b 100644
--- a/screen-api/src/main/resources/application-dev.yml
+++ b/screen-api/src/main/resources/application-dev.yml
@@ -13,8 +13,10 @@
spring:
profiles:
active: dev
+ include:
+ moduleFormColumn
application:
- name: screen-manage
+ name: screen-api
redis:
host: r-bp1xdlb9wfc6zt0msp.redis.rds.aliyuncs.com
port: 6379
@@ -90,14 +92,11 @@
enable:
auto:
commit: false
- group:
- id: test
- servers: 192.168.0.191:9092
+ servers: 172.16.44.65:9092,172.16.44.67:9092,172.16.44.66:9092
session:
timeout: 6000
- topic: test_topic
zookeeper:
- connect: 192.168.0.16:2181,192.168.0.17:2181,192.168.0.18:2181
+ connect: 172.16.44.65:2181,172.16.44.67:2181,172.16.44.66:2181
producer:
batch:
size: 4096
@@ -105,7 +104,7 @@
memory: 40960
linger: 1
retries: 0
- servers: 192.168.0.16:9092,192.168.0.17:9092,192.168.0.18:9092
+ servers: 172.16.44.65:9092,172.16.44.67:9092,172.16.44.66:9092
mvc:
interceptor:
exclude:
diff --git a/screen-api/src/main/resources/mapper/GroupMapper.xml b/screen-api/src/main/resources/mapper/GroupMapper.xml
index 1123a96..36edc9d 100644
--- a/screen-api/src/main/resources/mapper/GroupMapper.xml
+++ b/screen-api/src/main/resources/mapper/GroupMapper.xml
@@ -12,11 +12,6 @@
<result column="is_delete" property="isDelete"/>
</resultMap>
- <resultMap id="GroupResultMap" type="java.util.LinkedHashMap">
- <id column="id" property="id"/>
- <result column="group_name" property="groupName"/>
- </resultMap>
-
<select id="selectUserGroup" resultMap="GroupResultMap">
SELECT g.id,g.group_name
FROM `group` g,`user_group` ug
diff --git a/screen-api/src/main/resources/mapper/GroupMenuMapper.xml b/screen-api/src/main/resources/mapper/GroupMenuMapper.xml
index 5930463..f0a661b 100644
--- a/screen-api/src/main/resources/mapper/GroupMenuMapper.xml
+++ b/screen-api/src/main/resources/mapper/GroupMenuMapper.xml
@@ -2,16 +2,16 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.moral.api.mapper.GroupMenuMapper">
- <!-- ������������������������ -->
- <resultMap id="BaseResultMap" type="com.moral.api.entity.GroupMenu">
- <id column="id" property="id" />
- <result column="group_id" property="groupId" />
- <result column="menu_id" property="menuId" />
- <result column="channel_key" property="channelKey" />
- <result column="organization_id" property="organizationId" />
- <result column="create_time" property="createTime" />
- <result column="update_time" property="updateTime" />
- <result column="is_delete" property="isDelete" />
- </resultMap>
+ <!-- ������������������������ -->
+ <resultMap id="BaseResultMap" type="com.moral.api.entity.GroupMenu">
+ <id column="id" property="id"/>
+ <result column="group_id" property="groupId"/>
+ <result column="menu_id" property="menuId"/>
+ <result column="channel_key" property="channelKey"/>
+ <result column="organization_id" property="organizationId"/>
+ <result column="create_time" property="createTime"/>
+ <result column="update_time" property="updateTime"/>
+ <result column="is_delete" property="isDelete"/>
+ </resultMap>
</mapper>
\ No newline at end of file
diff --git a/screen-api/src/main/resources/mapper/MenuMapper.xml b/screen-api/src/main/resources/mapper/MenuMapper.xml
index bfe661a..2634fdb 100644
--- a/screen-api/src/main/resources/mapper/MenuMapper.xml
+++ b/screen-api/src/main/resources/mapper/MenuMapper.xml
@@ -20,7 +20,7 @@
</sql>
<select id="selectUserMenu" resultMap="BaseResultMap">
- select
+ SELECT
<include refid="Base_Column_List"/>
FROM `user_group` ug,`group_menu` gm,`menu` m
WHERE ug.user_id = #{userId}
@@ -33,14 +33,13 @@
</select>
<select id="selectOrganizationMenu" resultMap="BaseResultMap">
- select
- <include refid="Base_Column_List"/>
- FROM `menu` m, `organization_menu` om
- WHERE om.organization_id = #{orgId}
- AND m.id = om.menu_id
- AND om.channel_key = 0
- AND om.menu_id = m.id
- AND om.is_delete = 0
+ SELECT
+ DISTINCT m.id, m.name, m.url, m.icon, m.parent_id, m.order, m.create_time, m.update_time
+ FROM `menu` m, `group_menu` gm
+ WHERE gm.organization_id = #{orgId}
+ AND m.id = gm.menu_id
+ AND gm.channel_key = 0
+ AND gm.is_delete = 0
AND m.is_delete = 0
</select>
</mapper>
\ No newline at end of file
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 a56abbd..535af51 100644
--- a/screen-common/src/main/java/com/moral/constant/Constants.java
+++ b/screen-common/src/main/java/com/moral/constant/Constants.java
@@ -120,5 +120,10 @@
* */
public static final String UN_ADJUST = "unadjust";
+ /*
+ * ���������������������
+ * */
+ public static final String DEVICE_STATE_OFFLINE = "4";
+
}
diff --git a/screen-common/src/main/java/com/moral/constant/KafkaConstants.java b/screen-common/src/main/java/com/moral/constant/KafkaConstants.java
index 8f904d1..e1d6e80 100644
--- a/screen-common/src/main/java/com/moral/constant/KafkaConstants.java
+++ b/screen-common/src/main/java/com/moral/constant/KafkaConstants.java
@@ -5,15 +5,25 @@
/**
* ������������������
*/
- public static final String TOPIC_MINUTE = "test_topic";
+ public static final String TOPIC_MINUTE = "minute";
/**
* ������������������
*/
public static final String TOPIC_HOUR = "hour";
+ /*
+ * ���������������
+ * */
+ public static final String TOPIC_SECOND = "test";
+
/**
- * ���������
+ * ������������������������������������������
*/
- public static final String GROUP_ID = "test";
+ public static final String GROUP_ID_INSERT = "insert";
+
+ /**
+ * ���������������������������������
+ */
+ public static final String GROUP_ID_STATE = "state";
}
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 dd34339..05e95cd 100644
--- a/screen-common/src/main/java/com/moral/constant/RedisConstants.java
+++ b/screen-common/src/main/java/com/moral/constant/RedisConstants.java
@@ -32,19 +32,31 @@
/*
* ������������������
* */
- public static final String DEVICE = "device";
+ public static final String DEVICE = "device_";
/*
- * ������������������������
+ * ���������������������������������������������������������������
+ * ���������������hash
+ * key���mac
+ * value���Device
+ * ���������������Map<String,Device>
* */
- public static final String STATE = "state";
+ public static final String DEVICE_INFO = "device_alarm_info";
/*
- * ���������������������������������������������������������������
- * ���������������hash
- * key���mac
- * value���Device
- * ���������������Map<String,Device>
- * */
- public static final String DEVICE_INFO = "device_alarm_info";
+ * ������������������������
+ * */
+ public static final String ADJUST = "adjust_";
+
+ /*
+ * ������������������
+ * */
+ public static final String DEVICE_DATA = "data_";
+
+ /*
+ * ������������������
+ * */
+ public static final String AQI_DATA = "aqi_";
+
+
}
diff --git a/screen-common/src/main/java/com/moral/util/DateUtils.java b/screen-common/src/main/java/com/moral/util/DateUtils.java
index cbc63a2..f5ecd8a 100644
--- a/screen-common/src/main/java/com/moral/util/DateUtils.java
+++ b/screen-common/src/main/java/com/moral/util/DateUtils.java
@@ -67,6 +67,14 @@
* ������������(HH:mm:ss)
*/
public static final String HH_mm_ss_EN = "HH:mm:ss";
+ /*
+ * ������������(yyyy-MM-dd HH:mm)
+ * */
+ public static final String yyyy_MM_dd_HH_mm_EN = "yyyy-MM-dd HH:mm";
+ /*
+ * ������������(yyyy-MM-dd HH)
+ * */
+ public static final String yyyy_MM_dd_HH_EN = "yyyy-MM-dd HH";
/**
* DateFormat������
*/
@@ -443,14 +451,14 @@
}
/**
- * @Description: ������������������day���������������
- * @Param: [date, day]
- * @return: java.util.Date
- * @Author: ���������
- * @Date: 2021/3/30
- */
+ * @Description: ������������������day���������������
+ * @Param: [date, day]
+ * @return: java.util.Date
+ * @Author: ���������
+ * @Date: 2021/3/30
+ */
public static Date getDateOfDay(Date date, int day) {
- if(date==null)
+ if (date == null)
return null;
Calendar now = Calendar.getInstance(TimeZone.getDefault());
now.setTime(date);
@@ -1293,11 +1301,23 @@
return date;
}
+ //������������������������������������
+ public static Date convertDate(Date date) {
+ String dateString = dateToDateString(date, yyyy_MM_dd_HH_mm_EN);
+ return getDate(dateString, yyyy_MM_dd_HH_mm_EN);
+ }
+
+ //���������������������������������
+ public static Date dataToTimeStampTime(Date time, String dateFormat) {
+ String dateString = dateToDateString(time, dateFormat);
+ try {
+ return getDateFormat(dateFormat).parse(dateString);
+ } catch (ParseException e) {
+ throw new RuntimeException(e);
+ }
+ }
public static void main(String[] args) throws InterruptedException {
- Date date1 = new Date();
- Thread.sleep(1000);
- Date date2 = new Date();
- System.out.println(DateUtils.compareDateStr(date1, date2));
+ System.out.println(new Date().getTime());
}
}
diff --git a/screen-job/src/main/java/com/moral/api/config/redis/RedisConfig.java b/screen-job/src/main/java/com/moral/api/config/redis/RedisConfig.java
new file mode 100644
index 0000000..1b34bb0
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/config/redis/RedisConfig.java
@@ -0,0 +1,67 @@
+package com.moral.api.config.redis;
+
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+
+@Configuration
+public class RedisConfig {
+
+ @Bean(name = "redisTemplate")
+ @ConditionalOnMissingBean(StringRedisTemplate.class) //������������������ ���������������������RedisTemplate ������������ ������������������
+ public RedisTemplate<String, Object> stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
+ RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
+ redisTemplate.setConnectionFactory(redisConnectionFactory);
+ Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
+ ObjectMapper objectMapper = new ObjectMapper();
+ objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
+ objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
+ jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
+ StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
+ // key������String������������������
+ redisTemplate.setKeySerializer(stringRedisSerializer);
+ // hash���key���������String������������������
+ redisTemplate.setHashKeySerializer(stringRedisSerializer);
+ // valuevalue������jackson���������������
+ redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
+ // hash���value������jackson���������������
+ redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
+ redisTemplate.afterPropertiesSet();
+ redisTemplate.afterPropertiesSet();
+ return redisTemplate;
+ }
+
+ public RedisTemplate createRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
+ RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
+ redisTemplate.setConnectionFactory(redisConnectionFactory);
+
+ Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
+ ObjectMapper objectMapper = new ObjectMapper();
+ objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
+ objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
+ jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
+
+ StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
+ // key������String������������������
+ redisTemplate.setKeySerializer(stringRedisSerializer);
+ // hash���key���������String������������������
+ redisTemplate.setHashKeySerializer(stringRedisSerializer);
+ // valuevalue������jackson���������������
+ redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
+ // hash���value������jackson���������������
+ redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
+ redisTemplate.afterPropertiesSet();
+ redisTemplate.afterPropertiesSet();
+ return redisTemplate;
+ }
+}
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
deleted file mode 100644
index fc087e1..0000000
--- a/screen-job/src/main/java/com/moral/api/config/xxl/XxlJobConfig.java
+++ /dev/null
@@ -1,135 +0,0 @@
-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/config/xxljob/XxlJobConfig.java b/screen-job/src/main/java/com/moral/api/config/xxljob/XxlJobConfig.java
new file mode 100644
index 0000000..ccb076d
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/config/xxljob/XxlJobConfig.java
@@ -0,0 +1,68 @@
+package com.moral.api.config.xxljob;
+
+
+import lombok.extern.slf4j.Slf4j;
+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.job")
+@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;
+ }
+
+ /**
+ * ������������������������������������������������������ "spring-cloud-commons" ��������� "InetUtils" ������������������������IP���
+ *
+ * 1������������������
+ * <dependency>
+ * <groupId>org.springframework.cloud</groupId>
+ * <artifactId>spring-cloud-commons</artifactId>
+ * <version>${version}</version>
+ * </dependency>
+ *
+ * 2������������������������������������������
+ * spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
+ *
+ * 3���������IP
+ * String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
+ */
+}
diff --git a/screen-job/src/main/java/com/moral/api/entity/CityAqiConfig.java b/screen-job/src/main/java/com/moral/api/entity/CityAqiConfig.java
new file mode 100644
index 0000000..4c95fa0
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/entity/CityAqiConfig.java
@@ -0,0 +1,50 @@
+package com.moral.api.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * ������������aqi������������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-06-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class CityAqiConfig extends Model<CityAqiConfig> {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ������id
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ /**
+ * ������code
+ */
+ private String cityCode;
+
+ /**
+ * ������������
+ */
+ private String cityName;
+
+ /**
+ * ���������������������������id
+ */
+ private Integer cityId;
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/entity/Device.java b/screen-job/src/main/java/com/moral/api/entity/Device.java
new file mode 100644
index 0000000..842a27f
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/entity/Device.java
@@ -0,0 +1,132 @@
+package com.moral.api.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * ���������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-06-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class Device extends Model<Device> {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ������id
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ /**
+ * ������������
+ */
+ private String name;
+
+ /**
+ * mac���
+ */
+ private String mac;
+
+ /**
+ * ������������
+ */
+ private String address;
+
+ /**
+ * ������
+ */
+ private Double longitude;
+
+ /**
+ * ������
+ */
+ private Double latitude;
+
+ /**
+ * ���������������������������������
+ */
+ private String state;
+
+ /**
+ * ���������id���������������������������������manage_account
+ */
+ private String operateIds;
+
+ /**
+ * ������id
+ */
+ private Integer monitorPointId;
+
+ /**
+ * ������id
+ */
+ private Integer organizationId;
+
+ /**
+ * ������������id
+ */
+ private Integer deviceVersionId;
+
+ /**
+ * ���������������������������
+ */
+ private String profession;
+
+ /**
+ * ���������������1������������2������������3������������������������������������
+ */
+ private String tech;
+
+ /**
+ * ������������������������������������
+ */
+ private String detector;
+
+ /**
+ * ������������������������������
+ */
+ private String purchaser;
+
+ /**
+ * ������(������)������
+ */
+ private LocalDateTime createTime;
+
+ /**
+ * ������������
+ */
+ private LocalDateTime updateTime;
+
+ /**
+ * ������������
+ */
+ private LocalDateTime installTime;
+
+ /**
+ * ������������,0���������������1���������
+ */
+ private String isDelete;
+
+ /**
+ * ������������������������
+ */
+ private String extend;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return this.id;
+ }
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/entity/HistoryAqi.java b/screen-job/src/main/java/com/moral/api/entity/HistoryAqi.java
new file mode 100644
index 0000000..95327da
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/entity/HistoryAqi.java
@@ -0,0 +1,45 @@
+package com.moral.api.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.io.Serializable;
+import java.util.Date;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * ������aqi���������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-06-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class HistoryAqi extends Model<HistoryAqi> {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ������code
+ */
+ private String cityCode;
+
+ /**
+ * ������
+ */
+ private Date time;
+
+ /**
+ * ������
+ */
+ private String value;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return null;
+ }
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/entity/HistoryDaily.java b/screen-job/src/main/java/com/moral/api/entity/HistoryDaily.java
new file mode 100644
index 0000000..b24913d
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/entity/HistoryDaily.java
@@ -0,0 +1,36 @@
+package com.moral.api.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.io.Serializable;
+import java.util.Date;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author moral
+ * @since 2021-06-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class HistoryDaily extends Model<HistoryDaily> {
+
+ private static final long serialVersionUID = 1L;
+
+ private String mac;
+
+ private Date time;
+
+ private String value;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return null;
+ }
+
+}
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
deleted file mode 100644
index 9f0cf69..0000000
--- a/screen-job/src/main/java/com/moral/api/jobHandler/TestHandler.java
+++ /dev/null
@@ -1,21 +0,0 @@
-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/mapper/CityAqiConfigMapper.java b/screen-job/src/main/java/com/moral/api/mapper/CityAqiConfigMapper.java
new file mode 100644
index 0000000..825f5ac
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/mapper/CityAqiConfigMapper.java
@@ -0,0 +1,16 @@
+package com.moral.api.mapper;
+
+import com.moral.api.entity.CityAqiConfig;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * ������������aqi������������ Mapper ������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-06-15
+ */
+public interface CityAqiConfigMapper extends BaseMapper<CityAqiConfig> {
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/mapper/DeviceMapper.java b/screen-job/src/main/java/com/moral/api/mapper/DeviceMapper.java
new file mode 100644
index 0000000..4bb2d15
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/mapper/DeviceMapper.java
@@ -0,0 +1,16 @@
+package com.moral.api.mapper;
+
+import com.moral.api.entity.Device;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * ��������� Mapper ������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-06-22
+ */
+public interface DeviceMapper extends BaseMapper<Device> {
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/mapper/HistoryAqiMapper.java b/screen-job/src/main/java/com/moral/api/mapper/HistoryAqiMapper.java
new file mode 100644
index 0000000..87650be
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/mapper/HistoryAqiMapper.java
@@ -0,0 +1,17 @@
+package com.moral.api.mapper;
+
+import com.moral.api.entity.HistoryAqi;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * ������aqi��������� Mapper ������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-06-15
+ */
+public interface HistoryAqiMapper extends BaseMapper<HistoryAqi> {
+
+}
+
diff --git a/screen-job/src/main/java/com/moral/api/mapper/HistoryDailyMapper.java b/screen-job/src/main/java/com/moral/api/mapper/HistoryDailyMapper.java
new file mode 100644
index 0000000..0159fde
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/mapper/HistoryDailyMapper.java
@@ -0,0 +1,21 @@
+package com.moral.api.mapper;
+
+import java.util.List;
+import java.util.Map;
+
+import com.moral.api.entity.HistoryDaily;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * Mapper ������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-06-11
+ */
+public interface HistoryDailyMapper extends BaseMapper<HistoryDaily> {
+
+ void insertHistoryDaily(List<HistoryDaily> list);
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/mapper/HistoryFiveMinutelyMapper.java b/screen-job/src/main/java/com/moral/api/mapper/HistoryFiveMinutelyMapper.java
new file mode 100644
index 0000000..40c1caa
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/mapper/HistoryFiveMinutelyMapper.java
@@ -0,0 +1,15 @@
+package com.moral.api.mapper;
+
+
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+public interface HistoryFiveMinutelyMapper {
+
+ void createTable(String timeUnits);
+
+ void insertHistoryFiveMinutely(@Param("list") List<Map<String, Object>> list, @Param("timeUnits") String timeUnits);
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/mapper/HistoryMinutelyMapper.java b/screen-job/src/main/java/com/moral/api/mapper/HistoryMinutelyMapper.java
new file mode 100644
index 0000000..dd466df
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/mapper/HistoryMinutelyMapper.java
@@ -0,0 +1,11 @@
+package com.moral.api.mapper;
+
+import java.util.List;
+import java.util.Map;
+
+public interface HistoryMinutelyMapper {
+
+ void createTable(String timeUnits);
+
+ List<Map<String, Object>> getHistoryFiveMinutelyData(Map<String,Object> params);
+}
diff --git a/screen-job/src/main/java/com/moral/api/service/CityAqiConfigService.java b/screen-job/src/main/java/com/moral/api/service/CityAqiConfigService.java
new file mode 100644
index 0000000..26e6691
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/CityAqiConfigService.java
@@ -0,0 +1,20 @@
+package com.moral.api.service;
+
+import java.util.List;
+
+import com.moral.api.entity.CityAqiConfig;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * ������������aqi������������ ���������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-06-15
+ */
+public interface CityAqiConfigService extends IService<CityAqiConfig> {
+
+ List<CityAqiConfig> getCityAqiConfigs();
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/service/DeviceService.java b/screen-job/src/main/java/com/moral/api/service/DeviceService.java
new file mode 100644
index 0000000..f33824e
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/DeviceService.java
@@ -0,0 +1,20 @@
+package com.moral.api.service;
+
+import com.moral.api.entity.Device;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * ��������� ���������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-06-22
+ */
+public interface DeviceService extends IService<Device> {
+
+ void judgeOffLineDevice();
+
+ void updateDeviceState(Device device);
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/service/HistoryAqiService.java b/screen-job/src/main/java/com/moral/api/service/HistoryAqiService.java
new file mode 100644
index 0000000..078a270
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/HistoryAqiService.java
@@ -0,0 +1,10 @@
+package com.moral.api.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.moral.api.entity.HistoryAqi;
+
+public interface HistoryAqiService extends IService<HistoryAqi> {
+
+ void insertHistoryAqi();
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/service/HistoryDailyService.java b/screen-job/src/main/java/com/moral/api/service/HistoryDailyService.java
new file mode 100644
index 0000000..b08dd7b
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/HistoryDailyService.java
@@ -0,0 +1,21 @@
+package com.moral.api.service;
+
+import java.util.List;
+import java.util.Map;
+
+import com.moral.api.entity.HistoryDaily;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * ���������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-06-11
+ */
+public interface HistoryDailyService extends IService<HistoryDaily> {
+
+ void insertHistoryDaily(List<HistoryDaily> list);
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/service/HistoryFiveMinutelyService.java b/screen-job/src/main/java/com/moral/api/service/HistoryFiveMinutelyService.java
new file mode 100644
index 0000000..23ad4ef
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/HistoryFiveMinutelyService.java
@@ -0,0 +1,9 @@
+package com.moral.api.service;
+
+public interface HistoryFiveMinutelyService {
+
+ void createTable(String timeUnits);
+
+ void insertHistoryFiveMinutely();
+
+}
diff --git a/screen-job/src/main/java/com/moral/api/service/HistoryMinutelyService.java b/screen-job/src/main/java/com/moral/api/service/HistoryMinutelyService.java
new file mode 100644
index 0000000..7b614af
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/HistoryMinutelyService.java
@@ -0,0 +1,12 @@
+package com.moral.api.service;
+
+import java.util.List;
+import java.util.Map;
+
+public interface HistoryMinutelyService {
+
+ void createTable(String timeUnits);
+
+ List<Map<String, Object>> getHistoryFiveMinutelyData(Map<String, Object> params);
+
+}
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
deleted file mode 100644
index 7b34503..0000000
--- a/screen-job/src/main/java/com/moral/api/service/Test.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package com.moral.api.service;
-
-public class Test {
-}
diff --git a/screen-job/src/main/java/com/moral/api/service/impl/CityAqiConfigServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/CityAqiConfigServiceImpl.java
new file mode 100644
index 0000000..5d7aca6
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/impl/CityAqiConfigServiceImpl.java
@@ -0,0 +1,31 @@
+package com.moral.api.service.impl;
+
+import com.moral.api.entity.CityAqiConfig;
+import com.moral.api.mapper.CityAqiConfigMapper;
+import com.moral.api.service.CityAqiConfigService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ * ������������aqi������������ ���������������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-06-15
+ */
+@Service
+public class CityAqiConfigServiceImpl extends ServiceImpl<CityAqiConfigMapper, CityAqiConfig> implements CityAqiConfigService {
+
+ @Autowired
+ private CityAqiConfigMapper cityAqiConfigMapper;
+
+ @Override
+ public List<CityAqiConfig> getCityAqiConfigs() {
+ return cityAqiConfigMapper.selectList(null);
+ }
+}
diff --git a/screen-job/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
new file mode 100644
index 0000000..8850e00
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
@@ -0,0 +1,69 @@
+package com.moral.api.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.moral.api.entity.Device;
+import com.moral.api.mapper.DeviceMapper;
+import com.moral.api.service.DeviceService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.constant.Constants;
+import com.moral.constant.RedisConstants;
+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 java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * ��������� ���������������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-06-22
+ */
+@Service
+public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> implements DeviceService {
+
+ @Autowired
+ private DeviceMapper deviceMapper;
+
+ @Autowired
+ private RedisTemplate redisTemplate;
+
+ @Override
+ public void judgeOffLineDevice() {
+ QueryWrapper<Device> queryWrapper = new QueryWrapper<>();
+ queryWrapper.ne("state", Constants.DEVICE_STATE_OFFLINE);
+ //������������������������
+ List<Device> devices = deviceMapper.selectList(queryWrapper);
+ for (Device device : devices) {
+ Map<String, Object> data = getDataFromRedis(device.getMac());
+ device.setState(Constants.DEVICE_STATE_OFFLINE);
+ if (data != null && data.containsKey("DataTime")) {
+ long time = Long.parseLong(data.get("DataTime").toString());
+ //���������������������������������
+ if (DateUtils.getDateOfMin(new Date(time), 2).getTime() < new Date().getTime()) {
+ updateDeviceState(device);
+ }
+ } else {
+ updateDeviceState(device);
+ }
+ }
+ }
+
+ @Override
+ public void updateDeviceState(Device device) {
+ UpdateWrapper<Device> updateWrapper = new UpdateWrapper<>();
+ updateWrapper.eq("id", device.getId()).set("state", device.getState());
+ deviceMapper.update(null, updateWrapper);
+ }
+
+ private Map<String, Object> getDataFromRedis(String mac) {
+ return (Map<String, Object>) redisTemplate.opsForValue().get(RedisConstants.DEVICE_DATA + mac);
+ }
+}
diff --git a/screen-job/src/main/java/com/moral/api/service/impl/HistoryAqiServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/HistoryAqiServiceImpl.java
new file mode 100644
index 0000000..0fadead
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/impl/HistoryAqiServiceImpl.java
@@ -0,0 +1,77 @@
+package com.moral.api.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.moral.api.entity.CityAqiConfig;
+import com.moral.api.entity.HistoryAqi;
+import com.moral.api.mapper.HistoryAqiMapper;
+import com.moral.api.service.CityAqiConfigService;
+import com.moral.api.service.HistoryAqiService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * ������aqi��������� ���������������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-06-15
+ */
+@Service
+@Slf4j
+public class HistoryAqiServiceImpl extends ServiceImpl<HistoryAqiMapper, HistoryAqi> implements HistoryAqiService {
+
+ @Autowired
+ private HistoryAqiMapper historyAqiMapper;
+
+ @Autowired
+ private CityAqiConfigService cityAqiConfigService;
+
+ @Autowired
+ private RedisTemplate redisTemplate;
+
+ @Override
+ public void insertHistoryAqi() {
+ RestTemplate restTemplate = new RestTemplate();
+ //������aqi������������
+ List<CityAqiConfig> cityAqiConfigs = cityAqiConfigService.getCityAqiConfigs();
+ for (CityAqiConfig cityAqiConfig : cityAqiConfigs) {
+ Map<String, Object> mjMap = restTemplate.getForObject("http://sapi.7drlb.com/api/mj?cityID={1}&apiKey=aqi", Map.class, cityAqiConfig.getCityId());
+ if (ObjectUtils.isEmpty(mjMap)) {
+ continue;
+ }
+ HistoryAqi historyAqi = new HistoryAqi();
+ //city_code
+ String cityCode = cityAqiConfig.getCityCode();
+ historyAqi.setCityCode(cityCode);
+ Map<String, Object> value = new HashMap<>();
+ Map<String, Object> data = (Map<String, Object>) ((Map) mjMap.get("data")).get("aqi");
+ //������������
+ historyAqi.setTime(new Date(Long.parseLong(data.get("pubtime").toString())));
+ value.put("PM25", data.get("pm25C"));
+ value.put("PM10", data.get("pm10C"));
+ value.put("SO2", data.get("so2C"));
+ value.put("NO2", data.get("no2C"));
+ value.put("CO", data.get("coC"));
+ value.put("O3", data.get("o3C"));
+ value.put("AQI", data.get("value"));
+ //������
+ historyAqi.setValue(JSON.toJSONString(value));
+ //���������������������
+ historyAqiMapper.insert(historyAqi);
+ //������redis
+ redisTemplate.opsForHash().putAll("aqi_" + cityCode, value);
+ }
+ }
+}
diff --git a/screen-job/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java
new file mode 100644
index 0000000..07b3958
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java
@@ -0,0 +1,33 @@
+package com.moral.api.service.impl;
+
+import com.moral.api.entity.HistoryDaily;
+import com.moral.api.mapper.HistoryDailyMapper;
+import com.moral.api.service.HistoryDailyService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * ���������������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-06-11
+ */
+@Service
+public class HistoryDailyServiceImpl extends ServiceImpl<HistoryDailyMapper, HistoryDaily> implements HistoryDailyService {
+
+ @Autowired
+ private HistoryDailyMapper historyDailyMapper;
+
+ @Override
+ public void insertHistoryDaily(List<HistoryDaily> list) {
+ System.out.println(list);
+ historyDailyMapper.insertHistoryDaily(list);
+ }
+}
diff --git a/screen-job/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java
new file mode 100644
index 0000000..fb85a9d
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java
@@ -0,0 +1,64 @@
+package com.moral.api.service.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.alibaba.fastjson.JSON;
+import com.moral.api.mapper.HistoryFiveMinutelyMapper;
+import com.moral.api.service.HistoryFiveMinutelyService;
+import com.moral.api.service.HistoryMinutelyService;
+import com.moral.util.DateUtils;
+
+@Service
+public class HistoryFiveMinutelyServiceImpl implements HistoryFiveMinutelyService {
+
+ @Autowired
+ private HistoryFiveMinutelyMapper historyFiveMinutelyMapper;
+
+ @Autowired
+ private HistoryMinutelyService historyMinutelyService;
+
+ @Override
+ public void createTable(String timeUnits) {
+ historyFiveMinutelyMapper.createTable(timeUnits);
+ }
+
+ @Override
+ public void insertHistoryFiveMinutely() {
+ Map<String, Object> params = new HashMap<>();
+ //������������������������
+ Date start = DateUtils.convertDate(DateUtils.getDateOfMin(-5));
+ //������������������������
+ Date end = DateUtils.convertDate(new Date());
+ params.put("start", start);
+ params.put("end", end);
+ //���������������
+ String timeUnits = DateUtils.dateToDateString(start, DateUtils.yyyyMM_EN);
+ params.put("timeUnits", timeUnits);
+
+ //������
+
+ params.put("sensorKeys", null);
+
+ historyMinutelyService.getHistoryFiveMinutelyData(params);
+ /*List<Map<String, Object>> list = new ArrayList<>();
+ Map<String, Object> map = new HashMap<>();
+ map.put("mac", "123456");
+ Date date = new Date();
+ map.put("time", date);
+ Map<String, Object> value = new HashMap<>();
+ value.put("e1", 10);
+ value.put("e2", 20);
+ map.put("value", JSON.toJSONString(value));
+ list.add(map);*/
+
+ historyFiveMinutelyMapper.insertHistoryFiveMinutely(null, null);
+ }
+}
diff --git a/screen-job/src/main/java/com/moral/api/service/impl/HistoryMinutelyServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/HistoryMinutelyServiceImpl.java
new file mode 100644
index 0000000..730ef35
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/service/impl/HistoryMinutelyServiceImpl.java
@@ -0,0 +1,27 @@
+package com.moral.api.service.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+import com.moral.api.mapper.HistoryMinutelyMapper;
+import com.moral.api.service.HistoryMinutelyService;
+
+@Service
+public class HistoryMinutelyServiceImpl implements HistoryMinutelyService {
+
+ @Autowired
+ private HistoryMinutelyMapper historyMinutelyMapper;
+
+ @Override
+ public void createTable(String timeUnits) {
+ historyMinutelyMapper.createTable(timeUnits);
+ }
+
+ @Override
+ public List<Map<String, Object>> getHistoryFiveMinutelyData(Map<String, Object> params) {
+ return historyMinutelyMapper.getHistoryFiveMinutelyData(params);
+ }
+}
diff --git a/screen-job/src/main/java/com/moral/api/task/CreateTableTask.java b/screen-job/src/main/java/com/moral/api/task/CreateTableTask.java
new file mode 100644
index 0000000..2fab184
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/task/CreateTableTask.java
@@ -0,0 +1,52 @@
+package com.moral.api.task;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.moral.api.service.HistoryFiveMinutelyService;
+import com.moral.api.service.HistoryMinutelyService;
+import com.moral.constant.Constants;
+import com.moral.util.DateUtils;
+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 CreateTableTask {
+
+ @Autowired
+ private HistoryFiveMinutelyService historyFiveMinutelyService;
+
+ @Autowired
+ private HistoryMinutelyService historyMinutelyService;
+
+
+ //���������������������
+ @XxlJob("createHistoryMinutelyTable")
+ public ReturnT createHistoryMinutelyTable() {
+ String timeUnits = DateUtils.getDateStringOfMon(1, DateUtils.yyyyMM_EN);
+ try {
+ //������������������
+ historyMinutelyService.createTable(timeUnits);
+ //������������������
+ historyMinutelyService.createTable(timeUnits + "_" + Constants.UN_ADJUST);
+ } catch (Exception e) {
+ XxlJobHelper.log(e.getMessage());
+ return ReturnT.FAIL;
+ }
+ return ReturnT.SUCCESS;
+ }
+
+ //5���������������������
+ @XxlJob("createHistoryFiveMinutelyTable")
+ public ReturnT createHistoryFiveMinutelyTable() {
+ String timeUnits = DateUtils.getDateStringOfMon(1, DateUtils.yyyyMM_EN);
+ try {
+ historyFiveMinutelyService.createTable(timeUnits);
+ } catch (Exception e) {
+ XxlJobHelper.log(e.getMessage());
+ return ReturnT.FAIL;
+ }
+ return ReturnT.SUCCESS;
+ }
+}
diff --git a/screen-job/src/main/java/com/moral/api/task/HistoryAqiInsertTask.java b/screen-job/src/main/java/com/moral/api/task/HistoryAqiInsertTask.java
new file mode 100644
index 0000000..603e2d2
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/task/HistoryAqiInsertTask.java
@@ -0,0 +1,27 @@
+package com.moral.api.task;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.moral.api.service.HistoryAqiService;
+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 HistoryAqiInsertTask {
+
+ @Autowired
+ private HistoryAqiService historyAqiService;
+
+ @XxlJob("insertHistoryAqi")
+ public ReturnT insertHistoryAqi() {
+ try {
+ historyAqiService.insertHistoryAqi();
+ } catch (Exception e) {
+ XxlJobHelper.log(e.getMessage());
+ return ReturnT.FAIL;
+ }
+ return ReturnT.SUCCESS;
+ }
+}
diff --git a/screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java b/screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java
new file mode 100644
index 0000000..eb9b6af
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java
@@ -0,0 +1,74 @@
+package com.moral.api.task;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.alibaba.fastjson.JSON;
+import com.moral.api.entity.HistoryDaily;
+import com.moral.api.service.HistoryDailyService;
+import com.moral.api.service.HistoryFiveMinutelyService;
+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 HistoryTableInsertTask {
+
+ @Autowired
+ private HistoryDailyService historyDailyService;
+
+ @Autowired
+ private HistoryFiveMinutelyService historyFiveMinutelyService;
+
+ //5������������������
+ @XxlJob("insertHistoryFiveMinutely")
+ public ReturnT insertHistoryFiveMinutely() {
+ try {
+ /* List<Map<String, Object>> list = new ArrayList<>();
+ Map<String, Object> map = new HashMap<>();
+ map.put("mac", "123456");
+ Date date = new Date();
+ map.put("time", date);
+ Map<String, Object> value = new HashMap<>();
+ value.put("e1", 10); value.put("e2", 20);
+ map.put("value", JSON.toJSONString(value));
+ list.add(map);
+ String timeUnits = DateUtils.dateToDateString(date, DateUtils.yyyyMM_EN);*/
+
+ historyFiveMinutelyService.insertHistoryFiveMinutely();
+ } catch (Exception e) {
+ XxlJobHelper.log(e.getMessage());
+ return ReturnT.FAIL;
+ }
+ return ReturnT.SUCCESS;
+ }
+
+ //���������������
+ @XxlJob("insertHistoryDaily")
+ public ReturnT insertHistoryDaily() {
+ try {
+ List<HistoryDaily> list = new ArrayList<>();
+ HistoryDaily historyDaily = new HistoryDaily();
+ historyDaily.setMac("123456");
+ historyDaily.setTime(new Date());
+ Map<String, Object> value = new HashMap<>();
+ value.put("e1", 1);
+ value.put("e2", 2);
+ historyDaily.setValue(JSON.toJSONString(value));
+ for (int i = 0; i < 20000; i++) {
+ list.add(historyDaily);
+ }
+ historyDailyService.insertHistoryDaily(list);
+ } catch (Exception e) {
+ XxlJobHelper.log(e.getMessage());
+ return ReturnT.FAIL;
+ }
+ return ReturnT.SUCCESS;
+ }
+}
diff --git a/screen-job/src/main/java/com/moral/api/task/JudgeOffLineDeviceTask.java b/screen-job/src/main/java/com/moral/api/task/JudgeOffLineDeviceTask.java
new file mode 100644
index 0000000..aa5d7a6
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/task/JudgeOffLineDeviceTask.java
@@ -0,0 +1,28 @@
+package com.moral.api.task;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.moral.api.service.DeviceService;
+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 JudgeOffLineDeviceTask {
+
+ @Autowired
+ private DeviceService deviceService;
+
+ //������������������������
+ @XxlJob("judgeOffLineDevice")
+ public ReturnT judgeOffLineDevice() {
+ try {
+ deviceService.judgeOffLineDevice();
+ } catch (Exception e) {
+ XxlJobHelper.log(e.getMessage());
+ return ReturnT.FAIL;
+ }
+ return ReturnT.SUCCESS;
+ }
+}
diff --git a/screen-job/src/main/resources/application-dev.yml b/screen-job/src/main/resources/application-dev.yml
index d996a3c..248edec 100644
--- a/screen-job/src/main/resources/application-dev.yml
+++ b/screen-job/src/main/resources/application-dev.yml
@@ -81,6 +81,7 @@
logging:
config: classpath:logback.xml
+
xxl:
job:
admin:
diff --git a/screen-job/src/main/resources/logback-spring.xml b/screen-job/src/main/resources/logback-spring.xml
new file mode 100644
index 0000000..d830e7a
--- /dev/null
+++ b/screen-job/src/main/resources/logback-spring.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+ <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
+
+ <springProperty scope="context" name="springAppName" source="spring.application.name"/>
+ <!-- ��������������������������������� -->
+ <property name="LOG_FILE" value="/home/moral/soft/log/${springAppName}"/>
+ <!-- ������������������������������ -->
+ <property name="CONSOLE_LOG_PATTERN"
+ value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}) [%X{logseq}]{faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr([${springAppName}]){yellow} %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
+
+ <property name="FILE_LOG_PATTERN"
+ value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{logseq}] [%thread] %X{T} [%level] %logger.%method:%line %msg%n"/>
+
+ <!-- ���������Appender -->
+ <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ <level>INFO</level>
+ </filter>
+ <encoder>
+ <pattern>${CONSOLE_LOG_PATTERN}</pattern>
+ <charset>utf8</charset>
+ </encoder>
+ </appender>
+ <!-- ������������Appender -->
+ <appender name="screenJobLog" class="ch.qos.logback.classic.sift.SiftingAppender">
+ <discriminator>
+ <key>taskId</key>
+ <defaultValue>default</defaultValue>
+ </discriminator>
+ <sift>
+ <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
+
+ <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+ <level>INFO</level>
+ </filter>
+ <file>${LOG_FILE}/%d{yyyy-MM-dd}/${springAppName}.log</file>
+ <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+ <maxFileSize>30MB</maxFileSize>
+ <fileNamePattern>${LOG_FILE}/%d{yyyy-MM-dd}/${springAppName}-%d{yyyy-MM-dd}.log%i.log</fileNamePattern>
+ <maxHistory>30</maxHistory>
+ </rollingPolicy>
+ <encoder>
+ <pattern>${FILE_LOG_PATTERN}</pattern>
+ <charset>utf8</charset>
+ </encoder>
+ </appender>
+ </sift>
+ </appender>
+
+
+ <root level="INFO">
+ <appender-ref ref="console"/>
+ <appender-ref ref="screenJobLog"/>
+ </root>
+</configuration>
diff --git a/screen-job/src/main/resources/mapper/CityAqiConfigMapper.xml b/screen-job/src/main/resources/mapper/CityAqiConfigMapper.xml
new file mode 100644
index 0000000..a465401
--- /dev/null
+++ b/screen-job/src/main/resources/mapper/CityAqiConfigMapper.xml
@@ -0,0 +1,13 @@
+<?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.CityAqiConfigMapper">
+
+ <!-- ������������������������ -->
+ <resultMap id="BaseResultMap" type="com.moral.api.entity.CityAqiConfig">
+ <id column="id" property="id"/>
+ <result column="city_code" property="cityCode"/>
+ <result column="city_name" property="cityName"/>
+ <result column="city_id" property="cityId"/>
+ </resultMap>
+
+</mapper>
\ No newline at end of file
diff --git a/screen-job/src/main/resources/mapper/DeviceMapper.xml b/screen-job/src/main/resources/mapper/DeviceMapper.xml
new file mode 100644
index 0000000..493dc7b
--- /dev/null
+++ b/screen-job/src/main/resources/mapper/DeviceMapper.xml
@@ -0,0 +1,29 @@
+<?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.DeviceMapper">
+
+ <!-- ������������������������ -->
+ <resultMap id="BaseResultMap" type="com.moral.api.entity.Device">
+ <id column="id" property="id" />
+ <result column="name" property="name" />
+ <result column="mac" property="mac" />
+ <result column="address" property="address" />
+ <result column="longitude" property="longitude" />
+ <result column="latitude" property="latitude" />
+ <result column="state" property="state" />
+ <result column="operate_ids" property="operateIds" />
+ <result column="monitor_point_id" property="monitorPointId" />
+ <result column="organization_id" property="organizationId" />
+ <result column="device_version_id" property="deviceVersionId" />
+ <result column="profession" property="profession" />
+ <result column="tech" property="tech" />
+ <result column="detector" property="detector" />
+ <result column="purchaser" property="purchaser" />
+ <result column="create_time" property="createTime" />
+ <result column="update_time" property="updateTime" />
+ <result column="install_time" property="installTime" />
+ <result column="is_delete" property="isDelete" />
+ <result column="extend" property="extend" />
+ </resultMap>
+
+</mapper>
\ No newline at end of file
diff --git a/screen-job/src/main/resources/mapper/HistoryAqiMapper.xml b/screen-job/src/main/resources/mapper/HistoryAqiMapper.xml
new file mode 100644
index 0000000..24658a1
--- /dev/null
+++ b/screen-job/src/main/resources/mapper/HistoryAqiMapper.xml
@@ -0,0 +1,12 @@
+<?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.HistoryAqiMapper">
+
+ <!-- ������������������������ -->
+ <resultMap id="BaseResultMap" type="com.moral.api.entity.HistoryAqi">
+ <result column="city_code" property="cityCode" />
+ <result column="time" property="time" />
+ <result column="value" property="value" />
+ </resultMap>
+
+</mapper>
\ No newline at end of file
diff --git a/screen-job/src/main/resources/mapper/HistoryDailyMapper.xml b/screen-job/src/main/resources/mapper/HistoryDailyMapper.xml
new file mode 100644
index 0000000..f1582cd
--- /dev/null
+++ b/screen-job/src/main/resources/mapper/HistoryDailyMapper.xml
@@ -0,0 +1,19 @@
+<?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.HistoryDailyMapper">
+
+ <!-- ������������������������ -->
+ <resultMap id="BaseResultMap" type="com.moral.api.entity.HistoryDaily">
+ <result column="mac" property="mac"/>
+ <result column="time" property="time"/>
+ <result column="value" property="value"/>
+ </resultMap>
+
+ <insert id="insertHistoryDaily" parameterType="com.moral.api.entity.HistoryDaily">
+ INSERT INTO history_daily
+ VALUES
+ <foreach collection="list" item="item" separator=",">
+ (#{item.mac},#{item.time},#{item.value})
+ </foreach>
+ </insert>
+</mapper>
\ No newline at end of file
diff --git a/screen-job/src/main/resources/mapper/HistoryFiveMinutelyMapper.xml b/screen-job/src/main/resources/mapper/HistoryFiveMinutelyMapper.xml
new file mode 100644
index 0000000..13de990
--- /dev/null
+++ b/screen-job/src/main/resources/mapper/HistoryFiveMinutelyMapper.xml
@@ -0,0 +1,25 @@
+<?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.HistoryFiveMinutelyMapper">
+
+ <update id="createTable" parameterType="String">
+ CREATE TABLE IF NOT EXISTS `history_five_minutely_${timeUnits}` (
+ `mac` VARCHAR (20) DEFAULT NULL COMMENT '������mac',
+ `time` datetime DEFAULT NULL COMMENT '������������',
+ `value` json DEFAULT NULL COMMENT '������',
+ KEY `idx_mac` (`mac`),
+ KEY `idx_time` (`time`),
+ KEY `idx_mac_time` (`mac`,`time`)
+ ) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT '5���������������'
+ </update>
+
+ <insert id="insertHistoryFiveMinutely">
+ INSERT INTO
+ history_five_minutely_${timeUnits}
+ VALUES
+ <foreach collection="list" item="item" separator=",">
+ (#{item.mac}, #{item.time}, #{item.value})
+ </foreach>
+ </insert>
+
+</mapper>
\ No newline at end of file
diff --git a/screen-job/src/main/resources/mapper/HistoryMinutelyMapper.xml b/screen-job/src/main/resources/mapper/HistoryMinutelyMapper.xml
new file mode 100644
index 0000000..d705dd2
--- /dev/null
+++ b/screen-job/src/main/resources/mapper/HistoryMinutelyMapper.xml
@@ -0,0 +1,50 @@
+<?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">
+
+ <update id="createTable" parameterType="String">
+ CREATE TABLE IF NOT EXISTS `history_minutely_${timeUnits}` (
+ `mac` VARCHAR (20) DEFAULT NULL COMMENT '������mac',
+ `time` datetime DEFAULT NULL COMMENT '������������',
+ `value` json DEFAULT NULL COMMENT '������',
+ `version` INT (11) DEFAULT NULL COMMENT '������',
+ KEY `idx_mac` (`mac`),
+ KEY `idx_time` (`time`),
+ KEY `idx_mac_time` (`mac`,`time`)
+ ) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT '���������������'
+ </update>
+
+ <select id="getHistoryFiveMinutelyData" resultType="java.util.LinkedHashMap">
+ SELECT
+ mac
+ <foreach collection="sensorKeys" open="," separator="," item="sensorKey">
+ <choose>
+ <when test="sensorKey=='e23[0]'">
+ ROUND((CASE WHEN AVG(value->'$.e18[0]'*SIN((value->'$.e23[0]'/180)*PI()))<![CDATA[>]]>0 AND
+ AVG(value->'$.e18[0]'*COS((value->'$.e23[0]'/180)*PI()))<![CDATA[>]]>0
+ THEN
+ ATAN(AVG(value->'$.e18[0]'*SIN((value->'$.e23[0]'/180)*PI()))/AVG(value->'$.e18[0]'*COS((value->'$.e23[0]'/180)*PI())))*180/PI()
+ WHEN AVG(value->'$.e18[0]'*SIN((value->'$.e23[0]'/180)*PI()))>0 AND
+ AVG(value->'$.e18[0]'*COS((value->'$.e23[0]'/180)*PI()))<![CDATA[<]]>0
+ THEN
+ (ATAN(AVG(value->'$.e18[0]'*SIN((value->'$.e23[0]'/180)*PI()))/AVG(value->'$.e18[0]'*COS((value->'$.e23[0]'/180)*PI())))*180/PI())+180
+ WHEN AVG(value->'$.e18[0]'*SIN((value->'$.e23[0]'/180)*PI()))<![CDATA[<]]>0 AND
+ AVG(value->'$.e18[0]'*COS((value->'$.e23[0]'/180)*PI()))<![CDATA[<]]>0
+ THEN
+ (ATAN(AVG(value->'$.e18[0]'*SIN((value->'$.e23[0]'/180)*PI()))/AVG(value->'$.e18[0]'*COS((value->'$.e23[0]'/180)*PI())))*180/PI())+180
+ ELSE
+ (ATAN(AVG(value->'$.e18[0]'*SIN((value->'$.e23[0]'/180)*PI()))/AVG(value->'$.e18[0]'*COS((value->'$.e23[0]'/180)*PI())))*180/PI())+360
+ END),3) AS '${sensorKey}'
+ </when>
+ <otherwise>
+ ROUND(AVG(value->'$.${sensorKey}[0]'),3) AS '${sensorKey}'
+ </otherwise>
+ </choose>
+ </foreach>
+ FROM
+ history_minutely_${timeUnits}
+ WHERE time <![CDATA[>=]]> #{start} AND time <![CDATA[<]]> #{end}
+ GROUP BY mac
+ </select>
+
+</mapper>
\ No newline at end of file
diff --git a/screen-manage/src/main/java/com/moral/api/config/kafka/KafkaConsumerConfig.java b/screen-manage/src/main/java/com/moral/api/config/kafka/KafkaConsumerConfig.java
index 9d983d0..8ce1e76 100644
--- a/screen-manage/src/main/java/com/moral/api/config/kafka/KafkaConsumerConfig.java
+++ b/screen-manage/src/main/java/com/moral/api/config/kafka/KafkaConsumerConfig.java
@@ -2,7 +2,6 @@
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.common.serialization.StringDeserializer;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -13,11 +12,12 @@
import org.springframework.kafka.core.DefaultKafkaConsumerFactory;
import org.springframework.kafka.listener.ConcurrentMessageListenerContainer;
import org.springframework.kafka.listener.ContainerProperties;
+
import java.util.HashMap;
import java.util.Map;
-/*@Configuration
-@EnableKafka*/
+@Configuration
+@EnableKafka
public class KafkaConsumerConfig {
@Value("${kafka.consumer.servers}")
private String servers;
@@ -27,8 +27,6 @@
private String sessionTimeout;
@Value("${kafka.consumer.auto.commit.interval}")
private String autoCommitInterval;
- @Value("${kafka.consumer.groupMenu.id}")
- private String groupId;
@Value("${kafka.consumer.auto.offset.reset}")
private String autoOffsetReset;
@Value("${kafka.consumer.concurrency}")
@@ -41,16 +39,12 @@
factory.setConcurrency(concurrency);
factory.getContainerProperties().setPollTimeout(1500);
factory.getContainerProperties().setAckMode(ContainerProperties.AckMode.MANUAL_IMMEDIATE);
-
- /*factory.setBatchListener(true);//@KafkaListener ������������ ���������������������Kafka���������������������ConsumerConfig.MAX_POLL_RECORDS_CONFIG
- factory.getContainerProperties().setAckMode(ContainerProperties.AckMode.MANUAL_IMMEDIATE);//������������������������������*/
return factory;
}
public ConsumerFactory<String, String> consumerFactory() {
return new DefaultKafkaConsumerFactory<>(consumerConfigs());
}
-
public Map<String, Object> consumerConfigs() {
Map<String, Object> propsMap = new HashMap<>();
@@ -60,7 +54,6 @@
propsMap.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, sessionTimeout);
propsMap.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
propsMap.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
- propsMap.put(ConsumerConfig.GROUP_ID_CONFIG, groupId);
propsMap.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, autoOffsetReset);
return propsMap;
}
diff --git a/screen-manage/src/main/java/com/moral/api/config/kafka/KafkaProducerConfig.java b/screen-manage/src/main/java/com/moral/api/config/kafka/KafkaProducerConfig.java
index ef5b141..a5603f1 100644
--- a/screen-manage/src/main/java/com/moral/api/config/kafka/KafkaProducerConfig.java
+++ b/screen-manage/src/main/java/com/moral/api/config/kafka/KafkaProducerConfig.java
@@ -13,8 +13,8 @@
import java.util.HashMap;
import java.util.Map;
-/*@Configuration
-@EnableKafka*/
+@Configuration
+@EnableKafka
public class KafkaProducerConfig {
@Value("${kafka.producer.servers}")
private String servers;
diff --git a/screen-manage/src/main/java/com/moral/api/controller/DeviceController.java b/screen-manage/src/main/java/com/moral/api/controller/DeviceController.java
index 8b0f88e..bb495c8 100644
--- a/screen-manage/src/main/java/com/moral/api/controller/DeviceController.java
+++ b/screen-manage/src/main/java/com/moral/api/controller/DeviceController.java
@@ -56,7 +56,7 @@
//������mac���������������
QueryWrapper<Device> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("mac", device.getMac());
- if (deviceService.getOne(queryWrapper) != null) {
+ if (deviceService.count(queryWrapper) > 0) {
return ResultMessage.fail(ResponseCodeEnum.MAC_IS_EXIST.getCode(), ResponseCodeEnum.MAC_IS_EXIST.getMsg());
}
deviceService.insert(device);
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 a3e07fc..13865dc 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
@@ -4,6 +4,7 @@
import com.moral.api.entity.Test;
import com.moral.api.service.TestService;
import com.moral.api.util.CacheUtils;
+import com.moral.constant.KafkaConstants;
import com.moral.constant.ResultMessage;
import com.moral.redis.RedisUtil;
import com.moral.util.PageResult;
@@ -101,15 +102,31 @@
}
/**
- * kafka������
+ * ������������kafka������
*/
@ApiOperation(value = "kafka������", notes = "kafka������")
@ApiImplicitParams({
+ @ApiImplicitParam(name = "data", value = "data", required = true, paramType = "query", dataType = "String"),
@ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
})
- @RequestMapping(value = "kafkaTest", method = RequestMethod.GET)
- public void kafkaTest() {
- kafkaTemplate.send("test_topic", "{'mac': 'p5dnd1234567','DataTime':1623058244104,'e1':10,'e2':20,'ver':2}");
+ @RequestMapping(value = "minuteKafkaTest", method = RequestMethod.GET)
+ public void minuteKafkaTest(String data) {
+ System.out.println(data);
+ kafkaTemplate.send(KafkaConstants.TOPIC_MINUTE, data);
+ }
+
+ /**
+ * ������������kafka������
+ */
+ @ApiOperation(value = "kafka������", notes = "kafka������")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "data", value = "data", required = true, paramType = "query", dataType = "String"),
+ @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
+ })
+ @RequestMapping(value = "hourKafkaTest", method = RequestMethod.GET)
+ public void hourKafkaTest(String data) {
+ System.out.println(data);
+ kafkaTemplate.send(KafkaConstants.TOPIC_HOUR, data);
}
@GetMapping("testToken")
diff --git a/screen-manage/src/main/java/com/moral/api/entity/HistoryHourly.java b/screen-manage/src/main/java/com/moral/api/entity/HistoryHourly.java
new file mode 100644
index 0000000..08c64b6
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/entity/HistoryHourly.java
@@ -0,0 +1,51 @@
+package com.moral.api.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * ������������������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-06-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class HistoryHourly extends Model<HistoryHourly> {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ������mac
+ */
+ private String mac;
+
+ /**
+ * ������������
+ */
+ private Date time;
+
+ /**
+ * ������
+ */
+ private String value;
+
+ /**
+ * ������
+ */
+ private Integer version;
+
+
+ @Override
+ protected Serializable pkVal() {
+ return null;
+ }
+
+}
diff --git a/screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java b/screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java
index af6c8cc..54c9d35 100644
--- a/screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java
+++ b/screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java
@@ -1,37 +1,126 @@
package com.moral.api.kafka.consumer;
-import com.moral.api.constant.TopicConstants;
import lombok.extern.slf4j.Slf4j;
import org.apache.kafka.clients.consumer.ConsumerRecord;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
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.Random;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.stream.Collectors;
-@Component
+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;
+import com.moral.constant.RedisConstants;
+
+//@Component
@Slf4j
public class KafkaConsumer {
-/* *//**
- * ���������������������������������
- * @param record
- * @param ack
- * @throws Exception
- *//*
- @KafkaListener(topics = TopicConstants.TEST_TOPIC_MESSAGE,groupId = "test")
- public void listenTest(ConsumerRecord<String, String> record , Acknowledgment ack) throws Exception {
+ @Autowired
+ private HistoryMinutelyService historyMinutelyService;
+
+ @Autowired
+ private HistoryHourlyService historyHourlyService;
+
+ @Autowired
+ private DeviceService deviceService;
+
+ @Autowired
+ private RedisTemplate redisTemplate;
+
+ //������������
+ @KafkaListener(topics = KafkaConstants.TOPIC_MINUTE, groupId = KafkaConstants.GROUP_ID_INSERT, containerFactory = "kafkaListenerContainerFactory")
+ public void listenMinute(ConsumerRecord<String, String> record, Acknowledgment ack) {
String msg = record.value();
System.out.println(msg);
- if (new Random().nextInt(100)<50){
- log.info(String.format("kafka ������������������---------------- listen1 topic = %s, offset = %d, value = %s ", record.topic(), record.offset(), record.value()));
+ try {
+ Map<String, Object> data = JSON.parseObject(msg, HashMap.class);
+ 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{}", msg);
+ ack.acknowledge();
+ return;
+ }
+
+ //������������
+ data = data.entrySet().stream()
+ .filter(map -> {
+ String key = map.getKey();
+ return !(key.contains("Min") || key.contains("Max") || key.contains("Cou"));
+ }).collect(Collectors.toMap(m -> m.getKey().replaceAll("-Avg", ""), Map.Entry::getValue));
+ data.remove("time");
+ //���������������
+ historyMinutelyService.insertHistoryMinutely(data);
ack.acknowledge();
+ } catch (Exception e) {
+ //log.error("param{}" + msg);
}
+ }
- }*/
+ //������������
+ @KafkaListener(topics = KafkaConstants.TOPIC_HOUR, groupId = KafkaConstants.GROUP_ID_INSERT, 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);
+ 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{}", msg);
+ ack.acknowledge();
+ return;
+ }
+ //������������
+ data = data.entrySet().stream()
+ .filter(map -> {
+ String key = map.getKey();
+ return !(key.contains("Min") || key.contains("Max") || key.contains("Cou"));
+ }).collect(Collectors.toMap(m -> m.getKey().replaceAll("-Avg", ""), Map.Entry::getValue));
+ data.remove("time");
+ //���������������
+ historyHourlyService.insertHistoryHourly(data);
+ ack.acknowledge();
+ } catch (Exception e) {
+ //log.error("param{}" + msg);
+ }
+ }
-
-
-
+ //������������������������������������������������������
+ @KafkaListener(topics = KafkaConstants.TOPIC_SECOND, groupId = KafkaConstants.GROUP_ID_STATE, containerFactory = "kafkaListenerContainerFactory")
+ public void listenSecond(ConsumerRecord<String, String> record, Acknowledgment ack) {
+ String msg = record.value();
+ //System.out.println(record.offset() + "===>" + msg);
+ try {
+ Map<String, Object> data = JSON.parseObject(msg, HashMap.class);
+ 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{}", msg);
+ ack.acknowledge();
+ return;
+ }
+ //������������
+ data = deviceService.adjustDeviceData(data);
+ //������redis
+ redisTemplate.opsForValue().set(RedisConstants.DEVICE_DATA + mac, data);
+ //���������������������������
+ deviceService.judgeDeviceState(data);
+ ack.acknowledge();
+ } catch (Exception e) {
+ //log.error("param{}" + msg);
+ }
+ }
}
diff --git a/screen-manage/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java b/screen-manage/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java
new file mode 100644
index 0000000..46898e3
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.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 HistoryHourlyMapper extends BaseMapper<HistoryHourly> {
+
+ void insertHistoryHourlyUnAdjust(Map<String, Object> params);
+
+}
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 5fac936..0d3fa02 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
@@ -56,9 +56,9 @@
Map<String, Object> getDeviceByMac(String mac);
//������������������
- Map<String, Object> adjustDeviceData(Map<String, Object> deviceData, Map<String, Object> deviceInfo);
+ Map<String, Object> adjustDeviceData(Map<String, Object> deviceData);
- //���������������������������
- Map<String, Object> judgeDeviceState(Map<String, Object> data, Map<String, Object> deviceInfo);
+ //���������������������������
+ void judgeDeviceState(Map<String, Object> data);
}
diff --git a/screen-manage/src/main/java/com/moral/api/service/HistoryHourlyService.java b/screen-manage/src/main/java/com/moral/api/service/HistoryHourlyService.java
new file mode 100644
index 0000000..1a5a63e
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/service/HistoryHourlyService.java
@@ -0,0 +1,20 @@
+package com.moral.api.service;
+
+import java.util.Map;
+
+import com.moral.api.entity.HistoryHourly;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * ��������� ���������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-06-04
+ */
+public interface HistoryHourlyService extends IService<HistoryHourly> {
+
+ void insertHistoryHourly(Map<String, Object> data);
+
+}
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
index 4834d08..91c4fa6 100644
--- a/screen-manage/src/main/java/com/moral/api/service/HistoryMinutelyService.java
+++ b/screen-manage/src/main/java/com/moral/api/service/HistoryMinutelyService.java
@@ -13,6 +13,6 @@
*/
public interface HistoryMinutelyService {
- void insertHistoryMinutely(Map<String, Object> deviceData);
+ void insertHistoryMinutely(Map<String, Object> data);
}
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 9365ad2..fcf29d3 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,9 +1,11 @@
package com.moral.api.service.impl;
-import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.googlecode.aviator.AviatorEvaluator;
+import com.googlecode.aviator.Expression;
import com.moral.api.entity.*;
import com.moral.api.mapper.*;
import com.moral.api.pojo.vo.device.DeviceVO;
@@ -11,17 +13,20 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.api.util.CacheUtils;
+import com.moral.api.util.AdjustDataUtils;
import com.moral.api.util.LogUtils;
import com.moral.constant.Constants;
import com.moral.constant.RedisConstants;
import com.moral.util.ConvertUtils;
import com.moral.util.DateUtils;
+import lombok.extern.slf4j.Slf4j;
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.util.ObjectUtils;
+import org.springframework.util.StringUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
@@ -45,6 +50,7 @@
* @since 2021-05-11
*/
@Service
+@Slf4j
public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> implements DeviceService {
@Autowired
@@ -77,45 +83,28 @@
@Autowired
private VersionSensorUnitMapper versionSensorUnitMapper;
-
+ @Autowired
+ private AdjustDataUtils adjustDataUtils;
/*
* ���redis������������������
* */
private Map<String, Object> getDeviceInfoFromRedis(String mac) {
- Map<String, Object> deviceInfo = (Map<String, Object>) redisTemplate.opsForValue().get(RedisConstants.DEVICE + mac);
- return deviceInfo;
+ return (Map<String, Object>) redisTemplate.opsForValue().get(RedisConstants.DEVICE + mac);
}
/*
* ������������������redis
*/
private void setDeviceInfoToRedis(String mac, Map<String, Object> deviceInfo) {
- redisTemplate.opsForValue().set(getDeviceKey(mac), deviceInfo);
+ redisTemplate.opsForValue().set(RedisConstants.DEVICE + 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();
+ redisTemplate.delete(RedisConstants.DEVICE + mac);
}
@Override
@@ -126,7 +115,7 @@
deviceMapper.insert(device);
Map<String, Object> deviceInfo = selectDeviceInfoById(device.getId());
//���������������������������
- insertOrganizationUnitAlarm(orgId,device.getDeviceVersionId());
+ insertOrganizationUnitAlarm(orgId, device.getDeviceVersionId());
//������������������������redis
String mac = device.getMac();
//���redis���������������������
@@ -145,17 +134,17 @@
@Override
@Transactional
public void delete(Integer deviceId) {
+ Device device = deviceMapper.selectById(deviceId);
UpdateWrapper<Device> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", deviceId).set("is_delete", Constants.DELETE);
deviceMapper.update(null, updateWrapper);
- Device device = deviceMapper.selectById(deviceId);
String mac = device.getMac();
//���redis���������������������
delDeviceInfoFromRedis(mac);
//���������������������������
Integer versionId = device.getDeviceVersionId();
Integer orgId = device.getOrganizationId();
- deleteOrganizationUnitAlarm(orgId,versionId);
+ deleteOrganizationUnitAlarm(orgId, versionId);
//������deviceInfo������
CacheUtils.flushDeviceAlarmInfo();
//������������������
@@ -171,7 +160,7 @@
Integer deviceId = device.getId();
Device oldDevice = deviceMapper.selectById(deviceId);
//���������������������������������������������������������������������������������id������������
- if(!ObjectUtils.isEmpty(device.getMonitorPointId())){
+ if (!ObjectUtils.isEmpty(device.getMonitorPointId())) {
MonitorPoint monitorPoint = monitorPointMapper.selectById(device.getMonitorPointId());
device.setOrganizationId(monitorPoint.getOrganizationId());
}
@@ -179,14 +168,14 @@
Device updateDevice = deviceMapper.selectById(deviceId);
String mac = updateDevice.getMac();
//���������������������������
- Integer oldOrgId = oldDevice.getOrganizationId();
- Integer newOrgId = updateDevice.getOrganizationId();
- Integer oldVersionId = oldDevice.getDeviceVersionId();
- Integer newVersionId = updateDevice.getDeviceVersionId();
- if(!oldOrgId.equals(newOrgId)||!oldVersionId.equals(newVersionId)){
- deleteOrganizationUnitAlarm(oldOrgId,oldVersionId);
- insertOrganizationUnitAlarm(newOrgId,newVersionId);
- }
+ Integer oldOrgId = oldDevice.getOrganizationId();
+ Integer newOrgId = updateDevice.getOrganizationId();
+ Integer oldVersionId = oldDevice.getDeviceVersionId();
+ Integer newVersionId = updateDevice.getDeviceVersionId();
+ if (!oldOrgId.equals(newOrgId) || !oldVersionId.equals(newVersionId)) {
+ deleteOrganizationUnitAlarm(oldOrgId, oldVersionId);
+ insertOrganizationUnitAlarm(newOrgId, newVersionId);
+ }
//���redis���������������������
delDeviceInfoFromRedis(mac);
Map<String, Object> deviceInfo = selectDeviceInfoById(deviceId);
@@ -283,13 +272,15 @@
queryWrapper.eq("monitor_point_id", mpId);
}
+ //���������������������
if (name != null) {
queryWrapper.like("name", name);
}
+
+ //mac������������
if (mac != null) {
queryWrapper.like("mac", mac);
}
-
//������������,������create_time������
if (order != null && orderType != null) {
@@ -318,7 +309,6 @@
result.put("item", items);
return result;
}
-
@Override
public Map<String, Object> selectDeviceInfoById(Integer deviceId) {
@@ -389,6 +379,9 @@
MonitorPoint monitorPoint = device.getMonitorPoint();
mpInfo.put("id", monitorPoint.getId());
mpInfo.put("name", monitorPoint.getName());
+ mpInfo.put("areaCode", monitorPoint.getAreaCode());
+ mpInfo.put("cityCode", monitorPoint.getCityCode());
+ mpInfo.put("provinceCode", monitorPoint.getProvinceCode());
deviceInfo.put("monitorPoint", mpInfo);
setDeviceInfoToRedis(mac, deviceInfo);
@@ -425,27 +418,89 @@
}
@Override
- public Map<String, Object> adjustDeviceData(Map<String, Object> deviceData, Map<String, Object> deviceInfo) {
- return null;
+ public Map<String, Object> adjustDeviceData(Map<String, Object> deviceData) {
+ String mac = deviceData.get("mac").toString();
+ //���redis������������������
+ Map<String, Object> adjustFormula = redisTemplate.opsForHash().entries(RedisConstants.ADJUST + mac);
+ if (!ObjectUtils.isEmpty(adjustFormula)) {
+ Map<String, Object> deviceInfo = getDeviceByMac(mac);
+ Map<String, Object> monitorPoint = (Map<String, Object>) deviceInfo.get("monitorPoint");
+ Object areaCode = monitorPoint.get("areaCode");
+ Object cityCode = monitorPoint.get("cityCode");
+
+ Map<String, Object> aqiMap = redisTemplate.opsForHash().entries(RedisConstants.AQI_DATA + areaCode);
+ if (ObjectUtils.isEmpty(aqiMap)) {
+ aqiMap = redisTemplate.opsForHash().entries(RedisConstants.AQI_DATA + cityCode);
+ }
+ return adjustDataUtils.adjust(deviceData, adjustFormula, ObjectUtils.isEmpty(aqiMap) ? null : aqiMap);
+ }
+ return deviceData;
}
@Override
- public Map<String, Object> judgeDeviceState(Map<String, Object> deviceData, Map<String, Object> deviceInfo) {
- return null;
+ public void judgeDeviceState(Map<String, Object> deviceData) {
+ String mac = deviceData.remove("mac").toString();
+ Device device = (Device) redisTemplate.opsForHash().get(RedisConstants.DEVICE_INFO, mac);
+ Version version = device.getVersion();
+ List<Sensor> sensors = version.getSensors();
+ Expression expression;
+ int state = 1;
+ for (Sensor sensor : sensors) {
+ //������������������
+ String alarmLevel = sensor.getAlarmLevel();
+ if (StringUtils.isEmpty(alarmLevel)) {
+ continue;
+ }
+ List<Double> list = JSONObject.parseObject(alarmLevel, List.class);
+ String sensorCode = sensor.getCode();
+ //������������
+ String formula = sensor.getFormula();
+ //������������������������
+ String sensorValue = (String) deviceData.get(sensorCode);
+ double value = Double.parseDouble(String.format("%.3f", sensorValue));
+ //������������
+ if (formula != null) {
+ //������������������
+ sensorValue = formula.replace("{0}", sensorValue);
+ expression = AviatorEvaluator.compile(sensorValue);
+ value = Double.parseDouble(String.format("%.3f", expression.execute()));
+ }
+ int sensorState = judgeState(list, value);
+ if (sensorState > state) {
+ state = sensorState;
+ }
+ }
+ //������������������
+ UpdateWrapper<Device> updateWrapper = new UpdateWrapper<>();
+ updateWrapper.eq("id", device.getId()).set("state", state);
+ deviceMapper.update(null, updateWrapper);
}
- private void insertOrganizationUnitAlarm(Integer orgId,Integer versionId){
+ //���������������������������
+ private int judgeState(List<Double> levels, Double data) {
+ int state = 1;
+ for (int i = levels.size() - 1; i >= 0; i--) {
+ Double level = levels.get(i);
+ if (data >= level) {
+ state = i + 2;
+ break;
+ }
+ }
+ return state;
+ }
+
+ private void insertOrganizationUnitAlarm(Integer orgId, Integer versionId) {
QueryWrapper<OrganizationUnitAlarm> queryOrganizationVersionWrapper = new QueryWrapper<>();
- queryOrganizationVersionWrapper.eq("organization_id",orgId);
- queryOrganizationVersionWrapper.eq("version_id",versionId);
- queryOrganizationVersionWrapper.eq("is_delete",Constants.NOT_DELETE);
+ queryOrganizationVersionWrapper.eq("organization_id", orgId);
+ queryOrganizationVersionWrapper.eq("version_id", versionId);
+ queryOrganizationVersionWrapper.eq("is_delete", Constants.NOT_DELETE);
List<OrganizationUnitAlarm> organizationUnitAlarms = organizationUnitAlarmMapper.selectList(queryOrganizationVersionWrapper);
- if(ObjectUtils.isEmpty(organizationUnitAlarms)){
- QueryWrapper<VersionSensorUnit> queryVersionSensorUnitWrapper =new QueryWrapper<>();
- queryVersionSensorUnitWrapper.eq("version_id",versionId);
- queryVersionSensorUnitWrapper.eq("is_delete",Constants.NOT_DELETE);
+ if (ObjectUtils.isEmpty(organizationUnitAlarms)) {
+ QueryWrapper<VersionSensorUnit> queryVersionSensorUnitWrapper = new QueryWrapper<>();
+ queryVersionSensorUnitWrapper.eq("version_id", versionId);
+ queryVersionSensorUnitWrapper.eq("is_delete", Constants.NOT_DELETE);
List<VersionSensorUnit> versionSensorUnits = versionSensorUnitMapper.selectList(queryVersionSensorUnitWrapper);
- if(!ObjectUtils.isEmpty(versionSensorUnits)){
+ if (!ObjectUtils.isEmpty(versionSensorUnits)) {
for (VersionSensorUnit versionSensorUnit : versionSensorUnits) {
OrganizationUnitAlarm organizationUnitAlarm = new OrganizationUnitAlarm();
organizationUnitAlarm.setOrganizationId(orgId);
@@ -459,19 +514,19 @@
}
}
- private void deleteOrganizationUnitAlarm(Integer orgId,Integer versionId){
+ private void deleteOrganizationUnitAlarm(Integer orgId, Integer versionId) {
QueryWrapper<Device> queryOrganizationVersionWrapper = new QueryWrapper<>();
- queryOrganizationVersionWrapper.eq("organization_id",orgId);
- queryOrganizationVersionWrapper.eq("device_version_id",versionId);
- queryOrganizationVersionWrapper.eq("is_delete",Constants.NOT_DELETE);
+ queryOrganizationVersionWrapper.eq("organization_id", orgId);
+ queryOrganizationVersionWrapper.eq("device_version_id", versionId);
+ queryOrganizationVersionWrapper.eq("is_delete", Constants.NOT_DELETE);
List<Device> devices = deviceMapper.selectList(queryOrganizationVersionWrapper);
- if(ObjectUtils.isEmpty(devices)){//������������������������������������������������������
+ if (ObjectUtils.isEmpty(devices)) {//������������������������������������������������������
UpdateWrapper deleteWrapper = new UpdateWrapper();
- deleteWrapper.eq("organization_id",orgId);
- deleteWrapper.eq("version_id",versionId);
- deleteWrapper.eq("is_delete",Constants.NOT_DELETE);
- deleteWrapper.set("is_delete",Constants.DELETE);
- organizationUnitAlarmMapper.update(null,deleteWrapper);
+ deleteWrapper.eq("organization_id", orgId);
+ deleteWrapper.eq("version_id", versionId);
+ deleteWrapper.eq("is_delete", Constants.NOT_DELETE);
+ deleteWrapper.set("is_delete", Constants.DELETE);
+ organizationUnitAlarmMapper.update(null, deleteWrapper);
}
}
}
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java
new file mode 100644
index 0000000..26598b6
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java
@@ -0,0 +1,63 @@
+package com.moral.api.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.moral.api.entity.HistoryHourly;
+import com.moral.api.mapper.HistoryHourlyMapper;
+import com.moral.api.service.DeviceService;
+import com.moral.api.service.HistoryHourlyService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.constant.Constants;
+import com.moral.util.DateUtils;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * <p>
+ * ��������� ���������������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-06-04
+ */
+@Service
+public class HistoryHourlyServiceImpl extends ServiceImpl<HistoryHourlyMapper, HistoryHourly> implements HistoryHourlyService {
+
+ @Autowired
+ private HistoryHourlyMapper historyHourlyMapper;
+
+ @Autowired
+ private DeviceService deviceService;
+
+ @Override
+ public void insertHistoryHourly(Map<String, Object> data) {
+ Map<String, Object> dataAdjust = new HashMap<>(data);
+ String mac = data.remove("mac").toString();
+ Date time = DateUtils.dataToTimeStampTime(new Date(new Long((String) data.remove("DataTime"))), DateUtils.yyyy_MM_dd_HH_EN);
+ Integer version = (Integer) data.remove("ver");
+ Map<String, Object> result = new HashMap<>(data);
+ result.put("mac", mac);
+ result.put("time", time);
+ result.put("version", version);
+ result.put("timeUnits", Constants.UN_ADJUST);
+ result.put("value", JSONObject.toJSONString(data));
+ //���������������������������
+ historyHourlyMapper.insertHistoryHourlyUnAdjust(result);
+
+ //������������
+ dataAdjust = deviceService.adjustDeviceData(dataAdjust);
+ dataAdjust.remove("mac");
+ dataAdjust.remove("DataTime");
+ dataAdjust.remove("ver");
+ HistoryHourly historyHourly = new HistoryHourly();
+ historyHourly.setMac(mac);
+ historyHourly.setTime(time);
+ historyHourly.setVersion(version);
+ historyHourly.setValue(JSONObject.toJSONString(dataAdjust));
+ historyHourlyMapper.insert(historyHourly);
+ }
+}
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
index 6df638c..9360a70 100644
--- 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
@@ -7,7 +7,7 @@
import java.util.HashMap;
import java.util.Map;
-import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.moral.api.mapper.HistoryMinutelyMapper;
import com.moral.api.service.DeviceService;
import com.moral.api.service.HistoryMinutelyService;
@@ -24,30 +24,31 @@
private DeviceService deviceService;
@Override
- public void insertHistoryMinutely(Map<String, Object> deviceData) {
+ public void insertHistoryMinutely(Map<String, Object> data) {
Map<String, Object> result = new HashMap<>();
- Object mac = deviceData.remove("mac");
+ Map<String, Object> dataAdjust = new HashMap<>(data);
+ Object mac = data.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));
+ result.put("version", data.remove("ver"));
+ Date time = new Date(new Long((String) data.remove("DataTime")));
+ result.put("time", DateUtils.dataToTimeStampTime(time,DateUtils.yyyy_MM_dd_HH_mm_EN));
+ result.put("value", JSONObject.toJSONString(data));
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());
-
- //���������������������������������������
+ //������������
+ dataAdjust = deviceService.adjustDeviceData(dataAdjust);
+ dataAdjust.remove("mac");
+ dataAdjust.remove("DataTime");
+ dataAdjust.remove("ver");
result.put("timeUnits", timeUnits);
- deviceData = deviceService.adjustDeviceData(deviceData, deviceInfo);
- result.put("value", JSON.toJSONString(deviceData));
+ result.put("value", JSONObject.toJSONString(dataAdjust));
historyMinutelyMapper.insertHistoryMinutely(result);
- //������������������
- Map<String, Object> deviceState = deviceService.judgeDeviceState(deviceData, deviceInfo);
+
}
//���������
@@ -59,5 +60,4 @@
}
return key.toString();
}
-
}
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/SensorServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/SensorServiceImpl.java
index 537ffe4..23301f1 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/SensorServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/SensorServiceImpl.java
@@ -3,10 +3,8 @@
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.moral.api.entity.ManageRole;
-import com.moral.api.entity.Sensor;
-import com.moral.api.entity.SysDictData;
-import com.moral.api.entity.VersionSensorUnit;
+import com.moral.api.entity.*;
+import com.moral.api.mapper.OrganizationUnitAlarmMapper;
import com.moral.api.mapper.SensorMapper;
import com.moral.api.mapper.SysDictDataMapper;
import com.moral.api.mapper.VersionSensorUnitMapper;
@@ -52,6 +50,9 @@
@Autowired(required = false)
private SysDictDataMapper sysDictDataMapper;
+
+ @Autowired(required = false)
+ private OrganizationUnitAlarmMapper organizationUnitAlarmMapper;
@Autowired
LogUtils logUtils;
@@ -131,6 +132,14 @@
return resultMap;
}
sensorMapper.updateSensor(updateSensorMap);
+ if (!ObjectUtils.isEmpty(updateSensorMap.get("code"))&&!oldSensor.getCode().equals(updateSensorMap.get("code"))){
+ QueryWrapper<OrganizationUnitAlarm> wrapper_OUA = new QueryWrapper<>();
+ wrapper_OUA.eq("is_delete",Constants.NOT_DELETE);
+ wrapper_OUA.eq("sensor_code",oldSensor.getCode());
+ OrganizationUnitAlarm organizationUnitAlarm = new OrganizationUnitAlarm();
+ organizationUnitAlarm.setSensorCode(updateSensorMap.get("code").toString());
+ organizationUnitAlarmMapper.update(organizationUnitAlarm,wrapper_OUA);
+ }
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String content = "������������:"+oldSensor.getName()+";";
for (Object key:updateSensorMap.keySet()) {
@@ -269,6 +278,14 @@
VersionSensorUnit versionSensorUnit = new VersionSensorUnit();
versionSensorUnit.setIsDelete(Constants.DELETE);
versionSensorUnitMapper.update(versionSensorUnit,wrapper_Version);
+ if (!ObjectUtils.isEmpty(sensor.getCode())&&!sensor.getCode().equals("")){
+ QueryWrapper<OrganizationUnitAlarm> wrapper_OUA = new QueryWrapper<>();
+ wrapper_OUA.eq("is_delete",Constants.NOT_DELETE);
+ wrapper_OUA.eq("sensor_code",sensor.getCode());
+ OrganizationUnitAlarm organizationUnitAlarm = new OrganizationUnitAlarm();
+ organizationUnitAlarm.setIsDelete(Constants.DELETE);
+ organizationUnitAlarmMapper.update(organizationUnitAlarm,wrapper_OUA);
+ }
//������������������
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String content = "������������:"+sensor.getName()+";";
diff --git a/screen-manage/src/main/java/com/moral/api/util/AdjustDataUtils.java b/screen-manage/src/main/java/com/moral/api/util/AdjustDataUtils.java
new file mode 100644
index 0000000..1f1deba
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/util/AdjustDataUtils.java
@@ -0,0 +1,81 @@
+package com.moral.api.util;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import org.springframework.util.StringUtils;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.alibaba.fastjson.JSON;
+import com.googlecode.aviator.AviatorEvaluator;
+import com.googlecode.aviator.Expression;
+import com.moral.api.entity.DeviceAdjustValue;
+import com.moral.util.DateUtils;
+
+@Slf4j
+@Component
+public class AdjustDataUtils {
+ //���������������
+ public Map<String, Object> adjust(Map<String, Object> deviceData, Map<String, Object> adjustFormula, Map<String, Object> aqiMap) {
+ try {
+ Object dataTime = deviceData.get("DataTime");
+ //���������������������������
+ long time = Math.round(new Double((String) dataTime) / 1000) * 1000L;
+ long finalTime = DateUtils.dataToTimeStampTime(new Date(time), DateUtils.HH_mm_ss_EN).getTime();
+ for (String key : deviceData.keySet()) {
+ if (!key.equals("mac") && !key.equals("time") && !key.equals("DataTime") && !key.equals("ver") && !key.contains("Flag")) {
+ //���������
+ Object measuredValue = deviceData.get(key);
+ //������������������������
+ List<DeviceAdjustValue> sensorFormulas = (List<DeviceAdjustValue>) adjustFormula.get(key);
+ if (ObjectUtils.isEmpty(sensorFormulas)) {
+ deviceData.put(key, measuredValue);
+ continue;
+ }
+
+ //���������������������������������
+ DeviceAdjustValue deviceAdjustValue = sensorFormulas.stream()
+ .filter(o -> o.getStartTime().getTime() <= finalTime && o.getEndTime().getTime() > finalTime)
+ .findFirst().get();
+ String formula = deviceAdjustValue.getValue();
+ if (StringUtils.isEmpty(formula)) {
+ deviceData.put(key, measuredValue);
+ continue;
+ }
+
+ Expression expression = AviatorEvaluator.compile(formula);
+ Map<String, Object> env = new HashMap<>();
+ if (formula.contains("aqi")) {
+ Object aqiValue = null;
+ if (aqiMap != null) {
+ aqiValue = aqiMap.get(key);
+ }
+ env.put("aqi", ObjectUtils.isEmpty(aqiValue) ? 0F : Float.parseFloat((String) aqiValue));
+ }
+ if (formula.contains("vocs")) {
+ Object vocsValue = ObjectUtils.isEmpty(deviceData.get("a99054")) ? 0F : deviceData.get("a99054");
+ env.put("vocs", vocsValue);
+ }
+ if (formula.contains("cel")) {
+ env.put("cel", Float.parseFloat((String) measuredValue));
+ }
+ //������
+ measuredValue = expression.execute(env);
+ //������������
+ if (Float.parseFloat(measuredValue.toString()) < 0 && !"a01001".equals(measuredValue)) {
+ measuredValue = 0F;
+ }
+ deviceData.put(key, Double.parseDouble(String.format("%.3f", measuredValue)));
+ }
+ }
+ } catch (Exception e) {
+ log.error("param[0] deviceData:" + JSON.toJSONString(deviceData));
+ log.error(e.getMessage());
+ }
+ return deviceData;
+ }
+}
diff --git a/screen-manage/src/main/resources/application-dev.yml b/screen-manage/src/main/resources/application-dev.yml
index 4a6899a..16c7e70 100644
--- a/screen-manage/src/main/resources/application-dev.yml
+++ b/screen-manage/src/main/resources/application-dev.yml
@@ -92,14 +92,11 @@
enable:
auto:
commit: false
- group:
- id: test
- servers: 192.168.0.16:9092,192.168.0.17:9092,192.168.0.18:9092
+ servers: 172.16.44.65:9092,172.16.44.67:9092,172.16.44.66:9092
session:
timeout: 6000
- topic: test_topic
zookeeper:
- connect: 192.168.0.16:2181,192.168.0.17:2181,192.168.0.18:2181
+ connect: 172.16.44.65:2181,172.16.44.67:2181,172.16.44.66:2181
producer:
batch:
size: 4096
@@ -107,7 +104,7 @@
memory: 40960
linger: 1
retries: 0
- servers: 192.168.0.16:9092,192.168.0.17:9092,192.168.0.18:9092
+ servers: 172.16.44.65:9092,172.16.44.67:9092,172.16.44.66:9092
mvc:
interceptor:
exclude:
diff --git a/screen-manage/src/main/resources/mapper/DeviceMapper.xml b/screen-manage/src/main/resources/mapper/DeviceMapper.xml
index 6e7f549..d1c0809 100644
--- a/screen-manage/src/main/resources/mapper/DeviceMapper.xml
+++ b/screen-manage/src/main/resources/mapper/DeviceMapper.xml
@@ -49,7 +49,9 @@
<association property="monitorPoint" javaType="com.moral.api.entity.MonitorPoint">
<result column="mp_id" property="id"/>
<result column="mp_name" property="name"/>
- <result column="mp_address" property="address"/>
+ <result column="mp_area_code" property="areaCode"/>
+ <result column="mp_city_code" property="cityCode"/>
+ <result column="mp_province_code" property="provinceCode"/>
</association>
<!--������-->
@@ -116,7 +118,9 @@
o.`name` org_name,
mp.id mp_id,
mp.`name` mp_name,
- mp.address mp_address,
+ mp.area_code mp_area_code,
+ mp.city_code mp_city_code,
+ mp.province_code mp_province_code,
ma.id operate_id,
v.id version_id,
v.`name` version_name,
diff --git a/screen-manage/src/main/resources/mapper/HistoryHourlyMapper.xml b/screen-manage/src/main/resources/mapper/HistoryHourlyMapper.xml
new file mode 100644
index 0000000..a2dde7f
--- /dev/null
+++ b/screen-manage/src/main/resources/mapper/HistoryHourlyMapper.xml
@@ -0,0 +1,17 @@
+<?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.HistoryHourlyMapper">
+
+ <!-- ������������������������ -->
+ <resultMap id="BaseResultMap" type="com.moral.api.entity.HistoryHourly">
+ <result column="mac" property="mac"/>
+ <result column="time" property="time"/>
+ <result column="value" property="value"/>
+ <result column="version" property="version"/>
+ </resultMap>
+
+ <insert id="insertHistoryHourlyUnAdjust">
+ INSERT INTO history_hourly_${timeUnits} VALUES (#{mac}, #{time}, #{value}, #{version})
+ </insert>
+
+</mapper>
\ No newline at end of file
diff --git a/screen.iml b/screen.iml
new file mode 100644
index 0000000..5933ffe
--- /dev/null
+++ b/screen.iml
@@ -0,0 +1,125 @@
+<?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$">
+ <excludeFolder url="file://$MODULE_DIR$/target" />
+ <excludeFolder url="file://$MODULE_DIR$/home/moral/soft/log/screen-manage/%d{yyyy-MM-dd}" />
+ <excludeFolder url="file://$MODULE_DIR$/home/moral/soft/log/screen-manage/2021-06-08" />
+ <excludeFolder url="file://$MODULE_DIR$/home/moral/soft/log/springAppName_IS_UNDEFINED" />
+ <excludeFolder url="file://$MODULE_DIR$/home" />
+ </content>
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ <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: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-autoconfigure:2.1.13.RELEASE" 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.springframework.boot:spring-boot-starter-websocket:2.1.13.RELEASE" level="project" />
+ <orderEntry type="library" name="Maven: org.springframework:spring-websocket:5.1.14.RELEASE" 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" />
+ <orderEntry type="library" name="Maven: com.xuxueli:xxl-job-core:2.3.0" level="project" />
+ <orderEntry type="library" name="Maven: io.netty:netty-all:4.1.45.Final" level="project" />
+ <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.6" level="project" />
+ <orderEntry type="library" name="Maven: org.codehaus.groovy:groovy:2.5.9" level="project" />
+ <orderEntry type="library" name="Maven: com.googlecode.aviator:aviator:5.2.5" level="project" />
+ </component>
+</module>
\ No newline at end of file
--
Gitblit v1.8.0