From 6267d4a377eb61103d899e3f77f96c77be594e5d Mon Sep 17 00:00:00 2001
From: dengzedong <dengzedong@email>
Date: 星期三, 07 五月 2025 10:00:56 +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/CumulateHandle.java |   20 ++++++++++++++++----
 1 files changed, 16 insertions(+), 4 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 5bd3c39..ae3e12e 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
@@ -79,6 +79,7 @@
         }
         Calendar calendar = Calendar.getInstance();
         calendar.set(Calendar.MILLISECOND, 0);
+        calendar.set(Calendar.SECOND, 0);
         pointMathList.forEach(item -> {
             Object value = CommonConstant.BAD_VALUE;
             if (redisTemplate.hasKey(PointCollector.PV + item.getPointNo())) {
@@ -118,7 +119,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) {
@@ -127,7 +139,7 @@
             return BigDecimal.ZERO;
         } else if (dataList.size() < dto.getLength()) {
             log.info("补全数据,dataList.size()=" + dataList.size());
-            dataList = completionData(dto.getLength(), dataList, startTime, endTime, pointDTO);
+            dataList = completionData(dto.getLength(), dataList, startTime, endTime, momentPoint.getMinfreqid());
         }
         double total = dataList.stream().mapToDouble(ApiPointValueDTO::getV).sum();
         if (listGood != null) {
@@ -136,7 +148,7 @@
         return new BigDecimal(total).divide(new BigDecimal(dto.getDivisor()), 2, BigDecimal.ROUND_HALF_UP);
     }
 
-    private List<ApiPointValueDTO> completionData(int length, List<ApiPointValueDTO> dataList, Date startTime, Date endTime, ApiPointDTO pointDTO) {
+    private List<ApiPointValueDTO> completionData(int length, List<ApiPointValueDTO> dataList, Date startTime, Date endTime, String minfreqid) {
         if (CollectionUtils.isEmpty(dataList) || length == dataList.size()) {
             return dataList;
         } else if (length < dataList.size()) {
@@ -146,7 +158,7 @@
         List<ApiPointValueDTO> result = new ArrayList<>();
         long start = startTime.getTime();
         long end = endTime.getTime();
-        long oneMin = 1000L * DataPointFreqEnum.getEumByCode(pointDTO.getMinfreqid()).getValue();
+        long oneMin = 1000L * DataPointFreqEnum.getEumByCode(minfreqid).getValue();
         long mins = (end - start) / oneMin;
 
         //找出缺少项

--
Gitblit v1.9.3