From 37d47c6a7ab0f454b948b68c987146b261117993 Mon Sep 17 00:00:00 2001
From: Riku <risaku@163.com>
Date: 星期日, 13 七月 2025 22:47:21 +0800
Subject: [PATCH] 2025.7.13 动态溯源逻辑调整

---
 src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/exceptiontype/BaseRTExcWindLevel.kt |   39 +++++++++++++++++++++++++++++++++------
 1 files changed, 33 insertions(+), 6 deletions(-)

diff --git a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/exceptiontype/BaseRTExcWindLevel.kt b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/exceptiontype/BaseRTExcWindLevel.kt
index f78fd15..490c6ac 100644
--- a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/exceptiontype/BaseRTExcWindLevel.kt
+++ b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/exceptiontype/BaseRTExcWindLevel.kt
@@ -16,7 +16,7 @@
 
 
 // 寮傚父鏁版嵁鐢熸垚鍥炶皟绫�
-typealias NewPolluteClueCallback = (ex: PollutedClue) -> Unit
+typealias NewPolluteClueCallback = (ex: List<PollutedClue>) -> Unit
 /**
  * 涓嶅悓椋庨�熶笅锛屾暟鎹獊鍙樺紓甯稿熀绫�
  * @date 2025/5/29
@@ -37,9 +37,22 @@
         return ExceptionType.TYPE4
     }
 
+    override fun judgeDataScale(p: BaseRealTimeData?, n: BaseRealTimeData): MutableMap<FactorType, Boolean> {
+        val res = mutableMapOf<FactorType, Boolean>()
+        config.factorFilter.mainList().forEach { f ->
+            if (p?.getByFactorType(f) == null || n.getByFactorType(f) == null || n.windSpeed == null) {
+                res[f] = (false)
+                return@forEach
+            }
+            val nValue = n.getByFactorType(f)!!
+            val minValue = FactorType.getVMin(f)
+            res[f] = nValue >= minValue
+        }
+        return res
+    }
+
     override fun judgeException(p: BaseRealTimeData?, n: BaseRealTimeData): MutableMap<FactorType, Boolean> {
         val res = mutableMapOf<FactorType, Boolean>()
-        println()
         config.factorFilter.mainList().forEach { f ->
             if (p?.getByFactorType(f) == null || n.getByFactorType(f) == null || n.windSpeed == null) {
                 res[f] = (false)
@@ -70,12 +83,12 @@
         return tag.exceptionData.size >= windLevelCondition.countLimit
     }
 
-    override fun needCut(tag: ExceptionTag, hasException: Boolean?): Boolean {
+    override fun needCut(tag: ExceptionTag, hasException: Boolean?, data: BaseRealTimeData): Boolean {
         // 鎸夌収鏃堕暱鍜岃窛绂婚檺鍒跺皢寮傚父鎴彇
         if (tag.exceptionData.isEmpty()) return false
 
         val se = tag.exceptionData.first()
-        val ee = tag.exceptionData.last()
+        val ee = data
 
         val sTime = LocalDateTime.ofInstant(se.dataTime?.toInstant(), ZoneId.systemDefault())
         val eTime = LocalDateTime.ofInstant(ee.dataTime?.toInstant(), ZoneId.systemDefault())
@@ -121,9 +134,23 @@
         exceptionStatus: ExceptionStatusType,
     ) {
         super.onNewException(tag, factor, exceptionStatus)
+//        callback?.let { func ->
+//            val exc = tag.exceptionResult.last()
+//            func.invoke(exc as PollutedClue)
+//        }
+    }
+
+    override fun mergeExceptionResult() {
+        super.mergeExceptionResult()
+        latestExceptionResult
+        latestCombinedResult
         callback?.let { func ->
-            val exc = tag.exceptionResult.last()
-            func.invoke(exc as PollutedClue)
+            latestExceptionResult.forEach {
+                func.invoke(listOf(it as PollutedClue))
+            }
+            latestCombinedResult.forEach {
+                func.invoke(it as List<PollutedClue>)
+            }
         }
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3