From 7d33080998a2c5b38e8a74dbed2b0f40d39bbe47 Mon Sep 17 00:00:00 2001
From: Riku <risaku@163.com>
Date: 星期三, 04 六月 2025 23:27:26 +0800
Subject: [PATCH] 1. 新增动态污染溯源新的判定逻辑(待完成)
---
src/main/kotlin/com/flightfeather/uav/biz/dataanalysis/BaseExceptionAnalysis.kt | 72 +++--------------------------------
1 files changed, 7 insertions(+), 65 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 139166f..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,19 +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.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) {
/**
* 纭畾寮傚父绫诲瀷
@@ -21,65 +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,
+ abstract 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 s = dataSummary(exceptionData, factor.main)
- avg = s.first
- min = s.second
- max = s.third
-
- exceptionData.forEach { dataList.add(it) }
- }
- }
-
- 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)
- }
+ ): Y
}
\ No newline at end of file
--
Gitblit v1.9.3