From 344d9006faa27ea65e3eaf5e8f9173aad2266038 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期三, 23 七月 2025 17:23:53 +0800
Subject: [PATCH] 2025.7.23 1. 动态溯源模块完成,发布
---
src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedClue.kt | 89 +++++++++++++++++++++++++++++++++++---------
1 files changed, 70 insertions(+), 19 deletions(-)
diff --git a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedClue.kt b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedClue.kt
index 53fbd07..19eedc2 100644
--- a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedClue.kt
+++ b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedClue.kt
@@ -10,6 +10,7 @@
import com.flightfeather.uav.domain.entity.BaseRealTimeData
import com.flightfeather.uav.domain.entity.SceneInfo
import com.flightfeather.uav.domain.repository.SceneInfoRep
+import com.flightfeather.uav.socket.sender.MsgType
/**
* 姹℃煋绾跨储
@@ -20,39 +21,89 @@
class PollutedClue() : BaseExceptionResult() {
// constructor(
-// start: BaseRealTimeData,
-// end: BaseRealTimeData?,
-// factor: FactorFilter.SelectedFactor,
-// exceptionData: List<BaseRealTimeData>,
-// eType: ExceptionType,
-// config: RTExcWindLevelConfig,
+// tag: ExceptionTag, factor: FactorFilter.SelectedFactor, eType: ExceptionType, config: RTExcWindLevelConfig,
// windLevelCondition: RTExcWindLevelConfig.WindLevelCondition?,
// ) : this() {
-// if (exceptionData.isEmpty()) return
-// pollutedData = PollutedData(start, end, factor, exceptionData, eType, windLevelCondition)
-// pollutedArea = PollutedArea(exceptionData, config, windLevelCondition)
+// if (tag.exceptionData.isEmpty()) return
+// deviceCode = tag.startData?.deviceCode
+// pollutedData = PollutedData(
+// tag.startData!!, tag.endData, factor, tag.exceptionData, tag.historyData, eType, windLevelCondition
+// )
+// pollutedArea = PollutedArea(tag.historyData, tag.exceptionData, config, windLevelCondition)
// }
constructor(
- tag: ExceptionTag, factor: FactorFilter.SelectedFactor, eType: ExceptionType, config: RTExcWindLevelConfig,
+ exceptions: List<Pair<FactorFilter.SelectedFactor, ExceptionTag>>,
+ eType: ExceptionType,
+ config: RTExcWindLevelConfig,
windLevelCondition: RTExcWindLevelConfig.WindLevelCondition?,
- ) :this()
-// this(
-// tag.startData!!, tag.endData, factor, tag.exceptionData, eType, config,
-// windLevelCondition
-// )
- {
- if (tag.exceptionData.isEmpty()) return
+ ) : this() {
+ if (exceptions.isEmpty() || exceptions[0].second.exceptionData.isEmpty()) return
+ deviceCode = exceptions[0].second.startData?.deviceCode
+ var startData: BaseRealTimeData? = null
+ var endData: BaseRealTimeData? = null
+ var exceptionData = mutableListOf<BaseRealTimeData>()
+ var historyData = mutableListOf<BaseRealTimeData>()
+ exceptions.forEach { e ->
+ if (startData == null) {
+ startData = e.second.startData
+ } else {
+ if (e.second.startData?.dataTime!! < startData!!.dataTime) {
+ startData = e.second.startData
+ }
+ }
+
+ if (endData == null) {
+ endData = e.second.endData
+ } else {
+ if (e.second.endData?.dataTime!! > endData!!.dataTime) {
+ endData = e.second.endData
+ }
+ }
+
+ if (exceptionData.isEmpty()) {
+ exceptionData = e.second.exceptionData
+ } else {
+ e.second.exceptionData.forEach {
+ if (exceptionData.find { d -> d.dataTime == it.dataTime } == null) {
+ exceptionData.add(it)
+ }
+ }
+ }
+
+ if (historyData.isEmpty()) {
+ historyData = e.second.historyData
+ } else {
+ e.second.historyData.forEach {
+ if (historyData.find { d -> d.dataTime == it.dataTime } == null) {
+ historyData.add(it)
+ }
+ }
+ }
+ }
+ exceptionData.sortBy { it.dataTime }
+ historyData.sortBy { it.dataTime }
+
+ val factorList = exceptions.map { it.first }
pollutedData = PollutedData(
- tag.startData!!, tag.endData, factor, tag.exceptionData, tag.historyData, eType, windLevelCondition
+ startData!!, endData, factorList, exceptionData, historyData, eType, windLevelCondition
)
- pollutedArea = PollutedArea(tag.historyData, tag.exceptionData, config, windLevelCondition)
+ pollutedArea = PollutedArea(historyData, exceptionData, config, windLevelCondition)
+
}
+
/**
* 6. 灞曠ず鏁版嵁鍙樺寲鎯呭喌锛屼笂鍗囬�熺巼绛夌瓑
*/
+ /**
+ * @see [MsgType]
+ */
+ var msgType: Int? = null
+
+ var deviceCode: String? = null
+
var pollutedData: PollutedData? = null
var pollutedArea: PollutedArea? = null
--
Gitblit v1.9.3