From c4c63a8fd6ff090e3bff4b158320312a660bc69c Mon Sep 17 00:00:00 2001
From: alwayssuper <12851801+alwayssuper@user.noreply.gitee.com>
Date: Mon, 30 Dec 2024 22:46:24 +0800
Subject: [PATCH 1/7] feat:iotmessage
---
.../device/vo/device/IotDeviceSaveReqVO.java | 2 ++
.../tdengine/ThingModelMessageDO.java | 5 +---
.../tdengine/TdThingModelMessageMapper.java | 9 ++++---
.../IotThingModelMessageServiceImpl.java | 24 +++++++------------
.../tdengine/TdThinkModelMessageMapper.xml | 16 ++++++-------
5 files changed, 26 insertions(+), 30 deletions(-)
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/vo/device/IotDeviceSaveReqVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/vo/device/IotDeviceSaveReqVO.java
index 97220d57a2..e1268b0035 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/vo/device/IotDeviceSaveReqVO.java
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/vo/device/IotDeviceSaveReqVO.java
@@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.iot.controller.admin.device.vo.device;
import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.Size;
import lombok.Data;
import java.util.Set;
@@ -13,6 +14,7 @@ public class IotDeviceSaveReqVO {
private Long id;
@Schema(description = "设备编号", requiredMode = Schema.RequiredMode.AUTO, example = "177")
+ @Size(max = 50, message = "设备编号长度不能超过50个字符")
private String deviceKey;
@Schema(description = "设备名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/tdengine/ThingModelMessageDO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/tdengine/ThingModelMessageDO.java
index c57ec1c7be..7dca6edb06 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/tdengine/ThingModelMessageDO.java
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/tdengine/ThingModelMessageDO.java
@@ -15,10 +15,7 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor
public class ThingModelMessageDO {
- /**
- * 数据库名称
- */
- private String dataBaseName;
+
// TODO @haohao:superTableName 和 tableName 是不是合并。因为每个 mapper 操作的时候,有且只会使用到其中一个。
/**
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/tdengine/TdThingModelMessageMapper.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/tdengine/TdThingModelMessageMapper.java
index 0a735be03a..fc66119315 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/tdengine/TdThingModelMessageMapper.java
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/tdengine/TdThingModelMessageMapper.java
@@ -2,28 +2,31 @@ package cn.iocoder.yudao.module.iot.dal.tdengine;
import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.ThingModelMessageDO;
+import cn.iocoder.yudao.module.iot.framework.tdengine.core.annotation.TDengineDS;
import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import org.apache.ibatis.annotations.Mapper;
/**
* 处理 TD 中物模型消息日志的操作
*/
@Mapper
-@DS("tdengine")
+@TDengineDS
+@InterceptorIgnore(tenantLine = "true") // 避免 SQL 解析,因为 JSqlParser 对 TDengine 的 SQL 解析会报错
public interface TdThingModelMessageMapper {
/**
* 创建物模型消息日志超级表超级表
*
*/
- @TenantIgnore
+
void createSuperTable(ThingModelMessageDO superTable);
/**
* 创建子表
*
*/
- @TenantIgnore
+
void createTableWithTag(ThingModelMessageDO table);
}
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/tdengine/IotThingModelMessageServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/tdengine/IotThingModelMessageServiceImpl.java
index d910419956..1654c56f5e 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/tdengine/IotThingModelMessageServiceImpl.java
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/tdengine/IotThingModelMessageServiceImpl.java
@@ -7,15 +7,13 @@ import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.device.IotDeviceStatusUpdateReqVO;
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.tdengine.FieldParser;
-import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.TdFieldDO;
-import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.TdTableDO;
-import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.ThingModelMessage;
+import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.*;
import cn.iocoder.yudao.module.iot.dal.dataobject.thingmodel.IotThingModelDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO;
import cn.iocoder.yudao.module.iot.dal.redis.deviceData.DeviceDataRedisDAO;
import cn.iocoder.yudao.module.iot.dal.tdengine.TdEngineDDLMapper;
import cn.iocoder.yudao.module.iot.dal.tdengine.TdEngineDMLMapper;
+import cn.iocoder.yudao.module.iot.dal.tdengine.TdThingModelMessageMapper;
import cn.iocoder.yudao.module.iot.enums.IotConstants;
import cn.iocoder.yudao.module.iot.enums.device.IotDeviceStatusEnum;
import cn.iocoder.yudao.module.iot.enums.thingmodel.IotThingModelTypeEnum;
@@ -63,6 +61,9 @@ public class IotThingModelMessageServiceImpl implements IotThingModelMessageServ
@Resource
private TdEngineDMLMapper tdEngineDMLMapper;
+ @Resource
+ private TdThingModelMessageMapper tdThingModelMessageMapper;
+
@Resource
private DeviceDataRedisDAO deviceDataRedisDAO;
@@ -78,7 +79,7 @@ public class IotThingModelMessageServiceImpl implements IotThingModelMessageServ
iotDeviceService.updateDeviceStatus(new IotDeviceStatusUpdateReqVO()
.setId(device.getId()).setStatus(IotDeviceStatusEnum.ONLINE.getStatus()));
// 1.2 创建物模型日志设备表
- createThingModelMessageDeviceTable(device.getProductKey(), device.getDeviceName(), device.getDeviceKey());
+ createThingModelMessageDeviceTable(device.getProductKey(), device.getDeviceKey());
}
// 2. 获取设备属性并进行物模型校验,过滤非物模型属性
@@ -232,23 +233,16 @@ public class IotThingModelMessageServiceImpl implements IotThingModelMessageServ
* 创建物模型日志设备数据表
*
* @param productKey 产品 Key
- * @param deviceName 设备名称
* @param deviceKey 设备 Key
*
*/
- private void createThingModelMessageDeviceTable(String productKey, String deviceName, String deviceKey){
+ private void createThingModelMessageDeviceTable(String productKey, String deviceKey){
- // 1. 获取超级表的名称、数据库名称、设备日志表名称
- String databaseName = IotTdDatabaseUtils.getDatabaseName(url);
- String superTableName = IotTdDatabaseUtils.getThingModelMessageSuperTableName(productKey);
- // TODO @alwayssuper:最好 databaseName、superTableName、thinkModelMessageDeviceTableName 的处理,放到 tdThinkModelMessageMapper 里。可以考虑,弄个 default 方法
- String thinkModelMessageDeviceTableName = IotTdDatabaseUtils.getThingModelMessageDeviceTableName(productKey, deviceName);
// 2. 创建物模型日志设备数据表
// tdThingModelMessageMapper.createTableWithTag(ThingModelMessageDO.builder().build()
-// .setDataBaseName(databaseName)
-// .setSuperTableName(superTableName)
-// .setTableName(thinkModelMessageDeviceTableName)
+// .setSuperTableName(productKey)
+// .setTableName(deviceKey)
// .setDeviceKey(deviceKey));
}
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/tdengine/TdThinkModelMessageMapper.xml b/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/tdengine/TdThinkModelMessageMapper.xml
index a0cc12712f..cff6217db8 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/tdengine/TdThinkModelMessageMapper.xml
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/tdengine/TdThinkModelMessageMapper.xml
@@ -6,21 +6,21 @@
- CREATE STABLE ${dataBaseName}.${superTableName}(
+ CREATE STABLE thing_model_message_${superTableName}(
ts TIMESTAMP,
- id VARCHAR(255),
- sys VARCHAR(2048),
- method VARCHAR(255),
- params VARCHAR(2048)
+ id NCHAR(64),
+ sys NCHAR(2048),
+ method NCHAR(255),
+ params NCHAR(2048)
)TAGS (
- device_key VARCHAR(255)
+ device_key NCHAR(50)
)
- CREATE TABLE IF NOT EXISTS ${dataBaseName}.${tableName}
- USING ${dataBaseName}.${superTableName}(
+ CREATE STABLE ${tableName}
+ USING thing_model_message_${superTableName}(
ts,
id ,
sys ,
From eaee4642d628ecfb146ac5a1e1826a3c9cbaad6a Mon Sep 17 00:00:00 2001
From: alwayssuper <191763414@qq.com>
Date: Tue, 31 Dec 2024 17:00:25 +0800
Subject: [PATCH 2/7] =?UTF-8?q?[=E5=8A=9F=E8=83=BD=E6=B7=BB=E5=8A=A0]?=
=?UTF-8?q?=EF=BC=9A=E7=89=A9=E6=A8=A1=E5=9E=8B=E6=97=A5=E5=BF=97=E8=A1=A8?=
=?UTF-8?q?=E5=88=9B=E5=BB=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../tdengine/ThingModelMessageDO.java | 24 ++++---
.../tdengine/TdThingModelMessageMapper.java | 6 +-
.../IotDevicePropertyDataServiceImpl.java | 7 ++
.../product/IotProductServiceImpl.java | 6 +-
.../tdengine/IotThingModelMessageService.java | 7 +-
.../IotThingModelMessageServiceImpl.java | 64 +++++++++----------
.../mapper/tdengine/TdEngineDMLMapper.xml | 2 +-
.../tdengine/TdThinkModelMessageMapper.xml | 12 ++--
8 files changed, 62 insertions(+), 66 deletions(-)
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/tdengine/ThingModelMessageDO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/tdengine/ThingModelMessageDO.java
index 7dca6edb06..b647c68730 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/tdengine/ThingModelMessageDO.java
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/tdengine/ThingModelMessageDO.java
@@ -6,6 +6,7 @@ import lombok.Data;
import lombok.NoArgsConstructor;
// TODO @芋艿:纠结下字段
+@Deprecated
/**
* TD 物模型消息日志的数据库
*/
@@ -17,26 +18,17 @@ public class ThingModelMessageDO {
- // TODO @haohao:superTableName 和 tableName 是不是合并。因为每个 mapper 操作的时候,有且只会使用到其中一个。
- /**
- * 超级表名称
- */
- private String superTableName;
-
- /**
- * 表名称
- */
- private String tableName;
-
/**
* 消息 ID
*/
private String id;
/**
- * 扩展功能的参数
+ * 系统扩展参数
+ *
+ * 例如:设备状态、系统时间、固件版本等系统级信息
*/
- private Object sys;
+ private Object system;
/**
* 请求方法
@@ -55,6 +47,12 @@ public class ThingModelMessageDO {
*/
private Long time;
+ /**
+ * 设备信息
+ */
+ private String productKey;
+
+
/**
* 设备 key
*/
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/tdengine/TdThingModelMessageMapper.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/tdengine/TdThingModelMessageMapper.java
index fc66119315..798d084ac9 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/tdengine/TdThingModelMessageMapper.java
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/tdengine/TdThingModelMessageMapper.java
@@ -1,11 +1,13 @@
package cn.iocoder.yudao.module.iot.dal.tdengine;
import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
+import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.ThingModelMessage;
import cn.iocoder.yudao.module.iot.dal.dataobject.tdengine.ThingModelMessageDO;
import cn.iocoder.yudao.module.iot.framework.tdengine.core.annotation.TDengineDS;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
/**
* 处理 TD 中物模型消息日志的操作
@@ -20,13 +22,13 @@ public interface TdThingModelMessageMapper {
*
*/
- void createSuperTable(ThingModelMessageDO superTable);
+ void createSuperTable(@Param("productKey") String productKey);
/**
* 创建子表
*
*/
- void createTableWithTag(ThingModelMessageDO table);
+ void createTableWithTag(@Param("productKey") String productKey,@Param("deviceKey") String deviceKey);
}
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/IotDevicePropertyDataServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/IotDevicePropertyDataServiceImpl.java
index eb7fcd430c..cb74747745 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/IotDevicePropertyDataServiceImpl.java
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/IotDevicePropertyDataServiceImpl.java
@@ -17,6 +17,7 @@ import cn.iocoder.yudao.module.iot.dal.dataobject.thingmodel.IotThingModelDO;
import cn.iocoder.yudao.module.iot.dal.tdengine.IotDevicePropertyDataMapper;
import cn.iocoder.yudao.module.iot.dal.redis.deviceData.DeviceDataRedisDAO;
import cn.iocoder.yudao.module.iot.dal.tdengine.TdEngineDMLMapper;
+import cn.iocoder.yudao.module.iot.dal.tdengine.TdThingModelMessageMapper;
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;
@@ -84,6 +85,9 @@ public class IotDevicePropertyDataServiceImpl implements IotDevicePropertyDataSe
@Resource
private IotDevicePropertyDataMapper devicePropertyDataMapper;
+ @Resource
+ private TdThingModelMessageMapper tdThingModelMessageMapper;
+
@Override
public void defineDevicePropertyData(Long productId) {
// 1.1 查询产品和物模型
@@ -108,7 +112,10 @@ public class IotDevicePropertyDataServiceImpl implements IotDevicePropertyDataSe
return;
}
newFields.add(0, new TDengineTableField(TDengineTableField.FIELD_TS, TDengineTableField.TYPE_TIMESTAMP));
+ // 2.1.1 创建产品超级表
devicePropertyDataMapper.createProductPropertySTable(product.getProductKey(), newFields);
+ // 2.1.2 创建物模型日志超级表
+ tdThingModelMessageMapper.createSuperTable(product.getProductKey());
return;
}
// 2.2 情况二:如果是修改的时候,需要更新表
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/product/IotProductServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/product/IotProductServiceImpl.java
index d384e44c04..41537664b0 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/product/IotProductServiceImpl.java
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/product/IotProductServiceImpl.java
@@ -34,9 +34,6 @@ public class IotProductServiceImpl implements IotProductService {
@Resource
private IotProductMapper productMapper;
- @Resource
- @Lazy // 延迟加载,解决循环依赖
- private IotThingModelMessageService thingModelMessageService;
@Resource
@Lazy // 延迟加载,解决循环依赖
private IotDevicePropertyDataService devicePropertyDataService;
@@ -125,8 +122,7 @@ public class IotProductServiceImpl implements IotProductService {
if (Objects.equals(status, IotProductStatusEnum.PUBLISHED.getStatus())) {
// 3.1 创建产品超级表数据模型
devicePropertyDataService.defineDevicePropertyData(id);
- // 3.2 创建物模型日志超级表数据模型 TODO 待定:message 要不要分;
- thingModelMessageService.createSuperTable(id);
+
}
productMapper.updateById(updateObj);
}
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/tdengine/IotThingModelMessageService.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/tdengine/IotThingModelMessageService.java
index ab77eb91ac..7f52411d89 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/tdengine/IotThingModelMessageService.java
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/tdengine/IotThingModelMessageService.java
@@ -16,11 +16,6 @@ public interface IotThingModelMessageService {
*/
void saveThingModelMessage(IotDeviceDO device, ThingModelMessage thingModelMessage);
- /**
- * 创建物模型消息日志超级表
- *
- * @param productId 产品编号
- */
- void createSuperTable(Long productId);
+
}
\ No newline at end of file
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/tdengine/IotThingModelMessageServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/tdengine/IotThingModelMessageServiceImpl.java
index 1654c56f5e..395d1e91f1 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/tdengine/IotThingModelMessageServiceImpl.java
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/tdengine/IotThingModelMessageServiceImpl.java
@@ -79,7 +79,7 @@ public class IotThingModelMessageServiceImpl implements IotThingModelMessageServ
iotDeviceService.updateDeviceStatus(new IotDeviceStatusUpdateReqVO()
.setId(device.getId()).setStatus(IotDeviceStatusEnum.ONLINE.getStatus()));
// 1.2 创建物模型日志设备表
- createThingModelMessageDeviceTable(device.getProductKey(), device.getDeviceKey());
+ tdThingModelMessageMapper.createTableWithTag(device.getProductKey(), device.getDeviceKey());
}
// 2. 获取设备属性并进行物模型校验,过滤非物模型属性
@@ -108,32 +108,34 @@ public class IotThingModelMessageServiceImpl implements IotThingModelMessageServ
thingModel -> IotThingModelTypeEnum.PROPERTY.getType().equals(thingModel.getType()));
}
- @Override
- @TenantIgnore
- public void createSuperTable(Long productId) {
- // 1. 查询产品
- IotProductDO product = productService.getProduct(productId);
-
- // 2. 获取超级表的名称和数据库名称
- // TODO @alwayssuper:最好 databaseName、superTableName 的处理,放到 tdThinkModelMessageMapper 里。可以考虑,弄个 default 方法
- String databaseName = IotTdDatabaseUtils.getDatabaseName(url);
- String superTableName = IotTdDatabaseUtils.getThingModelMessageSuperTableName(product.getProductKey());
-
- // 解析物模型,获取字段列表
- List schemaFields = List.of(
- TdFieldDO.builder().fieldName("time").dataType("TIMESTAMP").build(),
- TdFieldDO.builder().fieldName("id").dataType("NCHAR").dataLength(64).build(),
- TdFieldDO.builder().fieldName("sys").dataType("NCHAR").dataLength(2048).build(),
- TdFieldDO.builder().fieldName("method").dataType("NCHAR").dataLength(256).build(),
- TdFieldDO.builder().fieldName("params").dataType("NCHAR").dataLength(2048).build()
- );
- // 设置超级表的标签
- List tagsFields = List.of(
- TdFieldDO.builder().fieldName("device_key").dataType("NCHAR").dataLength(64).build()
- );
- // 3. 创建超级表
- tdEngineDDLMapper.createSuperTable(new TdTableDO(databaseName, superTableName, schemaFields, tagsFields));
- }
+// @Override
+// @TenantIgnore
+// public void createSuperTable(Long productId) {
+// // 1. 查询产品
+// IotProductDO product = productService.getProduct(productId);
+// // 2. 创建日志超级表
+// tdThingModelMessageMapper.createSuperTable(product.getProductKey());
+//
+// // 2. 获取超级表的名称和数据库名称
+// // TODO @alwayssuper:最好 databaseName、superTableName 的处理,放到 tdThinkModelMessageMapper 里。可以考虑,弄个 default 方法
+//// String databaseName = IotTdDatabaseUtils.getDatabaseName(url);
+//// String superTableName = IotTdDatabaseUtils.getThingModelMessageSuperTableName(product.getProductKey());
+////
+//// // 解析物模型,获取字段列表
+//// List schemaFields = List.of(
+//// TdFieldDO.builder().fieldName("time").dataType("TIMESTAMP").build(),
+//// TdFieldDO.builder().fieldName("id").dataType("NCHAR").dataLength(64).build(),
+//// TdFieldDO.builder().fieldName("sys").dataType("NCHAR").dataLength(2048).build(),
+//// TdFieldDO.builder().fieldName("method").dataType("NCHAR").dataLength(256).build(),
+//// TdFieldDO.builder().fieldName("params").dataType("NCHAR").dataLength(2048).build()
+//// );
+//// // 设置超级表的标签
+//// List tagsFields = List.of(
+//// TdFieldDO.builder().fieldName("device_key").dataType("NCHAR").dataLength(64).build()
+//// );
+//// // 3. 创建超级表
+//// tdEngineDDLMapper.createSuperTable(new TdTableDO(databaseName, superTableName, schemaFields, tagsFields));
+// }
private List getValidFunctionList(String productKey) {
return filterList(iotThingModelService.getProductThingModelListByProductKey(productKey),
@@ -237,13 +239,7 @@ public class IotThingModelMessageServiceImpl implements IotThingModelMessageServ
*
*/
private void createThingModelMessageDeviceTable(String productKey, String deviceKey){
-
-
- // 2. 创建物模型日志设备数据表
-// tdThingModelMessageMapper.createTableWithTag(ThingModelMessageDO.builder().build()
-// .setSuperTableName(productKey)
-// .setTableName(deviceKey)
-// .setDeviceKey(deviceKey));
+ tdThingModelMessageMapper.createTableWithTag(productKey, deviceKey);
}
/**
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/tdengine/TdEngineDMLMapper.xml b/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/tdengine/TdEngineDMLMapper.xml
index 0443a826b2..b4084374cf 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/tdengine/TdEngineDMLMapper.xml
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/tdengine/TdEngineDMLMapper.xml
@@ -42,7 +42,7 @@