| | |
| | | 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()); |