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 |   40 ++++++++++++++++++++++++++++++++++------
 1 files changed, 34 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 52efc03..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
@@ -42,7 +42,7 @@
     private val sourceTraceRep: SourceTraceRep,
     private val sceneInfoRep: SceneInfoRep,
     private val satelliteGridRep: SatelliteGridRep,
-    private val satelliteDataCalculateService: SatelliteDataCalculateService
+    private val satelliteDataCalculateService: SatelliteDataCalculateService,
 ) : DataAnalysisService {
 
     /**
@@ -109,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
     }
@@ -202,7 +207,12 @@
 
     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(
@@ -236,12 +246,24 @@
         startTime: Date,
         endTime: Date,
         areaVo: AreaVo,
+        removeOtherDistrict: Boolean,
+        removeNoPollutedSource: Boolean,
     ): List<MissionRiskArea.ClueByArea> {
         val clues = mutableListOf<PollutedClue?>()
         missionRep.findByAreaAndTime(areaVo, startTime, endTime).onEach {
             it ?: return@onEach
             val clue = sourceTraceRep.fetchList(it.deviceCode, it.startTime, it.endTime, MsgType.PolClue) as List<PollutedClue?>
             clues.addAll(clue)
+        }
+        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(
@@ -255,7 +277,12 @@
 
     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,
@@ -297,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