Quellcode durchsuchen

Merge remote-tracking branch 'origin/mqy20260511'

master
humanleft vor 2 Wochen
Ursprung
Commit
6038641101

+ 0
- 2
iot-platform/src/main/java/com/iot/platform/mapper/SysFaultMapper.java Datei anzeigen

@@ -9,7 +9,6 @@ public interface SysFaultMapper {
9 9
     void insertAlertData(@Param("faultId") String faultId,
10 10
                      @Param("faultdescs") String faultdescs,
11 11
                      @Param("faultstatus") String faultstatus,
12
-                     @Param("createtime") String createtime,
13 12
                      @Param("messageType") String messageType,
14 13
                      @Param("controllerId") String controllerId,
15 14
                      @Param("deviceId") String deviceId,
@@ -21,7 +20,6 @@ public interface SysFaultMapper {
21 20
                      @Param("faultdescs")String faultdescs,
22 21
                      @Param("controllerId")String controllerId,
23 22
                      @Param("deviceId")String deviceId,
24
-                     @Param("createtime")String createtime,
25 23
                      @Param("timestamp")String timestamp);
26 24
 
27 25
 

+ 2
- 2
iot-platform/src/main/java/com/iot/platform/mapper/SysRealtimeMapper.java Datei anzeigen

@@ -10,8 +10,8 @@ public interface SysRealtimeMapper {
10 10
     void createRealtime(@Param("tableName")String tableName);
11 11
     int tableExists(@Param("tableName")String tableName);
12 12
     List<String> selectTables();
13
-    void insertTables(@Param("tableName")String tableName, @Param("createTime")String createTime, @Param("controllerId")String controllerId, @Param("deviceId")String deviceId, @Param("timestamp")String timestamp, @Param("k")String k, @Param("v")Object v);
14
-    void updateTables(@Param("tableName")String tableName, @Param("createTime")String createTime, @Param("v")Object v, @Param("timestamp")String timestamp, @Param("k")String k, @Param("controllerId")String controllerId, @Param("deviceId")String deviceId);
13
+    void insertTables(@Param("tableName")String tableName, @Param("controllerId")String controllerId, @Param("deviceId")String deviceId, @Param("timestamp")String timestamp, @Param("k")String k, @Param("v")Object v);
14
+    void updateTables(@Param("tableName")String tableName, @Param("v")Object v, @Param("timestamp")String timestamp, @Param("k")String k, @Param("controllerId")String controllerId, @Param("deviceId")String deviceId);
15 15
     Integer selectKey(@Param("tableName")String tableName, @Param("k")String k, @Param("controllerId")String controllerId);
16 16
     List<String> selectAllKeys(@Param("tableName")String tableName, @Param("controllerId")String controllerId);
17 17
 }

+ 2
- 2
iot-platform/src/main/java/com/iot/platform/mapper/SysStatusMapper.java Datei anzeigen

@@ -6,8 +6,8 @@ import org.apache.ibatis.annotations.Param;
6 6
 @Mapper
7 7
 public interface SysStatusMapper {
8 8
 
9
-    void insertSysStatus(@Param("controllerId")String controllerId,@Param("fleetId")String fleetId,@Param("status")String status,@Param("createTime")String createTime);
10
-    void updateStatus(@Param("controllerId")String controllerId,@Param("fleetId")String fleetId,@Param("status")String status,@Param("createTime")String createTime);
9
+    void insertSysStatus(@Param("controllerId")String controllerId,@Param("fleetId")String fleetId,@Param("status")String status);
10
+    void updateStatus(@Param("controllerId")String controllerId,@Param("fleetId")String fleetId,@Param("status")String status);
11 11
 
12 12
     Integer selectStatusCount(@Param("controllerId")String controllerId);
13 13
 }

+ 1
- 6
iot-platform/src/main/java/com/iot/platform/mqtt/MqttChargeStationConsumer.java Datei anzeigen

@@ -71,15 +71,10 @@ public class MqttChargeStationConsumer extends AbstractDynamicMqttConsumer {
71 71
 
72 72
         String dbName = topicParts[1];
73 73
         String dbPrefix = dbName.length() >= 2 ? dbName.substring(0, 2) : dbName;
74
-        String dbNamePrefix = "pe_iot_" + dbPrefix;
74
+        String dbNamePrefix = "pe_ems_" + dbPrefix;
75 75
         //先传输为deviceid,到后面进行优化
76 76
         String superTable = topicParts[3];
77
-//        String tableName = superTable + "_" + date.getYear() + String.format("%02d", date.getMonthValue());
78
-                           //deviceid_controllerid
79 77
         String tableName = dbName;
80
-//        superTable + "_" +
81
-//        int i = ((int) "g".getBytes("UTF-8")[0]) % 10;
82
-
83 78
         tdengineService.insertBatch(dbNamePrefix, superTable, tableName, batchToInsert);
84 79
     }
85 80
 }

+ 1
- 2
iot-platform/src/main/java/com/iot/platform/mqtt/MqttDynamicConsumer.java Datei anzeigen

@@ -106,7 +106,7 @@ public class MqttDynamicConsumer extends AbstractDynamicMqttConsumer {
106 106
         List<Map<String, Object>> batch = Collections.singletonList(data);
107 107
 
108 108
         String controllerPrefix = ctx.controllerId.length() >= 2 ? ctx.controllerId.substring(0, 2) : ctx.controllerId;
109
-        String dbNamePrefix = "pe_iot_" + controllerPrefix;
109
+        String dbNamePrefix = "pe_ems_" + controllerPrefix;
110 110
         String controllerId = ctx.controllerId;
111 111
         tdengineService.insertBatch(dbNamePrefix, ctx.deviceId, controllerId, batch);
112 112
     }
@@ -115,7 +115,6 @@ public class MqttDynamicConsumer extends AbstractDynamicMqttConsumer {
115 115
         String redisKey = "pe_iot_" + ctx.controllerId + "_" + ctx.deviceId;
116 116
 
117 117
         Map<String, String> hashData = new HashMap<>();
118
-        hashData.put("createTime", ctx.currentTime);
119 118
         hashData.put("timestamp", ctx.timestamp);
120 119
 
121 120
         for (Map.Entry<String, Object> entry : ctx.metricData.entrySet()) {

+ 2
- 7
iot-platform/src/main/java/com/iot/platform/mqtt/MqttFaultConsumer.java Datei anzeigen

@@ -15,7 +15,6 @@ import org.springframework.web.util.UriComponentsBuilder;
15 15
 import java.sql.SQLException;
16 16
 import java.time.Instant;
17 17
 import java.time.LocalDate;
18
-import java.time.LocalDateTime;
19 18
 import java.time.ZoneId;
20 19
 import java.time.format.DateTimeFormatter;
21 20
 import java.util.*;
@@ -181,16 +180,12 @@ public class MqttFaultConsumer extends AbstractMqttConsumer {
181 180
         String timestamp = faultData.getTimestamp();
182 181
         String dateTime = toDateTime(timestamp);
183 182
         String companyId = COMPANY_ID_PREFIX + numericIdGenerator.nextId();
184
-        LocalDateTime currentTime = LocalDateTime.now();
185
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DATE_TIME_PATTERN);
186
-        String currentTimeStr = currentTime.format(formatter);
187
-
188 183
         if ("触发".equals(type)) {
189 184
 //            sysAlarmService.insertAlarm(controllerName, companyId, desc, ALARM_STATUS_TRIGGER, currentTimeStr, ALARM_STATUS_TRIGGER, controllerId, deviceId);
190
-            sysFaultService.insertAlertData(companyId, desc, ALARM_STATUS_TRIGGER, currentTimeStr, ALARM_STATUS_TRIGGER, controllerId, deviceId, "", dateTime);
185
+            sysFaultService.insertAlertData(companyId, desc, ALARM_STATUS_TRIGGER, ALARM_STATUS_TRIGGER, controllerId, deviceId, "", dateTime);
191 186
         } else if ("恢复".equals(type)) {
192 187
 //            sysAlarmService.insertAlarm(controllerName, companyId, desc, ALARM_STATUS_RECOVERED, currentTimeStr, ALARM_STATUS_TRIGGER, controllerId, deviceId);
193
-            sysFaultService.updateAlertData(ALARM_STATUS_RECOVERED, ALARM_STATUS_TRIGGER, desc, controllerId, deviceId, currentTimeStr, dateTime);
188
+            sysFaultService.updateAlertData(ALARM_STATUS_RECOVERED, ALARM_STATUS_TRIGGER, desc, controllerId, deviceId, dateTime);
194 189
         }
195 190
 
196 191
         // controllerId 白名单校验,防止 SSRF

+ 4
- 17
iot-platform/src/main/java/com/iot/platform/mqtt/MqttStatusConsumer.java Datei anzeigen

@@ -8,9 +8,6 @@ import org.springframework.beans.factory.annotation.Qualifier;
8 8
 import org.springframework.data.redis.core.StringRedisTemplate;
9 9
 import org.springframework.stereotype.Component;
10 10
 
11
-import java.time.Instant;
12
-import java.time.ZoneId;
13
-import java.time.format.DateTimeFormatter;
14 11
 import java.util.HashMap;
15 12
 import java.util.Map;
16 13
 import java.util.concurrent.ExecutorService;
@@ -25,10 +22,6 @@ public class MqttStatusConsumer extends AbstractMqttConsumer {
25 22
     private static final String KEY_CONTROLLER_ID = "controller_id";
26 23
     private static final String KEY_STATUS = "status";
27 24
 
28
-    private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter
29
-            .ofPattern("yyyy-MM-dd HH:mm:ss")
30
-            .withZone(ZoneId.systemDefault());
31
-
32 25
     private final StringRedisTemplate stringRedisTemplate;
33 26
     private final SysStatusService sysStatusService;
34 27
 
@@ -76,7 +69,6 @@ public class MqttStatusConsumer extends AbstractMqttConsumer {
76 69
             return;
77 70
         }
78 71
 
79
-        String dateTime = toDateTime();
80 72
         String redisKey = "status_" + controllerId;
81 73
 
82 74
         // 读取 Redis 旧数据用于比较
@@ -87,7 +79,6 @@ public class MqttStatusConsumer extends AbstractMqttConsumer {
87 79
         Map<String, String> newData = new HashMap<>();
88 80
         newData.put("controllerId", controllerId);
89 81
         newData.put("status", status);
90
-        newData.put("createTime", dateTime);
91 82
         stringRedisTemplate.opsForHash().putAll(redisKey, newData);
92 83
         stringRedisTemplate.expire(redisKey, 24, TimeUnit.HOURS);
93 84
 
@@ -95,22 +86,18 @@ public class MqttStatusConsumer extends AbstractMqttConsumer {
95 86
             // 首次写入:查一次 MySQL 判断新增还是更新
96 87
             Integer count = sysStatusService.selectStatusCount(controllerId);
97 88
             if (count <= 0) {
98
-                sysStatusService.insertSysStatus(controllerId, "", status, dateTime);
89
+                sysStatusService.insertSysStatus(controllerId, "", status);
99 90
             } else {
100
-                sysStatusService.updateStatus(controllerId, "", status, dateTime);
91
+                sysStatusService.updateStatus(controllerId, "", status);
101 92
             }
102 93
         } else {
103
-            // Redis 有旧数据:比较关键字段(忽略 createTime),变化时直接更新 MySQL
94
+            // Redis 有旧数据:比较关键字段,变化时直接更新 MySQL
104 95
             if (!equals(oldData.get("status"), status)) {
105
-                sysStatusService.updateStatus(controllerId, "", status, dateTime);
96
+                sysStatusService.updateStatus(controllerId, "", status);
106 97
             }
107 98
         }
108 99
     }
109 100
 
110
-    private String toDateTime() {
111
-        return DATE_TIME_FORMATTER.format(Instant.now());
112
-    }
113
-
114 101
     private static boolean equals(Object a, Object b) {
115 102
         return (a == b) || (a != null && a.equals(b));
116 103
     }

+ 2
- 4
iot-platform/src/main/java/com/iot/platform/service/SysFaultService.java Datei anzeigen

@@ -18,13 +18,12 @@ public class SysFaultService {
18 18
     public void insertAlertData(String faultId,
19 19
                             String faultdescs,
20 20
                             String faultstatus,
21
-                            String createtime,
22 21
                             String messageType,
23 22
                             String controllerId,
24 23
                             String deviceId,
25 24
                             String readpeople,
26 25
                             String timestamp){
27
-        sysFaultMapper.insertAlertData(faultId,faultdescs,faultstatus,createtime,messageType,controllerId,deviceId,readpeople,timestamp);
26
+        sysFaultMapper.insertAlertData(faultId,faultdescs,faultstatus,messageType,controllerId,deviceId,readpeople,timestamp);
28 27
     }
29 28
 
30 29
     public void updateAlertData(
@@ -33,9 +32,8 @@ public class SysFaultService {
33 32
                      String faultdescs,
34 33
                      String controllerId,
35 34
                      String deviceId,
36
-                     String createtime,
37 35
                      String timestamp){
38
-        sysFaultMapper.updateAlertData(faultstatus, messageType, faultdescs, controllerId, deviceId, createtime, timestamp);
36
+        sysFaultMapper.updateAlertData(faultstatus, messageType, faultdescs, controllerId, deviceId, timestamp);
39 37
     }
40 38
 
41 39
     public Integer selectFaultCount(@Param("fleetId")String fleetId){

+ 4
- 4
iot-platform/src/main/java/com/iot/platform/service/SysRealtimeService.java Datei anzeigen

@@ -35,14 +35,14 @@ public class SysRealtimeService {
35 35
         return sysRealtimeMapper.selectTables();
36 36
     }
37 37
 
38
-    public void insertTables(String tableName, String createTime, String controllerId, String deviceId, String timestamp, String k, Object v) {
38
+    public void insertTables(String tableName, String controllerId, String deviceId, String timestamp, String k, Object v) {
39 39
         validateTableName(tableName);
40
-        sysRealtimeMapper.insertTables(tableName, createTime, controllerId, deviceId, timestamp, k, v);
40
+        sysRealtimeMapper.insertTables(tableName, controllerId, deviceId, timestamp, k, v);
41 41
     }
42 42
 
43
-    public void updateTables(String tableName, String createTime, Object v, String timestamp, String k, String controllerId, String deviceId) {
43
+    public void updateTables(String tableName, Object v, String timestamp, String k, String controllerId, String deviceId) {
44 44
         validateTableName(tableName);
45
-        sysRealtimeMapper.updateTables(tableName, createTime, v, timestamp, k, controllerId, deviceId);
45
+        sysRealtimeMapper.updateTables(tableName, v, timestamp, k, controllerId, deviceId);
46 46
     }
47 47
 
48 48
     public Integer selectKey(String tableName, String k, String controllerId) {

+ 4
- 4
iot-platform/src/main/java/com/iot/platform/service/SysStatusService.java Datei anzeigen

@@ -10,11 +10,11 @@ public class SysStatusService {
10 10
     @Resource
11 11
     public SysStatusMapper sysStatusMapper;
12 12
 
13
-    public void insertSysStatus(String controllerId, String fleetId, String status,String createTime){
14
-        sysStatusMapper.insertSysStatus(controllerId, fleetId, status,createTime);
13
+    public void insertSysStatus(String controllerId, String fleetId, String status){
14
+        sysStatusMapper.insertSysStatus(controllerId, fleetId, status);
15 15
     }
16
-    public void updateStatus(String controllerId,String fleetId, String status, String createTime){
17
-        sysStatusMapper.updateStatus(controllerId,fleetId, status, createTime);
16
+    public void updateStatus(String controllerId,String fleetId, String status){
17
+        sysStatusMapper.updateStatus(controllerId,fleetId, status);
18 18
     }
19 19
     public Integer selectStatusCount(String controllerId){
20 20
         return sysStatusMapper.selectStatusCount(controllerId);

+ 45
- 6
iot-platform/src/main/java/com/iot/platform/service/TdEngineService.java Datei anzeigen

@@ -325,15 +325,13 @@ public class TdEngineService {
325 325
     }
326 326
 
327 327
     /**
328
-     * 获取列名首字符的 UTF-8 值模 10,作为分组 ID
328
+     * 使用列名完整 hashCode 模 10 作为分组 ID,分布更均匀
329 329
      */
330 330
     private int getFirstCharGroupId(String columnName) {
331 331
         if (columnName == null || columnName.isEmpty()) {
332 332
             return 0;
333 333
         }
334
-        String firstChar = columnName.substring(0, 1);
335
-        byte[] bytes = firstChar.getBytes(StandardCharsets.UTF_8);
336
-        return (bytes[0] & 0xFF) % 10;
334
+        return Math.abs(columnName.hashCode()) % 10;
337 335
     }
338 336
 
339 337
     /**
@@ -368,7 +366,7 @@ public class TdEngineService {
368 366
             for (Map.Entry<String, Object> entry : data.entrySet()) {
369 367
                 String key = entry.getKey();
370 368
                 if (isValidFieldName(key) && !isReservedColumn(key) && !columnTypes.containsKey(key)) {
371
-                    columnTypes.put(key, getValueType(entry.getValue()));
369
+                    columnTypes.put(key, getValueType(key, entry.getValue()));
372 370
                 }
373 371
             }
374 372
         }
@@ -566,7 +564,11 @@ public class TdEngineService {
566 564
     /**
567 565
      * 判断值类型,返回 TdEngine 对应的数据类型
568 566
      */
569
-    private String getValueType(Object value) {
567
+    private String getValueType(String columnName, Object value) {
568
+        // timestamp 和 createTime 字段始终使用 TIMESTAMP 类型
569
+        if ("timestamp".equalsIgnoreCase(columnName) || "createTime".equalsIgnoreCase(columnName)) {
570
+            return "TIMESTAMP";
571
+        }
570 572
         if (value == null) {
571 573
             return "VARCHAR";
572 574
         }
@@ -642,6 +644,43 @@ public class TdEngineService {
642 644
             if (value instanceof java.time.Instant) {
643 645
                 return String.valueOf(((java.time.Instant) value).toEpochMilli());
644 646
             }
647
+            // 字符串值:尝试解析为 epoch 毫秒或格式化日期
648
+            String str = value.toString();
649
+            if (str == null || str.isEmpty()) {
650
+                return "NULL";
651
+            }
652
+            // 尝试解析为纯数字(epoch 毫秒/秒)
653
+            try {
654
+                long num = Long.parseLong(str);
655
+                if (num > 0) {
656
+                    // 如果是秒级时间戳(10位),转为毫秒
657
+                    if (str.length() == 10) {
658
+                        num = num * 1000;
659
+                    }
660
+                    return String.valueOf(num);
661
+                }
662
+                return "NULL";
663
+            } catch (NumberFormatException ignored) {
664
+                // 非数字,尝试按日期格式解析
665
+            }
666
+            // 尝试常见日期格式
667
+            java.time.format.DateTimeFormatter[] formatters = {
668
+                java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"),
669
+                java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"),
670
+                java.time.format.DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"),
671
+                java.time.format.DateTimeFormatter.ISO_LOCAL_DATE_TIME
672
+            };
673
+            for (java.time.format.DateTimeFormatter fmt : formatters) {
674
+                try {
675
+                    java.time.LocalDateTime ldt = java.time.LocalDateTime.parse(str, fmt);
676
+                    return String.valueOf(ldt.toInstant(ZONE_OFFSET_8).toEpochMilli());
677
+                } catch (Exception ignored) {
678
+                    // 继续尝试下一个格式
679
+                }
680
+            }
681
+            // 所有格式都失败,返回当前时间
682
+            log.warn("无法解析 TIMESTAMP 列 {} 的值 '{}',使用当前时间", columnName, str);
683
+            return String.valueOf(System.currentTimeMillis());
645 684
         }
646 685
 
647 686
         // 字符串类型:使用实际值长度 + 5 冗余,不截断

+ 5
- 6
iot-platform/src/main/java/com/iot/platform/task/VehicleSyncTask.java Datei anzeigen

@@ -105,16 +105,15 @@ public class VehicleSyncTask {
105 105
                     }
106 106
                 }
107 107
 
108
-                String createTime = getStringValue(dataMap, "createTime");
109 108
                 String timestamp = getStringValue(dataMap, "timestamp");
110 109
 
111
-                if (createTime == null || timestamp == null) {
110
+                if (timestamp == null) {
112 111
                     continue;
113 112
                 }
114 113
 
115 114
                 timestamp = formatTimestamp(timestamp);
116 115
 
117
-                syncToTable(tableName, dataMap, createTime, timestamp, controllerId, deviceId);
116
+                syncToTable(tableName, dataMap, timestamp, controllerId, deviceId);
118 117
             } catch (RedisConnectionFailureException e) {
119 118
                 log.error("Redis 连接失败: {} | {}", redisKey, e.getMessage());
120 119
             } catch (DataAccessException e) {
@@ -126,7 +125,7 @@ public class VehicleSyncTask {
126 125
     }
127 126
 
128 127
     private void syncToTable(String tableName, Map<Object, Object> dataMap,
129
-                               String createTime, String timestamp,
128
+                               String timestamp,
130 129
                                String controllerId, String deviceId) {
131 130
         List<String> existingKeys = sysrealtimeService.selectAllKeys(tableName, controllerId);
132 131
         Set<String> existingKeySet = existingKeys != null ? new HashSet<>(existingKeys) : Collections.emptySet();
@@ -141,9 +140,9 @@ public class VehicleSyncTask {
141 140
             if (fieldValue == null) continue;
142 141
 
143 142
             if (existingKeySet.contains(fieldKey)) {
144
-                sysrealtimeService.updateTables(tableName, createTime, fieldValue, timestamp, fieldKey, controllerId, deviceId);
143
+                sysrealtimeService.updateTables(tableName, fieldValue, timestamp, fieldKey, controllerId, deviceId);
145 144
             } else {
146
-                sysrealtimeService.insertTables(tableName, createTime, controllerId, deviceId, timestamp, fieldKey, fieldValue);
145
+                sysrealtimeService.insertTables(tableName, controllerId, deviceId, timestamp, fieldKey, fieldValue);
147 146
             }
148 147
         }
149 148
     }

+ 2
- 6
iot-platform/src/main/resources/mapper/SysFaultMapper.xml Datei anzeigen

@@ -13,8 +13,8 @@
13 13
     </resultMap>
14 14
 
15 15
     <insert id="insertAlertData">
16
-        insert into alert_data(faultId,faultdescs,faultstatus,createtime,messageType,controller_id,device_id,readpeople,timestamp)
17
-        VALUES(#{faultId},#{faultdescs},#{faultstatus},#{createtime},#{messageType},#{controllerId},#{deviceId},#{readpeople},#{timestamp})
16
+        insert into alert_data(faultId,faultdescs,faultstatus,messageType,controller_id,device_id,readpeople,timestamp)
17
+        VALUES(#{faultId},#{faultdescs},#{faultstatus},#{messageType},#{controllerId},#{deviceId},#{readpeople},#{timestamp})
18 18
     </insert>
19 19
     <insert id="updateAlertData">
20 20
         update alert_data set faultstatus=#{faultstatus},
@@ -23,9 +23,6 @@
23 23
         where faultdescs=#{faultdescs}
24 24
           and controller_id=#{controllerId}
25 25
           and device_id=#{deviceId}
26
-          AND createtime &lt; #{createtime}  -- 1. 必须是当前传输时间之前的
27
-        ORDER BY createtime DESC         -- 2. 按时间倒序,取最近的一条
28
-        LIMIT 1;
29 26
     </insert>
30 27
 
31 28
     <select id="selectFaultCount" resultType="Integer">
@@ -36,7 +33,6 @@
36 33
         `faultId` varchar(255) DEFAULT NULL COMMENT '消息id',
37 34
         `faultdescs` varchar(255) DEFAULT NULL COMMENT '故障描述',
38 35
         `faultstatus` varchar(255) DEFAULT NULL COMMENT '故障是否恢复(0:触发,1:恢复)',
39
-        `createtime` varchar(255) DEFAULT NULL COMMENT '故障发生事件',
40 36
         `messageType` varchar(255) DEFAULT NULL COMMENT '消息状态(0未读,1已读)',
41 37
         `controller_id` varchar(255) DEFAULT NULL COMMENT '控制器id',
42 38
         `device_id` varchar(255) DEFAULT NULL COMMENT '设备id',

+ 2
- 4
iot-platform/src/main/resources/mapper/SysRealtimeMapper.xml Datei anzeigen

@@ -20,7 +20,6 @@
20 20
     <update id="createRealtime">
21 21
         CREATE TABLE IF NOT EXISTS `${tableName}` (
22 22
             id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
23
-            create_time VARCHAR(255) NOT NULL COMMENT '时间戳',
24 23
             controller_id VARCHAR(255) NOT NULL COMMENT '控制器id',
25 24
             device_id VARCHAR(255) NOT NULL COMMENT '设备id',
26 25
             timestamp VARCHAR(255) NOT NULL COMMENT '时间戳',
@@ -31,7 +30,6 @@
31 30
             INDEX idx_controller_device (controller_id, device_id),
32 31
             INDEX idx_controller_k (controller_id, k),
33 32
             INDEX idx_device_id (device_id),
34
-            INDEX idx_device_create_time (device_id, create_time),
35 33
             INDEX idx_k (k)
36 34
         ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='实时数据信息';
37 35
     </update>
@@ -40,10 +38,10 @@
40 38
         SHOW TABLES;
41 39
     </select>
42 40
     <insert id="insertTables">
43
-        insert into `${tableName}`(create_time,controller_id,device_id,timestamp,k,v) values(#{createTime},#{controllerId},#{deviceId},#{timestamp},#{k},#{v})
41
+        insert into `${tableName}`(controller_id,device_id,timestamp,k,v) values(#{controllerId},#{deviceId},#{timestamp},#{k},#{v})
44 42
     </insert>
45 43
     <update id="updateTables">
46
-        update `${tableName}` set create_time=#{createTime},v=#{v},timestamp=#{timestamp} where k=#{k} and device_id=#{deviceId} and controller_id=#{controllerId}
44
+        update `${tableName}` set v=#{v},timestamp=#{timestamp} where k=#{k} and device_id=#{deviceId} and controller_id=#{controllerId}
47 45
     </update>
48 46
 
49 47
     <select id="selectKey" resultType="Integer">

+ 2
- 2
iot-platform/src/main/resources/mapper/SysStatusMapper.xml Datei anzeigen

@@ -10,10 +10,10 @@
10 10
         <result column="status" property="status"/>
11 11
     </resultMap>
12 12
     <insert id="insertSysStatus">
13
-        Insert into controller_status(controller_id,fleet_id,status,create_time) values(#{controllerId},#{fleetId},#{status},#{createTime})
13
+        Insert into controller_status(controller_id,fleet_id,status) values(#{controllerId},#{fleetId},#{status})
14 14
     </insert>
15 15
     <update id="updateStatus">
16
-        update controller_status set fleet_id=#{fleetId},status=#{status},create_time=#{createTime} where controller_id=#{controllerId}
16
+        update controller_status set fleet_id=#{fleetId},status=#{status} where controller_id=#{controllerId}
17 17
     </update>
18 18
     <select id="selectStatusCount" resultType="Integer">
19 19
         select COUNT(*) from controller_status where controller_id=#{controllerId}

Laden…
Abbrechen
Speichern