From 36680087df02080833c319a7a70f083585fad295 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期五, 09 五月 2025 12:27:33 +0800
Subject: [PATCH] 1. 添加了动态污染溯源相关功能逻辑

---
 src/main/kotlin/com/flightfeather/uav/biz/dataanalysis/BaseExceptionContinuous.kt |   41 ++++++++++-------------------------------
 1 files changed, 10 insertions(+), 31 deletions(-)

diff --git a/src/main/kotlin/com/flightfeather/uav/biz/dataanalysis/BaseExceptionContinuous.kt b/src/main/kotlin/com/flightfeather/uav/biz/dataanalysis/BaseExceptionContinuous.kt
index 2ea3314..63cd9af 100644
--- a/src/main/kotlin/com/flightfeather/uav/biz/dataanalysis/BaseExceptionContinuous.kt
+++ b/src/main/kotlin/com/flightfeather/uav/biz/dataanalysis/BaseExceptionContinuous.kt
@@ -70,6 +70,8 @@
 
     /**
      * 鍒ゆ柇寮傚父鍑虹幇鐨勮繛缁椂闀挎槸鍚︽弧瓒虫潯浠�
+     * @param sIndex
+     * @param eIndex
      */
     abstract fun judgeDuration(sIndex: Int, eIndex: Int): Boolean
 
@@ -83,6 +85,7 @@
 //            existException.add(false)
 //            exceptionData.add(mutableListOf())
 //        }
+        tagMap.clear()
         config.factorFilter.mainList().forEach {f->
             tagMap[f] = Tag()
         }
@@ -91,16 +94,18 @@
     override fun onNextData(data: BaseRealTimeData) {
         val isContinue = isContinuous(lastData, data)
         val hasException = judgeException(lastData, data)
-        config.factorFilter.mainList().forEach {f->
+        config.factorFilter.selectedList.forEach {s->
+            val f = s.main
             tagMap[f]?.let {
                 it.eIndex++
                 // 璧峰鏁版嵁
+                it.endData = lastData
                 if (it.endData == null) {
                     it.refreshAfterCheckResult(data)
                 }
                 // 鍒ゆ柇鐩搁偦鏁版嵁鏄惁杩炵画骞朵笖鏄惁婊¤冻寮傚父鍒ゆ柇
                 if (!isContinue) {
-                    checkResult()
+                    checkResult(s)
                     // 鏁版嵁涓嶈繛缁椂锛岃褰曞紓甯告儏鍐�
                     if (it.eIndex - it.sIndex >= durationCount) {
                         it.refreshAfterCheckResult(data)
@@ -111,7 +116,7 @@
                         it.exceptionData.add(data)
                     } else {
                         // 寮傚父涓嶅啀閲嶅鍑虹幇鏃讹紝璁板綍寮傚父鎯呭喌
-                        checkResult()
+                        checkResult(s)
                         if (it.eIndex - it.sIndex >= durationCount) {
                             it.refreshAfterCheckResult(data)
                         }
@@ -119,32 +124,6 @@
                 }
             }
         }
-//        repeat(config.factorCount) { i ->
-//            eIndex[i]++
-//            // 璧峰鏁版嵁
-//            if (lastData == null) {
-//                refreshAfterCheckResult(i, data)
-//            }
-//            // 鍒ゆ柇鐩搁偦鏁版嵁鏄惁杩炵画骞朵笖鏄惁婊¤冻寮傚父鍒ゆ柇
-//            if (!isContinue) {
-//                checkResult()
-//                // 鏁版嵁涓嶈繛缁椂锛岃褰曞紓甯告儏鍐�
-//                if (eIndex[i] - sIndex[i] >= durationCount) {
-//                    refreshAfterCheckResult(i, data)
-//                }
-//            } else {
-//                if (hasException[i]) {
-//                    existException[i] = true
-//                    exceptionData[i].add(data)
-//                } else {
-//                    // 寮傚父涓嶅啀閲嶅鍑虹幇鏃讹紝璁板綍寮傚父鎯呭喌
-//                    checkResult()
-//                    if (eIndex[i] - sIndex[i] >= durationCount) {
-//                        refreshAfterCheckResult(i, data)
-//                    }
-//                }
-//            }
-//        }
         lastData = data
     }
 
@@ -165,7 +144,7 @@
     open fun checkResult(factor: FactorFilter.SelectedFactor? = null) {
         val tag = tagMap[factor?.main]
         if (factor != null && tag != null) {
-            if (tag.existException && judgeDuration(tag.sIndex, tag.eIndex)) {
+            if (tag.existException && judgeDuration(tag.sIndex, tag.eIndex - 1)) {
                 tag.startData?.let {
                     resultList.add(newResult(it, lastData, factor, tag.exceptionData))
                 }
@@ -174,7 +153,7 @@
         } else {
             config.factorFilter.selectedList.forEach { f ->
                 val tag1 = tagMap[f.main] ?: return@forEach
-                if (tag1.existException && judgeDuration(tag1.sIndex, tag1.eIndex)) {
+                if (tag1.existException && judgeDuration(tag1.sIndex, tag1.eIndex - 1)) {
                     tag1.startData?.let {
                         resultList.add(newResult(it, lastData, f, tag1.exceptionData))
                     }

--
Gitblit v1.9.3