wenhongquan 1 год назад
Родитель
Сommit
cb76cdc557

+ 23 - 23
ruoyi-admin/src/main/resources/router/t.xml

@@ -8,10 +8,10 @@
 
 
     <!--同步服务配置-->
     <!--同步服务配置-->
 
 
-    <route>
-        <from uri="paho:/dev/gps/#?brokerUrl=tcp://127.0.0.1:1883&amp;userName=iot2yun&amp;password=123456&amp;clientId=khy_redclient"></from>
-        <to uri="bean:org.dromara.util.CamelDataUtil?method=ReciveData(${body})"></to>
-    </route>
+<!--    <route>-->
+<!--        <from uri="paho:/dev/gps/#?brokerUrl=tcp://127.0.0.1:1883&amp;userName=iot2yun&amp;password=123456&amp;clientId=khy_redclient"></from>-->
+<!--        <to uri="bean:org.dromara.util.CamelDataUtil?method=ReciveData(${body})"></to>-->
+<!--    </route>-->
 
 
 
 
     <route>
     <route>
@@ -19,25 +19,25 @@
         <to uri="bean:org.dromara.util.CamelDataUtil?method=ReciveTcpData(${body})"></to>
         <to uri="bean:org.dromara.util.CamelDataUtil?method=ReciveTcpData(${body})"></to>
     </route>
     </route>
 
 
-    <route>
-        <from uri="direct:reSendTCp"/>
-        <to uri="paho:/peoplecount/in?brokerUrl=tcp://127.0.0.1:1883&amp;userName=iot2yun&amp;password=123456&amp;clientId=khy_writeclient2"/>
-    </route>
-    <route>
-        <from uri="direct:reSendTCpO"/>
-        <to uri="paho:/peoplecount/out?brokerUrl=tcp://127.0.0.1:1883&amp;userName=iot2yun&amp;password=123456&amp;clientId=khy_writeclient3"/>
-    </route>
-
-    <route>
-        <from uri="direct:senddev"/>
-        <to uri="paho:/devdata/?brokerUrl=tcp://127.0.0.1:1883&amp;userName=iot2yun&amp;password=123456&amp;clientId=khy_writeclient1"/>
-    </route>
-
-    <route>
-        <from uri="direct:sendMessage"/>
-        <to uri="bean:org.dromara.util.CamelDataUtil?method=processdata(${body})"></to>
-        <to uri="paho:/dev/?brokerUrl=tcp://127.0.0.1:1883&amp;userName=iot2yun&amp;password=123456&amp;clientId=khy_writeclient"/>
-    </route>
+<!--    <route>-->
+<!--        <from uri="direct:reSendTCp"/>-->
+<!--        <to uri="paho:/peoplecount/in?brokerUrl=tcp://127.0.0.1:1883&amp;userName=iot2yun&amp;password=123456&amp;clientId=khy_writeclient2"/>-->
+<!--    </route>-->
+<!--    <route>-->
+<!--        <from uri="direct:reSendTCpO"/>-->
+<!--        <to uri="paho:/peoplecount/out?brokerUrl=tcp://127.0.0.1:1883&amp;userName=iot2yun&amp;password=123456&amp;clientId=khy_writeclient3"/>-->
+<!--    </route>-->
+
+<!--    <route>-->
+<!--        <from uri="direct:senddev"/>-->
+<!--        <to uri="paho:/devdata/?brokerUrl=tcp://127.0.0.1:1883&amp;userName=iot2yun&amp;password=123456&amp;clientId=khy_writeclient1"/>-->
+<!--    </route>-->
+
+<!--    <route>-->
+<!--        <from uri="direct:sendMessage"/>-->
+<!--        <to uri="bean:org.dromara.util.CamelDataUtil?method=processdata(${body})"></to>-->
+<!--        <to uri="paho:/dev/?brokerUrl=tcp://127.0.0.1:1883&amp;userName=iot2yun&amp;password=123456&amp;clientId=khy_writeclient"/>-->
+<!--    </route>-->
 
 
 
 
 
 

+ 34 - 27
ruoyi-modules/ruoyi-khy/src/main/java/jt809/protocol/JT809DecoderAdapter.java

