From cf160e28026ed1ed8bea82701d66e79a1085c503 Mon Sep 17 00:00:00 2001
From: Riku <risaku@163.com>
Date: 星期四, 15 五月 2025 00:24:39 +0800
Subject: [PATCH] 1. 新增走航动态溯源功能

---
 src/main/kotlin/com/flightfeather/uav/biz/dataanalysis/BaseExceptionAnalysis.kt |   71 ++++-------------------------------
 1 files changed, 8 insertions(+), 63 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 94d782f..d43f689 100644
--- a/src/main/kotlin/com/flightfeather/uav/biz/dataanalysis/BaseExceptionAnalysis.kt
+++ b/src/main/kotlin/com/flightfeather/uav/biz/dataanalysis/BaseExceptionAnalysis.kt
@@ -1,18 +1,14 @@
 package com.flightfeather.uav.biz.dataanalysis
 
-import com.flightfeather.uav.biz.dataanalysis.model.DataAnalysisConfig
-import com.flightfeather.uav.biz.dataanalysis.model.ExceptionResult
+import com.flightfeather.uav.biz.FactorFilter
 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.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) {
 
     /**
      * 纭畾寮傚父绫诲瀷
@@ -20,63 +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?, factorIndex: Int,
+    abstract fun newResult(
+        start: BaseRealTimeData,
+        end: BaseRealTimeData?,
+        factor: FactorFilter.SelectedFactor,
         exceptionData: List<BaseRealTimeData>,
-    ): ExceptionResult {
-        val eType = getExceptionType()
-        val factorType = FactorType.getByIndex(factorIndex)
-        return ExceptionResult().apply {
-            missionCode = config.mission.missionCode
-            deviceCode = start.deviceCode
-            exception = eType.des
-            exceptionType = eType.value
-            factorId = factorType?.value
-            factorName = factorType?.des
-            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.getByFactorIndex(factorIndex)
-            endData = end?.getByFactorIndex(factorIndex) ?: startData
-
-            val s = dataSummary(exceptionData, factorIndex)
-            avg = s.first
-            min = s.second
-            max = s.third
-
-            exceptionData.forEach { dataList.add(it) }
-        }
-    }
-
-    fun dataSummary(exceptionData: List<BaseRealTimeData?>, factorIndex: Int): Triple<Float, Float, Float> {
-        var min = -1f
-        var max = -1f
-        var total = 0f
-        var count = 0
-        exceptionData.forEach {
-            val value = it?.getByFactorIndex(factorIndex) ?: 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)
-    }
+    ): Y
 }
\ No newline at end of file

--
Gitblit v1.9.3