From be00ddc83f86599916eb8d0f581f448aa74c9d51 Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期四, 19 六月 2025 08:55:57 +0800
Subject: [PATCH] feat(mqtt): 增加对空调设备数据的处理

---
 src/main/java/com/zhitan/service/impl/DataServiceImpl.java |   49 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 49 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zhitan/service/impl/DataServiceImpl.java b/src/main/java/com/zhitan/service/impl/DataServiceImpl.java
index e977412..1b31f0d 100644
--- a/src/main/java/com/zhitan/service/impl/DataServiceImpl.java
+++ b/src/main/java/com/zhitan/service/impl/DataServiceImpl.java
@@ -11,6 +11,7 @@
 import com.zhitan.model.entity.ElectricPower;
 import com.zhitan.influxdb.InfluxdbRepository;
 import com.zhitan.mapper.CommonMapper;
+import com.zhitan.model.entity.KtDataEntity;
 import com.zhitan.model.entity.PowerEntity;
 import com.zhitan.redis.RedisCache;
 import com.zhitan.service.IDataService;
@@ -201,6 +202,54 @@
                 }
             }
         }
+//        repository.writePoints(points);
+    }
+
+
+    /**
+     * 鍐欏叆KT鏁版嵁
+     *
+     * @param ktDataEntity 鍥哄畾鏍煎紡鐨勬暟鎹�
+     */
+    @Override
+    public void writeTimeSeriesData(KtDataEntity ktDataEntity) {
+        List<IndexTemplate> templates = getIndexTemplate();
+        // 鑾峰彇绫讳腑鎵�鏈夊0鏄庣殑瀛楁
+        Field[] fields = ktDataEntity.getClass().getDeclaredFields();
+        List<Point> points = new ArrayList<>();
+        for (Field field : fields) {
+            IndexTemplate indexTemplate = templates.stream().filter(template ->
+                            field.getName().equalsIgnoreCase(template.getGatewayKey()))
+                    .findFirst().orElse(null);
+                    if (indexTemplate != null) {
+                        Point point = Point
+                                .measurement(influxdbConfig.getMeasurement())
+                                .addTag(TAG, ktDataEntity.getSn() + "_" + indexTemplate.getCode())
+                                .time(Instant.now(), WritePrecision.S);
+                        field.setAccessible(true);
+                        if (Number.class.isAssignableFrom(field.getType()) || field.getType().isPrimitive()) {
+                            try {
+                                // 鑾峰彇瀛楁鍊�
+                                Object o = field.get(ktDataEntity);
+                                if (o!=null) {
+                                    // 瀹夊叏绫诲瀷杞崲
+                                    if (o instanceof Number) {
+                                        double value = ((Number) o).doubleValue();
+                                        point.addField(FIELD_VALUE, value);
+                                        // 浣跨敤 value...
+                                    } else {
+                                        log.error("瀛楁 {} 绫诲瀷闈炴硶: {}", field.getName(), o.getClass());
+                                    }
+                                }
+                                points.add(point);
+                            } catch (IllegalAccessException e) {
+                                throw new RuntimeException(e);
+                            }
+                        }
+                    }
+
+
+        }
         repository.writePoints(points);
     }
 

--
Gitblit v1.9.3