feat:simulator2
This commit is contained in:
parent
13ced8a114
commit
2b27085ec2
|
@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.iot.controller.admin.device;
|
|||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.module.iot.api.device.dto.IotDevicePropertyReportReqDTO;
|
||||
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.deviceData.*;
|
||||
import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDataDO;
|
||||
import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceLogDO;
|
||||
|
@ -54,10 +55,11 @@ public class IotDeviceDataController {
|
|||
// TODO:数据权限
|
||||
@PostMapping("/simulator")
|
||||
@Operation(summary = "模拟设备")
|
||||
public CommonResult<Boolean> simulatorDevice(@Valid @RequestBody IotDeviceDataSimulatorSaveReqVO simulatorReqVO) {
|
||||
public CommonResult<Boolean> simulatorDevice(@Valid @RequestBody IotDeviceDataSimulatorSaveReqVO simulcatorReqVO) {
|
||||
//TODO:先生成一下设备日志 后续完善模拟设备代码逻辑
|
||||
// TODO @super:应该 deviceDataService 里面有个 simulatorDevice,然后里面去 insert 日志!
|
||||
iotDeviceLogDataService.createDeviceLog(simulatorReqVO);
|
||||
IotDevicePropertyReportReqDTO simulatorReqVO = new IotDevicePropertyReportReqDTO();
|
||||
deviceDataService.simulateSend(simulatorReqVO);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.iot.service.device;
|
|||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.module.iot.api.device.dto.IotDevicePropertyReportReqDTO;
|
||||
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.deviceData.IotDeviceDataPageReqVO;
|
||||
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.deviceData.IotDeviceDataSimulatorSaveReqVO;
|
||||
import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDataDO;
|
||||
import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.ThingModelMessage;
|
||||
import jakarta.validation.Valid;
|
||||
|
@ -39,6 +40,14 @@ public interface IotDevicePropertyDataService {
|
|||
*/
|
||||
void saveDeviceDataTest(ThingModelMessage thingModelMessage);
|
||||
|
||||
/**
|
||||
* 模拟设备
|
||||
*
|
||||
* @param simulatorReqVO 设备数据
|
||||
*/
|
||||
|
||||
void simulateSend(IotDevicePropertyReportReqDTO simulatorReqVO);
|
||||
|
||||
/**
|
||||
* 获得设备属性最新数据
|
||||
*
|
||||
|
|
|
@ -8,6 +8,7 @@ import cn.hutool.json.JSONObject;
|
|||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.module.iot.api.device.dto.IotDevicePropertyReportReqDTO;
|
||||
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.deviceData.IotDeviceDataPageReqVO;
|
||||
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.deviceData.IotDeviceDataSimulatorSaveReqVO;
|
||||
import cn.iocoder.yudao.module.iot.controller.admin.thingmodel.model.dataType.ThingModelDateOrTextDataSpecs;
|
||||
import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO;
|
||||
import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDataDO;
|
||||
|
@ -22,6 +23,7 @@ import cn.iocoder.yudao.module.iot.enums.IotConstants;
|
|||
import cn.iocoder.yudao.module.iot.enums.thingmodel.IotDataSpecsDataTypeEnum;
|
||||
import cn.iocoder.yudao.module.iot.enums.thingmodel.IotThingModelTypeEnum;
|
||||
import cn.iocoder.yudao.module.iot.framework.tdengine.core.TDengineTableField;
|
||||
import cn.iocoder.yudao.module.iot.mq.producer.simulatesend.SimulateSendProducer;
|
||||
import cn.iocoder.yudao.module.iot.service.product.IotProductService;
|
||||
import cn.iocoder.yudao.module.iot.service.tdengine.IotThingModelMessageService;
|
||||
import cn.iocoder.yudao.module.iot.service.thingmodel.IotThingModelService;
|
||||
|
@ -76,6 +78,9 @@ public class IotDevicePropertyDataServiceImpl implements IotDevicePropertyDataSe
|
|||
@Resource
|
||||
private IotProductService productService;
|
||||
|
||||
@Resource
|
||||
private SimulateSendProducer simulateSendProducer;
|
||||
|
||||
@Resource
|
||||
private TdEngineDMLMapper tdEngineDMLMapper;
|
||||
|
||||
|
@ -159,6 +164,27 @@ public class IotDevicePropertyDataServiceImpl implements IotDevicePropertyDataSe
|
|||
thingModelMessageService.saveThingModelMessage(device, thingModelMessage);
|
||||
}
|
||||
|
||||
//TODO: copy了saveDeviceData的逻辑,后续看看这块怎么优化
|
||||
@Override
|
||||
public void simulateSend(IotDevicePropertyReportReqDTO simulatorReqVO) {
|
||||
// 1. 根据产品 key 和设备名称,获得设备信息
|
||||
IotDeviceDO device = deviceService.getDeviceByProductKeyAndDeviceName(simulatorReqVO.getProductKey(), simulatorReqVO.getDeviceName());
|
||||
// 2. 解析消息,保存数据
|
||||
JSONObject jsonObject = new JSONObject(simulatorReqVO.getParams());
|
||||
log.info("[saveDeviceData][productKey({}) deviceName({}) data({})]", simulatorReqVO.getProductKey(), simulatorReqVO.getDeviceName(), jsonObject);
|
||||
ThingModelMessage thingModelMessage = ThingModelMessage.builder()
|
||||
.id(jsonObject.getStr("id"))
|
||||
.sys(jsonObject.get("sys"))
|
||||
.method(jsonObject.getStr("method"))
|
||||
.params(jsonObject.get("params"))
|
||||
.time(jsonObject.getLong("time") == null ? System.currentTimeMillis() : jsonObject.getLong("time"))
|
||||
.productKey(simulatorReqVO.getProductKey())
|
||||
.deviceName(simulatorReqVO.getDeviceName())
|
||||
.deviceKey(device.getDeviceKey())
|
||||
.build();
|
||||
simulateSendProducer.sendSimulateMessage(thingModelMessage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<IotDeviceDataDO> getLatestDeviceProperties(@Valid IotDeviceDataPageReqVO deviceDataReqVO) {
|
||||
List<IotDeviceDataDO> list = new ArrayList<>();
|
||||
|
|
Loading…
Reference in New Issue