From 00ec64bdf38a52b979f709de2e82e9994ed17749 Mon Sep 17 00:00:00 2001 From: Riku <risaku@163.com> Date: 星期日, 07 七月 2024 21:40:17 +0800 Subject: [PATCH] 1. 新增走航报告异常数据所经路段查询功能 --- src/main/kotlin/com/flightfeather/uav/biz/dataanalysis/ExceptionAnalysisController.kt | 63 ++++++++++++++++++++++++++++++- 1 files changed, 61 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/com/flightfeather/uav/biz/dataanalysis/ExceptionAnalysisController.kt b/src/main/kotlin/com/flightfeather/uav/biz/dataanalysis/ExceptionAnalysisController.kt index 45008af..f7d5760 100644 --- a/src/main/kotlin/com/flightfeather/uav/biz/dataanalysis/ExceptionAnalysisController.kt +++ b/src/main/kotlin/com/flightfeather/uav/biz/dataanalysis/ExceptionAnalysisController.kt @@ -2,13 +2,19 @@ import com.flightfeather.uav.biz.FactorFilter import com.flightfeather.uav.biz.dataanalysis.exceptiontype.ExceptionDataExceed +import com.flightfeather.uav.biz.dataanalysis.exceptiontype.ExceptionSlideAverage import com.flightfeather.uav.biz.dataanalysis.exceptiontype.ExceptionValueMutation import com.flightfeather.uav.biz.dataanalysis.model.DataAnalysisConfig import com.flightfeather.uav.biz.dataanalysis.model.ExceptionResult import com.flightfeather.uav.biz.dataanalysis.model.ExceptionSetting +import com.flightfeather.uav.common.location.LocationRoadNearby import com.flightfeather.uav.domain.entity.Mission import com.flightfeather.uav.domain.repository.RealTimeDataRep +import com.flightfeather.uav.domain.repository.SegmentInfoRep import org.springframework.stereotype.Component +import java.time.LocalDateTime +import java.time.ZoneId +import java.time.format.DateTimeFormatter /** * 鏁版嵁寮傚父鍒嗘瀽鎺у埗鍣� @@ -16,6 +22,8 @@ @Component class ExceptionAnalysisController( private val realTimeDataRep: RealTimeDataRep, + private val locationRoadNearby: LocationRoadNearby, + private val segmentInfoRep: SegmentInfoRep, ) { var running = false @@ -27,12 +35,13 @@ taskList.apply { add(ExceptionDataExceed(config)) add(ExceptionValueMutation(config)) + add(ExceptionSlideAverage(config)) } } fun run(mission: Mission, factorFilter: FactorFilter): List<ExceptionResult> { running = true - val config = DataAnalysisConfig(mission, ExceptionSetting(), 8, factorFilter) + val config = DataAnalysisConfig(mission, ExceptionSetting(), factorFilter) initTask(config) val result = mutableListOf<ExceptionResult>() @@ -43,11 +52,61 @@ } // 鍚勪釜寮傚父鍒嗘瀽鍒嗗埆缁撴潫 taskList.forEach { it.onDone() } - // 瀛樺偍鍒嗘瀽缁撴灉 + taskList.forEach { + it.resultList.forEach { r-> + // 鏌ヨ寮傚父鍛ㄨ竟鍙兘姹℃煋婧� + nearBy(r, config) + // 鏌ヨ鏃舵鎵�鍦ㄨ矾娈� + road(r) + } + // 瀛樺偍鍒嗘瀽缁撴灉 result.addAll(it.resultList) } running = false return result } + + private fun nearBy(r: ExceptionResult, config: DataAnalysisConfig) { + if (r.longitude != null && r.latitude != null) { + val sceneList = locationRoadNearby.searchByRadius( + r.longitude!!.toDouble() to r.latitude!!.toDouble(), config.radius) + if (sceneList.isNotEmpty()) { + val idList = mutableListOf<String>() + val nameList = mutableListOf<String>() + sceneList.forEach { s-> + idList.add(s?.guid?:"") + nameList.add(s?.name ?: "") + } + r.relatedSceneId = idList + r.relatedSceneName = nameList + } + } + } + + private fun road(r: ExceptionResult) { + val sT = LocalDateTime.ofInstant(r.startDate?.toInstant(), ZoneId.systemDefault()) + val eT = LocalDateTime.ofInstant(r.endDate?.toInstant(), ZoneId.systemDefault()) + val segments = segmentInfoRep.findPeriod(sT, eT) + var txt = "" + val size = segments.size + segments.forEachIndexed { i, s -> + txt += if (i == 0) { + if (size == 1) { + "鍦�${s?.street}" + } else { + "浠�${s?.street}" + } + } else if (i == size - 1 && i >= 2) { + "锛岃嚦${s?.street}" + } else { + if (i == 1) { + "锛岀粡${s?.street}" + } else { + "銆�${s?.street}" + } + } + } + r.road = txt + } } \ No newline at end of file -- Gitblit v1.9.3