Преглед изворни кода

柜锁增加 netty 方式,数据重新解析

liubo пре 2 година
родитељ
комит
8dbca3e7e9

+ 4 - 0
zd-modules/zd-modules-laboratory/pom.xml

@@ -111,6 +111,10 @@
             <artifactId>thumbnailator</artifactId>
             <version>0.4.8</version>
         </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

+ 15 - 9
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/device/DeviceRemoteController.java

@@ -5,6 +5,7 @@ import com.zd.common.core.utils.ReUtil;
 import com.zd.laboratory.api.entity.CabinetLock;
 import com.zd.laboratory.api.entity.CabinetV2Lock;
 import com.zd.laboratory.mqtt.service.impl.CommonSend;
+import com.zd.laboratory.netty.PushMsgService;
 import com.zd.laboratory.socket.runner.TCPServer;
 import com.zd.laboratory.socket.service.SocketService;
 import com.zd.laboratory.utils.CRCCHECK;
@@ -35,6 +36,8 @@ public class DeviceRemoteController {
     private RedisService redisService;
     @Autowired
     private CommonSend commonSend;
+    @Autowired
+    private PushMsgService pushMsgService;
 
     @Value("${sys.lockTimer:30}")
     private Integer lockTimer;
@@ -66,11 +69,12 @@ public class DeviceRemoteController {
         OutputStream ops = TCPServer.cacheMap.get(relayCode);
 
         try {
-            ops.write(ReUtil.hexStringToByteArray(instruct));
-            ops.flush();
+//            ops.write(ReUtil.hexStringToByteArray(instruct));
+//            ops.flush();
+            pushMsgService.push(cabinetV2Lock.getRelayCode(), ReUtil.hexStringToByteArray(instruct));
             logger.info("柜锁开锁指令:" + instruct);
 
-            Thread.sleep(1000);
+            Thread.sleep(2000);
 //            ops.write(ReUtil.hexStringToByteArray(instruct));
 //            ops.flush();
 //
@@ -83,8 +87,9 @@ public class DeviceRemoteController {
             Integer status;
             while (timer > 1){
 
-                ops.write(ReUtil.hexStringToByteArray(instruct));
-                ops.flush();
+//                ops.write(ReUtil.hexStringToByteArray(instruct));
+//                ops.flush();
+                pushMsgService.push(cabinetV2Lock.getRelayCode(), ReUtil.hexStringToByteArray(instruct));
                 timer-=2;
 
                 Thread.sleep(1900);
@@ -165,10 +170,11 @@ public class DeviceRemoteController {
             String instruct = CRCCHECK.getReadLockOrder(Integer.parseInt(cabinetV2Lock.getLockId()));
             int timer = lockTimer;
             Integer status;
-            while (timer > 1){
+//            while (timer > 1){
 
-                ops.write(ReUtil.hexStringToByteArray(instruct));
-                ops.flush();
+//                ops.write(ReUtil.hexStringToByteArray(instruct));
+//                ops.flush();
+                pushMsgService.push(cabinetV2Lock.getRelayCode(), ReUtil.hexStringToByteArray(instruct));
                 timer-=2;
 
                 Thread.sleep(1900);
@@ -177,7 +183,7 @@ public class DeviceRemoteController {
                 if(status != null && status == 0){
                     return ResultData.success("关锁成功");
                 }
-            }
+//            }
 
 //            return ResultData.success("关锁成功");
         } catch (Exception e) {

+ 3 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/socket/runner/SocketRunner.java

@@ -3,6 +3,7 @@ package com.zd.laboratory.socket.runner;
 
 import cn.hutool.core.collection.ConcurrentHashSet;
 import com.zd.laboratory.socket.properties.SocketProperties;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.CommandLineRunner;
 import org.springframework.core.annotation.Order;
@@ -22,6 +23,7 @@ import java.util.concurrent.*;
 
 @Component
 @Order(Integer.MAX_VALUE)
+@Slf4j
 public class SocketRunner implements CommandLineRunner {
 
     //地址
@@ -55,6 +57,7 @@ public class SocketRunner implements CommandLineRunner {
             while (true) {
                 socket = server.accept();
                 pool.execute(new TCPServer(socket));
+                log.info("SocketRunner---------pool: " + pool.toString());
             }
 
         } catch (IOException e) {

+ 6 - 12
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/socket/runner/TCPServer.java

@@ -11,10 +11,7 @@ import com.zd.laboratory.socket.vo.TransmissionVo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.BufferedInputStream;
-import java.io.DataInputStream;
-import java.io.IOException;
-import java.io.OutputStream;
+import java.io.*;
 import java.net.Socket;
 import java.net.SocketException;
 import java.util.Map;
@@ -51,7 +48,6 @@ public class TCPServer implements Runnable {
             socket.setSoTimeout(212000);
             log.info("客户 - " + socket.getRemoteSocketAddress() + " -> 机连接成功");
             while (true) {
-                Thread.sleep(1L);
                 handle();
             }
         } catch (SocketException e) {
@@ -59,8 +55,6 @@ public class TCPServer implements Runnable {
             log.error("Socket异常: " + e.getMessage());
         } catch (IOException e) {
             log.error("Socket异常: " + e.getMessage());
-        } catch (InterruptedException e) {
-            log.error("Socket异常: " + e.getMessage());
         } finally {
             try {
                 if (!socket.isClosed()) {
@@ -76,17 +70,17 @@ public class TCPServer implements Runnable {
     private void handle() throws IOException {
 
         StringBuilder ret = new StringBuilder();
-//        InputStream in = socket.getInputStream();
+        InputStream in = socket.getInputStream();
 
         // 解析二进制数据
-        BufferedInputStream bs = new BufferedInputStream(socket.getInputStream());
+//        BufferedInputStream bs = new BufferedInputStream(socket.getInputStream());
 
-        DataInputStream dis = new DataInputStream(bs);
+//        DataInputStream dis = new DataInputStream(bs);
 
         byte[] bytes = new byte[1];
-        while (dis.read(bytes) != -1){
+        while (in.read(bytes) != -1){
             ret.append(bytesToHexString(bytes) + " ");
-            if(dis.available() == 0){
+            if(in.available() == 0){
                 break;
             }
         }

+ 0 - 38
zd.iml

@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" version="4">
-  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
-    <output url="file://$MODULE_DIR$/target/classes" />
-    <output-test url="file://$MODULE_DIR$/target/test-classes" />
-    <content url="file://$MODULE_DIR$">
-      <excludeFolder url="file://$MODULE_DIR$/target" />
-    </content>
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-bootstrap:3.0.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter:3.0.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.5.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.5.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-context:5.3.9" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.3.9" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.3.9" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.3.9" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.5.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.5.3" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.4" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.4" level="project" />
-    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.32" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.14.1" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.14.1" level="project" />
-    <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.32" level="project" />
-    <orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-core:5.3.9" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.3.9" level="project" />
-    <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.28" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-context:3.0.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-crypto:5.5.1" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-commons:3.0.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-rsa:1.0.10.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.68" level="project" />
-    <orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.68" level="project" />
-  </component>
-</module>