From 9c797fa0d704ef8ffb65cd1716b8eb694b4c46c3 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期五, 04 七月 2025 17:28:00 +0800
Subject: [PATCH] 2025.7.4 1. 新增动态污染溯源新的判定逻辑

---
 src/main/kotlin/com/flightfeather/uav/socket/handler/UnderwayWebSocketServerHandler.kt |   58 ++++++++++++++++++++++++++++++++++------------------------
 1 files changed, 34 insertions(+), 24 deletions(-)

diff --git a/src/main/kotlin/com/flightfeather/uav/socket/handler/UnderwayWebSocketServerHandler.kt b/src/main/kotlin/com/flightfeather/uav/socket/handler/UnderwayWebSocketServerHandler.kt
index 0e912d3..11f5696 100644
--- a/src/main/kotlin/com/flightfeather/uav/socket/handler/UnderwayWebSocketServerHandler.kt
+++ b/src/main/kotlin/com/flightfeather/uav/socket/handler/UnderwayWebSocketServerHandler.kt
@@ -1,36 +1,58 @@
 package com.flightfeather.uav.socket.handler
 
+import com.flightfeather.uav.biz.sourcetrace.SourceTraceController
+import com.flightfeather.uav.common.utils.GsonUtils
+import com.flightfeather.uav.domain.entity.BaseRealTimeData
+import com.flightfeather.uav.domain.repository.SceneInfoRep
+import com.flightfeather.uav.domain.repository.SourceTraceRep
+import com.flightfeather.uav.lightshare.bean.DataVo
+import com.flightfeather.uav.socket.sender.UnderwayWebSocketSender
 import io.netty.channel.ChannelHandlerContext
 import io.netty.handler.codec.http.websocketx.TextWebSocketFrame
-import org.springframework.stereotype.Component
 
 /**
  *
  * @date 2025/5/13
  * @author feiyu02
  */
-@Component
-class UnderwayWebSocketServerHandler : BaseHandler() {
+class UnderwayWebSocketServerHandler(sceneInfoRep: SceneInfoRep, sourceTraceRep: SourceTraceRep) : BaseHandler() {
 
-    private val sessionPool = mutableMapOf<String?, ChannelHandlerContext?>()
+    private val sourceTraceController = SourceTraceController(sceneInfoRep, sourceTraceRep)
 
     override var tag: String = "UAV-WS"
 
     override fun channelRegistered(ctx: ChannelHandlerContext?) {
         super.channelRegistered(ctx)
         // 灏嗚繛鎺ュ瓨鍌�
-        if (!sessionPool.containsKey(ctx?.name())) {
-            sessionPool[ctx?.name()] = ctx
-        }
+        UnderwayWebSocketSender.saveSession(ctx)
     }
 
     override fun channelRead(ctx: ChannelHandlerContext?, msg: Any?) {
         super.channelRead(ctx, msg)
-
         when (msg) {
-            is TextWebSocketFrame->{
-                println(msg.text())
-                ctx?.channel()?.writeAndFlush(msg)
+            is TextWebSocketFrame -> {
+                val msgTxt = msg.text()
+
+                println(msgTxt)
+//                ctx?.channel()?.writeAndFlush(msg)
+
+                // Test
+                try {
+                    if (msgTxt == "start") {
+                        sourceTraceController.initTask()
+                    } else {
+                        val data = GsonUtils.parserJsonToArrayBeans(msgTxt, DataVo::class.java)
+                        data.forEach {
+                            sourceTraceController.addOneData(
+                                it.toBaseRealTimeData(BaseRealTimeData::class.java)
+                            )
+                        }
+                    }
+                } catch (e: Exception) {
+//                    ctx?.channel()?.writeAndFlush(TextWebSocketFrame("褰撳墠涓烘祴璇曠姸鎬侊紝浼犺緭鐨勬暟鎹笉鏄蛋鑸暟鎹牸寮�"))
+                    println("褰撳墠涓烘祴璇曠姸鎬侊紝浼犺緭鐨勬暟鎹笉鏄蛋鑸暟鎹牸寮�")
+                    e.printStackTrace()
+                }
             }
         }
     }
@@ -38,18 +60,6 @@
     override fun channelInactive(ctx: ChannelHandlerContext?) {
         super.channelInactive(ctx)
         // 灏嗚繛鎺ョЩ闄�
-        if (sessionPool.containsKey(ctx?.name())) {
-            sessionPool.remove(ctx?.name())
-        }
-    }
-
-    fun send() {
-
-    }
-
-    fun broadcast(msg: String) {
-        sessionPool.forEach { t, u ->
-            u?.channel()?.writeAndFlush(TextWebSocketFrame(msg))
-        }
+        UnderwayWebSocketSender.removeSession(ctx)
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3