From 4a976d3763be8a7bed743faf24abf2718ae18e31 Mon Sep 17 00:00:00 2001 From: feiyu02 <risaku@163.com> Date: 星期三, 15 十月 2025 17:34:14 +0800 Subject: [PATCH] 2025.10.15 1. 走航季度报告相关数据计算逻辑调整 --- src/main/kotlin/com/flightfeather/uav/lightshare/service/impl/DataAnalysisServiceImpl.kt | 76 +++++++++++++++++++++++++++---------- 1 files changed, 55 insertions(+), 21 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 abdba09..31c44cd 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 @@ -23,7 +23,6 @@ import com.flightfeather.uav.socket.eunm.FactorType import com.flightfeather.uav.socket.sender.MsgType import org.springframework.stereotype.Service -import tk.mybatis.mapper.entity.Example import java.util.* /** @@ -43,7 +42,7 @@ private val sourceTraceRep: SourceTraceRep, private val sceneInfoRep: SceneInfoRep, private val satelliteGridRep: SatelliteGridRep, - private val satelliteDataCalculateService: SatelliteDataCalculateService + private val satelliteDataCalculateService: SatelliteDataCalculateService, ) : DataAnalysisService { /** @@ -110,7 +109,12 @@ 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 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 } @@ -173,11 +177,17 @@ * @param startTime 鏌ヨ璧峰鏃堕棿锛堝寘鍚級 * @param endTime 鏌ヨ缁撴潫鏃堕棿锛堝寘鍚級 * @param areaVo 鍖哄煙鍙傛暟锛屽寘鍚渷銆佸競銆佸尯缂栫爜 + * @param granularity 鏁版嵁棰楃矑搴︼紝鍙�夊�间负SECOND, MINUTE, HOUR, 榛樿MINUTE * @return 浠诲姟璇︽儏鍒楄〃锛屾瘡涓厓绱犲寘鍚换鍔″畬鏁翠俊鎭�佹薄鏌撶嚎绱㈠強瀹炴椂鐩戞祴鏁版嵁 * @see MissionRep.findByAreaAndTime 鍖哄煙鏃堕棿绛涢�夋暟鎹簮 * @see realTimeDataRep.fetchData 瀹炴椂鏁版嵁鑾峰彇鎺ュ彛 */ - override fun generateMissionDetail(startTime: Date, endTime: Date, areaVo: AreaVo): List<MissionInventory.MissionDetail> { + override fun generateMissionDetail( + startTime: Date, + endTime: Date, + areaVo: AreaVo, + granularity: String?, + ): List<MissionInventory.MissionDetail> { val missionCluesData = missionRep.findByAreaAndTime(areaVo, startTime, endTime).filterNotNull().map { Triple( it, @@ -192,12 +202,17 @@ SceneType.TYPE21.value ) ) - return generateMissionDetail(keyScenes, missionCluesData) + return generateMissionDetail(keyScenes, missionCluesData, granularity ?: "MINUTE") } - override fun generateMissionDetail(missionCode: String): MissionInventory.MissionDetail { + override fun generateMissionDetail(missionCode: String, granularity: 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 missionClues = sourceTraceRep.fetchList( + mission.deviceCode, + mission.startTime, + mission.endTime, + MsgType.PolClue + ) as List<PollutedClue?> val realTimeData = realTimeDataRep.fetchData(mission) val keyScenes = sceneInfoRep.findBySceneTypes( listOf( @@ -206,7 +221,7 @@ SceneType.TYPE21.value ) ) - return MissionInventory().generateMissionDetail(keyScenes, mission, missionClues, realTimeData) + return MissionInventory().generateMissionDetail(keyScenes, mission, missionClues, realTimeData, granularity ?: "MINUTE") } /** @@ -220,9 +235,10 @@ override fun generateMissionDetail( keyScenes: List<SceneInfo?>, missionCluesData: List<Triple<Mission, List<PollutedClue?>, List<BaseRealTimeData>>>, + granularity: String, ): List<MissionInventory.MissionDetail> { return missionCluesData.map { - MissionInventory().generateMissionDetail(keyScenes, it.first, it.second, it.third) + MissionInventory().generateMissionDetail(keyScenes, it.first, it.second, it.third, granularity) } } @@ -230,6 +246,8 @@ startTime: Date, endTime: Date, areaVo: AreaVo, + removeOtherDistrict: Boolean, + removeNoPollutedSource: Boolean, ): List<MissionRiskArea.ClueByArea> { val clues = mutableListOf<PollutedClue?>() missionRep.findByAreaAndTime(areaVo, startTime, endTime).onEach { @@ -237,19 +255,34 @@ val clue = sourceTraceRep.fetchList(it.deviceCode, it.startTime, it.endTime, MsgType.PolClue) as List<PollutedClue?> clues.addAll(clue) } - val keyScenes = sceneInfoRep.findBySceneTypes( - listOf( - SceneType.TYPE19.value, - SceneType.TYPE20.value, - SceneType.TYPE21.value - ) - ) - return generateClueByRiskArea(keyScenes, clues) + if (removeOtherDistrict) { + clues.removeIf { + !areaVo.districtName.isNullOrBlank() && + (it?.pollutedArea?.address.isNullOrBlank() + || !it!!.pollutedArea!!.address!!.contains(areaVo.districtName!!)) + } + } + if (removeNoPollutedSource) { + clues.removeIf { it?.pollutedSource?.sceneList.isNullOrEmpty() } + } +// val keyScenes = sceneInfoRep.findBySceneTypes( +// listOf( +// SceneType.TYPE19.value, +// SceneType.TYPE20.value, +// SceneType.TYPE21.value +// ) +// ) + return MissionRiskArea().generateClueByRiskArea(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 pollutedClues = sourceTraceRep.fetchList( + mission.deviceCode, + mission.startTime, + mission.endTime, + MsgType.PolClue + ) as List<PollutedClue?> val keyScenes = sceneInfoRep.findBySceneTypes( listOf( SceneType.TYPE19.value, @@ -264,7 +297,7 @@ keyScenes: List<SceneInfo?>, pollutedClues: List<PollutedClue?>, ): List<MissionRiskArea.ClueByArea> { - return MissionRiskArea().generateClueByRiskArea(keyScenes, pollutedClues) + return MissionRiskArea().generateClueByKeyRiskScene(keyScenes, pollutedClues) } override fun generateGridFusion( @@ -291,8 +324,9 @@ val gridDataDetailList = missionGroups.mapNotNull { (degree, missionList) -> // 绛涢�夊嚭鏈夌綉鏍艰瀺鍚堟暟鎹殑璧拌埅浠诲姟(鍚屾椂鑾峰彇瀵瑰簲鐨勮瀺鍚堟暟鎹甶d鍒楄〃) val gridDataIds = mutableListOf<Int>() - val validMissions = missionList.filter {mission -> - val gridData = satelliteGridRep.fetchGridData(GridData().apply { missionCode = mission?.missionCode }).firstOrNull() + val validMissions = missionList.filter { mission -> + val gridData = + satelliteGridRep.fetchGridData(GridData().apply { missionCode = mission?.missionCode }).firstOrNull() val res = gridData != null if (res) gridDataIds.add(gridData?.id ?: 0) res -- Gitblit v1.9.3