forked from floraachy/xiuos_IoT
add data forwarding function include
1. data select 2. data forwadrding by email
This commit is contained in:
parent
19277c2dd1
commit
f3ebfe025f
|
@ -94,6 +94,12 @@
|
||||||
<artifactId>spring-boot-configuration-processor</artifactId>
|
<artifactId>spring-boot-configuration-processor</artifactId>
|
||||||
<optional>true</optional>
|
<optional>true</optional>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- 引入 redis 依赖 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-data-redis</artifactId>
|
||||||
|
<version>1.5.7.RELEASE</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
@ -102,6 +108,13 @@
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-mail</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,100 @@
|
||||||
package com.aiit.xiuos.Utils;
|
package com.aiit.xiuos.Utils;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.mail.SimpleMailMessage;
|
||||||
|
import org.springframework.mail.javamail.JavaMailSender;
|
||||||
|
import org.springframework.mail.javamail.MimeMessageHelper;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.mail.MessagingException;
|
||||||
|
import javax.mail.internet.MimeMessage;
|
||||||
|
import java.io.File;
|
||||||
|
@Component
|
||||||
public class EmailUtil {
|
public class EmailUtil {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private JavaMailSender mailSender;
|
||||||
|
|
||||||
|
private String from ="419034340@qq.com";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发送纯文本邮件信息
|
||||||
|
*
|
||||||
|
* @param to 接收方
|
||||||
|
* @param subject 邮件主题
|
||||||
|
* @param content 邮件内容(发送内容)
|
||||||
|
*/
|
||||||
|
public void sendMessage(String to, String subject, String content) {
|
||||||
|
// 创建一个邮件对象
|
||||||
|
SimpleMailMessage msg = new SimpleMailMessage();
|
||||||
|
msg.setFrom(from); // 设置发送发
|
||||||
|
msg.setTo(to); // 设置接收方
|
||||||
|
msg.setSubject(subject); // 设置邮件主题
|
||||||
|
msg.setText(content); // 设置邮件内容
|
||||||
|
// 发送邮件
|
||||||
|
mailSender.send(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发送带附件的邮件信息
|
||||||
|
*
|
||||||
|
* @param to 接收方
|
||||||
|
* @param subject 邮件主题
|
||||||
|
* @param content 邮件内容(发送内容)
|
||||||
|
* @param files 文件数组 // 可发送多个附件
|
||||||
|
*/
|
||||||
|
public void sendMessageCarryFiles(String to, String subject, String content, File[] files) {
|
||||||
|
MimeMessage mimeMessage = mailSender.createMimeMessage();
|
||||||
|
try {
|
||||||
|
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
|
||||||
|
helper.setFrom(from); // 设置发送发
|
||||||
|
helper.setTo(to); // 设置接收方
|
||||||
|
helper.setSubject(subject); // 设置邮件主题
|
||||||
|
helper.setText(content); // 设置邮件内容
|
||||||
|
if (files != null && files.length > 0) { // 添加附件(多个)
|
||||||
|
for (File file : files) {
|
||||||
|
helper.addAttachment(file.getName(), file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (MessagingException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
// 发送邮件
|
||||||
|
mailSender.send(mimeMessage);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 发送带附件的邮件信息
|
||||||
|
*
|
||||||
|
* @param to 接收方
|
||||||
|
* @param subject 邮件主题
|
||||||
|
* @param content 邮件内容(发送内容)
|
||||||
|
* @param file 单个文件
|
||||||
|
*/
|
||||||
|
public void sendMessageCarryFile(String to, String subject, String content, File file) {
|
||||||
|
MimeMessage mimeMessage = mailSender.createMimeMessage();
|
||||||
|
try {
|
||||||
|
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
|
||||||
|
helper.setFrom(from); // 设置发送发
|
||||||
|
helper.setTo(to); // 设置接收方
|
||||||
|
helper.setSubject(subject); // 设置邮件主题
|
||||||
|
helper.setText(content); // 设置邮件内容
|
||||||
|
helper.addAttachment(file.getName(), file); // 单个附件
|
||||||
|
} catch (MessagingException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
// 发送邮件
|
||||||
|
mailSender.send(mimeMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFrom() {
|
||||||
|
return from;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFrom(String from) {
|
||||||
|
this.from = from;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,150 +0,0 @@
|
||||||
package com.aiit.xiuos.Utils;
|
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
|
||||||
import com.alibaba.fastjson.JSONArray;
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
|
||||||
import com.taosdata.jdbc.TSDBDriver;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
|
|
||||||
import java.sql.*;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Properties;
|
|
||||||
@Slf4j
|
|
||||||
public class TDengineJDBCUtil {
|
|
||||||
public static Connection getConn() throws Exception{
|
|
||||||
Class.forName("com.taosdata.jdbc.TSDBDriver");
|
|
||||||
String jdbcUrl = "jdbc:TAOS://xiuosiot.taosnode1:6030/xiuosiot?user=root&password=taosdata";
|
|
||||||
Properties connProps = new Properties();
|
|
||||||
connProps.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8");
|
|
||||||
connProps.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8");
|
|
||||||
connProps.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8");
|
|
||||||
connProps.setProperty("debugFlag", "135");
|
|
||||||
connProps.setProperty("maxSQLLength", "1048576");
|
|
||||||
Connection conn = DriverManager.getConnection(jdbcUrl, connProps);
|
|
||||||
return conn;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Connection getRestConn() throws Exception{
|
|
||||||
Class.forName("com.taosdata.jdbc.rs.RestfulDriver");
|
|
||||||
String jdbcUrl = "jdbc:TAOS-RS://10.0.30.23:6041/test?user=root&password=taosdata";
|
|
||||||
Properties connProps = new Properties();
|
|
||||||
connProps.setProperty(TSDBDriver.PROPERTY_KEY_BATCH_LOAD, "true");
|
|
||||||
Connection conn = DriverManager.getConnection(jdbcUrl, connProps);
|
|
||||||
return conn;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static boolean createTable(String deviceno, String type, String org, String productname){
|
|
||||||
Connection connection = null;
|
|
||||||
try {
|
|
||||||
connection = TDengineJDBCUtil.getConn();
|
|
||||||
Statement stmt = connection.createStatement();
|
|
||||||
String devicetype=TDengineJDBCUtil.changeType(type);
|
|
||||||
if(devicetype==null){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
// create table
|
|
||||||
String sql ="create table if not exists " + deviceno + " using "+devicetype+" tags("+"\""+org+"\","+"\"" + productname+"\")";
|
|
||||||
stmt.executeUpdate(sql);
|
|
||||||
return true;
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}finally {
|
|
||||||
try {
|
|
||||||
if(connection!=null){
|
|
||||||
connection.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (SQLException throwables) {
|
|
||||||
throwables.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String changeType(String type){
|
|
||||||
if(type.equals("M168-LoRa-FM100")) return "M168type";
|
|
||||||
if(type.equals("RV400-NPU16T-5G-AR100")) return "RV400ARtype";
|
|
||||||
if(type.equals("RV400-NPU4T-5G-SR100")) return "RV400SRtype";
|
|
||||||
if(type.equals("M528-A800-5G-HM100")) return "M528type";
|
|
||||||
if(type.equals("RV400-4G-FR100")) return "RV400FRtype";
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ArrayList<String> executeSql(String sql) throws Exception {
|
|
||||||
Connection connection = null;
|
|
||||||
ArrayList<String> arrayList =new ArrayList<>();
|
|
||||||
try {
|
|
||||||
connection = TDengineJDBCUtil.getConn();
|
|
||||||
Statement stmt = connection.createStatement();
|
|
||||||
ResultSet resultSet =stmt.executeQuery(sql);
|
|
||||||
log.info("tdengine executeQuery:"+sql);
|
|
||||||
|
|
||||||
ResultSetMetaData metaData = resultSet.getMetaData();
|
|
||||||
while (resultSet.next()) {
|
|
||||||
StringBuilder sb=new StringBuilder();
|
|
||||||
for (int i = 1; i <= metaData.getColumnCount(); i++) {
|
|
||||||
String columnLabel = metaData.getColumnLabel(i);
|
|
||||||
String value = resultSet.getString(i);
|
|
||||||
sb.append(columnLabel+":"+value+" ");
|
|
||||||
}
|
|
||||||
arrayList.add(sb.toString());
|
|
||||||
System.out.println(sb.toString());
|
|
||||||
}
|
|
||||||
return arrayList;
|
|
||||||
} catch (SQLException e) {
|
|
||||||
System.out.println("ERROR Message: " + e.getMessage());
|
|
||||||
System.out.println("ERROR Code: " + e.getErrorCode());
|
|
||||||
e.printStackTrace();
|
|
||||||
}finally {
|
|
||||||
try {
|
|
||||||
if(connection!=null){
|
|
||||||
connection.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (SQLException throwables) {
|
|
||||||
throwables.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int getCount(String sql) throws Exception {
|
|
||||||
Connection connection = null;
|
|
||||||
int count =-1;
|
|
||||||
try {
|
|
||||||
connection = TDengineJDBCUtil.getConn();
|
|
||||||
Statement stmt = connection.createStatement();
|
|
||||||
ResultSet resultSet =stmt.executeQuery(sql);
|
|
||||||
log.info("tdengine executeQuery:"+sql);
|
|
||||||
ResultSetMetaData metaData = resultSet.getMetaData();
|
|
||||||
if (resultSet.next()) {
|
|
||||||
count = resultSet.getInt(1);
|
|
||||||
}
|
|
||||||
return count;
|
|
||||||
} catch (SQLException e) {
|
|
||||||
System.out.println("ERROR Message: " + e.getMessage());
|
|
||||||
System.out.println("ERROR Code: " + e.getErrorCode());
|
|
||||||
e.printStackTrace();
|
|
||||||
}finally {
|
|
||||||
try {
|
|
||||||
if(connection!=null){
|
|
||||||
connection.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (SQLException throwables) {
|
|
||||||
throwables.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
return count;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -45,6 +45,16 @@ public class AlarmInfoController {
|
||||||
return new ResultRespons(Constant.ERROR_CODE,"更新告警信息失败!");
|
return new ResultRespons(Constant.ERROR_CODE,"更新告警信息失败!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@PostMapping("/add")
|
||||||
|
public ResultRespons addAlarmInfo(@RequestBody AlarmInfo alarmInfo){
|
||||||
|
int res =alarmInfoService.addAlarmInfo(alarmInfo);
|
||||||
|
if(res==1){
|
||||||
|
return new ResultRespons(Constant.SUCCESS_CODE,"新增告警信息成功!");
|
||||||
|
}
|
||||||
|
return new ResultRespons(Constant.ERROR_CODE,"新增告警信息失败!");
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/getAlarmLevelCount")
|
@GetMapping("/getAlarmLevelCount")
|
||||||
public ResultRespons getAlarmLevelCount(HttpServletRequest request){
|
public ResultRespons getAlarmLevelCount(HttpServletRequest request){
|
||||||
UserInfo userInfo =(UserInfo) request.getSession().getAttribute("user");
|
UserInfo userInfo =(UserInfo) request.getSession().getAttribute("user");
|
||||||
|
|
|
@ -63,12 +63,5 @@ public class AlarmRuleController {
|
||||||
return new ResultRespons(Constant.ERROR_CODE,"删除告警规则失败");
|
return new ResultRespons(Constant.ERROR_CODE,"删除告警规则失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/executeAlarmTask")
|
|
||||||
public void executeTask(){
|
|
||||||
try {
|
|
||||||
taskScheduled.ExecuteRule();
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,99 @@
|
||||||
package com.aiit.xiuos.controller;
|
package com.aiit.xiuos.controller;
|
||||||
|
|
||||||
|
import com.aiit.xiuos.Utils.*;
|
||||||
|
import com.aiit.xiuos.model.DataForwarding;
|
||||||
|
import com.aiit.xiuos.model.UserInfo;
|
||||||
|
import com.aiit.xiuos.service.DataForwardService;
|
||||||
|
import com.aiit.xiuos.tdengine.TDengineJDBCUtil;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import java.io.*;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/dataForward")
|
||||||
|
@Slf4j
|
||||||
public class DataForwardController {
|
public class DataForwardController {
|
||||||
|
@Autowired
|
||||||
|
DataForwardService dataForwardService;
|
||||||
|
@Autowired
|
||||||
|
EmailUtil emailUtil;
|
||||||
|
|
||||||
|
@PostMapping("/addRecord")
|
||||||
|
public ResultRespons addRecord(@RequestBody Map<String,Object> jsonMap) {
|
||||||
|
boolean flag =false;
|
||||||
|
List<String> dataList =(List<String>) jsonMap.get("datalist");
|
||||||
|
DataForwarding dataForwarding =new DataForwarding();
|
||||||
|
dataForwarding.setAddress((String)jsonMap.get("address"));
|
||||||
|
dataForwarding.setContent((String)jsonMap.get("content"));
|
||||||
|
dataForwarding.setOrg((String)jsonMap.get("org"));
|
||||||
|
dataForwarding.setSql((String)jsonMap.get("sql"));
|
||||||
|
dataForwarding.setTopic((String)jsonMap.get("topic"));
|
||||||
|
dataForwarding.setType((String)jsonMap.get("type"));
|
||||||
|
dataForwarding.setTime(MyUtils.getDateTime());
|
||||||
|
try {
|
||||||
|
BufferedWriter bufferedWriter = new BufferedWriter(
|
||||||
|
new OutputStreamWriter(new FileOutputStream("/home/aiitadmin/email/data.txt"), "UTF-8"));
|
||||||
|
for (String s : dataList) {
|
||||||
|
bufferedWriter.write(s);
|
||||||
|
bufferedWriter.newLine();
|
||||||
|
bufferedWriter.flush();
|
||||||
|
}
|
||||||
|
emailUtil.sendMessageCarryFile(dataForwarding.getAddress(),dataForwarding.getTopic(),dataForwarding.getContent(),new File("/home/aiitadmin/email/data.txt"));
|
||||||
|
flag =true;
|
||||||
|
} catch (FileNotFoundException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (IOException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}catch (Exception e){
|
||||||
|
e.printStackTrace();
|
||||||
|
log.info("邮件发送失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(flag){
|
||||||
|
int res = dataForwardService.addRecord(dataForwarding);
|
||||||
|
if(res==1){
|
||||||
|
return new ResultRespons(Constant.SUCCESS_CODE,"邮件发送成功,记录已保存");
|
||||||
|
}else {
|
||||||
|
return new ResultRespons(Constant.ERROR_CODE, "邮件发送成功,记录保存失败");
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
return new ResultRespons(Constant.ERROR_CODE,"邮件发送失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/executeSql")
|
||||||
|
public ResultRespons executeSql(@RequestParam String sql){
|
||||||
|
ArrayList resultData = null;
|
||||||
|
try {
|
||||||
|
resultData = TDengineJDBCUtil.executeSql(sql);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
if(resultData!=null){
|
||||||
|
return new ResultRespons(Constant.SUCCESS_CODE,"数据查询成功",resultData);
|
||||||
|
}
|
||||||
|
return new ResultRespons(Constant.ERROR_CODE,"数据查询失败,请检查查询语句");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/getRecord")
|
||||||
|
public ResultRespons getRecord(HttpServletRequest request){
|
||||||
|
UserInfo userInfo =(UserInfo) request.getSession().getAttribute("user");
|
||||||
|
List<DataForwarding> lists = dataForwardService.selectRecord(userInfo.getOrg());
|
||||||
|
if(lists != null && lists.size()>=0){
|
||||||
|
return new ResultRespons(Constant.SUCCESS_CODE,"数据查询成功",lists);
|
||||||
|
}
|
||||||
|
return new ResultRespons(Constant.ERROR_CODE,"数据查询失败,请检查查询语句");
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,23 +3,25 @@ package com.aiit.xiuos.controller;
|
||||||
import com.aiit.xiuos.Utils.Constant;
|
import com.aiit.xiuos.Utils.Constant;
|
||||||
import com.aiit.xiuos.Utils.HttpClientUtil;
|
import com.aiit.xiuos.Utils.HttpClientUtil;
|
||||||
import com.aiit.xiuos.Utils.ResultRespons;
|
import com.aiit.xiuos.Utils.ResultRespons;
|
||||||
import com.aiit.xiuos.dao.mappers.AvgDayDataMapper;
|
|
||||||
import com.aiit.xiuos.model.AvgDayData;
|
import com.aiit.xiuos.model.AvgDayData;
|
||||||
|
import com.aiit.xiuos.mqtt.MqttConfiguration;
|
||||||
|
import com.aiit.xiuos.mqtt.MyMqttClient;
|
||||||
import com.aiit.xiuos.service.AvgDayDataService;
|
import com.aiit.xiuos.service.AvgDayDataService;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/data")
|
@RequestMapping("/data")
|
||||||
public class DeviceDataController {
|
public class DeviceDataController {
|
||||||
@Autowired
|
@Autowired
|
||||||
AvgDayDataService avgDayDataService;
|
AvgDayDataService avgDayDataService;
|
||||||
|
@Autowired
|
||||||
|
private MyMqttClient myMqttClient;
|
||||||
|
|
||||||
@GetMapping("/getAll")
|
@GetMapping("/getAll")
|
||||||
public ResultRespons getAllDataFromDSD(HttpServletRequest request){
|
public ResultRespons getAllDataFromDSD(HttpServletRequest request){
|
||||||
|
@ -38,4 +40,14 @@ public class DeviceDataController {
|
||||||
return new ResultRespons(Constant.ERROR_CODE,"查询数据失败");
|
return new ResultRespons(Constant.ERROR_CODE,"查询数据失败");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@PostMapping("/publishData")
|
||||||
|
public ResultRespons publishData(@RequestBody Map<String, Object> jsonMap){
|
||||||
|
if(myMqttClient==null){
|
||||||
|
myMqttClient=new MqttConfiguration().getMqttPushClient();
|
||||||
|
}
|
||||||
|
myMqttClient.publish("xiuosiot/"+jsonMap.get("deviceno"), JSONObject.toJSONString(jsonMap));
|
||||||
|
return new ResultRespons(Constant.ERROR_CODE,"数据发送成功");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,13 @@
|
||||||
package com.aiit.xiuos.dao.mappers;
|
package com.aiit.xiuos.dao.mappers;
|
||||||
|
|
||||||
import com.aiit.xiuos.model.DataForwarding;
|
import com.aiit.xiuos.model.DataForwarding;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.apache.ibatis.annotations.Select;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Repository
|
||||||
public interface DataForwardingMapper {
|
public interface DataForwardingMapper {
|
||||||
int deleteByPrimaryKey(Integer id);
|
int deleteByPrimaryKey(Integer id);
|
||||||
|
|
||||||
|
@ -14,4 +20,7 @@ public interface DataForwardingMapper {
|
||||||
int updateByPrimaryKeySelective(DataForwarding record);
|
int updateByPrimaryKeySelective(DataForwarding record);
|
||||||
|
|
||||||
int updateByPrimaryKey(DataForwarding record);
|
int updateByPrimaryKey(DataForwarding record);
|
||||||
|
|
||||||
|
@Select("select * from data_forwarding where org = #{org}")
|
||||||
|
List<DataForwarding> selectAll(@Param("org") String org);
|
||||||
}
|
}
|
|
@ -1,6 +1,8 @@
|
||||||
package com.aiit.xiuos.model;
|
package com.aiit.xiuos.model;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
@ -14,7 +16,7 @@ public class DataForwarding {
|
||||||
private String content;
|
private String content;
|
||||||
|
|
||||||
private String type;
|
private String type;
|
||||||
|
@JsonFormat(pattern ="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
|
||||||
private Date time;
|
private Date time;
|
||||||
|
|
||||||
private String address;
|
private String address;
|
||||||
|
|
|
@ -2,17 +2,13 @@ package com.aiit.xiuos.scheduled;
|
||||||
|
|
||||||
import com.aiit.xiuos.Utils.EmailUtil;
|
import com.aiit.xiuos.Utils.EmailUtil;
|
||||||
import com.aiit.xiuos.Utils.MyUtils;
|
import com.aiit.xiuos.Utils.MyUtils;
|
||||||
import com.aiit.xiuos.Utils.TDengineJDBCUtil;
|
import com.aiit.xiuos.tdengine.TDengineJDBCUtil;
|
||||||
import com.aiit.xiuos.model.*;
|
import com.aiit.xiuos.model.*;
|
||||||
import com.aiit.xiuos.service.*;
|
import com.aiit.xiuos.service.*;
|
||||||
import com.aiit.xiuos.service.impl.AvgDayDataServiceImpl;
|
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.checkerframework.checker.units.qual.A;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.annotation.Lazy;
|
|
||||||
import org.springframework.scheduling.annotation.Async;
|
|
||||||
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@ -134,16 +130,10 @@ public class TaskScheduled {
|
||||||
//保存告警信息。告警级别高的插入,低的因主键冲突可自动排除。
|
//保存告警信息。告警级别高的插入,低的因主键冲突可自动排除。
|
||||||
try{
|
try{
|
||||||
alarmInfoService.addAlarmInfo(alarmInfo);
|
alarmInfoService.addAlarmInfo(alarmInfo);
|
||||||
}catch (Exception e){
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
//发送邮件
|
|
||||||
try{
|
|
||||||
emailUtil.sendMessage(alarmRule.getNoticeAddress(),"设备告警",alarmRule.getNoticeContent());
|
emailUtil.sendMessage(alarmRule.getNoticeAddress(),"设备告警",alarmRule.getNoticeContent());
|
||||||
log.info("邮件发送成功");
|
log.info("邮件发送成功");
|
||||||
}catch (Exception e) {
|
}catch (Exception e){
|
||||||
log.error("邮件发送失败");
|
log.info(e.getMessage());
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,11 @@
|
||||||
package com.aiit.xiuos.service;
|
package com.aiit.xiuos.service;
|
||||||
|
|
||||||
public interface DataForward {
|
import com.aiit.xiuos.model.DataForwarding;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface DataForwardService {
|
||||||
|
int addRecord(DataForwarding dataForwarding);
|
||||||
|
List<DataForwarding> selectRecord(String org);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,23 @@
|
||||||
package com.aiit.xiuos.service.impl;
|
package com.aiit.xiuos.service.impl;
|
||||||
|
|
||||||
public class DataForwardServiceImpl {
|
import com.aiit.xiuos.dao.mappers.DataForwardingMapper;
|
||||||
|
import com.aiit.xiuos.model.DataForwarding;
|
||||||
|
import com.aiit.xiuos.service.DataForwardService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
@Service
|
||||||
|
public class DataForwardServiceImpl implements DataForwardService {
|
||||||
|
@Autowired
|
||||||
|
DataForwardingMapper dataForwardingMapper;
|
||||||
|
@Override
|
||||||
|
public int addRecord(DataForwarding dataForwarding) {
|
||||||
|
return dataForwardingMapper.insertSelective(dataForwarding);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<DataForwarding> selectRecord(String org) {
|
||||||
|
return dataForwardingMapper.selectAll(org);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,6 +76,9 @@ mqtt:
|
||||||
#默认主题
|
#默认主题
|
||||||
default-topic: xiuosiot/#
|
default-topic: xiuosiot/#
|
||||||
|
|
||||||
|
tdengine:
|
||||||
|
url: jdbc:TAOS://taosnode1:6030/xiuosiot?user=root&password=taosdata
|
||||||
|
|
||||||
logging:
|
logging:
|
||||||
file:
|
file:
|
||||||
name: xiuosiot.log
|
name: xiuosiot.log
|
||||||
|
|
|
@ -69,7 +69,8 @@ mqtt:
|
||||||
keepalive: 100
|
keepalive: 100
|
||||||
#默认主题
|
#默认主题
|
||||||
default-topic: xiuosiot/#
|
default-topic: xiuosiot/#
|
||||||
|
tdengine:
|
||||||
|
url: jdbc:TAOS://xiuosiot.taosnode1:6030/xiuosiot?user=root&password=taosdata
|
||||||
logging:
|
logging:
|
||||||
file:
|
file:
|
||||||
name: xiuosiot.log
|
name: xiuosiot.log
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
package com.aiit.xiuos;
|
||||||
|
|
||||||
|
|
||||||
|
import com.aiit.xiuos.mqtt.MyMqttClient;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
@SpringBootTest(classes = XiuosApplication.class,webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
||||||
|
public class MqttTest {
|
||||||
|
@Autowired
|
||||||
|
private MyMqttClient myMqttClient;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void pushlish() {
|
||||||
|
Random random =new Random();
|
||||||
|
for (int i = 0; i < 1; i++) {
|
||||||
|
JSONObject jsonObject =new JSONObject();
|
||||||
|
jsonObject.put("co2",19);
|
||||||
|
jsonObject.put("so2",19);
|
||||||
|
jsonObject.put("temperature",30);
|
||||||
|
jsonObject.put("humidity",28);
|
||||||
|
jsonObject.put("deviceno","a000001");
|
||||||
|
myMqttClient.publish("xiuosiot/A000001", jsonObject.toJSONString());
|
||||||
|
try {
|
||||||
|
Thread.sleep(3000);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue