From 06dcd31d599e24711d609dece7eb07a8b5f58dcd Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期三, 25 六月 2025 10:18:04 +0800
Subject: [PATCH] 测点当前值增加上下限制

---
 iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/PointCollector.java |   54 ++++++++++++++++--------------------------------------
 1 files changed, 16 insertions(+), 38 deletions(-)

diff --git a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/PointCollector.java b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/PointCollector.java
index 4c5eee6..72a0989 100644
--- a/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/PointCollector.java
+++ b/iailab-module-data/iailab-module-data-biz/src/main/java/com/iailab/module/data/point/collection/PointCollector.java
@@ -1,14 +1,12 @@
 package com.iailab.module.data.point.collection;
 
-import com.alibaba.fastjson.JSONObject;
 import com.iailab.module.data.common.enums.DataSourceType;
 import com.iailab.module.data.common.utils.R;
 import com.iailab.module.data.channel.kio.collector.KingIOCollector;
 import com.iailab.module.data.influxdb.pojo.InfluxPointValueBoolPOJO;
 import com.iailab.module.data.influxdb.pojo.InfluxPointValueDigPOJO;
 import com.iailab.module.data.influxdb.pojo.InfluxPointValueSimPOJO;
-import com.iailab.module.data.point.collection.handler.CalculateHandle;
-import com.iailab.module.data.point.collection.handler.CumulateHandle;
+import com.iailab.module.data.point.collection.handler.*;
 import com.iailab.module.data.point.common.PointTypeEnum;
 import com.iailab.module.data.point.dto.DaPointDTO;
 import com.iailab.module.data.point.service.DaPointCollectStatusService;
@@ -16,8 +14,6 @@
 import com.iailab.module.data.influxdb.pojo.InfluxPointValuePOJO;
 import com.iailab.module.data.channel.modbus.collector.ModBusCollector;
 import com.iailab.module.data.channel.opcua.collector.OpcUaCollector;
-import com.iailab.module.data.point.collection.handler.ConstantHandle;
-import com.iailab.module.data.point.collection.handler.MeasureHandle;
 import com.iailab.module.data.point.dto.DaPointWriteValueDTO;
 import com.iailab.module.data.influxdb.service.InfluxDBService;
 import lombok.extern.slf4j.Slf4j;
@@ -30,7 +26,6 @@
 import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
-import java.time.Duration;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 
@@ -70,6 +65,9 @@
     @Resource
     private CumulateHandle cumulateHandle;
 
+    @Resource
+    private ExtremalHandle extremalHandle;
+
     @Autowired
     private DaPointCollectStatusService daPointCollectStatusService;
 
@@ -78,7 +76,7 @@
 
     public static final String PV = "point_value:";
 
-    public static final long offset = 60 * 2L;
+    public static final long offset = 30L;
 
     /**
      * 采集
@@ -88,6 +86,7 @@
      */
     public void collect(Date collectTime, String minfreq) {
         try {
+            log.info("collectTime=" + collectTime.getTime());
             Map<String, Object> dataMap = new HashMap<>();
             List<InfluxPointValuePOJO> pointValues = new ArrayList<>();
             // 记录点位状态
@@ -101,42 +100,20 @@
             List<DaPointDTO> pointMeasureList = daPointService.getMeasurePoint(minfreq);
             pointValues.addAll(measureHandle.handle(collectTime, pointMeasureList, dataMap, listGood, listBad));
 
-            List<String> listBadNew = new ArrayList<>();
-            if (!CollectionUtils.isEmpty(listBad)) {
-                log.info("BAD点值修复");
-                List<InfluxPointValuePOJO> influxParams = new ArrayList<>();
-                for (String bad : listBad) {
-                    DaPointDTO daPointDTO = daPointService.getByNo(bad);
-                    InfluxPointValuePOJO pojo = new InfluxPointValuePOJO();
-                    pojo.setPoint(bad);
-                    pojo.setType(daPointDTO.getDataType());
-                    influxParams.add(pojo);
-                }
-                Map<String, Object> lastValue = influxDBService.queryPointsLastValue(influxParams);
-                log.info("lastValue=" + JSONObject.toJSONString(lastValue));
-                if (!CollectionUtils.isEmpty(lastValue)) {
-                    for (String bad : listBad) {
-                        if (lastValue.containsKey(bad)) {
-                            listGood.add(bad);
-                            dataMap.put(bad, lastValue.get(bad));
-                        } else {
-                            listBadNew.add(bad);
-                        }
-                    }
-                } else {
-                    listBadNew = listBad;
-                }
-            }
+            log.info("读取累计点");
+            List<DaPointDTO> pointCumulateList = daPointService.getCumulatePoint(minfreq);
+            pointValues.addAll(cumulateHandle.handle(collectTime, pointCumulateList, dataMap, listGood, listBad));
+
+            log.info("读取极值点");
+            List<DaPointDTO> pointExtremalList = daPointService.getExtremalPoint(minfreq);
+            pointValues.addAll(extremalHandle.handle(collectTime, pointExtremalList, dataMap, listGood, listBad));
 
             log.info("读取计算点");
             List<DaPointDTO> pointCalculateList = daPointService.getMathPoint(minfreq);
-            pointValues.addAll(calculateHandle.handle(collectTime, pointCalculateList, dataMap, listGood, listBadNew));
-
-            log.info("读取累计点");
-            List<DaPointDTO> pointCumulateList = daPointService.getCumulatePoint(minfreq);
-            pointValues.addAll(cumulateHandle.handle(collectTime, pointCumulateList, listGood, listBadNew));
+            pointValues.addAll(calculateHandle.handle(collectTime, pointCalculateList, dataMap, listGood, listBad));
 
             log.info("存入时序库");
+            log.info("pointValueTimestamp=" + (pointValues.get(0) == null ? 0 : pointValues.get(0).getTimestamp().getNano()));
             influxDBService.asyncWritePointValues(pointValues);
 
             log.info("存入缓存");
@@ -171,6 +148,7 @@
             data.putAll(measureHandle.getCurrent(pointNos));
             data.putAll(calculateHandle.getCurrent(pointNos));
             data.putAll(cumulateHandle.getCurrent(pointNos));
+            data.putAll(extremalHandle.getCurrent(pointNos));
             return data;
         } catch (Exception ex) {
             ex.printStackTrace();

--
Gitblit v1.9.3