From 38d72198bfcced01ed9513b978163e5cd1d84625 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期一, 21 七月 2025 15:31:41 +0800
Subject: [PATCH] 2025.7.21 1. 修改动态溯源异常判断逻辑

---
 src/main/kotlin/com/flightfeather/uav/biz/dataanalysis/BaseExceptionAnalysis.kt |   80 ++++------------------------------------
 1 files changed, 8 insertions(+), 72 deletions(-)

diff --git a/src/main/kotlin/com/flightfeather/uav/biz/dataanalysis/BaseExceptionAnalysis.kt b/src/main/kotlin/com/flightfeather/uav/biz/dataanalysis/BaseExceptionAnalysis.kt
index 41323f0..2a95915 100644
--- a/src/main/kotlin/com/flightfeather/uav/biz/dataanalysis/BaseExceptionAnalysis.kt
+++ b/src/main/kotlin/com/flightfeather/uav/biz/dataanalysis/BaseExceptionAnalysis.kt
@@ -1,20 +1,14 @@
 package com.flightfeather.uav.biz.dataanalysis
 
 import com.flightfeather.uav.biz.FactorFilter
-import com.flightfeather.uav.biz.dataanalysis.model.DataAnalysisConfig
-import com.flightfeather.uav.biz.dataanalysis.model.ExceptionResult
 import com.flightfeather.uav.biz.dataanalysis.model.ExceptionType
-import com.flightfeather.uav.common.utils.DateUtil
 import com.flightfeather.uav.domain.entity.BaseRealTimeData
-import com.flightfeather.uav.domain.entity.avg
-import com.flightfeather.uav.socket.eunm.FactorType
-import java.time.Duration
 
 /**
  * 鐩戞祴鏁版嵁寮傚父鍒嗘瀽鍩虹被
  */
-abstract class BaseExceptionAnalysis(config: DataAnalysisConfig) :
-    BaseDataAnalysis<BaseRealTimeData, DataAnalysisConfig, ExceptionResult>(config) {
+abstract class BaseExceptionAnalysis<V : BaseAnalysisConfig, Y : BaseExceptionResult>(config: V) :
+    BaseDataAnalysis<BaseRealTimeData, V, Y>(config) {
 
     /**
      * 纭畾寮傚父绫诲瀷
@@ -22,70 +16,12 @@
     abstract fun getExceptionType(): ExceptionType
 
     /**
-     * 鍒ゆ柇鐩搁偦鏁版嵁鏄惁杩炵画
-     */
-    open fun isContinuous(d1: BaseRealTimeData?, d2: BaseRealTimeData?): Boolean {
-        if (d1 == null || d2 == null) return true
-
-        val t1 = d1.dataTime
-        val t2 = d2.dataTime
-        return Duration.between(t1?.toInstant(), t2?.toInstant()).toMillis() <= (20 * 1000)
-    }
-
-    /**
      * 鐢熸垚涓�鏉″紓甯稿垎鏋愮粨鏋�
      */
-    open fun newResult(
-        start: BaseRealTimeData, end: BaseRealTimeData?, factor: FactorFilter.SelectedFactor,
-        exceptionData: List<BaseRealTimeData>,
-    ): ExceptionResult {
-        val eType = getExceptionType()
-        return ExceptionResult().apply {
-            missionCode = config.mission.missionCode
-            deviceCode = start.deviceCode
-            exception = eType.des
-            exceptionType = eType.value
-            factorId = factor.main.value
-            factorName = factor.main.des
-            subFactorId = factor.subs.map { it.value }
-            subFactorName = factor.subs.map { it.des }
-            selectedFactor = factor
-            startTime = DateUtil.instance.dateToString(start.dataTime, DateUtil.DateStyle.HH_MM_SS)
-            endTime = DateUtil.instance.dateToString(end?.dataTime, DateUtil.DateStyle.HH_MM_SS) ?: startTime
-            startData = start.getByFactorType(factor.main)
-            endData = end?.getByFactorType(factor.main) ?: startData
-
-            val avgData = exceptionData.avg()
-            // 姹傚彇姹℃煋鏁版嵁鐨勪腑蹇冨潗鏍�
-            longitude = avgData.longitude
-            latitude = avgData.latitude
-            // 姹傚彇涓绘薄鏌撳洜瀛愮殑鍧囧�煎拰鑼冨洿
-            val s = dataSummary(exceptionData, factor.main)
-            avg = s.first
-            min = s.second
-            max = s.third
-
-            exceptionData.forEach { dataList.add(it) }
-        }
-    }
-
-    private fun dataSummary(exceptionData: List<BaseRealTimeData?>, factorType: FactorType): Triple<Float, Float, Float> {
-        var min = -1f
-        var max = -1f
-        var total = 0f
-        var count = 0
-        exceptionData.forEach {
-            val value = it?.getByFactorType(factorType) ?: return@forEach
-            if (min == -1f || min > value) {
-                min = value
-            }
-            if (max == -1f || max < value) {
-                max = value
-            }
-            total += value
-            count++
-        }
-        val avg = if (count == 0) 0f else total / count
-        return Triple(avg, min, max)
-    }
+//    abstract fun newResult(
+//        start: BaseRealTimeData,
+//        end: BaseRealTimeData?,
+//        factor: FactorFilter.SelectedFactor,
+//        exceptionData: List<BaseRealTimeData>,
+//    ): Y
 }
\ No newline at end of file

--
Gitblit v1.9.3