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 | 78 +++++++++++++++++++++++++++++++++++++++ 1 files changed, 78 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 18d8376..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; @@ -129,6 +130,35 @@ @Override public void writeTimeSeriesData(@NotNull PowerEntity powerEntity) { List<IndexTemplate> templates = getIndexTemplate(); + // 鍒ゆ柇鎬绘湁鍔熸槸鍚︿负绌猴紝濡傛灉涓虹┖鍒ゆ柇姝e悜鏈夊姛鍜屽弽鍚戞湁鍔熸槸鍚︿负绌猴紝濡傛灉鍚庝袱涓换鎰忎竴涓笉涓虹┖锛屽垯浠庢椂搴忔暟鎹簱涓幏鍙栦负绌虹殑閭d竴涓紝鐒跺悗灏嗘�绘湁鍔熻兘鐢佃兘璧嬪�间负姝e悜鏈夊姛鑳界數鑳藉噺鍘诲弽鍚戞湁鍔熻兘鐢佃兘 + if (powerEntity.getEps() == null) { + if (powerEntity.getEpsp() != null && powerEntity.getEpsn() != null) { + powerEntity.setEps(powerEntity.getEpsp() - powerEntity.getEpsn()); + } else if (powerEntity.getEpsp() != null) { + double lastValue = repository.getLastPoint(influxdbConfig.getMeasurement(), + TAG, powerEntity.getSn() + "_" + "Exp"); + powerEntity.setEps(powerEntity.getEpsp() - lastValue); + + } else if (powerEntity.getEpsn() != null) { + double lastValue = repository.getLastPoint(influxdbConfig.getMeasurement(), + TAG, powerEntity.getSn() + "_" + "ActiveZT"); + powerEntity.setEps(lastValue - powerEntity.getEpsn()); + } + } + // 鍒ゆ柇鎬绘棤鍔熸槸鍚︿负绌猴紝濡傛灉涓虹┖鍒ゆ柇姝e悜鏃犲姛鍜屽弽鍚戞棤鍔熸槸鍚︿负绌猴紝濡傛灉鍚庝袱涓换鎰忎竴涓笉涓虹┖锛屽垯浠庢椂搴忔暟鎹簱涓幏鍙栦负绌虹殑閭d竴涓紝鐒跺悗灏嗘�绘棤鍔熺數鑳借祴鍊间负姝e悜鏃犲姛鐢佃兘鍜屽弽鍚戞棤鍔熺數鑳界殑缁濆鍊间箣鍜� + if (powerEntity.getEqs() == null) { + if (powerEntity.getEqsp() != null && powerEntity.getEqsn() != null) { + powerEntity.setEqs(Math.abs(powerEntity.getEqsp()) + Math.abs(powerEntity.getEqsn())); + } else if (powerEntity.getEqsp() != null) { + double lastValue = repository.getLastPoint(influxdbConfig.getMeasurement(), + TAG, powerEntity.getSn() + "_" + "ExpZN"); + powerEntity.setEqs(Math.abs(lastValue) + Math.abs(powerEntity.getEqsp())); + } else if (powerEntity.getEqsn() != null) { + double lastValue = repository.getLastPoint(influxdbConfig.getMeasurement(), + TAG, powerEntity.getSn() + "_" + "ActiveZN"); + powerEntity.setEqs(Math.abs(lastValue) + Math.abs(powerEntity.getEqsn())); + } + } // 鑾峰彇绫讳腑鎵�鏈夊0鏄庣殑瀛楁 Field[] fields = powerEntity.getClass().getDeclaredFields(); List<Point> points = new ArrayList<>(); @@ -172,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