From c56e1e74426238939f229f0005828d05089715ff Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期四, 03 七月 2025 17:30:58 +0800
Subject: [PATCH] 2025.7.3 1. 新增动态污染溯源新的判定逻辑

---
 src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/exceptiontype/BaseRTExcWindLevel.kt |   41 +++++++++++++++++++++++++++++++----------
 1 files changed, 31 insertions(+), 10 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 b1010a1..84933af 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
@@ -37,6 +37,20 @@
         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>()
         config.factorFilter.mainList().forEach { f ->
@@ -48,21 +62,24 @@
             val con = windLevelCondition
 
             if (n.windSpeed!! in con.windSpeed.first..con.windSpeed.second) {
+                println("椋庨�燂細${n.windSpeed}锛孾${con.windSpeed.first} - ${con.windSpeed.second}]")
                 val pValue = p.getByFactorType(f)!!
                 val nValue = n.getByFactorType(f)!!
                 // 璁$畻鍚庝竴涓暟鎹浉姣斾簬鍓嶄竴涓暟鎹殑鍙樺寲鐜�
                 val r = (nValue - pValue) / pValue
-                val b1 = r >= con.mutationRate.first
+                val b1 = r >= con.mutationRate.first && r < con.mutationRate.second
+                println("鍥犲瓙锛�${f.des}锛屽箙搴︼細${r}锛岄檺瀹氾細${con.mutationRate.first}锛�${b1}")
                 res[f] = b1
             } else {
                 res[f] = false
             }
         }
 
+
         return res
     }
 
-    override fun judgeExceptionCount(tag: ExceptionTag): Boolean {
+    override fun judgeExceptionCount(tag: ExceptionTag, factorType: FactorType?): Boolean {
         return tag.exceptionData.size >= windLevelCondition.countLimit
     }
 
@@ -93,20 +110,24 @@
         return b1 || b2
     }
 
-    override fun immeExcCheck(tag: ExceptionTag): Boolean {
+    override fun immeExcCheck(tag: ExceptionTag, factorType: FactorType): Boolean {
         // 寮傚父鍑虹幇绛変簬闄愬畾娆℃暟鏃讹紝灏遍渶瑕佸舰鎴愭薄鏌撶嚎绱�
         return tag.exceptionData.size == windLevelCondition.countLimit
     }
 
-    override fun newResult(
-        start: BaseRealTimeData,
-        end: BaseRealTimeData?,
-        factor: FactorFilter.SelectedFactor,
-        exceptionData: List<BaseRealTimeData>,
-    ): PollutedClue {
-        return PollutedClue(start, end, factor, exceptionData, getExceptionType(), config, windLevelCondition)
+    override fun newResult(tag: ExceptionTag, factor: FactorFilter.SelectedFactor): PollutedClue {
+        return PollutedClue(tag, factor, getExceptionType(), config, windLevelCondition)
     }
 
+//    override fun newResult(
+//        start: BaseRealTimeData,
+//        end: BaseRealTimeData?,
+//        factor: FactorFilter.SelectedFactor,
+//        exceptionData: List<BaseRealTimeData>,
+//    ): PollutedClue {
+//        return PollutedClue(start, end, factor, exceptionData, getExceptionType(), config, windLevelCondition)
+//    }
+
     override fun onNewException(
         tag: ExceptionTag,
         factor: FactorFilter.SelectedFactor,

--
Gitblit v1.9.3