From e58a05b78d09bcd4c1a12e8610c5adfc316494e8 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期四, 18 十二月 2025 10:04:42 +0800
Subject: [PATCH] 2025.12.18
---
src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedData.kt | 123 ++++++++++++++++++++--------------------
1 files changed, 61 insertions(+), 62 deletions(-)
diff --git a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedData.kt b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedData.kt
index e38d254..577b38b 100644
--- a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedData.kt
+++ b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedData.kt
@@ -17,19 +17,27 @@
*/
class PollutedData() {
- /**
- * 9. 鍏宠仈鍥犲瓙
- * a) pm2.5銆乸m10鐗瑰埆楂橈紝涓よ�呭湪鍚勬儏鍐典笅鍚屾灞曠ず锛宲m2.5鍗爌m10鐨勬瘮閲嶅彉鍖栵紝姣旈噸瓒婇珮锛岃秺鏈夊彲鑳芥槸椁愰ギ
- * b) pm10鐗瑰埆楂樸�乸m2.5杈冮珮锛屽ぇ棰楃矑鎵皹姹℃煋锛屽彧灞曠ずpm10锛宲m2.5鍗爌m10鐨勬瘮閲嶅彉鍖栵紝宸ュ湴涓轰富
- * c) VOC杈冮珮锛屽悓姣旇绠梡m2.5鐨勯噺绾э紝鍙兘瀛樺湪鍚屾鍋忛珮锛堟苯淇�佸姞娌圭珯锛�, 鍚屾璁$畻O3鏄惁鏈夐珮鍊�
- * d) VOC杈冮珮锛屽浜庡姞娌圭珯锛堣溅杈嗘嫢鍫垫儏鍐碉級锛孋O涓�鑸緝楂�, 鍚屾璁$畻O3鏄惁鏈夐珮鍊�
- * e) 姘哀鍖栧悎鐗╋紝涓�鑸敱浜庢満鍔ㄨ溅灏炬皵锛屽悓姝ヨ绠桟O
- */
+ inner class Statistic(){
+ var factorId: Int? = null
+ var factorName: String? = null
+ var subFactorId: List<Int>? = null
+ var subFactorName: List<String>? = null
+ var selectedFactor: FactorFilter.SelectedFactor? = null
+
+ // 鍥犲瓙閲忕骇骞冲潎鍙樺寲骞呭害
+ var avgPer: Double? = null
+ // 鍥犲瓙閲忕骇骞冲潎鍙樺寲閫熺巼
+ var avgRate: Double? = null
+
+ var avg: Double? = null
+ var min: Double? = null
+ var max: Double? = null
+ }
constructor(
start: BaseRealTimeData,
end: BaseRealTimeData?,
- factor: FactorFilter.SelectedFactor,
+ factorList: List<FactorFilter.SelectedFactor>,
exceptionData: List<BaseRealTimeData>,
historyData: List<BaseRealTimeData>,
eType: ExceptionType,
@@ -37,21 +45,15 @@
) : this() {
exception = eType.des
exceptionType = eType.value
- factorId = factor.main.value
- factorName = factor.main.des
- subFactorId = factor.subs.map { it.value }
- subFactorName = factor.subs.map { it.des }
- selectedFactor = factor
startTime = start.dataTime
endTime = end?.dataTime
// startData = start.getByFactorType(factor.main)
// endData = end?.getByFactorType(factor.main) ?: startData
- startData = start
- endData = end
+// startData = start
+// endData = end
windSpeed = exceptionData.first().windSpeed?.toDouble()
- percentage = windLevelCondition?.mutationRate?.first
times = windLevelCondition?.countLimit
dataList.add(start)
@@ -61,13 +63,24 @@
dataVoList.addAll(dataList.map { it.toDataVo() })
historyDataList.addAll(historyData.map { it.toDataVo() })
- calPer()
- calRate()
- val s = dataSummary(exceptionData, factor.main)
- avg = s.first
- min = s.second
- max = s.third
+ factorList.forEach { f->
+ statisticMap[f.main] = Statistic().apply {
+ factorId = f.main.value
+ factorName = f.main.des
+ subFactorId = f.subs.map { it.value }
+ subFactorName = f.subs.map { it.des }
+ selectedFactor = f
+
+ avgPer = calPer(f.main)
+ avgRate = calRate(f.main)
+
+ val s = dataSummary(dataList, f.main)
+ avg = s.first
+ min = s.second
+ max = s.third
+ }
+ }
}
var deviceCode: String? = null
@@ -75,68 +88,54 @@
var exception: String? = null
var exceptionType: Int? = null
- var factorId: Int? = null
- var factorName: String? = null
- var subFactorId: List<Int>? = null
- var subFactorName: List<String>? = null
- var selectedFactor: FactorFilter.SelectedFactor? = null
-
var startTime: Date? = null
var endTime: Date? = null
- var startData: BaseRealTimeData? = null
- var endData: BaseRealTimeData? = null
+// var startData: BaseRealTimeData? = null
+// var endData: BaseRealTimeData? = null
// 椋庨��
var windSpeed: Double? = null
-
- // 鍥犲瓙閲忕骇鍙樺寲骞呭害
- var percentage: Double? = null
- // 鍥犲瓙閲忕骇骞冲潎鍙樺寲骞呭害
- var avgPer: Double? = null
- // 鍥犲瓙閲忕骇骞冲潎鍙樺寲閫熺巼
- var avgRate: Double? = null
-
- var avg: Double? = null
- var min: Double? = null
- var max: Double? = null
// 鍙戠敓娆℃暟
var times: Int? = null
var historyDataList = mutableListOf<DataVo>()
- // 寮傚父鐩戞祴鏁版嵁
+ // 寮傚父鐩戞祴鏁版嵁锛屽寘鍚崟娆″紓甯镐腑鎵�鏈夊彂鐢熶簡寮傚父鐨勬暟鎹�硷紙鍙兘涓嶆槸鏃堕棿杩炵画鐨勬暟鎹級
var dataList: MutableList<BaseRealTimeData> = mutableListOf()
var dataVoList: MutableList<DataVo> = mutableListOf()
- private fun calPer() {
- val list = dataList
-// list.add(startData)
-// list.addAll(dataList)
- if (list.size < 2) return
+ var statisticMap = mutableMapOf<FactorType, Statistic>()
- var total = .0
- for (i in 0 until list.size - 1) {
- val p = list[i]?.getByFactorType(selectedFactor!!.main)!!
- val n = list[i + 1]?.getByFactorType(selectedFactor!!.main)!!
- total += (n - p) / p
- }
- avgPer = total / (list.size - 1)
+ fun toFactorNames(): String {
+ val factors = statisticMap.entries.map { it.key }.sortedBy { it.value }.joinToString(";") { it.des }
+ return factors
}
- private fun calRate() {
+ private fun calPer(factorType: FactorType): Double? {
val list = dataList
-// list.add(startData)
-// list.addAll(dataList)
- if (list.size < 2) return
+ if (list.size < 2) return null
var total = .0
for (i in 0 until list.size - 1) {
- val p = list[i]?.getByFactorType(selectedFactor!!.main)!!
- val n = list[i + 1]?.getByFactorType(selectedFactor!!.main)!!
+ val p = list[i].getByFactorType(factorType) ?: .0f
+ val n = list[i + 1].getByFactorType(factorType) ?: .0f
+ total += (n - p) / p
+ }
+ return total / (list.size - 1)
+ }
+
+ private fun calRate(factorType: FactorType): Double? {
+ val list = dataList
+ if (list.size < 2) return null
+
+ var total = .0
+ for (i in 0 until list.size - 1) {
+ val p = list[i].getByFactorType(factorType) ?: .0f
+ val n = list[i + 1].getByFactorType(factorType) ?: .0f
total += (n - p) / 4
}
- avgRate = total / (list.size - 1)
+ return total / (list.size - 1)
}
private fun dataSummary(exceptionData: List<BaseRealTimeData?>, factorType: FactorType): Triple<Double, Double,
--
Gitblit v1.9.3