浏览代码

[fix]:code review

alwayssuper 6 月之前
父节点
当前提交
0707792755

+ 37 - 0
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/mq/consumer/deviceconsumer/DeviceConsumer.java

@@ -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);
+    }
+
+}

+ 0 - 1
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/mq/consumer/simulatesend/SimulateSendConsumer.java

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

+ 4 - 0
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/mq/message/package-info.java

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

+ 9 - 0
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/mq/producer/simulatesend/SimulateSendProducer.java

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

+ 4 - 0
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/IotDeviceLogDataService.java

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

+ 6 - 0
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/IotDeviceLogDataServiceImpl.java

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

+ 9 - 0
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/IotDevicePropertyDataService.java

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

+ 9 - 0
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/IotDevicePropertyDataServiceImpl.java

@@ -150,6 +150,15 @@ public class IotDevicePropertyDataServiceImpl implements IotDevicePropertyDataSe
         thingModelMessageService.saveThingModelMessage(device, thingModelMessage);
         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
     @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<>();