| | |
| | | val probByFactor = clueRes.third |
| | | |
| | | // 7. 从异常所在地区和溯源的场景中统计聚焦区域 |
| | | val focusRegion = calFocusRegion(clues) |
| | | val focusRegion = calFocusRegion(clues, area) |
| | | |
| | | // 8. 构建并返回统计结果 |
| | | return Summary( |
| | |
| | | } |
| | | } |
| | | 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)) { |
| | |
| | | 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 |
| | |
| | | } |
| | | } |
| | | } |
| | | 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) |
| | | } |
| | | } |