苗情设备实时数据

This commit is contained in:
zhumeixiao 2024-11-14 12:59:07 +08:00
parent a97ef406a5
commit b41daba731
3 changed files with 149 additions and 73 deletions

View File

@ -0,0 +1,148 @@
package com.fastbee.deviceData.api.devlink.service;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
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.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* devLink气象设备数据服务
*/
@Service
public class DevLinkMetDataService {
@Autowired
private DevLinkAuthorizationService authorizationService;
@Autowired
private DeviceRealtimedataMeteorologyMapper deviceRealtimedataMeteorologyMapper;
/**
* 获取气象设备实时数据
* @param deviceId 设备id
* @return 实时数据
*/
public boolean getMetDeviceRealData(String deviceId){
DevLinkAuthorizationService authorization = new DevLinkAuthorizationService();
//构建请求体
HashMap<String, Object> body = new HashMap<>();
body.put("method","get");
body.put("path","api/v1/product/device/run_status");
Map<String,Object> params=new HashMap<>();
params.put("id",deviceId);
body.put("params",params);
String jsonStr = JSONUtil.toJsonStr(body);
System.err.println(authorization.getBaseUrl() + authorization.getAuth());
String result = HttpUtil.post(authorization.getBaseUrl() + authorization.getAuth(), jsonStr);
// System.err.println(result);
JSONObject jsonObject = JSONUtil.parseObj(result);
Object data = jsonObject.get("data");
//获取设备状态
JSONObject jsonObjectData = JSONUtil.parseObj(data);
Object status = jsonObjectData.get("status");
// System.err.println("status:"+status);
//获取设备属性以及实时数据值
Object properties = jsonObjectData.get("properties");
JSONArray propertiesArray = JSONUtil.parseArray(properties);
DeviceRealtimedataMeteorology realData = new DeviceRealtimedataMeteorology();
//获取设备各项属性实时数据
propertiesArray.forEach(p -> {
Object property = JSONUtil.parseObj(p).get("property");
JSONObject propertyMap = JSONUtil.parseObj(property);
// System.err.println("propertyMap:"+propertyMap);
//属性名称
String name = propertyMap.get("name").toString();
//属性key
String key = propertyMap.get("key").toString();
//属性值
String value = JSONUtil.parseObj(p).get("value").toString();
//TODO 属性值历史数据是否需要
Object list = JSONUtil.parseObj(p).get("list");
// System.err.print("name:"+name);
System.err.print("key:"+key);
System.err.println("------------value:"+value);
saveRealData(key,value,realData);
});
System.err.println(realData);
return true;
}
//数据持久化
public void saveRealData(String key, String value, DeviceRealtimedataMeteorology realData){
switch (key) {
case "airTemp":
realData.setAirTemp(BigDecimal.valueOf(Double.parseDouble(value)));
break;
case "airHumi":
realData.setAirHumi(BigDecimal.valueOf(Double.parseDouble(value)));
break;
case "windSpeed":
realData.setWindSpeed(BigDecimal.valueOf(Double.parseDouble(value)));
break;
case "windDir":
realData.setWindDir(Long.parseLong(value));
break;
case "airPre":
realData.setAirPre(BigDecimal.valueOf(Double.parseDouble(value)));
break;
case "guangzhao":
realData.setGuangzhao(Long.parseLong(value));
break;
case "fushe":
realData.setFushe(BigDecimal.valueOf(Double.parseDouble(value)));
break;
case "sumRain":
realData.setSumRain(BigDecimal.valueOf(Double.parseDouble(value)));
break;
case "insRain":
realData.setInsRain(BigDecimal.valueOf(Double.parseDouble(value)));
break;
case "dayRain":
realData.setDayRain(BigDecimal.valueOf(Double.parseDouble(value)));
break;
case "zhengfa":
realData.setZhengfa(BigDecimal.valueOf(Double.parseDouble(value)));
break;
case "soilTemp":
realData.setSoilTemp(BigDecimal.valueOf(Double.parseDouble(value)));
break;
case "soilHumi":
realData.setSoilHumi(BigDecimal.valueOf(Double.parseDouble(value)));
break;
}
realData.setCreateTime(DateUtils.getNowDate());
deviceRealtimedataMeteorologyMapper.insertDeviceRealtimedataMeteorology(realData);
}
//获取属性值
public String getPropertyValue(JSONObject map, String key){
// System.err.println(map);
String mapKey = map.get("key").toString();
if(mapKey.equals(key)){
return map.get("value").toString();
}
return null;
}
public static void main(String[] args) {
DevLinkMetDataService service = new DevLinkMetDataService();
service.getMetDeviceRealData("3269");
// service.;
}
}

View File

@ -1,73 +0,0 @@
package com.fastbee.deviceData.api.devlink.service;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.fastbee.deviceData.mapper.DeviceRealtimedataPhotovoltaicMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class DevLinkMoistureService {
@Autowired
private DevLinkAuthorizationService authorizationService;
@Autowired
private DeviceRealtimedataPhotovoltaicMapper deviceRealtimedataPhotovoltaicMapper;
/**
* 获取设备列表
*/
public List<?> getMoistureDevice(){
DevLinkAuthorizationService authorization = new DevLinkAuthorizationService();
//构建请求体
HashMap<String, Object> body = new HashMap<>();
body.put("method","get");
body.put("path","api/v1/product/device/run_status");
Map<String,Object> params=new HashMap<>();
params.put("id","3269");
body.put("params",params);
String jsonStr = JSONUtil.toJsonStr(body);
System.err.println(authorization.getBaseUrl() + authorization.getAuth());
String result = HttpUtil.post(authorization.getBaseUrl() + authorization.getAuth(), jsonStr);
System.err.println(result);
JSONObject jsonObject = JSONUtil.parseObj(result);
Object data = jsonObject.get("data");
//获取设备状态
JSONObject jsonObjectData = JSONUtil.parseObj(data);
Object status = jsonObjectData.get("status");
//获取设备属性以及实时数据值
Object properties = jsonObject.get("properties");
JSONArray propertiesArray = JSONUtil.parseArray(properties);
//获取设备各项属性实时数据
propertiesArray.forEach(p -> {
Object property = JSONUtil.parseObj(p).get("property");
JSONObject propertyMap = JSONUtil.parseObj(property);
//属性名称
propertyMap.get("name");
//属性key
propertyMap.get("key");
//属性值
Object value = JSONUtil.parseObj(p).get("value");
//TODO 属性值历史数据是否需要
Object list = JSONUtil.parseObj(p).get("list");
//TODO 封装所需数据
deviceRealtimedataPhotovoltaicMapper.insertDeviceRealtimedataPhotovoltaic(null);
});
return null;
}
public static void main(String[] args) {
DevLinkMoistureService service = new DevLinkMoistureService();
service.getMoistureDevice();
}
}

View File

@ -4,6 +4,7 @@ import java.math.BigDecimal;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
import com.fastbee.common.annotation.Excel; import com.fastbee.common.annotation.Excel;