From 9881ce0814ad642646d9b76ad2caa70a0b966036 Mon Sep 17 00:00:00 2001 From: 潘志宝 <979469083@qq.com> Date: 星期一, 26 五月 2025 16:15:16 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/handler/MeasureHandle.java | 106 ++++++++++++++++++++++++++-------------------------- 1 files changed, 53 insertions(+), 53 deletions(-) diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/handler/MeasureHandle.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/handler/MeasureHandle.java index 8a9f766..2bed5dc 100644 --- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/handler/MeasureHandle.java +++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/handler/MeasureHandle.java @@ -224,61 +224,61 @@ public Map<String, Object> getCurrent(List<String> pointNos) { Map<String, Object> data = new HashMap<>(); List<DaPointDTO> pointMeasureList = daPointService.getMeasurePoint(pointNos); - pointMeasureList.forEach( - item -> { - try { - Object value = CommonConstant.BAD_VALUE; - boolean hasKey = redisTemplate.hasKey(PointCollector.PV + item.getPointNo()); - if (hasKey) { - value = redisTemplate.opsForValue().get(PointCollector.PV + item.getPointNo()); - } - if(hasKey && StrUtils.isNumeric(value.toString()) && - new BigDecimal(value.toString()).compareTo(CommonConstant.BAD_VALUE) != 0 ) { - value = redisTemplate.opsForValue().get(PointCollector.PV + item.getPointNo()); - } else if (DataSourceType.OPCUA.getCode().equals(item.getSourceType())) { - value = opcUaCollector.getTagValue(item.getSourceId(), item.getTagNo()); - } else if (DataSourceType.ModBus.getCode().equals(item.getSourceType())) { - value = modBusCollector.getTagValue(item.getSourceId(), item.getTagNo()); - } else if (DataSourceType.KIO.getCode().equals(item.getSourceType())) { - value = kingIOCollector.getTagValue(item.getSourceId(), item.getTagNo()); - } else if (DataSourceType.HTTP.getCode().equals(item.getSourceType())) { - if (SourceApiEnum.iHyperDB.getCode().equals(item.getSourceName())) { - value = httpCollectorForIhd.getTagValue(item.getSourceId(), item.getTagNo(), item.getDimension(), item.getValueType()); - } else if (SourceApiEnum.ASDB.getCode().equals(item.getSourceName())) { - value = httpCollectorForAsdb.getTagValue(item.getSourceId(), item.getTagNo()); - } else if (SourceApiEnum.ASDE.getCode().equals(item.getSourceName())) { - value = httpCollectorForAsde.getTagValue(item.getSourceId(), item.getTagNo()); - } else if (SourceApiEnum.ASDC.getCode().equals(item.getSourceName())) { - value = httpCollectorForAsdc.getTagValue(item.getSourceId(), item.getTagNo()); - } else if (SourceApiEnum.ASDY.getCode().equals(item.getSourceName())) { - value = httpCollectorForAsdy.getTagValue(item.getSourceId(), item.getTagNo()); - } - } else { - log.info("没有匹配的TagNo=" + item.getTagNo()); - } - log.info("TagNo=" + item.getTagNo() + ",value=" + value.toString()); - if (!PointDataTypeEnum.BOOLEAN.getCode().equals(item.getDataType())) { - BigDecimal decValue = new BigDecimal(value.toString()); - if (PointDataTypeEnum.FLOAT.getCode().equals(item.getDataType())) { - decValue = decValue.setScale(2, BigDecimal.ROUND_HALF_UP); - } else if (PointDataTypeEnum.INT.getCode().equals(item.getDataType())) { - decValue = decValue.setScale(0, BigDecimal.ROUND_HALF_UP); - } - data.put(item.getPointNo(), decValue); - } else { - data.put(item.getPointNo(), value); - } - - if (!hasKey) { - // 存入缓存 - toRedis(value, item); - } - } catch (Exception ex) { - ex.printStackTrace(); + for (DaPointDTO item : pointMeasureList) { + try { + Object value = CommonConstant.BAD_VALUE; + boolean hasKey = redisTemplate.hasKey(PointCollector.PV + item.getPointNo()); + if (hasKey && !StrUtils.isNumeric(value.toString())) { + value = redisTemplate.opsForValue().get(PointCollector.PV + item.getPointNo()); + data.put(item.getPointNo(), value); + continue; + } else if(hasKey && StrUtils.isNumeric(value.toString()) && new BigDecimal(value.toString()).compareTo(CommonConstant.BAD_VALUE) != 0 ) { + value = redisTemplate.opsForValue().get(PointCollector.PV + item.getPointNo()); + data.put(item.getPointNo(), value); + continue; + } else if (DataSourceType.OPCUA.getCode().equals(item.getSourceType())) { + value = opcUaCollector.getTagValue(item.getSourceId(), item.getTagNo()); + } else if (DataSourceType.ModBus.getCode().equals(item.getSourceType())) { + value = modBusCollector.getTagValue(item.getSourceId(), item.getTagNo()); + } else if (DataSourceType.KIO.getCode().equals(item.getSourceType())) { + value = kingIOCollector.getTagValue(item.getSourceId(), item.getTagNo()); + } else if (DataSourceType.HTTP.getCode().equals(item.getSourceType())) { + if (SourceApiEnum.iHyperDB.getCode().equals(item.getSourceName())) { + value = httpCollectorForIhd.getTagValue(item.getSourceId(), item.getTagNo(), item.getDimension(), item.getValueType()); + } else if (SourceApiEnum.ASDB.getCode().equals(item.getSourceName())) { + value = httpCollectorForAsdb.getTagValue(item.getSourceId(), item.getTagNo()); + } else if (SourceApiEnum.ASDE.getCode().equals(item.getSourceName())) { + value = httpCollectorForAsde.getTagValue(item.getSourceId(), item.getTagNo()); + } else if (SourceApiEnum.ASDC.getCode().equals(item.getSourceName())) { + value = httpCollectorForAsdc.getTagValue(item.getSourceId(), item.getTagNo()); + } else if (SourceApiEnum.ASDY.getCode().equals(item.getSourceName())) { + value = httpCollectorForAsdy.getTagValue(item.getSourceId(), item.getTagNo()); } - + } else { + log.info("没有匹配的TagNo=" + item.getTagNo()); } - ); + log.info("TagNo=" + item.getTagNo() + ",value=" + value.toString()); + if (!PointDataTypeEnum.BOOLEAN.getCode().equals(item.getDataType())) { + BigDecimal coefficient = item.getUnittransfactor() == null ? BigDecimal.ONE : item.getUnittransfactor(); + BigDecimal decValue = new BigDecimal(value.toString()).multiply(coefficient); + if (PointDataTypeEnum.FLOAT.getCode().equals(item.getDataType())) { + decValue = decValue.setScale(2, BigDecimal.ROUND_HALF_UP); + } else if (PointDataTypeEnum.INT.getCode().equals(item.getDataType())) { + decValue = decValue.setScale(0, BigDecimal.ROUND_HALF_UP); + } + data.put(item.getPointNo(), decValue); + } else { + data.put(item.getPointNo(), value); + } + + if (!hasKey) { + // 存入缓存 + toRedis(value, item); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } return data; } -- Gitblit v1.9.3