From 94fee0b511279679b43e210878d3d36e5a14384b Mon Sep 17 00:00:00 2001 From: feiyu02 <risaku@163.com> Date: 星期二, 30 九月 2025 09:14:10 +0800 Subject: [PATCH] 2025.9.30 1. 新增走航任务统计功能 --- src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/DataAnalysisServiceImpl.kt | 70 ++++++++++++++++++++++++++++++++--- 1 files changed, 64 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/DataAnalysisServiceImpl.kt b/src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/DataAnalysisServiceImpl.kt index 0dcbb4a..abdba09 100644 --- a/src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/DataAnalysisServiceImpl.kt +++ b/src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/DataAnalysisServiceImpl.kt @@ -108,6 +108,13 @@ return summary } + override fun generateMissionSummary(missionCode: String): MissionSummary.Summary { + val mission = missionRep.findOne(missionCode) ?: throw BizException("璧拌埅浠诲姟涓嶅瓨鍦�") + val clues = sourceTraceRep.fetchList(mission.deviceCode, mission.startTime, mission.endTime, MsgType.PolClue) as List<PollutedClue?> + val summary = MissionSummary().execute(mission.startTime, mission.endTime, listOf(mission), clues) + return summary + } + /** * 鐢熸垚璧拌埅浠诲姟娓呭崟锛堟寜鏃堕棿鍜屽尯鍩熺瓫閫夛級 * 鏍规嵁鏃堕棿鑼冨洿鍜岃鏀垮尯鍒掓煡璇㈣蛋鑸换鍔★紝骞跺叧鑱旀薄鏌撶嚎绱㈡暟鎹敓鎴愪换鍔″垪琛� @@ -119,10 +126,25 @@ * @see generateMissionList 閲嶈浇鏂规硶锛屽鐞嗗凡鍏宠仈鐨勬暟鎹 */ override fun generateMissionList(startTime: Date, endTime: Date, areaVo: AreaVo): List<MissionInventory.MissionInfo> { - val missionClues = missionRep.findByAreaAndTime(areaVo, startTime, endTime).filterNotNull().map { - it to sourceTraceRep.fetchList(it.deviceCode, it.startTime, it.endTime, MsgType.PolClue) as List<PollutedClue?> +// val missionClues = missionRep.findByAreaAndTime(areaVo, startTime, endTime).filterNotNull().map { +// it to sourceTraceRep.fetchList(it.deviceCode, it.startTime, it.endTime, MsgType.PolClue) as List<PollutedClue?> +// } +// return generateMissionList(missionClues) + val missionCluesData = missionRep.findByAreaAndTime(areaVo, startTime, endTime).filterNotNull().map { + Triple( + it, + sourceTraceRep.fetchList(it.deviceCode, it.startTime, it.endTime, MsgType.PolClue) as List<PollutedClue?>, + realTimeDataRep.fetchData(it) + ) } - return generateMissionList(missionClues) + val keyScenes = sceneInfoRep.findBySceneTypes( + listOf( + SceneType.TYPE19.value, + SceneType.TYPE20.value, + SceneType.TYPE21.value + ) + ) + return generateMissionInfo(keyScenes, missionCluesData) } /** @@ -134,6 +156,15 @@ */ override fun generateMissionList(missionClues: List<Pair<Mission, List<PollutedClue?>>>): List<MissionInventory.MissionInfo> { return MissionInventory().generateMissionList(missionClues) + } + + override fun generateMissionInfo( + keyScenes: List<SceneInfo?>, + missionCluesData: List<Triple<Mission, List<PollutedClue?>, List<BaseRealTimeData>>>, + ): List<MissionInventory.MissionInfo> { + return missionCluesData.map { + MissionInventory().generateMissionInfo(keyScenes, it.first, it.second, it.third) + } } /** @@ -162,6 +193,20 @@ ) ) return generateMissionDetail(keyScenes, missionCluesData) + } + + override fun generateMissionDetail(missionCode: String): MissionInventory.MissionDetail { + val mission = missionRep.findOne(missionCode) ?: throw BizException("浠诲姟涓嶅瓨鍦�") + val missionClues = sourceTraceRep.fetchList(mission.deviceCode, mission.startTime, mission.endTime, MsgType.PolClue) as List<PollutedClue?> + val realTimeData = realTimeDataRep.fetchData(mission) + val keyScenes = sceneInfoRep.findBySceneTypes( + listOf( + SceneType.TYPE19.value, + SceneType.TYPE20.value, + SceneType.TYPE21.value + ) + ) + return MissionInventory().generateMissionDetail(keyScenes, mission, missionClues, realTimeData) } /** @@ -200,6 +245,19 @@ ) ) return generateClueByRiskArea(keyScenes, clues) + } + + override fun generateClueByRiskArea(missionCode: String): List<MissionRiskArea.ClueByArea> { + val mission = missionRep.findOne(missionCode) ?: throw BizException("浠诲姟涓嶅瓨鍦�") + val pollutedClues = sourceTraceRep.fetchList(mission.deviceCode, mission.startTime, mission.endTime, MsgType.PolClue) as List<PollutedClue?> + val keyScenes = sceneInfoRep.findBySceneTypes( + listOf( + SceneType.TYPE19.value, + SceneType.TYPE20.value, + SceneType.TYPE21.value + ) + ) + return generateClueByRiskArea(keyScenes, pollutedClues) } override fun generateClueByRiskArea( @@ -256,9 +314,9 @@ SceneType.TYPE21.value ) ) - val missionDetails = generateMissionDetail(keyScenes, missionCluesData) + val missionInfos = generateMissionInfo(keyScenes, missionCluesData) - return@mapNotNull Triple(degree, missionDetails, gridDataDetailMixVos) + return@mapNotNull Triple(degree, missionInfos, gridDataDetailMixVos) }.filter { it.second.isNotEmpty() } return generateGridFusion(factorTypes, gridLen, gridCells, gridDataDetailList) @@ -268,7 +326,7 @@ factorTypes: List<FactorType>, gridLen: Int, gridCells: List<GridCell>, - dataList: List<Triple<PollutionDegree, List<MissionInventory.MissionDetail>, List<GridDataDetailMixVo>>>, + dataList: List<Triple<PollutionDegree, List<MissionInventory.MissionInfo>, List<GridDataDetailMixVo>>>, ): List<MissionGridFusion.GridFusionByAQI> { return MissionGridFusion(sceneInfoRep).generateGridFusion(factorTypes, gridLen, gridCells, dataList) } -- Gitblit v1.9.3