@@ -25,35 +25,42 @@ public class JT809DecoderAdapter extends ByteToMessageDecoder {
     private static Logger log = LoggerFactory.getLogger(JT809DecoderAdapter.class);
     private static Logger log = LoggerFactory.getLogger(JT809DecoderAdapter.class);
     @Override
     @Override
     protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {
     protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {
-        //判断是否有可读的字节
-        if (in.readableBytes() <= 0) {
-            return;
-        }
-        // 1、进行转义
-        byte[] bytes = PacketDecoderUtils.decoderEscape(in);
-        // 2、校验crc
-        if (!CrcUtil.checkCRC(bytes)){
-            return;
-        }
-        // 3、判断是那种类型的数据,交给具体的解码器类完成。
-        ByteBuf byteBuf = CommonUtils.getByteBuf(bytes);
-        byteBuf.skipBytes(9);
-        // 获取业务标志
-        short msgId = byteBuf.readShort();
-
-        // 交给具体的解码器
-        JT809BasePacket packet = null;
         try {
         try {
-            packet = DecoderFactory.getDecoder(msgId).decoder(bytes);
-        } catch (Exception e) {
-            if (e instanceof NullPointerException) {
-                // log.info("没有可用的解析器,忽略这条信息!此信息不在业务范围内。");
-                // 没有可用的解析器,忽略这条信息!此信息不在业务范围内。
-            } else {
-                log.error("报文解析出错!错误信息:{};报文信息:{};",e.getMessage(),PACKET_CACHE.get(Thread.currentThread().getName()));
+            //判断是否有可读的字节
+            if (in.readableBytes() <= 0) {
+                return;
+            }
+            // 1、进行转义
+            byte[] bytes = PacketDecoderUtils.decoderEscape(in);
+            // 2、校验crc
+            if (!CrcUtil.checkCRC(bytes)){
+                return;
             }
             }
-            return;
+            // 3、判断是那种类型的数据,交给具体的解码器类完成。
+            ByteBuf byteBuf = CommonUtils.getByteBuf(bytes);
+            byteBuf.skipBytes(9);
+            // 获取业务标志
+            short msgId = byteBuf.readShort();
+
+            // 交给具体的解码器
+            JT809BasePacket packet = null;
+            try {
+                packet = DecoderFactory.getDecoder(msgId).decoder(bytes);
+            } catch (Exception e) {
+                if (e instanceof NullPointerException) {
+                    // log.info("没有可用的解析器,忽略这条信息!此信息不在业务范围内。");
+                    // 没有可用的解析器,忽略这条信息!此信息不在业务范围内。
+                } else {
+                    log.error("报文解析出错!错误信息:{};报文信息:{};",e.getMessage(),PACKET_CACHE.get(Thread.currentThread().getName()));
+                }
+                return;
+            }
+            out.add(packet);
+        }catch (Exception e){
+
+        }finally {
+            ctx.flush();
         }
         }
-        out.add(packet);
+
     }
     }
 }
 }

+ 15 - 8
ruoyi-modules/ruoyi-khy/src/main/java/jt809/protocol/JT809EncodeAdapter.java

@@ -22,13 +22,20 @@ public class JT809EncodeAdapter extends MessageToByteEncoder<JT809BasePacket> {
     @Override
     @Override
     protected void encode(ChannelHandlerContext ctx, JT809BasePacket packet, ByteBuf out) throws Exception {
     protected void encode(ChannelHandlerContext ctx, JT809BasePacket packet, ByteBuf out) throws Exception {
 //        EncoderFactory.getEncoder(packet.getClass().getSimpleName()).encode(ctx,packet,out);
 //        EncoderFactory.getEncoder(packet.getClass().getSimpleName()).encode(ctx,packet,out);
-        byte[] allBody = packet.getAllBody();
-        // 转义
-        byte[] dataBytes = PacketEncoderUtils.encoderEscape(allBody);
-        byte[] bytes1 = CommonUtils.append(new byte[]{JT809BasePacket.HEAD_FLAG}, dataBytes);
-        byte[] bytes = CommonUtils.append(bytes1, new byte[]{JT809BasePacket.END_FLAG});
-        String hexStr = PacketDecoderUtils.bytes2HexStr(bytes);
-        log.info("发出的报文为:{}",hexStr);
-        out.writeBytes(bytes);
+        try {
+            byte[] allBody = packet.getAllBody();
+            // 转义
+            byte[] dataBytes = PacketEncoderUtils.encoderEscape(allBody);
+            byte[] bytes1 = CommonUtils.append(new byte[]{JT809BasePacket.HEAD_FLAG}, dataBytes);
+            byte[] bytes = CommonUtils.append(bytes1, new byte[]{JT809BasePacket.END_FLAG});
+            String hexStr = PacketDecoderUtils.bytes2HexStr(bytes);
+            log.info("发出的报文为:{}",hexStr);
+            out.writeBytes(bytes);
+        }catch (Exception e){
+
+        }finally {
+            ctx.flush();
+        }
+
     }
     }
 }
 }

+ 4 - 4
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/netty/Decode.java

