|  |  | 
 |  |  | import com.ruoyi.device.mapper.CollectBridgeMapper; | 
 |  |  | import com.ruoyi.device.pojo.CollectBridge; | 
 |  |  | import com.ruoyi.device.service.CollectBridgeService; | 
 |  |  | import com.ruoyi.device.vo.DCResistanceMqttVO; | 
 |  |  | import com.ruoyi.device.vo.DeviceMqttVO; | 
 |  |  | import lombok.extern.slf4j.Slf4j; | 
 |  |  | import org.springframework.stereotype.Service; | 
 |  |  |  | 
 |  |  | 
 |  |  |     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<DCResistanceMqttVO> dataList = JSONArray.parseObject(dataMap.get("data").toString(), new TypeReference<List<DCResistanceMqttVO>>(){}.getType()); | 
 |  |  |             List<DeviceMqttVO> dataList = JSONArray.parseObject(dataMap.get("data").toString(), new TypeReference<List<DeviceMqttVO>>(){}.getType()); | 
 |  |  |             //è¿æ»¤åºå
å«å®é
çµé»å¼ç对象 | 
 |  |  |             // å¤ç NSDQCS.DQCS.DZZ æ°æ® | 
 |  |  |             processSingleValueDataStream(dataList, DCResistanceMqttConstants.NSDQCS_DQCS_DZZ); | 
 |  |  |             Double value = getValueByDataStream(dataList,DCResistanceMqttConstants.NSDQCS_DQCS_DZZ); | 
 |  |  |             RedisUtil.set(DCResistanceMqttConstants.NSDQCS_DQCS_DZZ, value); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |     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<DCResistanceMqttVO> dataList = JSONArray.parseObject(dataMap.get("data").toString(), new TypeReference<List<DCResistanceMqttVO>>(){}.getType()); | 
 |  |  |             List<DeviceMqttVO> dataList = JSONArray.parseObject(dataMap.get("data").toString(), new TypeReference<List<DeviceMqttVO>>(){}.getType()); | 
 |  |  |             //è¿æ»¤åºå
å«å®é
çµé»å¼ç对象 | 
 |  |  |             // å¤ç NSTSSC.TSSC.WY æ°æ® | 
 |  |  |             processThreeTimesValueDataStream(dataList, ElongationMqttConstants.NSTSSC_TSSC_WY); | 
 |  |  |             processMultipleValueDataStream(dataList, ElongationMqttConstants.NSTSSC_TSSC_WY,3); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * å¤çå弿°æ®æµçæ°æ®å¹¶ä¿åå° Redis | 
 |  |  |      * è·åmqttæ¶æ¯ä½ä¸å¯¹åºæ è¯çå¼ | 
 |  |  |      * @param dataList æ°æ®å表 | 
 |  |  |      * @param dataStream æ°æ®æµæ è¯ | 
 |  |  |      */ | 
 |  |  |     private void processSingleValueDataStream(List<DCResistanceMqttVO> dataList, String dataStream) { | 
 |  |  |         DCResistanceMqttVO dcResistanceMqttVO = dataList.stream() | 
 |  |  |     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(dcResistanceMqttVO)){ | 
 |  |  |             List<DCResistanceMqttVO.DataPoint> dataPoints = dcResistanceMqttVO.getDataPoints(); | 
 |  |  |         if(Objects.nonNull(deviceMqttVO)){ | 
 |  |  |             List<DeviceMqttVO.DataPoint> dataPoints = deviceMqttVO.getDataPoints(); | 
 |  |  |             BigDecimal value = CollectionUtil.isNotEmpty(dataPoints)?dataPoints.get(0).getValue():BigDecimal.ZERO; | 
 |  |  |             // ä¿åå个å¼å° redis | 
 |  |  |             RedisUtil.set(dataStream, value.doubleValue()); | 
 |  |  |             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); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |      * @param dataList æ°æ®å表 | 
 |  |  |      * @param dataStream æ°æ®æµæ è¯ | 
 |  |  |      */ | 
 |  |  |     private void processThreeTimesValueDataStream(List<DCResistanceMqttVO> dataList, String dataStream) { | 
 |  |  |     private void processThreeTimesValueDataStream(List<DeviceMqttVO> dataList, String dataStream) { | 
 |  |  |         // ä» Redis è·åå·²åå¨çå¼ | 
 |  |  |         Object valueFromRedis = RedisUtil.get(dataStream); | 
 |  |  |         JSONArray valueArray = new JSONArray(); | 
 |  |  | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         // çéåºå½åæ°æ®æµå¯¹åºçæ°æ® | 
 |  |  |         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()); |