From 12c5c9b4eaaac1dc51cd0be88864260535394541 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期一, 29 九月 2025 16:47:38 +0800
Subject: [PATCH] 业务管理相关页面添加`批号`查询条件
---
cnas-device/src/main/java/com/ruoyi/device/service/impl/CollectBridgeServiceImpl.java | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 101 insertions(+), 0 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 a1acb6e..874a419 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
@@ -1,20 +1,30 @@
package com.ruoyi.device.service.impl;
+import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.RedisUtil;
+import com.ruoyi.device.constant.DCResistanceMqttConstants;
+import com.ruoyi.device.constant.ElongationMqttConstants;
import com.ruoyi.device.mapper.CollectBridgeMapper;
import com.ruoyi.device.pojo.CollectBridge;
import com.ruoyi.device.service.CollectBridgeService;
+import com.ruoyi.device.vo.DeviceMqttVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
+import java.math.BigDecimal;
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
/**
* 鏁板瓧鐢垫ˉ閲囬泦
@@ -97,6 +107,97 @@
}
}
+ @Override
+ public void addBridgeValueByNS(String jsonStr) {
+ Map<String, Object> dataMap = JSONObject.parseObject(jsonStr, new TypeReference<Map<String, Object>>(){}.getType());
+ if(CollectionUtil.isNotEmpty(dataMap) && Objects.nonNull(dataMap.get("data"))){
+ List<DeviceMqttVO> dataList = JSONArray.parseObject(dataMap.get("data").toString(), new TypeReference<List<DeviceMqttVO>>(){}.getType());
+ //杩囨护鍑哄寘鍚疄闄呯數闃诲�肩殑瀵硅薄
+ // 澶勭悊 NSDQCS.DQCS.DZZ 鏁版嵁
+ Double value = getValueByDataStream(dataList,DCResistanceMqttConstants.NSDQCS_DQCS_DZZ);
+ RedisUtil.set(DCResistanceMqttConstants.NSDQCS_DQCS_DZZ, value);
+ }
+ }
+
+ @Override
+ public void addBridgeValueByNSD(String jsonStr) {
+ Map<String, Object> dataMap = JSONObject.parseObject(jsonStr, new TypeReference<Map<String, Object>>(){}.getType());
+ if(CollectionUtil.isNotEmpty(dataMap) && Objects.nonNull(dataMap.get("data"))){
+ List<DeviceMqttVO> dataList = JSONArray.parseObject(dataMap.get("data").toString(), new TypeReference<List<DeviceMqttVO>>(){}.getType());
+ //杩囨护鍑哄寘鍚疄闄呯數闃诲�肩殑瀵硅薄
+ // 澶勭悊 NSTSSC.TSSC.WY 鏁版嵁
+ processMultipleValueDataStream(dataList, ElongationMqttConstants.NSTSSC_TSSC_WY,3);
+ }
+ }
+
+ /**
+ * 鑾峰彇mqtt娑堟伅浣撲腑瀵瑰簲鏍囪瘑鐨勫��
+ * @param dataList 鏁版嵁鍒楄〃
+ * @param dataStream 鏁版嵁娴佹爣璇�
+ */
+ private Double getValueByDataStream(List<DeviceMqttVO> dataList, String dataStream) {
+ DeviceMqttVO deviceMqttVO = dataList.stream()
+ .filter(f -> StringUtils.equals(f.getDataStream(), dataStream))
+ .findFirst()
+ .orElse(null);
+ if(Objects.nonNull(deviceMqttVO)){
+ List<DeviceMqttVO.DataPoint> dataPoints = deviceMqttVO.getDataPoints();
+ BigDecimal value = CollectionUtil.isNotEmpty(dataPoints)?dataPoints.get(0).getValue():BigDecimal.ZERO;
+ return value.doubleValue();
+ }
+ return 0.0;
+ }
+
+ /**
+ * 澶勭悊闇�瑕佷繚瀛樺涓�肩殑鏁版嵁娴侊紝骞朵繚瀛樺埌 Redis
+ * @param dataList 鏁版嵁鍒楄〃
+ * @param dataStream 鏁版嵁娴佹爣璇�
+ * @param maxSize 淇濆瓨鐨勬渶澶т釜鏁�
+ */
+ private void processMultipleValueDataStream(List<DeviceMqttVO> dataList, String dataStream,int maxSize){
+ // 绛涢�夊嚭褰撳墠鏁版嵁娴佸搴旂殑鏁版嵁
+ Double value = getValueByDataStream(dataList, dataStream);
+ //鍒ゆ柇key鏄惁瀛樺湪
+ boolean existKey = RedisUtil.hasKey(dataStream);
+ if(existKey){
+ long listSize = RedisUtil.lGetListSize(dataStream);
+ if(listSize<maxSize){
+ RedisUtil.lSet(dataStream,value);
+ }
+ }else{
+ RedisUtil.lSet(dataStream,value);
+ }
+ }
+
+ /**
+ * 澶勭悊闇�瑕佽幏鍙栦笁娆′笉鍚屽�肩殑鏁版嵁娴侊紝骞朵繚瀛樺埌 Redis
+ * @param dataList 鏁版嵁鍒楄〃
+ * @param dataStream 鏁版嵁娴佹爣璇�
+ */
+ private void processThreeTimesValueDataStream(List<DeviceMqttVO> 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);
+ }
+ }
+
+
+
+ // 灏嗘洿鏂板悗鐨勫�间繚瀛樺埌 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