[fix]:code review

This commit is contained in:
alwayssuper 2025-01-22 16:59:00 +08:00
parent e7999749fb
commit 0707792755
8 changed files with 78 additions and 1 deletions

View File

@ -0,0 +1,37 @@
package cn.iocoder.yudao.module.iot.mq.consumer.deviceconsumer;
import cn.iocoder.yudao.module.iot.api.device.dto.IotDevicePropertyReportReqDTO;
import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.ThingModelMessage;
import cn.iocoder.yudao.module.iot.service.device.IotDeviceLogDataService;
import cn.iocoder.yudao.module.iot.service.device.IotDevicePropertyDataService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.event.EventListener;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* 针对 {@link ThingModelMessage} 的消费者
*
* @author alwayssuper
*/
@Component
@Slf4j
public class DeviceConsumer {
@Resource
private IotDeviceLogDataService iotDeviceLogDataService;
@Resource
private IotDevicePropertyDataService deviceDataService;
// TODO @芋艿这块先用ThingModelMessage后续看看用啥替代
@EventListener
@Async
public void onMessage(ThingModelMessage message) {
log.info("[onMessage][消息内容({})]", message);
deviceDataService.saveDeviceDataTest(message);
iotDeviceLogDataService.saveDeviceLog(message);
}
}

View File

@ -4,7 +4,6 @@ package cn.iocoder.yudao.module.iot.mq.consumer.simulatesend;
* TODO @alwayssuper记得实现还有类注释哈
*
* @author alwayssuper
* @since 2024/12/20 8:04
*/
public class SimulateSendConsumer {
}

View File

@ -0,0 +1,4 @@
/**
* 消息队列的消息
*/
package cn.iocoder.yudao.module.iot.mq.message;

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.iot.mq.producer.simulatesend;
import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.ThingModelMessage;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.ApplicationContext;
@ -19,4 +20,12 @@ public class SimulateSendProducer {
@Resource
private ApplicationContext applicationContext;
/**
* 发送 {@link ThingModelMessage} 消息
*
* @param thingModelMessage 物模型消息
*/
public void sendSimulateMessage(ThingModelMessage thingModelMessage) {
applicationContext.publishEvent(thingModelMessage);
}
}

View File

@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.deviceData.IotDeviceDataSimulatorSaveReqVO;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.deviceData.IotDeviceLogPageReqVO;
import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceLogDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.ThingModelMessage;
/**
* IoT 设备日志数据 Service 接口
@ -36,4 +37,7 @@ public interface IotDeviceLogDataService {
*/
PageResult<IotDeviceLogDO> getDeviceLogPage(IotDeviceLogPageReqVO pageReqVO);
void saveDeviceLog(ThingModelMessage msg);
}

View File

@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.deviceData.IotDeviceDataSimulatorSaveReqVO;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.deviceData.IotDeviceLogPageReqVO;
import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceLogDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.ThingModelMessage;
import cn.iocoder.yudao.module.iot.dal.tdengine.IotDeviceLogDataMapper;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
@ -76,4 +77,9 @@ public class IotDeviceLogDataServiceImpl implements IotDeviceLogDataService{
return new PageResult<>(list, total);
}
@Override
public void saveDeviceLog(ThingModelMessage msg) {
}
}

View File

@ -4,6 +4,7 @@ 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.dal.dataobject.device.IotDeviceDataDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.ThingModelMessage;
import jakarta.validation.Valid;
import java.util.List;
@ -30,6 +31,14 @@ public interface IotDevicePropertyDataService {
*/
void saveDeviceData(IotDevicePropertyReportReqDTO createDTO);
/**
* 保存设备数据
*
* @param thingModelMessage 设备数据
*/
void saveDeviceDataTest(ThingModelMessage thingModelMessage);
/**
* 获得设备属性最新数据
*

View File

@ -150,6 +150,15 @@ public class IotDevicePropertyDataServiceImpl implements IotDevicePropertyDataSe
thingModelMessageService.saveThingModelMessage(device, thingModelMessage);
}
//TODO:后续捋一捋这块逻辑先借鉴一下目前的代码
@Override
public void saveDeviceDataTest(ThingModelMessage thingModelMessage) {
// 1. 根据产品 key 和设备名称获得设备信息
IotDeviceDO device = deviceService.getDeviceByProductKeyAndDeviceName(thingModelMessage.getProductKey(), thingModelMessage.getDeviceName());
// 2. 保存数据
thingModelMessageService.saveThingModelMessage(device, thingModelMessage);
}
@Override
public List<IotDeviceDataDO> getLatestDeviceProperties(@Valid IotDeviceDataPageReqVO deviceDataReqVO) {
List<IotDeviceDataDO> list = new ArrayList<>();