diff --git a/pom.xml b/pom.xml
index f02731e..f80e854 100644
--- a/pom.xml
+++ b/pom.xml
@@ -89,6 +89,12 @@
+ cn.hutool
+ hutool-all
+ 5.8.31
+
+
+
mysql
mysql-connector-java
8.0.16
diff --git a/pom.xml b/pom.xml
index f02731e..f80e854 100644
--- a/pom.xml
+++ b/pom.xml
@@ -89,6 +89,12 @@
+ cn.hutool
+ hutool-all
+ 5.8.31
+
+
+
mysql
mysql-connector-java
8.0.16
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
deleted file mode 100644
index 1615fb8..0000000
--- a/src/main/java/com/casic/config/CorsConfig.java
+++ /dev/null
@@ -1,31 +0,0 @@
-//package com.casic.config;
-//
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.web.cors.CorsConfiguration;
-//import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
-//import org.springframework.web.filter.CorsFilter;
-//
-///**
-// * 基础框架 - 跨域请求配置
-// */
-//@Configuration
-//public class CorsConfig {
-// @Bean
-// public CorsFilter corsFilter() {
-// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
-// source.registerCorsConfiguration("/**", buildConfig());
-// return new CorsFilter(source);
-// }
-//
-// private CorsConfiguration buildConfig() {
-// CorsConfiguration corsConfiguration = new CorsConfiguration();
-// // 1允许任何域名使用
-// corsConfiguration.addAllowedOrigin("*");
-// // 2允许任何头
-// corsConfiguration.addAllowedHeader("*");
-// // 3允许任何方法(post、get等)
-// corsConfiguration.addAllowedMethod("*");
-// return corsConfiguration;
-// }
-//}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index f02731e..f80e854 100644
--- a/pom.xml
+++ b/pom.xml
@@ -89,6 +89,12 @@
+ cn.hutool
+ hutool-all
+ 5.8.31
+
+
+
mysql
mysql-connector-java
8.0.16
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
deleted file mode 100644
index 1615fb8..0000000
--- a/src/main/java/com/casic/config/CorsConfig.java
+++ /dev/null
@@ -1,31 +0,0 @@
-//package com.casic.config;
-//
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.web.cors.CorsConfiguration;
-//import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
-//import org.springframework.web.filter.CorsFilter;
-//
-///**
-// * 基础框架 - 跨域请求配置
-// */
-//@Configuration
-//public class CorsConfig {
-// @Bean
-// public CorsFilter corsFilter() {
-// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
-// source.registerCorsConfiguration("/**", buildConfig());
-// return new CorsFilter(source);
-// }
-//
-// private CorsConfiguration buildConfig() {
-// CorsConfiguration corsConfiguration = new CorsConfiguration();
-// // 1允许任何域名使用
-// corsConfiguration.addAllowedOrigin("*");
-// // 2允许任何头
-// corsConfiguration.addAllowedHeader("*");
-// // 3允许任何方法(post、get等)
-// corsConfiguration.addAllowedMethod("*");
-// return corsConfiguration;
-// }
-//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
deleted file mode 100644
index 726a42f..0000000
--- a/src/main/java/com/casic/config/Knife4jConfiguration.java
+++ /dev/null
@@ -1,38 +0,0 @@
-//package com.casic.config;
-//
-//import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
-//import org.springframework.beans.factory.annotation.Value;
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import springfox.documentation.builders.ApiInfoBuilder;
-//import springfox.documentation.builders.PathSelectors;
-//import springfox.documentation.builders.RequestHandlerSelectors;
-//import springfox.documentation.spi.DocumentationType;
-//import springfox.documentation.spring.web.plugins.Docket;
-//
-//@Configuration
-//@EnableKnife4j
-//public class Knife4jConfiguration {
-//
-// @Value(value = "${swagger.enable}")
-// public boolean enable;
-// @Value(value = "${swagger.groupName}")
-// public String groupName;
-//
-// @Bean(value = "dockerBean")
-// public Docket dockerBean() {
-// return new Docket(DocumentationType.SWAGGER_2)
-// .apiInfo(new ApiInfoBuilder()
-// //描述字段支持Markdown语法
-// .description("# Knife4j RESTful APIs")
-// .termsOfServiceUrl("https://doc.casic.com/")
-// .version("1.0")
-// .build())
-// //分组名称
-// .groupName(groupName)
-// .select()
-// .apis(RequestHandlerSelectors.basePackage("com.casic"))
-// .paths(PathSelectors.any()).build().enable(enable);
-// }
-//
-//}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index f02731e..f80e854 100644
--- a/pom.xml
+++ b/pom.xml
@@ -89,6 +89,12 @@
+ cn.hutool
+ hutool-all
+ 5.8.31
+
+
+
mysql
mysql-connector-java
8.0.16
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
deleted file mode 100644
index 1615fb8..0000000
--- a/src/main/java/com/casic/config/CorsConfig.java
+++ /dev/null
@@ -1,31 +0,0 @@
-//package com.casic.config;
-//
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.web.cors.CorsConfiguration;
-//import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
-//import org.springframework.web.filter.CorsFilter;
-//
-///**
-// * 基础框架 - 跨域请求配置
-// */
-//@Configuration
-//public class CorsConfig {
-// @Bean
-// public CorsFilter corsFilter() {
-// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
-// source.registerCorsConfiguration("/**", buildConfig());
-// return new CorsFilter(source);
-// }
-//
-// private CorsConfiguration buildConfig() {
-// CorsConfiguration corsConfiguration = new CorsConfiguration();
-// // 1允许任何域名使用
-// corsConfiguration.addAllowedOrigin("*");
-// // 2允许任何头
-// corsConfiguration.addAllowedHeader("*");
-// // 3允许任何方法(post、get等)
-// corsConfiguration.addAllowedMethod("*");
-// return corsConfiguration;
-// }
-//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
deleted file mode 100644
index 726a42f..0000000
--- a/src/main/java/com/casic/config/Knife4jConfiguration.java
+++ /dev/null
@@ -1,38 +0,0 @@
-//package com.casic.config;
-//
-//import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
-//import org.springframework.beans.factory.annotation.Value;
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import springfox.documentation.builders.ApiInfoBuilder;
-//import springfox.documentation.builders.PathSelectors;
-//import springfox.documentation.builders.RequestHandlerSelectors;
-//import springfox.documentation.spi.DocumentationType;
-//import springfox.documentation.spring.web.plugins.Docket;
-//
-//@Configuration
-//@EnableKnife4j
-//public class Knife4jConfiguration {
-//
-// @Value(value = "${swagger.enable}")
-// public boolean enable;
-// @Value(value = "${swagger.groupName}")
-// public String groupName;
-//
-// @Bean(value = "dockerBean")
-// public Docket dockerBean() {
-// return new Docket(DocumentationType.SWAGGER_2)
-// .apiInfo(new ApiInfoBuilder()
-// //描述字段支持Markdown语法
-// .description("# Knife4j RESTful APIs")
-// .termsOfServiceUrl("https://doc.casic.com/")
-// .version("1.0")
-// .build())
-// //分组名称
-// .groupName(groupName)
-// .select()
-// .apis(RequestHandlerSelectors.basePackage("com.casic"))
-// .paths(PathSelectors.any()).build().enable(enable);
-// }
-//
-//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/task/TaskConfigurer.java b/src/main/java/com/casic/config/task/TaskConfigurer.java
index 6a64d1c..5cd850e 100644
--- a/src/main/java/com/casic/config/task/TaskConfigurer.java
+++ b/src/main/java/com/casic/config/task/TaskConfigurer.java
@@ -5,7 +5,6 @@
import com.casic.service.UserDataDelayReceiver;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
@@ -25,14 +24,8 @@
@Value("${casic.device.online.cron}")
private String onlineStateCron;
- @Value("${casic.device.transfer-user.cron}")
- private String transferUserCron;
- @Value("${casic.device.partition.cron}")
- private String partitionCron;
private final DeviceDataService deviceDataService;
- private final UserDataDelayReceiver userDataDelayReceiver;
- private final IPartitionStrategyService partitionStrategyService;
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
@@ -40,17 +33,7 @@
triggerContext -> {
return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext);
});
- TriggerTask transferUserTask = new TriggerTask(getUserData(),
- triggerContext -> {
- return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext);
- });
- TriggerTask partitionTask = new TriggerTask(createPartition(),
- triggerContext -> {
- return new CronTrigger(partitionCron).nextExecutionTime(triggerContext);
- });
taskRegistrar.addTriggerTask(onlineStateTask);
- taskRegistrar.addTriggerTask(transferUserTask);
- taskRegistrar.addTriggerTask(partitionTask);
}
private Runnable nextDayDevice() {
@@ -62,32 +45,4 @@
}
};
}
-
- /**
- * 定时同步普光
- */
- private Runnable getUserData() {
- return new Runnable() {
- @Override
- public void run() {
- log.info("同步数据的任运行...");
- userDataDelayReceiver.saveNewUserData();
- }
- };
- }
-
- /**
- * 定时同步普光
- */
- private Runnable createPartition() {
- return new Runnable() {
- @Override
- public void run() {
- log.info("定时构建硫化氢数据分区表任务运行...");
- partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log");
- }
- };
-
- }
-
}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index f02731e..f80e854 100644
--- a/pom.xml
+++ b/pom.xml
@@ -89,6 +89,12 @@
+ cn.hutool
+ hutool-all
+ 5.8.31
+
+
+
mysql
mysql-connector-java
8.0.16
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
deleted file mode 100644
index 1615fb8..0000000
--- a/src/main/java/com/casic/config/CorsConfig.java
+++ /dev/null
@@ -1,31 +0,0 @@
-//package com.casic.config;
-//
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.web.cors.CorsConfiguration;
-//import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
-//import org.springframework.web.filter.CorsFilter;
-//
-///**
-// * 基础框架 - 跨域请求配置
-// */
-//@Configuration
-//public class CorsConfig {
-// @Bean
-// public CorsFilter corsFilter() {
-// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
-// source.registerCorsConfiguration("/**", buildConfig());
-// return new CorsFilter(source);
-// }
-//
-// private CorsConfiguration buildConfig() {
-// CorsConfiguration corsConfiguration = new CorsConfiguration();
-// // 1允许任何域名使用
-// corsConfiguration.addAllowedOrigin("*");
-// // 2允许任何头
-// corsConfiguration.addAllowedHeader("*");
-// // 3允许任何方法(post、get等)
-// corsConfiguration.addAllowedMethod("*");
-// return corsConfiguration;
-// }
-//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
deleted file mode 100644
index 726a42f..0000000
--- a/src/main/java/com/casic/config/Knife4jConfiguration.java
+++ /dev/null
@@ -1,38 +0,0 @@
-//package com.casic.config;
-//
-//import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
-//import org.springframework.beans.factory.annotation.Value;
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import springfox.documentation.builders.ApiInfoBuilder;
-//import springfox.documentation.builders.PathSelectors;
-//import springfox.documentation.builders.RequestHandlerSelectors;
-//import springfox.documentation.spi.DocumentationType;
-//import springfox.documentation.spring.web.plugins.Docket;
-//
-//@Configuration
-//@EnableKnife4j
-//public class Knife4jConfiguration {
-//
-// @Value(value = "${swagger.enable}")
-// public boolean enable;
-// @Value(value = "${swagger.groupName}")
-// public String groupName;
-//
-// @Bean(value = "dockerBean")
-// public Docket dockerBean() {
-// return new Docket(DocumentationType.SWAGGER_2)
-// .apiInfo(new ApiInfoBuilder()
-// //描述字段支持Markdown语法
-// .description("# Knife4j RESTful APIs")
-// .termsOfServiceUrl("https://doc.casic.com/")
-// .version("1.0")
-// .build())
-// //分组名称
-// .groupName(groupName)
-// .select()
-// .apis(RequestHandlerSelectors.basePackage("com.casic"))
-// .paths(PathSelectors.any()).build().enable(enable);
-// }
-//
-//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/task/TaskConfigurer.java b/src/main/java/com/casic/config/task/TaskConfigurer.java
index 6a64d1c..5cd850e 100644
--- a/src/main/java/com/casic/config/task/TaskConfigurer.java
+++ b/src/main/java/com/casic/config/task/TaskConfigurer.java
@@ -5,7 +5,6 @@
import com.casic.service.UserDataDelayReceiver;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
@@ -25,14 +24,8 @@
@Value("${casic.device.online.cron}")
private String onlineStateCron;
- @Value("${casic.device.transfer-user.cron}")
- private String transferUserCron;
- @Value("${casic.device.partition.cron}")
- private String partitionCron;
private final DeviceDataService deviceDataService;
- private final UserDataDelayReceiver userDataDelayReceiver;
- private final IPartitionStrategyService partitionStrategyService;
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
@@ -40,17 +33,7 @@
triggerContext -> {
return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext);
});
- TriggerTask transferUserTask = new TriggerTask(getUserData(),
- triggerContext -> {
- return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext);
- });
- TriggerTask partitionTask = new TriggerTask(createPartition(),
- triggerContext -> {
- return new CronTrigger(partitionCron).nextExecutionTime(triggerContext);
- });
taskRegistrar.addTriggerTask(onlineStateTask);
- taskRegistrar.addTriggerTask(transferUserTask);
- taskRegistrar.addTriggerTask(partitionTask);
}
private Runnable nextDayDevice() {
@@ -62,32 +45,4 @@
}
};
}
-
- /**
- * 定时同步普光
- */
- private Runnable getUserData() {
- return new Runnable() {
- @Override
- public void run() {
- log.info("同步数据的任运行...");
- userDataDelayReceiver.saveNewUserData();
- }
- };
- }
-
- /**
- * 定时同步普光
- */
- private Runnable createPartition() {
- return new Runnable() {
- @Override
- public void run() {
- log.info("定时构建硫化氢数据分区表任务运行...");
- partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log");
- }
- };
-
- }
-
}
\ No newline at end of file
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
deleted file mode 100644
index e6ae7bc..0000000
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ /dev/null
@@ -1,40 +0,0 @@
-//package com.casic.controller;
-//
-//import com.alibaba.fastjson.JSON;
-//import com.casic.service.DeviceDataService;
-//import com.casic.service.ThirdDataService;
-//import lombok.RequiredArgsConstructor;
-//import org.springframework.web.bind.annotation.*;
-//
-//import java.util.Map;
-//
-//@RestController
-//@RequestMapping("/device")
-//@RequiredArgsConstructor
-//public class DeviceDataController {
-//
-// private final DeviceDataService deviceDataService;
-//
-// @RequestMapping("/recent-data")
-// public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType,
-// @RequestParam(value = "recentNum", required = true) String recentNum,
-// @RequestParam(value = "devcode", required = false) String devcode) {
-// return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode);
-// }
-//
-// @RequestMapping("/data/list-page")
-// public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType,
-// @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
-// @RequestParam(value = "pageSize", required = true) Integer pageSize,
-// @RequestParam(value = "devcode", required = false) String devcode) {
-// return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode);
-// }
-//
-// @RequestMapping("/level/{deviceType}")
-// public Object getLevelList(@PathVariable("deviceType")String deviceType) {
-// return deviceDataService.getLevel(deviceType);
-// }
-//
-//
-//
-//}
diff --git a/pom.xml b/pom.xml
index f02731e..f80e854 100644
--- a/pom.xml
+++ b/pom.xml
@@ -89,6 +89,12 @@
+ cn.hutool
+ hutool-all
+ 5.8.31
+
+
+
mysql
mysql-connector-java
8.0.16
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
deleted file mode 100644
index 1615fb8..0000000
--- a/src/main/java/com/casic/config/CorsConfig.java
+++ /dev/null
@@ -1,31 +0,0 @@
-//package com.casic.config;
-//
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.web.cors.CorsConfiguration;
-//import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
-//import org.springframework.web.filter.CorsFilter;
-//
-///**
-// * 基础框架 - 跨域请求配置
-// */
-//@Configuration
-//public class CorsConfig {
-// @Bean
-// public CorsFilter corsFilter() {
-// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
-// source.registerCorsConfiguration("/**", buildConfig());
-// return new CorsFilter(source);
-// }
-//
-// private CorsConfiguration buildConfig() {
-// CorsConfiguration corsConfiguration = new CorsConfiguration();
-// // 1允许任何域名使用
-// corsConfiguration.addAllowedOrigin("*");
-// // 2允许任何头
-// corsConfiguration.addAllowedHeader("*");
-// // 3允许任何方法(post、get等)
-// corsConfiguration.addAllowedMethod("*");
-// return corsConfiguration;
-// }
-//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
deleted file mode 100644
index 726a42f..0000000
--- a/src/main/java/com/casic/config/Knife4jConfiguration.java
+++ /dev/null
@@ -1,38 +0,0 @@
-//package com.casic.config;
-//
-//import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
-//import org.springframework.beans.factory.annotation.Value;
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import springfox.documentation.builders.ApiInfoBuilder;
-//import springfox.documentation.builders.PathSelectors;
-//import springfox.documentation.builders.RequestHandlerSelectors;
-//import springfox.documentation.spi.DocumentationType;
-//import springfox.documentation.spring.web.plugins.Docket;
-//
-//@Configuration
-//@EnableKnife4j
-//public class Knife4jConfiguration {
-//
-// @Value(value = "${swagger.enable}")
-// public boolean enable;
-// @Value(value = "${swagger.groupName}")
-// public String groupName;
-//
-// @Bean(value = "dockerBean")
-// public Docket dockerBean() {
-// return new Docket(DocumentationType.SWAGGER_2)
-// .apiInfo(new ApiInfoBuilder()
-// //描述字段支持Markdown语法
-// .description("# Knife4j RESTful APIs")
-// .termsOfServiceUrl("https://doc.casic.com/")
-// .version("1.0")
-// .build())
-// //分组名称
-// .groupName(groupName)
-// .select()
-// .apis(RequestHandlerSelectors.basePackage("com.casic"))
-// .paths(PathSelectors.any()).build().enable(enable);
-// }
-//
-//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/task/TaskConfigurer.java b/src/main/java/com/casic/config/task/TaskConfigurer.java
index 6a64d1c..5cd850e 100644
--- a/src/main/java/com/casic/config/task/TaskConfigurer.java
+++ b/src/main/java/com/casic/config/task/TaskConfigurer.java
@@ -5,7 +5,6 @@
import com.casic.service.UserDataDelayReceiver;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
@@ -25,14 +24,8 @@
@Value("${casic.device.online.cron}")
private String onlineStateCron;
- @Value("${casic.device.transfer-user.cron}")
- private String transferUserCron;
- @Value("${casic.device.partition.cron}")
- private String partitionCron;
private final DeviceDataService deviceDataService;
- private final UserDataDelayReceiver userDataDelayReceiver;
- private final IPartitionStrategyService partitionStrategyService;
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
@@ -40,17 +33,7 @@
triggerContext -> {
return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext);
});
- TriggerTask transferUserTask = new TriggerTask(getUserData(),
- triggerContext -> {
- return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext);
- });
- TriggerTask partitionTask = new TriggerTask(createPartition(),
- triggerContext -> {
- return new CronTrigger(partitionCron).nextExecutionTime(triggerContext);
- });
taskRegistrar.addTriggerTask(onlineStateTask);
- taskRegistrar.addTriggerTask(transferUserTask);
- taskRegistrar.addTriggerTask(partitionTask);
}
private Runnable nextDayDevice() {
@@ -62,32 +45,4 @@
}
};
}
-
- /**
- * 定时同步普光
- */
- private Runnable getUserData() {
- return new Runnable() {
- @Override
- public void run() {
- log.info("同步数据的任运行...");
- userDataDelayReceiver.saveNewUserData();
- }
- };
- }
-
- /**
- * 定时同步普光
- */
- private Runnable createPartition() {
- return new Runnable() {
- @Override
- public void run() {
- log.info("定时构建硫化氢数据分区表任务运行...");
- partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log");
- }
- };
-
- }
-
}
\ No newline at end of file
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
deleted file mode 100644
index e6ae7bc..0000000
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ /dev/null
@@ -1,40 +0,0 @@
-//package com.casic.controller;
-//
-//import com.alibaba.fastjson.JSON;
-//import com.casic.service.DeviceDataService;
-//import com.casic.service.ThirdDataService;
-//import lombok.RequiredArgsConstructor;
-//import org.springframework.web.bind.annotation.*;
-//
-//import java.util.Map;
-//
-//@RestController
-//@RequestMapping("/device")
-//@RequiredArgsConstructor
-//public class DeviceDataController {
-//
-// private final DeviceDataService deviceDataService;
-//
-// @RequestMapping("/recent-data")
-// public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType,
-// @RequestParam(value = "recentNum", required = true) String recentNum,
-// @RequestParam(value = "devcode", required = false) String devcode) {
-// return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode);
-// }
-//
-// @RequestMapping("/data/list-page")
-// public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType,
-// @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
-// @RequestParam(value = "pageSize", required = true) Integer pageSize,
-// @RequestParam(value = "devcode", required = false) String devcode) {
-// return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode);
-// }
-//
-// @RequestMapping("/level/{deviceType}")
-// public Object getLevelList(@PathVariable("deviceType")String deviceType) {
-// return deviceDataService.getLevel(deviceType);
-// }
-//
-//
-//
-//}
diff --git a/src/main/java/com/casic/dao/BusWellInfoMapper.java b/src/main/java/com/casic/dao/BusWellInfoMapper.java
new file mode 100644
index 0000000..102dd78
--- /dev/null
+++ b/src/main/java/com/casic/dao/BusWellInfoMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.model.BusWellInfo;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 闸井信息表 Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2019-05-13
+ */
+public interface BusWellInfoMapper extends BaseMapper {
+ BusWellInfo getWellListByCode(@Param("wellCode") String wellCode);
+}
diff --git a/pom.xml b/pom.xml
index f02731e..f80e854 100644
--- a/pom.xml
+++ b/pom.xml
@@ -89,6 +89,12 @@
+ cn.hutool
+ hutool-all
+ 5.8.31
+
+
+
mysql
mysql-connector-java
8.0.16
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
deleted file mode 100644
index 1615fb8..0000000
--- a/src/main/java/com/casic/config/CorsConfig.java
+++ /dev/null
@@ -1,31 +0,0 @@
-//package com.casic.config;
-//
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.web.cors.CorsConfiguration;
-//import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
-//import org.springframework.web.filter.CorsFilter;
-//
-///**
-// * 基础框架 - 跨域请求配置
-// */
-//@Configuration
-//public class CorsConfig {
-// @Bean
-// public CorsFilter corsFilter() {
-// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
-// source.registerCorsConfiguration("/**", buildConfig());
-// return new CorsFilter(source);
-// }
-//
-// private CorsConfiguration buildConfig() {
-// CorsConfiguration corsConfiguration = new CorsConfiguration();
-// // 1允许任何域名使用
-// corsConfiguration.addAllowedOrigin("*");
-// // 2允许任何头
-// corsConfiguration.addAllowedHeader("*");
-// // 3允许任何方法(post、get等)
-// corsConfiguration.addAllowedMethod("*");
-// return corsConfiguration;
-// }
-//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
deleted file mode 100644
index 726a42f..0000000
--- a/src/main/java/com/casic/config/Knife4jConfiguration.java
+++ /dev/null
@@ -1,38 +0,0 @@
-//package com.casic.config;
-//
-//import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
-//import org.springframework.beans.factory.annotation.Value;
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import springfox.documentation.builders.ApiInfoBuilder;
-//import springfox.documentation.builders.PathSelectors;
-//import springfox.documentation.builders.RequestHandlerSelectors;
-//import springfox.documentation.spi.DocumentationType;
-//import springfox.documentation.spring.web.plugins.Docket;
-//
-//@Configuration
-//@EnableKnife4j
-//public class Knife4jConfiguration {
-//
-// @Value(value = "${swagger.enable}")
-// public boolean enable;
-// @Value(value = "${swagger.groupName}")
-// public String groupName;
-//
-// @Bean(value = "dockerBean")
-// public Docket dockerBean() {
-// return new Docket(DocumentationType.SWAGGER_2)
-// .apiInfo(new ApiInfoBuilder()
-// //描述字段支持Markdown语法
-// .description("# Knife4j RESTful APIs")
-// .termsOfServiceUrl("https://doc.casic.com/")
-// .version("1.0")
-// .build())
-// //分组名称
-// .groupName(groupName)
-// .select()
-// .apis(RequestHandlerSelectors.basePackage("com.casic"))
-// .paths(PathSelectors.any()).build().enable(enable);
-// }
-//
-//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/task/TaskConfigurer.java b/src/main/java/com/casic/config/task/TaskConfigurer.java
index 6a64d1c..5cd850e 100644
--- a/src/main/java/com/casic/config/task/TaskConfigurer.java
+++ b/src/main/java/com/casic/config/task/TaskConfigurer.java
@@ -5,7 +5,6 @@
import com.casic.service.UserDataDelayReceiver;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
@@ -25,14 +24,8 @@
@Value("${casic.device.online.cron}")
private String onlineStateCron;
- @Value("${casic.device.transfer-user.cron}")
- private String transferUserCron;
- @Value("${casic.device.partition.cron}")
- private String partitionCron;
private final DeviceDataService deviceDataService;
- private final UserDataDelayReceiver userDataDelayReceiver;
- private final IPartitionStrategyService partitionStrategyService;
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
@@ -40,17 +33,7 @@
triggerContext -> {
return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext);
});
- TriggerTask transferUserTask = new TriggerTask(getUserData(),
- triggerContext -> {
- return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext);
- });
- TriggerTask partitionTask = new TriggerTask(createPartition(),
- triggerContext -> {
- return new CronTrigger(partitionCron).nextExecutionTime(triggerContext);
- });
taskRegistrar.addTriggerTask(onlineStateTask);
- taskRegistrar.addTriggerTask(transferUserTask);
- taskRegistrar.addTriggerTask(partitionTask);
}
private Runnable nextDayDevice() {
@@ -62,32 +45,4 @@
}
};
}
-
- /**
- * 定时同步普光
- */
- private Runnable getUserData() {
- return new Runnable() {
- @Override
- public void run() {
- log.info("同步数据的任运行...");
- userDataDelayReceiver.saveNewUserData();
- }
- };
- }
-
- /**
- * 定时同步普光
- */
- private Runnable createPartition() {
- return new Runnable() {
- @Override
- public void run() {
- log.info("定时构建硫化氢数据分区表任务运行...");
- partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log");
- }
- };
-
- }
-
}
\ No newline at end of file
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
deleted file mode 100644
index e6ae7bc..0000000
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ /dev/null
@@ -1,40 +0,0 @@
-//package com.casic.controller;
-//
-//import com.alibaba.fastjson.JSON;
-//import com.casic.service.DeviceDataService;
-//import com.casic.service.ThirdDataService;
-//import lombok.RequiredArgsConstructor;
-//import org.springframework.web.bind.annotation.*;
-//
-//import java.util.Map;
-//
-//@RestController
-//@RequestMapping("/device")
-//@RequiredArgsConstructor
-//public class DeviceDataController {
-//
-// private final DeviceDataService deviceDataService;
-//
-// @RequestMapping("/recent-data")
-// public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType,
-// @RequestParam(value = "recentNum", required = true) String recentNum,
-// @RequestParam(value = "devcode", required = false) String devcode) {
-// return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode);
-// }
-//
-// @RequestMapping("/data/list-page")
-// public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType,
-// @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
-// @RequestParam(value = "pageSize", required = true) Integer pageSize,
-// @RequestParam(value = "devcode", required = false) String devcode) {
-// return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode);
-// }
-//
-// @RequestMapping("/level/{deviceType}")
-// public Object getLevelList(@PathVariable("deviceType")String deviceType) {
-// return deviceDataService.getLevel(deviceType);
-// }
-//
-//
-//
-//}
diff --git a/src/main/java/com/casic/dao/BusWellInfoMapper.java b/src/main/java/com/casic/dao/BusWellInfoMapper.java
new file mode 100644
index 0000000..102dd78
--- /dev/null
+++ b/src/main/java/com/casic/dao/BusWellInfoMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.model.BusWellInfo;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 闸井信息表 Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2019-05-13
+ */
+public interface BusWellInfoMapper extends BaseMapper {
+ BusWellInfo getWellListByCode(@Param("wellCode") String wellCode);
+}
diff --git a/src/main/java/com/casic/model/BusWellInfo.java b/src/main/java/com/casic/model/BusWellInfo.java
new file mode 100644
index 0000000..88c9430
--- /dev/null
+++ b/src/main/java/com/casic/model/BusWellInfo.java
@@ -0,0 +1,163 @@
+package com.casic.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ *
+ * 闸井信息表
+ *
+ *
+ * @author lwh
+ * @since 2019-05-13
+ */
+@EqualsAndHashCode(callSuper = true)
+@TableName("bus_well_info")
+@Data
+public class BusWellInfo extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 井盖编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 井盖名称
+ */
+ @TableField("WELL_NAME")
+ private String wellName;
+ /**
+ * 井深
+ */
+ @TableField("DEEP")
+ private Float deep;
+ /**
+ * 区域
+ */
+ @TableField("AREA")
+ private String area;
+
+ /**
+ * 区域
+ */
+ @TableField("ROAD")
+ private String road;
+ /**
+ * 第三方坐标系X
+ */
+ @TableField("COORDINATE_X")
+ private String coordinateX;
+ /**
+ * 第三方坐标Y
+ */
+ @TableField("COORDINATE_Y")
+ private String coordinateY;
+ /**
+ * 百度纬度
+ */
+ @TableField("LAT_BAIDU")
+ private String latBaidu;
+ /**
+ * 百度经度
+ */
+ @TableField("LNG_BAIDU")
+ private String lngBaidu;
+ /**
+ * 高德经度
+ */
+ @TableField("LNG_GAODE")
+ private String lngGaode;
+ /**
+ * 高德纬度
+ */
+ @TableField("LAT_GAODE")
+ private String latGaode;
+ /**
+ * 位置
+ */
+ @TableField("POSITION")
+ private String position;
+ /**
+ * 部门编号
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+ /**
+ * 路标图片路径集合
+ */
+ @TableField("PHOTOS")
+ private String photos;
+ /**
+ * 备注
+ */
+ @TableField("NOTES")
+ private String notes;
+ /**
+ * 井类型
+ */
+ @TableField("WELL_TYPE")
+ private String wellType;
+ /**
+ * 责任人
+ */
+ @TableField("STAFF")
+ private String staff;
+ /**
+ * 电话
+ */
+ @TableField("TEL")
+ private String tel;
+ /**
+ * 时间戳
+ */
+ @TableField("TS")
+ private Date ts;
+ /**
+ * 是否有效
+ */
+ @TableField("VALID")
+ private String valid;
+ /**
+ * 布防状态
+ */
+ @TableField("BFZT")
+ private String bfzt;
+
+ /**
+ * 维护单位/小组id
+ */
+ @TableField("RESPONSIBLE_DEPT")
+ private Long responsibleDept;
+
+ /**
+ * 井标签备用1
+ */
+ @TableField("WELL_FLAG_1")
+ private String wellFlag1;
+
+ /**
+ * 井标签备用2
+ */
+ @TableField("WELL_FLAG_2")
+ private String wellFlag2;
+
+ /**
+ * 井标签备用3
+ */
+ @TableField("WELL_FLAG_3")
+ private String wellFlag3;
+}
diff --git a/pom.xml b/pom.xml
index f02731e..f80e854 100644
--- a/pom.xml
+++ b/pom.xml
@@ -89,6 +89,12 @@
+ cn.hutool
+ hutool-all
+ 5.8.31
+
+
+
mysql
mysql-connector-java
8.0.16
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
deleted file mode 100644
index 1615fb8..0000000
--- a/src/main/java/com/casic/config/CorsConfig.java
+++ /dev/null
@@ -1,31 +0,0 @@
-//package com.casic.config;
-//
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.web.cors.CorsConfiguration;
-//import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
-//import org.springframework.web.filter.CorsFilter;
-//
-///**
-// * 基础框架 - 跨域请求配置
-// */
-//@Configuration
-//public class CorsConfig {
-// @Bean
-// public CorsFilter corsFilter() {
-// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
-// source.registerCorsConfiguration("/**", buildConfig());
-// return new CorsFilter(source);
-// }
-//
-// private CorsConfiguration buildConfig() {
-// CorsConfiguration corsConfiguration = new CorsConfiguration();
-// // 1允许任何域名使用
-// corsConfiguration.addAllowedOrigin("*");
-// // 2允许任何头
-// corsConfiguration.addAllowedHeader("*");
-// // 3允许任何方法(post、get等)
-// corsConfiguration.addAllowedMethod("*");
-// return corsConfiguration;
-// }
-//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
deleted file mode 100644
index 726a42f..0000000
--- a/src/main/java/com/casic/config/Knife4jConfiguration.java
+++ /dev/null
@@ -1,38 +0,0 @@
-//package com.casic.config;
-//
-//import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
-//import org.springframework.beans.factory.annotation.Value;
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import springfox.documentation.builders.ApiInfoBuilder;
-//import springfox.documentation.builders.PathSelectors;
-//import springfox.documentation.builders.RequestHandlerSelectors;
-//import springfox.documentation.spi.DocumentationType;
-//import springfox.documentation.spring.web.plugins.Docket;
-//
-//@Configuration
-//@EnableKnife4j
-//public class Knife4jConfiguration {
-//
-// @Value(value = "${swagger.enable}")
-// public boolean enable;
-// @Value(value = "${swagger.groupName}")
-// public String groupName;
-//
-// @Bean(value = "dockerBean")
-// public Docket dockerBean() {
-// return new Docket(DocumentationType.SWAGGER_2)
-// .apiInfo(new ApiInfoBuilder()
-// //描述字段支持Markdown语法
-// .description("# Knife4j RESTful APIs")
-// .termsOfServiceUrl("https://doc.casic.com/")
-// .version("1.0")
-// .build())
-// //分组名称
-// .groupName(groupName)
-// .select()
-// .apis(RequestHandlerSelectors.basePackage("com.casic"))
-// .paths(PathSelectors.any()).build().enable(enable);
-// }
-//
-//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/task/TaskConfigurer.java b/src/main/java/com/casic/config/task/TaskConfigurer.java
index 6a64d1c..5cd850e 100644
--- a/src/main/java/com/casic/config/task/TaskConfigurer.java
+++ b/src/main/java/com/casic/config/task/TaskConfigurer.java
@@ -5,7 +5,6 @@
import com.casic.service.UserDataDelayReceiver;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
@@ -25,14 +24,8 @@
@Value("${casic.device.online.cron}")
private String onlineStateCron;
- @Value("${casic.device.transfer-user.cron}")
- private String transferUserCron;
- @Value("${casic.device.partition.cron}")
- private String partitionCron;
private final DeviceDataService deviceDataService;
- private final UserDataDelayReceiver userDataDelayReceiver;
- private final IPartitionStrategyService partitionStrategyService;
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
@@ -40,17 +33,7 @@
triggerContext -> {
return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext);
});
- TriggerTask transferUserTask = new TriggerTask(getUserData(),
- triggerContext -> {
- return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext);
- });
- TriggerTask partitionTask = new TriggerTask(createPartition(),
- triggerContext -> {
- return new CronTrigger(partitionCron).nextExecutionTime(triggerContext);
- });
taskRegistrar.addTriggerTask(onlineStateTask);
- taskRegistrar.addTriggerTask(transferUserTask);
- taskRegistrar.addTriggerTask(partitionTask);
}
private Runnable nextDayDevice() {
@@ -62,32 +45,4 @@
}
};
}
-
- /**
- * 定时同步普光
- */
- private Runnable getUserData() {
- return new Runnable() {
- @Override
- public void run() {
- log.info("同步数据的任运行...");
- userDataDelayReceiver.saveNewUserData();
- }
- };
- }
-
- /**
- * 定时同步普光
- */
- private Runnable createPartition() {
- return new Runnable() {
- @Override
- public void run() {
- log.info("定时构建硫化氢数据分区表任务运行...");
- partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log");
- }
- };
-
- }
-
}
\ No newline at end of file
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
deleted file mode 100644
index e6ae7bc..0000000
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ /dev/null
@@ -1,40 +0,0 @@
-//package com.casic.controller;
-//
-//import com.alibaba.fastjson.JSON;
-//import com.casic.service.DeviceDataService;
-//import com.casic.service.ThirdDataService;
-//import lombok.RequiredArgsConstructor;
-//import org.springframework.web.bind.annotation.*;
-//
-//import java.util.Map;
-//
-//@RestController
-//@RequestMapping("/device")
-//@RequiredArgsConstructor
-//public class DeviceDataController {
-//
-// private final DeviceDataService deviceDataService;
-//
-// @RequestMapping("/recent-data")
-// public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType,
-// @RequestParam(value = "recentNum", required = true) String recentNum,
-// @RequestParam(value = "devcode", required = false) String devcode) {
-// return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode);
-// }
-//
-// @RequestMapping("/data/list-page")
-// public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType,
-// @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
-// @RequestParam(value = "pageSize", required = true) Integer pageSize,
-// @RequestParam(value = "devcode", required = false) String devcode) {
-// return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode);
-// }
-//
-// @RequestMapping("/level/{deviceType}")
-// public Object getLevelList(@PathVariable("deviceType")String deviceType) {
-// return deviceDataService.getLevel(deviceType);
-// }
-//
-//
-//
-//}
diff --git a/src/main/java/com/casic/dao/BusWellInfoMapper.java b/src/main/java/com/casic/dao/BusWellInfoMapper.java
new file mode 100644
index 0000000..102dd78
--- /dev/null
+++ b/src/main/java/com/casic/dao/BusWellInfoMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.model.BusWellInfo;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 闸井信息表 Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2019-05-13
+ */
+public interface BusWellInfoMapper extends BaseMapper {
+ BusWellInfo getWellListByCode(@Param("wellCode") String wellCode);
+}
diff --git a/src/main/java/com/casic/model/BusWellInfo.java b/src/main/java/com/casic/model/BusWellInfo.java
new file mode 100644
index 0000000..88c9430
--- /dev/null
+++ b/src/main/java/com/casic/model/BusWellInfo.java
@@ -0,0 +1,163 @@
+package com.casic.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ *
+ * 闸井信息表
+ *
+ *
+ * @author lwh
+ * @since 2019-05-13
+ */
+@EqualsAndHashCode(callSuper = true)
+@TableName("bus_well_info")
+@Data
+public class BusWellInfo extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 井盖编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 井盖名称
+ */
+ @TableField("WELL_NAME")
+ private String wellName;
+ /**
+ * 井深
+ */
+ @TableField("DEEP")
+ private Float deep;
+ /**
+ * 区域
+ */
+ @TableField("AREA")
+ private String area;
+
+ /**
+ * 区域
+ */
+ @TableField("ROAD")
+ private String road;
+ /**
+ * 第三方坐标系X
+ */
+ @TableField("COORDINATE_X")
+ private String coordinateX;
+ /**
+ * 第三方坐标Y
+ */
+ @TableField("COORDINATE_Y")
+ private String coordinateY;
+ /**
+ * 百度纬度
+ */
+ @TableField("LAT_BAIDU")
+ private String latBaidu;
+ /**
+ * 百度经度
+ */
+ @TableField("LNG_BAIDU")
+ private String lngBaidu;
+ /**
+ * 高德经度
+ */
+ @TableField("LNG_GAODE")
+ private String lngGaode;
+ /**
+ * 高德纬度
+ */
+ @TableField("LAT_GAODE")
+ private String latGaode;
+ /**
+ * 位置
+ */
+ @TableField("POSITION")
+ private String position;
+ /**
+ * 部门编号
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+ /**
+ * 路标图片路径集合
+ */
+ @TableField("PHOTOS")
+ private String photos;
+ /**
+ * 备注
+ */
+ @TableField("NOTES")
+ private String notes;
+ /**
+ * 井类型
+ */
+ @TableField("WELL_TYPE")
+ private String wellType;
+ /**
+ * 责任人
+ */
+ @TableField("STAFF")
+ private String staff;
+ /**
+ * 电话
+ */
+ @TableField("TEL")
+ private String tel;
+ /**
+ * 时间戳
+ */
+ @TableField("TS")
+ private Date ts;
+ /**
+ * 是否有效
+ */
+ @TableField("VALID")
+ private String valid;
+ /**
+ * 布防状态
+ */
+ @TableField("BFZT")
+ private String bfzt;
+
+ /**
+ * 维护单位/小组id
+ */
+ @TableField("RESPONSIBLE_DEPT")
+ private Long responsibleDept;
+
+ /**
+ * 井标签备用1
+ */
+ @TableField("WELL_FLAG_1")
+ private String wellFlag1;
+
+ /**
+ * 井标签备用2
+ */
+ @TableField("WELL_FLAG_2")
+ private String wellFlag2;
+
+ /**
+ * 井标签备用3
+ */
+ @TableField("WELL_FLAG_3")
+ private String wellFlag3;
+}
diff --git a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java
index e156160..2feb154 100644
--- a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java
@@ -1,17 +1,21 @@
package com.casic.service.impl;
+import cn.hutool.core.util.ObjectUtil;
import com.alibaba.druid.util.StringUtils;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.casic.dao.AlarmRecordMapper;
+import com.casic.dao.BusWellInfoMapper;
import com.casic.dao.DataH2sMapper;
import com.casic.enums.H2sParamsEnum;
import com.casic.model.AlarmRecord;
+import com.casic.model.BusWellInfo;
import com.casic.model.DataH2s;
import com.casic.model.User;
import com.casic.service.ThirdDataService;
import com.casic.util.RedisCommon;
+import com.casic.util.SMSSendUtil;
import com.casic.util.WebSocket;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -35,7 +39,9 @@
private final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
private final RedisCommon redisCommon;
private final AlarmRecordMapper alarmRecordMapper;
+ private final BusWellInfoMapper wellMapper;
private final WebSocket webSocket;
+ private final SMSSendUtil smsUtil;
private final DataScopeBuilder dataScopeBuilder;
@Value("${casic.device.apn}")
@@ -58,7 +64,7 @@
}
}
} catch (DataAccessException dae) {
- log.error("设备上报数据异常,设备传入的json是{},异常信息{}", dae.getMessage());
+ log.error("设备上报数据异常,设备传入的json是{},异常信息{}", h2sDataMap, dae.getMessage());
}
return defaultDeliveryConfig(null);
}
@@ -78,16 +84,19 @@
//判断是否有下发配置必须
map.put("status", ObjectUtils.isNotEmpty(configDataMap) ? 200 : 201);
if (ObjectUtils.isNotEmpty(configDataMap) && configDataMap.containsKey("interval")) {
- configDataMap.put("interval", (String) configDataMap.get("interval"));
- configDataMap.put("port", (String) configDataMap.get("port"));
- configDataMap.put("apn",apn);
- configDataMap.put("period", (String) configDataMap.get("period"));
- configDataMap.put("repeat", (String) configDataMap.get("repeat"));
-
+ configDataMap.put("interval", String.valueOf(configDataMap.get("interval")));
+ configDataMap.put("port", String.valueOf(configDataMap.get("port")));
+ configDataMap.put("apn", apn);
+ configDataMap.put("period", String.valueOf(configDataMap.get("period")) );
+ configDataMap.put("repeat", String.valueOf(configDataMap.get("repeat")) );
+ configDataMap.put("thresh", String.valueOf(configDataMap.get("thresh")) );
}
map.put("params", configDataMap);
//可省略
map.put("timeout", 30000);
+ if (ObjectUtils.isNotEmpty(configDataMap)) {
+ log.info("发送配置信息到things board: {}", map);
+ }
return map;
}
@@ -128,6 +137,7 @@
checkAlarm(dataH2s);
Map configDataMap = redisCommon.getMsg(devcode);
if (ObjectUtils.isNotEmpty(configDataMap)) {
+ log.info("有需要下发的配置项: {}", configDataMap);
return defaultDeliveryConfig(configDataMap);
}
}
@@ -160,11 +170,19 @@
}
if (!StringUtils.isEmpty(dataH2s.getStrength()) && !"null".equals(dataH2s.getStrength())) {
String status = "0";
- this.baseMapper.cancelAlarm(dataH2s.getDevcode(), status);
- if (Float.valueOf(dataH2s.getStrength()) > ruleValue) {
+ int currAlarmCount = this.baseMapper.cancelAlarm(dataH2s.getDevcode(), status);
+ if (Float.parseFloat(dataH2s.getStrength()) > ruleValue) {
Long id = this.baseMapper.getDeviceId(dataH2s.getDevcode());
alarmRecordMapper.insert(buildAlarmRecord(dataH2s, id));
- threadPoolExecutor.execute(() -> sendAlarm("浓度超限", this.baseMapper.getDeptIdsByDevcode(dataH2s.getDevcode())));
+
+ // 推送websocket 一直超限可以一直推送websocket消息
+ threadPoolExecutor.execute(() -> sendAlarm("硫化氢浓度超限", dataH2s.getDevcode(), dataH2s.getStrength(),
+ this.baseMapper.getDeptIdsByDevcode(dataH2s.getDevcode())));
+
+ // 是新报警的时候才推送报警短信
+ if (currAlarmCount == 0) {
+ threadPoolExecutor.execute(() -> sendAlarmSms("检测到硫化氢浓度超限", dataH2s.getWellCode(), dataH2s.getStrength(), dataH2s.getUptime()));
+ }
}
}
}
@@ -184,7 +202,7 @@
}
// PC推送
- private void sendAlarm(String msg, Long deptId) {
+ private void sendAlarm(String msg, String devCode, String value, Long deptId) {
List userIds = new ArrayList<>();
List userList = dataScopeBuilder.DataScopeProvider(deptId);
for (User user : userList) {
@@ -194,51 +212,25 @@
Map map = new HashMap();
map.put("message", msg);
map.put("type", "alarm");
+ map.put("deviceNo", devCode);
+ map.put("value", value);
webSocket.sendListMessage(userIds, JSON.toJSONString(map));
} else {
log.info("告警消息找不到责任人,pc端未推送:" + msg);
}
}
- // "在2023年1月12号 16时43分23秒,设备41232561发生了压力超标/浓度超限,数值为20"
- // + "设备" + devcode + "发生了压力超标,压力值为" + presss
- private void alarmPushBuilder(String devcode, String presss) {
-// ResponseData responseData = (ResponseData) alarmPushService.getAlarmPush("H2S");
-// AlarmPushConfig alarmPushConfig = (AlarmPushConfig) responseData.getData();
-// if (alarmPushConfig.getEnable().equals(1)) {
-// if (alarmPushConfig.getWebsocketAlarm().equals(1)) {
-// String msg = "在" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + ","
-// + "设备" + devcode + "发生了压力超标,压力值为" + presss;
-// try {
-// messagePusherService.updateSinkJob("", URLDecoder.decode(msg, "UTF-8"));
-// } catch (UnsupportedEncodingException uee) {
-// log.error("websocket推送,内容转码出现异常,异常信息为{}", uee.getMessage());
-// }
-// }
-// if (alarmPushConfig.getShortMessageAlarm().equals(1)) {
-// JSONArray msglist = new JSONArray();
-// JSONObject msgMap = new JSONObject();
-// msgMap.put("time", new SimpleDateFormat("yyyyMMdd HH:mm:ss").format(new Date()));
-// msgMap.put("devcode", devcode);
-// msgMap.put("value", presss);
-// msgMap.put("content", "压力超标");
-// String phoneJson = "";
-// List aliSignNameList = new ArrayList<>();
-// String aliSignName = aliYunConfig.getSignNameJson();
-// if (!org.apache.commons.lang3.StringUtils.isEmpty(alarmPushConfig.getPhoneArray())) {
-// String[] phones = alarmPushConfig.getPhoneArray().split(",");
-// List phoneList = new ArrayList<>();
-// for (String phone : phones) {
-// msglist.add(msgMap);
-// phoneList.add(phone);
-// aliSignNameList.add(aliSignName);
-// }
-// phoneJson = JSONObject.toJSONString(phoneList);
-// }
-// sendBatchSmsUtil.sendMsg(phoneJson, JSON.toJSONString(msgMap), JSONObject.toJSONString(aliSignNameList));
-// }
-// }
+ private void sendAlarmSms(String msg, String wellCode, String value, String alarmTime) {
+ BusWellInfo wellInfo = wellMapper.getWellListByCode(wellCode);
+ if (null != wellInfo && ObjectUtil.isNotEmpty(wellInfo.getTel())) {
+ // 拼接报警信息
+ String content = msg + "," + // 发现硫化氢泄漏,
+ "点位:" + wellInfo.getWellName() + ",详细位置:" + wellInfo.getPosition() + "," + // 点位:名称,位置,
+ "浓度值:" + value + "ppm," + // 浓度值
+ "时间:" + alarmTime + "," + // 时间
+ "请及时处理。"; // 请及时处理。
+
+ smsUtil.sendSms(wellInfo.getTel(), content);
+ }
}
-
-
}
diff --git a/pom.xml b/pom.xml
index f02731e..f80e854 100644
--- a/pom.xml
+++ b/pom.xml
@@ -89,6 +89,12 @@
+ cn.hutool
+ hutool-all
+ 5.8.31
+
+
+
mysql
mysql-connector-java
8.0.16
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
deleted file mode 100644
index 1615fb8..0000000
--- a/src/main/java/com/casic/config/CorsConfig.java
+++ /dev/null
@@ -1,31 +0,0 @@
-//package com.casic.config;
-//
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.web.cors.CorsConfiguration;
-//import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
-//import org.springframework.web.filter.CorsFilter;
-//
-///**
-// * 基础框架 - 跨域请求配置
-// */
-//@Configuration
-//public class CorsConfig {
-// @Bean
-// public CorsFilter corsFilter() {
-// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
-// source.registerCorsConfiguration("/**", buildConfig());
-// return new CorsFilter(source);
-// }
-//
-// private CorsConfiguration buildConfig() {
-// CorsConfiguration corsConfiguration = new CorsConfiguration();
-// // 1允许任何域名使用
-// corsConfiguration.addAllowedOrigin("*");
-// // 2允许任何头
-// corsConfiguration.addAllowedHeader("*");
-// // 3允许任何方法(post、get等)
-// corsConfiguration.addAllowedMethod("*");
-// return corsConfiguration;
-// }
-//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
deleted file mode 100644
index 726a42f..0000000
--- a/src/main/java/com/casic/config/Knife4jConfiguration.java
+++ /dev/null
@@ -1,38 +0,0 @@
-//package com.casic.config;
-//
-//import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
-//import org.springframework.beans.factory.annotation.Value;
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import springfox.documentation.builders.ApiInfoBuilder;
-//import springfox.documentation.builders.PathSelectors;
-//import springfox.documentation.builders.RequestHandlerSelectors;
-//import springfox.documentation.spi.DocumentationType;
-//import springfox.documentation.spring.web.plugins.Docket;
-//
-//@Configuration
-//@EnableKnife4j
-//public class Knife4jConfiguration {
-//
-// @Value(value = "${swagger.enable}")
-// public boolean enable;
-// @Value(value = "${swagger.groupName}")
-// public String groupName;
-//
-// @Bean(value = "dockerBean")
-// public Docket dockerBean() {
-// return new Docket(DocumentationType.SWAGGER_2)
-// .apiInfo(new ApiInfoBuilder()
-// //描述字段支持Markdown语法
-// .description("# Knife4j RESTful APIs")
-// .termsOfServiceUrl("https://doc.casic.com/")
-// .version("1.0")
-// .build())
-// //分组名称
-// .groupName(groupName)
-// .select()
-// .apis(RequestHandlerSelectors.basePackage("com.casic"))
-// .paths(PathSelectors.any()).build().enable(enable);
-// }
-//
-//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/task/TaskConfigurer.java b/src/main/java/com/casic/config/task/TaskConfigurer.java
index 6a64d1c..5cd850e 100644
--- a/src/main/java/com/casic/config/task/TaskConfigurer.java
+++ b/src/main/java/com/casic/config/task/TaskConfigurer.java
@@ -5,7 +5,6 @@
import com.casic.service.UserDataDelayReceiver;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
@@ -25,14 +24,8 @@
@Value("${casic.device.online.cron}")
private String onlineStateCron;
- @Value("${casic.device.transfer-user.cron}")
- private String transferUserCron;
- @Value("${casic.device.partition.cron}")
- private String partitionCron;
private final DeviceDataService deviceDataService;
- private final UserDataDelayReceiver userDataDelayReceiver;
- private final IPartitionStrategyService partitionStrategyService;
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
@@ -40,17 +33,7 @@
triggerContext -> {
return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext);
});
- TriggerTask transferUserTask = new TriggerTask(getUserData(),
- triggerContext -> {
- return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext);
- });
- TriggerTask partitionTask = new TriggerTask(createPartition(),
- triggerContext -> {
- return new CronTrigger(partitionCron).nextExecutionTime(triggerContext);
- });
taskRegistrar.addTriggerTask(onlineStateTask);
- taskRegistrar.addTriggerTask(transferUserTask);
- taskRegistrar.addTriggerTask(partitionTask);
}
private Runnable nextDayDevice() {
@@ -62,32 +45,4 @@
}
};
}
-
- /**
- * 定时同步普光
- */
- private Runnable getUserData() {
- return new Runnable() {
- @Override
- public void run() {
- log.info("同步数据的任运行...");
- userDataDelayReceiver.saveNewUserData();
- }
- };
- }
-
- /**
- * 定时同步普光
- */
- private Runnable createPartition() {
- return new Runnable() {
- @Override
- public void run() {
- log.info("定时构建硫化氢数据分区表任务运行...");
- partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log");
- }
- };
-
- }
-
}
\ No newline at end of file
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
deleted file mode 100644
index e6ae7bc..0000000
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ /dev/null
@@ -1,40 +0,0 @@
-//package com.casic.controller;
-//
-//import com.alibaba.fastjson.JSON;
-//import com.casic.service.DeviceDataService;
-//import com.casic.service.ThirdDataService;
-//import lombok.RequiredArgsConstructor;
-//import org.springframework.web.bind.annotation.*;
-//
-//import java.util.Map;
-//
-//@RestController
-//@RequestMapping("/device")
-//@RequiredArgsConstructor
-//public class DeviceDataController {
-//
-// private final DeviceDataService deviceDataService;
-//
-// @RequestMapping("/recent-data")
-// public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType,
-// @RequestParam(value = "recentNum", required = true) String recentNum,
-// @RequestParam(value = "devcode", required = false) String devcode) {
-// return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode);
-// }
-//
-// @RequestMapping("/data/list-page")
-// public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType,
-// @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
-// @RequestParam(value = "pageSize", required = true) Integer pageSize,
-// @RequestParam(value = "devcode", required = false) String devcode) {
-// return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode);
-// }
-//
-// @RequestMapping("/level/{deviceType}")
-// public Object getLevelList(@PathVariable("deviceType")String deviceType) {
-// return deviceDataService.getLevel(deviceType);
-// }
-//
-//
-//
-//}
diff --git a/src/main/java/com/casic/dao/BusWellInfoMapper.java b/src/main/java/com/casic/dao/BusWellInfoMapper.java
new file mode 100644
index 0000000..102dd78
--- /dev/null
+++ b/src/main/java/com/casic/dao/BusWellInfoMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.model.BusWellInfo;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 闸井信息表 Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2019-05-13
+ */
+public interface BusWellInfoMapper extends BaseMapper {
+ BusWellInfo getWellListByCode(@Param("wellCode") String wellCode);
+}
diff --git a/src/main/java/com/casic/model/BusWellInfo.java b/src/main/java/com/casic/model/BusWellInfo.java
new file mode 100644
index 0000000..88c9430
--- /dev/null
+++ b/src/main/java/com/casic/model/BusWellInfo.java
@@ -0,0 +1,163 @@
+package com.casic.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ *
+ * 闸井信息表
+ *
+ *
+ * @author lwh
+ * @since 2019-05-13
+ */
+@EqualsAndHashCode(callSuper = true)
+@TableName("bus_well_info")
+@Data
+public class BusWellInfo extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 井盖编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 井盖名称
+ */
+ @TableField("WELL_NAME")
+ private String wellName;
+ /**
+ * 井深
+ */
+ @TableField("DEEP")
+ private Float deep;
+ /**
+ * 区域
+ */
+ @TableField("AREA")
+ private String area;
+
+ /**
+ * 区域
+ */
+ @TableField("ROAD")
+ private String road;
+ /**
+ * 第三方坐标系X
+ */
+ @TableField("COORDINATE_X")
+ private String coordinateX;
+ /**
+ * 第三方坐标Y
+ */
+ @TableField("COORDINATE_Y")
+ private String coordinateY;
+ /**
+ * 百度纬度
+ */
+ @TableField("LAT_BAIDU")
+ private String latBaidu;
+ /**
+ * 百度经度
+ */
+ @TableField("LNG_BAIDU")
+ private String lngBaidu;
+ /**
+ * 高德经度
+ */
+ @TableField("LNG_GAODE")
+ private String lngGaode;
+ /**
+ * 高德纬度
+ */
+ @TableField("LAT_GAODE")
+ private String latGaode;
+ /**
+ * 位置
+ */
+ @TableField("POSITION")
+ private String position;
+ /**
+ * 部门编号
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+ /**
+ * 路标图片路径集合
+ */
+ @TableField("PHOTOS")
+ private String photos;
+ /**
+ * 备注
+ */
+ @TableField("NOTES")
+ private String notes;
+ /**
+ * 井类型
+ */
+ @TableField("WELL_TYPE")
+ private String wellType;
+ /**
+ * 责任人
+ */
+ @TableField("STAFF")
+ private String staff;
+ /**
+ * 电话
+ */
+ @TableField("TEL")
+ private String tel;
+ /**
+ * 时间戳
+ */
+ @TableField("TS")
+ private Date ts;
+ /**
+ * 是否有效
+ */
+ @TableField("VALID")
+ private String valid;
+ /**
+ * 布防状态
+ */
+ @TableField("BFZT")
+ private String bfzt;
+
+ /**
+ * 维护单位/小组id
+ */
+ @TableField("RESPONSIBLE_DEPT")
+ private Long responsibleDept;
+
+ /**
+ * 井标签备用1
+ */
+ @TableField("WELL_FLAG_1")
+ private String wellFlag1;
+
+ /**
+ * 井标签备用2
+ */
+ @TableField("WELL_FLAG_2")
+ private String wellFlag2;
+
+ /**
+ * 井标签备用3
+ */
+ @TableField("WELL_FLAG_3")
+ private String wellFlag3;
+}
diff --git a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java
index e156160..2feb154 100644
--- a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java
@@ -1,17 +1,21 @@
package com.casic.service.impl;
+import cn.hutool.core.util.ObjectUtil;
import com.alibaba.druid.util.StringUtils;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.casic.dao.AlarmRecordMapper;
+import com.casic.dao.BusWellInfoMapper;
import com.casic.dao.DataH2sMapper;
import com.casic.enums.H2sParamsEnum;
import com.casic.model.AlarmRecord;
+import com.casic.model.BusWellInfo;
import com.casic.model.DataH2s;
import com.casic.model.User;
import com.casic.service.ThirdDataService;
import com.casic.util.RedisCommon;
+import com.casic.util.SMSSendUtil;
import com.casic.util.WebSocket;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -35,7 +39,9 @@
private final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
private final RedisCommon redisCommon;
private final AlarmRecordMapper alarmRecordMapper;
+ private final BusWellInfoMapper wellMapper;
private final WebSocket webSocket;
+ private final SMSSendUtil smsUtil;
private final DataScopeBuilder dataScopeBuilder;
@Value("${casic.device.apn}")
@@ -58,7 +64,7 @@
}
}
} catch (DataAccessException dae) {
- log.error("设备上报数据异常,设备传入的json是{},异常信息{}", dae.getMessage());
+ log.error("设备上报数据异常,设备传入的json是{},异常信息{}", h2sDataMap, dae.getMessage());
}
return defaultDeliveryConfig(null);
}
@@ -78,16 +84,19 @@
//判断是否有下发配置必须
map.put("status", ObjectUtils.isNotEmpty(configDataMap) ? 200 : 201);
if (ObjectUtils.isNotEmpty(configDataMap) && configDataMap.containsKey("interval")) {
- configDataMap.put("interval", (String) configDataMap.get("interval"));
- configDataMap.put("port", (String) configDataMap.get("port"));
- configDataMap.put("apn",apn);
- configDataMap.put("period", (String) configDataMap.get("period"));
- configDataMap.put("repeat", (String) configDataMap.get("repeat"));
-
+ configDataMap.put("interval", String.valueOf(configDataMap.get("interval")));
+ configDataMap.put("port", String.valueOf(configDataMap.get("port")));
+ configDataMap.put("apn", apn);
+ configDataMap.put("period", String.valueOf(configDataMap.get("period")) );
+ configDataMap.put("repeat", String.valueOf(configDataMap.get("repeat")) );
+ configDataMap.put("thresh", String.valueOf(configDataMap.get("thresh")) );
}
map.put("params", configDataMap);
//可省略
map.put("timeout", 30000);
+ if (ObjectUtils.isNotEmpty(configDataMap)) {
+ log.info("发送配置信息到things board: {}", map);
+ }
return map;
}
@@ -128,6 +137,7 @@
checkAlarm(dataH2s);
Map configDataMap = redisCommon.getMsg(devcode);
if (ObjectUtils.isNotEmpty(configDataMap)) {
+ log.info("有需要下发的配置项: {}", configDataMap);
return defaultDeliveryConfig(configDataMap);
}
}
@@ -160,11 +170,19 @@
}
if (!StringUtils.isEmpty(dataH2s.getStrength()) && !"null".equals(dataH2s.getStrength())) {
String status = "0";
- this.baseMapper.cancelAlarm(dataH2s.getDevcode(), status);
- if (Float.valueOf(dataH2s.getStrength()) > ruleValue) {
+ int currAlarmCount = this.baseMapper.cancelAlarm(dataH2s.getDevcode(), status);
+ if (Float.parseFloat(dataH2s.getStrength()) > ruleValue) {
Long id = this.baseMapper.getDeviceId(dataH2s.getDevcode());
alarmRecordMapper.insert(buildAlarmRecord(dataH2s, id));
- threadPoolExecutor.execute(() -> sendAlarm("浓度超限", this.baseMapper.getDeptIdsByDevcode(dataH2s.getDevcode())));
+
+ // 推送websocket 一直超限可以一直推送websocket消息
+ threadPoolExecutor.execute(() -> sendAlarm("硫化氢浓度超限", dataH2s.getDevcode(), dataH2s.getStrength(),
+ this.baseMapper.getDeptIdsByDevcode(dataH2s.getDevcode())));
+
+ // 是新报警的时候才推送报警短信
+ if (currAlarmCount == 0) {
+ threadPoolExecutor.execute(() -> sendAlarmSms("检测到硫化氢浓度超限", dataH2s.getWellCode(), dataH2s.getStrength(), dataH2s.getUptime()));
+ }
}
}
}
@@ -184,7 +202,7 @@
}
// PC推送
- private void sendAlarm(String msg, Long deptId) {
+ private void sendAlarm(String msg, String devCode, String value, Long deptId) {
List userIds = new ArrayList<>();
List userList = dataScopeBuilder.DataScopeProvider(deptId);
for (User user : userList) {
@@ -194,51 +212,25 @@
Map map = new HashMap();
map.put("message", msg);
map.put("type", "alarm");
+ map.put("deviceNo", devCode);
+ map.put("value", value);
webSocket.sendListMessage(userIds, JSON.toJSONString(map));
} else {
log.info("告警消息找不到责任人,pc端未推送:" + msg);
}
}
- // "在2023年1月12号 16时43分23秒,设备41232561发生了压力超标/浓度超限,数值为20"
- // + "设备" + devcode + "发生了压力超标,压力值为" + presss
- private void alarmPushBuilder(String devcode, String presss) {
-// ResponseData responseData = (ResponseData) alarmPushService.getAlarmPush("H2S");
-// AlarmPushConfig alarmPushConfig = (AlarmPushConfig) responseData.getData();
-// if (alarmPushConfig.getEnable().equals(1)) {
-// if (alarmPushConfig.getWebsocketAlarm().equals(1)) {
-// String msg = "在" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + ","
-// + "设备" + devcode + "发生了压力超标,压力值为" + presss;
-// try {
-// messagePusherService.updateSinkJob("", URLDecoder.decode(msg, "UTF-8"));
-// } catch (UnsupportedEncodingException uee) {
-// log.error("websocket推送,内容转码出现异常,异常信息为{}", uee.getMessage());
-// }
-// }
-// if (alarmPushConfig.getShortMessageAlarm().equals(1)) {
-// JSONArray msglist = new JSONArray();
-// JSONObject msgMap = new JSONObject();
-// msgMap.put("time", new SimpleDateFormat("yyyyMMdd HH:mm:ss").format(new Date()));
-// msgMap.put("devcode", devcode);
-// msgMap.put("value", presss);
-// msgMap.put("content", "压力超标");
-// String phoneJson = "";
-// List aliSignNameList = new ArrayList<>();
-// String aliSignName = aliYunConfig.getSignNameJson();
-// if (!org.apache.commons.lang3.StringUtils.isEmpty(alarmPushConfig.getPhoneArray())) {
-// String[] phones = alarmPushConfig.getPhoneArray().split(",");
-// List phoneList = new ArrayList<>();
-// for (String phone : phones) {
-// msglist.add(msgMap);
-// phoneList.add(phone);
-// aliSignNameList.add(aliSignName);
-// }
-// phoneJson = JSONObject.toJSONString(phoneList);
-// }
-// sendBatchSmsUtil.sendMsg(phoneJson, JSON.toJSONString(msgMap), JSONObject.toJSONString(aliSignNameList));
-// }
-// }
+ private void sendAlarmSms(String msg, String wellCode, String value, String alarmTime) {
+ BusWellInfo wellInfo = wellMapper.getWellListByCode(wellCode);
+ if (null != wellInfo && ObjectUtil.isNotEmpty(wellInfo.getTel())) {
+ // 拼接报警信息
+ String content = msg + "," + // 发现硫化氢泄漏,
+ "点位:" + wellInfo.getWellName() + ",详细位置:" + wellInfo.getPosition() + "," + // 点位:名称,位置,
+ "浓度值:" + value + "ppm," + // 浓度值
+ "时间:" + alarmTime + "," + // 时间
+ "请及时处理。"; // 请及时处理。
+
+ smsUtil.sendSms(wellInfo.getTel(), content);
+ }
}
-
-
}
diff --git a/src/main/java/com/casic/util/SMSSendUtil.java b/src/main/java/com/casic/util/SMSSendUtil.java
new file mode 100644
index 0000000..cd9c452
--- /dev/null
+++ b/src/main/java/com/casic/util/SMSSendUtil.java
@@ -0,0 +1,41 @@
+package com.casic.util;
+
+import cn.hutool.http.HttpResponse;
+import cn.hutool.http.HttpRequest;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * 此注解相当于设置访问URL
+ */
+@Component
+@Data
+@Slf4j
+@ConfigurationProperties(prefix = "casic.sms")
+public class SMSSendUtil {
+
+ private String url;
+ private String name;
+ private String token;
+ private String systemName;
+
+ public void sendSms(String phoneNums, String content) {
+ log.info("向【{}】发送短信:【{}】", phoneNums, content);
+
+ Map params = new HashMap<>();
+ params.put("name", name);
+ params.put("token", token);
+ params.put("phoneNums", phoneNums);
+ params.put("content", systemName + ":" + content);
+
+ HttpResponse httpResponse = HttpRequest.post(url).form(params).execute();
+ String result = httpResponse.body();
+ log.debug("短信接口调用返回{}", result);
+ }
+}
diff --git a/pom.xml b/pom.xml
index f02731e..f80e854 100644
--- a/pom.xml
+++ b/pom.xml
@@ -89,6 +89,12 @@
+ cn.hutool
+ hutool-all
+ 5.8.31
+
+
+
mysql
mysql-connector-java
8.0.16
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
deleted file mode 100644
index 1615fb8..0000000
--- a/src/main/java/com/casic/config/CorsConfig.java
+++ /dev/null
@@ -1,31 +0,0 @@
-//package com.casic.config;
-//
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.web.cors.CorsConfiguration;
-//import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
-//import org.springframework.web.filter.CorsFilter;
-//
-///**
-// * 基础框架 - 跨域请求配置
-// */
-//@Configuration
-//public class CorsConfig {
-// @Bean
-// public CorsFilter corsFilter() {
-// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
-// source.registerCorsConfiguration("/**", buildConfig());
-// return new CorsFilter(source);
-// }
-//
-// private CorsConfiguration buildConfig() {
-// CorsConfiguration corsConfiguration = new CorsConfiguration();
-// // 1允许任何域名使用
-// corsConfiguration.addAllowedOrigin("*");
-// // 2允许任何头
-// corsConfiguration.addAllowedHeader("*");
-// // 3允许任何方法(post、get等)
-// corsConfiguration.addAllowedMethod("*");
-// return corsConfiguration;
-// }
-//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
deleted file mode 100644
index 726a42f..0000000
--- a/src/main/java/com/casic/config/Knife4jConfiguration.java
+++ /dev/null
@@ -1,38 +0,0 @@
-//package com.casic.config;
-//
-//import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
-//import org.springframework.beans.factory.annotation.Value;
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import springfox.documentation.builders.ApiInfoBuilder;
-//import springfox.documentation.builders.PathSelectors;
-//import springfox.documentation.builders.RequestHandlerSelectors;
-//import springfox.documentation.spi.DocumentationType;
-//import springfox.documentation.spring.web.plugins.Docket;
-//
-//@Configuration
-//@EnableKnife4j
-//public class Knife4jConfiguration {
-//
-// @Value(value = "${swagger.enable}")
-// public boolean enable;
-// @Value(value = "${swagger.groupName}")
-// public String groupName;
-//
-// @Bean(value = "dockerBean")
-// public Docket dockerBean() {
-// return new Docket(DocumentationType.SWAGGER_2)
-// .apiInfo(new ApiInfoBuilder()
-// //描述字段支持Markdown语法
-// .description("# Knife4j RESTful APIs")
-// .termsOfServiceUrl("https://doc.casic.com/")
-// .version("1.0")
-// .build())
-// //分组名称
-// .groupName(groupName)
-// .select()
-// .apis(RequestHandlerSelectors.basePackage("com.casic"))
-// .paths(PathSelectors.any()).build().enable(enable);
-// }
-//
-//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/task/TaskConfigurer.java b/src/main/java/com/casic/config/task/TaskConfigurer.java
index 6a64d1c..5cd850e 100644
--- a/src/main/java/com/casic/config/task/TaskConfigurer.java
+++ b/src/main/java/com/casic/config/task/TaskConfigurer.java
@@ -5,7 +5,6 @@
import com.casic.service.UserDataDelayReceiver;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
@@ -25,14 +24,8 @@
@Value("${casic.device.online.cron}")
private String onlineStateCron;
- @Value("${casic.device.transfer-user.cron}")
- private String transferUserCron;
- @Value("${casic.device.partition.cron}")
- private String partitionCron;
private final DeviceDataService deviceDataService;
- private final UserDataDelayReceiver userDataDelayReceiver;
- private final IPartitionStrategyService partitionStrategyService;
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
@@ -40,17 +33,7 @@
triggerContext -> {
return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext);
});
- TriggerTask transferUserTask = new TriggerTask(getUserData(),
- triggerContext -> {
- return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext);
- });
- TriggerTask partitionTask = new TriggerTask(createPartition(),
- triggerContext -> {
- return new CronTrigger(partitionCron).nextExecutionTime(triggerContext);
- });
taskRegistrar.addTriggerTask(onlineStateTask);
- taskRegistrar.addTriggerTask(transferUserTask);
- taskRegistrar.addTriggerTask(partitionTask);
}
private Runnable nextDayDevice() {
@@ -62,32 +45,4 @@
}
};
}
-
- /**
- * 定时同步普光
- */
- private Runnable getUserData() {
- return new Runnable() {
- @Override
- public void run() {
- log.info("同步数据的任运行...");
- userDataDelayReceiver.saveNewUserData();
- }
- };
- }
-
- /**
- * 定时同步普光
- */
- private Runnable createPartition() {
- return new Runnable() {
- @Override
- public void run() {
- log.info("定时构建硫化氢数据分区表任务运行...");
- partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log");
- }
- };
-
- }
-
}
\ No newline at end of file
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
deleted file mode 100644
index e6ae7bc..0000000
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ /dev/null
@@ -1,40 +0,0 @@
-//package com.casic.controller;
-//
-//import com.alibaba.fastjson.JSON;
-//import com.casic.service.DeviceDataService;
-//import com.casic.service.ThirdDataService;
-//import lombok.RequiredArgsConstructor;
-//import org.springframework.web.bind.annotation.*;
-//
-//import java.util.Map;
-//
-//@RestController
-//@RequestMapping("/device")
-//@RequiredArgsConstructor
-//public class DeviceDataController {
-//
-// private final DeviceDataService deviceDataService;
-//
-// @RequestMapping("/recent-data")
-// public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType,
-// @RequestParam(value = "recentNum", required = true) String recentNum,
-// @RequestParam(value = "devcode", required = false) String devcode) {
-// return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode);
-// }
-//
-// @RequestMapping("/data/list-page")
-// public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType,
-// @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
-// @RequestParam(value = "pageSize", required = true) Integer pageSize,
-// @RequestParam(value = "devcode", required = false) String devcode) {
-// return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode);
-// }
-//
-// @RequestMapping("/level/{deviceType}")
-// public Object getLevelList(@PathVariable("deviceType")String deviceType) {
-// return deviceDataService.getLevel(deviceType);
-// }
-//
-//
-//
-//}
diff --git a/src/main/java/com/casic/dao/BusWellInfoMapper.java b/src/main/java/com/casic/dao/BusWellInfoMapper.java
new file mode 100644
index 0000000..102dd78
--- /dev/null
+++ b/src/main/java/com/casic/dao/BusWellInfoMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.model.BusWellInfo;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 闸井信息表 Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2019-05-13
+ */
+public interface BusWellInfoMapper extends BaseMapper {
+ BusWellInfo getWellListByCode(@Param("wellCode") String wellCode);
+}
diff --git a/src/main/java/com/casic/model/BusWellInfo.java b/src/main/java/com/casic/model/BusWellInfo.java
new file mode 100644
index 0000000..88c9430
--- /dev/null
+++ b/src/main/java/com/casic/model/BusWellInfo.java
@@ -0,0 +1,163 @@
+package com.casic.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ *
+ * 闸井信息表
+ *
+ *
+ * @author lwh
+ * @since 2019-05-13
+ */
+@EqualsAndHashCode(callSuper = true)
+@TableName("bus_well_info")
+@Data
+public class BusWellInfo extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 井盖编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 井盖名称
+ */
+ @TableField("WELL_NAME")
+ private String wellName;
+ /**
+ * 井深
+ */
+ @TableField("DEEP")
+ private Float deep;
+ /**
+ * 区域
+ */
+ @TableField("AREA")
+ private String area;
+
+ /**
+ * 区域
+ */
+ @TableField("ROAD")
+ private String road;
+ /**
+ * 第三方坐标系X
+ */
+ @TableField("COORDINATE_X")
+ private String coordinateX;
+ /**
+ * 第三方坐标Y
+ */
+ @TableField("COORDINATE_Y")
+ private String coordinateY;
+ /**
+ * 百度纬度
+ */
+ @TableField("LAT_BAIDU")
+ private String latBaidu;
+ /**
+ * 百度经度
+ */
+ @TableField("LNG_BAIDU")
+ private String lngBaidu;
+ /**
+ * 高德经度
+ */
+ @TableField("LNG_GAODE")
+ private String lngGaode;
+ /**
+ * 高德纬度
+ */
+ @TableField("LAT_GAODE")
+ private String latGaode;
+ /**
+ * 位置
+ */
+ @TableField("POSITION")
+ private String position;
+ /**
+ * 部门编号
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+ /**
+ * 路标图片路径集合
+ */
+ @TableField("PHOTOS")
+ private String photos;
+ /**
+ * 备注
+ */
+ @TableField("NOTES")
+ private String notes;
+ /**
+ * 井类型
+ */
+ @TableField("WELL_TYPE")
+ private String wellType;
+ /**
+ * 责任人
+ */
+ @TableField("STAFF")
+ private String staff;
+ /**
+ * 电话
+ */
+ @TableField("TEL")
+ private String tel;
+ /**
+ * 时间戳
+ */
+ @TableField("TS")
+ private Date ts;
+ /**
+ * 是否有效
+ */
+ @TableField("VALID")
+ private String valid;
+ /**
+ * 布防状态
+ */
+ @TableField("BFZT")
+ private String bfzt;
+
+ /**
+ * 维护单位/小组id
+ */
+ @TableField("RESPONSIBLE_DEPT")
+ private Long responsibleDept;
+
+ /**
+ * 井标签备用1
+ */
+ @TableField("WELL_FLAG_1")
+ private String wellFlag1;
+
+ /**
+ * 井标签备用2
+ */
+ @TableField("WELL_FLAG_2")
+ private String wellFlag2;
+
+ /**
+ * 井标签备用3
+ */
+ @TableField("WELL_FLAG_3")
+ private String wellFlag3;
+}
diff --git a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java
index e156160..2feb154 100644
--- a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java
@@ -1,17 +1,21 @@
package com.casic.service.impl;
+import cn.hutool.core.util.ObjectUtil;
import com.alibaba.druid.util.StringUtils;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.casic.dao.AlarmRecordMapper;
+import com.casic.dao.BusWellInfoMapper;
import com.casic.dao.DataH2sMapper;
import com.casic.enums.H2sParamsEnum;
import com.casic.model.AlarmRecord;
+import com.casic.model.BusWellInfo;
import com.casic.model.DataH2s;
import com.casic.model.User;
import com.casic.service.ThirdDataService;
import com.casic.util.RedisCommon;
+import com.casic.util.SMSSendUtil;
import com.casic.util.WebSocket;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -35,7 +39,9 @@
private final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
private final RedisCommon redisCommon;
private final AlarmRecordMapper alarmRecordMapper;
+ private final BusWellInfoMapper wellMapper;
private final WebSocket webSocket;
+ private final SMSSendUtil smsUtil;
private final DataScopeBuilder dataScopeBuilder;
@Value("${casic.device.apn}")
@@ -58,7 +64,7 @@
}
}
} catch (DataAccessException dae) {
- log.error("设备上报数据异常,设备传入的json是{},异常信息{}", dae.getMessage());
+ log.error("设备上报数据异常,设备传入的json是{},异常信息{}", h2sDataMap, dae.getMessage());
}
return defaultDeliveryConfig(null);
}
@@ -78,16 +84,19 @@
//判断是否有下发配置必须
map.put("status", ObjectUtils.isNotEmpty(configDataMap) ? 200 : 201);
if (ObjectUtils.isNotEmpty(configDataMap) && configDataMap.containsKey("interval")) {
- configDataMap.put("interval", (String) configDataMap.get("interval"));
- configDataMap.put("port", (String) configDataMap.get("port"));
- configDataMap.put("apn",apn);
- configDataMap.put("period", (String) configDataMap.get("period"));
- configDataMap.put("repeat", (String) configDataMap.get("repeat"));
-
+ configDataMap.put("interval", String.valueOf(configDataMap.get("interval")));
+ configDataMap.put("port", String.valueOf(configDataMap.get("port")));
+ configDataMap.put("apn", apn);
+ configDataMap.put("period", String.valueOf(configDataMap.get("period")) );
+ configDataMap.put("repeat", String.valueOf(configDataMap.get("repeat")) );
+ configDataMap.put("thresh", String.valueOf(configDataMap.get("thresh")) );
}
map.put("params", configDataMap);
//可省略
map.put("timeout", 30000);
+ if (ObjectUtils.isNotEmpty(configDataMap)) {
+ log.info("发送配置信息到things board: {}", map);
+ }
return map;
}
@@ -128,6 +137,7 @@
checkAlarm(dataH2s);
Map configDataMap = redisCommon.getMsg(devcode);
if (ObjectUtils.isNotEmpty(configDataMap)) {
+ log.info("有需要下发的配置项: {}", configDataMap);
return defaultDeliveryConfig(configDataMap);
}
}
@@ -160,11 +170,19 @@
}
if (!StringUtils.isEmpty(dataH2s.getStrength()) && !"null".equals(dataH2s.getStrength())) {
String status = "0";
- this.baseMapper.cancelAlarm(dataH2s.getDevcode(), status);
- if (Float.valueOf(dataH2s.getStrength()) > ruleValue) {
+ int currAlarmCount = this.baseMapper.cancelAlarm(dataH2s.getDevcode(), status);
+ if (Float.parseFloat(dataH2s.getStrength()) > ruleValue) {
Long id = this.baseMapper.getDeviceId(dataH2s.getDevcode());
alarmRecordMapper.insert(buildAlarmRecord(dataH2s, id));
- threadPoolExecutor.execute(() -> sendAlarm("浓度超限", this.baseMapper.getDeptIdsByDevcode(dataH2s.getDevcode())));
+
+ // 推送websocket 一直超限可以一直推送websocket消息
+ threadPoolExecutor.execute(() -> sendAlarm("硫化氢浓度超限", dataH2s.getDevcode(), dataH2s.getStrength(),
+ this.baseMapper.getDeptIdsByDevcode(dataH2s.getDevcode())));
+
+ // 是新报警的时候才推送报警短信
+ if (currAlarmCount == 0) {
+ threadPoolExecutor.execute(() -> sendAlarmSms("检测到硫化氢浓度超限", dataH2s.getWellCode(), dataH2s.getStrength(), dataH2s.getUptime()));
+ }
}
}
}
@@ -184,7 +202,7 @@
}
// PC推送
- private void sendAlarm(String msg, Long deptId) {
+ private void sendAlarm(String msg, String devCode, String value, Long deptId) {
List userIds = new ArrayList<>();
List userList = dataScopeBuilder.DataScopeProvider(deptId);
for (User user : userList) {
@@ -194,51 +212,25 @@
Map map = new HashMap();
map.put("message", msg);
map.put("type", "alarm");
+ map.put("deviceNo", devCode);
+ map.put("value", value);
webSocket.sendListMessage(userIds, JSON.toJSONString(map));
} else {
log.info("告警消息找不到责任人,pc端未推送:" + msg);
}
}
- // "在2023年1月12号 16时43分23秒,设备41232561发生了压力超标/浓度超限,数值为20"
- // + "设备" + devcode + "发生了压力超标,压力值为" + presss
- private void alarmPushBuilder(String devcode, String presss) {
-// ResponseData responseData = (ResponseData) alarmPushService.getAlarmPush("H2S");
-// AlarmPushConfig alarmPushConfig = (AlarmPushConfig) responseData.getData();
-// if (alarmPushConfig.getEnable().equals(1)) {
-// if (alarmPushConfig.getWebsocketAlarm().equals(1)) {
-// String msg = "在" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + ","
-// + "设备" + devcode + "发生了压力超标,压力值为" + presss;
-// try {
-// messagePusherService.updateSinkJob("", URLDecoder.decode(msg, "UTF-8"));
-// } catch (UnsupportedEncodingException uee) {
-// log.error("websocket推送,内容转码出现异常,异常信息为{}", uee.getMessage());
-// }
-// }
-// if (alarmPushConfig.getShortMessageAlarm().equals(1)) {
-// JSONArray msglist = new JSONArray();
-// JSONObject msgMap = new JSONObject();
-// msgMap.put("time", new SimpleDateFormat("yyyyMMdd HH:mm:ss").format(new Date()));
-// msgMap.put("devcode", devcode);
-// msgMap.put("value", presss);
-// msgMap.put("content", "压力超标");
-// String phoneJson = "";
-// List aliSignNameList = new ArrayList<>();
-// String aliSignName = aliYunConfig.getSignNameJson();
-// if (!org.apache.commons.lang3.StringUtils.isEmpty(alarmPushConfig.getPhoneArray())) {
-// String[] phones = alarmPushConfig.getPhoneArray().split(",");
-// List phoneList = new ArrayList<>();
-// for (String phone : phones) {
-// msglist.add(msgMap);
-// phoneList.add(phone);
-// aliSignNameList.add(aliSignName);
-// }
-// phoneJson = JSONObject.toJSONString(phoneList);
-// }
-// sendBatchSmsUtil.sendMsg(phoneJson, JSON.toJSONString(msgMap), JSONObject.toJSONString(aliSignNameList));
-// }
-// }
+ private void sendAlarmSms(String msg, String wellCode, String value, String alarmTime) {
+ BusWellInfo wellInfo = wellMapper.getWellListByCode(wellCode);
+ if (null != wellInfo && ObjectUtil.isNotEmpty(wellInfo.getTel())) {
+ // 拼接报警信息
+ String content = msg + "," + // 发现硫化氢泄漏,
+ "点位:" + wellInfo.getWellName() + ",详细位置:" + wellInfo.getPosition() + "," + // 点位:名称,位置,
+ "浓度值:" + value + "ppm," + // 浓度值
+ "时间:" + alarmTime + "," + // 时间
+ "请及时处理。"; // 请及时处理。
+
+ smsUtil.sendSms(wellInfo.getTel(), content);
+ }
}
-
-
}
diff --git a/src/main/java/com/casic/util/SMSSendUtil.java b/src/main/java/com/casic/util/SMSSendUtil.java
new file mode 100644
index 0000000..cd9c452
--- /dev/null
+++ b/src/main/java/com/casic/util/SMSSendUtil.java
@@ -0,0 +1,41 @@
+package com.casic.util;
+
+import cn.hutool.http.HttpResponse;
+import cn.hutool.http.HttpRequest;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * 此注解相当于设置访问URL
+ */
+@Component
+@Data
+@Slf4j
+@ConfigurationProperties(prefix = "casic.sms")
+public class SMSSendUtil {
+
+ private String url;
+ private String name;
+ private String token;
+ private String systemName;
+
+ public void sendSms(String phoneNums, String content) {
+ log.info("向【{}】发送短信:【{}】", phoneNums, content);
+
+ Map params = new HashMap<>();
+ params.put("name", name);
+ params.put("token", token);
+ params.put("phoneNums", phoneNums);
+ params.put("content", systemName + ":" + content);
+
+ HttpResponse httpResponse = HttpRequest.post(url).form(params).execute();
+ String result = httpResponse.body();
+ log.debug("短信接口调用返回{}", result);
+ }
+}
diff --git a/src/main/java/com/casic/util/WebSocket.java b/src/main/java/com/casic/util/WebSocket.java
index 1ee283f..4503c06 100644
--- a/src/main/java/com/casic/util/WebSocket.java
+++ b/src/main/java/com/casic/util/WebSocket.java
@@ -1,5 +1,6 @@
package com.casic.util;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.websocket.OnClose;
@@ -17,6 +18,7 @@
* 此注解相当于设置访问URL
*/
@Component
+@Slf4j
@ServerEndpoint("/websocket/{userId}")
public class WebSocket {
private Session session;
@@ -29,24 +31,24 @@
this.session = session;
webSockets.add(this);
sessionPool.put(userId, session);
- System.out.println(userId + "【websocket消息】有新的连接,总数为:" + webSockets.size());
+ log.info("{}【websocket消息】有新的连接,总数为: {}", userId, webSockets.size());
}
@OnClose
public void onClose() {
webSockets.remove(this);
- System.out.println("【websocket消息】连接断开,总数为:" + webSockets.size());
+ log.info("【websocket消息】连接断开,总数为: {}",webSockets.size());
}
@OnMessage
public void onMessage(String message) {
- System.out.println("【websocket消息】收到客户端消息:" + message);
+ log.info("【websocket消息】收到客户端消息: {}", message);
}
// 此为广播消息
public void sendAllMessage(String message) {
for (WebSocket webSocket : webSockets) {
- System.out.println("【websocket消息】广播消息:" + message);
+ log.info("【websocket消息】广播消息: {}", message);
try {
webSocket.session.getAsyncRemote().sendText(message);
} catch (Exception e) {
@@ -57,7 +59,7 @@
// 发送列表消息
public void sendListMessage(List userIds, String message) {
- System.out.println("【websocket消息】列表消息:" + message);
+ log.info("【websocket消息】列表消息: {}", message);
for (String userId : userIds) {
Session session = sessionPool.get(userId);
if (session != null) {
@@ -70,26 +72,9 @@
}
}
- // 发送列表消息
-
-// public void sendListMessage(List userIds, Object data){
-// System.out.println("【websocket消息】列表消息:"+data);
-// for (String userId : userIds) {
-// Session session = sessionPool.get(userId);
-// if (session != null) {
-// try {
-//// session.getAsyncRemote().sendText(message);
-// session.getAsyncRemote().sendObject(data);
-// } catch (Exception e) {
-// e.printStackTrace();
-// }
-// }
-// }
-// }
-
// 此为单点消息
public void sendOneMessage(String userId, String message) {
- System.out.println("【websocket消息】单点消息:" + message);
+ log.info("【websocket消息】单点消息: {}", message);
Session session = sessionPool.get(userId);
if (session != null) {
try {
diff --git a/pom.xml b/pom.xml
index f02731e..f80e854 100644
--- a/pom.xml
+++ b/pom.xml
@@ -89,6 +89,12 @@
+ cn.hutool
+ hutool-all
+ 5.8.31
+
+
+
mysql
mysql-connector-java
8.0.16
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
deleted file mode 100644
index 1615fb8..0000000
--- a/src/main/java/com/casic/config/CorsConfig.java
+++ /dev/null
@@ -1,31 +0,0 @@
-//package com.casic.config;
-//
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.web.cors.CorsConfiguration;
-//import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
-//import org.springframework.web.filter.CorsFilter;
-//
-///**
-// * 基础框架 - 跨域请求配置
-// */
-//@Configuration
-//public class CorsConfig {
-// @Bean
-// public CorsFilter corsFilter() {
-// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
-// source.registerCorsConfiguration("/**", buildConfig());
-// return new CorsFilter(source);
-// }
-//
-// private CorsConfiguration buildConfig() {
-// CorsConfiguration corsConfiguration = new CorsConfiguration();
-// // 1允许任何域名使用
-// corsConfiguration.addAllowedOrigin("*");
-// // 2允许任何头
-// corsConfiguration.addAllowedHeader("*");
-// // 3允许任何方法(post、get等)
-// corsConfiguration.addAllowedMethod("*");
-// return corsConfiguration;
-// }
-//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
deleted file mode 100644
index 726a42f..0000000
--- a/src/main/java/com/casic/config/Knife4jConfiguration.java
+++ /dev/null
@@ -1,38 +0,0 @@
-//package com.casic.config;
-//
-//import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
-//import org.springframework.beans.factory.annotation.Value;
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import springfox.documentation.builders.ApiInfoBuilder;
-//import springfox.documentation.builders.PathSelectors;
-//import springfox.documentation.builders.RequestHandlerSelectors;
-//import springfox.documentation.spi.DocumentationType;
-//import springfox.documentation.spring.web.plugins.Docket;
-//
-//@Configuration
-//@EnableKnife4j
-//public class Knife4jConfiguration {
-//
-// @Value(value = "${swagger.enable}")
-// public boolean enable;
-// @Value(value = "${swagger.groupName}")
-// public String groupName;
-//
-// @Bean(value = "dockerBean")
-// public Docket dockerBean() {
-// return new Docket(DocumentationType.SWAGGER_2)
-// .apiInfo(new ApiInfoBuilder()
-// //描述字段支持Markdown语法
-// .description("# Knife4j RESTful APIs")
-// .termsOfServiceUrl("https://doc.casic.com/")
-// .version("1.0")
-// .build())
-// //分组名称
-// .groupName(groupName)
-// .select()
-// .apis(RequestHandlerSelectors.basePackage("com.casic"))
-// .paths(PathSelectors.any()).build().enable(enable);
-// }
-//
-//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/task/TaskConfigurer.java b/src/main/java/com/casic/config/task/TaskConfigurer.java
index 6a64d1c..5cd850e 100644
--- a/src/main/java/com/casic/config/task/TaskConfigurer.java
+++ b/src/main/java/com/casic/config/task/TaskConfigurer.java
@@ -5,7 +5,6 @@
import com.casic.service.UserDataDelayReceiver;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
@@ -25,14 +24,8 @@
@Value("${casic.device.online.cron}")
private String onlineStateCron;
- @Value("${casic.device.transfer-user.cron}")
- private String transferUserCron;
- @Value("${casic.device.partition.cron}")
- private String partitionCron;
private final DeviceDataService deviceDataService;
- private final UserDataDelayReceiver userDataDelayReceiver;
- private final IPartitionStrategyService partitionStrategyService;
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
@@ -40,17 +33,7 @@
triggerContext -> {
return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext);
});
- TriggerTask transferUserTask = new TriggerTask(getUserData(),
- triggerContext -> {
- return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext);
- });
- TriggerTask partitionTask = new TriggerTask(createPartition(),
- triggerContext -> {
- return new CronTrigger(partitionCron).nextExecutionTime(triggerContext);
- });
taskRegistrar.addTriggerTask(onlineStateTask);
- taskRegistrar.addTriggerTask(transferUserTask);
- taskRegistrar.addTriggerTask(partitionTask);
}
private Runnable nextDayDevice() {
@@ -62,32 +45,4 @@
}
};
}
-
- /**
- * 定时同步普光
- */
- private Runnable getUserData() {
- return new Runnable() {
- @Override
- public void run() {
- log.info("同步数据的任运行...");
- userDataDelayReceiver.saveNewUserData();
- }
- };
- }
-
- /**
- * 定时同步普光
- */
- private Runnable createPartition() {
- return new Runnable() {
- @Override
- public void run() {
- log.info("定时构建硫化氢数据分区表任务运行...");
- partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log");
- }
- };
-
- }
-
}
\ No newline at end of file
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
deleted file mode 100644
index e6ae7bc..0000000
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ /dev/null
@@ -1,40 +0,0 @@
-//package com.casic.controller;
-//
-//import com.alibaba.fastjson.JSON;
-//import com.casic.service.DeviceDataService;
-//import com.casic.service.ThirdDataService;
-//import lombok.RequiredArgsConstructor;
-//import org.springframework.web.bind.annotation.*;
-//
-//import java.util.Map;
-//
-//@RestController
-//@RequestMapping("/device")
-//@RequiredArgsConstructor
-//public class DeviceDataController {
-//
-// private final DeviceDataService deviceDataService;
-//
-// @RequestMapping("/recent-data")
-// public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType,
-// @RequestParam(value = "recentNum", required = true) String recentNum,
-// @RequestParam(value = "devcode", required = false) String devcode) {
-// return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode);
-// }
-//
-// @RequestMapping("/data/list-page")
-// public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType,
-// @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
-// @RequestParam(value = "pageSize", required = true) Integer pageSize,
-// @RequestParam(value = "devcode", required = false) String devcode) {
-// return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode);
-// }
-//
-// @RequestMapping("/level/{deviceType}")
-// public Object getLevelList(@PathVariable("deviceType")String deviceType) {
-// return deviceDataService.getLevel(deviceType);
-// }
-//
-//
-//
-//}
diff --git a/src/main/java/com/casic/dao/BusWellInfoMapper.java b/src/main/java/com/casic/dao/BusWellInfoMapper.java
new file mode 100644
index 0000000..102dd78
--- /dev/null
+++ b/src/main/java/com/casic/dao/BusWellInfoMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.model.BusWellInfo;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 闸井信息表 Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2019-05-13
+ */
+public interface BusWellInfoMapper extends BaseMapper {
+ BusWellInfo getWellListByCode(@Param("wellCode") String wellCode);
+}
diff --git a/src/main/java/com/casic/model/BusWellInfo.java b/src/main/java/com/casic/model/BusWellInfo.java
new file mode 100644
index 0000000..88c9430
--- /dev/null
+++ b/src/main/java/com/casic/model/BusWellInfo.java
@@ -0,0 +1,163 @@
+package com.casic.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ *
+ * 闸井信息表
+ *
+ *
+ * @author lwh
+ * @since 2019-05-13
+ */
+@EqualsAndHashCode(callSuper = true)
+@TableName("bus_well_info")
+@Data
+public class BusWellInfo extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 井盖编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 井盖名称
+ */
+ @TableField("WELL_NAME")
+ private String wellName;
+ /**
+ * 井深
+ */
+ @TableField("DEEP")
+ private Float deep;
+ /**
+ * 区域
+ */
+ @TableField("AREA")
+ private String area;
+
+ /**
+ * 区域
+ */
+ @TableField("ROAD")
+ private String road;
+ /**
+ * 第三方坐标系X
+ */
+ @TableField("COORDINATE_X")
+ private String coordinateX;
+ /**
+ * 第三方坐标Y
+ */
+ @TableField("COORDINATE_Y")
+ private String coordinateY;
+ /**
+ * 百度纬度
+ */
+ @TableField("LAT_BAIDU")
+ private String latBaidu;
+ /**
+ * 百度经度
+ */
+ @TableField("LNG_BAIDU")
+ private String lngBaidu;
+ /**
+ * 高德经度
+ */
+ @TableField("LNG_GAODE")
+ private String lngGaode;
+ /**
+ * 高德纬度
+ */
+ @TableField("LAT_GAODE")
+ private String latGaode;
+ /**
+ * 位置
+ */
+ @TableField("POSITION")
+ private String position;
+ /**
+ * 部门编号
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+ /**
+ * 路标图片路径集合
+ */
+ @TableField("PHOTOS")
+ private String photos;
+ /**
+ * 备注
+ */
+ @TableField("NOTES")
+ private String notes;
+ /**
+ * 井类型
+ */
+ @TableField("WELL_TYPE")
+ private String wellType;
+ /**
+ * 责任人
+ */
+ @TableField("STAFF")
+ private String staff;
+ /**
+ * 电话
+ */
+ @TableField("TEL")
+ private String tel;
+ /**
+ * 时间戳
+ */
+ @TableField("TS")
+ private Date ts;
+ /**
+ * 是否有效
+ */
+ @TableField("VALID")
+ private String valid;
+ /**
+ * 布防状态
+ */
+ @TableField("BFZT")
+ private String bfzt;
+
+ /**
+ * 维护单位/小组id
+ */
+ @TableField("RESPONSIBLE_DEPT")
+ private Long responsibleDept;
+
+ /**
+ * 井标签备用1
+ */
+ @TableField("WELL_FLAG_1")
+ private String wellFlag1;
+
+ /**
+ * 井标签备用2
+ */
+ @TableField("WELL_FLAG_2")
+ private String wellFlag2;
+
+ /**
+ * 井标签备用3
+ */
+ @TableField("WELL_FLAG_3")
+ private String wellFlag3;
+}
diff --git a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java
index e156160..2feb154 100644
--- a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java
@@ -1,17 +1,21 @@
package com.casic.service.impl;
+import cn.hutool.core.util.ObjectUtil;
import com.alibaba.druid.util.StringUtils;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.casic.dao.AlarmRecordMapper;
+import com.casic.dao.BusWellInfoMapper;
import com.casic.dao.DataH2sMapper;
import com.casic.enums.H2sParamsEnum;
import com.casic.model.AlarmRecord;
+import com.casic.model.BusWellInfo;
import com.casic.model.DataH2s;
import com.casic.model.User;
import com.casic.service.ThirdDataService;
import com.casic.util.RedisCommon;
+import com.casic.util.SMSSendUtil;
import com.casic.util.WebSocket;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -35,7 +39,9 @@
private final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
private final RedisCommon redisCommon;
private final AlarmRecordMapper alarmRecordMapper;
+ private final BusWellInfoMapper wellMapper;
private final WebSocket webSocket;
+ private final SMSSendUtil smsUtil;
private final DataScopeBuilder dataScopeBuilder;
@Value("${casic.device.apn}")
@@ -58,7 +64,7 @@
}
}
} catch (DataAccessException dae) {
- log.error("设备上报数据异常,设备传入的json是{},异常信息{}", dae.getMessage());
+ log.error("设备上报数据异常,设备传入的json是{},异常信息{}", h2sDataMap, dae.getMessage());
}
return defaultDeliveryConfig(null);
}
@@ -78,16 +84,19 @@
//判断是否有下发配置必须
map.put("status", ObjectUtils.isNotEmpty(configDataMap) ? 200 : 201);
if (ObjectUtils.isNotEmpty(configDataMap) && configDataMap.containsKey("interval")) {
- configDataMap.put("interval", (String) configDataMap.get("interval"));
- configDataMap.put("port", (String) configDataMap.get("port"));
- configDataMap.put("apn",apn);
- configDataMap.put("period", (String) configDataMap.get("period"));
- configDataMap.put("repeat", (String) configDataMap.get("repeat"));
-
+ configDataMap.put("interval", String.valueOf(configDataMap.get("interval")));
+ configDataMap.put("port", String.valueOf(configDataMap.get("port")));
+ configDataMap.put("apn", apn);
+ configDataMap.put("period", String.valueOf(configDataMap.get("period")) );
+ configDataMap.put("repeat", String.valueOf(configDataMap.get("repeat")) );
+ configDataMap.put("thresh", String.valueOf(configDataMap.get("thresh")) );
}
map.put("params", configDataMap);
//可省略
map.put("timeout", 30000);
+ if (ObjectUtils.isNotEmpty(configDataMap)) {
+ log.info("发送配置信息到things board: {}", map);
+ }
return map;
}
@@ -128,6 +137,7 @@
checkAlarm(dataH2s);
Map configDataMap = redisCommon.getMsg(devcode);
if (ObjectUtils.isNotEmpty(configDataMap)) {
+ log.info("有需要下发的配置项: {}", configDataMap);
return defaultDeliveryConfig(configDataMap);
}
}
@@ -160,11 +170,19 @@
}
if (!StringUtils.isEmpty(dataH2s.getStrength()) && !"null".equals(dataH2s.getStrength())) {
String status = "0";
- this.baseMapper.cancelAlarm(dataH2s.getDevcode(), status);
- if (Float.valueOf(dataH2s.getStrength()) > ruleValue) {
+ int currAlarmCount = this.baseMapper.cancelAlarm(dataH2s.getDevcode(), status);
+ if (Float.parseFloat(dataH2s.getStrength()) > ruleValue) {
Long id = this.baseMapper.getDeviceId(dataH2s.getDevcode());
alarmRecordMapper.insert(buildAlarmRecord(dataH2s, id));
- threadPoolExecutor.execute(() -> sendAlarm("浓度超限", this.baseMapper.getDeptIdsByDevcode(dataH2s.getDevcode())));
+
+ // 推送websocket 一直超限可以一直推送websocket消息
+ threadPoolExecutor.execute(() -> sendAlarm("硫化氢浓度超限", dataH2s.getDevcode(), dataH2s.getStrength(),
+ this.baseMapper.getDeptIdsByDevcode(dataH2s.getDevcode())));
+
+ // 是新报警的时候才推送报警短信
+ if (currAlarmCount == 0) {
+ threadPoolExecutor.execute(() -> sendAlarmSms("检测到硫化氢浓度超限", dataH2s.getWellCode(), dataH2s.getStrength(), dataH2s.getUptime()));
+ }
}
}
}
@@ -184,7 +202,7 @@
}
// PC推送
- private void sendAlarm(String msg, Long deptId) {
+ private void sendAlarm(String msg, String devCode, String value, Long deptId) {
List userIds = new ArrayList<>();
List userList = dataScopeBuilder.DataScopeProvider(deptId);
for (User user : userList) {
@@ -194,51 +212,25 @@
Map map = new HashMap();
map.put("message", msg);
map.put("type", "alarm");
+ map.put("deviceNo", devCode);
+ map.put("value", value);
webSocket.sendListMessage(userIds, JSON.toJSONString(map));
} else {
log.info("告警消息找不到责任人,pc端未推送:" + msg);
}
}
- // "在2023年1月12号 16时43分23秒,设备41232561发生了压力超标/浓度超限,数值为20"
- // + "设备" + devcode + "发生了压力超标,压力值为" + presss
- private void alarmPushBuilder(String devcode, String presss) {
-// ResponseData responseData = (ResponseData) alarmPushService.getAlarmPush("H2S");
-// AlarmPushConfig alarmPushConfig = (AlarmPushConfig) responseData.getData();
-// if (alarmPushConfig.getEnable().equals(1)) {
-// if (alarmPushConfig.getWebsocketAlarm().equals(1)) {
-// String msg = "在" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + ","
-// + "设备" + devcode + "发生了压力超标,压力值为" + presss;
-// try {
-// messagePusherService.updateSinkJob("", URLDecoder.decode(msg, "UTF-8"));
-// } catch (UnsupportedEncodingException uee) {
-// log.error("websocket推送,内容转码出现异常,异常信息为{}", uee.getMessage());
-// }
-// }
-// if (alarmPushConfig.getShortMessageAlarm().equals(1)) {
-// JSONArray msglist = new JSONArray();
-// JSONObject msgMap = new JSONObject();
-// msgMap.put("time", new SimpleDateFormat("yyyyMMdd HH:mm:ss").format(new Date()));
-// msgMap.put("devcode", devcode);
-// msgMap.put("value", presss);
-// msgMap.put("content", "压力超标");
-// String phoneJson = "";
-// List aliSignNameList = new ArrayList<>();
-// String aliSignName = aliYunConfig.getSignNameJson();
-// if (!org.apache.commons.lang3.StringUtils.isEmpty(alarmPushConfig.getPhoneArray())) {
-// String[] phones = alarmPushConfig.getPhoneArray().split(",");
-// List phoneList = new ArrayList<>();
-// for (String phone : phones) {
-// msglist.add(msgMap);
-// phoneList.add(phone);
-// aliSignNameList.add(aliSignName);
-// }
-// phoneJson = JSONObject.toJSONString(phoneList);
-// }
-// sendBatchSmsUtil.sendMsg(phoneJson, JSON.toJSONString(msgMap), JSONObject.toJSONString(aliSignNameList));
-// }
-// }
+ private void sendAlarmSms(String msg, String wellCode, String value, String alarmTime) {
+ BusWellInfo wellInfo = wellMapper.getWellListByCode(wellCode);
+ if (null != wellInfo && ObjectUtil.isNotEmpty(wellInfo.getTel())) {
+ // 拼接报警信息
+ String content = msg + "," + // 发现硫化氢泄漏,
+ "点位:" + wellInfo.getWellName() + ",详细位置:" + wellInfo.getPosition() + "," + // 点位:名称,位置,
+ "浓度值:" + value + "ppm," + // 浓度值
+ "时间:" + alarmTime + "," + // 时间
+ "请及时处理。"; // 请及时处理。
+
+ smsUtil.sendSms(wellInfo.getTel(), content);
+ }
}
-
-
}
diff --git a/src/main/java/com/casic/util/SMSSendUtil.java b/src/main/java/com/casic/util/SMSSendUtil.java
new file mode 100644
index 0000000..cd9c452
--- /dev/null
+++ b/src/main/java/com/casic/util/SMSSendUtil.java
@@ -0,0 +1,41 @@
+package com.casic.util;
+
+import cn.hutool.http.HttpResponse;
+import cn.hutool.http.HttpRequest;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * 此注解相当于设置访问URL
+ */
+@Component
+@Data
+@Slf4j
+@ConfigurationProperties(prefix = "casic.sms")
+public class SMSSendUtil {
+
+ private String url;
+ private String name;
+ private String token;
+ private String systemName;
+
+ public void sendSms(String phoneNums, String content) {
+ log.info("向【{}】发送短信:【{}】", phoneNums, content);
+
+ Map params = new HashMap<>();
+ params.put("name", name);
+ params.put("token", token);
+ params.put("phoneNums", phoneNums);
+ params.put("content", systemName + ":" + content);
+
+ HttpResponse httpResponse = HttpRequest.post(url).form(params).execute();
+ String result = httpResponse.body();
+ log.debug("短信接口调用返回{}", result);
+ }
+}
diff --git a/src/main/java/com/casic/util/WebSocket.java b/src/main/java/com/casic/util/WebSocket.java
index 1ee283f..4503c06 100644
--- a/src/main/java/com/casic/util/WebSocket.java
+++ b/src/main/java/com/casic/util/WebSocket.java
@@ -1,5 +1,6 @@
package com.casic.util;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.websocket.OnClose;
@@ -17,6 +18,7 @@
* 此注解相当于设置访问URL
*/
@Component
+@Slf4j
@ServerEndpoint("/websocket/{userId}")
public class WebSocket {
private Session session;
@@ -29,24 +31,24 @@
this.session = session;
webSockets.add(this);
sessionPool.put(userId, session);
- System.out.println(userId + "【websocket消息】有新的连接,总数为:" + webSockets.size());
+ log.info("{}【websocket消息】有新的连接,总数为: {}", userId, webSockets.size());
}
@OnClose
public void onClose() {
webSockets.remove(this);
- System.out.println("【websocket消息】连接断开,总数为:" + webSockets.size());
+ log.info("【websocket消息】连接断开,总数为: {}",webSockets.size());
}
@OnMessage
public void onMessage(String message) {
- System.out.println("【websocket消息】收到客户端消息:" + message);
+ log.info("【websocket消息】收到客户端消息: {}", message);
}
// 此为广播消息
public void sendAllMessage(String message) {
for (WebSocket webSocket : webSockets) {
- System.out.println("【websocket消息】广播消息:" + message);
+ log.info("【websocket消息】广播消息: {}", message);
try {
webSocket.session.getAsyncRemote().sendText(message);
} catch (Exception e) {
@@ -57,7 +59,7 @@
// 发送列表消息
public void sendListMessage(List userIds, String message) {
- System.out.println("【websocket消息】列表消息:" + message);
+ log.info("【websocket消息】列表消息: {}", message);
for (String userId : userIds) {
Session session = sessionPool.get(userId);
if (session != null) {
@@ -70,26 +72,9 @@
}
}
- // 发送列表消息
-
-// public void sendListMessage(List userIds, Object data){
-// System.out.println("【websocket消息】列表消息:"+data);
-// for (String userId : userIds) {
-// Session session = sessionPool.get(userId);
-// if (session != null) {
-// try {
-//// session.getAsyncRemote().sendText(message);
-// session.getAsyncRemote().sendObject(data);
-// } catch (Exception e) {
-// e.printStackTrace();
-// }
-// }
-// }
-// }
-
// 此为单点消息
public void sendOneMessage(String userId, String message) {
- System.out.println("【websocket消息】单点消息:" + message);
+ log.info("【websocket消息】单点消息: {}", message);
Session session = sessionPool.get(userId);
if (session != null) {
try {
diff --git a/src/main/resources/config/application-dz.yml b/src/main/resources/config/application-dz.yml
index d1474a4..64eaf8a 100644
--- a/src/main/resources/config/application-dz.yml
+++ b/src/main/resources/config/application-dz.yml
@@ -1,4 +1,5 @@
-
+server:
+ port: 11307
################### spring配置 ###################
spring:
datasource:
@@ -9,8 +10,8 @@
session:
store-type: redis
redis:
- host: 10.80.1.124
- port: 31681
+ host: 10.80.0.171
+ port: 6379
password:
redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer
@@ -24,10 +25,11 @@
init:
enable: false
spring-session-open: false #开启spring session
- no-login-urls: /job/updateSinkJob,/user/login/token,/push/data,/config/confirm
+ no-login-urls: /job/updateSinkJob,/user/login/token,/push/data,/config/confirm,/websocket/*
logging:
- level.root: error
- level.com.casic: info
+ level:
+ root: error
+ com.casic: info
file:
path: logs/
name: missiles.log
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index f02731e..f80e854 100644
--- a/pom.xml
+++ b/pom.xml
@@ -89,6 +89,12 @@
+ cn.hutool
+ hutool-all
+ 5.8.31
+
+
+
mysql
mysql-connector-java
8.0.16
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
deleted file mode 100644
index 1615fb8..0000000
--- a/src/main/java/com/casic/config/CorsConfig.java
+++ /dev/null
@@ -1,31 +0,0 @@
-//package com.casic.config;
-//
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.web.cors.CorsConfiguration;
-//import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
-//import org.springframework.web.filter.CorsFilter;
-//
-///**
-// * 基础框架 - 跨域请求配置
-// */
-//@Configuration
-//public class CorsConfig {
-// @Bean
-// public CorsFilter corsFilter() {
-// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
-// source.registerCorsConfiguration("/**", buildConfig());
-// return new CorsFilter(source);
-// }
-//
-// private CorsConfiguration buildConfig() {
-// CorsConfiguration corsConfiguration = new CorsConfiguration();
-// // 1允许任何域名使用
-// corsConfiguration.addAllowedOrigin("*");
-// // 2允许任何头
-// corsConfiguration.addAllowedHeader("*");
-// // 3允许任何方法(post、get等)
-// corsConfiguration.addAllowedMethod("*");
-// return corsConfiguration;
-// }
-//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
deleted file mode 100644
index 726a42f..0000000
--- a/src/main/java/com/casic/config/Knife4jConfiguration.java
+++ /dev/null
@@ -1,38 +0,0 @@
-//package com.casic.config;
-//
-//import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
-//import org.springframework.beans.factory.annotation.Value;
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import springfox.documentation.builders.ApiInfoBuilder;
-//import springfox.documentation.builders.PathSelectors;
-//import springfox.documentation.builders.RequestHandlerSelectors;
-//import springfox.documentation.spi.DocumentationType;
-//import springfox.documentation.spring.web.plugins.Docket;
-//
-//@Configuration
-//@EnableKnife4j
-//public class Knife4jConfiguration {
-//
-// @Value(value = "${swagger.enable}")
-// public boolean enable;
-// @Value(value = "${swagger.groupName}")
-// public String groupName;
-//
-// @Bean(value = "dockerBean")
-// public Docket dockerBean() {
-// return new Docket(DocumentationType.SWAGGER_2)
-// .apiInfo(new ApiInfoBuilder()
-// //描述字段支持Markdown语法
-// .description("# Knife4j RESTful APIs")
-// .termsOfServiceUrl("https://doc.casic.com/")
-// .version("1.0")
-// .build())
-// //分组名称
-// .groupName(groupName)
-// .select()
-// .apis(RequestHandlerSelectors.basePackage("com.casic"))
-// .paths(PathSelectors.any()).build().enable(enable);
-// }
-//
-//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/task/TaskConfigurer.java b/src/main/java/com/casic/config/task/TaskConfigurer.java
index 6a64d1c..5cd850e 100644
--- a/src/main/java/com/casic/config/task/TaskConfigurer.java
+++ b/src/main/java/com/casic/config/task/TaskConfigurer.java
@@ -5,7 +5,6 @@
import com.casic.service.UserDataDelayReceiver;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
@@ -25,14 +24,8 @@
@Value("${casic.device.online.cron}")
private String onlineStateCron;
- @Value("${casic.device.transfer-user.cron}")
- private String transferUserCron;
- @Value("${casic.device.partition.cron}")
- private String partitionCron;
private final DeviceDataService deviceDataService;
- private final UserDataDelayReceiver userDataDelayReceiver;
- private final IPartitionStrategyService partitionStrategyService;
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
@@ -40,17 +33,7 @@
triggerContext -> {
return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext);
});
- TriggerTask transferUserTask = new TriggerTask(getUserData(),
- triggerContext -> {
- return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext);
- });
- TriggerTask partitionTask = new TriggerTask(createPartition(),
- triggerContext -> {
- return new CronTrigger(partitionCron).nextExecutionTime(triggerContext);
- });
taskRegistrar.addTriggerTask(onlineStateTask);
- taskRegistrar.addTriggerTask(transferUserTask);
- taskRegistrar.addTriggerTask(partitionTask);
}
private Runnable nextDayDevice() {
@@ -62,32 +45,4 @@
}
};
}
-
- /**
- * 定时同步普光
- */
- private Runnable getUserData() {
- return new Runnable() {
- @Override
- public void run() {
- log.info("同步数据的任运行...");
- userDataDelayReceiver.saveNewUserData();
- }
- };
- }
-
- /**
- * 定时同步普光
- */
- private Runnable createPartition() {
- return new Runnable() {
- @Override
- public void run() {
- log.info("定时构建硫化氢数据分区表任务运行...");
- partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log");
- }
- };
-
- }
-
}
\ No newline at end of file
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
deleted file mode 100644
index e6ae7bc..0000000
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ /dev/null
@@ -1,40 +0,0 @@
-//package com.casic.controller;
-//
-//import com.alibaba.fastjson.JSON;
-//import com.casic.service.DeviceDataService;
-//import com.casic.service.ThirdDataService;
-//import lombok.RequiredArgsConstructor;
-//import org.springframework.web.bind.annotation.*;
-//
-//import java.util.Map;
-//
-//@RestController
-//@RequestMapping("/device")
-//@RequiredArgsConstructor
-//public class DeviceDataController {
-//
-// private final DeviceDataService deviceDataService;
-//
-// @RequestMapping("/recent-data")
-// public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType,
-// @RequestParam(value = "recentNum", required = true) String recentNum,
-// @RequestParam(value = "devcode", required = false) String devcode) {
-// return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode);
-// }
-//
-// @RequestMapping("/data/list-page")
-// public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType,
-// @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
-// @RequestParam(value = "pageSize", required = true) Integer pageSize,
-// @RequestParam(value = "devcode", required = false) String devcode) {
-// return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode);
-// }
-//
-// @RequestMapping("/level/{deviceType}")
-// public Object getLevelList(@PathVariable("deviceType")String deviceType) {
-// return deviceDataService.getLevel(deviceType);
-// }
-//
-//
-//
-//}
diff --git a/src/main/java/com/casic/dao/BusWellInfoMapper.java b/src/main/java/com/casic/dao/BusWellInfoMapper.java
new file mode 100644
index 0000000..102dd78
--- /dev/null
+++ b/src/main/java/com/casic/dao/BusWellInfoMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.model.BusWellInfo;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 闸井信息表 Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2019-05-13
+ */
+public interface BusWellInfoMapper extends BaseMapper {
+ BusWellInfo getWellListByCode(@Param("wellCode") String wellCode);
+}
diff --git a/src/main/java/com/casic/model/BusWellInfo.java b/src/main/java/com/casic/model/BusWellInfo.java
new file mode 100644
index 0000000..88c9430
--- /dev/null
+++ b/src/main/java/com/casic/model/BusWellInfo.java
@@ -0,0 +1,163 @@
+package com.casic.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ *
+ * 闸井信息表
+ *
+ *
+ * @author lwh
+ * @since 2019-05-13
+ */
+@EqualsAndHashCode(callSuper = true)
+@TableName("bus_well_info")
+@Data
+public class BusWellInfo extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 井盖编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 井盖名称
+ */
+ @TableField("WELL_NAME")
+ private String wellName;
+ /**
+ * 井深
+ */
+ @TableField("DEEP")
+ private Float deep;
+ /**
+ * 区域
+ */
+ @TableField("AREA")
+ private String area;
+
+ /**
+ * 区域
+ */
+ @TableField("ROAD")
+ private String road;
+ /**
+ * 第三方坐标系X
+ */
+ @TableField("COORDINATE_X")
+ private String coordinateX;
+ /**
+ * 第三方坐标Y
+ */
+ @TableField("COORDINATE_Y")
+ private String coordinateY;
+ /**
+ * 百度纬度
+ */
+ @TableField("LAT_BAIDU")
+ private String latBaidu;
+ /**
+ * 百度经度
+ */
+ @TableField("LNG_BAIDU")
+ private String lngBaidu;
+ /**
+ * 高德经度
+ */
+ @TableField("LNG_GAODE")
+ private String lngGaode;
+ /**
+ * 高德纬度
+ */
+ @TableField("LAT_GAODE")
+ private String latGaode;
+ /**
+ * 位置
+ */
+ @TableField("POSITION")
+ private String position;
+ /**
+ * 部门编号
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+ /**
+ * 路标图片路径集合
+ */
+ @TableField("PHOTOS")
+ private String photos;
+ /**
+ * 备注
+ */
+ @TableField("NOTES")
+ private String notes;
+ /**
+ * 井类型
+ */
+ @TableField("WELL_TYPE")
+ private String wellType;
+ /**
+ * 责任人
+ */
+ @TableField("STAFF")
+ private String staff;
+ /**
+ * 电话
+ */
+ @TableField("TEL")
+ private String tel;
+ /**
+ * 时间戳
+ */
+ @TableField("TS")
+ private Date ts;
+ /**
+ * 是否有效
+ */
+ @TableField("VALID")
+ private String valid;
+ /**
+ * 布防状态
+ */
+ @TableField("BFZT")
+ private String bfzt;
+
+ /**
+ * 维护单位/小组id
+ */
+ @TableField("RESPONSIBLE_DEPT")
+ private Long responsibleDept;
+
+ /**
+ * 井标签备用1
+ */
+ @TableField("WELL_FLAG_1")
+ private String wellFlag1;
+
+ /**
+ * 井标签备用2
+ */
+ @TableField("WELL_FLAG_2")
+ private String wellFlag2;
+
+ /**
+ * 井标签备用3
+ */
+ @TableField("WELL_FLAG_3")
+ private String wellFlag3;
+}
diff --git a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java
index e156160..2feb154 100644
--- a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java
@@ -1,17 +1,21 @@
package com.casic.service.impl;
+import cn.hutool.core.util.ObjectUtil;
import com.alibaba.druid.util.StringUtils;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.casic.dao.AlarmRecordMapper;
+import com.casic.dao.BusWellInfoMapper;
import com.casic.dao.DataH2sMapper;
import com.casic.enums.H2sParamsEnum;
import com.casic.model.AlarmRecord;
+import com.casic.model.BusWellInfo;
import com.casic.model.DataH2s;
import com.casic.model.User;
import com.casic.service.ThirdDataService;
import com.casic.util.RedisCommon;
+import com.casic.util.SMSSendUtil;
import com.casic.util.WebSocket;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -35,7 +39,9 @@
private final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
private final RedisCommon redisCommon;
private final AlarmRecordMapper alarmRecordMapper;
+ private final BusWellInfoMapper wellMapper;
private final WebSocket webSocket;
+ private final SMSSendUtil smsUtil;
private final DataScopeBuilder dataScopeBuilder;
@Value("${casic.device.apn}")
@@ -58,7 +64,7 @@
}
}
} catch (DataAccessException dae) {
- log.error("设备上报数据异常,设备传入的json是{},异常信息{}", dae.getMessage());
+ log.error("设备上报数据异常,设备传入的json是{},异常信息{}", h2sDataMap, dae.getMessage());
}
return defaultDeliveryConfig(null);
}
@@ -78,16 +84,19 @@
//判断是否有下发配置必须
map.put("status", ObjectUtils.isNotEmpty(configDataMap) ? 200 : 201);
if (ObjectUtils.isNotEmpty(configDataMap) && configDataMap.containsKey("interval")) {
- configDataMap.put("interval", (String) configDataMap.get("interval"));
- configDataMap.put("port", (String) configDataMap.get("port"));
- configDataMap.put("apn",apn);
- configDataMap.put("period", (String) configDataMap.get("period"));
- configDataMap.put("repeat", (String) configDataMap.get("repeat"));
-
+ configDataMap.put("interval", String.valueOf(configDataMap.get("interval")));
+ configDataMap.put("port", String.valueOf(configDataMap.get("port")));
+ configDataMap.put("apn", apn);
+ configDataMap.put("period", String.valueOf(configDataMap.get("period")) );
+ configDataMap.put("repeat", String.valueOf(configDataMap.get("repeat")) );
+ configDataMap.put("thresh", String.valueOf(configDataMap.get("thresh")) );
}
map.put("params", configDataMap);
//可省略
map.put("timeout", 30000);
+ if (ObjectUtils.isNotEmpty(configDataMap)) {
+ log.info("发送配置信息到things board: {}", map);
+ }
return map;
}
@@ -128,6 +137,7 @@
checkAlarm(dataH2s);
Map configDataMap = redisCommon.getMsg(devcode);
if (ObjectUtils.isNotEmpty(configDataMap)) {
+ log.info("有需要下发的配置项: {}", configDataMap);
return defaultDeliveryConfig(configDataMap);
}
}
@@ -160,11 +170,19 @@
}
if (!StringUtils.isEmpty(dataH2s.getStrength()) && !"null".equals(dataH2s.getStrength())) {
String status = "0";
- this.baseMapper.cancelAlarm(dataH2s.getDevcode(), status);
- if (Float.valueOf(dataH2s.getStrength()) > ruleValue) {
+ int currAlarmCount = this.baseMapper.cancelAlarm(dataH2s.getDevcode(), status);
+ if (Float.parseFloat(dataH2s.getStrength()) > ruleValue) {
Long id = this.baseMapper.getDeviceId(dataH2s.getDevcode());
alarmRecordMapper.insert(buildAlarmRecord(dataH2s, id));
- threadPoolExecutor.execute(() -> sendAlarm("浓度超限", this.baseMapper.getDeptIdsByDevcode(dataH2s.getDevcode())));
+
+ // 推送websocket 一直超限可以一直推送websocket消息
+ threadPoolExecutor.execute(() -> sendAlarm("硫化氢浓度超限", dataH2s.getDevcode(), dataH2s.getStrength(),
+ this.baseMapper.getDeptIdsByDevcode(dataH2s.getDevcode())));
+
+ // 是新报警的时候才推送报警短信
+ if (currAlarmCount == 0) {
+ threadPoolExecutor.execute(() -> sendAlarmSms("检测到硫化氢浓度超限", dataH2s.getWellCode(), dataH2s.getStrength(), dataH2s.getUptime()));
+ }
}
}
}
@@ -184,7 +202,7 @@
}
// PC推送
- private void sendAlarm(String msg, Long deptId) {
+ private void sendAlarm(String msg, String devCode, String value, Long deptId) {
List userIds = new ArrayList<>();
List userList = dataScopeBuilder.DataScopeProvider(deptId);
for (User user : userList) {
@@ -194,51 +212,25 @@
Map map = new HashMap();
map.put("message", msg);
map.put("type", "alarm");
+ map.put("deviceNo", devCode);
+ map.put("value", value);
webSocket.sendListMessage(userIds, JSON.toJSONString(map));
} else {
log.info("告警消息找不到责任人,pc端未推送:" + msg);
}
}
- // "在2023年1月12号 16时43分23秒,设备41232561发生了压力超标/浓度超限,数值为20"
- // + "设备" + devcode + "发生了压力超标,压力值为" + presss
- private void alarmPushBuilder(String devcode, String presss) {
-// ResponseData responseData = (ResponseData) alarmPushService.getAlarmPush("H2S");
-// AlarmPushConfig alarmPushConfig = (AlarmPushConfig) responseData.getData();
-// if (alarmPushConfig.getEnable().equals(1)) {
-// if (alarmPushConfig.getWebsocketAlarm().equals(1)) {
-// String msg = "在" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + ","
-// + "设备" + devcode + "发生了压力超标,压力值为" + presss;
-// try {
-// messagePusherService.updateSinkJob("", URLDecoder.decode(msg, "UTF-8"));
-// } catch (UnsupportedEncodingException uee) {
-// log.error("websocket推送,内容转码出现异常,异常信息为{}", uee.getMessage());
-// }
-// }
-// if (alarmPushConfig.getShortMessageAlarm().equals(1)) {
-// JSONArray msglist = new JSONArray();
-// JSONObject msgMap = new JSONObject();
-// msgMap.put("time", new SimpleDateFormat("yyyyMMdd HH:mm:ss").format(new Date()));
-// msgMap.put("devcode", devcode);
-// msgMap.put("value", presss);
-// msgMap.put("content", "压力超标");
-// String phoneJson = "";
-// List aliSignNameList = new ArrayList<>();
-// String aliSignName = aliYunConfig.getSignNameJson();
-// if (!org.apache.commons.lang3.StringUtils.isEmpty(alarmPushConfig.getPhoneArray())) {
-// String[] phones = alarmPushConfig.getPhoneArray().split(",");
-// List phoneList = new ArrayList<>();
-// for (String phone : phones) {
-// msglist.add(msgMap);
-// phoneList.add(phone);
-// aliSignNameList.add(aliSignName);
-// }
-// phoneJson = JSONObject.toJSONString(phoneList);
-// }
-// sendBatchSmsUtil.sendMsg(phoneJson, JSON.toJSONString(msgMap), JSONObject.toJSONString(aliSignNameList));
-// }
-// }
+ private void sendAlarmSms(String msg, String wellCode, String value, String alarmTime) {
+ BusWellInfo wellInfo = wellMapper.getWellListByCode(wellCode);
+ if (null != wellInfo && ObjectUtil.isNotEmpty(wellInfo.getTel())) {
+ // 拼接报警信息
+ String content = msg + "," + // 发现硫化氢泄漏,
+ "点位:" + wellInfo.getWellName() + ",详细位置:" + wellInfo.getPosition() + "," + // 点位:名称,位置,
+ "浓度值:" + value + "ppm," + // 浓度值
+ "时间:" + alarmTime + "," + // 时间
+ "请及时处理。"; // 请及时处理。
+
+ smsUtil.sendSms(wellInfo.getTel(), content);
+ }
}
-
-
}
diff --git a/src/main/java/com/casic/util/SMSSendUtil.java b/src/main/java/com/casic/util/SMSSendUtil.java
new file mode 100644
index 0000000..cd9c452
--- /dev/null
+++ b/src/main/java/com/casic/util/SMSSendUtil.java
@@ -0,0 +1,41 @@
+package com.casic.util;
+
+import cn.hutool.http.HttpResponse;
+import cn.hutool.http.HttpRequest;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * 此注解相当于设置访问URL
+ */
+@Component
+@Data
+@Slf4j
+@ConfigurationProperties(prefix = "casic.sms")
+public class SMSSendUtil {
+
+ private String url;
+ private String name;
+ private String token;
+ private String systemName;
+
+ public void sendSms(String phoneNums, String content) {
+ log.info("向【{}】发送短信:【{}】", phoneNums, content);
+
+ Map params = new HashMap<>();
+ params.put("name", name);
+ params.put("token", token);
+ params.put("phoneNums", phoneNums);
+ params.put("content", systemName + ":" + content);
+
+ HttpResponse httpResponse = HttpRequest.post(url).form(params).execute();
+ String result = httpResponse.body();
+ log.debug("短信接口调用返回{}", result);
+ }
+}
diff --git a/src/main/java/com/casic/util/WebSocket.java b/src/main/java/com/casic/util/WebSocket.java
index 1ee283f..4503c06 100644
--- a/src/main/java/com/casic/util/WebSocket.java
+++ b/src/main/java/com/casic/util/WebSocket.java
@@ -1,5 +1,6 @@
package com.casic.util;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.websocket.OnClose;
@@ -17,6 +18,7 @@
* 此注解相当于设置访问URL
*/
@Component
+@Slf4j
@ServerEndpoint("/websocket/{userId}")
public class WebSocket {
private Session session;
@@ -29,24 +31,24 @@
this.session = session;
webSockets.add(this);
sessionPool.put(userId, session);
- System.out.println(userId + "【websocket消息】有新的连接,总数为:" + webSockets.size());
+ log.info("{}【websocket消息】有新的连接,总数为: {}", userId, webSockets.size());
}
@OnClose
public void onClose() {
webSockets.remove(this);
- System.out.println("【websocket消息】连接断开,总数为:" + webSockets.size());
+ log.info("【websocket消息】连接断开,总数为: {}",webSockets.size());
}
@OnMessage
public void onMessage(String message) {
- System.out.println("【websocket消息】收到客户端消息:" + message);
+ log.info("【websocket消息】收到客户端消息: {}", message);
}
// 此为广播消息
public void sendAllMessage(String message) {
for (WebSocket webSocket : webSockets) {
- System.out.println("【websocket消息】广播消息:" + message);
+ log.info("【websocket消息】广播消息: {}", message);
try {
webSocket.session.getAsyncRemote().sendText(message);
} catch (Exception e) {
@@ -57,7 +59,7 @@
// 发送列表消息
public void sendListMessage(List userIds, String message) {
- System.out.println("【websocket消息】列表消息:" + message);
+ log.info("【websocket消息】列表消息: {}", message);
for (String userId : userIds) {
Session session = sessionPool.get(userId);
if (session != null) {
@@ -70,26 +72,9 @@
}
}
- // 发送列表消息
-
-// public void sendListMessage(List userIds, Object data){
-// System.out.println("【websocket消息】列表消息:"+data);
-// for (String userId : userIds) {
-// Session session = sessionPool.get(userId);
-// if (session != null) {
-// try {
-//// session.getAsyncRemote().sendText(message);
-// session.getAsyncRemote().sendObject(data);
-// } catch (Exception e) {
-// e.printStackTrace();
-// }
-// }
-// }
-// }
-
// 此为单点消息
public void sendOneMessage(String userId, String message) {
- System.out.println("【websocket消息】单点消息:" + message);
+ log.info("【websocket消息】单点消息: {}", message);
Session session = sessionPool.get(userId);
if (session != null) {
try {
diff --git a/src/main/resources/config/application-dz.yml b/src/main/resources/config/application-dz.yml
index d1474a4..64eaf8a 100644
--- a/src/main/resources/config/application-dz.yml
+++ b/src/main/resources/config/application-dz.yml
@@ -1,4 +1,5 @@
-
+server:
+ port: 11307
################### spring配置 ###################
spring:
datasource:
@@ -9,8 +10,8 @@
session:
store-type: redis
redis:
- host: 10.80.1.124
- port: 31681
+ host: 10.80.0.171
+ port: 6379
password:
redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer
@@ -24,10 +25,11 @@
init:
enable: false
spring-session-open: false #开启spring session
- no-login-urls: /job/updateSinkJob,/user/login/token,/push/data,/config/confirm
+ no-login-urls: /job/updateSinkJob,/user/login/token,/push/data,/config/confirm,/websocket/*
logging:
- level.root: error
- level.com.casic: info
+ level:
+ root: error
+ com.casic: info
file:
path: logs/
name: missiles.log
\ No newline at end of file
diff --git a/src/main/resources/config/application.yml b/src/main/resources/config/application.yml
index f354d1d..65e0809 100644
--- a/src/main/resources/config/application.yml
+++ b/src/main/resources/config/application.yml
@@ -10,7 +10,7 @@
pathmatch:
matching-strategy: ant_path_matcher
server:
- port: 11314
+ port: 11307
mybatis-plus:
global-config:
enable-sql-runner: true
@@ -30,22 +30,23 @@
device:
redis:
invalid-time: 86400
- host: 127.0.0.1
+ host: 10.80.0.171
port: 6379
- password: ew5T4K3#203lwh
+ password:
config-prefix: 'Casic:' #下发配置,key前缀
apn: "dashoa.sc.iot" # 平台对应的apn
appName: "XLJCYJ" #应用名称-泄露监测预警
appUrl: "http://10.80.12.33" #普光服务的url
online:
cron: 0 0 0/1 * * ? # 多长时间判断离线
- transfer-user:
- cron: 0 0/1 * * * ? # 数据同步,每天凌晨0点、中午12点各进行同步一次 0 0 0,12 * * ?
- partition:
- cron: 0 0 0 * * ?
- data-day: 3 #多少天为离线
+ data-day: 1 #多少天为离线
type: 14 #硫化氢
+ sms:
+ url: http://10.75.240.177/send
+ name: zhangb9987
+ token: 4D0E6A690C1845E0A8DF76D8C9C5E6B2
+ system-name: "采气厂硫化氢泄漏监测系统"
swagger:
enable: true
- groupName: "硫化氢课题"
\ No newline at end of file
+ groupName: "采气厂硫化氢泄漏监测系统"
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index f02731e..f80e854 100644
--- a/pom.xml
+++ b/pom.xml
@@ -89,6 +89,12 @@
+ cn.hutool
+ hutool-all
+ 5.8.31
+
+
+
mysql
mysql-connector-java
8.0.16
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
deleted file mode 100644
index 1615fb8..0000000
--- a/src/main/java/com/casic/config/CorsConfig.java
+++ /dev/null
@@ -1,31 +0,0 @@
-//package com.casic.config;
-//
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.web.cors.CorsConfiguration;
-//import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
-//import org.springframework.web.filter.CorsFilter;
-//
-///**
-// * 基础框架 - 跨域请求配置
-// */
-//@Configuration
-//public class CorsConfig {
-// @Bean
-// public CorsFilter corsFilter() {
-// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
-// source.registerCorsConfiguration("/**", buildConfig());
-// return new CorsFilter(source);
-// }
-//
-// private CorsConfiguration buildConfig() {
-// CorsConfiguration corsConfiguration = new CorsConfiguration();
-// // 1允许任何域名使用
-// corsConfiguration.addAllowedOrigin("*");
-// // 2允许任何头
-// corsConfiguration.addAllowedHeader("*");
-// // 3允许任何方法(post、get等)
-// corsConfiguration.addAllowedMethod("*");
-// return corsConfiguration;
-// }
-//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
deleted file mode 100644
index 726a42f..0000000
--- a/src/main/java/com/casic/config/Knife4jConfiguration.java
+++ /dev/null
@@ -1,38 +0,0 @@
-//package com.casic.config;
-//
-//import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
-//import org.springframework.beans.factory.annotation.Value;
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import springfox.documentation.builders.ApiInfoBuilder;
-//import springfox.documentation.builders.PathSelectors;
-//import springfox.documentation.builders.RequestHandlerSelectors;
-//import springfox.documentation.spi.DocumentationType;
-//import springfox.documentation.spring.web.plugins.Docket;
-//
-//@Configuration
-//@EnableKnife4j
-//public class Knife4jConfiguration {
-//
-// @Value(value = "${swagger.enable}")
-// public boolean enable;
-// @Value(value = "${swagger.groupName}")
-// public String groupName;
-//
-// @Bean(value = "dockerBean")
-// public Docket dockerBean() {
-// return new Docket(DocumentationType.SWAGGER_2)
-// .apiInfo(new ApiInfoBuilder()
-// //描述字段支持Markdown语法
-// .description("# Knife4j RESTful APIs")
-// .termsOfServiceUrl("https://doc.casic.com/")
-// .version("1.0")
-// .build())
-// //分组名称
-// .groupName(groupName)
-// .select()
-// .apis(RequestHandlerSelectors.basePackage("com.casic"))
-// .paths(PathSelectors.any()).build().enable(enable);
-// }
-//
-//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/task/TaskConfigurer.java b/src/main/java/com/casic/config/task/TaskConfigurer.java
index 6a64d1c..5cd850e 100644
--- a/src/main/java/com/casic/config/task/TaskConfigurer.java
+++ b/src/main/java/com/casic/config/task/TaskConfigurer.java
@@ -5,7 +5,6 @@
import com.casic.service.UserDataDelayReceiver;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
@@ -25,14 +24,8 @@
@Value("${casic.device.online.cron}")
private String onlineStateCron;
- @Value("${casic.device.transfer-user.cron}")
- private String transferUserCron;
- @Value("${casic.device.partition.cron}")
- private String partitionCron;
private final DeviceDataService deviceDataService;
- private final UserDataDelayReceiver userDataDelayReceiver;
- private final IPartitionStrategyService partitionStrategyService;
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
@@ -40,17 +33,7 @@
triggerContext -> {
return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext);
});
- TriggerTask transferUserTask = new TriggerTask(getUserData(),
- triggerContext -> {
- return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext);
- });
- TriggerTask partitionTask = new TriggerTask(createPartition(),
- triggerContext -> {
- return new CronTrigger(partitionCron).nextExecutionTime(triggerContext);
- });
taskRegistrar.addTriggerTask(onlineStateTask);
- taskRegistrar.addTriggerTask(transferUserTask);
- taskRegistrar.addTriggerTask(partitionTask);
}
private Runnable nextDayDevice() {
@@ -62,32 +45,4 @@
}
};
}
-
- /**
- * 定时同步普光
- */
- private Runnable getUserData() {
- return new Runnable() {
- @Override
- public void run() {
- log.info("同步数据的任运行...");
- userDataDelayReceiver.saveNewUserData();
- }
- };
- }
-
- /**
- * 定时同步普光
- */
- private Runnable createPartition() {
- return new Runnable() {
- @Override
- public void run() {
- log.info("定时构建硫化氢数据分区表任务运行...");
- partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log");
- }
- };
-
- }
-
}
\ No newline at end of file
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
deleted file mode 100644
index e6ae7bc..0000000
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ /dev/null
@@ -1,40 +0,0 @@
-//package com.casic.controller;
-//
-//import com.alibaba.fastjson.JSON;
-//import com.casic.service.DeviceDataService;
-//import com.casic.service.ThirdDataService;
-//import lombok.RequiredArgsConstructor;
-//import org.springframework.web.bind.annotation.*;
-//
-//import java.util.Map;
-//
-//@RestController
-//@RequestMapping("/device")
-//@RequiredArgsConstructor
-//public class DeviceDataController {
-//
-// private final DeviceDataService deviceDataService;
-//
-// @RequestMapping("/recent-data")
-// public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType,
-// @RequestParam(value = "recentNum", required = true) String recentNum,
-// @RequestParam(value = "devcode", required = false) String devcode) {
-// return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode);
-// }
-//
-// @RequestMapping("/data/list-page")
-// public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType,
-// @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
-// @RequestParam(value = "pageSize", required = true) Integer pageSize,
-// @RequestParam(value = "devcode", required = false) String devcode) {
-// return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode);
-// }
-//
-// @RequestMapping("/level/{deviceType}")
-// public Object getLevelList(@PathVariable("deviceType")String deviceType) {
-// return deviceDataService.getLevel(deviceType);
-// }
-//
-//
-//
-//}
diff --git a/src/main/java/com/casic/dao/BusWellInfoMapper.java b/src/main/java/com/casic/dao/BusWellInfoMapper.java
new file mode 100644
index 0000000..102dd78
--- /dev/null
+++ b/src/main/java/com/casic/dao/BusWellInfoMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.model.BusWellInfo;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 闸井信息表 Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2019-05-13
+ */
+public interface BusWellInfoMapper extends BaseMapper {
+ BusWellInfo getWellListByCode(@Param("wellCode") String wellCode);
+}
diff --git a/src/main/java/com/casic/model/BusWellInfo.java b/src/main/java/com/casic/model/BusWellInfo.java
new file mode 100644
index 0000000..88c9430
--- /dev/null
+++ b/src/main/java/com/casic/model/BusWellInfo.java
@@ -0,0 +1,163 @@
+package com.casic.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ *
+ * 闸井信息表
+ *
+ *
+ * @author lwh
+ * @since 2019-05-13
+ */
+@EqualsAndHashCode(callSuper = true)
+@TableName("bus_well_info")
+@Data
+public class BusWellInfo extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 井盖编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 井盖名称
+ */
+ @TableField("WELL_NAME")
+ private String wellName;
+ /**
+ * 井深
+ */
+ @TableField("DEEP")
+ private Float deep;
+ /**
+ * 区域
+ */
+ @TableField("AREA")
+ private String area;
+
+ /**
+ * 区域
+ */
+ @TableField("ROAD")
+ private String road;
+ /**
+ * 第三方坐标系X
+ */
+ @TableField("COORDINATE_X")
+ private String coordinateX;
+ /**
+ * 第三方坐标Y
+ */
+ @TableField("COORDINATE_Y")
+ private String coordinateY;
+ /**
+ * 百度纬度
+ */
+ @TableField("LAT_BAIDU")
+ private String latBaidu;
+ /**
+ * 百度经度
+ */
+ @TableField("LNG_BAIDU")
+ private String lngBaidu;
+ /**
+ * 高德经度
+ */
+ @TableField("LNG_GAODE")
+ private String lngGaode;
+ /**
+ * 高德纬度
+ */
+ @TableField("LAT_GAODE")
+ private String latGaode;
+ /**
+ * 位置
+ */
+ @TableField("POSITION")
+ private String position;
+ /**
+ * 部门编号
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+ /**
+ * 路标图片路径集合
+ */
+ @TableField("PHOTOS")
+ private String photos;
+ /**
+ * 备注
+ */
+ @TableField("NOTES")
+ private String notes;
+ /**
+ * 井类型
+ */
+ @TableField("WELL_TYPE")
+ private String wellType;
+ /**
+ * 责任人
+ */
+ @TableField("STAFF")
+ private String staff;
+ /**
+ * 电话
+ */
+ @TableField("TEL")
+ private String tel;
+ /**
+ * 时间戳
+ */
+ @TableField("TS")
+ private Date ts;
+ /**
+ * 是否有效
+ */
+ @TableField("VALID")
+ private String valid;
+ /**
+ * 布防状态
+ */
+ @TableField("BFZT")
+ private String bfzt;
+
+ /**
+ * 维护单位/小组id
+ */
+ @TableField("RESPONSIBLE_DEPT")
+ private Long responsibleDept;
+
+ /**
+ * 井标签备用1
+ */
+ @TableField("WELL_FLAG_1")
+ private String wellFlag1;
+
+ /**
+ * 井标签备用2
+ */
+ @TableField("WELL_FLAG_2")
+ private String wellFlag2;
+
+ /**
+ * 井标签备用3
+ */
+ @TableField("WELL_FLAG_3")
+ private String wellFlag3;
+}
diff --git a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java
index e156160..2feb154 100644
--- a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java
@@ -1,17 +1,21 @@
package com.casic.service.impl;
+import cn.hutool.core.util.ObjectUtil;
import com.alibaba.druid.util.StringUtils;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.casic.dao.AlarmRecordMapper;
+import com.casic.dao.BusWellInfoMapper;
import com.casic.dao.DataH2sMapper;
import com.casic.enums.H2sParamsEnum;
import com.casic.model.AlarmRecord;
+import com.casic.model.BusWellInfo;
import com.casic.model.DataH2s;
import com.casic.model.User;
import com.casic.service.ThirdDataService;
import com.casic.util.RedisCommon;
+import com.casic.util.SMSSendUtil;
import com.casic.util.WebSocket;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -35,7 +39,9 @@
private final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
private final RedisCommon redisCommon;
private final AlarmRecordMapper alarmRecordMapper;
+ private final BusWellInfoMapper wellMapper;
private final WebSocket webSocket;
+ private final SMSSendUtil smsUtil;
private final DataScopeBuilder dataScopeBuilder;
@Value("${casic.device.apn}")
@@ -58,7 +64,7 @@
}
}
} catch (DataAccessException dae) {
- log.error("设备上报数据异常,设备传入的json是{},异常信息{}", dae.getMessage());
+ log.error("设备上报数据异常,设备传入的json是{},异常信息{}", h2sDataMap, dae.getMessage());
}
return defaultDeliveryConfig(null);
}
@@ -78,16 +84,19 @@
//判断是否有下发配置必须
map.put("status", ObjectUtils.isNotEmpty(configDataMap) ? 200 : 201);
if (ObjectUtils.isNotEmpty(configDataMap) && configDataMap.containsKey("interval")) {
- configDataMap.put("interval", (String) configDataMap.get("interval"));
- configDataMap.put("port", (String) configDataMap.get("port"));
- configDataMap.put("apn",apn);
- configDataMap.put("period", (String) configDataMap.get("period"));
- configDataMap.put("repeat", (String) configDataMap.get("repeat"));
-
+ configDataMap.put("interval", String.valueOf(configDataMap.get("interval")));
+ configDataMap.put("port", String.valueOf(configDataMap.get("port")));
+ configDataMap.put("apn", apn);
+ configDataMap.put("period", String.valueOf(configDataMap.get("period")) );
+ configDataMap.put("repeat", String.valueOf(configDataMap.get("repeat")) );
+ configDataMap.put("thresh", String.valueOf(configDataMap.get("thresh")) );
}
map.put("params", configDataMap);
//可省略
map.put("timeout", 30000);
+ if (ObjectUtils.isNotEmpty(configDataMap)) {
+ log.info("发送配置信息到things board: {}", map);
+ }
return map;
}
@@ -128,6 +137,7 @@
checkAlarm(dataH2s);
Map configDataMap = redisCommon.getMsg(devcode);
if (ObjectUtils.isNotEmpty(configDataMap)) {
+ log.info("有需要下发的配置项: {}", configDataMap);
return defaultDeliveryConfig(configDataMap);
}
}
@@ -160,11 +170,19 @@
}
if (!StringUtils.isEmpty(dataH2s.getStrength()) && !"null".equals(dataH2s.getStrength())) {
String status = "0";
- this.baseMapper.cancelAlarm(dataH2s.getDevcode(), status);
- if (Float.valueOf(dataH2s.getStrength()) > ruleValue) {
+ int currAlarmCount = this.baseMapper.cancelAlarm(dataH2s.getDevcode(), status);
+ if (Float.parseFloat(dataH2s.getStrength()) > ruleValue) {
Long id = this.baseMapper.getDeviceId(dataH2s.getDevcode());
alarmRecordMapper.insert(buildAlarmRecord(dataH2s, id));
- threadPoolExecutor.execute(() -> sendAlarm("浓度超限", this.baseMapper.getDeptIdsByDevcode(dataH2s.getDevcode())));
+
+ // 推送websocket 一直超限可以一直推送websocket消息
+ threadPoolExecutor.execute(() -> sendAlarm("硫化氢浓度超限", dataH2s.getDevcode(), dataH2s.getStrength(),
+ this.baseMapper.getDeptIdsByDevcode(dataH2s.getDevcode())));
+
+ // 是新报警的时候才推送报警短信
+ if (currAlarmCount == 0) {
+ threadPoolExecutor.execute(() -> sendAlarmSms("检测到硫化氢浓度超限", dataH2s.getWellCode(), dataH2s.getStrength(), dataH2s.getUptime()));
+ }
}
}
}
@@ -184,7 +202,7 @@
}
// PC推送
- private void sendAlarm(String msg, Long deptId) {
+ private void sendAlarm(String msg, String devCode, String value, Long deptId) {
List userIds = new ArrayList<>();
List userList = dataScopeBuilder.DataScopeProvider(deptId);
for (User user : userList) {
@@ -194,51 +212,25 @@
Map map = new HashMap();
map.put("message", msg);
map.put("type", "alarm");
+ map.put("deviceNo", devCode);
+ map.put("value", value);
webSocket.sendListMessage(userIds, JSON.toJSONString(map));
} else {
log.info("告警消息找不到责任人,pc端未推送:" + msg);
}
}
- // "在2023年1月12号 16时43分23秒,设备41232561发生了压力超标/浓度超限,数值为20"
- // + "设备" + devcode + "发生了压力超标,压力值为" + presss
- private void alarmPushBuilder(String devcode, String presss) {
-// ResponseData responseData = (ResponseData) alarmPushService.getAlarmPush("H2S");
-// AlarmPushConfig alarmPushConfig = (AlarmPushConfig) responseData.getData();
-// if (alarmPushConfig.getEnable().equals(1)) {
-// if (alarmPushConfig.getWebsocketAlarm().equals(1)) {
-// String msg = "在" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + ","
-// + "设备" + devcode + "发生了压力超标,压力值为" + presss;
-// try {
-// messagePusherService.updateSinkJob("", URLDecoder.decode(msg, "UTF-8"));
-// } catch (UnsupportedEncodingException uee) {
-// log.error("websocket推送,内容转码出现异常,异常信息为{}", uee.getMessage());
-// }
-// }
-// if (alarmPushConfig.getShortMessageAlarm().equals(1)) {
-// JSONArray msglist = new JSONArray();
-// JSONObject msgMap = new JSONObject();
-// msgMap.put("time", new SimpleDateFormat("yyyyMMdd HH:mm:ss").format(new Date()));
-// msgMap.put("devcode", devcode);
-// msgMap.put("value", presss);
-// msgMap.put("content", "压力超标");
-// String phoneJson = "";
-// List aliSignNameList = new ArrayList<>();
-// String aliSignName = aliYunConfig.getSignNameJson();
-// if (!org.apache.commons.lang3.StringUtils.isEmpty(alarmPushConfig.getPhoneArray())) {
-// String[] phones = alarmPushConfig.getPhoneArray().split(",");
-// List phoneList = new ArrayList<>();
-// for (String phone : phones) {
-// msglist.add(msgMap);
-// phoneList.add(phone);
-// aliSignNameList.add(aliSignName);
-// }
-// phoneJson = JSONObject.toJSONString(phoneList);
-// }
-// sendBatchSmsUtil.sendMsg(phoneJson, JSON.toJSONString(msgMap), JSONObject.toJSONString(aliSignNameList));
-// }
-// }
+ private void sendAlarmSms(String msg, String wellCode, String value, String alarmTime) {
+ BusWellInfo wellInfo = wellMapper.getWellListByCode(wellCode);
+ if (null != wellInfo && ObjectUtil.isNotEmpty(wellInfo.getTel())) {
+ // 拼接报警信息
+ String content = msg + "," + // 发现硫化氢泄漏,
+ "点位:" + wellInfo.getWellName() + ",详细位置:" + wellInfo.getPosition() + "," + // 点位:名称,位置,
+ "浓度值:" + value + "ppm," + // 浓度值
+ "时间:" + alarmTime + "," + // 时间
+ "请及时处理。"; // 请及时处理。
+
+ smsUtil.sendSms(wellInfo.getTel(), content);
+ }
}
-
-
}
diff --git a/src/main/java/com/casic/util/SMSSendUtil.java b/src/main/java/com/casic/util/SMSSendUtil.java
new file mode 100644
index 0000000..cd9c452
--- /dev/null
+++ b/src/main/java/com/casic/util/SMSSendUtil.java
@@ -0,0 +1,41 @@
+package com.casic.util;
+
+import cn.hutool.http.HttpResponse;
+import cn.hutool.http.HttpRequest;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * 此注解相当于设置访问URL
+ */
+@Component
+@Data
+@Slf4j
+@ConfigurationProperties(prefix = "casic.sms")
+public class SMSSendUtil {
+
+ private String url;
+ private String name;
+ private String token;
+ private String systemName;
+
+ public void sendSms(String phoneNums, String content) {
+ log.info("向【{}】发送短信:【{}】", phoneNums, content);
+
+ Map params = new HashMap<>();
+ params.put("name", name);
+ params.put("token", token);
+ params.put("phoneNums", phoneNums);
+ params.put("content", systemName + ":" + content);
+
+ HttpResponse httpResponse = HttpRequest.post(url).form(params).execute();
+ String result = httpResponse.body();
+ log.debug("短信接口调用返回{}", result);
+ }
+}
diff --git a/src/main/java/com/casic/util/WebSocket.java b/src/main/java/com/casic/util/WebSocket.java
index 1ee283f..4503c06 100644
--- a/src/main/java/com/casic/util/WebSocket.java
+++ b/src/main/java/com/casic/util/WebSocket.java
@@ -1,5 +1,6 @@
package com.casic.util;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.websocket.OnClose;
@@ -17,6 +18,7 @@
* 此注解相当于设置访问URL
*/
@Component
+@Slf4j
@ServerEndpoint("/websocket/{userId}")
public class WebSocket {
private Session session;
@@ -29,24 +31,24 @@
this.session = session;
webSockets.add(this);
sessionPool.put(userId, session);
- System.out.println(userId + "【websocket消息】有新的连接,总数为:" + webSockets.size());
+ log.info("{}【websocket消息】有新的连接,总数为: {}", userId, webSockets.size());
}
@OnClose
public void onClose() {
webSockets.remove(this);
- System.out.println("【websocket消息】连接断开,总数为:" + webSockets.size());
+ log.info("【websocket消息】连接断开,总数为: {}",webSockets.size());
}
@OnMessage
public void onMessage(String message) {
- System.out.println("【websocket消息】收到客户端消息:" + message);
+ log.info("【websocket消息】收到客户端消息: {}", message);
}
// 此为广播消息
public void sendAllMessage(String message) {
for (WebSocket webSocket : webSockets) {
- System.out.println("【websocket消息】广播消息:" + message);
+ log.info("【websocket消息】广播消息: {}", message);
try {
webSocket.session.getAsyncRemote().sendText(message);
} catch (Exception e) {
@@ -57,7 +59,7 @@
// 发送列表消息
public void sendListMessage(List userIds, String message) {
- System.out.println("【websocket消息】列表消息:" + message);
+ log.info("【websocket消息】列表消息: {}", message);
for (String userId : userIds) {
Session session = sessionPool.get(userId);
if (session != null) {
@@ -70,26 +72,9 @@
}
}
- // 发送列表消息
-
-// public void sendListMessage(List userIds, Object data){
-// System.out.println("【websocket消息】列表消息:"+data);
-// for (String userId : userIds) {
-// Session session = sessionPool.get(userId);
-// if (session != null) {
-// try {
-//// session.getAsyncRemote().sendText(message);
-// session.getAsyncRemote().sendObject(data);
-// } catch (Exception e) {
-// e.printStackTrace();
-// }
-// }
-// }
-// }
-
// 此为单点消息
public void sendOneMessage(String userId, String message) {
- System.out.println("【websocket消息】单点消息:" + message);
+ log.info("【websocket消息】单点消息: {}", message);
Session session = sessionPool.get(userId);
if (session != null) {
try {
diff --git a/src/main/resources/config/application-dz.yml b/src/main/resources/config/application-dz.yml
index d1474a4..64eaf8a 100644
--- a/src/main/resources/config/application-dz.yml
+++ b/src/main/resources/config/application-dz.yml
@@ -1,4 +1,5 @@
-
+server:
+ port: 11307
################### spring配置 ###################
spring:
datasource:
@@ -9,8 +10,8 @@
session:
store-type: redis
redis:
- host: 10.80.1.124
- port: 31681
+ host: 10.80.0.171
+ port: 6379
password:
redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer
@@ -24,10 +25,11 @@
init:
enable: false
spring-session-open: false #开启spring session
- no-login-urls: /job/updateSinkJob,/user/login/token,/push/data,/config/confirm
+ no-login-urls: /job/updateSinkJob,/user/login/token,/push/data,/config/confirm,/websocket/*
logging:
- level.root: error
- level.com.casic: info
+ level:
+ root: error
+ com.casic: info
file:
path: logs/
name: missiles.log
\ No newline at end of file
diff --git a/src/main/resources/config/application.yml b/src/main/resources/config/application.yml
index f354d1d..65e0809 100644
--- a/src/main/resources/config/application.yml
+++ b/src/main/resources/config/application.yml
@@ -10,7 +10,7 @@
pathmatch:
matching-strategy: ant_path_matcher
server:
- port: 11314
+ port: 11307
mybatis-plus:
global-config:
enable-sql-runner: true
@@ -30,22 +30,23 @@
device:
redis:
invalid-time: 86400
- host: 127.0.0.1
+ host: 10.80.0.171
port: 6379
- password: ew5T4K3#203lwh
+ password:
config-prefix: 'Casic:' #下发配置,key前缀
apn: "dashoa.sc.iot" # 平台对应的apn
appName: "XLJCYJ" #应用名称-泄露监测预警
appUrl: "http://10.80.12.33" #普光服务的url
online:
cron: 0 0 0/1 * * ? # 多长时间判断离线
- transfer-user:
- cron: 0 0/1 * * * ? # 数据同步,每天凌晨0点、中午12点各进行同步一次 0 0 0,12 * * ?
- partition:
- cron: 0 0 0 * * ?
- data-day: 3 #多少天为离线
+ data-day: 1 #多少天为离线
type: 14 #硫化氢
+ sms:
+ url: http://10.75.240.177/send
+ name: zhangb9987
+ token: 4D0E6A690C1845E0A8DF76D8C9C5E6B2
+ system-name: "采气厂硫化氢泄漏监测系统"
swagger:
enable: true
- groupName: "硫化氢课题"
\ No newline at end of file
+ groupName: "采气厂硫化氢泄漏监测系统"
\ No newline at end of file
diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml
new file mode 100644
index 0000000..c0c7ac9
--- /dev/null
+++ b/src/main/resources/logback-spring.xml
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ ${CONSOLE_LOG_PATTERN}
+ utf-8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${CONSOLE_LOG_PATTERN}
+ utf-8
+
+
+
+
+
+
+
+ ${LOG_PATH}/missiles_error.log
+
+
+
+
+
+ ${LOG_PATH}/error/log-error-%d{yyyy-MM-dd}.%i.log
+
+
+
+ 10MB
+
+
+
+
+ true
+
+
+
+ ${FILE_LOG_PATTERN}
+ utf-8
+
+
+
+
+ error
+ ACCEPT
+ DENY
+
+
+
+
+
+
+
+ ${LOG_PATH}/missiles_total.log
+
+
+
+
+
+ ${LOG_PATH}/total/log-total-%d{yyyy-MM-dd}.%i.log
+
+
+
+ 10MB
+
+
+
+
+ true
+
+
+
+ ${FILE_LOG_PATTERN}
+ utf-8
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index f02731e..f80e854 100644
--- a/pom.xml
+++ b/pom.xml
@@ -89,6 +89,12 @@
+ cn.hutool
+ hutool-all
+ 5.8.31
+
+
+
mysql
mysql-connector-java
8.0.16
diff --git a/src/main/java/com/casic/config/CorsConfig.java b/src/main/java/com/casic/config/CorsConfig.java
deleted file mode 100644
index 1615fb8..0000000
--- a/src/main/java/com/casic/config/CorsConfig.java
+++ /dev/null
@@ -1,31 +0,0 @@
-//package com.casic.config;
-//
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.web.cors.CorsConfiguration;
-//import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
-//import org.springframework.web.filter.CorsFilter;
-//
-///**
-// * 基础框架 - 跨域请求配置
-// */
-//@Configuration
-//public class CorsConfig {
-// @Bean
-// public CorsFilter corsFilter() {
-// UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
-// source.registerCorsConfiguration("/**", buildConfig());
-// return new CorsFilter(source);
-// }
-//
-// private CorsConfiguration buildConfig() {
-// CorsConfiguration corsConfiguration = new CorsConfiguration();
-// // 1允许任何域名使用
-// corsConfiguration.addAllowedOrigin("*");
-// // 2允许任何头
-// corsConfiguration.addAllowedHeader("*");
-// // 3允许任何方法(post、get等)
-// corsConfiguration.addAllowedMethod("*");
-// return corsConfiguration;
-// }
-//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/Knife4jConfiguration.java b/src/main/java/com/casic/config/Knife4jConfiguration.java
deleted file mode 100644
index 726a42f..0000000
--- a/src/main/java/com/casic/config/Knife4jConfiguration.java
+++ /dev/null
@@ -1,38 +0,0 @@
-//package com.casic.config;
-//
-//import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
-//import org.springframework.beans.factory.annotation.Value;
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import springfox.documentation.builders.ApiInfoBuilder;
-//import springfox.documentation.builders.PathSelectors;
-//import springfox.documentation.builders.RequestHandlerSelectors;
-//import springfox.documentation.spi.DocumentationType;
-//import springfox.documentation.spring.web.plugins.Docket;
-//
-//@Configuration
-//@EnableKnife4j
-//public class Knife4jConfiguration {
-//
-// @Value(value = "${swagger.enable}")
-// public boolean enable;
-// @Value(value = "${swagger.groupName}")
-// public String groupName;
-//
-// @Bean(value = "dockerBean")
-// public Docket dockerBean() {
-// return new Docket(DocumentationType.SWAGGER_2)
-// .apiInfo(new ApiInfoBuilder()
-// //描述字段支持Markdown语法
-// .description("# Knife4j RESTful APIs")
-// .termsOfServiceUrl("https://doc.casic.com/")
-// .version("1.0")
-// .build())
-// //分组名称
-// .groupName(groupName)
-// .select()
-// .apis(RequestHandlerSelectors.basePackage("com.casic"))
-// .paths(PathSelectors.any()).build().enable(enable);
-// }
-//
-//}
\ No newline at end of file
diff --git a/src/main/java/com/casic/config/task/TaskConfigurer.java b/src/main/java/com/casic/config/task/TaskConfigurer.java
index 6a64d1c..5cd850e 100644
--- a/src/main/java/com/casic/config/task/TaskConfigurer.java
+++ b/src/main/java/com/casic/config/task/TaskConfigurer.java
@@ -5,7 +5,6 @@
import com.casic.service.UserDataDelayReceiver;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
@@ -25,14 +24,8 @@
@Value("${casic.device.online.cron}")
private String onlineStateCron;
- @Value("${casic.device.transfer-user.cron}")
- private String transferUserCron;
- @Value("${casic.device.partition.cron}")
- private String partitionCron;
private final DeviceDataService deviceDataService;
- private final UserDataDelayReceiver userDataDelayReceiver;
- private final IPartitionStrategyService partitionStrategyService;
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
@@ -40,17 +33,7 @@
triggerContext -> {
return new CronTrigger(onlineStateCron).nextExecutionTime(triggerContext);
});
- TriggerTask transferUserTask = new TriggerTask(getUserData(),
- triggerContext -> {
- return new CronTrigger(transferUserCron).nextExecutionTime(triggerContext);
- });
- TriggerTask partitionTask = new TriggerTask(createPartition(),
- triggerContext -> {
- return new CronTrigger(partitionCron).nextExecutionTime(triggerContext);
- });
taskRegistrar.addTriggerTask(onlineStateTask);
- taskRegistrar.addTriggerTask(transferUserTask);
- taskRegistrar.addTriggerTask(partitionTask);
}
private Runnable nextDayDevice() {
@@ -62,32 +45,4 @@
}
};
}
-
- /**
- * 定时同步普光
- */
- private Runnable getUserData() {
- return new Runnable() {
- @Override
- public void run() {
- log.info("同步数据的任运行...");
- userDataDelayReceiver.saveNewUserData();
- }
- };
- }
-
- /**
- * 定时同步普光
- */
- private Runnable createPartition() {
- return new Runnable() {
- @Override
- public void run() {
- log.info("定时构建硫化氢数据分区表任务运行...");
- partitionStrategyService.createPartition("DATA_H2S", "data_h2s_log");
- }
- };
-
- }
-
}
\ No newline at end of file
diff --git a/src/main/java/com/casic/controller/DeviceDataController.java b/src/main/java/com/casic/controller/DeviceDataController.java
deleted file mode 100644
index e6ae7bc..0000000
--- a/src/main/java/com/casic/controller/DeviceDataController.java
+++ /dev/null
@@ -1,40 +0,0 @@
-//package com.casic.controller;
-//
-//import com.alibaba.fastjson.JSON;
-//import com.casic.service.DeviceDataService;
-//import com.casic.service.ThirdDataService;
-//import lombok.RequiredArgsConstructor;
-//import org.springframework.web.bind.annotation.*;
-//
-//import java.util.Map;
-//
-//@RestController
-//@RequestMapping("/device")
-//@RequiredArgsConstructor
-//public class DeviceDataController {
-//
-// private final DeviceDataService deviceDataService;
-//
-// @RequestMapping("/recent-data")
-// public Object getDeviceRecentData(@RequestParam(value = "deviceType", required = true) String deviceType,
-// @RequestParam(value = "recentNum", required = true) String recentNum,
-// @RequestParam(value = "devcode", required = false) String devcode) {
-// return deviceDataService.getDeviceRecentData(deviceType, recentNum, devcode);
-// }
-//
-// @RequestMapping("/data/list-page")
-// public Object getDeviceListPage(@RequestParam(value = "deviceType", required = true) String deviceType,
-// @RequestParam(value = "currentIndex", required = true) Integer currentIndex,
-// @RequestParam(value = "pageSize", required = true) Integer pageSize,
-// @RequestParam(value = "devcode", required = false) String devcode) {
-// return deviceDataService.getDeviceListPage(deviceType, currentIndex, pageSize, devcode);
-// }
-//
-// @RequestMapping("/level/{deviceType}")
-// public Object getLevelList(@PathVariable("deviceType")String deviceType) {
-// return deviceDataService.getLevel(deviceType);
-// }
-//
-//
-//
-//}
diff --git a/src/main/java/com/casic/dao/BusWellInfoMapper.java b/src/main/java/com/casic/dao/BusWellInfoMapper.java
new file mode 100644
index 0000000..102dd78
--- /dev/null
+++ b/src/main/java/com/casic/dao/BusWellInfoMapper.java
@@ -0,0 +1,17 @@
+package com.casic.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.casic.model.BusWellInfo;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ *
+ * 闸井信息表 Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2019-05-13
+ */
+public interface BusWellInfoMapper extends BaseMapper {
+ BusWellInfo getWellListByCode(@Param("wellCode") String wellCode);
+}
diff --git a/src/main/java/com/casic/model/BusWellInfo.java b/src/main/java/com/casic/model/BusWellInfo.java
new file mode 100644
index 0000000..88c9430
--- /dev/null
+++ b/src/main/java/com/casic/model/BusWellInfo.java
@@ -0,0 +1,163 @@
+package com.casic.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ *
+ * 闸井信息表
+ *
+ *
+ * @author lwh
+ * @since 2019-05-13
+ */
+@EqualsAndHashCode(callSuper = true)
+@TableName("bus_well_info")
+@Data
+public class BusWellInfo extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 井盖编号
+ */
+ @TableField("WELL_CODE")
+ private String wellCode;
+ /**
+ * 井盖名称
+ */
+ @TableField("WELL_NAME")
+ private String wellName;
+ /**
+ * 井深
+ */
+ @TableField("DEEP")
+ private Float deep;
+ /**
+ * 区域
+ */
+ @TableField("AREA")
+ private String area;
+
+ /**
+ * 区域
+ */
+ @TableField("ROAD")
+ private String road;
+ /**
+ * 第三方坐标系X
+ */
+ @TableField("COORDINATE_X")
+ private String coordinateX;
+ /**
+ * 第三方坐标Y
+ */
+ @TableField("COORDINATE_Y")
+ private String coordinateY;
+ /**
+ * 百度纬度
+ */
+ @TableField("LAT_BAIDU")
+ private String latBaidu;
+ /**
+ * 百度经度
+ */
+ @TableField("LNG_BAIDU")
+ private String lngBaidu;
+ /**
+ * 高德经度
+ */
+ @TableField("LNG_GAODE")
+ private String lngGaode;
+ /**
+ * 高德纬度
+ */
+ @TableField("LAT_GAODE")
+ private String latGaode;
+ /**
+ * 位置
+ */
+ @TableField("POSITION")
+ private String position;
+ /**
+ * 部门编号
+ */
+ @TableField("DEPTID")
+ private Long deptid;
+ /**
+ * 路标图片路径集合
+ */
+ @TableField("PHOTOS")
+ private String photos;
+ /**
+ * 备注
+ */
+ @TableField("NOTES")
+ private String notes;
+ /**
+ * 井类型
+ */
+ @TableField("WELL_TYPE")
+ private String wellType;
+ /**
+ * 责任人
+ */
+ @TableField("STAFF")
+ private String staff;
+ /**
+ * 电话
+ */
+ @TableField("TEL")
+ private String tel;
+ /**
+ * 时间戳
+ */
+ @TableField("TS")
+ private Date ts;
+ /**
+ * 是否有效
+ */
+ @TableField("VALID")
+ private String valid;
+ /**
+ * 布防状态
+ */
+ @TableField("BFZT")
+ private String bfzt;
+
+ /**
+ * 维护单位/小组id
+ */
+ @TableField("RESPONSIBLE_DEPT")
+ private Long responsibleDept;
+
+ /**
+ * 井标签备用1
+ */
+ @TableField("WELL_FLAG_1")
+ private String wellFlag1;
+
+ /**
+ * 井标签备用2
+ */
+ @TableField("WELL_FLAG_2")
+ private String wellFlag2;
+
+ /**
+ * 井标签备用3
+ */
+ @TableField("WELL_FLAG_3")
+ private String wellFlag3;
+}
diff --git a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java
index e156160..2feb154 100644
--- a/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java
+++ b/src/main/java/com/casic/service/impl/ThirdDataServiceImpl.java
@@ -1,17 +1,21 @@
package com.casic.service.impl;
+import cn.hutool.core.util.ObjectUtil;
import com.alibaba.druid.util.StringUtils;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.casic.dao.AlarmRecordMapper;
+import com.casic.dao.BusWellInfoMapper;
import com.casic.dao.DataH2sMapper;
import com.casic.enums.H2sParamsEnum;
import com.casic.model.AlarmRecord;
+import com.casic.model.BusWellInfo;
import com.casic.model.DataH2s;
import com.casic.model.User;
import com.casic.service.ThirdDataService;
import com.casic.util.RedisCommon;
+import com.casic.util.SMSSendUtil;
import com.casic.util.WebSocket;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -35,7 +39,9 @@
private final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
private final RedisCommon redisCommon;
private final AlarmRecordMapper alarmRecordMapper;
+ private final BusWellInfoMapper wellMapper;
private final WebSocket webSocket;
+ private final SMSSendUtil smsUtil;
private final DataScopeBuilder dataScopeBuilder;
@Value("${casic.device.apn}")
@@ -58,7 +64,7 @@
}
}
} catch (DataAccessException dae) {
- log.error("设备上报数据异常,设备传入的json是{},异常信息{}", dae.getMessage());
+ log.error("设备上报数据异常,设备传入的json是{},异常信息{}", h2sDataMap, dae.getMessage());
}
return defaultDeliveryConfig(null);
}
@@ -78,16 +84,19 @@
//判断是否有下发配置必须
map.put("status", ObjectUtils.isNotEmpty(configDataMap) ? 200 : 201);
if (ObjectUtils.isNotEmpty(configDataMap) && configDataMap.containsKey("interval")) {
- configDataMap.put("interval", (String) configDataMap.get("interval"));
- configDataMap.put("port", (String) configDataMap.get("port"));
- configDataMap.put("apn",apn);
- configDataMap.put("period", (String) configDataMap.get("period"));
- configDataMap.put("repeat", (String) configDataMap.get("repeat"));
-
+ configDataMap.put("interval", String.valueOf(configDataMap.get("interval")));
+ configDataMap.put("port", String.valueOf(configDataMap.get("port")));
+ configDataMap.put("apn", apn);
+ configDataMap.put("period", String.valueOf(configDataMap.get("period")) );
+ configDataMap.put("repeat", String.valueOf(configDataMap.get("repeat")) );
+ configDataMap.put("thresh", String.valueOf(configDataMap.get("thresh")) );
}
map.put("params", configDataMap);
//可省略
map.put("timeout", 30000);
+ if (ObjectUtils.isNotEmpty(configDataMap)) {
+ log.info("发送配置信息到things board: {}", map);
+ }
return map;
}
@@ -128,6 +137,7 @@
checkAlarm(dataH2s);
Map configDataMap = redisCommon.getMsg(devcode);
if (ObjectUtils.isNotEmpty(configDataMap)) {
+ log.info("有需要下发的配置项: {}", configDataMap);
return defaultDeliveryConfig(configDataMap);
}
}
@@ -160,11 +170,19 @@
}
if (!StringUtils.isEmpty(dataH2s.getStrength()) && !"null".equals(dataH2s.getStrength())) {
String status = "0";
- this.baseMapper.cancelAlarm(dataH2s.getDevcode(), status);
- if (Float.valueOf(dataH2s.getStrength()) > ruleValue) {
+ int currAlarmCount = this.baseMapper.cancelAlarm(dataH2s.getDevcode(), status);
+ if (Float.parseFloat(dataH2s.getStrength()) > ruleValue) {
Long id = this.baseMapper.getDeviceId(dataH2s.getDevcode());
alarmRecordMapper.insert(buildAlarmRecord(dataH2s, id));
- threadPoolExecutor.execute(() -> sendAlarm("浓度超限", this.baseMapper.getDeptIdsByDevcode(dataH2s.getDevcode())));
+
+ // 推送websocket 一直超限可以一直推送websocket消息
+ threadPoolExecutor.execute(() -> sendAlarm("硫化氢浓度超限", dataH2s.getDevcode(), dataH2s.getStrength(),
+ this.baseMapper.getDeptIdsByDevcode(dataH2s.getDevcode())));
+
+ // 是新报警的时候才推送报警短信
+ if (currAlarmCount == 0) {
+ threadPoolExecutor.execute(() -> sendAlarmSms("检测到硫化氢浓度超限", dataH2s.getWellCode(), dataH2s.getStrength(), dataH2s.getUptime()));
+ }
}
}
}
@@ -184,7 +202,7 @@
}
// PC推送
- private void sendAlarm(String msg, Long deptId) {
+ private void sendAlarm(String msg, String devCode, String value, Long deptId) {
List userIds = new ArrayList<>();
List userList = dataScopeBuilder.DataScopeProvider(deptId);
for (User user : userList) {
@@ -194,51 +212,25 @@
Map map = new HashMap();
map.put("message", msg);
map.put("type", "alarm");
+ map.put("deviceNo", devCode);
+ map.put("value", value);
webSocket.sendListMessage(userIds, JSON.toJSONString(map));
} else {
log.info("告警消息找不到责任人,pc端未推送:" + msg);
}
}
- // "在2023年1月12号 16时43分23秒,设备41232561发生了压力超标/浓度超限,数值为20"
- // + "设备" + devcode + "发生了压力超标,压力值为" + presss
- private void alarmPushBuilder(String devcode, String presss) {
-// ResponseData responseData = (ResponseData) alarmPushService.getAlarmPush("H2S");
-// AlarmPushConfig alarmPushConfig = (AlarmPushConfig) responseData.getData();
-// if (alarmPushConfig.getEnable().equals(1)) {
-// if (alarmPushConfig.getWebsocketAlarm().equals(1)) {
-// String msg = "在" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + ","
-// + "设备" + devcode + "发生了压力超标,压力值为" + presss;
-// try {
-// messagePusherService.updateSinkJob("", URLDecoder.decode(msg, "UTF-8"));
-// } catch (UnsupportedEncodingException uee) {
-// log.error("websocket推送,内容转码出现异常,异常信息为{}", uee.getMessage());
-// }
-// }
-// if (alarmPushConfig.getShortMessageAlarm().equals(1)) {
-// JSONArray msglist = new JSONArray();
-// JSONObject msgMap = new JSONObject();
-// msgMap.put("time", new SimpleDateFormat("yyyyMMdd HH:mm:ss").format(new Date()));
-// msgMap.put("devcode", devcode);
-// msgMap.put("value", presss);
-// msgMap.put("content", "压力超标");
-// String phoneJson = "";
-// List aliSignNameList = new ArrayList<>();
-// String aliSignName = aliYunConfig.getSignNameJson();
-// if (!org.apache.commons.lang3.StringUtils.isEmpty(alarmPushConfig.getPhoneArray())) {
-// String[] phones = alarmPushConfig.getPhoneArray().split(",");
-// List phoneList = new ArrayList<>();
-// for (String phone : phones) {
-// msglist.add(msgMap);
-// phoneList.add(phone);
-// aliSignNameList.add(aliSignName);
-// }
-// phoneJson = JSONObject.toJSONString(phoneList);
-// }
-// sendBatchSmsUtil.sendMsg(phoneJson, JSON.toJSONString(msgMap), JSONObject.toJSONString(aliSignNameList));
-// }
-// }
+ private void sendAlarmSms(String msg, String wellCode, String value, String alarmTime) {
+ BusWellInfo wellInfo = wellMapper.getWellListByCode(wellCode);
+ if (null != wellInfo && ObjectUtil.isNotEmpty(wellInfo.getTel())) {
+ // 拼接报警信息
+ String content = msg + "," + // 发现硫化氢泄漏,
+ "点位:" + wellInfo.getWellName() + ",详细位置:" + wellInfo.getPosition() + "," + // 点位:名称,位置,
+ "浓度值:" + value + "ppm," + // 浓度值
+ "时间:" + alarmTime + "," + // 时间
+ "请及时处理。"; // 请及时处理。
+
+ smsUtil.sendSms(wellInfo.getTel(), content);
+ }
}
-
-
}
diff --git a/src/main/java/com/casic/util/SMSSendUtil.java b/src/main/java/com/casic/util/SMSSendUtil.java
new file mode 100644
index 0000000..cd9c452
--- /dev/null
+++ b/src/main/java/com/casic/util/SMSSendUtil.java
@@ -0,0 +1,41 @@
+package com.casic.util;
+
+import cn.hutool.http.HttpResponse;
+import cn.hutool.http.HttpRequest;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * 此注解相当于设置访问URL
+ */
+@Component
+@Data
+@Slf4j
+@ConfigurationProperties(prefix = "casic.sms")
+public class SMSSendUtil {
+
+ private String url;
+ private String name;
+ private String token;
+ private String systemName;
+
+ public void sendSms(String phoneNums, String content) {
+ log.info("向【{}】发送短信:【{}】", phoneNums, content);
+
+ Map params = new HashMap<>();
+ params.put("name", name);
+ params.put("token", token);
+ params.put("phoneNums", phoneNums);
+ params.put("content", systemName + ":" + content);
+
+ HttpResponse httpResponse = HttpRequest.post(url).form(params).execute();
+ String result = httpResponse.body();
+ log.debug("短信接口调用返回{}", result);
+ }
+}
diff --git a/src/main/java/com/casic/util/WebSocket.java b/src/main/java/com/casic/util/WebSocket.java
index 1ee283f..4503c06 100644
--- a/src/main/java/com/casic/util/WebSocket.java
+++ b/src/main/java/com/casic/util/WebSocket.java
@@ -1,5 +1,6 @@
package com.casic.util;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.websocket.OnClose;
@@ -17,6 +18,7 @@
* 此注解相当于设置访问URL
*/
@Component
+@Slf4j
@ServerEndpoint("/websocket/{userId}")
public class WebSocket {
private Session session;
@@ -29,24 +31,24 @@
this.session = session;
webSockets.add(this);
sessionPool.put(userId, session);
- System.out.println(userId + "【websocket消息】有新的连接,总数为:" + webSockets.size());
+ log.info("{}【websocket消息】有新的连接,总数为: {}", userId, webSockets.size());
}
@OnClose
public void onClose() {
webSockets.remove(this);
- System.out.println("【websocket消息】连接断开,总数为:" + webSockets.size());
+ log.info("【websocket消息】连接断开,总数为: {}",webSockets.size());
}
@OnMessage
public void onMessage(String message) {
- System.out.println("【websocket消息】收到客户端消息:" + message);
+ log.info("【websocket消息】收到客户端消息: {}", message);
}
// 此为广播消息
public void sendAllMessage(String message) {
for (WebSocket webSocket : webSockets) {
- System.out.println("【websocket消息】广播消息:" + message);
+ log.info("【websocket消息】广播消息: {}", message);
try {
webSocket.session.getAsyncRemote().sendText(message);
} catch (Exception e) {
@@ -57,7 +59,7 @@
// 发送列表消息
public void sendListMessage(List userIds, String message) {
- System.out.println("【websocket消息】列表消息:" + message);
+ log.info("【websocket消息】列表消息: {}", message);
for (String userId : userIds) {
Session session = sessionPool.get(userId);
if (session != null) {
@@ -70,26 +72,9 @@
}
}
- // 发送列表消息
-
-// public void sendListMessage(List userIds, Object data){
-// System.out.println("【websocket消息】列表消息:"+data);
-// for (String userId : userIds) {
-// Session session = sessionPool.get(userId);
-// if (session != null) {
-// try {
-//// session.getAsyncRemote().sendText(message);
-// session.getAsyncRemote().sendObject(data);
-// } catch (Exception e) {
-// e.printStackTrace();
-// }
-// }
-// }
-// }
-
// 此为单点消息
public void sendOneMessage(String userId, String message) {
- System.out.println("【websocket消息】单点消息:" + message);
+ log.info("【websocket消息】单点消息: {}", message);
Session session = sessionPool.get(userId);
if (session != null) {
try {
diff --git a/src/main/resources/config/application-dz.yml b/src/main/resources/config/application-dz.yml
index d1474a4..64eaf8a 100644
--- a/src/main/resources/config/application-dz.yml
+++ b/src/main/resources/config/application-dz.yml
@@ -1,4 +1,5 @@
-
+server:
+ port: 11307
################### spring配置 ###################
spring:
datasource:
@@ -9,8 +10,8 @@
session:
store-type: redis
redis:
- host: 10.80.1.124
- port: 31681
+ host: 10.80.0.171
+ port: 6379
password:
redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer
@@ -24,10 +25,11 @@
init:
enable: false
spring-session-open: false #开启spring session
- no-login-urls: /job/updateSinkJob,/user/login/token,/push/data,/config/confirm
+ no-login-urls: /job/updateSinkJob,/user/login/token,/push/data,/config/confirm,/websocket/*
logging:
- level.root: error
- level.com.casic: info
+ level:
+ root: error
+ com.casic: info
file:
path: logs/
name: missiles.log
\ No newline at end of file
diff --git a/src/main/resources/config/application.yml b/src/main/resources/config/application.yml
index f354d1d..65e0809 100644
--- a/src/main/resources/config/application.yml
+++ b/src/main/resources/config/application.yml
@@ -10,7 +10,7 @@
pathmatch:
matching-strategy: ant_path_matcher
server:
- port: 11314
+ port: 11307
mybatis-plus:
global-config:
enable-sql-runner: true
@@ -30,22 +30,23 @@
device:
redis:
invalid-time: 86400
- host: 127.0.0.1
+ host: 10.80.0.171
port: 6379
- password: ew5T4K3#203lwh
+ password:
config-prefix: 'Casic:' #下发配置,key前缀
apn: "dashoa.sc.iot" # 平台对应的apn
appName: "XLJCYJ" #应用名称-泄露监测预警
appUrl: "http://10.80.12.33" #普光服务的url
online:
cron: 0 0 0/1 * * ? # 多长时间判断离线
- transfer-user:
- cron: 0 0/1 * * * ? # 数据同步,每天凌晨0点、中午12点各进行同步一次 0 0 0,12 * * ?
- partition:
- cron: 0 0 0 * * ?
- data-day: 3 #多少天为离线
+ data-day: 1 #多少天为离线
type: 14 #硫化氢
+ sms:
+ url: http://10.75.240.177/send
+ name: zhangb9987
+ token: 4D0E6A690C1845E0A8DF76D8C9C5E6B2
+ system-name: "采气厂硫化氢泄漏监测系统"
swagger:
enable: true
- groupName: "硫化氢课题"
\ No newline at end of file
+ groupName: "采气厂硫化氢泄漏监测系统"
\ No newline at end of file
diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml
new file mode 100644
index 0000000..c0c7ac9
--- /dev/null
+++ b/src/main/resources/logback-spring.xml
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ ${CONSOLE_LOG_PATTERN}
+ utf-8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${CONSOLE_LOG_PATTERN}
+ utf-8
+
+
+
+
+
+
+
+ ${LOG_PATH}/missiles_error.log
+
+
+
+
+
+ ${LOG_PATH}/error/log-error-%d{yyyy-MM-dd}.%i.log
+
+
+
+ 10MB
+
+
+
+
+ true
+
+
+
+ ${FILE_LOG_PATTERN}
+ utf-8
+
+
+
+
+ error
+ ACCEPT
+ DENY
+
+
+
+
+
+
+
+ ${LOG_PATH}/missiles_total.log
+
+
+
+
+
+ ${LOG_PATH}/total/log-total-%d{yyyy-MM-dd}.%i.log
+
+
+
+ 10MB
+
+
+
+
+ true
+
+
+
+ ${FILE_LOG_PATTERN}
+ utf-8
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/mapper/BusWellInfoMapper.xml b/src/main/resources/mapper/BusWellInfoMapper.xml
new file mode 100644
index 0000000..dc1c692
--- /dev/null
+++ b/src/main/resources/mapper/BusWellInfoMapper.xml
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, WELL_CODE AS "wellCode", WELL_NAME AS "wellName", DEEP AS deep,
+ COORDINATE_X AS "coordinateX", COORDINATE_Y AS "coordinateY", LAT_BAIDU AS "latBaidu",
+ LNG_BAIDU AS "lngBaidu", LNG_GAODE AS "lngGaode", LAT_GAODE AS "latGaode", AREA AS area,
+ POSITION AS position, DEPTID AS deptid, PHOTOS AS photos, NOTES AS notes,
+ WELL_TYPE AS "wellType", STAFF AS staff, TEL AS tel, TS AS ts, VALID AS valid,
+ BFZT AS bfzt,RESPONSIBLE_DEPT AS "responsibleDept",ROAD AS road
+
+
+
+
+
+