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 new file mode 100644 index 0000000..127ea1f --- /dev/null +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMetDataService.java @@ -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 body = new HashMap<>(); + body.put("method","get"); + body.put("path","api/v1/product/device/run_status"); + Map 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.; + } +} diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMoistureService.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMoistureService.java deleted file mode 100644 index f367711..0000000 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMoistureService.java +++ /dev/null @@ -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 body = new HashMap<>(); - body.put("method","get"); - body.put("path","api/v1/product/device/run_status"); - Map 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(); - } -} 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 d0880c7..76338f9 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 @@ -4,6 +4,7 @@ import java.math.BigDecimal; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.fastbee.common.annotation.Excel;