From d5e714fecf9cba48c1a225e6eb53078cdad647c7 Mon Sep 17 00:00:00 2001 From: yaowanxin <3588231647@qq.com> Date: 星期四, 31 七月 2025 13:55:19 +0800 Subject: [PATCH] 获取redis数据,接收前端数据存reids --- cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java | 81 +++++++++++++++++++++++++++++++++++++--- 1 files changed, 74 insertions(+), 7 deletions(-) diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java index 6024f31..8fa0b1c 100644 --- a/cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java +++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java @@ -112,16 +112,83 @@ if(CollectionUtil.isNotEmpty(dataMap) && Objects.nonNull(dataMap.get("data"))){ List<DCResistanceMqttVO> dataList = JSONArray.parseObject(dataMap.get("data").toString(), new TypeReference<List<DCResistanceMqttVO>>(){}.getType()); //杩囨护鍑哄寘鍚疄闄呯數闃诲�肩殑瀵硅薄 - DCResistanceMqttVO dcResistanceMqttVO = dataList.stream().filter(f -> StringUtils.equals(f.getDataStream(), DCResistanceMqttConstants.NSDQCS_DQCS_DZZ)).findFirst().orElse(null); - if(Objects.nonNull(dcResistanceMqttVO)){ - List<DCResistanceMqttVO.DataPoint> dataPoints = dcResistanceMqttVO.getDataPoints(); - BigDecimal value = CollectionUtil.isNotEmpty(dataPoints)?dataPoints.get(0).getValue():BigDecimal.ZERO; - //淇濆瓨瀹為檯鐢甸樆鍊煎埌redis - RedisUtil.set(DCResistanceMqttConstants.NSDQCS_DQCS_DZZ,value.doubleValue()); - } + // 澶勭悊 NSDQCS.DQCS.DZZ 鏁版嵁 + processSingleValueDataStream(dataList, DCResistanceMqttConstants.NSDQCS_DQCS_DZZ); + // 澶勭悊 NSTSSC.TSSC.WY 鏁版嵁 + processThreeTimesValueDataStream(dataList, DCResistanceMqttConstants.NSTSSC_TSSC_WY); +// DCResistanceMqttVO dcResistanceMqttVO = dataList.stream().filter(f -> StringUtils.equals(f.getDataStream(), DCResistanceMqttConstants.NSDQCS_DQCS_DZZ)).findFirst().orElse(null); +// if(Objects.nonNull(dcResistanceMqttVO)){ +// List<DCResistanceMqttVO.DataPoint> dataPoints = dcResistanceMqttVO.getDataPoints(); +// BigDecimal value = CollectionUtil.isNotEmpty(dataPoints)?dataPoints.get(0).getValue():BigDecimal.ZERO; +// //淇濆瓨瀹為檯鐢甸樆鍊煎埌redis +// RedisUtil.set(DCResistanceMqttConstants.NSDQCS_DQCS_DZZ,value.doubleValue()); +// } + } + } + /** + * 澶勭悊鍗曞�兼暟鎹祦鐨勬暟鎹苟淇濆瓨鍒� Redis + * @param dataList 鏁版嵁鍒楄〃 + * @param dataStream 鏁版嵁娴佹爣璇� + */ + private void processSingleValueDataStream(List<DCResistanceMqttVO> dataList, String dataStream) { + DCResistanceMqttVO dcResistanceMqttVO = dataList.stream() + .filter(f -> StringUtils.equals(f.getDataStream(), dataStream)) + .findFirst() + .orElse(null); + if(Objects.nonNull(dcResistanceMqttVO)){ + List<DCResistanceMqttVO.DataPoint> dataPoints = dcResistanceMqttVO.getDataPoints(); + BigDecimal value = CollectionUtil.isNotEmpty(dataPoints)?dataPoints.get(0).getValue():BigDecimal.ZERO; + // 淇濆瓨鍗曚釜鍊煎埌 redis + RedisUtil.set(dataStream, value.doubleValue()); } } + /** + * 澶勭悊闇�瑕佽幏鍙栦笁娆′笉鍚屽�肩殑鏁版嵁娴侊紝骞朵繚瀛樺埌 Redis + * @param dataList 鏁版嵁鍒楄〃 + * @param dataStream 鏁版嵁娴佹爣璇� + */ + private void processThreeTimesValueDataStream(List<DCResistanceMqttVO> dataList, String dataStream) { + // 浠� Redis 鑾峰彇宸插瓨鍌ㄧ殑鍊� + Object valueFromRedis = RedisUtil.get(dataStream); + JSONArray valueArray = new JSONArray(); + + if (valueFromRedis != null) { + if (valueFromRedis instanceof String) { + try { + valueArray = JSONArray.parseArray((String) valueFromRedis); + } catch (Exception e) { + // 濡傛灉瑙f瀽澶辫触锛岃鏄� Redis 涓殑鍊煎彲鑳戒笉鏄悎娉曠殑 JSON 鏁扮粍锛屽垱寤虹┖鏁扮粍 + valueArray = new JSONArray(); + } + } else if (valueFromRedis instanceof Double) { + // 濡傛灉鏄� Double 绫诲瀷锛屽皢鍏舵坊鍔犲埌鏁扮粍涓� + valueArray.add(valueFromRedis); + } + } + + // 绛涢�夊嚭褰撳墠鏁版嵁娴佸搴旂殑鏁版嵁 + DCResistanceMqttVO dcResistanceMqttVO = dataList.stream() + .filter(f -> StringUtils.equals(f.getDataStream(), dataStream)) + .findFirst() + .orElse(null); + + if (Objects.nonNull(dcResistanceMqttVO)) { + List<DCResistanceMqttVO.DataPoint> dataPoints = dcResistanceMqttVO.getDataPoints(); + if (CollectionUtil.isNotEmpty(dataPoints)) { + BigDecimal value = dataPoints.get(0).getValue(); + valueArray.add(value.doubleValue()); + + // 鍙繚鐣欐渶鏂扮殑涓変釜鍊� + if (valueArray.size() > 3) { + valueArray.remove(0); + } + } + } + + // 灏嗘洿鏂板悗鐨勫�间繚瀛樺埌 Redis + RedisUtil.set(dataStream, valueArray.toJSONString()); + } public static boolean isWithinTenMinutes(LocalDateTime dateTime1, LocalDateTime dateTime2) { Duration duration = Duration.between(dateTime1, dateTime2); long minutesDifference = Math.abs(duration.toMinutes()); -- Gitblit v1.9.3