From 37d47c6a7ab0f454b948b68c987146b261117993 Mon Sep 17 00:00:00 2001 From: Riku <risaku@163.com> Date: 星期日, 13 七月 2025 22:47:21 +0800 Subject: [PATCH] 2025.7.13 动态溯源逻辑调整 --- src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/exceptiontype/BaseRTExcWindLevel.kt | 61 +++++++++++++++++++++++------- 1 files changed, 46 insertions(+), 15 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 779d121..490c6ac 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 @@ -16,7 +16,7 @@ // 寮傚父鏁版嵁鐢熸垚鍥炶皟绫� -typealias NewPolluteClueCallback = (ex: PollutedClue) -> Unit +typealias NewPolluteClueCallback = (ex: List<PollutedClue>) -> Unit /** * 涓嶅悓椋庨�熶笅锛屾暟鎹獊鍙樺紓甯稿熀绫� * @date 2025/5/29 @@ -37,9 +37,22 @@ 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>() - println() config.factorFilter.mainList().forEach { f -> if (p?.getByFactorType(f) == null || n.getByFactorType(f) == null || n.windSpeed == null) { res[f] = (false) @@ -66,16 +79,16 @@ return res } - override fun judgeExceptionCount(tag: ExceptionTag): Boolean { + override fun judgeExceptionCount(tag: ExceptionTag, factorType: FactorType?): Boolean { return tag.exceptionData.size >= windLevelCondition.countLimit } - override fun needCut(tag: ExceptionTag, hasException: Boolean?): Boolean { + override fun needCut(tag: ExceptionTag, hasException: Boolean?, data: BaseRealTimeData): Boolean { // 鎸夌収鏃堕暱鍜岃窛绂婚檺鍒跺皢寮傚父鎴彇 if (tag.exceptionData.isEmpty()) return false val se = tag.exceptionData.first() - val ee = tag.exceptionData.last() + val ee = data val sTime = LocalDateTime.ofInstant(se.dataTime?.toInstant(), ZoneId.systemDefault()) val eTime = LocalDateTime.ofInstant(ee.dataTime?.toInstant(), ZoneId.systemDefault()) @@ -97,19 +110,23 @@ 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, @@ -117,9 +134,23 @@ exceptionStatus: ExceptionStatusType, ) { super.onNewException(tag, factor, exceptionStatus) +// callback?.let { func -> +// val exc = tag.exceptionResult.last() +// func.invoke(exc as PollutedClue) +// } + } + + override fun mergeExceptionResult() { + super.mergeExceptionResult() + latestExceptionResult + latestCombinedResult callback?.let { func -> - val exc = tag.exceptionResult.last() - func.invoke(exc as PollutedClue) + latestExceptionResult.forEach { + func.invoke(listOf(it as PollutedClue)) + } + latestCombinedResult.forEach { + func.invoke(it as List<PollutedClue>) + } } } } \ No newline at end of file -- Gitblit v1.9.3