diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/dashboard/service/ApiDemo.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/dashboard/service/ApiDemo.java new file mode 100644 index 0000000..e9271cb --- /dev/null +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/dashboard/service/ApiDemo.java @@ -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 params = new HashMap(); + 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 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; + } +} diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMetDataService.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMetDataService.java index bd319d2..d8587b5 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMetDataService.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMetDataService.java @@ -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; } diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMiaoQingDataService.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMiaoQingDataService.java index 2fc16b3..2d80e44 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMiaoQingDataService.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMiaoQingDataService.java @@ -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 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; } diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMoistureDataService.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMoistureDataService.java index bdd9480..d6b6691 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMoistureDataService.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMoistureDataService.java @@ -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; diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkPhotovoltaicDataService.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkPhotovoltaicDataService.java index 3cedbc0..b588484 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkPhotovoltaicDataService.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkPhotovoltaicDataService.java @@ -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 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; } diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkRealTimeDataService.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkRealTimeDataService.java index 9f0240e..b319d94 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkRealTimeDataService.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkRealTimeDataService.java @@ -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; } diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/renke/service/RenKeAuthorizationService.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/renke/service/RenKeAuthorizationService.java index ec8f539..99ab810 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/renke/service/RenKeAuthorizationService.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/renke/service/RenKeAuthorizationService.java @@ -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 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"); } } diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/renke/service/RenkeDeviceDataService.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/renke/service/RenkeDeviceDataService.java index 58f61a2..0fdbcb0 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/renke/service/RenkeDeviceDataService.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/renke/service/RenkeDeviceDataService.java @@ -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"); } } diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/domain/DeviceRealtimedataMiaoqing.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/domain/DeviceRealtimedataMiaoqing.java index 1bde009..4959f87 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/domain/DeviceRealtimedataMiaoqing.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/domain/DeviceRealtimedataMiaoqing.java @@ -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; diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/domain/DeviceRealtimedataMoisture.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/domain/DeviceRealtimedataMoisture.java index e05979d..74eeafc 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/domain/DeviceRealtimedataMoisture.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/domain/DeviceRealtimedataMoisture.java @@ -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; diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/domain/DeviceRealtimedataPhotovoltaic.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/domain/DeviceRealtimedataPhotovoltaic.java index d39604b..b5369d4 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/domain/DeviceRealtimedataPhotovoltaic.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/domain/DeviceRealtimedataPhotovoltaic.java @@ -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; diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/domain/DeviceRealtimedataWorms.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/domain/DeviceRealtimedataWorms.java index c981ec7..f9174ec 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/domain/DeviceRealtimedataWorms.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/domain/DeviceRealtimedataWorms.java @@ -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; + } diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/mapper/DeviceRealtimedataMeteorologyMapper.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/mapper/DeviceRealtimedataMeteorologyMapper.java index e558cca..e0c23c7 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/mapper/DeviceRealtimedataMeteorologyMapper.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/mapper/DeviceRealtimedataMeteorologyMapper.java @@ -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 { /** * 查询气象设备实时数据 diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/mapper/DeviceRealtimedataMiaoqingMapper.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/mapper/DeviceRealtimedataMiaoqingMapper.java index bb77ea3..5e99790 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/mapper/DeviceRealtimedataMiaoqingMapper.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/mapper/DeviceRealtimedataMiaoqingMapper.java @@ -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 { /** * 查询苗青设备实时数据 diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/mapper/DeviceRealtimedataMoistureMapper.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/mapper/DeviceRealtimedataMoistureMapper.java index 94ad674..e68d4a8 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/mapper/DeviceRealtimedataMoistureMapper.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/mapper/DeviceRealtimedataMoistureMapper.java @@ -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 { /** * 查询墒情实时数据 diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/mapper/DeviceRealtimedataPhotovoltaicMapper.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/mapper/DeviceRealtimedataPhotovoltaicMapper.java index 2ffae9e..402eae2 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/mapper/DeviceRealtimedataPhotovoltaicMapper.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/mapper/DeviceRealtimedataPhotovoltaicMapper.java @@ -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 { /** * 查询光伏设备实时数据 diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/mapper/DeviceRealtimedataWormsMapper.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/mapper/DeviceRealtimedataWormsMapper.java index 4a17e39..246afac 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/mapper/DeviceRealtimedataWormsMapper.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/mapper/DeviceRealtimedataWormsMapper.java @@ -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 { /** * 查询虫情设备实时数据 diff --git a/fastbee-service/fastbee-device-service/src/main/resources/mapper.deviceData/DeviceRealtimedataWormsMapper.xml b/fastbee-service/fastbee-device-service/src/main/resources/mapper.deviceData/DeviceRealtimedataWormsMapper.xml index 04ea60b..baf9524 100644 --- a/fastbee-service/fastbee-device-service/src/main/resources/mapper.deviceData/DeviceRealtimedataWormsMapper.xml +++ b/fastbee-service/fastbee-device-service/src/main/resources/mapper.deviceData/DeviceRealtimedataWormsMapper.xml @@ -24,10 +24,12 @@ + + - 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 @@ -80,6 +84,8 @@ lat, fill_light, status, + save_time, + real_time, #{deviceAddr}, @@ -100,6 +106,8 @@ #{lat}, #{fillLight}, #{status}, + #{saveTime}, + #{realTime}, @@ -124,6 +132,8 @@ lat = #{lat}, fill_light = #{fillLight}, status = #{status}, + save_time = #{saveTime}, + real_time = #{realTime}, where id = #{id} diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/timer/DeviceDateTask.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/timer/DeviceDateTask.java index be658b2..e916d92 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/timer/DeviceDateTask.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/timer/DeviceDateTask.java @@ -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("获取设备实时数据失败!"); - } - 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 getWormsDeviceRealtimeData() throws Exception{ + DeviceRealtimedataWorms deviceRealtimedataWorms = wormsService.setData("1017240042"); + int i = deviceRealtimedataWormsMapper.insert(deviceRealtimedataWorms); + if (i<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("插入数据失败!"); + } + + }