From 02203d45273362c4a8720e1af5c83bdf365bac86 Mon Sep 17 00:00:00 2001 From: HuangHuiKang Date: Mon, 9 Feb 2026 18:42:43 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E6=94=B9=E7=89=A9=E7=90=86?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E6=96=B0=E5=A2=9E=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iot/service/device/DeviceServiceImpl.java | 4 +-- .../iot/service/device/TDengineService.java | 34 +++++++++++++------ 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImpl.java index 6e37695d6..cf7d15916 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImpl.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImpl.java @@ -129,7 +129,7 @@ public class DeviceServiceImpl implements DeviceService { @Override - @Transactional(rollbackFor = Exception.class) +// @Transactional(rollbackFor = Exception.class) public DeviceDO createDevice(DeviceSaveReqVO createReqVO) { // if(StringUtils.isNotBlank(createReqVO.getReadTopic())){ // DeviceDO temp = deviceMapper.selectByTopic(createReqVO.getReadTopic()); @@ -184,7 +184,7 @@ public class DeviceServiceImpl implements DeviceService { //新增规则点位 addNewRulePoints(createReqVO.getDeviceModelId(),device.getId()); - + tdengineService.createTdengineTable(device.getId(),contactModelList); return device; } diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/TDengineService.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/TDengineService.java index 84e32f2d9..f8469c189 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/TDengineService.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/TDengineService.java @@ -742,13 +742,26 @@ public class TDengineService { return; } - // 1. 表名 + // 1. 数据库名 + String dbName = "besure_server"; + + // 2. 表名 String tableName = "d_" + deviceId; - // 2. 构建列SQL,TDengine必须有 ts + // 3. 确保数据库存在 + try { + String createDbSql = "CREATE DATABASE IF NOT EXISTS " + dbName; + jdbcTemplate.execute(createDbSql); + log.info("TDengine 数据库确保存在: {}", dbName); + } catch (Exception e) { + log.error("TDengine 数据库创建失败: {}", dbName, e); + throw exception(TABLE_CREATION_FAILED); + } + + // 4. 构建列SQL,TDengine必须有 ts StringBuilder columnsSql = new StringBuilder("ts TIMESTAMP"); - // 3. 遍历 contactModelList,如果为空则不执行循环,表只含 ts + // 5. 遍历 contactModelList 构建列 if (contactModelList != null && !contactModelList.isEmpty()) { for (DeviceContactModelDO contact : contactModelList) { String attributeCode = contact.getAttributeCode(); @@ -769,17 +782,16 @@ public class TDengineService { } } - // 4. 构建完整 SQL - String createSql = "CREATE TABLE IF NOT EXISTS besure_server." + tableName + " (" - + columnsSql.toString() - + ")"; + // 6. 构建完整 SQL + String createTableSql = "CREATE TABLE IF NOT EXISTS " + dbName + "." + tableName + " (" + + columnsSql.toString() + ")"; - // 5. 使用 JdbcTemplate 执行 SQL + // 7. 执行创建表 try { - jdbcTemplate.execute(createSql); - log.info("TDengine 表创建成功: {}", tableName); + jdbcTemplate.execute(createTableSql); + log.info("TDengine 表创建成功: {}.{}", dbName, tableName); } catch (Exception e) { - log.error("TDengine 表创建失败: {}", tableName, e); + log.error("TDengine 表创建失败: {}.{}", dbName, tableName, e); throw exception(TABLE_CREATION_FAILED); } }