From 8f224dbf1a1bd1a65dead7ceda8dd0a3fa567115 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期四, 28 十二月 2023 15:57:09 +0800
Subject: [PATCH] 优化雷达tcp客户端

---
 /dev/null                                                         |   25 --------
 src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java       |   52 +++++++----------
 src/main/java/com/ard/utils/netty/tcp/ClientHandler.java          |   67 +++++++++++----------
 src/main/java/com/ard/alarm/radar/controller/RadarController.java |   31 +++++-----
 src/main/java/com/ard/utils/netty/tcp/MessageHandler.java         |    2 
 5 files changed, 73 insertions(+), 104 deletions(-)

diff --git a/src/main/java/com/ard/alarm/radar/controller/RadarController.java b/src/main/java/com/ard/alarm/radar/controller/RadarController.java
index 5cd3e6c..ad455e3 100644
--- a/src/main/java/com/ard/alarm/radar/controller/RadarController.java
+++ b/src/main/java/com/ard/alarm/radar/controller/RadarController.java
@@ -41,39 +41,38 @@
         if (ardEquipRadar == null) {
             return AjaxResult.error("闆疯揪涓嶅瓨鍦�");
         }
-        Channel channel = (Channel)ClientInitialize.SuccessConnectMap.get(ardEquipRadar.getId());
-        if (channel==null)
-        {
+        Channel channel = ClientInitialize.SucChannelMap.get(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort());
+        if (channel == null) {
             return AjaxResult.error("闆疯揪鏈繛鎺�");
         }
         Double longitude = ardEquipRadar.getLongitude();//闆疯揪缁忓害
         Double latitude = ardEquipRadar.getLatitude();//闆疯揪绾害
         Double altitude = ardEquipRadar.getAltitude();//闆疯揪楂樺害
         //璁$畻姘村钩瑙掑害
-        float p = (float)GisUtils.getNorthAngle(longitude, latitude, targetPosition[0], targetPosition[1]);
+        float p = (float) GisUtils.getNorthAngle(longitude, latitude, targetPosition[0], targetPosition[1]);
         //璁$畻鍨傜洿瑙掑害
         double[] radarPosition = new double[2];
         radarPosition[0] = longitude;
         radarPosition[1] = latitude;
         double distance = GisUtils.getDistance(radarPosition, targetPosition);
-        float angleInRadians = (float)Math.atan(distance / altitude);
-        float t = (90-(float)Math.toDegrees(angleInRadians))*-1;
-        log.debug("distance锛�"+distance);
-        log.debug("p锛�"+p);
-        log.debug("t锛�"+t);
+        float angleInRadians = (float) Math.atan(distance / altitude);
+        float t = (90 - (float) Math.toDegrees(angleInRadians)) * -1;
+        log.debug("distance锛�" + distance);
+        log.debug("p锛�" + p);
+        log.debug("t锛�" + t);
         //鍙戦�佸憡璀﹀墠绔殑瑙掑害鎻愮ず
         byte[] header = {0x01, 0x02, 0x01};//鍖呭ご
         byte[] payloadHeader = {0x10, 0x03, 0x20, 0x00};//璐熻浇澶�
-        byte[] distanceBytes = ByteUtils.decimalToBytes((int)distance);
-        distanceBytes=ByteUtils.toLittleEndian(distanceBytes);
+        byte[] distanceBytes = ByteUtils.decimalToBytes((int) distance);
+        distanceBytes = ByteUtils.toLittleEndian(distanceBytes);
         byte[] pBytes = ByteUtils.floatToBytes(p);
-        pBytes=ByteUtils.toLittleEndian(pBytes);
+        pBytes = ByteUtils.toLittleEndian(pBytes);
         byte[] tBytes = ByteUtils.floatToBytes(t);
-        tBytes=ByteUtils.toLittleEndian(tBytes);
-        byte[] resBytes=new byte[20];
-        byte[] payloadBody = ByteUtils.appendArrays(distanceBytes,pBytes,tBytes,resBytes);//璐熻浇
+        tBytes = ByteUtils.toLittleEndian(tBytes);
+        byte[] resBytes = new byte[20];
+        byte[] payloadBody = ByteUtils.appendArrays(distanceBytes, pBytes, tBytes, resBytes);//璐熻浇
 
-        byte[] payload = ByteUtils.appendArrays(payloadHeader,payloadBody);//璐熻浇澶�+璐熻浇
+        byte[] payload = ByteUtils.appendArrays(payloadHeader, payloadBody);//璐熻浇澶�+璐熻浇
         byte[] payloadCrc32 = ByteUtils.parseCrc32(payload);//璐熻浇澶�+璐熻浇鐨刢rc32鏍¢獙
         byte[] footer = {0x01, 0x02, 0x00};//鍖呭熬
         byte[] data = ByteUtils.appendArrays(header, payload, payloadCrc32, footer);
diff --git a/src/main/java/com/ard/utils/netty/tcp/BootNettyChannelInboundHandlerAdapter.java b/src/main/java/com/ard/utils/netty/tcp/BootNettyChannelInboundHandlerAdapter.java
deleted file mode 100644
index 5e49218..0000000
--- a/src/main/java/com/ard/utils/netty/tcp/BootNettyChannelInboundHandlerAdapter.java
+++ /dev/null
@@ -1,439 +0,0 @@
-package com.ard.utils.netty.tcp;
-
-import com.alibaba.fastjson2.JSON;
-import com.ard.alarm.radar.domain.ArdAlarmRadar;
-import com.ard.alarm.radar.domain.ArdEquipRadar;
-import com.ard.alarm.radar.domain.RadarAlarmData;
-import com.ard.utils.mqtt.MqttProducer;
-import com.ard.utils.util.ByteUtils;
-import com.ard.utils.util.GisUtils;
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.EmptyByteBuf;
-import io.netty.channel.*;
-import io.netty.util.CharsetUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-
-import javax.xml.bind.DatatypeConverter;
-import java.io.IOException;
-import java.net.InetSocketAddress;
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-import static com.ard.utils.util.ByteUtils.byteToBitString;
-import static com.ard.utils.util.ByteUtils.toLittleEndian;
-
-@Slf4j(topic = "netty")
-public class BootNettyChannelInboundHandlerAdapter extends SimpleChannelInboundHandler<ByteBuf> {
-
-    /**
-     * 浠庢湇鍔$鏀跺埌鏂扮殑鏁版嵁鏃讹紝杩欎釜鏂规硶浼氬湪鏀跺埌娑堟伅鏃惰璋冪敤
-     */
-    @Override
-    protected void channelRead0(ChannelHandlerContext ctx, ByteBuf msg) {
-        InetSocketAddress inSocket = (InetSocketAddress) ctx.channel().remoteAddress();
-        String host = inSocket.getAddress().getHostAddress();
-        int port = inSocket.getPort();
-        //log.info("鏀跺埌鏉ヨ嚜 {}:{} 鐨勬暟鎹畕}", host, port,msg.toString(CharsetUtil.UTF_8));
-        ArdEquipRadar ardEquipRadar = BootNettyClientChannelCache.getRadar(host + ":" + port);
-        if (ardEquipRadar != null) {
-            //// 鍒涘缓缂撳啿涓瓧鑺傛暟鐨勫瓧鑺傛暟缁�
-            //byte[] byteArray = new byte[msg.readableBytes()];
-            //// 鍐欏叆鏁扮粍
-            //msg.readBytes(byteArray);
-            //// 澶勭悊鎺ユ敹鍒扮殑娑堟伅
-            //byte[] bytes = MessageParsing.receiveCompletePacket(byteArray);
-            //if (bytes != null) {
-            //    processData(ardEquipRadar, bytes);
-            //}
-        }
-    }
-
-    /**
-     * 浠庢湇鍔$鏀跺埌鏂扮殑鏁版嵁銆佽鍙栧畬鎴愭椂璋冪敤
-     */
-    @Override
-    public void channelReadComplete(ChannelHandlerContext ctx) throws IOException {
-        //System.out.println("channelReadComplete");
-        ctx.flush();
-    }
-
-    /**
-     * 褰撳嚭鐜� Throwable 瀵硅薄鎵嶄細琚皟鐢紝鍗冲綋 Netty 鐢变簬 IO 閿欒鎴栬�呭鐞嗗櫒鍦ㄥ鐞嗕簨浠舵椂鎶涘嚭鐨勫紓甯告椂
-     */
-    @Override
-    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws IOException {
-//        System.out.println("exceptionCaught");
-        cause.printStackTrace();
-        ctx.close();//鎶涘嚭寮傚父锛屾柇寮�涓庡鎴风鐨勮繛鎺�
-    }
-
-    /**
-     * 瀹㈡埛绔笌鏈嶅姟绔涓�娆″缓绔嬭繛鎺ユ椂 鎵ц
-     */
-    @Override
-    public void channelActive(ChannelHandlerContext ctx) throws Exception {
-        super.channelActive(ctx);
-        // 瀹㈡埛绔笌鏈嶅姟绔� 寤虹珛杩炴帴
-        InetSocketAddress inSocket = (InetSocketAddress) ctx.channel().remoteAddress();
-        String host = inSocket.getAddress().getHostAddress();
-        int port = inSocket.getPort();
-        log.debug("杩炴帴鎴愬姛锛氥��" + host + ":" + port + "銆�");
-    }
-
-    /**
-     * 瀹㈡埛绔笌鏈嶅姟绔� 鏂繛鏃� 鎵ц
-     */
-    @Override
-    public void channelInactive(ChannelHandlerContext ctx) throws Exception {
-        super.channelInactive(ctx);
-        InetSocketAddress ipSocket = (InetSocketAddress) ctx.channel().remoteAddress();
-        int port = ipSocket.getPort();
-        String host = ipSocket.getHostString();
-        log.error("涓庤澶�" + host + ":" + port + "杩炴帴鏂紑!");
-        // 閲嶈繛
-        ArdEquipRadar ardEquipRadar = BootNettyClientChannelCache.getRadar(host + ":" + port);
-        if (ardEquipRadar != null) {
-            BootNettyClientThread thread = new BootNettyClientThread(ardEquipRadar);
-            thread.start();
-        }
-    }
-
-    /**
-     * 瑙f瀽鎶ヨ鏁版嵁
-     */
-    public void processData(ArdEquipRadar ardEquipRadarbyte, byte[] data) {
-        try {
-            String radarId = ardEquipRadarbyte.getId();
-            String radarName = ardEquipRadarbyte.getName();
-            Double radarLongitude = ardEquipRadarbyte.getLongitude();
-            Double radarLagitude = ardEquipRadarbyte.getLatitude();
-            Double radarAltitude = ardEquipRadarbyte.getAltitude();
-            //region crc鏍¢獙-鐩墠浠呯敤浜庢樉绀烘牎楠岀粨鏋�
-            Boolean crc32Check = MessageParsing.CRC32Check(data);
-            if (!crc32Check) {
-                log.debug("CRC32鏍¢獙涓嶉�氳繃");
-            } else {
-                //log.debug("CRC32鏍¢獙閫氳繃");
-            }
-            //endregion
-            //log.info("鍘熷鏁版嵁:" + DatatypeConverter.printHexBinary(data));
-            //log.info("闆疯揪淇℃伅锛�" + host + "銆恜ort銆�" + port + "銆怷銆�" + longitude + "銆怸銆�" + lagitude + "銆怹銆�" + altitude);
-            data = MessageParsing.transferData(data);//鍘绘帀鍖呭ご鍜屽寘灏俱�佹牎楠屽強杞箟
-            //region 璐熻浇澶磋В鏋�
-            byte[] type = Arrays.copyOfRange(data, 0, 1);//鍛戒护绫诲瀷
-            //  log.info("鍛戒护绫诲瀷:" + DatatypeConverter.printHexBinary(type));
-            byte[] cmdId = Arrays.copyOfRange(data, 1, 2);//鍛戒护ID
-            String cmdIdStr = DatatypeConverter.printHexBinary(cmdId);
-            //log.info("鍛戒护ID:" + DatatypeConverter.printHexBinary(cmdId));
-            byte[] payloadSize = Arrays.copyOfRange(data, 2, 4);//鏈夋晥璐熻浇澶у皬
-            payloadSize = toLittleEndian(payloadSize);
-            //log.info("payloadSize:" + DatatypeConverter.printHexBinary(payloadSize));
-            int payloadSizeToDecimal = ByteUtils.bytesToDecimal(payloadSize);
-            // log.info("鏈夋晥璐熻浇澶у皬(杞暣鍨�):" + payloadSizeToDecimal);
-            //endregion
-            List<ArdAlarmRadar> radarAlarmInfos = new ArrayList<>();
-            ArdAlarmRadar radarFollowInfo = null;
-            //鎶芥补鏈虹姸鎬侀浄杈炬帹閫侀泦鍚�
-            List<ArdAlarmRadar> well = new ArrayList<>();
-            String alarmTime = "";
-            Integer targetNum = 0;
-            log.debug("Processing radar data 銆�" + radarName + "銆戞暟鎹�-->鍛戒护ID:" + cmdIdStr + "浜岃繘鍒�:" + byteToBitString(cmdId[0]));
-            //闆疯揪绉诲姩闃茬伀鎶ヨ
-            if (Arrays.equals(cmdId, new byte[]{0x01})) {
-                //region 鍛婅淇℃伅鍙嶉
-                byte[] dwTim = Arrays.copyOfRange(data, 4, 8);
-                dwTim = toLittleEndian(dwTim);
-                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                long l = ByteUtils.bytesToDecimal(dwTim);
-                alarmTime = sdf.format(l * 1000);
-                // log.info("鍛ㄨ鍥惧儚鐨勫嚭鐜版椂闂�(杞琩ate):" + alarmTime);
-
-                byte[] wTargetNum = Arrays.copyOfRange(data, 8, 10);
-                wTargetNum = toLittleEndian(wTargetNum);
-                targetNum = ByteUtils.bytesToDecimal(wTargetNum);
-                if (targetNum == 0) {
-                    return;
-                }
-                //log.debug("鐩爣鎬荤偣鏁�(杞暣鍨�):" + targetNum);
-
-                //瑙f瀽NET_TARGET_UNIT(64鏄疦ET_TARGET_HEAD鐨勫瓧鑺傛暟)
-                int uintSize = (payloadSizeToDecimal - 64) / targetNum;
-                // log.info("鍗曟潯鎶ヨ澶у皬:" + uintSize);
-
-                for (int i = 0; i < targetNum; i++) {
-
-                    Integer index = 68 + uintSize * i;
-                    byte[] dwID = Arrays.copyOfRange(data, index, index + 4);
-                    // log.info("鐩爣ID:" + DatatypeConverter.printHexBinary(cmdId));
-                    dwID = toLittleEndian(dwID);
-                    int targetId = ByteUtils.bytesToDecimal(dwID);
-                    // log.info("鐩爣ID鍙凤細" + targetId);
-
-                    byte[] iDistance = Arrays.copyOfRange(data, index + 8, index + 12);
-                    iDistance = toLittleEndian(iDistance);
-                    double Distance = ByteUtils.bytesToDecimal(iDistance);
-                    //log.debug("鐩爣褰撳墠鐩寸嚎璺濈(m):" + Distance);
-
-                    //region 涓嶉渶瑕佺殑瀛楁
-//                    byte[] dwGSum = Arrays.copyOfRange(data, index + 4, index + 8);
-//                    dwGSum = toLittleEndian(dwGSum);
-//                    int GSum = byteArrayToDecimal(dwGSum);
-//                    log.info("鐩爣褰撳墠鍍忕礌鐏板害鍜岋細" + GSum);
-//                    byte[] iTw = Arrays.copyOfRange(data, index + 12, index + 16);
-//                    iTw = toLittleEndian(iTw);
-//                    int Tw = byteArrayToDecimal(iTw);
-//                    log.info("鐩爣褰撳墠鐨勫儚绱犲搴�:" + Tw);
-//
-//                    byte[] iTh = Arrays.copyOfRange(data, index + 16, index + 20);
-//                    iTh = toLittleEndian(iTh);
-//                    int Th = byteArrayToDecimal(iTh);
-//                    log.info("鐩爣褰撳墠鐨勫儚绱犻珮搴�:" + Th);
-//
-//                    byte[] wPxlArea = Arrays.copyOfRange(data, index + 20, index + 22);
-//                    wPxlArea = toLittleEndian(wPxlArea);
-//                    int PxlArea = byteArrayToDecimal(wPxlArea);
-//                    log.info("鐩爣褰撳墠鍍忕礌闈㈢Н:" + PxlArea);
-//
-//                    byte[] cTrkNum = Arrays.copyOfRange(data, index + 22, index + 23);
-//                    cTrkNum = toLittleEndian(cTrkNum);
-//                    int TrkNum = byteArrayToDecimal(cTrkNum);
-//                    log.info("杞ㄨ抗鐐规暟:" + TrkNum);
-
-//                    byte[] sVx = Arrays.copyOfRange(data, index + 24, index + 26);
-//                    sVx = toLittleEndian(sVx);
-//                    int Vx = byteArrayToDecimal(sVx);
-//                    log.info("鐩爣褰撳墠閫熷害鐭㈤噺(鍍忕礌璺濈)X:" + Vx);
-//
-//                    byte[] sVy = Arrays.copyOfRange(data, index + 26, index + 28);
-//                    sVy = toLittleEndian(sVy);
-//                    int Vy = byteArrayToDecimal(sVy);
-//                    log.info("鐩爣褰撳墠閫熷害鐭㈤噺(鍍忕礌璺濈)Y:" + Vy);
-//
-//                    byte[] sAreaNo = Arrays.copyOfRange(data, index + 28, index + 30);
-//                    sAreaNo = toLittleEndian(sAreaNo);
-//                    int AreaNo = byteArrayToDecimal(sAreaNo);
-//                    log.info("鐩爣褰掑睘鐨勫憡璀﹀尯鍩熷彿:" + AreaNo);
-//
-//                    byte[] cGrp = Arrays.copyOfRange(data, index + 30, index + 31);
-//                    cGrp = toLittleEndian(cGrp);
-//                    int Grp = byteArrayToDecimal(cGrp);
-//                    log.info("鎵�灞炵粍:" + Grp);
-                    //endregion
-                    String alarmType = "";
-                    byte[] cStat = Arrays.copyOfRange(data, index + 23, index + 24);
-                    log.info("鍘熷鐘舵��:" + byteToBitString(cStat[0]));
-                    // cStat = toLittleEndian(cStat);
-                    // 鎻愬彇绗�4浣嶈嚦绗�6浣嶇殑鍊�
-                    int extractedValue = (cStat[0] >> 4) & 0b00001111;
-                    // 鍒ゆ柇鎻愬彇鐨勫��
-                    if (extractedValue == 0b0000) {
-                        alarmType = "杩愬姩鐩爣妫�娴�";
-                    } else if (extractedValue == 0b0001) {
-                        alarmType = "鐑簮妫�娴�";
-                    }
-                    // log.info("鎶ヨ绫诲瀷:" + alarmType);
-                    byte[] szName = Arrays.copyOfRange(data, index + 64, index + 96);
-                    String alarmPointName = ByteUtils.bytesToStringZh(szName);
-                    // log.info("鎵�灞炲憡璀﹀尯鍩熷悕绉�:" + alarmPointName);
-                    byte[] afTx = Arrays.copyOfRange(data, index + 96, index + 100);
-                    afTx = toLittleEndian(afTx);
-                    float fTx = ByteUtils.bytesToFloat(afTx);
-                    //  log.info("姘村钩瑙掑害:" + fTx);
-                    byte[] afTy = Arrays.copyOfRange(data, index + 112, index + 116);
-                    afTy = toLittleEndian(afTy);
-                    float fTy = ByteUtils.bytesToFloat(afTy);
-                    //log.debug("鍨傜洿瑙掑害:" + fTy);
-                    // 灏嗚搴﹁浆鎹负寮у害
-                    double thetaRadians = Math.toRadians(fTy + 90);
-                    // 浣跨敤姝e鸡鍑芥暟璁$畻瀵硅竟闀垮害
-                    Distance = Math.sin(thetaRadians) * Distance;
-                    //log.debug("鐩爣鎶曞奖璺濈(m):" + Distance);
-
-                    Double[] radarXY = {radarLongitude, radarLagitude};
-                    Double[] alarmXY = GisUtils.CalculateCoordinates(radarXY, Distance, (double) fTx);
-                    log.debug("鎶ヨ淇℃伅锛�" + "銆恟adarName銆�" + radarName + "銆恡argetId銆�" + targetId + "銆恆larmType銆�" + alarmType + "銆恆larmTime銆�" + alarmTime + "銆恘ame銆�" + alarmPointName);
-                    ArdAlarmRadar ardAlarmRadar = new ArdAlarmRadar();
-                    ardAlarmRadar.setTargetId(targetId);
-                    ardAlarmRadar.setName(alarmPointName);
-                    ardAlarmRadar.setLongitude(alarmXY[0]);
-                    ardAlarmRadar.setLatitude(alarmXY[1]);
-                    ardAlarmRadar.setAlarmType(alarmType);
-                    radarAlarmInfos.add(ardAlarmRadar);
-
-                    int bit1 = (cStat[0] >> 1) & 0x1;
-                    //鐩爣鐨凚1=1 閿佸畾
-                    if (bit1 == 1) {
-                        radarFollowInfo = ardAlarmRadar;
-                        //灏嗚拷韪攣瀹氱殑鎶ヨ瀵硅薄灞炴�у鍒剁粰radarFollowInfo瀵硅薄
-                        //BeanUtils.copyProperties(ardAlarmRadar, radarFollowInfo);
-                    }
-                }
-                //endregion
-                if (StringUtils.isEmpty(alarmTime)) {
-                    return;
-                }
-                if (targetNum == 0) {
-                    return;
-                }
-                RadarAlarmData radarAlarmData = new RadarAlarmData();
-                radarAlarmData.setRadarId(radarId);
-                radarAlarmData.setRadarName(radarName);
-                radarAlarmData.setAlarmTime(alarmTime);
-                radarAlarmData.setArdAlarmRadars(radarAlarmInfos);
-                MqttProducer.publish(2, false, "radar", JSON.toJSONString(radarAlarmData));
-                if (radarFollowInfo != null) {
-                    //褰撳墠闆疯揪鎵弿瀛樺湪寮曞璺熻釜鏁版嵁锛屽彧淇濈暀鏈�鍚庝竴娆¢攣瀹氱殑鏁版嵁
-                    MqttProducer.publish(2, false, "radarFollowGuide", JSON.toJSONString(radarFollowInfo));
-                }
-                //鎶芥补鏈虹姸鎬丮QTT闃熷垪
-                radarAlarmData.setArdAlarmRadars(well);
-                MqttProducer.publish(2, false, "radarWellData", JSON.toJSONString(radarAlarmData));
-
-            }
-            //鎶芥补鏈篈I鐘舵�佸弽棣�
-            if (Arrays.equals(cmdId, new byte[]{0x04})) {
-                //region鎶芥补鏈篈I鐘舵�佸弽棣�
-                String hexString = DatatypeConverter.printHexBinary(data);
-                //log.info(hexString);
-
-                byte[] dwTim = Arrays.copyOfRange(data, 4, 8);
-                dwTim = toLittleEndian(dwTim);
-                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                long l = ByteUtils.bytesToDecimal(dwTim);
-                alarmTime = sdf.format(l * 1000);
-                //log.info("鍛ㄨ鍥惧儚鐨勫嚭鐜版椂闂�(杞琩ate):" + alarmTime);
-
-                byte[] wTargetNum = Arrays.copyOfRange(data, 8, 10);
-                wTargetNum = toLittleEndian(wTargetNum);
-                targetNum = ByteUtils.bytesToDecimal(wTargetNum);
-                //log.debug("鐩爣鎬荤偣鏁�(杞暣鍨�):" + targetNum);
-                if (targetNum == 0) {
-                    return;
-                }
-                //瑙f瀽NET_TARGET_UNIT(64鏄疦ET_TARGET_HEAD鐨勫瓧鑺傛暟)
-                int uintSize = (payloadSizeToDecimal - 64) / targetNum;
-                //log.info("鍗曟潯鎶ヨ澶у皬:" + uintSize);
-                for (int i = 0; i < targetNum; i++) {
-                    Integer index = 68 + uintSize * i;
-                    byte[] dwID = Arrays.copyOfRange(data, index, index + 4);
-                    //log.info("鐩爣ID:" + DatatypeConverter.printHexBinary(dwID));
-                    dwID = toLittleEndian(dwID);
-                    int targetId = ByteUtils.bytesToDecimal(dwID);
-                    //log.info("鐩爣ID鍙凤細" + targetId);
-                    //region 涓嶉渶瑕佺殑瀛楁
-                    byte[] iTw = Arrays.copyOfRange(data, index + 4, index + 8);
-                    iTw = toLittleEndian(iTw);
-                    int Tw = ByteUtils.bytesToDecimal(iTw);
-                    // log.info("鐩爣褰撳墠鐨勫儚绱犲搴�:" + Tw);
-
-                    byte[] iTh = Arrays.copyOfRange(data, index + 8, index + 12);
-                    iTh = toLittleEndian(iTh);
-                    int Th = ByteUtils.bytesToDecimal(iTh);
-                    //log.info("鐩爣褰撳墠鐨勫儚绱犻珮搴�:" + Th);
-
-                    byte[] fTx = Arrays.copyOfRange(data, index + 12, index + 16);
-                    fTx = toLittleEndian(fTx);
-                    float fTxAngle = ByteUtils.bytesToFloat(fTx);
-                    //log.debug("p瑙掑害:" + fTxAngle);
-                    byte[] fTy = Arrays.copyOfRange(data, index + 16, index + 20);
-                    fTy = toLittleEndian(fTy);
-                    float fTyAngle = ByteUtils.bytesToFloat(fTy);
-                    //log.debug("t瑙掑害:" + fTyAngle);
-
-                    byte[] sAreaNo = Arrays.copyOfRange(data, index + 20, index + 22);
-                    sAreaNo = toLittleEndian(sAreaNo);
-                    int AreaNo = ByteUtils.bytesToDecimal(sAreaNo);
-                    //log.debug("鐩爣褰掑睘鐨勫憡璀﹀尯鍩熷彿:" + AreaNo);
-
-                    byte[] cGrp = Arrays.copyOfRange(data, index + 22, index + 23);
-                    cGrp = toLittleEndian(cGrp);
-                    int Grp = ByteUtils.bytesToDecimal(cGrp);
-                    //log.info("鎵�灞炵粍:" + Grp);
-                    //endregion
-                    String alarmType;
-                    //鎶芥补鏈虹姸鎬佸彉閲�
-                    String wellType;
-                    byte[] cStat = Arrays.copyOfRange(data, index + 23, index + 24);
-                    cStat = toLittleEndian(cStat);
-                    //String binaryString = String.format("%8s", Integer.toBinaryString(cStat[0] & 0xFF)).replace(' ', '0');
-                    //log.info("鐩爣褰撳墠鐘舵��:" + binaryString);
-                    // 鎻愬彇绗�0浣嶅��
-                    // 浣跨敤浣嶈繍绠楁搷浣滃垽鏂0浣嶆槸鍚︿负1
-                    boolean isB0 = (cStat[0] & 0x01) == 0x00;
-                    // 鍒ゆ柇鎻愬彇鐨勫��
-                    if (isB0) {
-                        alarmType = "闆疯揪鎶芥补鏈哄仠鏈�";
-                        byte[] szName = Arrays.copyOfRange(data, index + 32, index + 64);
-                        //log.info("鎵�灞炲憡璀﹀尯鍩熷悕绉�:" + DatatypeConverter.printHexBinary(szName));
-                        String alarmPointName = ByteUtils.bytesToStringZh(szName);
-                        // log.info("鎵�灞炲憡璀﹀尯鍩熷悕绉�:" + alarmPointName);
-                        //log.debug("鎶ヨ淇℃伅锛�"+ "銆恟adarName銆�" + radarName + "銆恡argetId銆�" + targetId + "銆恘ame銆�" + alarmPointName + "銆恆larmType銆�" + alarmType + "銆恆larmTime銆�" + alarmTime);
-                        ArdAlarmRadar ardAlarmRadar = new ArdAlarmRadar();
-                        ardAlarmRadar.setTargetId(targetId);
-                        ardAlarmRadar.setName(alarmPointName);
-                        ardAlarmRadar.setAlarmType(alarmType);
-                        radarAlarmInfos.add(ardAlarmRadar);
-                        wellType = "鍋滄満";
-                    } else {
-                        wellType = "杩愯";
-                    }
-                    //鎶芥补鏈虹姸鎬侀泦鍚堜腑瑁呭叆鏁版嵁
-                    byte[] szName = Arrays.copyOfRange(data, index + 32, index + 64);
-                    String alarmPointName = ByteUtils.bytesToStringZh(szName);
-                    log.debug("鎶ヨ淇℃伅锛�" + "銆恟adarName銆�" + radarName + "銆恡argetId銆�" + targetId + "銆恆larmType銆戞娊娌规満鐘舵�佹姤璀�" + "銆恆larmTime銆�" + alarmTime + "銆恘ame銆�" + alarmPointName + "銆恆larmState銆�" + wellType);
-                    ArdAlarmRadar wellAlarm = new ArdAlarmRadar();
-                    wellAlarm.setTargetId(targetId);
-                    wellAlarm.setName(alarmPointName);
-                    wellAlarm.setAlarmType(wellType);
-                    well.add(wellAlarm);
-                }
-                //endregion
-                if (StringUtils.isEmpty(alarmTime)) {
-                    return;
-                }
-                if (targetNum == 0) {
-                    return;
-                }
-                RadarAlarmData radarAlarmData = new RadarAlarmData();
-                radarAlarmData.setRadarId(radarId);
-                radarAlarmData.setRadarName(radarName);
-                radarAlarmData.setAlarmTime(alarmTime);
-                radarAlarmData.setArdAlarmRadars(radarAlarmInfos);
-                MqttProducer.publish(2, false, "radar", JSON.toJSONString(radarAlarmData));
-                //鎶芥补鏈虹姸鎬丮QTT闃熷垪
-                radarAlarmData.setArdAlarmRadars(well);
-                MqttProducer.publish(2, false, "radarWellData", JSON.toJSONString(radarAlarmData));
-            }
-            //寮哄埗寮曞
-            if (Arrays.equals(cmdId, new byte[]{0x02})) {
-                //region 鍛婅鍓嶇鍙戦�佺殑寮哄埗寮曞淇℃伅
-                byte[] iDistance = Arrays.copyOfRange(data, 4, 8);
-                iDistance = toLittleEndian(iDistance);
-                long distance = ByteUtils.bytesToDecimal(iDistance);
-                log.info("鐩爣褰撳墠璺濈(m):" + distance);
-                byte[] fTx = Arrays.copyOfRange(data, 8, 12);
-                fTx = toLittleEndian(fTx);
-                float tx = ByteUtils.bytesToFloat(fTx);
-                log.debug("鏂逛綅:" + tx);
-                byte[] fTy = Arrays.copyOfRange(data, 12, 16);
-                fTy = toLittleEndian(fTy);
-                float ty = ByteUtils.bytesToFloat(fTy);
-                if (ty < 0) {
-                    ty += 360;
-                }
-                log.debug("淇话:" + ty);
-                Map<String, Object> forceGuideMap = new HashMap<>();
-                forceGuideMap.put("distance", distance);
-                forceGuideMap.put("p", tx);
-                forceGuideMap.put("t", ty);
-                forceGuideMap.put("radarId", radarId);
-                log.debug("寮哄埗寮曞淇℃伅" + forceGuideMap);
-                //endregion
-                MqttProducer.publish(2, false, "radarForceGuide", JSON.toJSONString(forceGuideMap));
-            }
-        } catch (Exception ex) {
-            log.error("闆疯揪鎶ユ枃瑙f瀽寮傚父:" + ex.getMessage());
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/main/java/com/ard/utils/netty/tcp/BootNettyChannelInitializer.java b/src/main/java/com/ard/utils/netty/tcp/BootNettyChannelInitializer.java
deleted file mode 100644
index d87b9ff..0000000
--- a/src/main/java/com/ard/utils/netty/tcp/BootNettyChannelInitializer.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.ard.utils.netty.tcp;
-
-import io.netty.channel.ChannelInitializer;
-import io.netty.channel.socket.SocketChannel;
-import io.netty.handler.codec.string.StringDecoder;
-import io.netty.handler.codec.string.StringEncoder;
-import io.netty.util.CharsetUtil;
-
-public class BootNettyChannelInitializer extends ChannelInitializer<SocketChannel> {
-
-    @Override
-    protected void initChannel(SocketChannel ch){
-        //ch.pipeline().addLast("encoder", new StringEncoder(CharsetUtil.UTF_8));
-        //ch.pipeline().addLast("decoder", new StringDecoder(CharsetUtil.UTF_8));
-        /**
-         * 鑷畾涔塁hannelInboundHandlerAdapter
-         */
-        ch.pipeline().addLast(new BootNettyChannelInboundHandlerAdapter());
-    }
-}
\ No newline at end of file
diff --git a/src/main/java/com/ard/utils/netty/tcp/BootNettyClient.java b/src/main/java/com/ard/utils/netty/tcp/BootNettyClient.java
deleted file mode 100644
index 6a44e88..0000000
--- a/src/main/java/com/ard/utils/netty/tcp/BootNettyClient.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package com.ard.utils.netty.tcp;
-
-import com.ard.alarm.radar.domain.ArdEquipRadar;
-import com.ard.alarm.radar.service.IArdEquipRadarService;
-import com.ard.utils.netty.config.NettyTcpConfiguration;
-import io.netty.bootstrap.Bootstrap;
-import io.netty.channel.*;
-import io.netty.channel.nio.NioEventLoopGroup;
-import io.netty.channel.socket.nio.NioSocketChannel;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.boot.ApplicationArguments;
-import org.springframework.boot.ApplicationRunner;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-import java.nio.channels.SocketChannel;
-import java.util.List;
-
-@Slf4j(topic = "netty")
-@Component
-public class BootNettyClient {
-    @Resource
-    IArdEquipRadarService ardEquipRadarService;
-    @Resource
-    NettyTcpConfiguration nettyTcpConfig;
-
-
-    static Integer waitTimes = 1;
-    static EventLoopGroup eventLoopGroup = new NioEventLoopGroup();
-    /**
-     * 鍒濆鍖朆ootstrap
-     */
-    public static final Bootstrap getBootstrap(EventLoopGroup group) {
-        if (null == group) {
-            group = eventLoopGroup;
-        }
-        Bootstrap bootstrap = new Bootstrap();
-        bootstrap.group(group).channel(NioSocketChannel.class)
-                .option(ChannelOption.TCP_NODELAY, true)
-                .option(ChannelOption.SO_KEEPALIVE, true)
-                .handler(new BootNettyChannelInitializer());
-        return bootstrap;
-    }
-
-    public void connect(ArdEquipRadar radar) throws Exception {
-        String host = radar.getIp();
-        int port=radar.getPort();
-        log.debug("姝e湪杩涜杩炴帴锛氥��" + host+":"+port+"銆�");
-        eventLoopGroup.shutdownGracefully();
-        eventLoopGroup = new NioEventLoopGroup();
-        Bootstrap bootstrap = getBootstrap(null);
-
-        try {
-            bootstrap.remoteAddress(host, port);
-            // 寮傛杩炴帴tcp鏈嶅姟绔�
-            ChannelFuture future = bootstrap.connect().addListener((ChannelFuture futureListener) -> {
-                final EventLoop eventLoop = futureListener.channel().eventLoop();
-                if (futureListener.isSuccess()) {
-                    BootNettyClientChannel bootNettyClientChannel = new BootNettyClientChannel();
-                    Channel channel = futureListener.channel();
-                    String id = futureListener.channel().id().toString();
-//                    String id = host;
-                    bootNettyClientChannel.setChannel(channel);
-                    bootNettyClientChannel.setCode("clientId:" + id);
-                    BootNettyClientChannelCache.save("clientId:" + id, bootNettyClientChannel);
-                    BootNettyClientChannelCache.save(host+":"+port,radar);
-                    log.debug("netty client start success=" + id);
-                } else {
-//                    System.err.println("杩炴帴澶辫触锛�" + waitTimes.toString() + "绉掑悗閲嶆柊杩炴帴:" + host);
-                    try {
-                        Thread.sleep(waitTimes * 1000);
-                    } finally {
-                        connect(radar);
-                    }
-                }
-            });
-            future.channel().closeFuture().sync();
-        } catch (Exception e) {
-            System.err.println("杩炴帴寮傚父锛�" + waitTimes.toString() + "绉掑悗閲嶆柊杩炴帴:" + host);
-            try {
-                Thread.sleep(waitTimes * 1000);
-            } finally {
-                connect(radar);
-            }
-            e.printStackTrace();
-        } finally {
-            /**
-             * 閫�鍑猴紝閲婃斁璧勬簮
-             */
-            eventLoopGroup.shutdownGracefully().sync();
-        }
-
-    }
-    /**
-     * 鍒濆鍖栨柟娉�
-     */
-    public void run(ApplicationArguments args) {
-        if (!nettyTcpConfig.getEnabled()) {
-            return;
-        }
-        List<ArdEquipRadar> ardEquipRadars = ardEquipRadarService.selectArdEquipRadarList(new ArdEquipRadar());
-        for (ArdEquipRadar ardEquipRadar : ardEquipRadars) {
-            String host = ardEquipRadar.getIp();
-            Integer port = Integer.valueOf(ardEquipRadar.getPort());
-            log.debug("TCP client try to connect radar銆愶細" + host + ":" + port+"銆�");
-            BootNettyClientThread thread = new BootNettyClientThread(ardEquipRadar);
-            thread.start();
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/main/java/com/ard/utils/netty/tcp/BootNettyClientChannel.java b/src/main/java/com/ard/utils/netty/tcp/BootNettyClientChannel.java
deleted file mode 100644
index f8c9dba..0000000
--- a/src/main/java/com/ard/utils/netty/tcp/BootNettyClientChannel.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.ard.utils.netty.tcp;
-
-import io.netty.channel.Channel;
-import lombok.Data;
-
-@Data
-public class BootNettyClientChannel {
-
-    //    杩炴帴瀹㈡埛绔敮涓�鐨刢ode
-    private String code;
-
-    //    瀹㈡埛绔渶鏂板彂閫佺殑娑堟伅鍐呭
-    private String last_data;
-
-    private transient volatile Channel channel;
-}
\ No newline at end of file
diff --git a/src/main/java/com/ard/utils/netty/tcp/BootNettyClientChannelCache.java b/src/main/java/com/ard/utils/netty/tcp/BootNettyClientChannelCache.java
deleted file mode 100644
index 4d31833..0000000
--- a/src/main/java/com/ard/utils/netty/tcp/BootNettyClientChannelCache.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.ard.utils.netty.tcp;
-
-import com.ard.alarm.radar.domain.ArdEquipRadar;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-public class BootNettyClientChannelCache {
-    public static volatile Map<String, ArdEquipRadar> radarMapCache = new ConcurrentHashMap<String, ArdEquipRadar>();
-    public static volatile Map<String, BootNettyClientChannel> channelMapCache = new ConcurrentHashMap<String, BootNettyClientChannel>();
- 
-    public static void add(String code, BootNettyClientChannel channel){
-        channelMapCache.put(code,channel);
-    }
-    public static void addRadar(String code, ArdEquipRadar radar){
-        radarMapCache.put(code,radar);
-    }
-    public static BootNettyClientChannel get(String code){
-        return channelMapCache.get(code);
-    }
-    public static ArdEquipRadar getRadar(String code){
-        return radarMapCache.get(code);
-    }
-    public static void remove(String code){
-        channelMapCache.remove(code);
-    }
-    public static void removeRadar(String code){
-        radarMapCache.remove(code);
-    }
-    public static void save(String code, BootNettyClientChannel channel) {
-        if(channelMapCache.get(code) == null) {
-            add(code,channel);
-        }
-    }
-    public static void save(String code, ArdEquipRadar radar) {
-        if(radarMapCache.get(code) == null) {
-            addRadar(code,radar);
-        }
-    }
- 
-}
\ No newline at end of file
diff --git a/src/main/java/com/ard/utils/netty/tcp/BootNettyClientThread.java b/src/main/java/com/ard/utils/netty/tcp/BootNettyClientThread.java
deleted file mode 100644
index 8aa85ff..0000000
--- a/src/main/java/com/ard/utils/netty/tcp/BootNettyClientThread.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.ard.utils.netty.tcp;
-
-import com.ard.alarm.radar.domain.ArdEquipRadar;
-
-public class BootNettyClientThread extends Thread {
-
-    private final ArdEquipRadar ardEquipRadar;
-
-    public BootNettyClientThread(ArdEquipRadar ardEquipRadar){
-        this.ardEquipRadar = ardEquipRadar;
-    }
- 
-    public void run() {
-        try {
-            new BootNettyClient().connect(ardEquipRadar);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/main/java/com/ard/utils/netty/tcp/ClientHandler.java b/src/main/java/com/ard/utils/netty/tcp/ClientHandler.java
index c59dd32..6e12a61 100644
--- a/src/main/java/com/ard/utils/netty/tcp/ClientHandler.java
+++ b/src/main/java/com/ard/utils/netty/tcp/ClientHandler.java
@@ -8,7 +8,6 @@
 import com.ard.utils.util.GisUtils;
 import com.ard.utils.mqtt.MqttProducer;
 import io.netty.buffer.ByteBuf;
-import io.netty.channel.Channel;
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.ChannelId;
 import io.netty.channel.SimpleChannelInboundHandler;
@@ -17,7 +16,6 @@
 
 import javax.xml.bind.DatatypeConverter;
 import java.net.InetSocketAddress;
-import java.net.SocketAddress;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.concurrent.ScheduledFuture;
@@ -58,19 +56,19 @@
      */
     @Override
     public void channelInactive(ChannelHandlerContext ctx) throws Exception {
-        ChannelId id = ctx.channel().id();
         InetSocketAddress ipSocket = (InetSocketAddress) ctx.channel().remoteAddress();
-        int port = ipSocket.getPort();
-        String host = ipSocket.getHostString();
-        log.error("涓庤澶�" + host + ":" + port + "杩炴帴鏂紑!");
-        ArdEquipRadar ardEquipRadar = ClientInitialize.tureConnectMap.get(host+ ":" + port);
+        String ipPort = ipSocket.getHostString() + ":" + ipSocket.getPort();
+        log.error("涓庤澶�" + ipPort + "杩炴帴鏂紑!");
         // 杩炴帴鏂紑鍚庣殑鏈�鍚庡鐞�
         ctx.pipeline().remove(this);
         ctx.deregister();
         ctx.close();
-
         // 灏嗗け璐ヤ俊鎭彃鍏et闆嗗悎
-        ClientInitialize.falseConnectSet.add(ardEquipRadar);
+        ArdEquipRadar radar = ClientInitialize.trueConnectMap.get(ipPort);
+        if (radar != null) {
+            ClientInitialize.falseConnectSet.add(radar);
+            ClientInitialize.trueConnectMap.remove(ipPort);
+        }
         super.channelInactive(ctx);
     }
 
@@ -83,20 +81,26 @@
      * @throws Exception
      */
     @Override
-    public void channelRead0(ChannelHandlerContext ctx, ByteBuf msg) throws Exception {
+    public void channelRead0(ChannelHandlerContext ctx, ByteBuf msg) {
         InetSocketAddress ipSocket = (InetSocketAddress) ctx.channel().remoteAddress();
-        int port = ipSocket.getPort();
-        String host = ipSocket.getHostString();
-        ArdEquipRadar ardEquipRadar = ClientInitialize.tureConnectMap.get(host+":"+port);
-        MessageParsing messageParsing = ClientInitialize.MessageMap.get(host + ":" + port);
+        String ipPort = ipSocket.getHostString() + ":" + ipSocket.getPort();
+        ArdEquipRadar radar = ClientInitialize.trueConnectMap.get(ipPort);
+        if (radar == null) {
+            return;
+        }
+        MessageHandler messageHandler = ClientInitialize.SucMessageHandlerMap.get(ipPort);
+        if (messageHandler == null) {
+            return;
+        }
         // 澶勭悊鎺ユ敹鍒扮殑娑堟伅
         byte[] byteArray = new byte[msg.readableBytes()];
         msg.getBytes(msg.readerIndex(), byteArray);
-        byte[] bytes = messageParsing.receiveCompletePacket(byteArray);
+        byte[] bytes = messageHandler.receiveCompletePacket(byteArray);
         if (bytes != null) {
-            processData(ardEquipRadar, bytes);
+            processData(radar, bytes);
         }
     }
+
 
     /**
      * 閫氶亾鏁版嵁澶勭悊瀹屾垚
@@ -148,7 +152,7 @@
             byte[] payloadCrc32 = ByteUtils.parseCrc32(payload);
             byte[] footer = {0x01, 0x02, 0x00};
             byte[] heart = ByteUtils.appendArrays(header, payload, payloadCrc32, footer);
-//            byte[] heart = {0x01, 0x02, 0x01, 0x10, 0x00, 0x00, 0x00, (byte) 0x83, (byte) 0x88, 0x5d, 0x71, 0x01, 0x02, 0x00};
+            //byte[] heart = {0x01, 0x02, 0x01, 0x10, 0x00, 0x00, 0x00, (byte) 0x83, (byte) 0x88, 0x5d, 0x71, 0x01, 0x02, 0x00};
             String hexString = DatatypeConverter.printHexBinary(heart);
             // log.debug("鍙戦�佸績璺�:" + hexString);
             message.writeBytes(heart);
@@ -170,15 +174,15 @@
     /**
      * 瑙f瀽鎶ヨ鏁版嵁
      */
-    public void processData(ArdEquipRadar ardEquipRadarbyte, byte[] data) {
+    public void processData(ArdEquipRadar radar, byte[] data) {
         try {
-            String radarId = ardEquipRadarbyte.getId();
-            String radarName = ardEquipRadarbyte.getName();
-            Double radarLongitude = ardEquipRadarbyte.getLongitude();
-            Double radarLagitude = ardEquipRadarbyte.getLatitude();
-            Double radarAltitude = ardEquipRadarbyte.getAltitude();
+            String radarId = radar.getId();
+            String radarName = radar.getName();
+            Double radarLongitude = radar.getLongitude();
+            Double radarLagitude = radar.getLatitude();
+            Double radarAltitude = radar.getAltitude();
             //region crc鏍¢獙-鐩墠浠呯敤浜庢樉绀烘牎楠岀粨鏋�
-            Boolean crc32Check = MessageParsing.CRC32Check(data);
+            Boolean crc32Check = MessageHandler.CRC32Check(data);
             if (!crc32Check) {
                 log.debug("CRC32鏍¢獙涓嶉�氳繃");
             } else {
@@ -187,12 +191,12 @@
             //endregion
             //log.info("鍘熷鏁版嵁:" + DatatypeConverter.printHexBinary(data));
             //log.info("闆疯揪淇℃伅锛�" + host + "銆恜ort銆�" + port + "銆怷銆�" + longitude + "銆怸銆�" + lagitude + "銆怹銆�" + altitude);
-            data = MessageParsing.transferData(data);//鍘绘帀鍖呭ご鍜屽寘灏俱�佹牎楠屽強杞箟
+            data = MessageHandler.transferData(data);//鍘绘帀鍖呭ご鍜屽寘灏俱�佹牎楠屽強杞箟
             //region 璐熻浇澶磋В鏋�
             byte[] type = Arrays.copyOfRange(data, 0, 1);//鍛戒护绫诲瀷
             //  log.info("鍛戒护绫诲瀷:" + DatatypeConverter.printHexBinary(type));
             byte[] cmdId = Arrays.copyOfRange(data, 1, 2);//鍛戒护ID
-            String cmdIdStr=DatatypeConverter.printHexBinary(cmdId);
+            String cmdIdStr = DatatypeConverter.printHexBinary(cmdId);
             //log.info("鍛戒护ID:" + DatatypeConverter.printHexBinary(cmdId));
             byte[] payloadSize = Arrays.copyOfRange(data, 2, 4);//鏈夋晥璐熻浇澶у皬
             payloadSize = toLittleEndian(payloadSize);
@@ -206,7 +210,7 @@
             List<ArdAlarmRadar> well = new ArrayList<>();
             String alarmTime = "";
             Integer targetNum = 0;
-            log.debug("澶勭悊闆疯揪"+radarName+"鏁版嵁-->鍛戒护ID:"+cmdIdStr);
+            log.debug("澶勭悊闆疯揪" + radarName + "鏁版嵁-->鍛戒护ID:" + cmdIdStr);
             //闆疯揪绉诲姩闃茬伀鎶ヨ
             if (Arrays.equals(cmdId, new byte[]{0x01})) {
                 //region 鍛婅淇℃伅鍙嶉
@@ -315,15 +319,14 @@
                     double thetaRadians = Math.toRadians(fTy + 90);
                     // 浣跨敤姝e鸡鍑芥暟璁$畻瀵硅竟闀垮害
                     Distance = Math.sin(thetaRadians) * Distance;
-                    if(Distance<0)
-                    {
+                    if (Distance < 0) {
                         continue;//杩囨护璺濈灏忎簬0鐨勮剰鏁版嵁
                     }
                     //log.debug("鐩爣鎶曞奖璺濈(m):" + Distance);
 
                     Double[] radarXY = {radarLongitude, radarLagitude};
                     Double[] alarmXY = GisUtils.CalculateCoordinates(radarXY, Distance, (double) fTx);
-                    log.debug("鎶ヨ淇℃伅锛�" + "銆恟adarName銆�" + radarName + "銆恡argetId銆�"+ targetId  + "銆恆larmType銆�" + alarmType + "銆恆larmTime銆�" + alarmTime + "銆恘ame銆�" + alarmPointName+"銆怐istance銆�"+Distance);
+                    log.debug("鎶ヨ淇℃伅锛�" + "銆恟adarName銆�" + radarName + "銆恡argetId銆�" + targetId + "銆恆larmType銆�" + alarmType + "銆恆larmTime銆�" + alarmTime + "銆恘ame銆�" + alarmPointName + "銆怐istance銆�" + Distance);
                     ArdAlarmRadar ardAlarmRadar = new ArdAlarmRadar();
                     ardAlarmRadar.setTargetId(targetId);
                     ardAlarmRadar.setName(alarmPointName);
@@ -350,7 +353,7 @@
                 radarAlarmData.setAlarmTime(alarmTime);
                 radarAlarmData.setArdAlarmRadars(radarAlarmInfos);
                 MqttProducer.publish(2, false, "radar", JSON.toJSONString(radarAlarmData));
-                if (radarFollowInfos.size() >0) {
+                if (radarFollowInfos.size() > 0) {
                     radarAlarmData.setArdFollowRadars(radarFollowInfos);
                     //褰撳墠闆疯揪鎵弿瀛樺湪寮曞璺熻釜鏁版嵁锛屽彧淇濈暀鏈�鍚庝竴娆¢攣瀹氱殑鏁版嵁
                     MqttProducer.publish(2, false, "radarFollowGuide", JSON.toJSONString(radarAlarmData));
@@ -437,7 +440,7 @@
                         //log.info("鎵�灞炲憡璀﹀尯鍩熷悕绉�:" + DatatypeConverter.printHexBinary(szName));
                         String alarmPointName = ByteUtils.bytesToStringZh(szName);
                         // log.info("鎵�灞炲憡璀﹀尯鍩熷悕绉�:" + alarmPointName);
-                        log.debug("鎶ヨ淇℃伅锛�"+ "銆恟adarName銆�" + radarName + "銆恡argetId銆�" + targetId + "銆恘ame銆�" + alarmPointName + "銆恆larmType銆�" + alarmType + "銆恆larmTime銆�" + alarmTime);
+                        log.debug("鎶ヨ淇℃伅锛�" + "銆恟adarName銆�" + radarName + "銆恡argetId銆�" + targetId + "銆恘ame銆�" + alarmPointName + "銆恆larmType銆�" + alarmType + "銆恆larmTime銆�" + alarmTime);
                         ArdAlarmRadar ardAlarmRadar = new ArdAlarmRadar();
                         ardAlarmRadar.setTargetId(targetId);
                         ardAlarmRadar.setName(alarmPointName);
diff --git a/src/main/java/com/ard/utils/netty/tcp/ClientHelper.java b/src/main/java/com/ard/utils/netty/tcp/ClientHelper.java
deleted file mode 100644
index cbad3c0..0000000
--- a/src/main/java/com/ard/utils/netty/tcp/ClientHelper.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.ard.utils.netty.tcp;
-
-import com.ard.utils.util.ByteUtils;
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.Unpooled;
-import org.springframework.scheduling.annotation.EnableScheduling;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-import javax.xml.bind.DatatypeConverter;
-import java.util.Map;
-
-@Component
-@EnableScheduling
-public class ClientHelper {
-
-    //  浣跨敤瀹氭椂鍣ㄥ彂閫佸績璺�
-    @Scheduled(cron = "0/3 * * * * ?")
-    public void heart_timer() {
-        //System.err.println("BootNettyClientChannelCache.channelMapCache.size():" + BootNettyClientChannelCache.channelMapCache.size());
-        if (BootNettyClientChannelCache.channelMapCache.size() > 0) {
-            for (Map.Entry<String, BootNettyClientChannel> entry : BootNettyClientChannelCache.channelMapCache.entrySet()) {
-                BootNettyClientChannel bootNettyChannel = entry.getValue();
-                //System.out.println(bootNettyChannel.getCode());
-                try {
-                    byte[] header = {0x01, 0x02, 0x01};
-                    byte[] payload = {0x10, 0x00, 0x00, 0x00};
-                    byte[] payloadCrc32 = ByteUtils.parseCrc32(payload);
-                    byte[] footer = {0x01, 0x02, 0x00};
-                    byte[] heart = ByteUtils.appendArrays(header, payload, payloadCrc32, footer);
-                    // log.debug("鍙戦�佸績璺�:" + hexString);
-                    //message.writeBytes(heart);
-                    bootNettyChannel.getChannel().writeAndFlush(Unpooled.buffer().writeBytes(heart));
-                } catch (Exception e) {
-                    continue;
-                }
-            }
-        }
-
-    }
-}
\ No newline at end of file
diff --git a/src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java b/src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java
index ddd4f9c..b30b2b5 100644
--- a/src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java
+++ b/src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java
@@ -1,13 +1,5 @@
 package com.ard.utils.netty.tcp;
 
-/**
- * @Description:
- * @ClassName: init
- * @Author: 鍒樿嫃涔�
- * @Date: 2023骞�07鏈�05鏃�13:11
- * @Version: 1.0
- **/
-
 import com.ard.alarm.radar.domain.ArdEquipRadar;
 import com.ard.alarm.radar.service.IArdEquipRadarService;
 import com.ard.utils.netty.config.NettyTcpConfiguration;
@@ -37,17 +29,18 @@
 @Component
 @Slf4j(topic = "netty")
 @Order(2)
-public class ClientInitialize implements ApplicationRunner{
+public class ClientInitialize implements ApplicationRunner {
     @Resource
     NettyTcpConfiguration nettyTcpConfig;
     @Resource
     IArdEquipRadarService ardEquipRadarService;
 
     private Bootstrap bootstrap;
-    public static CopyOnWriteArraySet<ArdEquipRadar> falseConnectSet = new CopyOnWriteArraySet();
-    public static ConcurrentHashMap<String, ArdEquipRadar> tureConnectMap = new ConcurrentHashMap();
-    public static ConcurrentHashMap<String, Object> SuccessConnectMap = new ConcurrentHashMap();
-    public static ConcurrentHashMap<String, MessageParsing> MessageMap = new ConcurrentHashMap();
+    public static CopyOnWriteArraySet<ArdEquipRadar> falseConnectSet = new CopyOnWriteArraySet();//澶辫触杩炴帴鐨勯浄杈維et
+    public static ConcurrentHashMap<String, ArdEquipRadar> trueConnectMap = new ConcurrentHashMap();//鎴愬姛杩炴帴鐨刬p绔彛瀵瑰簲鐨勯浄杈�
+    public static ConcurrentHashMap<String, MessageHandler> SucMessageHandlerMap = new ConcurrentHashMap();//鎴愬姛杩炴帴鐨刬p绔彛瀵瑰簲鐨勬姤鏂囪В鏋愬櫒
+    public static ConcurrentHashMap<String, Channel> SucChannelMap = new ConcurrentHashMap();//鎴愬姛杩炴帴鐨刬p绔彛瀵瑰簲鐨刵etty閫氶亾
+
     /**
      * Netty鍒濆鍖栭厤缃�
      */
@@ -65,7 +58,7 @@
                     }
                 });
 
-        // 寮傛鎸佺画鐩戝惉杩炴帴澶辫触鐨勫湴鍧�
+        //寮傛鎸佺画鐩戝惉杩炴帴澶辫触鐨勫湴鍧�
         CompletableFuture.runAsync(new Runnable() {
             @Override
             public void run() {
@@ -75,8 +68,8 @@
                             // 寰幆闆嗗悎鍐呭厓绱�
                             falseConnectSet.forEach(new Consumer<ArdEquipRadar>() {
                                 @Override
-                                public void accept(ArdEquipRadar ardEquipRadar) {
-                                    connectServer(ardEquipRadar);
+                                public void accept(ArdEquipRadar radar) {
+                                    connectServer(radar);
                                 }
                             });
                         }
@@ -99,24 +92,23 @@
         // 鑾峰彇鍦板潃鍙婄鍙�
         String host = ardEquipRadar.getIp();
         Integer port = ardEquipRadar.getPort();
+        String ipPort = host + ":" + port;
         // 寮傛杩炴帴tcp鏈嶅姟绔�
         bootstrap.remoteAddress(host, port).connect().addListener((ChannelFuture futureListener) -> {
-            if (!futureListener.isSuccess()) {
-                log.debug("闆疯揪銆�" + host + ":" + port + "銆戣繛鎺ュけ璐�");
-                futureListener.channel().close();
-                // 杩炴帴澶辫触淇℃伅鎻掑叆Set
-                falseConnectSet.add(ardEquipRadar);
-                // 杩炴帴澶辫触淇℃伅浠巑ap绉婚櫎
-                tureConnectMap.remove( host + ":" + port);
-                SuccessConnectMap.remove(ardEquipRadar.getId());
-            } else {
-                log.debug("闆疯揪銆�" + host + ":" + port + "銆戣繛鎺ユ垚鍔�");
+            if (futureListener.isSuccess()) {
+                log.debug("闆疯揪銆�" + ipPort + "銆戣繛鎺ユ垚鍔�");
                 // 杩炴帴鎴愬姛淇℃伅浠嶴et鎷旈櫎
                 falseConnectSet.remove(ardEquipRadar);
                 // 杩炴帴鎴愬姛淇℃伅鍐欏叆map
-                tureConnectMap.put(host+":"+port, ardEquipRadar);
-                MessageMap.put(host+":"+port,new MessageParsing());
-                SuccessConnectMap.put(ardEquipRadar.getId(),futureListener.channel());
+                trueConnectMap.put(ipPort, ardEquipRadar);
+                SucMessageHandlerMap.put(ipPort, new MessageHandler());
+                SucChannelMap.put(ipPort, futureListener.channel());
+            } else {
+                log.debug("闆疯揪銆�" + ipPort + "銆戣繛鎺ュけ璐�");
+                futureListener.channel().close();
+                // 杩炴帴澶辫触淇℃伅鎻掑叆Set
+                falseConnectSet.add(ardEquipRadar);
+
             }
         });
     }
@@ -134,7 +126,7 @@
         for (ArdEquipRadar ardEquipRadar : ardEquipRadars) {
             String host = ardEquipRadar.getIp();
             Integer port = Integer.valueOf(ardEquipRadar.getPort());
-            log.debug("TCP client try to connect radar銆�" + host + ":" + port+"銆�");
+            log.debug("TCP client try to connect radar銆�" + host + ":" + port + "銆�");
             connectServer(ardEquipRadar);//杩炴帴姣忎竴涓浄杈炬湇鍔�
         }
     }
diff --git a/src/main/java/com/ard/utils/netty/tcp/DynamicClient.java b/src/main/java/com/ard/utils/netty/tcp/DynamicClient.java
deleted file mode 100644
index 82dfcdc..0000000
--- a/src/main/java/com/ard/utils/netty/tcp/DynamicClient.java
+++ /dev/null
@@ -1,151 +0,0 @@
-package com.ard.utils.netty.tcp;
-
-import com.ard.alarm.radar.domain.ArdEquipRadar;
-import com.ard.alarm.radar.service.IArdEquipRadarService;
-import com.ard.utils.netty.config.NettyTcpConfiguration;
-import io.netty.bootstrap.Bootstrap;
-import io.netty.channel.*;
-import io.netty.channel.nio.NioEventLoopGroup;
-import io.netty.channel.socket.nio.NioSocketChannel;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.boot.ApplicationArguments;
-import org.springframework.boot.ApplicationRunner;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.TimeUnit;
-
-
-/**
- * @Description: 闆疯揪鍔ㄦ�乼cp瀹㈡埛绔紙澶囩敤锛�
- * @ClassName: DynamicClient
- * @Author: 鍒樿嫃涔�
- * @Date: 2023骞�11鏈�30鏃�9:25:48
- **/
-@Slf4j(topic = "netty")
-@Component
-public class DynamicClient{
-    @Resource
-    IArdEquipRadarService ardEquipRadarService;
-    @Resource
-    NettyTcpConfiguration nettyTcpConfig;
-
-    private static List<Channel> serverChannels = new ArrayList<>();
-    public static ConcurrentHashMap<Channel, ArdEquipRadar> ConnectMap = new ConcurrentHashMap();
-
-    public static void main(String[] args) throws InterruptedException {
-        EventLoopGroup group = new NioEventLoopGroup();
-        Bootstrap bootstrap = new Bootstrap();
-        bootstrap.group(group)
-                .channel(NioSocketChannel.class)
-                .option(ChannelOption.TCP_NODELAY, true)
-                .option(ChannelOption.SO_KEEPALIVE, true)
-                .handler(new DynamicClientInitializer());
-
-        DynamicClient dynamicClient = new DynamicClient();
-        ArdEquipRadar radar1 = new ArdEquipRadar();
-        radar1.setName("511");
-        radar1.setIp("112.98.126.2");
-        radar1.setPort(1200);
-        dynamicClient.connect(bootstrap, radar1);
-
-        Thread.sleep(2000); // 绛夊緟杩炴帴寤虹珛
-
-        // 妯℃嫙鍔ㄦ�佸鍔犱竴涓湇鍔$
-        ArdEquipRadar radar2 = new ArdEquipRadar();
-        radar2.setName("140");
-        radar2.setIp("112.98.126.2");
-        radar2.setPort(1201);
-        dynamicClient.connect(bootstrap, radar2);
-
-    }
-
-    public void connectToServer(ArdEquipRadar radar) {
-        EventLoopGroup group = new NioEventLoopGroup();
-        try {
-            Bootstrap bootstrap = new Bootstrap();
-            bootstrap.group(group)
-                    .channel(NioSocketChannel.class)
-                    .option(ChannelOption.TCP_NODELAY, true)
-                    .option(ChannelOption.SO_KEEPALIVE, true)
-                    .handler(new DynamicClientInitializer());
-            // 杩炴帴鏈嶅姟绔�
-            ChannelFuture channelFuture = bootstrap.connect(radar.getIp(), radar.getPort()).sync();
-            Channel serverChannel = channelFuture.channel();
-            // 灏嗚繛鎺ョ殑鏈嶅姟绔� Channel 娣诲姞鍒扮鐞嗗垪琛�
-            serverChannels.add(serverChannel);
-            ConnectMap.put(serverChannel, radar);
-            log.debug("闆疯揪銆�" + radar.getIp() + ":" + radar.getPort() + "銆戣繛鎺ユ垚鍔�");
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    public Channel connect(Bootstrap bootstrap, ArdEquipRadar radar) {
-        ChannelFuture future = bootstrap.connect(radar.getIp(), radar.getPort());
-        future.addListener((ChannelFutureListener) futureListener -> {
-            if (futureListener.isSuccess()) {
-                log.info("Connected to radar device: " + radar.getName() + "銆�" + radar.getIp() + ":" + radar.getPort() + "銆�" + " successful");
-                // 鍦ㄨ繛鎺ュ缓绔嬪悗锛屼綘鍙互鍦ㄨ繖閲屾坊鍔犱笟鍔¢�昏緫鎴栧叾浠栧鐞�
-                serverChannels.add(future.channel());
-                ConnectMap.put(future.channel(), radar);
-            } else {
-                log.error("Connection to radar device " + radar.getName() + "銆�" + radar.getIp() + ":" + radar.getPort() + "銆�" + " failed. Retrying...");
-                // 杩炴帴澶辫触鏃讹紝瀹氭椂杩涜閲嶈繛
-                futureListener.channel().eventLoop().schedule(
-                        () -> connect(bootstrap, radar),
-                        1L, TimeUnit.SECONDS
-                );
-            }
-        });
-
-        return future.channel();
-    }
-
-    // 鍦ㄨ繛鎺ュ缓绔嬪悗鍙互閫氳繃璋冪敤杩欎釜鏂规硶鍚戞寚瀹氱殑鏈嶅姟绔彂閫佹暟鎹�
-    public void sendDataToServer(Channel serverChannel, Object data) {
-        serverChannel.writeAndFlush(data);
-    }
-
-    // 鍏抽棴鎸囧畾鐨勬湇鍔$杩炴帴
-    public void closeServerConnection(Channel serverChannel) {
-        serverChannel.close();
-        serverChannels.remove(serverChannel);
-    }
-
-    // 鍏抽棴鎵�鏈夋湇鍔$杩炴帴
-    public void closeAllServerConnections() {
-        for (Channel serverChannel : serverChannels) {
-            serverChannel.close();
-        }
-        serverChannels.clear();
-    }
-
-    /**
-     * 鍒濆鍖栨柟娉�
-     */
-
-    public void run(ApplicationArguments args) {
-        if (!nettyTcpConfig.getEnabled()) {
-            return;
-        }
-        EventLoopGroup group = new NioEventLoopGroup();
-        Bootstrap bootstrap = new Bootstrap();
-        bootstrap.group(group)
-                .channel(NioSocketChannel.class)
-                .option(ChannelOption.TCP_NODELAY, true)
-                .option(ChannelOption.SO_KEEPALIVE, true)
-                .handler(new DynamicClientInitializer());
-        List<ArdEquipRadar> ardEquipRadars = ardEquipRadarService.selectArdEquipRadarList(new ArdEquipRadar());
-        for (ArdEquipRadar ardEquipRadar : ardEquipRadars) {
-            String host = ardEquipRadar.getIp();
-            Integer port = Integer.valueOf(ardEquipRadar.getPort());
-            log.debug("TCP client try to connect radar銆愶細" + host + ":" + port + "銆�");
-           // connectServer(ardEquipRadar);//杩炴帴姣忎竴涓浄杈炬湇鍔�
-            connect(bootstrap, ardEquipRadar);
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/main/java/com/ard/utils/netty/tcp/DynamicClientHandler.java b/src/main/java/com/ard/utils/netty/tcp/DynamicClientHandler.java
deleted file mode 100644
index 1809740..0000000
--- a/src/main/java/com/ard/utils/netty/tcp/DynamicClientHandler.java
+++ /dev/null
@@ -1,436 +0,0 @@
-package com.ard.utils.netty.tcp;
-
-import com.alibaba.fastjson2.JSON;
-import com.ard.alarm.radar.domain.ArdAlarmRadar;
-import com.ard.alarm.radar.domain.ArdEquipRadar;
-import com.ard.alarm.radar.domain.RadarAlarmData;
-import com.ard.utils.mqtt.MqttProducer;
-import com.ard.utils.util.ByteUtils;
-import com.ard.utils.util.GisUtils;
-import io.netty.buffer.ByteBuf;
-import io.netty.channel.Channel;
-import io.netty.channel.ChannelHandlerContext;
-import io.netty.channel.SimpleChannelInboundHandler;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import javax.xml.bind.DatatypeConverter;
-import java.text.SimpleDateFormat;
-import java.util.*;
-import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.TimeUnit;
-import static com.ard.utils.util.ByteUtils.byteToBitString;
-import static com.ard.utils.util.ByteUtils.toLittleEndian;
-
-/**
- * @Description: 瀹㈡埛绔暟鎹鐞嗗櫒锛堝鐢級
- * @ClassName: DynamicClientHandler
- * @Author: 鍒樿嫃涔�
- * @Date: 2023骞�11鏈�30鏃�9:27:55
- **/
-@Slf4j(topic = "netty")
-class DynamicClientHandler extends SimpleChannelInboundHandler<ByteBuf> {
-    /**
-     * 杩炴帴寤虹珛
-     *
-     * @param ctx
-     * @throws Exception
-     */
-    @Override
-    public void channelActive(ChannelHandlerContext ctx) {
-        context = ctx;
-        startHeartbeatTask();//寮�濮嬪彂閫佸績璺�
-    }
-
-    @Override
-    protected void channelRead0(ChannelHandlerContext ctx, ByteBuf msg) {
-        // 澶勭悊鎺ユ敹鍒扮殑鏁版嵁
-        Channel channel = ctx.channel();
-        ArdEquipRadar ardEquipRadar = DynamicClient.ConnectMap.get(channel);
-        // 澶勭悊鎺ユ敹鍒扮殑娑堟伅
-        //byte[] byteArray = new byte[msg.readableBytes()];
-        //msg.getBytes(msg.readerIndex(), byteArray);
-        //byte[] bytes = messageParsing.receiveCompletePacket(byteArray);
-        //if (bytes != null) {
-        //    processData(ardEquipRadar, bytes);
-        //}
-    }
-
-    @Override
-    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
-        // 澶勭悊寮傚父
-        // ...
-        log.error("澶勭悊寮傚父"+cause.getMessage());
-    }
-
-    private ScheduledFuture<?> heartbeatTask;
-    private ChannelHandlerContext context;
-
-    /**
-     * 寮�濮嬪績璺充换鍔�
-     */
-    private void startHeartbeatTask() {
-        heartbeatTask = context.executor().scheduleAtFixedRate(() -> {
-            // 鍙戦�佸績璺虫秷鎭�
-            ByteBuf message = context.alloc().buffer();
-            byte[] header = {0x01, 0x02, 0x01};
-            byte[] payload = {0x10, 0x00, 0x00, 0x00};
-            byte[] payloadCrc32 = ByteUtils.parseCrc32(payload);
-            byte[] footer = {0x01, 0x02, 0x00};
-            byte[] heart = ByteUtils.appendArrays(header, payload, payloadCrc32, footer);
-//            byte[] heart = {0x01, 0x02, 0x01, 0x10, 0x00, 0x00, 0x00, (byte) 0x83, (byte) 0x88, 0x5d, 0x71, 0x01, 0x02, 0x00};
-            String hexString = DatatypeConverter.printHexBinary(heart);
-            // log.debug("鍙戦�佸績璺�:" + hexString);
-            message.writeBytes(heart);
-            context.writeAndFlush(message);
-
-        }, 0, 5, TimeUnit.SECONDS);
-    }
-
-    /**
-     * 鍋滄蹇冭烦浠诲姟
-     */
-    private void stopHeartbeatTask() {
-        if (heartbeatTask != null) {
-            heartbeatTask.cancel(false);
-            heartbeatTask = null;
-        }
-    }
-
-    /**
-     * 瑙f瀽鎶ヨ鏁版嵁
-     */
-    public void processData(ArdEquipRadar ardEquipRadarbyte, byte[] data) {
-        try {
-            String radarId = ardEquipRadarbyte.getId();
-            String radarName = ardEquipRadarbyte.getName();
-            Double radarLongitude = ardEquipRadarbyte.getLongitude();
-            Double radarLagitude = ardEquipRadarbyte.getLatitude();
-            Double radarAltitude = ardEquipRadarbyte.getAltitude();
-            //region crc鏍¢獙-鐩墠浠呯敤浜庢樉绀烘牎楠岀粨鏋�
-            Boolean crc32Check = MessageParsing.CRC32Check(data);
-            if (!crc32Check) {
-                log.debug("CRC32鏍¢獙涓嶉�氳繃");
-            } else {
-                //log.debug("CRC32鏍¢獙閫氳繃");
-            }
-            //endregion
-            //log.info("鍘熷鏁版嵁:" + DatatypeConverter.printHexBinary(data));
-            //log.info("闆疯揪淇℃伅锛�" + host + "銆恜ort銆�" + port + "銆怷銆�" + longitude + "銆怸銆�" + lagitude + "銆怹銆�" + altitude);
-            data = MessageParsing.transferData(data);//鍘绘帀鍖呭ご鍜屽寘灏俱�佹牎楠屽強杞箟
-            //region 璐熻浇澶磋В鏋�
-            byte[] type = Arrays.copyOfRange(data, 0, 1);//鍛戒护绫诲瀷
-            //  log.info("鍛戒护绫诲瀷:" + DatatypeConverter.printHexBinary(type));
-            byte[] cmdId = Arrays.copyOfRange(data, 1, 2);//鍛戒护ID
-            String cmdIdStr = DatatypeConverter.printHexBinary(cmdId);
-            //log.info("鍛戒护ID:" + DatatypeConverter.printHexBinary(cmdId));
-            byte[] payloadSize = Arrays.copyOfRange(data, 2, 4);//鏈夋晥璐熻浇澶у皬
-            payloadSize = toLittleEndian(payloadSize);
-            //log.info("payloadSize:" + DatatypeConverter.printHexBinary(payloadSize));
-            int payloadSizeToDecimal = ByteUtils.bytesToDecimal(payloadSize);
-            // log.info("鏈夋晥璐熻浇澶у皬(杞暣鍨�):" + payloadSizeToDecimal);
-            //endregion
-            List<ArdAlarmRadar> radarAlarmInfos = new ArrayList<>();
-            ArdAlarmRadar radarFollowInfo = null;
-            //鎶芥补鏈虹姸鎬侀浄杈炬帹閫侀泦鍚�
-            List<ArdAlarmRadar> well = new ArrayList<>();
-            String alarmTime = "";
-            Integer targetNum = 0;
-            log.debug("Processing radar data 銆�" + radarName + "銆戞暟鎹�-->鍛戒护ID:"  + cmdIdStr + "浜岃繘鍒�:" + byteToBitString(cmdId[0]));
-            //闆疯揪绉诲姩闃茬伀鎶ヨ
-            if (Arrays.equals(cmdId, new byte[]{0x01})) {
-                //region 鍛婅淇℃伅鍙嶉
-                byte[] dwTim = Arrays.copyOfRange(data, 4, 8);
-                dwTim = toLittleEndian(dwTim);
-                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                long l = ByteUtils.bytesToDecimal(dwTim);
-                alarmTime = sdf.format(l * 1000);
-                // log.info("鍛ㄨ鍥惧儚鐨勫嚭鐜版椂闂�(杞琩ate):" + alarmTime);
-
-                byte[] wTargetNum = Arrays.copyOfRange(data, 8, 10);
-                wTargetNum = toLittleEndian(wTargetNum);
-                targetNum = ByteUtils.bytesToDecimal(wTargetNum);
-                if (targetNum == 0) {
-                    return;
-                }
-                //log.debug("鐩爣鎬荤偣鏁�(杞暣鍨�):" + targetNum);
-
-                //瑙f瀽NET_TARGET_UNIT(64鏄疦ET_TARGET_HEAD鐨勫瓧鑺傛暟)
-                int uintSize = (payloadSizeToDecimal - 64) / targetNum;
-                // log.info("鍗曟潯鎶ヨ澶у皬:" + uintSize);
-
-                for (int i = 0; i < targetNum; i++) {
-
-                    Integer index = 68 + uintSize * i;
-                    byte[] dwID = Arrays.copyOfRange(data, index, index + 4);
-                    // log.info("鐩爣ID:" + DatatypeConverter.printHexBinary(cmdId));
-                    dwID = toLittleEndian(dwID);
-                    int targetId = ByteUtils.bytesToDecimal(dwID);
-                    // log.info("鐩爣ID鍙凤細" + targetId);
-
-                    byte[] iDistance = Arrays.copyOfRange(data, index + 8, index + 12);
-                    iDistance = toLittleEndian(iDistance);
-                    double Distance = ByteUtils.bytesToDecimal(iDistance);
-                    //log.debug("鐩爣褰撳墠鐩寸嚎璺濈(m):" + Distance);
-
-                    //region 涓嶉渶瑕佺殑瀛楁
-//                    byte[] dwGSum = Arrays.copyOfRange(data, index + 4, index + 8);
-//                    dwGSum = toLittleEndian(dwGSum);
-//                    int GSum = byteArrayToDecimal(dwGSum);
-//                    log.info("鐩爣褰撳墠鍍忕礌鐏板害鍜岋細" + GSum);
-//                    byte[] iTw = Arrays.copyOfRange(data, index + 12, index + 16);
-//                    iTw = toLittleEndian(iTw);
-//                    int Tw = byteArrayToDecimal(iTw);
-//                    log.info("鐩爣褰撳墠鐨勫儚绱犲搴�:" + Tw);
-//
-//                    byte[] iTh = Arrays.copyOfRange(data, index + 16, index + 20);
-//                    iTh = toLittleEndian(iTh);
-//                    int Th = byteArrayToDecimal(iTh);
-//                    log.info("鐩爣褰撳墠鐨勫儚绱犻珮搴�:" + Th);
-//
-//                    byte[] wPxlArea = Arrays.copyOfRange(data, index + 20, index + 22);
-//                    wPxlArea = toLittleEndian(wPxlArea);
-//                    int PxlArea = byteArrayToDecimal(wPxlArea);
-//                    log.info("鐩爣褰撳墠鍍忕礌闈㈢Н:" + PxlArea);
-//
-//                    byte[] cTrkNum = Arrays.copyOfRange(data, index + 22, index + 23);
-//                    cTrkNum = toLittleEndian(cTrkNum);
-//                    int TrkNum = byteArrayToDecimal(cTrkNum);
-//                    log.info("杞ㄨ抗鐐规暟:" + TrkNum);
-
-//                    byte[] sVx = Arrays.copyOfRange(data, index + 24, index + 26);
-//                    sVx = toLittleEndian(sVx);
-//                    int Vx = byteArrayToDecimal(sVx);
-//                    log.info("鐩爣褰撳墠閫熷害鐭㈤噺(鍍忕礌璺濈)X:" + Vx);
-//
-//                    byte[] sVy = Arrays.copyOfRange(data, index + 26, index + 28);
-//                    sVy = toLittleEndian(sVy);
-//                    int Vy = byteArrayToDecimal(sVy);
-//                    log.info("鐩爣褰撳墠閫熷害鐭㈤噺(鍍忕礌璺濈)Y:" + Vy);
-//
-//                    byte[] sAreaNo = Arrays.copyOfRange(data, index + 28, index + 30);
-//                    sAreaNo = toLittleEndian(sAreaNo);
-//                    int AreaNo = byteArrayToDecimal(sAreaNo);
-//                    log.info("鐩爣褰掑睘鐨勫憡璀﹀尯鍩熷彿:" + AreaNo);
-//
-//                    byte[] cGrp = Arrays.copyOfRange(data, index + 30, index + 31);
-//                    cGrp = toLittleEndian(cGrp);
-//                    int Grp = byteArrayToDecimal(cGrp);
-//                    log.info("鎵�灞炵粍:" + Grp);
-                    //endregion
-                    String alarmType = "";
-                    byte[] cStat = Arrays.copyOfRange(data, index + 23, index + 24);
-                    log.info("鍘熷鐘舵��:" + byteToBitString(cStat[0]));
-                    // cStat = toLittleEndian(cStat);
-                    // 鎻愬彇绗�4浣嶈嚦绗�6浣嶇殑鍊�
-                    int extractedValue = (cStat[0] >> 4) & 0b00001111;
-                    // 鍒ゆ柇鎻愬彇鐨勫��
-                    if (extractedValue == 0b0000) {
-                        alarmType = "杩愬姩鐩爣妫�娴�";
-                    } else if (extractedValue == 0b0001) {
-                        alarmType = "鐑簮妫�娴�";
-                    }
-                    // log.info("鎶ヨ绫诲瀷:" + alarmType);
-                    byte[] szName = Arrays.copyOfRange(data, index + 64, index + 96);
-                    String alarmPointName = ByteUtils.bytesToStringZh(szName);
-                    // log.info("鎵�灞炲憡璀﹀尯鍩熷悕绉�:" + alarmPointName);
-                    byte[] afTx = Arrays.copyOfRange(data, index + 96, index + 100);
-                    afTx = toLittleEndian(afTx);
-                    float fTx = ByteUtils.bytesToFloat(afTx);
-                    //  log.info("姘村钩瑙掑害:" + fTx);
-                    byte[] afTy = Arrays.copyOfRange(data, index + 112, index + 116);
-                    afTy = toLittleEndian(afTy);
-                    float fTy = ByteUtils.bytesToFloat(afTy);
-                    //log.debug("鍨傜洿瑙掑害:" + fTy);
-                    // 灏嗚搴﹁浆鎹负寮у害
-                    double thetaRadians = Math.toRadians(fTy + 90);
-                    // 浣跨敤姝e鸡鍑芥暟璁$畻瀵硅竟闀垮害
-                    Distance = Math.sin(thetaRadians) * Distance;
-                    //log.debug("鐩爣鎶曞奖璺濈(m):" + Distance);
-
-                    Double[] radarXY = {radarLongitude, radarLagitude};
-                    Double[] alarmXY = GisUtils.CalculateCoordinates(radarXY, Distance, (double) fTx);
-                    log.debug("鎶ヨ淇℃伅锛�" + "銆恟adarName銆�" + radarName + "銆恡argetId銆�" + targetId + "銆恆larmType銆�" + alarmType + "銆恆larmTime銆�" + alarmTime + "銆恘ame銆�" + alarmPointName);
-                    ArdAlarmRadar ardAlarmRadar = new ArdAlarmRadar();
-                    ardAlarmRadar.setTargetId(targetId);
-                    ardAlarmRadar.setName(alarmPointName);
-                    ardAlarmRadar.setLongitude(alarmXY[0]);
-                    ardAlarmRadar.setLatitude(alarmXY[1]);
-                    ardAlarmRadar.setAlarmType(alarmType);
-                    radarAlarmInfos.add(ardAlarmRadar);
-
-                    int bit1 = (cStat[0] >> 1) & 0x1;
-                    //鐩爣鐨凚1=1 閿佸畾
-                    if (bit1 == 1) {
-                        radarFollowInfo = ardAlarmRadar;
-                        //灏嗚拷韪攣瀹氱殑鎶ヨ瀵硅薄灞炴�у鍒剁粰radarFollowInfo瀵硅薄
-                        //BeanUtils.copyProperties(ardAlarmRadar, radarFollowInfo);
-                    }
-                }
-                //endregion
-                if (StringUtils.isEmpty(alarmTime)) {
-                    return;
-                }
-                if (targetNum == 0) {
-                    return;
-                }
-                RadarAlarmData radarAlarmData = new RadarAlarmData();
-                radarAlarmData.setRadarId(radarId);
-                radarAlarmData.setRadarName(radarName);
-                radarAlarmData.setAlarmTime(alarmTime);
-                radarAlarmData.setArdAlarmRadars(radarAlarmInfos);
-                MqttProducer.publish(2, false, "radar", JSON.toJSONString(radarAlarmData));
-                if (radarFollowInfo != null) {
-                    //褰撳墠闆疯揪鎵弿瀛樺湪寮曞璺熻釜鏁版嵁锛屽彧淇濈暀鏈�鍚庝竴娆¢攣瀹氱殑鏁版嵁
-                    MqttProducer.publish(2, false, "radarFollowGuide", JSON.toJSONString(radarFollowInfo));
-                }
-                //鎶芥补鏈虹姸鎬丮QTT闃熷垪
-                radarAlarmData.setArdAlarmRadars(well);
-                MqttProducer.publish(2, false, "radarWellData", JSON.toJSONString(radarAlarmData));
-
-            }
-            //鎶芥补鏈篈I鐘舵�佸弽棣�
-            if (Arrays.equals(cmdId, new byte[]{0x04})) {
-                //region鎶芥补鏈篈I鐘舵�佸弽棣�
-                String hexString = DatatypeConverter.printHexBinary(data);
-                //log.info(hexString);
-
-                byte[] dwTim = Arrays.copyOfRange(data, 4, 8);
-                dwTim = toLittleEndian(dwTim);
-                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                long l = ByteUtils.bytesToDecimal(dwTim);
-                alarmTime = sdf.format(l * 1000);
-                //log.info("鍛ㄨ鍥惧儚鐨勫嚭鐜版椂闂�(杞琩ate):" + alarmTime);
-
-                byte[] wTargetNum = Arrays.copyOfRange(data, 8, 10);
-                wTargetNum = toLittleEndian(wTargetNum);
-                targetNum = ByteUtils.bytesToDecimal(wTargetNum);
-                //log.debug("鐩爣鎬荤偣鏁�(杞暣鍨�):" + targetNum);
-                if (targetNum == 0) {
-                    return;
-                }
-                //瑙f瀽NET_TARGET_UNIT(64鏄疦ET_TARGET_HEAD鐨勫瓧鑺傛暟)
-                int uintSize = (payloadSizeToDecimal - 64) / targetNum;
-                //log.info("鍗曟潯鎶ヨ澶у皬:" + uintSize);
-                for (int i = 0; i < targetNum; i++) {
-                    Integer index = 68 + uintSize * i;
-                    byte[] dwID = Arrays.copyOfRange(data, index, index + 4);
-                    //log.info("鐩爣ID:" + DatatypeConverter.printHexBinary(dwID));
-                    dwID = toLittleEndian(dwID);
-                    int targetId = ByteUtils.bytesToDecimal(dwID);
-                    //log.info("鐩爣ID鍙凤細" + targetId);
-                    //region 涓嶉渶瑕佺殑瀛楁
-                    byte[] iTw = Arrays.copyOfRange(data, index + 4, index + 8);
-                    iTw = toLittleEndian(iTw);
-                    int Tw = ByteUtils.bytesToDecimal(iTw);
-                    // log.info("鐩爣褰撳墠鐨勫儚绱犲搴�:" + Tw);
-
-                    byte[] iTh = Arrays.copyOfRange(data, index + 8, index + 12);
-                    iTh = toLittleEndian(iTh);
-                    int Th = ByteUtils.bytesToDecimal(iTh);
-                    //log.info("鐩爣褰撳墠鐨勫儚绱犻珮搴�:" + Th);
-
-                    byte[] fTx = Arrays.copyOfRange(data, index + 12, index + 16);
-                    fTx = toLittleEndian(fTx);
-                    float fTxAngle = ByteUtils.bytesToFloat(fTx);
-                    //log.debug("p瑙掑害:" + fTxAngle);
-                    byte[] fTy = Arrays.copyOfRange(data, index + 16, index + 20);
-                    fTy = toLittleEndian(fTy);
-                    float fTyAngle = ByteUtils.bytesToFloat(fTy);
-                    //log.debug("t瑙掑害:" + fTyAngle);
-
-                    byte[] sAreaNo = Arrays.copyOfRange(data, index + 20, index + 22);
-                    sAreaNo = toLittleEndian(sAreaNo);
-                    int AreaNo = ByteUtils.bytesToDecimal(sAreaNo);
-                    //log.debug("鐩爣褰掑睘鐨勫憡璀﹀尯鍩熷彿:" + AreaNo);
-
-                    byte[] cGrp = Arrays.copyOfRange(data, index + 22, index + 23);
-                    cGrp = toLittleEndian(cGrp);
-                    int Grp = ByteUtils.bytesToDecimal(cGrp);
-                    //log.info("鎵�灞炵粍:" + Grp);
-                    //endregion
-                    String alarmType;
-                    //鎶芥补鏈虹姸鎬佸彉閲�
-                    String wellType;
-                    byte[] cStat = Arrays.copyOfRange(data, index + 23, index + 24);
-                    cStat = toLittleEndian(cStat);
-                    //String binaryString = String.format("%8s", Integer.toBinaryString(cStat[0] & 0xFF)).replace(' ', '0');
-                    //log.info("鐩爣褰撳墠鐘舵��:" + binaryString);
-                    // 鎻愬彇绗�0浣嶅��
-                    // 浣跨敤浣嶈繍绠楁搷浣滃垽鏂0浣嶆槸鍚︿负1
-                    boolean isB0 = (cStat[0] & 0x01) == 0x00;
-                    // 鍒ゆ柇鎻愬彇鐨勫��
-                    if (isB0) {
-                        alarmType = "闆疯揪鎶芥补鏈哄仠鏈�";
-                        byte[] szName = Arrays.copyOfRange(data, index + 32, index + 64);
-                        //log.info("鎵�灞炲憡璀﹀尯鍩熷悕绉�:" + DatatypeConverter.printHexBinary(szName));
-                        String alarmPointName = ByteUtils.bytesToStringZh(szName);
-                        // log.info("鎵�灞炲憡璀﹀尯鍩熷悕绉�:" + alarmPointName);
-                        //log.debug("鎶ヨ淇℃伅锛�"+ "銆恟adarName銆�" + radarName + "銆恡argetId銆�" + targetId + "銆恘ame銆�" + alarmPointName + "銆恆larmType銆�" + alarmType + "銆恆larmTime銆�" + alarmTime);
-                        ArdAlarmRadar ardAlarmRadar = new ArdAlarmRadar();
-                        ardAlarmRadar.setTargetId(targetId);
-                        ardAlarmRadar.setName(alarmPointName);
-                        ardAlarmRadar.setAlarmType(alarmType);
-                        radarAlarmInfos.add(ardAlarmRadar);
-                        wellType = "鍋滄満";
-                    } else {
-                        wellType = "杩愯";
-                    }
-                    //鎶芥补鏈虹姸鎬侀泦鍚堜腑瑁呭叆鏁版嵁
-                    byte[] szName = Arrays.copyOfRange(data, index + 32, index + 64);
-                    String alarmPointName = ByteUtils.bytesToStringZh(szName);
-                    log.debug("鎶ヨ淇℃伅锛�" + "銆恟adarName銆�" + radarName + "銆恡argetId銆�" + targetId + "銆恆larmType銆戞娊娌规満鐘舵�佹姤璀�" + "銆恆larmTime銆�" + alarmTime + "銆恘ame銆�" + alarmPointName + "銆恆larmState銆�" + wellType);
-                    ArdAlarmRadar wellAlarm = new ArdAlarmRadar();
-                    wellAlarm.setTargetId(targetId);
-                    wellAlarm.setName(alarmPointName);
-                    wellAlarm.setAlarmType(wellType);
-                    well.add(wellAlarm);
-                }
-                //endregion
-                if (StringUtils.isEmpty(alarmTime)) {
-                    return;
-                }
-                if (targetNum == 0) {
-                    return;
-                }
-                RadarAlarmData radarAlarmData = new RadarAlarmData();
-                radarAlarmData.setRadarId(radarId);
-                radarAlarmData.setRadarName(radarName);
-                radarAlarmData.setAlarmTime(alarmTime);
-                radarAlarmData.setArdAlarmRadars(radarAlarmInfos);
-                MqttProducer.publish(2, false, "radar", JSON.toJSONString(radarAlarmData));
-                //鎶芥补鏈虹姸鎬丮QTT闃熷垪
-                radarAlarmData.setArdAlarmRadars(well);
-                MqttProducer.publish(2, false, "radarWellData", JSON.toJSONString(radarAlarmData));
-            }
-            //寮哄埗寮曞
-            if (Arrays.equals(cmdId, new byte[]{0x02})) {
-                //region 鍛婅鍓嶇鍙戦�佺殑寮哄埗寮曞淇℃伅
-                byte[] iDistance = Arrays.copyOfRange(data, 4, 8);
-                iDistance = toLittleEndian(iDistance);
-                long distance = ByteUtils.bytesToDecimal(iDistance);
-                log.info("鐩爣褰撳墠璺濈(m):" + distance);
-                byte[] fTx = Arrays.copyOfRange(data, 8, 12);
-                fTx = toLittleEndian(fTx);
-                float tx = ByteUtils.bytesToFloat(fTx);
-                log.debug("鏂逛綅:" + tx);
-                byte[] fTy = Arrays.copyOfRange(data, 12, 16);
-                fTy = toLittleEndian(fTy);
-                float ty = ByteUtils.bytesToFloat(fTy);
-                if (ty < 0) {
-                    ty += 360;
-                }
-                log.debug("淇话:" + ty);
-                Map<String, Object> forceGuideMap = new HashMap<>();
-                forceGuideMap.put("distance", distance);
-                forceGuideMap.put("p", tx);
-                forceGuideMap.put("t", ty);
-                forceGuideMap.put("radarId", radarId);
-                log.debug("寮哄埗寮曞淇℃伅" + forceGuideMap);
-                //endregion
-                MqttProducer.publish(2, false, "radarForceGuide", JSON.toJSONString(forceGuideMap));
-            }
-        } catch (Exception ex) {
-            log.error("闆疯揪鎶ユ枃瑙f瀽寮傚父:" + ex.getMessage());
-        }
-    }
-}
diff --git a/src/main/java/com/ard/utils/netty/tcp/DynamicClientInitializer.java b/src/main/java/com/ard/utils/netty/tcp/DynamicClientInitializer.java
deleted file mode 100644
index 909c5d9..0000000
--- a/src/main/java/com/ard/utils/netty/tcp/DynamicClientInitializer.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.ard.utils.netty.tcp;
-
-import io.netty.channel.ChannelInitializer;
-import io.netty.channel.ChannelPipeline;
-import io.netty.channel.socket.SocketChannel;
-
-/**
- * @Description: 鍒濆鍖栧鎴风鐨勯�氶亾锛堝鐢級
- * @ClassName: DynamicClientInitializer
- * @Author: 鍒樿嫃涔�
- * @Date: 2023骞�11鏈�30鏃�9:27:03
- **/
-public class DynamicClientInitializer extends ChannelInitializer<SocketChannel> {
-    @Override
-    protected void initChannel(SocketChannel ch){
-        try {
-            ChannelPipeline pipeline = ch.pipeline();
-            // 娣诲姞浣犻渶瑕佺殑澶勭悊鍣�
-            pipeline.addLast(new DynamicClientHandler());
-        }catch (Exception e)
-        {
-            e.printStackTrace();
-        }
-    }
-}
diff --git a/src/main/java/com/ard/utils/netty/tcp/MessageParsing.java b/src/main/java/com/ard/utils/netty/tcp/MessageHandler.java
similarity index 98%
rename from src/main/java/com/ard/utils/netty/tcp/MessageParsing.java
rename to src/main/java/com/ard/utils/netty/tcp/MessageHandler.java
index 4aac19d..e6286fb 100644
--- a/src/main/java/com/ard/utils/netty/tcp/MessageParsing.java
+++ b/src/main/java/com/ard/utils/netty/tcp/MessageHandler.java
@@ -14,7 +14,7 @@
  * @Date: 2023骞�07鏈�03鏃�15:30
  * @Version: 1.0
  **/
-public class MessageParsing {
+public class MessageHandler {
     // 鍒涘缓缂撳啿鍖哄垪琛�
     private List<Byte> buffer = new ArrayList<>();
 

--
Gitblit v1.9.3