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.CommonResult;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
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.controller.admin.device.vo.deviceData.*;
|
||||||
import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDataDO;
|
import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDataDO;
|
||||||
import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceLogDO;
|
import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceLogDO;
|
||||||
|
@ -54,10 +55,11 @@ public class IotDeviceDataController {
|
||||||
// TODO:数据权限
|
// TODO:数据权限
|
||||||
@PostMapping("/simulator")
|
@PostMapping("/simulator")
|
||||||
@Operation(summary = "模拟设备")
|
@Operation(summary = "模拟设备")
|
||||||
public CommonResult<Boolean> simulatorDevice(@Valid @RequestBody IotDeviceDataSimulatorSaveReqVO simulatorReqVO) {
|
public CommonResult<Boolean> simulatorDevice(@Valid @RequestBody IotDeviceDataSimulatorSaveReqVO simulcatorReqVO) {
|
||||||
//TODO:先生成一下设备日志 后续完善模拟设备代码逻辑
|
//TODO:先生成一下设备日志 后续完善模拟设备代码逻辑
|
||||||
// TODO @super:应该 deviceDataService 里面有个 simulatorDevice,然后里面去 insert 日志!
|
// TODO @super:应该 deviceDataService 里面有个 simulatorDevice,然后里面去 insert 日志!
|
||||||
iotDeviceLogDataService.createDeviceLog(simulatorReqVO);
|
IotDevicePropertyReportReqDTO simulatorReqVO = new IotDevicePropertyReportReqDTO();
|
||||||
|
deviceDataService.simulateSend(simulatorReqVO);
|
||||||
return success(true);
|
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.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.module.iot.api.device.dto.IotDevicePropertyReportReqDTO;
|
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.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.device.IotDeviceDataDO;
|
||||||
import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.ThingModelMessage;
|
import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.ThingModelMessage;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
@ -39,6 +40,14 @@ public interface IotDevicePropertyDataService {
|
||||||
*/
|
*/
|
||||||
void saveDeviceDataTest(ThingModelMessage thingModelMessage);
|
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.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.module.iot.api.device.dto.IotDevicePropertyReportReqDTO;
|
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.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.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.IotDeviceDO;
|
||||||
import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDataDO;
|
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.IotDataSpecsDataTypeEnum;
|
||||||
import cn.iocoder.yudao.module.iot.enums.thingmodel.IotThingModelTypeEnum;
|
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.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.product.IotProductService;
|
||||||
import cn.iocoder.yudao.module.iot.service.tdengine.IotThingModelMessageService;
|
import cn.iocoder.yudao.module.iot.service.tdengine.IotThingModelMessageService;
|
||||||
import cn.iocoder.yudao.module.iot.service.thingmodel.IotThingModelService;
|
import cn.iocoder.yudao.module.iot.service.thingmodel.IotThingModelService;
|
||||||
|
@ -76,6 +78,9 @@ public class IotDevicePropertyDataServiceImpl implements IotDevicePropertyDataSe
|
||||||
@Resource
|
@Resource
|
||||||
private IotProductService productService;
|
private IotProductService productService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SimulateSendProducer simulateSendProducer;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private TdEngineDMLMapper tdEngineDMLMapper;
|
private TdEngineDMLMapper tdEngineDMLMapper;
|
||||||
|
|
||||||
|
@ -159,6 +164,27 @@ public class IotDevicePropertyDataServiceImpl implements IotDevicePropertyDataSe
|
||||||
thingModelMessageService.saveThingModelMessage(device, thingModelMessage);
|
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
|
@Override
|
||||||
public List<IotDeviceDataDO> getLatestDeviceProperties(@Valid IotDeviceDataPageReqVO deviceDataReqVO) {
|
public List<IotDeviceDataDO> getLatestDeviceProperties(@Valid IotDeviceDataPageReqVO deviceDataReqVO) {
|
||||||
List<IotDeviceDataDO> list = new ArrayList<>();
|
List<IotDeviceDataDO> list = new ArrayList<>();
|
||||||
|
|
Loading…
Reference in New Issue