From eb3dd00b0b7fcda477229d518d250f9c842b790b Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期二, 21 十月 2025 17:45:44 +0800
Subject: [PATCH] 2025.10.21 1. 走航季度报告相关数据计算逻辑调整
---
src/main/kotlin/com/flightfeather/uav/domain/entity/BaseRealTimeData.kt | 29 ++++++++++++++++++++++++++---
1 files changed, 26 insertions(+), 3 deletions(-)
diff --git a/src/main/kotlin/com/flightfeather/uav/domain/entity/BaseRealTimeData.kt b/src/main/kotlin/com/flightfeather/uav/domain/entity/BaseRealTimeData.kt
index 53989b5..1066c78 100644
--- a/src/main/kotlin/com/flightfeather/uav/domain/entity/BaseRealTimeData.kt
+++ b/src/main/kotlin/com/flightfeather/uav/domain/entity/BaseRealTimeData.kt
@@ -10,6 +10,7 @@
import java.math.BigDecimal
import java.time.LocalDateTime
import java.time.ZoneId
+import java.time.temporal.ChronoUnit
import java.util.*
import javax.persistence.Column
import javax.persistence.GeneratedValue
@@ -332,11 +333,33 @@
/**
* 璁$畻瀹炴椂鐩戞祴鏁版嵁鍒楄〃鐨勭粺璁′俊鎭�
* 涓烘瘡绉嶇幆澧冨洜瀛愯绠楁渶灏忓�笺�佹渶澶у�煎拰骞冲潎鍊�
- *
+ * @param granularity 鏁版嵁棰楃矑搴︼紝鍙�夊�间负SECOND, MINUTE, HOUR, 榛樿MINUTE
* @return 鍖呭惈鍚勭幆澧冨洜瀛愮粺璁′俊鎭殑FactorStatistics鍒楄〃
* 姣忎釜FactorStatistics瀵硅薄鍖呭惈鍥犲瓙绫诲瀷銆佹渶灏忓�笺�佹渶澶у�煎拰骞冲潎鍊�
*/
-fun List<BaseRealTimeData>.calDataStatistics(): List<FactorStatistics> {
+fun List<BaseRealTimeData>.calDataStatistics(granularity: String): List<FactorStatistics> {
+
+ // 妫�鏌ラ绮掑害鏄惁鏈夋晥
+ if (granularity !in listOf("SECOND", "MINUTE", "HOUR")) {
+ throw IllegalArgumentException("鏃犳晥鐨勯绮掑害鍙傛暟锛屽彲閫夊�间负SECOND, MINUTE, HOUR")
+ }
+
+ val groupedData = when (granularity) {
+ "SECOND" -> this
+ "MINUTE" -> groupBy { it.dataTime?.toInstant()?.truncatedTo(ChronoUnit.MINUTES) }.mapValues {
+ it.value.avg().apply {
+ dataTime = Date.from(it.key)
+ createTime = dataTime
+ }
+ }.values.toList()
+ "HOUR" -> groupBy { it.dataTime?.toInstant()?.truncatedTo(ChronoUnit.HOURS) }.mapValues {
+ it.value.avg().apply {
+ dataTime = Date.from(it.key)
+ createTime = dataTime
+ }
+ }.values.toList()
+ else -> throw IllegalArgumentException("鏃犳晥鐨勯绮掑害鍙傛暟锛屽彲閫夊�间负SECOND, MINUTE, HOUR")
+ }
// 鍒濆鍖栧悇鐜鍥犲瓙鐨勭粺璁″璞″垪琛�
val statistics = mutableListOf<FactorStatistics>()
@@ -357,7 +380,7 @@
).forEach { statistics.add(FactorStatistics(it)) }
// 璁$畻骞冲潎鍊煎苟鍚屾椂鏇存柊鍚勫洜瀛愮殑鏈�灏忓�煎拰鏈�澶у��
- val avgData = avg { item ->
+ val avgData = groupedData.avg { item ->
// 鏇存柊姣忎釜鍥犲瓙鐨勬渶灏忓拰鏈�澶у��
statistics[0].updateMinAndMaxValue(item.no2)
statistics[1].updateMinAndMaxValue(item.co)
--
Gitblit v1.9.3