From 3c66b754ee314ae87d0f2eda2fa86a30ea2304e7 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 14 三月 2025 18:32:30 +0800
Subject: [PATCH] 修改809对接bug

---
 ruoyi-service/ruoyi-dataInterchange/src/main/java/com/ruoyi/dataInterchange/netty/client/NettyClientHandler.java |  116 +++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 90 insertions(+), 26 deletions(-)

diff --git a/ruoyi-service/ruoyi-dataInterchange/src/main/java/com/ruoyi/dataInterchange/netty/client/NettyClientHandler.java b/ruoyi-service/ruoyi-dataInterchange/src/main/java/com/ruoyi/dataInterchange/netty/client/NettyClientHandler.java
index e582396..f4ff408 100644
--- a/ruoyi-service/ruoyi-dataInterchange/src/main/java/com/ruoyi/dataInterchange/netty/client/NettyClientHandler.java
+++ b/ruoyi-service/ruoyi-dataInterchange/src/main/java/com/ruoyi/dataInterchange/netty/client/NettyClientHandler.java
@@ -1,21 +1,58 @@
 package com.ruoyi.dataInterchange.netty.client;
 
-import io.netty.buffer.ByteBuf;
+import com.ruoyi.common.core.utils.SpringUtils;
+import com.ruoyi.dataInterchange.model.enu.DataType;
+import com.ruoyi.dataInterchange.server.*;
+import com.ruoyi.dataInterchange.util.jtt809.packet.common.OuterPacket;
 import io.netty.buffer.Unpooled;
 import io.netty.channel.ChannelHandlerContext;
-import io.netty.channel.ChannelInboundHandlerAdapter;
+import io.netty.channel.SimpleChannelInboundHandler;
 import io.netty.util.CharsetUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
-import java.util.List;
+import javax.annotation.Resource;
 
 /**
  * @author zhibing.pu
  * @Date 2025/3/3 20:13
  */
-public class NettyClientHandler extends ChannelInboundHandlerAdapter {
+@Slf4j
+@Component
+public class NettyClientHandler extends SimpleChannelInboundHandler<String> {
 	
-	public static List<ChannelHandlerContext> cts = new ArrayList<ChannelHandlerContext>();
+	@Resource
+	private ConnectReqService connectReqService = SpringUtils.getBean(ConnectReqService.class);
+	
+	@Resource
+	private UPDisconnectReqService upDisconnectReqService = SpringUtils.getBean(UPDisconnectReqService.class);
+	
+	@Resource
+	private UPLinkTestReqService upLinkTestReqService = SpringUtils.getBean(UPLinkTestReqService.class);
+	
+	@Resource
+	private UPDisconnectInformService upDisconnectInformService = SpringUtils.getBean(UPDisconnectInformService.class);
+	
+	@Resource
+	private UPCloseLinkInformService upCloseLinkInformService = SpringUtils.getBean(UPCloseLinkInformService.class);
+	
+	@Resource
+	private DOWNConnectRspService downConnectRspService = SpringUtils.getBean(DOWNConnectRspService.class);
+	
+	@Resource
+	private ExgMsgService exgMsgService = SpringUtils.getBean(ExgMsgService.class);
+	
+	@Resource
+	private PlatformMsgService platformMsgService = SpringUtils.getBean(PlatformMsgService.class);
+	
+	@Resource
+	private WarnMsgService warnMsgService = SpringUtils.getBean(WarnMsgService.class);
+	
+	@Resource
+	private CtrlMsgService ctrlMsgService = SpringUtils.getBean(CtrlMsgService.class);
+	
+	@Resource
+	private BaseMsgService baseMsgService = SpringUtils.getBean(BaseMsgService.class);
 	
 	
 	/**
@@ -26,34 +63,24 @@
 		System.err.println("客户端和服务端已建立连接");
 	}
 	
-	public void write(ChannelHandlerContext ctx , String mess) throws Exception {
+	public void write(ChannelHandlerContext ctx, String mess) throws Exception {
 		String sendInfo = mess;
 		ctx.writeAndFlush(Unpooled.copiedBuffer(sendInfo, CharsetUtil.UTF_8)); // 必须有flush
 		ctx.flush();
 	}
 	
 	@Override
-	public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
-		//读取数据
-		
-		//读取数据
-		ByteBuf buf1 = (ByteBuf) msg;
-		byte[] req = readClientData((ByteBuf) msg);
-		String body = new String(req, "UTF-8"); //获取到的值
-		System.out.println("客户端的数据------>"+body);
-		//写数据
-		write(ctx,"wits写的数据");
-		
+	public void channelRead(ChannelHandlerContext ctx, Object object) throws Exception {
+		OuterPacket outerPacket = (OuterPacket) object;
+		int id = outerPacket.getId();
+		serviceRouting(DataType.getDataType(id), ctx, outerPacket);
 	}
 	
-	//将netty的数据装换为字节数组
-	private byte[] readClientData(ByteBuf msg) {
-		ByteBuf buf = msg;
-		byte[] req = new byte[buf.readableBytes()];
-		buf.readBytes(req);
-		buf.release();
-		return req;
+	@Override
+	protected void channelRead0(ChannelHandlerContext channelHandlerContext, String s) throws Exception {
+	
 	}
+	
 	
 	/**
 	 * channelInactive
@@ -66,8 +93,45 @@
 	
 	@Override
 	public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
-		cts.remove(ctx);
 		ctx.close();
 		System.out.println("异常退出:" + cause.getMessage());
 	}
+	
+	
+	/**
+	 * 业务路由
+	 *
+	 * @param dataType
+	 * @param ctx
+	 * @param out
+	 */
+	public void serviceRouting(DataType dataType, ChannelHandlerContext ctx, OuterPacket out) {
+		log.info("从链路信息交换响应({}):{}", dataType.getCode(), out);
+		switch (dataType) {
+			case UP_DISCONNECT_INFORM:
+				log.info("主链路断开通知请求({}):{}", DataType.UP_DISCONNECT_INFORM.getCode(), out);
+				upDisconnectInformService.disconnect(ctx, out);
+				break;
+			case UP_CLOSELINK_INFORM:
+				log.info("下级平台主动关闭主从链路通知({}):{}", DataType.UP_CLOSELINK_INFORM.getCode(), out);
+				upCloseLinkInformService.closeLinkInform(ctx, out);
+				break;
+			case DOWN_CONNECT_RSP:
+				log.info("从链路连接应答({}):{}", DataType.DOWN_CONNECT_RSP.getCode(), out);
+				downConnectRspService.connectRsp(ctx, out);
+				break;
+			case DOWN_DISCONNECT_RSP:
+				log.info("从链路注销应答({}):{}", DataType.DOWN_DISCONNECT_RSP.getCode(), out);
+				break;
+			case DOWN_LINKTEST_RSP:
+				log.info("从链路连接保持应答({}):{}", DataType.DOWN_LINKTEST_RSP.getCode(), out);
+				break;
+			case UP_MANAGE_TOTAL_RECV_BACK_MSG:
+				log.info("发送车辆定位信息数量通知({}):{}", DataType.UP_MANAGE_TOTAL_RECV_BACK_MSG.getCode(), out);
+				break;
+			default:
+				break;
+		}
+	}
+	
 }

--
Gitblit v1.7.1