From 538ba7a3bbc682f4537f1dd34f93feb2cf56b08e Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期二, 14 十月 2025 17:32:04 +0800
Subject: [PATCH] 2025.10.14 1. 新增数据统计颗粒度选项,可选秒级数据、分钟数据进行数据统计 2. 典型隐患区域统计新增按照污染溯源区域进行分类统计的功能

---
 src/main/kotlin/com/flightfeather/uav/biz/report/MissionSummary.kt |   25 ++++++++++++++++++-------
 1 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/src/main/kotlin/com/flightfeather/uav/biz/report/MissionSummary.kt b/src/main/kotlin/com/flightfeather/uav/biz/report/MissionSummary.kt
index ff1ab18..28101c9 100644
--- a/src/main/kotlin/com/flightfeather/uav/biz/report/MissionSummary.kt
+++ b/src/main/kotlin/com/flightfeather/uav/biz/report/MissionSummary.kt
@@ -106,7 +106,7 @@
         val probByFactor = clueRes.third
 
         // 7. 浠庡紓甯告墍鍦ㄥ湴鍖哄拰婧簮鐨勫満鏅腑缁熻鑱氱劍鍖哄煙
-        val focusRegion = calFocusRegion(clues)
+        val focusRegion = calFocusRegion(clues, area)
 
         // 8. 鏋勫缓骞惰繑鍥炵粺璁$粨鏋�
         return Summary(
@@ -141,17 +141,17 @@
             }
         }
         val probByFactor = probByFactorMap.entries.map {
-            val per = if(probCount == 0) .0 else round(it.value.toDouble() / probCount * 100) / 100
+            val per = if (probCount == 0) .0 else round(it.value.toDouble() / probCount * 100) / 100
             Triple(it.key.des, it.value, per)
         }
         return Triple(probCount, highRiskSceneCount, probByFactor)
     }
 
-    private fun calFocusRegion(clues: List<PollutedClue?>): List<String> {
+    private fun calFocusRegion(clues: List<PollutedClue?>, area: AreaVo): List<String> {
         // 缁熻姣忎釜鍖哄煙鎴栧満鏅嚭鐜扮殑娆℃暟
         val focusArea = mutableMapOf<String, Int>()
         val focusScene = mutableMapOf<String, Int>()
-        clues.forEach { c->
+        clues.forEach { c ->
             if (c?.msgType == MsgType.PolClue.value) {
                 if (!c.pollutedArea?.address.isNullOrBlank()) {
                     if (focusArea.containsKey(c.pollutedArea?.address)) {
@@ -160,7 +160,7 @@
                         focusArea[c.pollutedArea?.address!!] = 1
                     }
                 }
-                c.pollutedSource?.sceneList?.forEach { s->
+                c.pollutedSource?.sceneList?.forEach { s ->
                     if (s.name != null) {
                         if (focusScene.containsKey(s.name!!)) {
                             focusScene[s.name!!] = focusScene[s.name!!]!! + 1
@@ -171,7 +171,18 @@
                 }
             }
         }
-        return focusArea.entries.sortedByDescending { it.value }.map { it.key }.take(FOCUS_AREA_COUNT) +
-                focusScene.entries.sortedByDescending { it.value }.map { it.key }.take(FOCUS_AREA_COUNT)
+        return focusArea.entries.sortedByDescending { it.value }
+            .filter {
+                // 浠呯粺璁″寘鍚尯鍘垮悕绉扮殑鍖哄煙
+                area.districtName ?: return@filter true
+                return@filter it.key.contains(area.districtName!!)
+            }
+            .map { it.key }.take(FOCUS_AREA_COUNT) +
+                focusScene.entries.sortedByDescending { it.value }
+                    .filter {
+                        // 浠呯粺璁″寘鍚尯鍘垮悕绉扮殑鍖哄煙
+                        area.districtName ?: return@filter true
+                        return@filter it.key.contains(area.districtName!!)
+                    }.map { it.key }.take(FOCUS_AREA_COUNT)
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3