From ca103ae3bbb52f6b3a9edb93c8bebcdddb96608a Mon Sep 17 00:00:00 2001 From: 潘志宝 <979469083@qq.com> Date: 星期四, 29 五月 2025 10:24:02 +0800 Subject: [PATCH] 修改缓存时间30s --- iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/handler/CumulateHandle.java | 32 ++++++++++++++++++++++++++------ 1 files changed, 26 insertions(+), 6 deletions(-) diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/handler/CumulateHandle.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/handler/CumulateHandle.java index 58625db..8d327e3 100644 --- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/handler/CumulateHandle.java +++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/handler/CumulateHandle.java @@ -23,6 +23,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.util.*; +import java.util.concurrent.TimeUnit; /** * 累计点处理 @@ -45,7 +46,7 @@ @Autowired private RedisTemplate<String, Object> redisTemplate; - public List<InfluxPointValuePOJO> handle(Date collectTime, List<DaPointDTO> dtos, List<String> listGood, List<String> listBad) { + public List<InfluxPointValuePOJO> handle(Date collectTime, List<DaPointDTO> dtos, Map<String, Object> dataMap, List<String> listGood, List<String> listBad) { List<InfluxPointValuePOJO> result = new ArrayList<>(); try { log.info("累计点处理开始"); @@ -54,9 +55,12 @@ } dtos.forEach(dto -> { try { - Object value = singleCompute(dto, collectTime, listGood, listBad); - InfluxPointValuePOJO pojo = GenInfluxPointValueUtils.getByPoint(dto, value); + Object rawValue = singleCompute(dto, collectTime, listGood, listBad); + BigDecimal coefficient = dto.getUnittransfactor() == null ? BigDecimal.ONE : dto.getUnittransfactor(); + BigDecimal calValue = new BigDecimal(rawValue.toString()).multiply(coefficient); + InfluxPointValuePOJO pojo = GenInfluxPointValueUtils.getByPoint(dto, calValue); pojo.setTimestamp(GenInfluxPointValueUtils.getByMin(collectTime, DataPointFreqEnum.getEumByCode(dto.getMinfreqid()))); + dataMap.put(dto.getPointNo(), calValue); result.add(pojo); } catch (Exception ex) { ex.printStackTrace(); @@ -85,7 +89,12 @@ if (redisTemplate.hasKey(PointCollector.PV + item.getPointNo())) { value = redisTemplate.opsForValue().get(PointCollector.PV + item.getPointNo()); } else { - value = singleCompute(item, calendar.getTime()); + Object rawValue = singleCompute(item, calendar.getTime()); + BigDecimal coefficient = item.getUnittransfactor() == null ? BigDecimal.ONE : item.getUnittransfactor(); + value = new BigDecimal(rawValue.toString()).multiply(coefficient); + // 写入缓存 + redisTemplate.opsForValue().set(PointCollector.PV + item.getPointNo(), + new BigDecimal(value.toString()).doubleValue(), PointCollector.offset, TimeUnit.SECONDS); } data.put(item.getPointNo(), value); }); @@ -119,7 +128,18 @@ queryDto.setEnd(endTime); queryDto.setPointNo(dto.getMomentPoint()); log.info("queryDto=" + JSONObject.toJSONString(queryDto)); - List<ApiPointValueDTO> dataList = dataPointApi.queryPointHistoryValue(queryDto); + List<ApiPointValueDTO> dataList = new ArrayList<>(); + List<ApiPointValueDTO> dataListTemp = dataPointApi.queryPointHistoryValue(queryDto); + if (dto.getIsCumuNeg() != null && dto.getIsCumuNeg().equals(0)) { + for (ApiPointValueDTO item : dataListTemp) { + if (item.getV() > 0) { + dataList.add(item); + } + } + } else { + dataList = dataListTemp; + } + if (CollectionUtils.isEmpty(dataList)) { log.info("dataList is empty"); if (listGood != null) { @@ -148,7 +168,7 @@ long start = startTime.getTime(); long end = endTime.getTime(); long oneMin = 1000L * DataPointFreqEnum.getEumByCode(minfreqid).getValue(); - long mins = (end - start) / oneMin; + long mins = ((end - start) / oneMin) + 1; //找出缺少项 Map<Long, Double> sourceDataMap = new HashMap<>(dataList.size()); -- Gitblit v1.9.3