From ac624b74950104411b9556b7d131f5cf51d63649 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 1 Jun 2025 10:51:55 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E3=80=90IoT=20=E7=89=A9=E8=81=94?= =?UTF-8?q?=E7=BD=91=E3=80=91=E9=87=8D=E6=96=B0=E5=AE=9E=E7=8E=B0=20IotDev?= =?UTF-8?q?iceLogMessageSubscriber=20=E7=9A=84=E6=97=A5=E5=BF=97=E8=AE=B0?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IotDeviceMessageIdentifierEnum.java | 2 +- .../device/vo/data/IotDeviceLogPageReqVO.java | 1 + .../dal/dataobject/device/IotDeviceLogDO.java | 21 ++++--- .../device/IotDeviceLogMessageSubscriber.java | 3 +- .../iot/mq/message/IotDeviceMessage.java | 1 + .../IotDeviceDownstreamServiceImpl.java | 7 +-- .../device/data/IotDeviceLogService.java | 2 +- .../device/data/IotDeviceLogServiceImpl.java | 16 +++++- .../mapper/device/IotDeviceLogMapper.xml | 57 +++++++++---------- .../iot/core/mq/message/IotDeviceMessage.java | 44 ++++++-------- .../module/iot/core/util/IotCoreUtils.java | 2 +- .../http/router/IotHttpUpstreamHandler.java | 44 ++++---------- 12 files changed, 91 insertions(+), 109 deletions(-) diff --git a/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/device/IotDeviceMessageIdentifierEnum.java b/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/device/IotDeviceMessageIdentifierEnum.java index 6de9359ba0..a06b43ce96 100644 --- a/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/device/IotDeviceMessageIdentifierEnum.java +++ b/yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/device/IotDeviceMessageIdentifierEnum.java @@ -11,7 +11,7 @@ import lombok.RequiredArgsConstructor; @RequiredArgsConstructor public enum IotDeviceMessageIdentifierEnum { - PROPERTY_GET("get"), // 下行 TODO 芋艿:【讨论】貌似这个“上行”更合理?device 主动拉取配置。和 IotDevicePropertyGetReqDTO 一样的配置 + PROPERTY_GET("get"), // 下行 PROPERTY_SET("set"), // 下行 PROPERTY_REPORT("report"), // 上行 diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/vo/data/IotDeviceLogPageReqVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/vo/data/IotDeviceLogPageReqVO.java index fcf36994fc..234869993e 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/vo/data/IotDeviceLogPageReqVO.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/vo/data/IotDeviceLogPageReqVO.java @@ -9,6 +9,7 @@ import lombok.Data; @Data public class IotDeviceLogPageReqVO extends PageParam { + // TODO @芋艿:【优先级:中】改成通过 deviceId 查询;然后转换下; @Schema(description = "设备标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "device123") @NotEmpty(message = "设备标识不能为空") private String deviceKey; diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/device/IotDeviceLogDO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/device/IotDeviceLogDO.java index 55cfb19d4e..deb353f75d 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/device/IotDeviceLogDO.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/device/IotDeviceLogDO.java @@ -1,10 +1,10 @@ package cn.iocoder.yudao.module.iot.dal.dataobject.device; import cn.hutool.core.util.IdUtil; +import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage; import cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO; import cn.iocoder.yudao.module.iot.enums.device.IotDeviceMessageIdentifierEnum; import cn.iocoder.yudao.module.iot.enums.device.IotDeviceMessageTypeEnum; -import cn.iocoder.yudao.module.iot.mq.message.IotDeviceMessage; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -31,11 +31,11 @@ public class IotDeviceLogDO { private String id; /** - * 请求编号 + * 消息编号 * - * 对应 {@link IotDeviceMessage#getRequestId()} 字段 + * 对应 {@link IotDeviceMessage#getMessageId()} 字段 */ - private String requestId; + private String messageId; /** * 产品标识 @@ -50,11 +50,11 @@ public class IotDeviceLogDO { */ private String deviceName; /** - * 设备标识 - *

- * 关联 {@link IotDeviceDO#getDeviceKey()}} + * 设备编号 + * + * 关联 {@link IotDeviceDO#getId()} */ - private String deviceKey; // 非存储字段,用于 TDengine 的 TAG + private Long deviceId; /** * 日志类型 @@ -87,6 +87,11 @@ public class IotDeviceLogDO { */ private Long reportTime; + /** + * 租户编号 + */ + private Long tenantId; + /** * 时序时间 */ diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/mq/consumer/device/IotDeviceLogMessageSubscriber.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/mq/consumer/device/IotDeviceLogMessageSubscriber.java index 279e422d7e..ff8c220c23 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/mq/consumer/device/IotDeviceLogMessageSubscriber.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/mq/consumer/device/IotDeviceLogMessageSubscriber.java @@ -39,11 +39,10 @@ public class IotDeviceLogMessageSubscriber implements IotMessageSubscriber CREATE STABLE IF NOT EXISTS device_log ( - ts TIMESTAMP, - id NCHAR(50), - product_key NCHAR(50), - device_name NCHAR(50), - type NCHAR(50), - identifier NCHAR(255), - content NCHAR(1024), - code INT, - report_time TIMESTAMP - ) TAGS ( - device_key NCHAR(50) - ) + ts TIMESTAMP, + id NCHAR(50), + message_id NCHAR(50), + type NCHAR(50), + identifier NCHAR(255), + content NCHAR(1024), + code INT, + report_time TIMESTAMP, + tenant_id BIGINT + ) TAGS ( + product_key NCHAR(50), + device_name NCHAR(50) + ) - INSERT INTO device_log_${deviceKey} (ts, id, product_key, device_name, type, identifier, content, code, report_time) + INSERT INTO device_log_${productKey}_${deviceName} ( + ts, id, message_id, type, identifier, + content, code, report_time, tenant_id + ) USING device_log - TAGS ('${deviceKey}') + TAGS ('${productKey}', '${deviceName}') VALUES ( - NOW, - #{id}, - #{productKey}, - #{deviceName}, - #{type}, - #{identifier}, - #{content}, - #{code}, - #{reportTime} + NOW, #{id}, #{messageId}, #{type}, #{identifier}, + #{content}, #{code}, #{reportTime}, #{tenantId} )