设备实时数据对接初步完成
This commit is contained in:
parent
fd4f007b49
commit
6d1f7acaec
@ -0,0 +1,208 @@
|
||||
package com.fastbee.deviceData.api.dashboard.service;
|
||||
|
||||
|
||||
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.Map;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class ApiDemo {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
// 发送http请求的url
|
||||
String url = "http://apis.juhe.cn/simpleWeather/query";
|
||||
|
||||
Map<String, String> params = new HashMap<String, String>();
|
||||
params.put("key", "8fd5a2d4b0f26e5ba9c168b75c6281d5"); // 在个人中心->我的数据,接口名称上方查看
|
||||
params.put("city", "苏州"); // 要查询的城市名称或城市ID
|
||||
|
||||
|
||||
String paramsStr = urlencode(params);
|
||||
System.out.println(paramsStr);
|
||||
String response = doGet(url,paramsStr);
|
||||
// // post请求
|
||||
// String response = doPost(url,paramsStr);
|
||||
|
||||
// 输出请求结果
|
||||
System.out.println(response);
|
||||
|
||||
try {
|
||||
// 解析请求结果,json:
|
||||
JSONObject jsonObject = JSONUtil.parseObj(response);
|
||||
System.out.println(jsonObject);
|
||||
// 具体返回示例值,参考返回参数说明、json返回示例
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
// 将map型转为请求参数型
|
||||
public static String urlencode(Map<String, String> data) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (Map.Entry i : data.entrySet()) {
|
||||
try {
|
||||
sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue() + "", "UTF-8")).append("&");
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* get方式的http请求
|
||||
*
|
||||
* @param httpUrl 请求地址
|
||||
* @param paramStr 请求参数
|
||||
* @return 返回结果
|
||||
*/
|
||||
|
||||
public static String doGet(String httpUrl,String paramStr) {
|
||||
HttpURLConnection connection = null;
|
||||
InputStream inputStream = null;
|
||||
BufferedReader bufferedReader = null;
|
||||
String result = null;// 返回结果字符串
|
||||
try {
|
||||
httpUrl += "?"+paramStr;
|
||||
// 创建远程url连接对象
|
||||
URL url = new URL(httpUrl);
|
||||
// 通过远程url连接对象打开一个连接,强转成httpURLConnection类
|
||||
connection = (HttpURLConnection) url.openConnection();
|
||||
// 设置连接方式:get
|
||||
connection.setRequestMethod("GET");
|
||||
// 设置连接主机服务器的超时时间:15000毫秒
|
||||
connection.setConnectTimeout(15000);
|
||||
// 设置读取远程返回的数据时间:60000毫秒
|
||||
connection.setReadTimeout(60000);
|
||||
// 设置请求头
|
||||
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
|
||||
// 发送请求
|
||||
connection.connect();
|
||||
// 通过connection连接,获取输入流
|
||||
if (connection.getResponseCode() == 200) {
|
||||
inputStream = connection.getInputStream();
|
||||
// 封装输入流,并指定字符集
|
||||
bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
|
||||
// 存放数据
|
||||
StringBuilder sbf = new StringBuilder();
|
||||
String temp;
|
||||
while ((temp = bufferedReader.readLine()) != null) {
|
||||
sbf.append(temp);
|
||||
sbf.append(System.getProperty("line.separator"));
|
||||
}
|
||||
result = sbf.toString();
|
||||
}
|
||||
} catch (MalformedURLException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
// 关闭资源
|
||||
if (null != bufferedReader) {
|
||||
try {
|
||||
bufferedReader.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
if (null != inputStream) {
|
||||
try {
|
||||
inputStream.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
if (connection != null) {
|
||||
connection.disconnect();// 关闭远程连接
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* post方式的http请求
|
||||
*
|
||||
* @param httpUrl 请求地址
|
||||
* @param paramStr 请求参数
|
||||
* @return 返回结果
|
||||
*/
|
||||
public static String doPost(String httpUrl, String paramStr) {
|
||||
HttpURLConnection connection = null;
|
||||
InputStream inputStream = null;
|
||||
OutputStream outputStream = null;
|
||||
BufferedReader bufferedReader = null;
|
||||
String result = null;
|
||||
try {
|
||||
URL url = new URL(httpUrl);
|
||||
// 通过远程url连接对象打开连接
|
||||
connection = (HttpURLConnection) url.openConnection();
|
||||
// 设置连接请求方式
|
||||
connection.setRequestMethod("POST");
|
||||
// 设置连接主机服务器超时时间:15000毫秒
|
||||
connection.setConnectTimeout(15000);
|
||||
// 设置读取主机服务器返回数据超时时间:60000毫秒
|
||||
connection.setReadTimeout(60000);
|
||||
// 默认值为:false,当向远程服务器传送数据/写数据时,需要设置为true
|
||||
connection.setDoOutput(true);
|
||||
// 设置传入参数的格式:请求参数应该是 name1=value1&name2=value2 的形式。
|
||||
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
|
||||
// 通过连接对象获取一个输出流
|
||||
outputStream = connection.getOutputStream();
|
||||
// 通过输出流对象将参数写出去/传输出去,它是通过字节数组写出的
|
||||
outputStream.write(paramStr.getBytes());
|
||||
// 通过连接对象获取一个输入流,向远程读取
|
||||
if (connection.getResponseCode() == 200) {
|
||||
inputStream = connection.getInputStream();
|
||||
// 对输入流对象进行包装:charset根据工作项目组的要求来设置
|
||||
bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
|
||||
StringBuilder sbf = new StringBuilder();
|
||||
String temp;
|
||||
// 循环遍历一行一行读取数据
|
||||
while ((temp = bufferedReader.readLine()) != null) {
|
||||
sbf.append(temp);
|
||||
sbf.append(System.getProperty("line.separator"));
|
||||
}
|
||||
result = sbf.toString();
|
||||
}
|
||||
} catch (MalformedURLException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
// 关闭资源
|
||||
if (null != bufferedReader) {
|
||||
try {
|
||||
bufferedReader.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
if (null != outputStream) {
|
||||
try {
|
||||
outputStream.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
if (null != inputStream) {
|
||||
try {
|
||||
inputStream.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
if (connection != null) {
|
||||
connection.disconnect();
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
@ -1,9 +1,15 @@
|
||||
package com.fastbee.deviceData.api.devlink.service;
|
||||
|
||||
import com.fastbee.common.exception.ServiceException;
|
||||
import com.fastbee.common.utils.DateUtils;
|
||||
import com.fastbee.deviceData.domain.DeviceRealtimedataMeteorology;
|
||||
import com.fastbee.deviceData.mapper.DeviceRealtimedataMeteorologyMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
@ -40,7 +46,14 @@ public class DevLinkMetDataService extends DevLinkRealTimeDataService {
|
||||
.soilHumi(toBigDecimalValue(propertiesMap.get("soilHumi")))
|
||||
.build();
|
||||
|
||||
|
||||
build.setSaveTime(DateUtils.getNowDate());
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
try {
|
||||
Date date = sdf.parse(propertiesMap.get("realTime"));
|
||||
build.setRealTime(date);
|
||||
} catch (ParseException e) {
|
||||
throw new ServiceException("时间格式转换失败!");
|
||||
}
|
||||
System.err.println(build);
|
||||
return build;
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
package com.fastbee.deviceData.api.devlink.service;
|
||||
|
||||
import com.fastbee.common.exception.ServiceException;
|
||||
import com.fastbee.common.utils.DateUtils;
|
||||
import com.fastbee.deviceData.domain.DeviceRealtimedataMiaoqing;
|
||||
import com.fastbee.deviceData.domain.DeviceRealtimedataPhotovoltaic;
|
||||
import com.fastbee.deviceData.mapper.DeviceRealtimedataMiaoqingMapper;
|
||||
@ -7,6 +9,9 @@ import com.fastbee.deviceData.mapper.DeviceRealtimedataPhotovoltaicMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@ -20,6 +25,7 @@ public class DevLinkMiaoQingDataService extends DevLinkRealTimeDataService {
|
||||
private DeviceRealtimedataMiaoqingMapper deviceRealtimedataMiaoqingMapper;
|
||||
public DeviceRealtimedataMiaoqing setData(Map<String, String> propertiesMap){
|
||||
DeviceRealtimedataMiaoqing miaoqing = DeviceRealtimedataMiaoqing.builder()
|
||||
.deviceId(propertiesMap.get("deviceId"))
|
||||
.airTemp(toBigDecimalValue(propertiesMap.get("airTemp")))
|
||||
.mppTemp(toBigDecimalValue(propertiesMap.get("mppTemp")))
|
||||
.batteryCap(Long.parseLong(propertiesMap.get("batteryCap")))
|
||||
@ -43,6 +49,15 @@ public class DevLinkMiaoQingDataService extends DevLinkRealTimeDataService {
|
||||
.shoudong(toBigDecimalValue(propertiesMap.get("shoudong")))
|
||||
.control(toBigDecimalValue(propertiesMap.get("control")))
|
||||
.build();
|
||||
|
||||
miaoqing.setSaveTime(DateUtils.getNowDate());
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
try {
|
||||
Date date = sdf.parse(propertiesMap.get("realTime"));
|
||||
miaoqing.setRealTime(date);
|
||||
} catch (ParseException e) {
|
||||
throw new ServiceException("时间格式转换失败!");
|
||||
}
|
||||
System.err.println(miaoqing);
|
||||
return miaoqing;
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.fastbee.deviceData.api.devlink.service;
|
||||
|
||||
import com.fastbee.common.exception.ServiceException;
|
||||
import com.fastbee.common.utils.DateUtils;
|
||||
import com.fastbee.deviceData.domain.DeviceRealtimedataMeteorology;
|
||||
import com.fastbee.deviceData.domain.DeviceRealtimedataMoisture;
|
||||
@ -9,6 +10,9 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@ -61,6 +65,13 @@ public class DevLinkMoistureDataService extends DevLinkRealTimeDataService{
|
||||
//TODO set实时时间
|
||||
.saveTime(DateUtils.getNowDate())
|
||||
.build();
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
try {
|
||||
Date date = sdf.parse(propertiesMap.get("realTime"));
|
||||
build.setRealTime(date);
|
||||
} catch (ParseException e) {
|
||||
throw new ServiceException("时间格式转换失败!");
|
||||
}
|
||||
System.err.println(build);
|
||||
return build;
|
||||
|
||||
|
@ -1,9 +1,15 @@
|
||||
package com.fastbee.deviceData.api.devlink.service;
|
||||
|
||||
import com.fastbee.common.exception.ServiceException;
|
||||
import com.fastbee.common.utils.DateUtils;
|
||||
import com.fastbee.deviceData.domain.DeviceRealtimedataPhotovoltaic;
|
||||
import com.fastbee.deviceData.mapper.DeviceRealtimedataPhotovoltaicMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@ -18,6 +24,7 @@ public class DevLinkPhotovoltaicDataService extends DevLinkRealTimeDataService{
|
||||
//封装数据
|
||||
public DeviceRealtimedataPhotovoltaic setData(Map<String, String> propertiesMap){
|
||||
DeviceRealtimedataPhotovoltaic photovoltaic = DeviceRealtimedataPhotovoltaic.builder()
|
||||
.deviceId(propertiesMap.get("deviceId"))
|
||||
.airTemp(toBigDecimalValue(propertiesMap.get("airTemp")))
|
||||
.mppTemp(toBigDecimalValue(propertiesMap.get("mppTemp")))
|
||||
.batteryCap(toBigDecimalValue(propertiesMap.get("batteryCap")))
|
||||
@ -64,6 +71,15 @@ public class DevLinkPhotovoltaicDataService extends DevLinkRealTimeDataService{
|
||||
.cumEleMon2(toBigDecimalValue(propertiesMap.get("cum_ele_mon_2")))
|
||||
.build();
|
||||
|
||||
photovoltaic.setSaveTime(DateUtils.getNowDate());
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
try {
|
||||
Date date = sdf.parse(propertiesMap.get("realTime"));
|
||||
photovoltaic.setRealTime(date);
|
||||
} catch (ParseException e) {
|
||||
throw new ServiceException("时间格式转换失败!");
|
||||
}
|
||||
|
||||
System.err.println(photovoltaic);
|
||||
return photovoltaic;
|
||||
}
|
||||
|
@ -35,6 +35,8 @@ public class DevLinkRealTimeDataService {
|
||||
// System.err.println("status:"+status);
|
||||
//获取设备属性以及实时数据值
|
||||
Object properties = jsonObjectData.get("properties");
|
||||
//获取数据上报时间
|
||||
String time = jsonObjectData.get("lastOnlineTime").toString();
|
||||
JSONArray propertiesArray = JSONUtil.parseArray(properties);
|
||||
DeviceRealtimedataMeteorology realData = new DeviceRealtimedataMeteorology();
|
||||
//获取设备各项属性实时数据
|
||||
@ -66,6 +68,7 @@ public class DevLinkRealTimeDataService {
|
||||
});
|
||||
propertiesMap.put("status",status.toString());
|
||||
propertiesMap.put("deviceId",deviceId);
|
||||
propertiesMap.put("realTime",time);
|
||||
|
||||
return propertiesMap;
|
||||
}
|
||||
|
@ -27,11 +27,11 @@ public class RenKeAuthorizationService {
|
||||
|
||||
public String getToken(){
|
||||
//判断token是否过期
|
||||
// String cacheToken = stringRedisTemplate.opsForValue().get("renke:user:token");
|
||||
// if (!Objects.isNull(cacheToken)){
|
||||
// System.err.println("缓存中获取token:"+cacheToken);
|
||||
// return cacheToken;
|
||||
// }
|
||||
String cacheToken = stringRedisTemplate.opsForValue().get("renke:user:token");
|
||||
if (!Objects.isNull(cacheToken)){
|
||||
System.err.println("缓存中获取token:"+cacheToken);
|
||||
return cacheToken;
|
||||
}
|
||||
//获取token
|
||||
//构建请求体
|
||||
Map<String,Object> reqBody =new HashMap<>();
|
||||
@ -50,9 +50,9 @@ public class RenKeAuthorizationService {
|
||||
int expDate = Integer.parseInt(tokenObject.get("expDate").toString());
|
||||
Integer periodValidity= expDate - currDate;
|
||||
//将token存入redis
|
||||
return tokenObject.get("token").toString();
|
||||
// stringRedisTemplate.opsForValue().set("renke:user:token", tokenObject.get("token").toString(),2, TimeUnit.HOURS);
|
||||
// System.err.println("请求获取到token:"+tokenObject.get("token").toString());
|
||||
// return stringRedisTemplate.opsForValue().get("renke:user:token");
|
||||
// return tokenObject.get("token").toString();
|
||||
stringRedisTemplate.opsForValue().set("renke:user:token", tokenObject.get("token").toString(),2, TimeUnit.HOURS);
|
||||
System.err.println("请求获取到token:"+tokenObject.get("token").toString());
|
||||
return stringRedisTemplate.opsForValue().get("renke:user:token");
|
||||
}
|
||||
}
|
||||
|
@ -5,10 +5,18 @@ import cn.hutool.http.HttpResponse;
|
||||
import cn.hutool.json.JSONArray;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.fastbee.common.exception.ServiceException;
|
||||
import com.fastbee.common.utils.DateUtils;
|
||||
import com.fastbee.deviceData.domain.DeviceRealtimedataWorms;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
|
||||
@Service
|
||||
public class RenkeDeviceDataService {
|
||||
|
||||
@ -19,10 +27,10 @@ public class RenkeDeviceDataService {
|
||||
* 获取设备实时数据
|
||||
* @param deviceAddrs 设备地址,支持多个用英文逗号分隔
|
||||
*/
|
||||
public void getDeviceRealtimeData(String deviceAddrs) {
|
||||
public DeviceRealtimedataWorms setData(String deviceAddrs) {
|
||||
//处理鉴权
|
||||
// String token = authenticationService.getToken();
|
||||
String token = new RenKeAuthorizationService().getToken();
|
||||
String token = authenticationService.getToken();
|
||||
// String token = new RenKeAuthorizationService().getToken();
|
||||
//获取设备实时数据
|
||||
HttpResponse response = HttpRequest.get("http://api.farm.0531yun.cn/api/v2.0/entrance/device/getRealTimeData")
|
||||
.header("token", token)
|
||||
@ -34,12 +42,27 @@ public class RenkeDeviceDataService {
|
||||
}
|
||||
JSONObject respBody = JSONUtil.parseObj(respBodyStr);
|
||||
JSONArray realtimeDataList = JSONUtil.parseArray(respBody.get("data"));
|
||||
System.err.println("设备实时数据:"+realtimeDataList);
|
||||
JSONObject jsonObject = JSONUtil.parseObj(realtimeDataList.get(0));
|
||||
JSONObject jsonObject1 = JSONUtil.parseObj(jsonObject.get("data"));
|
||||
//获取实时时间
|
||||
String realTime = jsonObject1.get("DTime").toString();
|
||||
DeviceRealtimedataWorms deviceRealtimedataWorms = JSONUtil.toBean(jsonObject1, DeviceRealtimedataWorms.class);
|
||||
deviceRealtimedataWorms.setSaveTime(DateUtils.getNowDate());
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
try {
|
||||
Date date = sdf.parse(realTime);
|
||||
deviceRealtimedataWorms.setRealTime(date);
|
||||
} catch (ParseException e) {
|
||||
throw new ServiceException("时间格式转换失败!");
|
||||
}
|
||||
System.err.println("设备实时数据:"+deviceRealtimedataWorms);
|
||||
return deviceRealtimedataWorms;
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
RenkeDeviceDataService renkeDeviceDataService = new RenkeDeviceDataService();
|
||||
renkeDeviceDataService.getDeviceRealtimeData("1017240042");
|
||||
renkeDeviceDataService.setData("1017240042");
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -2,6 +2,8 @@ package com.fastbee.deviceData.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
@ -23,6 +25,7 @@ import com.fastbee.common.core.domain.BaseEntity;
|
||||
@AllArgsConstructor
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("iot_device_realtimedata_miaoQing")
|
||||
public class DeviceRealtimedataMiaoqing extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
@ -1,6 +1,8 @@
|
||||
package com.fastbee.deviceData.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.*;
|
||||
@ -22,6 +24,7 @@ import com.fastbee.common.core.domain.BaseEntity;
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("iot_device_realtimedata_moisture")
|
||||
public class DeviceRealtimedataMoisture extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
@ -2,6 +2,8 @@ package com.fastbee.deviceData.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
@ -23,6 +25,7 @@ import com.fastbee.common.core.domain.BaseEntity;
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("iot_device_realtimedata_photovoltaic")
|
||||
public class DeviceRealtimedataPhotovoltaic extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
@ -1,14 +1,19 @@
|
||||
package com.fastbee.deviceData.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Data;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
import com.fastbee.common.annotation.Excel;
|
||||
import com.fastbee.common.core.domain.BaseEntity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 虫情设备实时数据对象 iot_device_realtimedata_worms
|
||||
*
|
||||
@ -18,6 +23,7 @@ import com.fastbee.common.core.domain.BaseEntity;
|
||||
@ApiModel(value = "DeviceRealtimedataWorms",description = "虫情设备实时数据 iot_device_realtimedata_worms")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("iot_device_realtimedata_worms")
|
||||
public class DeviceRealtimedataWorms extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
@ -115,4 +121,16 @@ private static final long serialVersionUID = 1L;
|
||||
@ApiModelProperty("设备状态")
|
||||
private String status;
|
||||
|
||||
/** 保存时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "保存时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
@ApiModelProperty("保存时间")
|
||||
private Date saveTime;
|
||||
|
||||
/** 实时时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "实时时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
@ApiModelProperty("实时时间")
|
||||
private Date realTime;
|
||||
|
||||
}
|
||||
|
@ -1,6 +1,8 @@
|
||||
package com.fastbee.deviceData.mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.fastbee.deviceData.domain.DeviceRealtimedataMeteorology;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@ -11,7 +13,7 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
* @date 2024-11-14
|
||||
*/
|
||||
@Mapper
|
||||
public interface DeviceRealtimedataMeteorologyMapper
|
||||
public interface DeviceRealtimedataMeteorologyMapper extends BaseMapper<DeviceRealtimedataMeteorology>
|
||||
{
|
||||
/**
|
||||
* 查询气象设备实时数据
|
||||
|
@ -1,6 +1,8 @@
|
||||
package com.fastbee.deviceData.mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.fastbee.deviceData.domain.DeviceRealtimedataMiaoqing;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@ -11,7 +13,7 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
* @date 2024-11-14
|
||||
*/
|
||||
@Mapper
|
||||
public interface DeviceRealtimedataMiaoqingMapper
|
||||
public interface DeviceRealtimedataMiaoqingMapper extends BaseMapper<DeviceRealtimedataMiaoqing>
|
||||
{
|
||||
/**
|
||||
* 查询苗青设备实时数据
|
||||
|
@ -1,6 +1,8 @@
|
||||
package com.fastbee.deviceData.mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.fastbee.deviceData.domain.DeviceRealtimedataMoisture;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@ -11,7 +13,7 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
* @date 2024-11-14
|
||||
*/
|
||||
@Mapper
|
||||
public interface DeviceRealtimedataMoistureMapper
|
||||
public interface DeviceRealtimedataMoistureMapper extends BaseMapper<DeviceRealtimedataMoisture>
|
||||
{
|
||||
/**
|
||||
* 查询墒情实时数据
|
||||
|
@ -1,6 +1,8 @@
|
||||
package com.fastbee.deviceData.mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.fastbee.deviceData.domain.DeviceRealtimedataPhotovoltaic;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@ -11,7 +13,7 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
* @date 2024-11-14
|
||||
*/
|
||||
@Mapper
|
||||
public interface DeviceRealtimedataPhotovoltaicMapper
|
||||
public interface DeviceRealtimedataPhotovoltaicMapper extends BaseMapper<DeviceRealtimedataPhotovoltaic>
|
||||
{
|
||||
/**
|
||||
* 查询光伏设备实时数据
|
||||
|
@ -1,6 +1,8 @@
|
||||
package com.fastbee.deviceData.mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.fastbee.deviceData.domain.DeviceRealtimedataWorms;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@ -11,7 +13,7 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
* @date 2024-11-14
|
||||
*/
|
||||
@Mapper
|
||||
public interface DeviceRealtimedataWormsMapper
|
||||
public interface DeviceRealtimedataWormsMapper extends BaseMapper<DeviceRealtimedataWorms>
|
||||
{
|
||||
/**
|
||||
* 查询虫情设备实时数据
|
||||
|
@ -24,10 +24,12 @@
|
||||
<result property="lat" column="lat" />
|
||||
<result property="fillLight" column="fill_light" />
|
||||
<result property="status" column="status" />
|
||||
<result property="saveTime" column="save_time" />
|
||||
<result property="realTime" column="real_time" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectDeviceRealtimedataWormsVo">
|
||||
select id, device_addr, rain, worm_flap, insecticide_tem, shake, lng, drying_flap, insecticide, move_worm, mode, drying, rain_flap, attract_worm, illum, drying_tem, lat, fill_light, status from iot_device_realtimedata_worms
|
||||
select id, device_addr, rain, worm_flap, insecticide_tem, shake, lng, drying_flap, insecticide, move_worm, mode, drying, rain_flap, attract_worm, illum, drying_tem, lat, fill_light, status, save_time, real_time from iot_device_realtimedata_worms
|
||||
</sql>
|
||||
|
||||
<select id="selectDeviceRealtimedataWormsList" parameterType="DeviceRealtimedataWorms" resultMap="DeviceRealtimedataWormsResult">
|
||||
@ -51,6 +53,8 @@
|
||||
<if test="lat != null and lat != ''"> and lat = #{lat}</if>
|
||||
<if test="fillLight != null and fillLight != ''"> and fill_light = #{fillLight}</if>
|
||||
<if test="status != null and status != ''"> and status = #{status}</if>
|
||||
<if test="saveTime != null "> and save_time = #{saveTime}</if>
|
||||
<if test="realTime != null "> and real_time = #{realTime}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
@ -80,6 +84,8 @@
|
||||
<if test="lat != null">lat,</if>
|
||||
<if test="fillLight != null">fill_light,</if>
|
||||
<if test="status != null">status,</if>
|
||||
<if test="saveTime != null">save_time,</if>
|
||||
<if test="realTime != null">real_time,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="deviceAddr != null">#{deviceAddr},</if>
|
||||
@ -100,6 +106,8 @@
|
||||
<if test="lat != null">#{lat},</if>
|
||||
<if test="fillLight != null">#{fillLight},</if>
|
||||
<if test="status != null">#{status},</if>
|
||||
<if test="saveTime != null">#{saveTime},</if>
|
||||
<if test="realTime != null">#{realTime},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
@ -124,6 +132,8 @@
|
||||
<if test="lat != null">lat = #{lat},</if>
|
||||
<if test="fillLight != null">fill_light = #{fillLight},</if>
|
||||
<if test="status != null">status = #{status},</if>
|
||||
<if test="saveTime != null">save_time = #{saveTime},</if>
|
||||
<if test="realTime != null">real_time = #{realTime},</if>
|
||||
</trim>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
@ -7,10 +7,17 @@ import cn.hutool.http.HttpResponse;
|
||||
import cn.hutool.json.JSONArray;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.fastbee.deviceData.api.devlink.service.DevLinkMetDataService;
|
||||
import com.fastbee.deviceData.api.devlink.service.DevLinkMiaoQingDataService;
|
||||
import com.fastbee.deviceData.api.devlink.service.DevLinkMoistureDataService;
|
||||
import com.fastbee.deviceData.api.devlink.service.DevLinkPhotovoltaicDataService;
|
||||
import com.fastbee.deviceData.api.renke.constant.RenKeDeviceTypeConstant;
|
||||
import com.fastbee.deviceData.api.renke.service.RenKeAuthorizationService;
|
||||
import com.fastbee.deviceData.domain.DeviceRealtimedataWorms;
|
||||
import com.fastbee.deviceData.api.renke.service.RenkeDeviceDataService;
|
||||
import com.fastbee.deviceData.domain.*;
|
||||
|
||||
import com.fastbee.deviceData.mapper.*;
|
||||
import com.fastbee.deviceData.service.IDeviceRealtimedataWormsService;
|
||||
import com.fastbee.deviceData.service.impl.DeviceRealtimedataWormsServiceImpl;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -21,56 +28,103 @@ import org.springframework.stereotype.Component;
|
||||
/**
|
||||
* @author mijiupro
|
||||
*/
|
||||
@Component("renkeDeviceDateTask")
|
||||
@Component("agricultureDeviceDateTask")
|
||||
public class DeviceDateTask {
|
||||
//
|
||||
|
||||
@Autowired
|
||||
private StringRedisTemplate stringRedisTemplate;
|
||||
@Autowired
|
||||
private DeviceRealtimedataWormsServiceImpl deviceRealtimedataWormsServiceImpl;
|
||||
|
||||
// @Autowired
|
||||
// private ThreadPoolTaskExecutor taskExecutor;
|
||||
|
||||
@Autowired
|
||||
private RenKeAuthorizationService renKeAuthorizationService;
|
||||
private DeviceRealtimedataWormsMapper deviceRealtimedataWormsMapper;
|
||||
|
||||
@Autowired
|
||||
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
|
||||
private DeviceRealtimedataMeteorologyMapper deviceRealtimedataMeteorologyMapper;
|
||||
|
||||
@Autowired
|
||||
private DeviceRealtimedataMoistureMapper deviceRealtimedataMoistureMapper;
|
||||
|
||||
@Autowired
|
||||
private DeviceRealtimedataPhotovoltaicMapper deviceRealtimedataPhotovoltaicMapper;
|
||||
|
||||
@Autowired
|
||||
private DeviceRealtimedataMiaoqingMapper deviceRealtimedataMiaoqingMapper;
|
||||
|
||||
@Autowired
|
||||
private RenkeDeviceDataService wormsService; //虫情设备数据获取
|
||||
|
||||
@Autowired
|
||||
private DevLinkMetDataService metDataService; //气象设备数据获取
|
||||
|
||||
@Autowired
|
||||
private DevLinkMoistureDataService moistureDataService; //墒情设备数据获取
|
||||
|
||||
@Autowired
|
||||
private DevLinkPhotovoltaicDataService photovoltaicDataService; //光伏设备数据获取
|
||||
|
||||
@Autowired
|
||||
private DevLinkMiaoQingDataService miaoQingDataService; //苗情设备数据获取
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 在执行定时任务中出现了异常会终止调度,所以需要捕获异常以便于下一轮
|
||||
* 执行,不会影响下一次执行
|
||||
* 获取虫情设备实时数据并保存
|
||||
*/
|
||||
public void getRenkeDeviceRealtimeData() throws Exception{
|
||||
|
||||
//获取设备实时数据
|
||||
//请求参数
|
||||
HttpResponse response = HttpRequest.get("http://api.farm.0531yun.cn/api/v2.0/entrance/device/getRealTimeData")
|
||||
.header("token", renKeAuthorizationService.getToken())
|
||||
.execute();
|
||||
String respBodyStr = response.body();
|
||||
if(StringUtils.isBlank(respBodyStr)) {
|
||||
throw new RuntimeException("获取设备实时数据失败!");
|
||||
public void getWormsDeviceRealtimeData() throws Exception{
|
||||
DeviceRealtimedataWorms deviceRealtimedataWorms = wormsService.setData("1017240042");
|
||||
int i = deviceRealtimedataWormsMapper.insert(deviceRealtimedataWorms);
|
||||
if (i<1){
|
||||
System.out.println("插入数据失败!");
|
||||
}
|
||||
}
|
||||
JSONObject respBody = JSONUtil.parseObj(respBodyStr);
|
||||
JSONArray realtimeList = JSONUtil.parseArray(respBody.get("data"));
|
||||
// threadPoolTaskExecutor.execute( () -> {System.err.println("设备实时数据:"+realtimeList);});
|
||||
|
||||
//TODO 解析实时数据保存到数据库
|
||||
for (Object realtimeData : realtimeList){
|
||||
JSONObject jsonConversion = JSONUtil.parseObj(realtimeData);
|
||||
if (RenKeDeviceTypeConstant.WORM.equals(jsonConversion.get("deviceType"))){
|
||||
JSONObject jsonObject1 = JSONUtil.parseObj(jsonConversion.get("data"));
|
||||
DeviceRealtimedataWorms deviceRealtimedataWorms = JSONUtil.toBean(jsonObject1, DeviceRealtimedataWorms.class);
|
||||
deviceRealtimedataWorms.setCreateTime(DateTime.now());
|
||||
// System.err.println("序列化为蠕虫设备数据类:"+deviceRealtimedataWorms);
|
||||
if(deviceRealtimedataWormsServiceImpl.insertDeviceRealtimedataWorms(deviceRealtimedataWorms)!=1){
|
||||
System.out.println("插入失败!");
|
||||
};
|
||||
/**
|
||||
* 获取气象设备实时数据并保存
|
||||
*/
|
||||
public void getDevLinkMetDeviceRealtimeData() throws Exception{
|
||||
DeviceRealtimedataMeteorology deviceRealtimedataMeteorology = metDataService.setData(metDataService.getMetDeviceRealData("3269"));
|
||||
int i = deviceRealtimedataMeteorologyMapper.insert(deviceRealtimedataMeteorology);
|
||||
if (i<1){
|
||||
System.out.println("插入数据失败!");
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
* 获取墒情设备实时数据并保存
|
||||
*/
|
||||
public void getDevLinkMoistureDeviceRealtimeData() throws Exception{
|
||||
DeviceRealtimedataMoisture deviceRealtimedataMoisture = moistureDataService.setData(moistureDataService.getMetDeviceRealData("3270"));
|
||||
int i = deviceRealtimedataMoistureMapper.insert(deviceRealtimedataMoisture);
|
||||
if (i<1)
|
||||
System.out.println("插入数据失败!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取光伏设备实时数据并保存
|
||||
*/
|
||||
public void getDevLinkPhotovoltaicDeviceRealtimeData() throws Exception{
|
||||
DeviceRealtimedataPhotovoltaic deviceRealtimedataPhotovoltaic = photovoltaicDataService.setData(photovoltaicDataService.getMetDeviceRealData("3276"));
|
||||
int i = deviceRealtimedataPhotovoltaicMapper.insert(deviceRealtimedataPhotovoltaic);
|
||||
if (i<1)
|
||||
System.out.println("插入数据失败!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取苗情设备实时数据并保存
|
||||
*/
|
||||
public void getDevLinkMiaoqingDeviceRealtimeData() throws Exception{
|
||||
DeviceRealtimedataMiaoqing deviceRealtimedataMiaoqing = miaoQingDataService.setData(miaoQingDataService.getMetDeviceRealData("3275"));
|
||||
int i = deviceRealtimedataMiaoqingMapper.insert(deviceRealtimedataMiaoqing);
|
||||
if (i<1)
|
||||
System.out.println("插入数据失败!");
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user