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/socket/processor/UnderwayProcessor.kt | 58 ++++++++++++++++++++++++++++++++++++++++------------------
1 files changed, 40 insertions(+), 18 deletions(-)
diff --git a/src/main/kotlin/com/flightfeather/uav/socket/processor/UnderwayProcessor.kt b/src/main/kotlin/com/flightfeather/uav/socket/processor/UnderwayProcessor.kt
index 7df1965..8d7f42f 100644
--- a/src/main/kotlin/com/flightfeather/uav/socket/processor/UnderwayProcessor.kt
+++ b/src/main/kotlin/com/flightfeather/uav/socket/processor/UnderwayProcessor.kt
@@ -1,17 +1,20 @@
package com.flightfeather.uav.socket.processor
-import com.flightfeather.uav.repository.AirDataRepository
+import com.flightfeather.uav.biz.sourcetrace.SourceTraceController
+import com.flightfeather.uav.domain.entity.BaseRealTimeData
+import com.flightfeather.uav.model.epw.EPWDataPrep
+import com.flightfeather.uav.domain.repository.AirDataRep
+import com.flightfeather.uav.domain.repository.SceneInfoRep
+import com.flightfeather.uav.domain.repository.SourceTraceRep
import com.flightfeather.uav.socket.bean.AirDataPackage
import com.flightfeather.uav.socket.decoder.AirDataDecoder
import com.flightfeather.uav.socket.decoder.DataPackageDecoder
import com.flightfeather.uav.socket.eunm.AirCommandUnit
import com.flightfeather.uav.socket.eunm.UWDeviceType
import io.netty.channel.ChannelHandlerContext
-import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Component
import java.text.SimpleDateFormat
import java.util.*
-import javax.annotation.PostConstruct
/**
* 澶勭悊socket鎺ユ敹鐨勬秷鎭�
@@ -20,24 +23,24 @@
*/
@Component
-class UnderwayProcessor : BaseProcessor() {
+class UnderwayProcessor(
+ private val airDataRep: AirDataRep,
+ private val sceneInfoRep: SceneInfoRep,
+ private val sourceTraceRep: SourceTraceRep
+) : BaseProcessor() {
companion object {
- private lateinit var instance: UnderwayProcessor
-
private const val TAG = "UAV"
}
- @Autowired
- lateinit var airDataRepository: AirDataRepository
+ private val airDataDecoder = AirDataDecoder.instance
+ private val dataPackageDecoder = DataPackageDecoder()
- val airDataDecoder = AirDataDecoder.instance
- val dataPackageDecoder = DataPackageDecoder()
+ // 鏁版嵁棰勫鐞嗗嚱鏁�
+ private val dataProcessMap = mutableMapOf<String?, EPWDataPrep>()
- @PostConstruct
- fun init() {
- instance = this
- }
+ // 瀹炴椂璧拌埅姹℃煋婧簮澶勭悊鍣�
+ private val sourceTraceMap = mutableMapOf<String?, SourceTraceController>()
override var tag: String = "璧拌埅鐩戞祴"
@@ -49,7 +52,15 @@
//淇濆瓨
deviceSession.saveDevice(packageData.deviceCode, ctx)
saveToTxt(msg)
- saveToDataBase(packageData)
+ saveToDataBase(packageData)?.takeIf { it.isNotEmpty() }?.get(0)?.let {
+ // 姣忓彴璁惧鏈夊悇鑷崟鐙殑寮傚父鏁版嵁澶勭悊鍣�
+ if (!sourceTraceMap.containsKey(it.deviceCode)) {
+ sourceTraceMap[it.deviceCode] = SourceTraceController(sceneInfoRep, sourceTraceRep)
+ }
+ // 灏嗚蛋鑸暟鎹紶鍏ュ紓甯稿鐞嗗櫒
+ sourceTraceMap[it.deviceCode]?.addOneData(it)
+ }
+
} else {
println("------${TAG}鏁版嵁BCC鏍¢獙澶辫触锛岃垗寮� [${SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Date())}]")
}
@@ -58,12 +69,23 @@
/**
* 淇濆瓨鑷虫暟鎹簱
*/
- fun saveToDataBase(dataPackage: AirDataPackage) {
+ fun saveToDataBase(dataPackage: AirDataPackage): List<BaseRealTimeData>? {
when (dataPackage.commandUnit) {
AirCommandUnit.AirData.value -> {
// 浠son鏍煎紡瀛樺偍鍘熷鏁版嵁
- instance.airDataRepository.saveAirData(dataPackage)
+ airDataRep.saveAirData(dataPackage)
+ // 杩涜棰勫鐞嗗悗锛屽瓨鍌ㄨ嚦瀵瑰簲鏁版嵁琛�
+ if (!dataProcessMap.containsKey(dataPackage.deviceCode)) {
+ // 姣忓彴璁惧鏈夊崟鐙殑鏁版嵁棰勫鐞嗗璞�
+ dataProcessMap[dataPackage.deviceCode] = EPWDataPrep(UWDeviceType.getType(dataPackage.deviceCode))
+ }
+ return dataProcessMap[dataPackage.deviceCode]?.run {
+ val list = this.mDataPrep2(dataPackage)// 鏁版嵁骞虫粦澶勭悊
+ airDataRep.savePrepData2(list)// 鎸夌収璁惧绫诲瀷瀛樺偍鑷冲搴旀暟鎹〃
+ }
}
+
+ else -> return emptyList()
}
}
@@ -95,7 +117,7 @@
fun encodeToBytes(msg: String): ByteArray {
val list = msg.split(" ")
val bytes = ByteArray(list.size)
- for (i in 0 until list.size) {
+ for (i in list.indices) {
bytes[i] = list[i].toInt(16).toByte()
}
--
Gitblit v1.9.3