From 718aabb1db80e7efbb2e866ca3ae74bcd264e20a Mon Sep 17 00:00:00 2001 From: feiyu02 <risaku@163.com> Date: 星期一, 02 六月 2025 08:30:19 +0800 Subject: [PATCH] 1. 新增动态污染溯源新的判定逻辑(待完成) --- src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/RealTimeAnalysisConfig.kt | 1 src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/RealTimeExceptionAnalysisController.kt | 2 src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedSource.kt | 7 +++ src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/RealTimeExceptionResult.kt | 1 src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedSummary.kt | 81 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 91 insertions(+), 1 deletions(-) diff --git a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/RealTimeAnalysisConfig.kt b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/RealTimeAnalysisConfig.kt index 6ebac98..0953152 100644 --- a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/RealTimeAnalysisConfig.kt +++ b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/RealTimeAnalysisConfig.kt @@ -8,6 +8,7 @@ * @date 2025/5/13 * @author feiyu02 */ +@Deprecated("2025.5.29, 閫昏緫涓庝笟鍔′笉鍖归厤锛屽悗缁垹闄�") class RealTimeAnalysisConfig( // 鍥犲瓙绛涢�� factorFilter: FactorFilter, diff --git a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/RealTimeExceptionAnalysisController.kt b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/RealTimeExceptionAnalysisController.kt index 4670667..73f898f 100644 --- a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/RealTimeExceptionAnalysisController.kt +++ b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/RealTimeExceptionAnalysisController.kt @@ -23,7 +23,7 @@ * @date 2025/5/8 * @author feiyu02 */ - +@Deprecated("2025.5.29, 閫昏緫涓庝笟鍔′笉鍖归厤锛屽悗缁垹闄�") class RealTimeExceptionAnalysisController { constructor(sceneInfoRep: SceneInfoRep, factorFilter: FactorFilter?) { diff --git a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedSource.kt b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedSource.kt index de0dc62..2dc6b58 100644 --- a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedSource.kt +++ b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedSource.kt @@ -4,6 +4,7 @@ import com.flightfeather.uav.common.utils.MapUtil import com.flightfeather.uav.domain.entity.SceneInfo import com.flightfeather.uav.domain.repository.SceneInfoRep +import org.springframework.web.context.ContextLoader /** * 姹℃煋鏉ユ簮 @@ -21,6 +22,12 @@ // 婧簮浼佷笟 var sceneList:List<SceneInfo?>? = null + fun searchScenes(pollutedArea: PollutedArea, factor: FactorFilter.SelectedFactor) { + ContextLoader.getCurrentWebApplicationContext()?.getBean(SceneInfoRep::class.java)?.run { + searchScenes(pollutedArea, this, factor) + } + } + /** * 鏌ユ壘绯荤粺鍐呴儴婧簮鑼冨洿鍐呯殑姹℃煋浼佷笟 */ diff --git a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedSummary.kt b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedSummary.kt index 91983a8..3070bcf 100644 --- a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedSummary.kt +++ b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedSummary.kt @@ -1,5 +1,17 @@ package com.flightfeather.uav.biz.sourcetrace.model +import com.flightfeather.uav.biz.FactorFilter +import com.flightfeather.uav.biz.dataanalysis.BaseExceptionAnalysis +import com.flightfeather.uav.biz.sourcetrace.RealTimeAnalysisConfig +import com.flightfeather.uav.biz.sourcetrace.config.RTExcWindLevelConfig +import com.flightfeather.uav.biz.sourcetrace.exceptiontype.* +import com.flightfeather.uav.common.utils.GsonUtils +import com.flightfeather.uav.domain.entity.BaseRealTimeData +import com.flightfeather.uav.domain.repository.SceneInfoRep +import com.flightfeather.uav.socket.eunm.FactorType +import com.flightfeather.uav.socket.sender.UnderwayWebSocketSender +import java.util.* + /** * 姹℃煋鎯呭喌姹囨�� * 閽堝鍗曟璧拌埅锛屽畾鏃剁粺璁″凡鏈夋薄鏌撶嚎绱PollutedClue]锛屾寜鐓х瓥鐣ョ粰鍑鸿蛋鑸缓璁� @@ -14,6 +26,75 @@ * 姣忎竴鍒婚挓瀵瑰巻鍙茬嚎绱㈣繘琛岀粺璁★紝鎻愬嚭浼氬晢寤鸿锛堢姹℃煋婧愯緝杩溿�佹薄鏌撴簮鏁伴噺銆佸嚭鐜版鏁帮級銆佽蛋鑸矾绾胯皟鏁村缓璁紙绂绘薄鏌撴簮杈冭繎銆佽蛋鑸建杩规湭鎺ヨ繎婧簮鍦烘櫙锛� */ + constructor(sceneInfoRep: SceneInfoRep, factorFilter: FactorFilter?) { + this.sceneInfoRep = sceneInfoRep + this.config = if (factorFilter != null) + RTExcWindLevelConfig(factorFilter) + else + RTExcWindLevelConfig( + FactorFilter.builder() +// .withMain(FactorType.NO2) + .withMain(FactorType.CO) +// .withMain(FactorType.H2S) +// .withMain(FactorType.SO2) +// .withMain(FactorType.O3) + .withMain(FactorType.PM25) + .withMain(FactorType.PM10) + .withMain(FactorType.VOC) + .create() + ) + initTask() + } + + constructor(sceneInfoRep: SceneInfoRep) : this(sceneInfoRep, null) + // 姹℃煋绾跨储 var clueList = mutableListOf<PollutedClue>() + + private val sceneInfoRep: SceneInfoRep + + private val config: RTExcWindLevelConfig + + private val taskList = mutableListOf<BaseExceptionAnalysis<RTExcWindLevelConfig, PollutedClue>>() + + fun initTask() { + taskList.clear() + taskList.apply { + add(RTExcWindLevel1(config) { exceptionCallback(it) }.also { it.init() }) + add(RTExcWindLevel1_1(config) { exceptionCallback(it) }.also { it.init() }) + add(RTExcWindLevel4(config) { exceptionCallback(it) }.also { it.init() }) + add(RTExcWindLevel6(config) { exceptionCallback(it) }.also { it.init() }) + } + } + + /** + * 璁$畻鏂扮殑涓�鏉″疄鏃惰蛋鑸暟鎹� + */ + fun addOneData(data: BaseRealTimeData) { + // 璁$畻寮傚父 + taskList.forEach { it.onNextData(data) } + // 闄愬畾鏃堕棿鍐呮病鏈夋柊鏁版嵁浼犲叆锛屽垯缁撴潫褰撳墠鐨勮绠� + } + + /** + * 瓒呮椂澶勭悊锛岃緝闀挎椂闂存病鏈夋柊鏁版嵁杩涘叆锛岃繘琛屽垵濮嬪寲鎿嶄綔 + */ + private fun dealOnTimeout() { + val timer = Timer(true) + timer.schedule(object : TimerTask() { + override fun run() { + TODO("Not yet implemented") + } + }, 60 * 1000) + timer.cancel() + } + + // 鏁版嵁绐佸彉寮傚父鍥炶皟 + private fun exceptionCallback(ex: PollutedClue) { + // 婧簮姹℃煋婧愪俊鎭� + ex.searchScenes(sceneInfoRep) + clueList + // 骞挎挱姹℃煋婧簮寮傚父缁撴灉 + UnderwayWebSocketSender.broadcast(GsonUtils.gson.toJson(ex)) + } } \ No newline at end of file diff --git a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/RealTimeExceptionResult.kt b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/RealTimeExceptionResult.kt index e9d93e5..48e8f8b 100644 --- a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/RealTimeExceptionResult.kt +++ b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/RealTimeExceptionResult.kt @@ -18,6 +18,7 @@ * @date 2025/5/13 * @author feiyu02 */ +@Deprecated("2025.5.29, 閫昏緫涓庝笟鍔′笉鍖归厤锛屽悗缁垹闄�") class RealTimeExceptionResult() : BaseExceptionResult() { var deviceCode: String? = null -- Gitblit v1.9.3