From e731486b50c4ea6e2d28f302df449b4bd0b2be57 Mon Sep 17 00:00:00 2001 From: Riku <risaku@163.com> Date: 星期一, 02 六月 2025 23:02:59 +0800 Subject: [PATCH] 1. 新增走航动态溯源功能 --- src/main/kotlin/com/flightfeather/uav/socket/processor/UnderwayProcessor.kt | 43 +++++++++++++++++++++++++------------------ 1 files changed, 25 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 201bfe4..7d8fd21 100644 --- a/src/main/kotlin/com/flightfeather/uav/socket/processor/UnderwayProcessor.kt +++ b/src/main/kotlin/com/flightfeather/uav/socket/processor/UnderwayProcessor.kt @@ -1,18 +1,19 @@ package com.flightfeather.uav.socket.processor +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.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鎺ユ敹鐨勬秷鎭� @@ -21,16 +22,14 @@ */ @Component -class UnderwayProcessor : BaseProcessor() { +class UnderwayProcessor( + private val airDataRep: AirDataRep, + private val sceneInfoRep: SceneInfoRep, +) : BaseProcessor() { companion object { - private lateinit var instance: UnderwayProcessor - private const val TAG = "UAV" } - - @Autowired - lateinit var airDataRep: AirDataRep private val airDataDecoder = AirDataDecoder.instance private val dataPackageDecoder = DataPackageDecoder() @@ -38,10 +37,8 @@ // 鏁版嵁棰勫鐞嗗嚱鏁� private val dataProcessMap = mutableMapOf<String?, EPWDataPrep>() - @PostConstruct - fun init() { - instance = this - } + // 瀹炴椂璧拌埅姹℃煋婧簮澶勭悊鍣� + private val sourceTraceMap = mutableMapOf<String?, SourceTraceController>() override var tag: String = "璧拌埅鐩戞祴" @@ -53,7 +50,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) + } + // 灏嗚蛋鑸暟鎹紶鍏ュ紓甯稿鐞嗗櫒 + sourceTraceMap[it.deviceCode]?.addOneData(it) + } + } else { println("------${TAG}鏁版嵁BCC鏍¢獙澶辫触锛岃垗寮� [${SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Date())}]") } @@ -62,21 +67,23 @@ /** * 淇濆瓨鑷虫暟鎹簱 */ - fun saveToDataBase(dataPackage: AirDataPackage) { + fun saveToDataBase(dataPackage: AirDataPackage): List<BaseRealTimeData>? { when (dataPackage.commandUnit) { AirCommandUnit.AirData.value -> { // 浠son鏍煎紡瀛樺偍鍘熷鏁版嵁 - instance.airDataRep.saveAirData(dataPackage) + airDataRep.saveAirData(dataPackage) // 杩涜棰勫鐞嗗悗锛屽瓨鍌ㄨ嚦瀵瑰簲鏁版嵁琛� if (!dataProcessMap.containsKey(dataPackage.deviceCode)) { // 姣忓彴璁惧鏈夊崟鐙殑鏁版嵁棰勫鐞嗗璞� dataProcessMap[dataPackage.deviceCode] = EPWDataPrep(UWDeviceType.getType(dataPackage.deviceCode)) } - dataProcessMap[dataPackage.deviceCode]?.run { + return dataProcessMap[dataPackage.deviceCode]?.run { val list = this.mDataPrep2(dataPackage)// 鏁版嵁骞虫粦澶勭悊 - instance.airDataRep.savePrepData2(list)// 鎸夌収璁惧绫诲瀷瀛樺偍鑷冲搴旀暟鎹〃 + airDataRep.savePrepData2(list)// 鎸夌収璁惧绫诲瀷瀛樺偍鑷冲搴旀暟鎹〃 } } + + else -> return emptyList() } } @@ -108,7 +115,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