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/dataanalysis/BaseExceptionContinuous.kt | 29 ++++++++++++++++++++++++++--- 1 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/com/flightfeather/uav/biz/dataanalysis/BaseExceptionContinuous.kt b/src/main/kotlin/com/flightfeather/uav/biz/dataanalysis/BaseExceptionContinuous.kt index 2bfe2be..7193e08 100644 --- a/src/main/kotlin/com/flightfeather/uav/biz/dataanalysis/BaseExceptionContinuous.kt +++ b/src/main/kotlin/com/flightfeather/uav/biz/dataanalysis/BaseExceptionContinuous.kt @@ -53,6 +53,16 @@ } /** + * 鍒ゆ柇鏁版嵁閲忕骇鍦ㄥ紓甯稿垽鏂殑鑼冨洿鍐� + * 榛樿鎵�鏈夐噺绾ч兘鍦ㄥ紓甯稿垽鏂殑鑼冨洿鍐� + */ + open fun judgeDataScale(p: BaseRealTimeData?, n: BaseRealTimeData): MutableMap<FactorType, Boolean> { + val res = mutableMapOf<FactorType, Boolean>() + config.factorFilter.mainList().forEach { f -> res[f] = true } + return res + } + + /** * 鍒ゆ柇鍓嶅悗鏁版嵁鏄惁婊¤冻寮傚父鏉′欢 */ abstract fun judgeException(p: BaseRealTimeData?, n: BaseRealTimeData): MutableMap<FactorType, Boolean> @@ -62,6 +72,19 @@ * @param tag 寮傚父鏁版嵁瀵硅薄 */ abstract fun judgeExceptionCount(tag: T, factorType: FactorType?): Boolean + + /** + * 鍒ゆ柇鐩戞祴鍥犲瓙鏄惁鍑虹幇寮傚父 + */ + open fun judge(p: BaseRealTimeData?, n: BaseRealTimeData): MutableMap<FactorType, Boolean> { + val jds = judgeDataScale(p, n) + val jex = judgeException(p, n) + val res = mutableMapOf<FactorType, Boolean>() + jds.forEach { (t, u) -> + res[t] = u && jex[t] ?: false + } + return res + } /** * 寮傚父鏁版嵁鐨勬埅鍙栧垽鏂� @@ -83,7 +106,7 @@ override fun onNextData(data: BaseRealTimeData) { val isContinue = isContinuous(lastData, data) - val hasException = judgeException(lastData, data) + val hasException = judge(lastData, data) config.factorFilter.selectedList.forEach { s -> val f = s.main tagMap[f]?.let { @@ -114,7 +137,7 @@ // 3. 鏁版嵁姝e父锛屾棤浠讳綍寮傚父鏃禿 // TODO("2025.6.3锛氬叾浠栧瓙绫荤殑姝ゅ鍒锋柊閫昏緫寰呭畬鎴愨��) else { - it.refreshWithNoException(data) + it.refreshWithNextException(data) } } } @@ -149,7 +172,7 @@ } else { config.factorFilter.selectedList.forEach { f -> val tag1 = tagMap[f.main] ?: return@forEach - if (tag1.exceptionExisted && judgeExceptionCount(tag1, null)) { + if (tag1.exceptionExisted && judgeExceptionCount(tag1, f.main)) { onNewException(tag1, f, exceptionStatus) } } -- Gitblit v1.9.3