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)
    }
}