【功能新增】IoT:设备状态上传的部分实现
This commit is contained in:
@@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.module.iot.api.device.IotDeviceUpstreamApi;
|
||||
import cn.iocoder.yudao.module.iot.api.device.dto.IotDeviceEventReportReqDTO;
|
||||
import cn.iocoder.yudao.module.iot.api.device.dto.IotDevicePropertyReportReqDTO;
|
||||
import cn.iocoder.yudao.module.iot.api.device.dto.IotDeviceStatusUpdateReqDTO;
|
||||
import cn.iocoder.yudao.module.iot.api.device.dto.IotDeviceStateUpdateReqDTO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
@@ -29,9 +29,9 @@ public class DeviceDataApiClient implements IotDeviceUpstreamApi {
|
||||
|
||||
// TODO @haohao:返回结果,不用 CommonResult 哈。
|
||||
@Override
|
||||
public CommonResult<Boolean> updateDeviceStatus(IotDeviceStatusUpdateReqDTO updateReqDTO) {
|
||||
String url = deviceDataUrl + URL_PREFIX + "/update-status";
|
||||
return doPost(url, updateReqDTO, "updateDeviceStatus");
|
||||
public CommonResult<Boolean> updateDeviceState(IotDeviceStateUpdateReqDTO updateReqDTO) {
|
||||
String url = deviceDataUrl + URL_PREFIX + "/update-state";
|
||||
return doPost(url, updateReqDTO, "updateDeviceState");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -1,14 +1,18 @@
|
||||
package cn.iocoder.yudao.module.iot.plugin.http.service;
|
||||
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.iocoder.yudao.module.iot.api.device.IotDeviceUpstreamApi;
|
||||
import cn.iocoder.yudao.module.iot.api.device.dto.IotDevicePropertyReportReqDTO;
|
||||
import cn.iocoder.yudao.module.iot.api.device.dto.IotDeviceStateUpdateReqDTO;
|
||||
import cn.iocoder.yudao.module.iot.enums.device.IotDeviceStateEnum;
|
||||
import io.vertx.core.Handler;
|
||||
import io.vertx.ext.web.RequestBody;
|
||||
import io.vertx.ext.web.RoutingContext;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
@@ -43,20 +47,27 @@ public class HttpVertxHandler implements Handler<RoutingContext> {
|
||||
String id = jsonData.getStr("id");
|
||||
|
||||
try {
|
||||
IotDevicePropertyReportReqDTO reportReqDTO = IotDevicePropertyReportReqDTO.builder()
|
||||
.productKey(productKey)
|
||||
.deviceName(deviceName)
|
||||
.properties((Map<String, Object>) requestBody.asJsonObject().getMap().get("properties"))
|
||||
.build();
|
||||
// TODO @haohao:pluginKey 需要设置
|
||||
// 设备上线
|
||||
deviceDataApi.updateDeviceState(((IotDeviceStateUpdateReqDTO)
|
||||
new IotDeviceStateUpdateReqDTO().setRequestId(IdUtil.fastSimpleUUID())
|
||||
.setPluginKey("http")
|
||||
.setReportTime(LocalDateTime.now())
|
||||
.setProductKey(productKey).setDeviceName(deviceName))
|
||||
.setState(IotDeviceStateEnum.ONLINE.getState()));
|
||||
|
||||
deviceDataApi.reportDeviceProperty(reportReqDTO);
|
||||
// 属性上报
|
||||
deviceDataApi.reportDeviceProperty(((IotDevicePropertyReportReqDTO)
|
||||
new IotDevicePropertyReportReqDTO().setRequestId(IdUtil.fastSimpleUUID())
|
||||
.setPluginKey("http").setReportTime(LocalDateTime.now())
|
||||
.setProductKey(productKey).setDeviceName(deviceName))
|
||||
.setProperties((Map<String, Object>) requestBody.asJsonObject().getMap().get("properties")));
|
||||
|
||||
ctx.response()
|
||||
.setStatusCode(200)
|
||||
.putHeader("Content-Type", "application/json; charset=UTF-8")
|
||||
.end(createResponseJson(200, new JSONObject(), id, "success",
|
||||
"thing.event.property.post", "1.0").toString());
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("[HttpVertxHandler] 上报属性数据失败", e);
|
||||
ctx.response()
|
||||
|
Reference in New Issue
Block a user