@@ -17,9 +17,7 @@ public class Decode extends MessageToMessageDecoder {
     protected void decode(ChannelHandlerContext ctx, Object msg, List out) throws Exception {
     protected void decode(ChannelHandlerContext ctx, Object msg, List out) throws Exception {
         //收到的消息转成String
         //收到的消息转成String
 
 
-        try{
-
-
+        try {
             byte[] bytes = null;
             byte[] bytes = null;
             if(ctx.channel() instanceof NioDatagramChannel){
             if(ctx.channel() instanceof NioDatagramChannel){
 
 
@@ -35,7 +33,9 @@ public class Decode extends MessageToMessageDecoder {
 //                System.out.println("收到消息:"+msgdata);
 //                System.out.println("收到消息:"+msgdata);
                 out.add(msgdata);
                 out.add(msgdata);
             }
             }
-        }catch (Exception e){}
+        }catch (Exception e){}finally {
+            ctx.flush();
+        }
     }
     }
 
 
     @Override
     @Override

+ 19 - 14
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/netty/Encode.java

@@ -34,23 +34,28 @@ public class Encode extends MessageToMessageEncoder {
     @Override
     @Override
     protected void encode(ChannelHandlerContext ctx, Object msg, List out) throws Exception {
     protected void encode(ChannelHandlerContext ctx, Object msg, List out) throws Exception {
         //该处返回空 改由主动发送
         //该处返回空 改由主动发送
+        try {
 
 
-        if(msg==null || StrUtil.isEmptyIfStr(msg)){
-            ByteBuf buf = Unpooled.copiedBuffer("".getBytes(CharsetUtil.UTF_8));
-            out.add(buf);
-            return;
-        }
-        if(msg instanceof DefaultAddressedEnvelope){
-            if(((DefaultAddressedEnvelope<?, ?>) msg).content() instanceof byte[]){
-                out.add(Unpooled.copiedBuffer((byte[]) ((DefaultAddressedEnvelope<?, ?>) msg).content()));
+            if(msg==null || StrUtil.isEmptyIfStr(msg)){
+                ByteBuf buf = Unpooled.copiedBuffer("".getBytes(CharsetUtil.UTF_8));
+                out.add(buf);
+                ctx.flush();
+                return;
+            }
+            if(msg instanceof DefaultAddressedEnvelope){
+                if(((DefaultAddressedEnvelope<?, ?>) msg).content() instanceof byte[]){
+                    out.add(Unpooled.copiedBuffer((byte[]) ((DefaultAddressedEnvelope<?, ?>) msg).content()));
+                }else{
+                    out.add(Unpooled.copiedBuffer(((DefaultAddressedEnvelope<?, ?>) msg).content().toString().getBytes(StandardCharsets.UTF_8)));
+                }
+            } else if(msg instanceof ByteBuf){
+                out.add(Unpooled.copiedBuffer((ByteBuf) msg));
             }else{
             }else{
-                out.add(Unpooled.copiedBuffer(((DefaultAddressedEnvelope<?, ?>) msg).content().toString().getBytes(StandardCharsets.UTF_8)));
+                ByteBuf buf = Unpooled.copiedBuffer("".getBytes(CharsetUtil.UTF_8));
+                out.add(buf);
             }
             }
-        } else if(msg instanceof ByteBuf){
-            out.add(Unpooled.copiedBuffer((ByteBuf) msg));
-        }else{
-            ByteBuf buf = Unpooled.copiedBuffer("".getBytes(CharsetUtil.UTF_8));
-            out.add(buf);
+        }catch (Exception e){}finally {
+            ctx.flush();
         }
         }
 
 
     }
     }

+ 6 - 3
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/system/service/impl/TblCarInfoServiceImpl.java

@@ -119,9 +119,12 @@ public class TblCarInfoServiceImpl implements ITblCarInfoService {
         List<String> codes = new ArrayList<>();
         List<String> codes = new ArrayList<>();
         result.getRecords().forEach(carInfoVo -> {
         result.getRecords().forEach(carInfoVo -> {
             JSONUtil.parseArray(carInfoVo.getDeviceInfos()).toList(JSONObject.class).forEach(deviceInfo -> {
             JSONUtil.parseArray(carInfoVo.getDeviceInfos()).toList(JSONObject.class).forEach(deviceInfo -> {
-                if(deviceInfo.getStr("type").equals("people_count")){
-                    codes.add( deviceInfo.getStr("code"));
-                }
+                try {
+                    if(deviceInfo.getStr("type").equals("people_count")){
+                        codes.add( deviceInfo.getStr("code"));
+                    }
+                }catch (Exception e){}
+
             });
             });
         });
         });
         Map<String,List<CountDataVo>> countDataMap = new HashMap<>();
         Map<String,List<CountDataVo>> countDataMap = new HashMap<>();

+ 1 - 1
ruoyi-modules/ruoyi-khy/src/main/java/org/dromara/util/CabinetUtil.java

@@ -193,7 +193,7 @@ public class CabinetUtil {
         }
         }
 
 
 
 
-        if(cabinetList.size()>0){
+        if(cabinetList!=null && cabinetList.size()>0){
             cabinetList.forEach(item->{
             cabinetList.forEach(item->{
                 try {
                 try {
                     Thread.sleep(1000);
                     Thread.sleep(1000);