From ddaa44400aa478058ffe9349d59904a130b7ce9c Mon Sep 17 00:00:00 2001 From: feiyu02 <risaku@163.com> Date: 星期四, 28 八月 2025 17:33:11 +0800 Subject: [PATCH] 2025.8.28 1. 新增走航任务统计功能(待完成) --- src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/SourceTraceController.kt | 53 +++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 43 insertions(+), 10 deletions(-) diff --git a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/SourceTraceController.kt b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/SourceTraceController.kt index b8c3e98..eb0f7eb 100644 --- a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/SourceTraceController.kt +++ b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/SourceTraceController.kt @@ -28,7 +28,12 @@ * 姣忎竴鍒婚挓瀵瑰巻鍙茬嚎绱㈣繘琛岀粺璁★紝鎻愬嚭浼氬晢寤鸿锛堢姹℃煋婧愯緝杩溿�佹薄鏌撴簮鏁伴噺銆佸嚭鐜版鏁帮級銆佽蛋鑸矾绾胯皟鏁村缓璁紙绂绘薄鏌撴簮杈冭繎銆佽蛋鑸建杩规湭鎺ヨ繎婧簮鍦烘櫙锛� */ - constructor(sceneInfoRep: SceneInfoRep, sourceTraceRep: SourceTraceRep, factorFilter: FactorFilter?) { + constructor( + sceneInfoRep: SceneInfoRep, + sourceTraceRep: SourceTraceRep, + factorFilter: FactorFilter?, + isSearchAddress: Boolean, + ) { this.sceneInfoRep = sceneInfoRep this.sourceTraceRep = sourceTraceRep this.config = if (factorFilter != null) { @@ -36,27 +41,40 @@ } else { RTExcWindLevelConfig( FactorFilter.builder() -// .withMain(FactorType.NO2) -// .withMain(FactorType.CO) + .withMain(FactorType.NO2) + .withMain(FactorType.CO) // .withMain(FactorType.H2S) // .withMain(FactorType.SO2) // .withMain(FactorType.O3) .withMain(FactorType.PM25) .withMain(FactorType.PM10) - .withMain(FactorType.VOC) +// .withMain(FactorType.VOC) + .withMain(FactorType.NO) + .withCombination( + listOf( + listOf(FactorType.PM25, FactorType.PM10), +// listOf(FactorType.VOC, FactorType.CO), + listOf(FactorType.NO, FactorType.NO2), + ) + ) .create() ) } + this.config.isSearchAddress = isSearchAddress + pollutedSummary = PollutedSummary(config) { summaryCallback(it) } newTask() } - constructor(sceneInfoRep: SceneInfoRep, sourceTraceRep: SourceTraceRep) : this(sceneInfoRep, sourceTraceRep, null) + constructor(sceneInfoRep: SceneInfoRep, sourceTraceRep: SourceTraceRep, isSearchAddress: Boolean = true) + : this(sceneInfoRep, sourceTraceRep, null, isSearchAddress) private val pollutedSummary: PollutedSummary private val sceneInfoRep: SceneInfoRep private val sourceTraceRep: SourceTraceRep private val config: RTExcWindLevelConfig + private val timer = Timer() + private var timerTask: TimerTask? = null private val taskList = mutableListOf<BaseExceptionAnalysis<RTExcWindLevelConfig, PollutedClue>>() @@ -68,6 +86,7 @@ private fun newTask() { taskList.apply { +// add(RTExcSlideAverage(config) { dataChangeCallback(it) }.also { it.init() }) 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() }) @@ -86,23 +105,37 @@ * 璁$畻鏂扮殑涓�鏉″疄鏃惰蛋鑸暟鎹� */ fun addOneData(data: BaseRealTimeData) { +// println("====================>") // 璁$畻寮傚父 taskList.forEach { it.onNextData(data) } pollutedSummary.refreshLatestMonitorData(data) // 闄愬畾鏃堕棿鍐呮病鏈夋柊鏁版嵁浼犲叆锛屽垯缁撴潫褰撳墠鐨勮绠� + dealOnTimeout() + } + + fun addDataList(dataList: List<BaseRealTimeData>) { + // 璁$畻寮傚父 + dataList.forEach { data -> + taskList.forEach { it.onNextData(data) } + pollutedSummary.refreshLatestMonitorData(data) + } + // 闄愬畾鏃堕棿鍐呮病鏈夋柊鏁版嵁浼犲叆锛屽垯缁撴潫褰撳墠鐨勮绠� + dealOnTimeout() } /** * 瓒呮椂澶勭悊锛岃緝闀挎椂闂存病鏈夋柊鏁版嵁杩涘叆锛岃繘琛屽垵濮嬪寲鎿嶄綔 */ private fun dealOnTimeout() { - val timer = Timer(true) - timer.schedule(object : TimerTask() { +// val timer = Timer() + timerTask?.cancel() + timer.purge() + timerTask = object : TimerTask() { override fun run() { - TODO("Not yet implemented") + initTask() } - }, 60 * 1000) - timer.cancel() + } + timer.schedule(timerTask, 2 * 60 * 60 * 1000) } // 鏁版嵁绐佸彉寮傚父鍥炶皟 -- Gitblit v1.9.3