From 663e6eddbcb14299881ada97e9e3c1ca0cdaa6b5 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期五, 27 十二月 2024 15:29:02 +0800
Subject: [PATCH] #

---
 zy-acs-gateway/src/main/java/com/zy/acs/gateway/mock/ParseProtocolUtils.java  |  136 +++++++++++++++++++++++++++++++++++++++++++++
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/LaneService.java |    1 
 2 files changed, 137 insertions(+), 0 deletions(-)

diff --git a/zy-acs-gateway/src/main/java/com/zy/acs/gateway/mock/ParseProtocolUtils.java b/zy-acs-gateway/src/main/java/com/zy/acs/gateway/mock/ParseProtocolUtils.java
new file mode 100644
index 0000000..a701cb8
--- /dev/null
+++ b/zy-acs-gateway/src/main/java/com/zy/acs/gateway/mock/ParseProtocolUtils.java
@@ -0,0 +1,136 @@
+package com.zy.acs.gateway.mock;
+
+import com.alibaba.fastjson.JSON;
+import com.zy.acs.common.domain.protocol.AGV_12_UP;
+import com.zy.acs.common.domain.protocol.IMessageBody;
+import com.zy.acs.common.utils.Utils;
+import com.zy.acs.framework.common.RadixTools;
+import com.zy.acs.gateway.constant.ProtocolType;
+import com.zy.acs.gateway.domain.AgvPackage;
+import com.zy.acs.gateway.handler.MessageBodyHandler;
+import com.zy.acs.gateway.handler.coder.ProtocolDecoder;
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.ByteBufAllocator;
+import io.netty.channel.ChannelHandlerContext;
+
+public class ParseProtocolUtils {
+
+    public static void main(String[] args) {
+        String protocolMsg = "AA30000F0000003DF06C67124B000000DCFFDDFF358EB043000029BAC0358EB043000000000000000000000000A6FF40020C031909";
+
+        byte[] bytes = RadixTools.hexStringToBytes(protocolMsg);
+
+        ByteBuf buffer = ByteBufAllocator.DEFAULT.buffer(256);
+
+        buffer.writeBytes(bytes);
+
+
+        ProtocolDecoder protocolDecoder = new ProtocolDecoder(1024);
+
+        AgvPackage pac = AgvPackage.valueOfEmpty();
+        pac.setSourceBuff(buffer);
+
+        protocolDecoder.analyzeProtocol(pac);
+
+
+        Boolean b = msgChannelRead(pac);
+
+
+        System.out.println(JSON.toJSONString(pac));
+
+        IMessageBody messageBody = pac.getBody().getMessageBody();
+        if (messageBody instanceof AGV_12_UP) {
+            AGV_12_UP agv_12_up = (AGV_12_UP) messageBody;
+            System.out.println(agv_12_up.getQrCode());
+        }
+    }
+
+
+    private static Boolean msgChannelRead(AgvPackage pac) {
+        String namespace = IMessageBody.class.getPackage().getName();
+
+        ProtocolType protocolType = pac.getHeader().getProtocolType();
+
+
+        if (null == protocolType) {
+
+            // 鏈煡鍖�
+            return Boolean.FALSE;
+        }
+
+        String className =  namespace +  ".AGV_" + Utils.zeroFill(Integer.toHexString(protocolType.getCode()).toUpperCase(), 2)
+                +"_"
+
+                +  pac.getHeader().getProtocolType().getDirection().toString().toUpperCase();
+
+        Class<?> cls = null;
+        try {
+
+
+            cls  =   Class.forName(className);;
+
+        } catch (ClassNotFoundException e) {
+
+
+            return Boolean.FALSE;
+        }
+
+        Object obj = null;
+
+        if (null != cls) {
+
+
+            try {
+                obj = cls.newInstance();
+
+            } catch (ReflectiveOperationException reflectiveOperationException) {
+
+                // 銆傘�傘��
+                return Boolean.FALSE;
+            }
+
+
+        }
+
+        ByteBuf contentBuf = pac.getBody().getContent();           contentBuf.markReaderIndex();   // sign
+        // body.buf 灞炰簬鍒囩墖鑾峰彇锛� slice 涓� channel涓殑缂撳啿鍖� 涓哄悓涓� refenec
+
+
+
+        contentBuf.resetReaderIndex();
+
+        int len= contentBuf.readableBytes();
+
+        byte[] bytes = new byte[len];
+
+
+
+        pac.getBody().getContent().readBytes(bytes);
+
+
+
+        // 璇诲彇瀛楄妭鏁扮粍 ===>>     瀹為檯鎶ユ枃绫诲瀷
+        IMessageBody iMessageBody = null;
+
+        if (null != obj) {
+
+            if ( obj  instanceof IMessageBody) {
+
+                iMessageBody = (IMessageBody) obj;
+
+
+                iMessageBody.readFromBytes(bytes);
+            }
+
+        }
+
+
+
+        pac.getBody().setMessageBody(iMessageBody);     contentBuf.resetReaderIndex();
+
+        return true;
+    }
+
+}
+
+// AA 30000F0000001DEE6C67120B0000001200EDFF8340B5420100E76FC28340B542000000000000000000000000A6FF40020C030674
\ No newline at end of file
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/LaneService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/LaneService.java
index 1999867..12eb100 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/LaneService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/LaneService.java
@@ -70,6 +70,7 @@
         String laneDataStr = redis.getValue(RedisConstant.MAP_LANE_DATA, String.valueOf(lev));
         if (!Cools.isEmpty(laneDataStr)) {
             this.lanes = GsonUtils.fromJsonToList(laneDataStr, Lane.class);
+            this.initialized = Boolean.TRUE;
         } else {
 
             StopWatch stopWatch = new StopWatch();

--
Gitblit v1.9.1