From 37d47c6a7ab0f454b948b68c987146b261117993 Mon Sep 17 00:00:00 2001 From: Riku <risaku@163.com> Date: 星期日, 13 七月 2025 22:47:21 +0800 Subject: [PATCH] 2025.7.13 动态溯源逻辑调整 --- src/main/kotlin/com/flightfeather/uav/socket/processor/UnderwayProcessor.kt | 47 ++++++++++++++++++++++++++++------------------- 1 files changed, 28 insertions(+), 19 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 48ac7bb..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,18 +1,20 @@ 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.repository.AirDataRepository +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鎺ユ敹鐨勬秷鎭� @@ -21,16 +23,15 @@ */ @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() @@ -38,10 +39,8 @@ // 鏁版嵁棰勫鐞嗗嚱鏁� private val dataProcessMap = mutableMapOf<String?, EPWDataPrep>() - @PostConstruct - fun init() { - instance = this - } + // 瀹炴椂璧拌埅姹℃煋婧簮澶勭悊鍣� + private val sourceTraceMap = mutableMapOf<String?, SourceTraceController>() override var tag: String = "璧拌埅鐩戞祴" @@ -53,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())}]") } @@ -62,21 +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)) } - dataProcessMap[dataPackage.deviceCode]?.run { + return dataProcessMap[dataPackage.deviceCode]?.run { val list = this.mDataPrep2(dataPackage)// 鏁版嵁骞虫粦澶勭悊 - instance.airDataRepository.savePrepData2(list)// 鎸夌収璁惧绫诲瀷瀛樺偍鑷冲搴旀暟鎹〃 + airDataRep.savePrepData2(list)// 鎸夌収璁惧绫诲瀷瀛樺偍鑷冲搴旀暟鎹〃 } } + + else -> return emptyList() } } @@ -108,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