From d765f491fe415a218975892c6f4651c13764e1f3 Mon Sep 17 00:00:00 2001
From: wuyouming666 <2265557248@qq.com>
Date: 星期三, 28 二月 2024 10:51:11 +0800
Subject: [PATCH] 增加实体类、 Mapper,websocket服务类、封装rabbitmq 发送接收等方法

---
 UnLoadGlassModule/src/main/java/com/mes/tools/InitUtil.java                                                  |  127 ++++
 UnLoadGlassModule/src/main/java/com/mes/service/ModuleB.java                                                 |   57 +
 UnLoadGlassModule/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst           |   45 +
 UnLoadGlassModule/target/maven-archiver/pom.properties                                                       |    3 
 UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterInfo.java                                  |  124 ++++
 UnLoadGlassModule/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst         |   46 +
 UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterObject.java                                |  202 ++++++
 UnLoadGlassModule/src/main/java/com/mes/tools/Configuration.java                                             |   28 
 UnLoadGlassModule/target/surefire-reports/TEST-com.mes.MesApplicationTests.xml                               |   65 ++
 UnLoadGlassModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst   |    1 
 UnLoadGlassModule/src/main/java/com/mes/entity/DownStorageCageDetails.java                                   |   25 
 UnLoadGlassModule/src/main/java/com/mes/entity/DownWorkstation.java                                          |   17 
 UnLoadGlassModule/src/main/java/com/mes/mapper/DownGlassInfoMapper.java                                      |   15 
 UnLoadGlassModule/src/main/java/com/mes/mapper/DownStorageCageMapper.java                                    |   16 
 UnLoadGlassModule/src/main/java/com/mes/service/DownGlassInfoService.java                                    |   19 
 UnLoadGlassModule/src/main/java/com/mes/mapper/DownStorageCageDetailsMapper.java                             |   16 
 UnLoadGlassModule/src/main/java/com/mes/service/ServiceContextHolder.java                                    |   14 
 UnLoadGlassModule/src/main/java/com/mes/entity/DownGlassInfo.java                                            |   19 
 UnLoadGlassModule/src/main/java/com/mes/service/ModuleA.java                                                 |    8 
 UnLoadGlassModule/src/main/java/com/mes/tools/ExcelToJsonConverter.java                                      |  108 +++
 UnLoadGlassModule/src/main/java/com/mes/tools/WebSocketServer.java                                           |   31 
 UnLoadGlassModule/src/main/java/com/mes/MesApplication.java                                                  |   17 
 UnLoadGlassModule/target/MES-UnLoadGlassModule-0.0.1-SNAPSHOT.jar.original                                   |    0 
 UnLoadGlassModule/src/main/java/com/mes/service/ThreadExample.java                                           |   25 
 UnLoadGlassModule/pom.xml                                                                                    |   44 +
 UnLoadGlassModule/src/main/java/com/mes/entity/DownStorageCage.java                                          |   18 
 UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java                                          |   26 
 UnLoadGlassModule/src/main/java/com/mes/common/RabbitMQUtils.java                                            |  173 +++++
 UnLoadGlassModule/src/main/java/com/mes/service/Plcaction.java                                               |   35 +
 UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcBitObject.java                                      |  142 ++++
 UnLoadGlassModule/src/main/java/com/mes/mapper/DownWorkstationMapper.java                                    |   16 
 UnLoadGlassModule/target/surefire-reports/com.mes.MesApplicationTests.txt                                    |    4 
 /dev/null                                                                                                    |   26 
 UnLoadGlassModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst |    1 
 UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcBitInfo.java                                        |   75 ++
 UnLoadGlassModule/src/main/java/com/mes/service/GlassHandler.java                                            |   65 ++
 UnLoadGlassModule/src/main/resources/application.yml                                                         |   20 
 UnLoadGlassModule/MES-Module.iml                                                                             |   49 +
 UnLoadGlassModule/target/classes/application.yml                                                             |   20 
 39 files changed, 1,607 insertions(+), 135 deletions(-)

diff --git a/UnLoadGlassModule/MES-Module.iml b/UnLoadGlassModule/MES-Module.iml
index 7d58678..debbce9 100644
--- a/UnLoadGlassModule/MES-Module.iml
+++ b/UnLoadGlassModule/MES-Module.iml
@@ -13,6 +13,16 @@
     <facet type="Spring" name="Spring">
       <configuration />
     </facet>
+    <facet type="jpa" name="JPA">
+      <configuration>
+        <setting name="validation-enabled" value="true" />
+        <setting name="provider-name" value="Hibernate" />
+        <datasource-mapping>
+          <factory-entry name="entityManagerFactory" />
+        </datasource-mapping>
+        <naming-strategy-map />
+      </configuration>
+    </facet>
   </component>
   <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
     <output url="file://$MODULE_DIR$/target/classes" />
@@ -25,6 +35,7 @@
     </content>
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="Java EE 6-Java EE 6" level="project" />
     <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.5.9" level="project" />
     <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.5.9" level="project" />
     <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.5.9" level="project" />
@@ -32,7 +43,6 @@
     <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.10" level="project" />
     <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.10" level="project" />
     <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.17.1" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.17.1" level="project" />
     <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.33" level="project" />
     <orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
     <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.28" level="project" />
@@ -71,8 +81,8 @@
     <orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.4.7" level="project" />
     <orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:2.4.7" level="project" />
     <orderEntry type="library" scope="TEST" name="Maven: org.ow2.asm:asm:9.1" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: jakarta.xml.bind:jakarta.xml.bind-api:2.3.3" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: jakarta.activation:jakarta.activation-api:1.2.2" level="project" />
+    <orderEntry type="library" name="Maven: jakarta.xml.bind:jakarta.xml.bind-api:2.3.3" level="project" />
+    <orderEntry type="library" name="Maven: jakarta.activation:jakarta.activation-api:1.2.2" level="project" />
     <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest:2.2" level="project" />
     <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter:5.7.2" level="project" />
     <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-api:5.7.2" level="project" />
@@ -95,7 +105,7 @@
     <orderEntry type="library" scope="TEST" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-test-autoconfigure:2.3.1" level="project" />
     <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.3.15" level="project" />
     <orderEntry type="library" name="Maven: com.auth0:java-jwt:3.10.3" level="project" />
-    <orderEntry type="library" scope="RUNTIME" name="Maven: commons-codec:commons-codec:1.15" level="project" />
+    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.15" level="project" />
     <orderEntry type="library" name="Maven: org.assertj:assertj-core:3.19.0" level="project" />
     <orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.4.0" level="project" />
     <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.5.1" level="project" />
@@ -135,6 +145,37 @@
     <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.13.0" level="project" />
     <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.13.0" level="project" />
     <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.13.0" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-websocket:2.5.9" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-websocket:5.3.15" level="project" />
+    <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.9" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.poi:poi:5.2.4" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.4" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-math3:3.6.1" level="project" />
+    <orderEntry type="library" name="Maven: commons-io:commons-io:2.13.0" level="project" />
+    <orderEntry type="library" name="Maven: com.zaxxer:SparseBitSet:1.3" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.17.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:5.2.4" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-lite:5.2.4" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:5.1.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-compress:1.24.0" level="project" />
+    <orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.08" level="project" />
     <orderEntry type="library" name="Maven: io.netty:netty-all:4.1.36.Final" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-jpa:2.5.9" level="project" />
+    <orderEntry type="library" name="Maven: jakarta.transaction:jakarta.transaction-api:1.3.3" level="project" />
+    <orderEntry type="library" name="Maven: jakarta.persistence:jakarta.persistence-api:2.2.3" level="project" />
+    <orderEntry type="library" name="Maven: org.hibernate:hibernate-core:5.4.33" level="project" />
+    <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.4.3.Final" level="project" />
+    <orderEntry type="library" name="Maven: org.javassist:javassist:3.27.0-GA" level="project" />
+    <orderEntry type="library" name="Maven: antlr:antlr:2.7.7" level="project" />
+    <orderEntry type="library" name="Maven: org.jboss:jandex:2.2.3.Final" level="project" />
+    <orderEntry type="library" name="Maven: org.dom4j:dom4j:2.1.3" level="project" />
+    <orderEntry type="library" name="Maven: org.hibernate.common:hibernate-commons-annotations:5.1.2.Final" level="project" />
+    <orderEntry type="library" name="Maven: org.glassfish.jaxb:jaxb-runtime:2.3.5" level="project" />
+    <orderEntry type="library" name="Maven: org.glassfish.jaxb:txw2:2.3.5" level="project" />
+    <orderEntry type="library" name="Maven: com.sun.istack:istack-commons-runtime:3.0.12" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.sun.activation:jakarta.activation:1.2.2" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-jpa:2.5.8" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-orm:5.3.15" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-aspects:5.3.15" level="project" />
   </component>
 </module>
\ No newline at end of file
diff --git a/UnLoadGlassModule/pom.xml b/UnLoadGlassModule/pom.xml
index dcc9ef3..66013a9 100644
--- a/UnLoadGlassModule/pom.xml
+++ b/UnLoadGlassModule/pom.xml
@@ -9,9 +9,9 @@
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
     <groupId>com.MES-Module</groupId>
-    <artifactId>MES-Module</artifactId>
+    <artifactId>MES-UnLoadGlassModule</artifactId>
     <version>0.0.1-SNAPSHOT</version>
-    <name>MES-Module</name>
+    <name>MES-UnLoadGlassModule</name>
     <description>project for Spring Boot</description>
     <properties>
         <java.version>1.8</java.version>
@@ -115,7 +115,7 @@
             <artifactId>spring-boot-starter-cache</artifactId>
         </dependency>
 
-
+        <!--  rabbitmq    -->
         <dependency>
             <groupId>com.rabbitmq</groupId>
             <artifactId>amqp-client</artifactId>
@@ -148,7 +148,39 @@
             <version>2.13.0</version>
         </dependency>
 
-<!--websocket-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-websocket</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.github.xingshuangs</groupId>
+            <artifactId>iot-communication</artifactId>
+            <version>1.4.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-websocket</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+            <version>2.8.9</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+            <version>5.2.4</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>5.2.4</version>
+        </dependency>
+
+        <!--websocket-->
 <!--        <dependency>-->
 <!--            <groupId>org.springframework.boot</groupId>-->
 <!--            <artifactId>spring-boot-starter-websocket</artifactId>-->
@@ -159,6 +191,10 @@
             <artifactId>netty-all</artifactId>
             <version>4.1.36.Final</version>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
 
     </dependencies>
 
diff --git a/UnLoadGlassModule/src/main/java/com/mes/MesApplication.java b/UnLoadGlassModule/src/main/java/com/mes/MesApplication.java
index 9cc84b5..c438a67 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/MesApplication.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/MesApplication.java
@@ -1,24 +1,19 @@
 package com.mes;
 
-import com.mes.common.PlcTools.S7object;
+import com.mes.tools.WebSocketServer;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.ConfigurableApplicationContext;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
-import org.springframework.transaction.annotation.Transactional;
 
-//springboot 鍚姩鍏ュ彛
 @SpringBootApplication
 @EnableCaching
-@EnableTransactionManagement//浜嬪姟娉ㄨВ
-//@Transactional//鍦╯ervice閲岄潰鏈夊琛ㄦ搷浣滐紝寮�鍚簨鍔℃敞瑙�
+@EnableTransactionManagement
 public class MesApplication {
     public static void main(String[] args) {
-        SpringApplication.run(MesApplication.class, args);
-        try {
-            //new NettyServer(12345).start();
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
+        SpringApplication springApplication = new SpringApplication(MesApplication.class);
+        ConfigurableApplicationContext applicationContext = springApplication.run(args);
+        WebSocketServer.setApplicationContext(applicationContext);
     }
 }
diff --git a/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/S7control.java b/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/S7control.java
deleted file mode 100644
index 9cc9e37..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/S7control.java
+++ /dev/null
@@ -1,413 +0,0 @@
-package com.mes.common.PlcTools;
-
-
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.List;
-
-import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
-import com.github.xingshuangs.iot.protocol.s7.service.MultiAddressWrite;
-import com.github.xingshuangs.iot.protocol.s7.service.S7PLC;
-import com.google.common.primitives.Bytes;
-
-public class S7control {
-
-    S7PLC s7PLC; // PLC閫氳绫诲疄渚�
-    
-    public S7control(EPlcType plcType, String ip, int port, int rack, int slot) {
-        if (s7PLC == null)
-            s7PLC = new S7PLC(plcType, ip, port,0,0);
-    } 
-    /**
-     * 鍏抽棴瑗块棬瀛恠7閫氳杩炴帴
-     */
-    public void CloseS7client() {
-        if (s7PLC == null)
-            s7PLC.close();
-            s7PLC.checkConnected();
-    }
-
-    /**
-     * s7閫氳杩炴帴鐘舵��
-     */
-    public boolean CheckConnected() {
-        return s7PLC.checkConnected();
-    }
-     
-    /**
-     * 鎸夋寚瀹氱殑鍦板潃 鍐欏叆涓�涓獁ord
-     * 
-     * @param address 鍦板潃
-     * @param data    word鐨勫��
-     */
-    public void WriteWord(String address, short data) {
-        if (s7PLC==null)
-        {
-            return;
-        }
-        s7PLC.writeInt16(address, data);
-    }
-
-    /**
-     * 浠庢煇鍦板潃杩炵画 鍐欏叆澶氫釜word
-     * 
-     * @param address 鍦板潃
-     * @param datas   word鐨勫��
-     */
-    public void WriteWord(String address, List<Short> datas) {
-        if (s7PLC==null)
-            return;
-        // s7PLC.write(address, data);
-        List<String> addresslist = GetAddressList(address, datas.size(), 16);
-        MultiAddressWrite addressWrite = new MultiAddressWrite();
-        for (int i = 0; i < datas.size(); i++) {
-            addressWrite.addInt16(addresslist.get(i), datas.get(i));
-        }
-        s7PLC.writeMultiData(addressWrite);
-    }
-
-    /**
-     * 鎸夋寚瀹氱殑鍦板潃 鍐欏叆澶氫釜word
-     * 
-     * @param address 鍦板潃
-     * @param datas   word鐨勫��
-     */
-
-
-
-
-
-
-    /**
-     * 鎸夋寚瀹氱殑鍦板潃 鍐欏叆涓�涓狟it
-     * 
-     * @param address 鍦板潃
-     * @param data    Bit鐨勫��
-     */
-    public void WriteBit(String address, Boolean data) {
-        if (s7PLC==null)
-            return;
-        s7PLC.writeBoolean(address, data);
-    }
-
-    /**
-     * 鎸夋寚瀹氱殑鍦板潃 鍐欏叆澶氫釜bit
-     * 
-     * @param address 鍦板潃
-     * @param datas   bit鐨勫��
-     */
-    public void WriteBit(List<String> address, List<Boolean> datas) {
-        if (s7PLC==null)
-            return;
-        // s7PLC.write(address, data);
-
-        MultiAddressWrite addressWrite = new MultiAddressWrite();
-        for (int i = 0; i < address.size(); i++) {
-            addressWrite.addBoolean(address.get(i), datas.get(i));
-        }
-        s7PLC.writeMultiData(addressWrite);
-    }
-
-    /**
-     * 浠庢煇鍦板潃杩炵画 鍐欏叆澶氫釜bit
-     * 
-     * @param address 鍦板潃
-     * @param datas   word鐨勫��
-     */
-    public void WriteBit(String address, List<Boolean> datas) {
-        if (s7PLC==null)
-            return;
-        // s7PLC.write(address, data);
-        List<String> addresslist = GetAddressList(address, datas.size(), 1);
-        MultiAddressWrite addressWrite = new MultiAddressWrite();
-        for (int i = 0; i < datas.size(); i++) {
-            addressWrite.addBoolean(addresslist.get(i), datas.get(i));
-        }
-        s7PLC.writeMultiData(addressWrite);
-    }
-     /**
-     * 鎸夋寚瀹氱殑鍦板潃 鍐欏叆澶氫釜byte
-     * 
-     * @param address 鍦板潃
-     * @param datas   byte鐨勫��
-     */
-    public void WriteByte(String address, byte[] datas) {
-        if (s7PLC==null)
-            return;
-        // s7PLC.write(address, data); 
-        s7PLC.writeByte(address, datas);
-    }
-
-    /**
-     * 鎸夋寚瀹氱殑鍦板潃 璇诲彇word缁撴灉闆�
-     * 
-     * @param address 鍦板潃
-     * @return 缁撴灉
-     */
-    public List<Short> ReadWord(List<String> address) {
-        if (s7PLC == null)
-            return null;
-
-        try {
-            return s7PLC.readInt16(address);
-        } catch (Exception e) {
-            System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
-            return null;
-        }
-    }
-
-
-
-
-    private int getIndexFromAddress(String address) {
-
-        // 鍙互瑙f瀽鍑哄湴鍧�涓殑鏁板瓧閮ㄥ垎锛屽苟杞崲涓烘暣鏁�
-        return 0;
-    }
-
-    private String getAddressFromIndex(int index) {
-
-        // 鏁存暟杞崲涓哄湴鍧�鏍煎紡鐨勫瓧绗︿覆
-        return "";
-    }
-
-    /**
-     * 鎸夋寚瀹氱殑鍦板潃 璇诲彇word缁撴灉闆�
-     * 
-     * @param address 鍦板潃
-     * @param count   杩炵画璇诲灏戜釜word
-     * @return 缁撴灉
-     */
-    public List<Short> ReadWord(String address, int count) {
-        if (s7PLC == null)
-            return null;
-
-        List<String> addresslist = GetAddressList(address, count, 16);
-        try {
-            return s7PLC.readInt16(addresslist);
-        } catch (Exception e) {
-            System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
-
-            return null;
-        }
-    }
-
-    /**
-     * 鎸夋寚瀹氱殑鍦板潃 璇诲彇byte缁撴灉闆�
-     * 
-     * @param address 鍦板潃
-     * @param count   杩炵画璇诲灏戜釜byte
-     * @return 缁撴灉
-     */
-    public byte[] ReadByte(String address, int count) {
-        if (s7PLC==null)
-             return null;
-       // List<String> addresslist = GetAddressList(address, count, 16);
-
-        try {
-            return s7PLC.readByte(address, count);
-        }catch (Exception e) {
-            // 澶勭悊寮傚父
-            System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
-            return null;
-        }
-
-    }
-
-    /**
-     * 鎸夋寚瀹氱殑鍦板潃 鎸塨it浣� 0 flase 1 true 璇诲彇缁撴灉
-     *
-     * @param addresslist 鍦板潃闆�
-     * @return Boolean缁撴灉
-     */
-    public List<Boolean> ReadBits(List<String> addresslist) {
-        if (s7PLC==null)
-             return null;
-        return s7PLC.readBoolean(addresslist);
-    }
-//璇诲彇涓嶈繛缁湴鍧�bit
-public List<Boolean> readBits(List<String> addressList) {
-    if (s7PLC == null || addressList.isEmpty()) {
-        return null;
-    }
-
-    List<Boolean> values = new ArrayList<>();
-    for (String address : addressList) {
-        try {
-            boolean value = s7PLC.readBoolean(address);
-            values.add(value);
-        } catch (Exception e) {
-            // 澶勭悊寮傚父
-            System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
-        }
-    }
-
-    return values;
-}
-
-
-//璇诲彇String
-public List<String> readStrings(List<String> addressList) {
-    if (s7PLC == null) {
-        return null;
-    }
-    List<String> result = new ArrayList<>();
-    for (String address : addressList) {
-        try {
-            byte[] bytes = s7PLC.readByte(address, 14);
-            if (bytes != null) {
-                String str = new String(bytes, StandardCharsets.UTF_8);
-                result.add(str);
-            }
-        } catch (Exception e) {
-            System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
-            result.add(null);
-        }
-    }
-
-    return result;
-}
-
-
-//涓嶈繛缁湴鍧�鍐欏叆Word
-    public void WriteWord(List<String> address, List<Short> datas) {
-        if (s7PLC == null)
-            return;
-
-        for (int i = 0; i < address.size(); i++) {
-            String addr = address.get(i);
-            short data = datas.get(i);
-
-            if (addr.contains("-")) {
-                outmesid(String.valueOf(data),addr); // 鍗曠嫭澶勭悊甯︾牬鎶樺彿鐨勫湴鍧�
-            } else {
-                s7PLC.writeInt16(addr, data); // 灏嗘暟鎹啓鍏ュ崟涓湴鍧�
-            }
-        }
-    }
-    
-    
-    
-//瀛楃涓插啓鍏�
-    public void outmesid(String data, String addr) {
-//        System.out.println("outmesid: " + data);
-        List<Byte> glassidlist = new ArrayList<>();
-        String[] parts = addr.split("-");
-        if (parts.length == 2) {
-            addr = parts[0]; // 鍙繚鐣� "-" 鍓嶉潰鐨勯儴鍒�
-        }
-        for (char iditem : data.toCharArray()) {
-            glassidlist.add(Byte.valueOf(String.valueOf(iditem)));
-        }
-        byte[] bytes = Bytes.toArray(glassidlist);
-        WriteByte(addr, bytes);
-    }
-
-//璇诲彇涓嶈繛缁瓀ord
-    public List<Short> readWords(List<String> addresses) {
-        if (s7PLC == null) {
-            return null;
-        }
-
-        List<Short> data = new ArrayList<>();
-
-        for (String address : addresses) {
-            try {
-
-                // 鍗曚釜鍦板潃
-                Short value = s7PLC.readInt16(address);
-                data.add(value);
-            } catch (Exception e) {
-                System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
-
-            }
-
-        }
-        return data;
-    }
-
-//璇诲彇鏃堕棿
-public Long readtime(String address) {
-    if (s7PLC == null)
-        return null;
-    try {
-        return s7PLC.readTime(address);
-    } catch (Exception e) {
-        System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
-        return null;
-    }
-}
-
-
-    public void writetime(String address, long datas) {
-        if (s7PLC == null)
-            return;
-
-
-        s7PLC.writeTime(address, datas); // 灏嗘暟鎹啓鍏ュ崟涓湴鍧�
-    }
-
-
-
-
-
-    private int extractAddressNumber(String address) {
-        String numberStr = address.replaceAll("\\D+", ""); // 浣跨敤姝e垯琛ㄨ揪寮忔彁鍙栨暟瀛楅儴鍒�
-        return Integer.parseInt(numberStr);
-    }
-
-
-    /**
-     * 浠庢寚瀹氱殑鍦板潃寮�濮� 杩炵画鎸塨it浣嶈鍙�
-     *
-     * @param address 鍦板潃
-     * @param count   闀垮害
-     * @return Boolean缁撴灉
-     */
-    public List<Boolean> ReadBits(String address, int count) {
-        if (s7PLC == null)
-            return null;
-        List<String> addresslist = GetAddressList(address, count, 1);
-        try {
-            return s7PLC.readBoolean(addresslist);
-        } catch (Exception e) {
-            System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
-            return null;
-        }
-
-    };
-    
-    
-
-    private List<String> GetAddressList(String address, int count, int addedbit) {
-        List<String> addresslist = new ArrayList<String>();
-
-        String[] stringdatas = address.trim().split("\\.");
-        if (stringdatas.length < 2 || !address.startsWith("DB"))
-            return null;
-        int dbwindex = 0;
-        int bitindex = 0;
-        if (stringdatas.length == 2) {
-            dbwindex = Integer.parseInt(stringdatas[1]);
-        } else if (stringdatas.length == 3) {
-            dbwindex = Integer.parseInt(stringdatas[1]);
-            bitindex = Integer.parseInt(stringdatas[2]);
-        } else
-            return null;
-
-            addresslist.add(address);
-        for (int i = 0; i < count-1; i++) {
-
-            int bitcurrent = bitindex + addedbit;
-            if (bitcurrent > 7) {
-                dbwindex += bitcurrent / 8;
-                bitindex = 0;
-            } else
-                bitindex = bitcurrent;
-
-                String endstr=stringdatas.length==3?"." + bitindex:"";
-            addresslist.add(stringdatas[0] + "." + dbwindex + endstr);
-        }
-        return addresslist;
-    }
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/S7object.java b/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/S7object.java
deleted file mode 100644
index 16bd1de..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/S7object.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.mes.common.PlcTools;
-
-import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
-import com.github.xingshuangs.iot.protocol.s7.service.S7PLC;
-
-public class S7object {
-    public S7control plccontrol; // PLC閫氳绫诲疄渚�
-    private EPlcType plcType = EPlcType.S1500; // 瑗块棬瀛怭LC绫诲瀷
-    private String ip = "192.168.10.1"; // plc ip鍦板潃
-    private int port = 102; // plc 绔彛鍙�
-
-    private static volatile S7object instance = null;
-
-    private S7object() {
-        if (plccontrol == null)
-           plccontrol = new S7control(plcType, ip, port,0,0);
-    }
-
-    // 鍗曚緥妯″紡 鑾峰彇绫荤殑鍞竴瀹炰緥
-    public static S7object getinstance() {
-        if (instance == null) {
-            synchronized (S7object.class) {
-                if (instance == null)
-                    instance = new S7object();
-            }
-        }
-        return instance;
-    } 
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/S7object2.java b/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/S7object2.java
deleted file mode 100644
index 4ed72d6..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/S7object2.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.mes.common.PlcTools;
-
-import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
-import com.github.xingshuangs.iot.protocol.s7.service.S7PLC;
-
-public class S7object2 {
-    public S7control plccontrol; // PLC閫氳绫诲疄渚�
-    private EPlcType plcType = EPlcType.S1500; // 瑗块棬瀛怭LC绫诲瀷
-    private String ip = "192.168.10.2"; // plc ip鍦板潃
-    private int port = 102; // plc 绔彛鍙�
-
-    private static volatile S7object2 instance = null;
-
-    private S7object2() {
-        if (plccontrol == null)
-           plccontrol = new S7control(plcType, ip, port,0,0);
-    }
-
-    // 鍗曚緥妯″紡 鑾峰彇绫荤殑鍞竴瀹炰緥
-    public static S7object2 getinstance() {
-        if (instance == null) {
-            synchronized (S7object2.class) {
-                if (instance == null)
-                    instance = new S7object2();
-            }
-        }
-        return instance;
-    } 
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/common/RabbitMQUtils.java b/UnLoadGlassModule/src/main/java/com/mes/common/RabbitMQUtils.java
new file mode 100644
index 0000000..7c563e8
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/common/RabbitMQUtils.java
@@ -0,0 +1,173 @@
+package com.mes.common;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.rabbitmq.client.*;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.BlockingQueue;
+
+public class RabbitMQUtils {
+    // ObjectMapper瀵硅薄锛岀敤浜庡簭鍒楀寲鍜屽弽搴忓垪鍖朖SON
+    private static ObjectMapper objectMapper = new ObjectMapper();
+    private static String host = "10.153.19.150"; // RabbitMQ 涓绘満鍚�
+    private static Map<String, Object> args = new HashMap<>(); // 闃熷垪鍙傛暟
+
+    static {
+        // 璁剧疆闃熷垪鍙傛暟
+        args.put("x-max-length-bytes", 1024 * 1024);
+    }
+
+    //    private static  Map<String, Object> args = new HashMap<>();
+//     args.put("x-max-length-bytes",1024 * 1024);
+    // 鍙戦�佹秷鎭埌 RabbitMQ 闃熷垪涓�
+    public String sendMessage(String message, String queueName) throws Exception {
+        // 鍒涘缓杩炴帴宸ュ巶骞惰缃富鏈哄悕
+        ConnectionFactory factory = new ConnectionFactory();
+        factory.setHost(host);
+
+        // 浣跨敤 try-with-resources 璇彞鍒涘缓杩炴帴鍜岄�氶亾锛屽苟鍙戦�佹秷鎭�
+        try (Connection connection = factory.newConnection();
+             Channel channel = connection.createChannel()) {
+            // 澹版槑闃熷垪
+            channel.queueDeclare(queueName, false, false, false, args);
+
+            // 鍙戝竷娑堟伅鍒伴槦鍒�
+            channel.basicPublish("", queueName, null, message.getBytes("UTF-8"));
+            System.out.println(" [x] Sent '" + message + "' to queue '" + queueName + "'");
+        }
+
+        return message;
+    }
+
+
+    // 浠� RabbitMQ 闃熷垪涓帴鏀舵秷鎭�
+    public String receiveMessage(String queueName) throws Exception {
+        // 鍒涘缓杩炴帴宸ュ巶骞惰缃富鏈哄悕
+        ConnectionFactory factory = new ConnectionFactory();
+        factory.setHost(host);
+
+        // 鍒涘缓闃诲闃熷垪
+        BlockingQueue<String> messageQueue = new ArrayBlockingQueue<>(1);
+
+        // 浣跨敤 try-with-resources 璇彞鍒涘缓杩炴帴鍜岄�氶亾锛屽苟鎺ユ敹娑堟伅
+        try (Connection connection = factory.newConnection();
+             Channel channel = connection.createChannel()) {
+            // 澹版槑闃熷垪
+            channel.queueDeclare(queueName, false, false, false, args);
+
+            // 璁剧疆娑堟伅鎺ユ敹鍥炶皟
+            DeliverCallback deliverCallback = (consumerTag, delivery) -> {
+                String receivedMessage = new String(delivery.getBody(), "UTF-8");
+               // System.out.println(" [x] Received '" + receivedMessage + "'");
+
+                // 灏嗘帴鏀跺埌鐨勬秷鎭斁鍏ラ樆濉為槦鍒�
+                try {
+                    messageQueue.put(receivedMessage);
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
+                }
+            };
+
+            // 娑堣垂闃熷垪涓殑娑堟伅
+            channel.basicConsume(queueName, true, deliverCallback, consumerTag -> {
+
+            });
+
+            // 闃诲骞剁瓑寰呰幏鍙栨秷鎭�
+            return messageQueue.take();
+        }
+    }
+
+
+
+    public List<String> readMessages(String queueName,boolean is) throws Exception {
+        ConnectionFactory factory = new ConnectionFactory();
+        factory.setHost(host);
+        List<String> messages = new ArrayList<>();
+        try (Connection connection = factory.newConnection();
+             Channel channel = connection.createChannel()) {
+            boolean autoAck = false;
+
+            GetResponse response = channel.basicGet(queueName, autoAck);
+            if (response != null) {
+                String message = new String(response.getBody(), "UTF-8");
+                messages.add(message);
+                // 鎵嬪姩纭娑堟伅澶勭悊瀹屾垚
+                if(is){
+                    long deliveryTag = response.getEnvelope().getDeliveryTag();
+                    channel.basicAck(deliveryTag, false);
+                }
+
+            }
+        }
+
+        return messages;
+    }
+
+    // 鍙戦�� JSON 娑堟伅鍒伴槦鍒�
+    public static boolean sendJsonMessage(Object message, String queueName) throws Exception {
+        // 鍒涘缓杩炴帴宸ュ巶骞惰缃富鏈哄悕
+        ConnectionFactory factory = new ConnectionFactory();
+        factory.setHost(host);
+
+        // 浣跨敤 try-with-resources 璇彞鍒涘缓杩炴帴鍜岄�氶亾锛屽苟鍙戦�� JSON 娑堟伅
+        try (Connection connection = factory.newConnection();
+             Channel channel = connection.createChannel()) {
+            // 澹版槑闃熷垪
+            channel.queueDeclare(queueName, false, false, false, args);
+
+            // 灏嗗璞¤浆鎹负 JSON 瀛楃涓�
+            String jsonMessage = objectMapper.writeValueAsString(message);
+
+            // 鍙戝竷 JSON 娑堟伅鍒伴槦鍒�
+            channel.basicPublish("", queueName, null, jsonMessage.getBytes());
+            System.out.println(" [x] Sent JSON message: '" + jsonMessage + "' to queue '" + queueName + "'");
+
+            return true; // 鍙戦�佹秷鎭垚鍔�
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false; // 鍙戦�佹秷鎭け璐�
+        }
+    }
+
+    // 鎺ユ敹 JSON 娑堟伅骞惰浆鎹负瀵硅薄
+    public static <T> T receiveJsonMessage(Class<T> valueType, String queueName) throws Exception {
+        // 鍒涘缓杩炴帴宸ュ巶骞惰缃富鏈哄悕
+        ConnectionFactory factory = new ConnectionFactory();
+        factory.setHost(host);
+
+        // 浣跨敤 try-with-resources 璇彞鍒涘缓杩炴帴鍜岄�氶亾锛屽苟鎺ユ敹 JSON 娑堟伅
+        try (Connection connection = factory.newConnection();
+             Channel channel = connection.createChannel()) {
+            // 澹版槑闃熷垪
+            channel.queueDeclare(queueName, false, false, false, args);
+
+            // 鑾峰彇闃熷垪涓殑娑堟伅
+            GetResponse response = channel.basicGet(queueName, true);
+            if (response != null) {
+                byte[] body = response.getBody();
+                String jsonMessage = new String(body, "UTF-8");
+                System.out.println(" [x] Received JSON message: '" + jsonMessage + "' from queue '" + queueName + "'");
+
+                // 灏� JSON 娑堟伅杞崲涓哄璞�
+                return objectMapper.readValue(jsonMessage, valueType);
+            } else {
+                return null;
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null; // 鎺ユ敹娑堟伅澶辫触
+        }
+    }
+
+}
+
+//    RabbitMQUtils.sendMessage("Hello, world!", "module_queue");
+//RabbitMQUtils.receiveMessage("module_queue");
+//RabbitMQUtils.sendJsonMessage(someObject, "another_queue");
+//RabbitMQUtils.receiveJsonMessage(SomeClass.class, "another_queue");
+// 闇�瑕佸皢 someObject 鏇挎崲涓轰綘瑕佸彂閫佺殑瀵硅薄锛屽苟灏� SomeClass 鏇挎崲涓轰綘瑕佹帴鏀跺苟杞崲鐨勫璞$被鍨嬨��
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java b/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java
index 1e45c2c..f6ecf3f 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java
@@ -1,23 +1,23 @@
 package com.mes.config;
 
-
-import com.mes.*;
-import org.springframework.boot.ApplicationArguments;
-import org.springframework.boot.ApplicationRunner;
-import org.springframework.core.annotation.Order;
+import com.mes.service.Plcaction;
+import com.mes.service.DownGlassInfoService;
+import org.springframework.context.ApplicationListener;
+import org.springframework.context.event.ContextRefreshedEvent;
 import org.springframework.stereotype.Component;
 
 @Component
-@Order(1)
+class AppStartup implements ApplicationListener<ContextRefreshedEvent> {
 
-public class AppRunnerConfig implements ApplicationRunner {
+    private final DownGlassInfoService downGlassInfoService;
+
+    public AppStartup(DownGlassInfoService downGlassInfoService) {
+        this.downGlassInfoService = downGlassInfoService;
+    }
 
     @Override
-    public void run(ApplicationArguments args) throws Exception {
-        // TODO Auto-generated method stub
-        //
-        System.out.println("鍚姩瀹屾垚");
- 
- 
+    public void onApplicationEvent(ContextRefreshedEvent event) {
+        Plcaction.setDownGlassInfoService(downGlassInfoService);
+        new Plcaction().start();
     }
 }
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/DownGlassInfo.java b/UnLoadGlassModule/src/main/java/com/mes/entity/DownGlassInfo.java
new file mode 100644
index 0000000..6630735
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/entity/DownGlassInfo.java
@@ -0,0 +1,19 @@
+package com.mes.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+@Data
+public class DownGlassInfo {
+
+    @TableId(type = IdType.AUTO)
+    private Integer id; // 涓嬬墖鐜荤拑淇℃伅琛╥d
+
+    private String flowCardId; // 娴佺▼鍗″彿
+    private Integer sequence; // 椤哄簭
+    private Double width; // 瀹�
+    private Double height; // 楂�
+    private Double thickness; // 鍘氬害
+
+}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/DownStorageCage.java b/UnLoadGlassModule/src/main/java/com/mes/entity/DownStorageCage.java
new file mode 100644
index 0000000..d917446
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/entity/DownStorageCage.java
@@ -0,0 +1,18 @@
+package com.mes.entity;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+        import com.baomidou.mybatisplus.annotation.TableId;
+        import lombok.Data;
+
+@Data
+public class DownStorageCage {
+
+    @TableId(type = IdType.AUTO)
+    private int id; // 涓嬬墖鍓嶇悊鐗囩琛╥d
+    private int deviceId; // 璁惧id
+    private String slot; // 鏍呮牸鍙�
+    private String enableState; // 鍚敤鐘舵��
+    private int remainWidth; // 鍓╀綑
+
+}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/DownStorageCageDetails.java b/UnLoadGlassModule/src/main/java/com/mes/entity/DownStorageCageDetails.java
new file mode 100644
index 0000000..8e6b6a7
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/entity/DownStorageCageDetails.java
@@ -0,0 +1,25 @@
+package com.mes.entity;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+@Data
+public class DownStorageCageDetails {
+
+    @TableId(type = IdType.AUTO)
+    private int id; // 涓嬬墖鍓嶇悊鐗囩鏄庣粏琛╥d
+
+    private int deviceId; // 璁惧id
+    private int slot; // 鏍呮牸鍙�
+    private int glassId; // 鐜荤拑id
+    private int sequence; // 灏忕墖鍦ㄦ牸鍐呯殑椤哄簭
+    private String flowCardId; // 娴佺▼鍗″彿
+    private int glassType; // 鐜荤拑绫诲瀷
+    private double width; // 瀹�
+    private double height; // 楂�
+    private double thickness; // 鍘氬害
+    private int temperingLayoutId; // 閽㈠寲鐗堝浘id
+    private int temperingFeedSequence; // 閽㈠寲鐗堝浘鐗囧簭
+    private int state; // 鐘舵��
+    private int gap; // 鐜荤拑闂撮殭
+}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/DownWorkstation.java b/UnLoadGlassModule/src/main/java/com/mes/entity/DownWorkstation.java
new file mode 100644
index 0000000..d9a2dfd
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/entity/DownWorkstation.java
@@ -0,0 +1,17 @@
+package com.mes.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+        import com.baomidou.mybatisplus.annotation.TableId;
+        import lombok.Data;
+
+@Data
+public class DownWorkstation {
+
+    @TableId(type = IdType.AUTO)
+    private int id; // 涓嬬墖宸ヤ綅琛╥d
+    private Integer workstationId; // 宸ヤ綅id
+    private String flowCardId; // 娴佺▼鍗″彿
+    private Integer deviceId; // 璁惧id
+    private Integer enableState; // 鍚敤鐘舵��
+    private Integer workState; // 宸ヤ綔鐘舵��
+}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/OrderTest.java b/UnLoadGlassModule/src/main/java/com/mes/entity/OrderTest.java
deleted file mode 100644
index e8ea030..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/entity/OrderTest.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.mes.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-@Data  //lombok 绠�鍐檍ava浠g爜 瀹炰綋绫荤殑get涓巗et
-@TableName("`order`")
-public class OrderTest {
-    @TableId(type = IdType.AUTO)
-    private  Integer id;
-    private  String orderId;
-    private  String recipeNo;
-    private  String largeglassNo;
-    private  String largeglassCompleted;
-    private  String smallglassNo;
-    private  String smallglassCompleted;
-    private  String smallglassProcessing;
-    private  String smallglassWorn;
-    private  String orderStatus;
-    private  String orderMaker;
-    private  String makeTime;
-    private  String updateTime;
-
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcBitInfo.java b/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcBitInfo.java
new file mode 100644
index 0000000..686752f
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcBitInfo.java
@@ -0,0 +1,75 @@
+package com.mes.entity.device;
+
+public  class PlcBitInfo {
+
+        public PlcBitInfo(String startAddress) {
+            this.startAddress = startAddress;
+        }
+        private String startAddress;
+        // 鍙傛暟鏍囪瘑
+        private String codeId;
+
+        // 鍙傛暟鍚嶇О
+        private String name;
+
+        // 璇诲彇 鍙傛暟鍊�
+        private Boolean value;
+        // 鍙傛暟鍦板潃
+        private int addressIndex;
+
+        public String getCodeId() {
+            return this.codeId;
+        }
+
+        public void setCodeId(String codeId) {
+            this.codeId = codeId;
+        }
+
+        public String getName() {
+            return this.name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public Boolean getValue() {
+            return this.value;
+        }
+
+        public void setValue(Boolean value) {
+            this.value = value;
+        } 
+         
+
+        public int getAddressIndex() {
+            return this.addressIndex;
+        } 
+         /**
+     * 鑾峰彇鍦板潃
+     * 
+     * @param index 绱㈠紩鍦板潃
+     */
+        public String getAddress(int index) {
+            String[] stringdatas = this.startAddress.trim().split("\\.");
+            if (stringdatas.length < 2 )
+                return null;
+            int dbwindex = 0;
+            int bitindex = 0;
+             if (stringdatas.length == 3) {
+                dbwindex = Integer.parseInt(stringdatas[1]);
+                bitindex = Integer.parseInt(stringdatas[2]);
+            } else
+                return null; 
+              dbwindex+=index/8;
+              bitindex+=index%8;
+            return stringdatas[0]+"."+dbwindex+"."+bitindex;
+        }
+
+
+
+
+    public void setAddressIndex(int addressindex) {
+            this.addressIndex = addressindex;
+        } 
+    }
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcBitObject.java b/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcBitObject.java
new file mode 100644
index 0000000..977a13c
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcBitObject.java
@@ -0,0 +1,142 @@
+package com.mes.entity.device;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+public class PlcBitObject {
+
+    // 璇ユā鍧楁暟鎹被鍨嬶紝鏁版嵁璧峰浣嶇疆
+    private String plcAddressBegin;
+    // 鏁版嵁鍦板潃闀垮害锛氱涓�鍙傛暟鍒版渶鍚庝竴涓弬鏁扮殑闀垮害
+    private int plcAddressLength;
+    private ArrayList<PlcBitInfo> plcBitList;
+
+    /**
+     * @return 鏁版嵁鍖哄紑濮嬪湴鍧�
+     */
+    public String getPlcAddressBegin() {
+        return plcAddressBegin;
+    }
+
+    /**
+     * @param plcAddressBegin 璁剧疆鏁版嵁鍖哄紑濮嬪湴鍧�
+     */
+    public void setPlcAddressBegin(String plcAddressBegin) {
+        this.plcAddressBegin = plcAddressBegin;
+    }
+
+    /**
+     * @return 鏁版嵁鍖� 璇诲彇鎵�鏈夋暟鎹墍闇�鐨勯暱搴︼紙浠yte绫诲瀷涓哄熀鍑嗭級
+     */
+    public int getPlcAddressLength() {
+        return plcAddressLength;
+    }
+
+    /**
+     * @return 璁剧疆锛氭暟鎹尯 璇诲彇鎵�鏈夋暟鎹墍闇�鐨勯暱搴︼紙浠yte绫诲瀷涓哄熀鍑嗭級
+     */
+    public void setPlcAddressLength(int plcAddressLength) {
+        this.plcAddressLength = plcAddressLength;
+    }
+
+    /**
+     * @return 鑾峰彇鍙傛暟瀹炰緥闆嗗悎
+     */
+    public ArrayList<PlcBitInfo> getBitList() {
+        return plcBitList;
+    }
+
+    /**
+     * 鏍规嵁鍙傛暟鏍囪瘑 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     * 
+     * @param codeid 鍙傛暟鏍囪瘑
+     * @return 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     */
+    public PlcBitInfo getPlcBit(String codeid) {
+        if (plcBitList != null) {
+            for (PlcBitInfo plcbitInfo : plcBitList) {
+                if (plcbitInfo.getCodeId().equals(codeid))
+                    return plcbitInfo;
+            }
+            return null;
+        } else
+            return null;
+    }
+
+    /**
+     * 鏍规嵁鍙傛暟鏍囪瘑 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     * 
+     * @param codeid 鍙傛暟鏍囪瘑
+     * @return 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     */
+    public List<Boolean> getPlcBitValues(List<String> codeids) {
+        List<Boolean> arrayList = new ArrayList<>();
+        if (plcBitList != null) {
+            Map<String, Boolean> resultMap = new LinkedHashMap<>(); // 浣跨敤 LinkedHashMap 淇濈暀鎻掑叆椤哄簭
+            for (PlcBitInfo plcBitInfo : plcBitList) {
+                if (codeids.contains(plcBitInfo.getCodeId().toString())) {
+                    resultMap.put(plcBitInfo.getCodeId().toString(), plcBitInfo.getValue());
+                }
+            }
+            for (String codeId : codeids) { // 鎸夌収浼犲叆鍙傛暟鐨勯『搴忛亶鍘�
+                Boolean value = resultMap.get(codeId);
+                if (value != null) {
+                    arrayList.add(value);
+                } else {
+                    arrayList.add(null); // 濡傛灉鎵句笉鍒板搴旂殑鍊硷紝娣诲姞 null
+                }
+            }
+        }
+        return arrayList;
+    }
+
+
+    public List<String> getAddressListByCodeId(List<String> codeIdList) {
+        List<String> addressList = new ArrayList<>();
+        for (String codeId : codeIdList) {
+            for (PlcBitInfo plcBitInfo : plcBitList) {
+                if (plcBitInfo.getCodeId().equals(codeId)) {
+                    int index = plcBitInfo.getAddressIndex();
+                    String address = plcBitInfo.getAddress(index);
+                    if (address != null) {
+                        addressList.add(address);
+                    }
+                }
+            }
+        }
+        return addressList;
+    }
+
+
+    /**
+     * 娣诲姞鍙傛暟瀹炰緥
+     * 
+     * @param param 鍙傛暟瀹炰緥
+     */
+    public void addPlcBit(PlcBitInfo param) {
+        if (plcBitList != null)
+            plcBitList.add(param);
+        else {
+            plcBitList = new ArrayList<PlcBitInfo>();
+            plcBitList.add(param);
+        }
+    }
+
+    /**
+     * 鏍规嵁PLC杩斿洖鐨勬暟鎹� 缁欏弬鏁板疄渚嬭祴鍊�
+     * 
+     * @param plcValueArray PLC璇诲彇鍥炴潵鐨刡yte绫诲瀷鏁版嵁闆嗗悎
+     */
+    public void setPlcBitList(List<Boolean> plcValueArray) {
+        if (plcBitList != null) {
+            for (PlcBitInfo plcbitInfo : plcBitList) {
+                plcbitInfo.setValue(plcValueArray.get(plcbitInfo.getAddressIndex()));
+            }
+        }
+    }
+   
+
+   
+}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterInfo.java b/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterInfo.java
new file mode 100644
index 0000000..0cc7116
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterInfo.java
@@ -0,0 +1,124 @@
+package com.mes.entity.device;
+public  class PlcParameterInfo {
+      public PlcParameterInfo(String startAddress) {
+        this.startAddress = startAddress;
+      } 
+        private String startAddress;
+        // 鍙傛暟鏍囪瘑
+        private String codeId;
+
+        // 鍙傛暟鍚嶇О
+        private String name;
+
+        // 璇诲彇 鍙傛暟鍊�
+        private String value;
+
+        // // 鍐欏叆 鍙傛暟鍊�
+        // private String writeValue;
+
+        // 鍙傛暟鍗曚綅
+        private String unit;
+
+        // 鍙傛暟鍊艰浆鎹㈢郴鏁�
+        private int ratio;
+
+        // 鍙傛暟鍦板潃
+        private int addressIndex;
+
+        // 鍙傛暟鍦板潃浣嶉暱搴�
+        private int addressLength;
+
+        public String getCodeId() {
+            return this.codeId;
+        }
+
+        public void setCodeId(String codeId) {
+            this.codeId = codeId;
+        }
+
+        public String getName() {
+            return this.name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public String getValue() {
+            return this.value;
+        }
+
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+        // public String getWriteValue() {
+        //     return this.writeValue;
+        // }
+
+        // public void setWriteValue(String writeValue) {
+        //     this.writeValue = writeValue;
+        // }
+
+        public String getUnit() {
+            return this.unit;
+        }
+
+        public void setUnit(String unit) {
+            this.unit = unit;
+        }
+
+        public int getAddressIndex() {
+            return this.addressIndex;
+        }
+
+        public void setAddressIndex(int addressindex) {
+            this.addressIndex = addressindex;
+        }
+
+        public int getAddressLength() {
+            return this.addressLength;
+        }
+
+        public void setAddressLength(int addresslength) {
+            this.addressLength = addresslength;
+        }
+
+        public int getRatio() {
+            return this.ratio;
+        }
+
+        public void setRatio(int ratio) {
+            this.ratio = ratio;
+        }
+
+           /**
+     * 鑾峰彇鍦板潃
+     * 
+     * @param index 绱㈠紩鍦板潃
+     */
+    public String getAddress(int index) {
+        String[] stringdatas = this.startAddress.trim().split("\\.");
+        int addressLength=this.addressLength;
+        if (addressLength < 2 ){
+            return null;
+        }
+
+        if (addressLength == 2 ) {
+            int wordindex = index;
+
+            return stringdatas[0] + "." + wordindex;
+        }
+        if (addressLength == 14 ) {
+            int wordindex = index;
+            int newIndex = wordindex + 13;
+            return stringdatas[0] + "." + wordindex +"-" + newIndex;
+        }
+        return null;
+    }
+
+    public int getPlcAddress() {
+
+        return addressIndex;
+    }
+}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterObject.java b/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterObject.java
new file mode 100644
index 0000000..5355db5
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterObject.java
@@ -0,0 +1,202 @@
+package com.mes.entity.device;
+
+import java.lang.reflect.Array;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+public class PlcParameterObject {
+
+    // 璇ユā鍧楁暟鎹被鍨嬶紝鏁版嵁璧峰浣嶇疆
+    private String plcAddressBegin;
+    // 鏁版嵁鍦板潃闀垮害锛氱涓�鍙傛暟鍒版渶鍚庝竴涓弬鏁扮殑闀垮害
+    private int plcAddressLength;
+    private ArrayList<PlcParameterInfo> plcParameterList;
+
+    /**
+     * @return 鏁版嵁鍖哄紑濮嬪湴鍧�
+     */
+    public String getPlcAddressBegin() {
+        return plcAddressBegin;
+    }
+
+    /**
+     * @param plcAddressBegin 璁剧疆鏁版嵁鍖哄紑濮嬪湴鍧�
+     */
+    public void setPlcAddressBegin(String plcAddressBegin) {
+        this.plcAddressBegin = plcAddressBegin;
+    }
+
+    /**
+     * @return 鏁版嵁鍖� 璇诲彇鎵�鏈夋暟鎹墍闇�鐨勯暱搴︼紙浠yte绫诲瀷涓哄熀鍑嗭級
+     */
+    public int getPlcAddressLength() {
+        return plcAddressLength;
+    }
+
+    /**
+     * @return 璁剧疆锛氭暟鎹尯 璇诲彇鎵�鏈夋暟鎹墍闇�鐨勯暱搴︼紙浠yte绫诲瀷涓哄熀鍑嗭級
+     */
+    public void setPlcAddressLength(int plcAddressLength) {
+        this.plcAddressLength = plcAddressLength;
+    }
+
+    /**
+     * @return 鑾峰彇鍙傛暟瀹炰緥闆嗗悎
+     */
+    public ArrayList<PlcParameterInfo> getPlcParameterList() {
+        return plcParameterList;
+    }
+
+    /**
+     * 鏍规嵁鍙傛暟鏍囪瘑 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     * 
+     * @param codeid 鍙傛暟鏍囪瘑
+     * @return 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     */
+    public PlcParameterInfo getPlcParameter(String codeid) {
+        if (plcParameterList != null) {
+            for (PlcParameterInfo plcParameterInfo : plcParameterList) {
+                if (plcParameterInfo.getCodeId().equals(codeid))
+                    return plcParameterInfo;
+            }
+            return null;
+        } else
+            return null;
+    }
+
+
+
+    /**
+     * 鏍规嵁鍙傛暟鏍囪瘑 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     * 
+     * @param codeids 鍙傛暟鏍囪瘑
+     * @return 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     */
+    public List<String> getPlcParameterValues(List<String> codeids) {
+        List<String> arrayList = new ArrayList<>();
+        if (plcParameterList != null) {
+            Map<String, PlcParameterInfo> resultMap = new LinkedHashMap<>(); // 浣跨敤 LinkedHashMap 淇濈暀鎻掑叆椤哄簭
+            for (PlcParameterInfo plcParameterInfo : plcParameterList) {
+                if (codeids.contains(plcParameterInfo.getCodeId())) {
+                    resultMap.put(plcParameterInfo.getCodeId(), plcParameterInfo);
+                }
+            }
+            for (String codeId : codeids) { // 鎸夌収浼犲叆鍙傛暟鐨勯『搴忛亶鍘�
+                PlcParameterInfo plcParameterInfo = resultMap.get(codeId);
+                if (plcParameterInfo != null) {
+                    arrayList.add(plcParameterInfo.getValue());
+                } else {
+                    arrayList.add(null); // 濡傛灉鎵句笉鍒板搴旂殑鍊硷紝娣诲姞 null
+                }
+            }
+        }
+        return arrayList;
+    }
+
+
+    public List<String> getAddressListByCodeId(List<String> codeIdList) {
+        List<String> addressList = new ArrayList<>();
+        for (String codeId : codeIdList) {
+            for (PlcParameterInfo plcParameterInfo : plcParameterList) {
+                if (plcParameterInfo.getCodeId().equals(codeId)) {
+                    int index = plcParameterInfo.getAddressIndex();
+                    String address = plcParameterInfo.getAddress(index);
+                    if (address != null) {
+                        addressList.add(address);
+                    }
+                }
+            }
+        }
+        return addressList;
+    }
+
+
+
+
+
+
+    /**
+     * 娣诲姞鍙傛暟瀹炰緥
+     * 
+     * @param param 鍙傛暟瀹炰緥
+     */
+    public void addPlcParameter(PlcParameterInfo param) {
+        if (plcParameterList != null)
+            plcParameterList.add(param);
+        else {
+            plcParameterList = new ArrayList<PlcParameterInfo>();
+            plcParameterList.add(param);
+        }
+    }
+
+    /**
+     * 鏍规嵁PLC杩斿洖鐨勬暟鎹� 缁欏弬鏁板疄渚嬭祴鍊�
+     * 
+     * @param plcValueArray PLC璇诲彇鍥炴潵鐨刡yte绫诲瀷鏁版嵁闆嗗悎
+     */
+    public void setPlcParameterList(byte[] plcValueArray) {
+        if (plcParameterList != null) {
+          
+            for (PlcParameterInfo plcParameterInfo : plcParameterList) {
+               
+                byte[] valueList = new byte[plcParameterInfo.getAddressLength()];
+
+//                System.out.println(plcParameterInfo.getAddressLength());
+
+                for (int i = 0; i < plcParameterInfo.getAddressLength(); i++) {
+                    Array.setByte(valueList, i, plcValueArray[plcParameterInfo.getAddressIndex() + i]);
+
+                }
+                if (plcParameterInfo.getAddressLength()==2) { 
+                      plcParameterInfo.setValue(String.valueOf(byte2short(valueList)));
+                }
+                else if (plcParameterInfo.getAddressLength()==14) {
+                    plcParameterInfo.setValue((byteToHexString(valueList)));
+                }
+
+                else
+                {
+                    String valuestr = new String(valueList);
+                    plcParameterInfo.setValue(valuestr);
+                }
+            }
+        }
+    }
+     /**
+     * short绫诲瀷杞琤yte[]
+     * 
+     * @param s short绫诲瀷鍊�
+     */
+    public static byte[] short2byte(short s){
+        byte[] b = new byte[2]; 
+        for(int i = 0; i < 2; i++){
+            int offset = 16 - (i+1)*8; //鍥犱负byte鍗�4涓瓧鑺傦紝鎵�浠ヨ璁$畻鍋忕Щ閲�
+            b[i] = (byte)((s >> offset)&0xff); //鎶�16浣嶅垎涓�2涓�8浣嶈繘琛屽垎鍒瓨鍌�
+        }
+        return b;
+   }
+     /**
+     * byte[]绫诲瀷杞瑂hort
+     * 
+     * @param b byte[]绫诲瀷鍊�
+     */
+   public static short byte2short(byte[] b){
+       short l = 0;
+       for (int i = 0; i < 2; i++) {
+           l<<=8; //<<=鍜屾垜浠殑 +=鏄竴鏍风殑锛屾剰鎬濆氨鏄� l = l << 8 
+           l |= (b[i] & 0xff); //鍜屼笂闈篃鏄竴鏍风殑  l = l | (b[i]&0xff)
+       }
+       return l;
+   }
+
+    public static String byteToHexString(byte[] bytes) {
+
+        String str = new String(bytes, StandardCharsets.UTF_8);
+        return str;
+    }
+
+
+}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/java/com/mes/mapper/DownGlassInfoMapper.java b/UnLoadGlassModule/src/main/java/com/mes/mapper/DownGlassInfoMapper.java
new file mode 100644
index 0000000..95ef927
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/mapper/DownGlassInfoMapper.java
@@ -0,0 +1,15 @@
+package com.mes.mapper;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mes.entity.DownGlassInfo;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+@InterceptorIgnore(tenantLine = "true")
+@DS("hangzhoumes") // 鎸囧畾浣跨敤 hangzhoumes 鏁版嵁婧�
+public interface DownGlassInfoMapper extends BaseMapper<DownGlassInfo> {
+}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/mapper/DownStorageCageDetailsMapper.java b/UnLoadGlassModule/src/main/java/com/mes/mapper/DownStorageCageDetailsMapper.java
new file mode 100644
index 0000000..e48f35c
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/mapper/DownStorageCageDetailsMapper.java
@@ -0,0 +1,16 @@
+package com.mes.mapper;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mes.entity.DownStorageCageDetails;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+@InterceptorIgnore(tenantLine = "true")
+@DS("hangzhoumes") // 鎸囧畾浣跨敤 hangzhoumes 鏁版嵁婧�
+public interface DownStorageCageDetailsMapper extends BaseMapper<DownStorageCageDetails> {
+
+}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/mapper/DownStorageCageMapper.java b/UnLoadGlassModule/src/main/java/com/mes/mapper/DownStorageCageMapper.java
new file mode 100644
index 0000000..5c67a01
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/mapper/DownStorageCageMapper.java
@@ -0,0 +1,16 @@
+package com.mes.mapper;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mes.entity.DownStorageCage;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+@InterceptorIgnore(tenantLine = "true")
+@DS("hangzhoumes") // 鎸囧畾浣跨敤 hangzhoumes 鏁版嵁婧�
+public interface DownStorageCageMapper extends BaseMapper<DownStorageCage> {
+
+}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/mapper/DownWorkstationMapper.java b/UnLoadGlassModule/src/main/java/com/mes/mapper/DownWorkstationMapper.java
new file mode 100644
index 0000000..c48a549
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/mapper/DownWorkstationMapper.java
@@ -0,0 +1,16 @@
+package com.mes.mapper;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mes.entity.DownWorkstation;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+@InterceptorIgnore(tenantLine = "true")
+@DS("hangzhoumes") // 鎸囧畾浣跨敤 hangzhoumes 鏁版嵁婧�
+public interface DownWorkstationMapper extends BaseMapper<DownWorkstation> {
+
+}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/DownGlassInfoService.java b/UnLoadGlassModule/src/main/java/com/mes/service/DownGlassInfoService.java
new file mode 100644
index 0000000..5f69be8
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/service/DownGlassInfoService.java
@@ -0,0 +1,19 @@
+package com.mes.service;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.mes.entity.DownGlassInfo;
+import com.mes.mapper.DownGlassInfoMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+@DS("hangzhoumes")
+public class DownGlassInfoService {
+
+    @Autowired
+    private DownGlassInfoMapper downGlassInfoMapper;
+
+    public DownGlassInfo getDownGlassInfoById(Integer id) {
+        return downGlassInfoMapper.selectById(id);
+    }
+}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/GlassHandler.java b/UnLoadGlassModule/src/main/java/com/mes/service/GlassHandler.java
new file mode 100644
index 0000000..0909523
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/service/GlassHandler.java
@@ -0,0 +1,65 @@
+package com.mes.service;
+
+import com.mes.entity.DownGlassInfo;
+import com.mes.entity.DownStorageCageDetails;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class GlassHandler {
+
+    private List<DownGlassInfo> glassList; // 瀛樻斁寰呭鐞嗙殑鐜荤拑淇℃伅
+    private List<DownStorageCageDetails> cageDetailsList; // 瀛樻斁鐜荤拑鏀剧疆鍦ㄧ紦瀛樼涓殑璇︾粏淇℃伅
+
+    public void processGlass() {
+        // 鍒濆鍖栦袱涓満鍣ㄦ墜
+        MachineHand hand1 = new MachineHand();
+        MachineHand hand2 = new MachineHand();
+
+        for (DownGlassInfo glass : glassList) {
+            // 鏍规嵁鐜荤拑瑙勬牸鎵惧埌瀵瑰簲鐨勭紦瀛樼瀛愯鎯�
+            DownStorageCageDetails cageDetails = findCageDetailsByGlassSpec(glass);
+
+            if (cageDetails != null) {
+                // 浠庣紦瀛樼涓彇鍑虹幓鐠冩斁鍒版満鍣ㄦ墜涓�
+                hand1.placeGlass(cageDetails);
+                hand2.placeGlass(cageDetails);
+            }
+
+            // 鍒ゆ柇涓や釜鏈哄櫒鎵嬫槸鍚﹂兘宸茬粡鎽嗘弧
+            if (hand1.isFull() && hand2.isFull()) {
+                // 鎵ц鍏朵粬鎿嶄綔锛屾瘮濡傚彂閫佹寚浠ょ瓑
+                break;
+            }
+        }
+    }
+
+    private DownStorageCageDetails findCageDetailsByGlassSpec(DownGlassInfo glass) {
+        // 鏍规嵁鐜荤拑瑙勬牸鎵惧埌瀵瑰簲鐨勭紦瀛樼瀛愯鎯�
+        for (DownStorageCageDetails details : cageDetailsList) {
+            if (details.getWidth() == glass.getWidth() &&
+                    details.getHeight() == glass.getHeight() &&
+                    details.getThickness() == glass.getThickness()) {
+                return details;
+            }
+        }
+        return null;
+    }
+
+    private class MachineHand {
+        private List<DownStorageCageDetails> rack; // 瀛樻斁鐜荤拑鐨勬灦瀛�
+
+        public MachineHand() {
+            rack = new ArrayList<>();
+        }
+
+        public void placeGlass(DownStorageCageDetails details) {
+            rack.add(details);
+        }
+
+        public boolean isFull() {
+            return rack.size() >= 50; // 鍒ゆ柇鏋跺瓙鏄惁宸茬粡鏀炬弧
+        }
+    }
+}
+
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/ModuleA.java b/UnLoadGlassModule/src/main/java/com/mes/service/ModuleA.java
index 72999c7..5a21355 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/service/ModuleA.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/service/ModuleA.java
@@ -33,13 +33,13 @@
             //5. `null`锛氭寚瀹氬叾浠栭槦鍒楀睘鎬х殑鍙傛暟銆傚湪杩欓噷璁剧疆涓篳null`锛岃〃绀烘病鏈夊叾浠栧睘鎬ч渶瑕佽缃��
             //鎵ц`channel.queueDeclare()`鏂规硶鍚庯紝濡傛灉闃熷垪涓嶅瓨鍦紝灏嗕細鍒涘缓涓�涓柊鐨勯槦鍒楋紝濡傛灉闃熷垪宸茬粡瀛樺湪锛屽垯涓嶅仛浠讳綍鎿嶄綔銆�
             Map<String, Object> args = new HashMap<>();
-            args.put("x-max-length-bytes",20000);
+            args.put("x-max-length-bytes",1024 * 1024);
 //            args.put("x-max-length",5000);
             channel.queueDeclare(QUEUE_NAME, false, false, false, args);
 
             String message = "浣�";
 
-            for ( int i=1;i< 5000;i++)
+            for ( int i=1;i< 20000;i++)
             {
                 message+="浣�";
 
@@ -52,6 +52,10 @@
             //  灏嗘秷鎭彂甯冨埌鎸囧畾鐨勯槦鍒椾腑銆傜┖瀛楃涓�""琛ㄧず榛樿鐨勪氦鎹㈡満锛孮UEUE_NAME鎸囧畾浜嗙洰鏍囬槦鍒楀悕绉帮紝null琛ㄧず娌℃湁鎸囧畾鍏朵粬灞炴�э紝message.getBytes()灏嗘秷鎭唴瀹硅浆鎹负瀛楄妭鏁扮粍杩涜浼犺緭銆�
             channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
             System.out.println(" [x] Sent '" + message + "'");
+
+//            DownGlassInfo downGlassInfo = new DownGlassInfo();
+//            downGlassInfo.setId(1);
+//            System.out.println(" id'" + downGlassInfo.getId() + "'");
         }
     }
 }
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/ModuleB.java b/UnLoadGlassModule/src/main/java/com/mes/service/ModuleB.java
index f4c49d7..a258779 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/service/ModuleB.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/service/ModuleB.java
@@ -1,38 +1,43 @@
 package com.mes.service;
 
-import com.rabbitmq.client.Channel;
-import com.rabbitmq.client.Connection;
-import com.rabbitmq.client.ConnectionFactory;
-import com.rabbitmq.client.DeliverCallback;
-
-import java.util.HashMap;
-import java.util.Map;
+import com.mes.common.RabbitMQUtils;
 
 public class ModuleB {
     private final static String QUEUE_NAME = "hangzhou2";
 
     public static void main(String[] argv) throws Exception {
-        // 鍒涘缓杩炴帴宸ュ巶
-        ConnectionFactory factory = new ConnectionFactory();
-    factory.setHost("10.153.19.150");
-        //factory.setHost("localhost");
-        try (Connection connection = factory.newConnection();
-             Channel channel = connection.createChannel()) {
-            // 澹版槑闃熷垪
-            Map<String, Object> args = new HashMap<>();
-            args.put("x-max-length-bytes",20000);
-//            args.put("x-max-length",5000);
-            channel.queueDeclare(QUEUE_NAME, false, false, false, args);
 
-            // 鍒涘缓娑堣垂鑰�
-            DeliverCallback deliverCallback = (consumerTag, delivery) -> {
-                String receivedMessage = new String(delivery.getBody(), "UTF-8");
-                System.out.println(" [x] Received '" + receivedMessage + "'");
-            };
-            // 寮�濮嬫秷璐规秷鎭�
-          channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> {
-           });
+
+
+        RabbitMQUtils receiver = new RabbitMQUtils();
+
+        try {
+            String receivedMessage = String.valueOf(receiver.readMessages(QUEUE_NAME,false));
+            System.out.println("Received message: " + receivedMessage);
+        } catch (Exception e) {
+            e.printStackTrace();
         }
+//        // 鍒涘缓杩炴帴宸ュ巶
+//        ConnectionFactory factory = new ConnectionFactory();
+//    factory.setHost("10.153.19.150");
+//        //factory.setHost("localhost");
+//        try (Connection connection = factory.newConnection();
+//             Channel channel = connection.createChannel()) {
+//            // 澹版槑闃熷垪
+//            Map<String, Object> args = new HashMap<>();
+//            args.put("x-max-length-bytes",1024 * 1024);
+////            args.put("x-max-length",5000);
+//            channel.queueDeclare(QUEUE_NAME, false, false, false, args);
+//
+//            // 鍒涘缓娑堣垂鑰�
+//            DeliverCallback deliverCallback = (consumerTag, delivery) -> {
+//                String receivedMessage = new String(delivery.getBody(), "UTF-8");
+//                System.out.println(" [x] Received '" + receivedMessage + "'");
+//            };
+//            // 寮�濮嬫秷璐规秷鎭�
+//          channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> {
+//           });
+//        }
     }
 }
 
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/Plcaction.java b/UnLoadGlassModule/src/main/java/com/mes/service/Plcaction.java
new file mode 100644
index 0000000..5c39775
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/service/Plcaction.java
@@ -0,0 +1,35 @@
+package com.mes.service;
+
+import com.mes.entity.DownGlassInfo;
+
+import java.util.Collections;
+import java.util.List;
+
+public class Plcaction extends Thread {
+
+  private static DownGlassInfoService downGlassInfoService; // 闈欐�佸彉閲�
+
+  public static void setDownGlassInfoService(DownGlassInfoService service) {
+    downGlassInfoService = service;
+  }
+
+  private List<DownGlassInfo> downGlassInfo; //
+  private int i =1; //
+  @Override
+  public void run() {
+    while (!Thread.currentThread().isInterrupted()) {
+      try {
+        i++;
+        Thread.sleep(1000);
+      } catch (InterruptedException e) {
+        Thread.currentThread().interrupt();
+        e.printStackTrace();
+      }
+
+
+
+      downGlassInfo  = Collections.singletonList(downGlassInfoService.getDownGlassInfoById(1)); // 璁剧疆闇�瑕佹煡璇㈢殑id
+   System.out.println("Down Glass Info in new thread: "+i + downGlassInfo);
+    }
+  }
+}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/ServiceContextHolder.java b/UnLoadGlassModule/src/main/java/com/mes/service/ServiceContextHolder.java
new file mode 100644
index 0000000..b05b2fd
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/service/ServiceContextHolder.java
@@ -0,0 +1,14 @@
+package com.mes.service;
+
+public class ServiceContextHolder {
+
+    private static final ThreadLocal<DownGlassInfoService> downGlassInfoServiceThreadLocal = new ThreadLocal<>();
+
+    public static void setDownGlassInfoService(DownGlassInfoService service) {
+        downGlassInfoServiceThreadLocal.set(service);
+    }
+
+    public static DownGlassInfoService getDownGlassInfoService() {
+        return downGlassInfoServiceThreadLocal.get();
+    }
+}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/ThreadExample.java b/UnLoadGlassModule/src/main/java/com/mes/service/ThreadExample.java
new file mode 100644
index 0000000..ef49205
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/service/ThreadExample.java
@@ -0,0 +1,25 @@
+package com.mes.service;
+
+import com.mes.entity.DownGlassInfo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.stereotype.Component;
+
+@Component
+public class ThreadExample implements ApplicationRunner {
+
+  @Autowired
+  private DownGlassInfoService downGlassInfoService;
+
+  @Override
+  public void run(ApplicationArguments args) throws Exception {
+    Thread thread = new Thread(() -> {
+      DownGlassInfo downGlassInfo = downGlassInfoService.getDownGlassInfoById(1); // 璁剧疆闇�瑕佹煡璇㈢殑id
+      System.out.println("Down Glass Info in new thread: " + downGlassInfo);
+    });
+    thread.start();
+  }
+
+
+}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/tools/Configuration.java b/UnLoadGlassModule/src/main/java/com/mes/tools/Configuration.java
new file mode 100644
index 0000000..0b4ac1a
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/tools/Configuration.java
@@ -0,0 +1,28 @@
+package com.mes.tools;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+
+// Configuration 绫荤敤浜庡姞杞介厤缃枃浠跺苟鎻愪緵璁块棶閰嶇疆椤圭殑鏂规硶銆�
+public class Configuration {
+    private Properties properties; // Properties 瀵硅薄锛岀敤浜庡瓨鍌ㄩ厤缃枃浠朵腑鐨勯敭鍊煎銆�
+
+    // 鏋勯�犲嚱鏁帮紝鏍规嵁浼犲叆鐨勬枃浠跺悕鍔犺浇閰嶇疆鏂囦欢銆�
+    public Configuration(String fileName) throws IOException {
+        // 浣跨敤绫诲姞杞藉櫒鑾峰彇璧勬簮鏂囦欢鐨勮緭鍏ユ祦銆�
+        InputStream inputStream = getClass().getClassLoader().getResourceAsStream(fileName);
+        // 濡傛灉杈撳叆娴佷负null锛岃〃绀烘湭鎵惧埌鏂囦欢锛屾姏鍑篎ileNotFoundException銆�
+        if (inputStream == null) {
+            throw new FileNotFoundException("Property file '" + fileName + "' not found in the classpath");
+        }
+        properties = new Properties(); // 瀹炰緥鍖朠roperties瀵硅薄銆�
+        properties.load(inputStream); // 浠庤緭鍏ユ祦鍔犺浇閰嶇疆椤广��
+    }
+
+    // 鏍规嵁閰嶇疆椤圭殑閿幏鍙栧叾瀵瑰簲鐨勫�笺��
+    public String getProperty(String key) {
+        return properties.getProperty(key);
+    }
+}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/tools/ExcelToJsonConverter.java b/UnLoadGlassModule/src/main/java/com/mes/tools/ExcelToJsonConverter.java
new file mode 100644
index 0000000..e1ad35c
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/tools/ExcelToJsonConverter.java
@@ -0,0 +1,108 @@
+package com.mes.tools;
+
+import com.google.gson.Gson;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+
+import java.io.FileInputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+
+public class ExcelToJsonConverter {
+
+    public static void main(String[] args) {
+        String excelFilePath = "src/main/resources/JsonFile/alarm.xlsx";
+        String sheetName = "Sheet1";
+        int addressColumnIndex = 0;
+        int nameColumnIndex = 1;
+
+        //int unitColumnIndex = 2;
+        String outputFilePath = "src/main/resources/JsonFile/PlcAlarm.json";
+
+        try (Workbook workbook = new XSSFWorkbook(new FileInputStream(excelFilePath))) {
+            Sheet sheet = workbook.getSheet(sheetName);
+
+            List<LinkedHashMap<String, Object>> jsonList = new ArrayList<>();
+
+            Iterator<Row> rowIterator = sheet.iterator();
+            // Skip the header row
+            if (rowIterator.hasNext()) {
+                rowIterator.next();
+            }
+
+            int plcAddressLength = 0; // 璁板綍鎵�鏈� addressLenght 鐨勫拰
+            int addressIndex = 0; // 鑷鐨勫湴鍧�绱㈠紩
+            while (rowIterator.hasNext()) {
+                Row row = rowIterator.next();
+
+                Cell nameCell = row.getCell(nameColumnIndex);
+                Cell addressCell = row.getCell(addressColumnIndex);
+              //  Cell unitCell = row.getCell(unitColumnIndex);
+
+                String name = nameCell.getStringCellValue();
+                String address = addressCell.getStringCellValue();
+               // String unit = unitCell.getStringCellValue();
+
+              //  String addressIndex = extractAddressIndex(address);
+
+                LinkedHashMap<String, Object> jsonObject = new LinkedHashMap<>();
+                jsonObject.put("codeId", name);
+                jsonObject.put("addressIndex", addressIndex);
+
+                int addressLength = 0;
+                if (address.contains("~")) {
+                    addressLength = 14;
+                } else {
+                    addressLength = 2;
+                }
+               // jsonObject.put("addressLenght", String.valueOf(addressLength));
+
+                //jsonObject.put("unit", unit);
+
+                plcAddressLength += addressLength;
+
+                jsonList.add(jsonObject);
+                addressIndex++;
+            }
+
+            LinkedHashMap<String, Object> resultObject = new LinkedHashMap<>();
+            resultObject.put("plcAddressBegin", "DB100.0");
+            resultObject.put("plcAddressLenght", String.valueOf(plcAddressLength));
+           // resultObject.put("dataType", "word");
+            resultObject.put("dataType", "bit");
+            resultObject.put("parameteInfor", jsonList);
+
+            Gson gson = new Gson();
+            String jsonOutput = gson.toJson(resultObject);
+
+            try (FileWriter fileWriter = new FileWriter(outputFilePath)) {
+                fileWriter.write(jsonOutput);
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+
+
+    private static String extractAddressIndex(String address) {
+        // Assuming the address format is "DB103.DBW0" or "DB103.DBB100~DBB113"
+        if (address.startsWith("DB") && address.contains(".DBW")) {
+            int startIndex = address.indexOf(".DBW") + 4;
+            int endIndex = address.length();
+            return address.substring(startIndex, endIndex);
+        } else if (address.startsWith("DB") && address.contains(".DBB")) {
+            int startIndex2 = address.indexOf(".DBB") + 4;
+            int endIndex2 = address.indexOf("~");
+            return address.substring(startIndex2, endIndex2);
+        }
+        return "";
+    }
+}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/tools/InitUtil.java b/UnLoadGlassModule/src/main/java/com/mes/tools/InitUtil.java
new file mode 100644
index 0000000..90c8a30
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/tools/InitUtil.java
@@ -0,0 +1,127 @@
+package com.mes.tools;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import com.mes.common.PlcTools.S7control;
+import com.mes.entity.device.PlcBitInfo;
+import com.mes.entity.device.PlcBitObject;
+import com.mes.entity.device.PlcParameterInfo;
+import com.mes.entity.device.PlcParameterObject;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.List;
+
+public class InitUtil {
+    //鍒濆鍖杦ord
+    public static PlcParameterObject initword(String jsonFilePath) {
+        try {
+            FileReader fileReader = new FileReader(jsonFilePath);
+            BufferedReader bufferedReader = new BufferedReader(fileReader);
+
+            StringBuilder content = new StringBuilder();
+            String line;
+
+            while ((line = bufferedReader.readLine()) != null) {
+                content.append(line);
+            }
+
+            bufferedReader.close();
+            fileReader.close();
+
+            JSONObject jsonfileobj = new JSONObject(content.toString());
+            JSONArray jsonArray = jsonfileobj.getJSONArray("parameteInfor");
+            PlcParameterObject plcParameterObject = new PlcParameterObject();
+            plcParameterObject.setPlcAddressBegin(jsonfileobj.getStr("plcAddressBegin"));//璁剧疆璧峰浣嶅湴鍧�
+            plcParameterObject.setPlcAddressLength(Integer.valueOf(jsonfileobj.getStr("plcAddressLenght")));//璁剧疆鍦板潃闀垮害
+
+            for (int i = 0; i < jsonArray.size(); i++) {
+                JSONObject parameterObj = jsonArray.getJSONObject(i);
+                PlcParameterInfo plcParameterInfo = new PlcParameterInfo(jsonfileobj.getStr("plcAddressBegin")); //鍙傛暟瀹炰緥
+                String codeid = parameterObj.getStr("codeId");
+                plcParameterInfo.setCodeId(codeid);
+                plcParameterInfo.setAddressIndex(Integer.valueOf(parameterObj.getStr("addressIndex")));
+                //plcParameterInfo.setRatio(Integer.valueOf(parameterObj.getStr("ratio")));
+                plcParameterInfo.setAddressLength(Integer.valueOf(parameterObj.getStr("addressLenght")));
+                plcParameterInfo.setUnit(parameterObj.getStr("unit"));
+                plcParameterObject.addPlcParameter(plcParameterInfo);
+            }
+           // byte[] getplcvlues = {0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02};
+           // byte[] getplcvlues = S7control.getinstance().ReadByte(plcParameterObject.getPlcAddressBegin(), plcParameterObject.getPlcAddressLength());
+           // plcParameterObject.setPlcParameterList(getplcvlues);
+
+            return plcParameterObject;
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    //鍒濆鍖朾it
+    public static PlcBitObject initbit(String jsonFilePath) {
+        PlcBitObject plcBitObject = new PlcBitObject();
+
+        try {
+            FileReader fileReader = new FileReader(jsonFilePath);
+            BufferedReader bufferedReader = new BufferedReader(fileReader);
+
+            StringBuilder content = new StringBuilder();
+            String line;
+
+            while ((line = bufferedReader.readLine()) != null) {
+                content.append(line);
+            }
+
+            bufferedReader.close();
+            fileReader.close();
+
+            JSONObject jsonfileobj = new JSONObject(content.toString());
+            JSONArray jsonArray = jsonfileobj.getJSONArray("parameteInfor");
+            plcBitObject.setPlcAddressBegin(jsonfileobj.getStr("plcAddressBegin"));//璁剧疆璧峰浣嶅湴鍧�
+            plcBitObject.setPlcAddressLength(Integer.valueOf(jsonfileobj.getStr("plcAddressLenght")));//璁剧疆鍦板潃闀垮害
+
+            for (int i = 0; i < jsonArray.size(); i++) {
+                JSONObject parameterObj = jsonArray.getJSONObject(i);
+
+                PlcBitInfo plcBitInfo = new PlcBitInfo(jsonfileobj.getStr("plcAddressBegin")); //鍙傛暟瀹炰緥
+                String codeid = parameterObj.getStr("codeId");
+                plcBitInfo.setCodeId(codeid);
+                plcBitInfo.setAddressIndex(Integer.valueOf(parameterObj.getStr("addressIndex")));
+
+                plcBitObject.addPlcBit(plcBitInfo);
+            }
+            System.out.println("");
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+           //Boolean[] values1 = { false, true, true, true, false, false, true, false,
+          //  false, true ,true };
+   // List<Boolean> getplcvlues = new ArrayList<>(Arrays.asList(values1));
+
+//        List<Boolean> getplcvlues = S7control.getinstance().ReadBits(plcBitObject.getPlcAddressBegin(), plcBitObject.getPlcAddressLength());
+//        plcBitObject.setPlcBitList(getplcvlues);
+        return plcBitObject;
+    }
+
+//
+    public static void readAndUpdateBitValues(PlcBitObject plcBitObject) {
+
+//        Boolean[] values1 = { false, true, true, true, false, false, true, false,
+//          false, true ,true };
+//         List<Boolean> getplcvlues = new ArrayList<>(Arrays.asList(values1));
+        List<Boolean> getplcvlues = S7control.getinstance().ReadBits(plcBitObject.getPlcAddressBegin(), plcBitObject.getPlcAddressLength());
+        plcBitObject.setPlcBitList(getplcvlues);
+    }
+
+
+    public static void readAndUpdateWordValues(PlcParameterObject plcParameterObject) {
+
+        // byte[] getplcvlues = {0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02};
+        byte[] getplcvlues = S7control.getinstance().ReadByte(plcParameterObject.getPlcAddressBegin(), plcParameterObject.getPlcAddressLength());
+        plcParameterObject.setPlcParameterList(getplcvlues);
+    }
+
+
+
+}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/tools/WebSocketServer.java b/UnLoadGlassModule/src/main/java/com/mes/tools/WebSocketServer.java
index c14c54f..aa4b161 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/tools/WebSocketServer.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/tools/WebSocketServer.java
@@ -1,35 +1,28 @@
 package com.mes.tools;
 
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.stereotype.Component;
+
+import javax.websocket.*;
+import javax.websocket.server.PathParam;
+import javax.websocket.server.ServerEndpoint;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.websocket.OnClose;
-import javax.websocket.OnError;
-import javax.websocket.OnMessage;
-import javax.websocket.OnOpen;
-import javax.websocket.Session;
-import javax.websocket.server.PathParam;
-import javax.websocket.server.ServerEndpoint;
-
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.stereotype.Component;
-
-import cn.hutool.json.JSONObject;
-import cn.hutool.json.JSONUtil;
-
 @ServerEndpoint(value = "/api/talk/{username}")
-@Component
+@Component("webSocketServer")
 public class WebSocketServer {
 
     // @Autowired
     // HomeMapper homeMapper;
 
-    static ConfigurableApplicationContext applicationContext;
+    public static ConfigurableApplicationContext applicationContext;
 
     // 瑙e喅鏃犳硶娉ㄥ叆mapper闂 //浣跨敤鏂规硶
     // homeMapper=WebSocketServer.applicationContext.getBean(HomeMapper.class);
diff --git a/UnLoadGlassModule/src/main/resources/application.yml b/UnLoadGlassModule/src/main/resources/application.yml
index d74069d..7a2e2be 100644
--- a/UnLoadGlassModule/src/main/resources/application.yml
+++ b/UnLoadGlassModule/src/main/resources/application.yml
@@ -15,18 +15,8 @@
           username: root
           password: beibo.123/
           driver-class-name: com.mysql.cj.jdbc.Driver
-        sd:
-          url: jdbc:mysql://10.153.19.150:3306/sd?serverTimezone=GMT%2b8
-          username: root
-          password: beibo.123/
-          driver-class-name: com.mysql.cj.jdbc.Driver
-        mm:
-          url: jdbc:mysql://10.153.19.150:3306/mm?serverTimezone=GMT%2b8
-          username: root
-          password: beibo.123/
-          driver-class-name: com.mysql.cj.jdbc.Driver
-        pp:
-          url: jdbc:mysql://10.153.19.150:3306/pp?serverTimezone=GMT%2b8
-          username: root
-          password: beibo.123/
-          driver-class-name: com.mysql.cj.jdbc.Driver
\ No newline at end of file
+        hangzhoumes:
+            url: jdbc:mysql://10.153.19.150:3306/hangzhoumes?serverTimezone=GMT%2b8
+            username: root
+            password: beibo.123/
+            driver-class-name: com.mysql.cj.jdbc.Driver
\ No newline at end of file
diff --git a/UnLoadGlassModule/target/MES-UnLoadGlassModule-0.0.1-SNAPSHOT.jar.original b/UnLoadGlassModule/target/MES-UnLoadGlassModule-0.0.1-SNAPSHOT.jar.original
new file mode 100644
index 0000000..2be3c8d
--- /dev/null
+++ b/UnLoadGlassModule/target/MES-UnLoadGlassModule-0.0.1-SNAPSHOT.jar.original
Binary files differ
diff --git a/UnLoadGlassModule/target/classes/application.yml b/UnLoadGlassModule/target/classes/application.yml
index d74069d..7a2e2be 100644
--- a/UnLoadGlassModule/target/classes/application.yml
+++ b/UnLoadGlassModule/target/classes/application.yml
@@ -15,18 +15,8 @@
           username: root
           password: beibo.123/
           driver-class-name: com.mysql.cj.jdbc.Driver
-        sd:
-          url: jdbc:mysql://10.153.19.150:3306/sd?serverTimezone=GMT%2b8
-          username: root
-          password: beibo.123/
-          driver-class-name: com.mysql.cj.jdbc.Driver
-        mm:
-          url: jdbc:mysql://10.153.19.150:3306/mm?serverTimezone=GMT%2b8
-          username: root
-          password: beibo.123/
-          driver-class-name: com.mysql.cj.jdbc.Driver
-        pp:
-          url: jdbc:mysql://10.153.19.150:3306/pp?serverTimezone=GMT%2b8
-          username: root
-          password: beibo.123/
-          driver-class-name: com.mysql.cj.jdbc.Driver
\ No newline at end of file
+        hangzhoumes:
+            url: jdbc:mysql://10.153.19.150:3306/hangzhoumes?serverTimezone=GMT%2b8
+            username: root
+            password: beibo.123/
+            driver-class-name: com.mysql.cj.jdbc.Driver
\ No newline at end of file
diff --git a/UnLoadGlassModule/target/maven-archiver/pom.properties b/UnLoadGlassModule/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..91a82d4
--- /dev/null
+++ b/UnLoadGlassModule/target/maven-archiver/pom.properties
@@ -0,0 +1,3 @@
+artifactId=MES-UnLoadGlassModule
+groupId=com.MES-Module
+version=0.0.1-SNAPSHOT
diff --git a/UnLoadGlassModule/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/UnLoadGlassModule/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..ac32ba0
--- /dev/null
+++ b/UnLoadGlassModule/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,46 @@
+com\mes\controller\OrderTestController.class
+com\mes\service\ModuleB.class
+com\mes\common\PlcTools\S7object2.class
+com\mes\entity\userInfo\SysMenuItem.class
+com\mes\entity\userInfo\User.class
+com\mes\config\MyCorsConfig.class
+com\mes\MesApplication.class
+com\mes\tools\TokenTools.class
+com\mes\controller\userInfo\SysMenuItemController.class
+com\mes\exception\ServiceException.class
+com\mes\service\impl\OrderServiceImpl.class
+com\mes\exception\GlobalExceptionHandle.class
+com\mes\service\userInfo\SysMenuService.class
+com\mes\service\userInfo\SysErrorService.class
+com\mes\tools\WebSocketServer.class
+com\mes\config\MyCorsConfig$1.class
+com\mes\common\Result.class
+com\mes\controller\userInfo\SysMenuController.class
+com\mes\common\PlcTools\S7control.class
+com\mes\service\IOrderService.class
+com\mes\mapper\userInfo\UserMapper.class
+com\mes\common\Constants.class
+com\mes\entity\DownWorkstation.class
+com\mes\entity\userInfo\SysMenu.class
+com\mes\config\AppRunnerConfig.class
+com\mes\entity\DownStorageCageDetails.class
+com\mes\entity\DownStorageCage.class
+com\mes\config\MybatisPlusConfig.class
+com\mes\mapper\userInfo\SysMenuItemMapper.class
+com\mes\controller\dto\UserDTO.class
+com\mes\common\CacheUtil.class
+com\mes\common\PlcTools\S7object.class
+com\mes\service\userInfo\UserService.class
+com\mes\entity\DownGlassInfo.class
+com\mes\config\InterceptorConfig.class
+com\mes\entity\userInfo\SysError.class
+com\mes\service\ModuleA.class
+com\mes\config\WebSocketConfig.class
+com\mes\service\userInfo\SysMenuItemService.class
+com\mes\config\SwaggerConfig.class
+com\mes\controller\userInfo\UserController.class
+com\mes\mapper\userInfo\SysMenuMapper.class
+com\mes\entity\OrderTest.class
+com\mes\mapper\OrderTestMapper.class
+com\mes\mapper\userInfo\SysErrorMapper.class
+com\mes\common\interceptor\JwtInterceptor.class
diff --git a/UnLoadGlassModule/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/UnLoadGlassModule/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..ae89025
--- /dev/null
+++ b/UnLoadGlassModule/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,45 @@
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\entity\userInfo\User.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\MesApplication.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\config\SwaggerConfig.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\entity\DownStorageCage.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\common\CacheUtil.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\common\interceptor\JwtInterceptor.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\common\PlcTools\S7control.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\config\MybatisPlusConfig.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\config\WebSocketConfig.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\entity\userInfo\SysMenu.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\common\PlcTools\S7object.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\controller\userInfo\SysMenuController.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\exception\ServiceException.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\mapper\userInfo\SysErrorMapper.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\config\InterceptorConfig.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\config\AppRunnerConfig.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\mapper\userInfo\SysMenuItemMapper.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\mapper\userInfo\SysMenuMapper.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\service\userInfo\SysMenuItemService.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\common\Result.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\entity\DownWorkstation.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\entity\userInfo\SysError.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\tools\WebSocketServer.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\common\PlcTools\S7object2.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\service\ModuleA.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\service\userInfo\SysErrorService.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\config\MyCorsConfig.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\entity\OrderTest.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\service\userInfo\UserService.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\controller\userInfo\SysMenuItemController.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\service\IOrderService.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\common\Constants.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\controller\OrderTestController.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\exception\GlobalExceptionHandle.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\tools\TokenTools.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\service\ModuleB.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\mapper\userInfo\UserMapper.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\entity\DownGlassInfo.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\controller\userInfo\UserController.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\entity\DownStorageCageDetails.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\service\userInfo\SysMenuService.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\entity\userInfo\SysMenuItem.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\service\impl\OrderServiceImpl.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\controller\dto\UserDTO.java
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\mapper\OrderTestMapper.java
diff --git a/UnLoadGlassModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/UnLoadGlassModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
new file mode 100644
index 0000000..9c25a83
--- /dev/null
+++ b/UnLoadGlassModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
@@ -0,0 +1 @@
+com\mes\MesApplicationTests.class
diff --git a/UnLoadGlassModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/UnLoadGlassModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
new file mode 100644
index 0000000..2feec22
--- /dev/null
+++ b/UnLoadGlassModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
@@ -0,0 +1 @@
+D:\xm4\HangZhouMes\UnLoadGlassModule\src\test\java\com\mes\MesApplicationTests.java
diff --git a/UnLoadGlassModule/target/surefire-reports/TEST-com.mes.MesApplicationTests.xml b/UnLoadGlassModule/target/surefire-reports/TEST-com.mes.MesApplicationTests.xml
new file mode 100644
index 0000000..0a62c8b
--- /dev/null
+++ b/UnLoadGlassModule/target/surefire-reports/TEST-com.mes.MesApplicationTests.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report.xsd" name="com.mes.MesApplicationTests" time="7.757" tests="1" errors="0" skipped="0" failures="0">
+  <properties>
+    <property name="sun.desktop" value="windows"/>
+    <property name="awt.toolkit" value="sun.awt.windows.WToolkit"/>
+    <property name="file.encoding.pkg" value="sun.io"/>
+    <property name="java.specification.version" value="1.8"/>
+    <property name="sun.cpu.isalist" value="amd64"/>
+    <property name="sun.jnu.encoding" value="GBK"/>
+    <property name="java.class.path" value="D:\xm4\HangZhouMes\UnLoadGlassModule\target\test-classes;D:\xm4\HangZhouMes\UnLoadGlassModule\target\classes;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-web\2.5.9\spring-boot-starter-web-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter\2.5.9\spring-boot-starter-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot\2.5.9\spring-boot-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-logging\2.5.9\spring-boot-starter-logging-2.5.9.jar;C:\Users\SNG-012\.m2\repository\ch\qos\logback\logback-classic\1.2.10\logback-classic-1.2.10.jar;C:\Users\SNG-012\.m2\repository\ch\qos\logback\logback-core\1.2.10\logback-core-1.2.10.jar;C:\Users\SNG-012\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.17.1\log4j-to-slf4j-2.17.1.jar;C:\Users\SNG-012\.m2\repository\org\apache\logging\log4j\log4j-api\2.17.1\log4j-api-2.17.1.jar;C:\Users\SNG-012\.m2\repository\org\slf4j\jul-to-slf4j\1.7.33\jul-to-slf4j-1.7.33.jar;C:\Users\SNG-012\.m2\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;C:\Users\SNG-012\.m2\repository\org\yaml\snakeyaml\1.28\snakeyaml-1.28.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-json\2.5.9\spring-boot-starter-json-2.5.9.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.12.6\jackson-datatype-jdk8-2.12.6.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.12.6\jackson-datatype-jsr310-2.12.6.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.12.6\jackson-module-parameter-names-2.12.6.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\2.5.9\spring-boot-starter-tomcat-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.56\tomcat-embed-core-9.0.56.jar;C:\Users\SNG-012\.m2\repository\org\apache\tomcat\embed\tomcat-embed-el\9.0.56\tomcat-embed-el-9.0.56.jar;C:\Users\SNG-012\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.56\tomcat-embed-websocket-9.0.56.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-web\5.3.15\spring-web-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-webmvc\5.3.15\spring-webmvc-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-aop\5.3.15\spring-aop-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-context\5.3.15\spring-context-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-expression\5.3.15\spring-expression-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\mybatis\spring\boot\mybatis-spring-boot-starter\2.3.1\mybatis-spring-boot-starter-2.3.1.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-jdbc\2.5.9\spring-boot-starter-jdbc-2.5.9.jar;C:\Users\SNG-012\.m2\repository\com\zaxxer\HikariCP\4.0.3\HikariCP-4.0.3.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-jdbc\5.3.15\spring-jdbc-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\mybatis\spring\boot\mybatis-spring-boot-autoconfigure\2.3.1\mybatis-spring-boot-autoconfigure-2.3.1.jar;C:\Users\SNG-012\.m2\repository\org\mybatis\mybatis\3.5.13\mybatis-3.5.13.jar;C:\Users\SNG-012\.m2\repository\org\mybatis\mybatis-spring\2.1.1\mybatis-spring-2.1.1.jar;C:\Users\SNG-012\.m2\repository\com\alibaba\fastjson\1.2.70\fastjson-1.2.70.jar;C:\Users\SNG-012\.m2\repository\org\springframework\data\spring-data-commons\2.3.1.RELEASE\spring-data-commons-2.3.1.RELEASE.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-core\5.3.15\spring-core-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-jcl\5.3.15\spring-jcl-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-beans\5.3.15\spring-beans-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\slf4j\slf4j-api\1.7.33\slf4j-api-1.7.33.jar;C:\Users\SNG-012\.m2\repository\mysql\mysql-connector-java\8.0.20\mysql-connector-java-8.0.20.jar;C:\Users\SNG-012\.m2\repository\org\projectlombok\lombok\1.18.22\lombok-1.18.22.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-test\2.5.9\spring-boot-starter-test-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-test\2.5.9\spring-boot-test-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-test-autoconfigure\2.5.9\spring-boot-test-autoconfigure-2.5.9.jar;C:\Users\SNG-012\.m2\repository\com\jayway\jsonpath\json-path\2.5.0\json-path-2.5.0.jar;C:\Users\SNG-012\.m2\repository\net\minidev\json-smart\2.4.7\json-smart-2.4.7.jar;C:\Users\SNG-012\.m2\repository\net\minidev\accessors-smart\2.4.7\accessors-smart-2.4.7.jar;C:\Users\SNG-012\.m2\repository\org\ow2\asm\asm\9.1\asm-9.1.jar;C:\Users\SNG-012\.m2\repository\jakarta\xml\bind\jakarta.xml.bind-api\2.3.3\jakarta.xml.bind-api-2.3.3.jar;C:\Users\SNG-012\.m2\repository\jakarta\activation\jakarta.activation-api\1.2.2\jakarta.activation-api-1.2.2.jar;C:\Users\SNG-012\.m2\repository\org\hamcrest\hamcrest\2.2\hamcrest-2.2.jar;C:\Users\SNG-012\.m2\repository\org\junit\jupiter\junit-jupiter\5.7.2\junit-jupiter-5.7.2.jar;C:\Users\SNG-012\.m2\repository\org\junit\jupiter\junit-jupiter-api\5.7.2\junit-jupiter-api-5.7.2.jar;C:\Users\SNG-012\.m2\repository\org\apiguardian\apiguardian-api\1.1.0\apiguardian-api-1.1.0.jar;C:\Users\SNG-012\.m2\repository\org\opentest4j\opentest4j\1.2.0\opentest4j-1.2.0.jar;C:\Users\SNG-012\.m2\repository\org\junit\platform\junit-platform-commons\1.7.2\junit-platform-commons-1.7.2.jar;C:\Users\SNG-012\.m2\repository\org\junit\jupiter\junit-jupiter-params\5.7.2\junit-jupiter-params-5.7.2.jar;C:\Users\SNG-012\.m2\repository\org\junit\jupiter\junit-jupiter-engine\5.7.2\junit-jupiter-engine-5.7.2.jar;C:\Users\SNG-012\.m2\repository\org\junit\platform\junit-platform-engine\1.7.2\junit-platform-engine-1.7.2.jar;C:\Users\SNG-012\.m2\repository\org\mockito\mockito-core\3.9.0\mockito-core-3.9.0.jar;C:\Users\SNG-012\.m2\repository\net\bytebuddy\byte-buddy\1.10.22\byte-buddy-1.10.22.jar;C:\Users\SNG-012\.m2\repository\net\bytebuddy\byte-buddy-agent\1.10.22\byte-buddy-agent-1.10.22.jar;C:\Users\SNG-012\.m2\repository\org\objenesis\objenesis\3.2\objenesis-3.2.jar;C:\Users\SNG-012\.m2\repository\org\mockito\mockito-junit-jupiter\3.9.0\mockito-junit-jupiter-3.9.0.jar;C:\Users\SNG-012\.m2\repository\org\skyscreamer\jsonassert\1.5.0\jsonassert-1.5.0.jar;C:\Users\SNG-012\.m2\repository\com\vaadin\external\google\android-json\0.0.20131108.vaadin1\android-json-0.0.20131108.vaadin1.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-test\5.3.15\spring-test-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\xmlunit\xmlunit-core\2.8.4\xmlunit-core-2.8.4.jar;C:\Users\SNG-012\.m2\repository\org\mybatis\spring\boot\mybatis-spring-boot-starter-test\2.3.1\mybatis-spring-boot-starter-test-2.3.1.jar;C:\Users\SNG-012\.m2\repository\org\mybatis\spring\boot\mybatis-spring-boot-test-autoconfigure\2.3.1\mybatis-spring-boot-test-autoconfigure-2.3.1.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-tx\5.3.15\spring-tx-5.3.15.jar;C:\Users\SNG-012\.m2\repository\com\auth0\java-jwt\3.10.3\java-jwt-3.10.3.jar;C:\Users\SNG-012\.m2\repository\commons-codec\commons-codec\1.15\commons-codec-1.15.jar;C:\Users\SNG-012\.m2\repository\org\assertj\assertj-core\3.19.0\assertj-core-3.19.0.jar;C:\Users\SNG-012\.m2\repository\cn\hutool\hutool-all\5.4.0\hutool-all-5.4.0.jar;C:\Users\SNG-012\.m2\repository\com\baomidou\mybatis-plus-boot-starter\3.5.1\mybatis-plus-boot-starter-3.5.1.jar;C:\Users\SNG-012\.m2\repository\com\baomidou\mybatis-plus\3.5.1\mybatis-plus-3.5.1.jar;C:\Users\SNG-012\.m2\repository\com\baomidou\mybatis-plus-extension\3.5.1\mybatis-plus-extension-3.5.1.jar;C:\Users\SNG-012\.m2\repository\com\baomidou\mybatis-plus-core\3.5.1\mybatis-plus-core-3.5.1.jar;C:\Users\SNG-012\.m2\repository\com\baomidou\mybatis-plus-annotation\3.5.1\mybatis-plus-annotation-3.5.1.jar;C:\Users\SNG-012\.m2\repository\com\github\jsqlparser\jsqlparser\4.3\jsqlparser-4.3.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\2.5.9\spring-boot-autoconfigure-2.5.9.jar;C:\Users\SNG-012\.m2\repository\com\baomidou\dynamic-datasource-spring-boot-starter\3.5.1\dynamic-datasource-spring-boot-starter-3.5.1.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-aop\2.5.9\spring-boot-starter-aop-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\aspectj\aspectjweaver\1.9.7\aspectjweaver-1.9.7.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-swagger2\2.9.2\springfox-swagger2-2.9.2.jar;C:\Users\SNG-012\.m2\repository\io\swagger\swagger-models\1.5.20\swagger-models-1.5.20.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-spi\2.9.2\springfox-spi-2.9.2.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-core\2.9.2\springfox-core-2.9.2.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-schema\2.9.2\springfox-schema-2.9.2.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-swagger-common\2.9.2\springfox-swagger-common-2.9.2.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-spring-web\2.9.2\springfox-spring-web-2.9.2.jar;C:\Users\SNG-012\.m2\repository\com\google\guava\guava\20.0\guava-20.0.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\classmate\1.5.1\classmate-1.5.1.jar;C:\Users\SNG-012\.m2\repository\org\springframework\plugin\spring-plugin-core\1.2.0.RELEASE\spring-plugin-core-1.2.0.RELEASE.jar;C:\Users\SNG-012\.m2\repository\org\springframework\plugin\spring-plugin-metadata\1.2.0.RELEASE\spring-plugin-metadata-1.2.0.RELEASE.jar;C:\Users\SNG-012\.m2\repository\org\mapstruct\mapstruct\1.2.0.Final\mapstruct-1.2.0.Final.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-swagger-ui\2.9.2\springfox-swagger-ui-2.9.2.jar;C:\Users\SNG-012\.m2\repository\io\swagger\swagger-annotations\1.5.20\swagger-annotations-1.5.20.jar;C:\Users\SNG-012\.m2\repository\com\github\xingshuangs\iot-communication\1.4.2\iot-communication-1.4.2.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-cache\2.5.9\spring-boot-starter-cache-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-context-support\5.3.15\spring-context-support-5.3.15.jar;C:\Users\SNG-012\.m2\repository\com\rabbitmq\amqp-client\5.13.1\amqp-client-5.13.1.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-amqp\2.5.9\spring-boot-starter-amqp-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-messaging\5.3.15\spring-messaging-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\amqp\spring-rabbit\2.3.14\spring-rabbit-2.3.14.jar;C:\Users\SNG-012\.m2\repository\org\springframework\amqp\spring-amqp\2.3.14\spring-amqp-2.3.14.jar;C:\Users\SNG-012\.m2\repository\org\springframework\retry\spring-retry\1.3.1\spring-retry-1.3.1.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.13.0\jackson-databind-2.13.0.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.13.0\jackson-core-2.13.0.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.13.0\jackson-annotations-2.13.0.jar;C:\Users\SNG-012\.m2\repository\io\netty\netty-all\4.1.36.Final\netty-all-4.1.36.Final.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-data-jpa\2.5.9\spring-boot-starter-data-jpa-2.5.9.jar;C:\Users\SNG-012\.m2\repository\jakarta\transaction\jakarta.transaction-api\1.3.3\jakarta.transaction-api-1.3.3.jar;C:\Users\SNG-012\.m2\repository\jakarta\persistence\jakarta.persistence-api\2.2.3\jakarta.persistence-api-2.2.3.jar;C:\Users\SNG-012\.m2\repository\org\hibernate\hibernate-core\5.4.33\hibernate-core-5.4.33.jar;C:\Users\SNG-012\.m2\repository\org\jboss\logging\jboss-logging\3.4.3.Final\jboss-logging-3.4.3.Final.jar;C:\Users\SNG-012\.m2\repository\org\javassist\javassist\3.27.0-GA\javassist-3.27.0-GA.jar;C:\Users\SNG-012\.m2\repository\antlr\antlr\2.7.7\antlr-2.7.7.jar;C:\Users\SNG-012\.m2\repository\org\jboss\jandex\2.2.3.Final\jandex-2.2.3.Final.jar;C:\Users\SNG-012\.m2\repository\org\dom4j\dom4j\2.1.3\dom4j-2.1.3.jar;C:\Users\SNG-012\.m2\repository\org\hibernate\common\hibernate-commons-annotations\5.1.2.Final\hibernate-commons-annotations-5.1.2.Final.jar;C:\Users\SNG-012\.m2\repository\org\glassfish\jaxb\jaxb-runtime\2.3.5\jaxb-runtime-2.3.5.jar;C:\Users\SNG-012\.m2\repository\org\glassfish\jaxb\txw2\2.3.5\txw2-2.3.5.jar;C:\Users\SNG-012\.m2\repository\com\sun\istack\istack-commons-runtime\3.0.12\istack-commons-runtime-3.0.12.jar;C:\Users\SNG-012\.m2\repository\com\sun\activation\jakarta.activation\1.2.2\jakarta.activation-1.2.2.jar;C:\Users\SNG-012\.m2\repository\org\springframework\data\spring-data-jpa\2.5.8\spring-data-jpa-2.5.8.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-orm\5.3.15\spring-orm-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-aspects\5.3.15\spring-aspects-5.3.15.jar;"/>
+    <property name="java.vm.vendor" value="Oracle Corporation"/>
+    <property name="sun.arch.data.model" value="64"/>
+    <property name="user.variant" value=""/>
+    <property name="java.vendor.url" value="http://java.oracle.com/"/>
+    <property name="user.timezone" value="Asia/Shanghai"/>
+    <property name="java.vm.specification.version" value="1.8"/>
+    <property name="os.name" value="Windows 10"/>
+    <property name="user.country" value="CN"/>
+    <property name="sun.java.launcher" value="SUN_STANDARD"/>
+    <property name="sun.boot.library.path" value="C:\Program Files\Java\jdk1.8.0_121\jre\bin"/>
+    <property name="sun.java.command" value="C:\Users\SNG-012\AppData\Local\Temp\surefire6753504794343487260\surefirebooter2512628117312458217.jar C:\Users\SNG-012\AppData\Local\Temp\surefire6753504794343487260 2024-02-26T10-31-20_305-jvmRun1 surefire218270707117368528tmp surefire_05038678481118318350tmp"/>
+    <property name="surefire.test.class.path" value="D:\xm4\HangZhouMes\UnLoadGlassModule\target\test-classes;D:\xm4\HangZhouMes\UnLoadGlassModule\target\classes;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-web\2.5.9\spring-boot-starter-web-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter\2.5.9\spring-boot-starter-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot\2.5.9\spring-boot-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-logging\2.5.9\spring-boot-starter-logging-2.5.9.jar;C:\Users\SNG-012\.m2\repository\ch\qos\logback\logback-classic\1.2.10\logback-classic-1.2.10.jar;C:\Users\SNG-012\.m2\repository\ch\qos\logback\logback-core\1.2.10\logback-core-1.2.10.jar;C:\Users\SNG-012\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.17.1\log4j-to-slf4j-2.17.1.jar;C:\Users\SNG-012\.m2\repository\org\apache\logging\log4j\log4j-api\2.17.1\log4j-api-2.17.1.jar;C:\Users\SNG-012\.m2\repository\org\slf4j\jul-to-slf4j\1.7.33\jul-to-slf4j-1.7.33.jar;C:\Users\SNG-012\.m2\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;C:\Users\SNG-012\.m2\repository\org\yaml\snakeyaml\1.28\snakeyaml-1.28.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-json\2.5.9\spring-boot-starter-json-2.5.9.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.12.6\jackson-datatype-jdk8-2.12.6.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.12.6\jackson-datatype-jsr310-2.12.6.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.12.6\jackson-module-parameter-names-2.12.6.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\2.5.9\spring-boot-starter-tomcat-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.56\tomcat-embed-core-9.0.56.jar;C:\Users\SNG-012\.m2\repository\org\apache\tomcat\embed\tomcat-embed-el\9.0.56\tomcat-embed-el-9.0.56.jar;C:\Users\SNG-012\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.56\tomcat-embed-websocket-9.0.56.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-web\5.3.15\spring-web-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-webmvc\5.3.15\spring-webmvc-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-aop\5.3.15\spring-aop-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-context\5.3.15\spring-context-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-expression\5.3.15\spring-expression-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\mybatis\spring\boot\mybatis-spring-boot-starter\2.3.1\mybatis-spring-boot-starter-2.3.1.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-jdbc\2.5.9\spring-boot-starter-jdbc-2.5.9.jar;C:\Users\SNG-012\.m2\repository\com\zaxxer\HikariCP\4.0.3\HikariCP-4.0.3.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-jdbc\5.3.15\spring-jdbc-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\mybatis\spring\boot\mybatis-spring-boot-autoconfigure\2.3.1\mybatis-spring-boot-autoconfigure-2.3.1.jar;C:\Users\SNG-012\.m2\repository\org\mybatis\mybatis\3.5.13\mybatis-3.5.13.jar;C:\Users\SNG-012\.m2\repository\org\mybatis\mybatis-spring\2.1.1\mybatis-spring-2.1.1.jar;C:\Users\SNG-012\.m2\repository\com\alibaba\fastjson\1.2.70\fastjson-1.2.70.jar;C:\Users\SNG-012\.m2\repository\org\springframework\data\spring-data-commons\2.3.1.RELEASE\spring-data-commons-2.3.1.RELEASE.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-core\5.3.15\spring-core-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-jcl\5.3.15\spring-jcl-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-beans\5.3.15\spring-beans-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\slf4j\slf4j-api\1.7.33\slf4j-api-1.7.33.jar;C:\Users\SNG-012\.m2\repository\mysql\mysql-connector-java\8.0.20\mysql-connector-java-8.0.20.jar;C:\Users\SNG-012\.m2\repository\org\projectlombok\lombok\1.18.22\lombok-1.18.22.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-test\2.5.9\spring-boot-starter-test-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-test\2.5.9\spring-boot-test-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-test-autoconfigure\2.5.9\spring-boot-test-autoconfigure-2.5.9.jar;C:\Users\SNG-012\.m2\repository\com\jayway\jsonpath\json-path\2.5.0\json-path-2.5.0.jar;C:\Users\SNG-012\.m2\repository\net\minidev\json-smart\2.4.7\json-smart-2.4.7.jar;C:\Users\SNG-012\.m2\repository\net\minidev\accessors-smart\2.4.7\accessors-smart-2.4.7.jar;C:\Users\SNG-012\.m2\repository\org\ow2\asm\asm\9.1\asm-9.1.jar;C:\Users\SNG-012\.m2\repository\jakarta\xml\bind\jakarta.xml.bind-api\2.3.3\jakarta.xml.bind-api-2.3.3.jar;C:\Users\SNG-012\.m2\repository\jakarta\activation\jakarta.activation-api\1.2.2\jakarta.activation-api-1.2.2.jar;C:\Users\SNG-012\.m2\repository\org\hamcrest\hamcrest\2.2\hamcrest-2.2.jar;C:\Users\SNG-012\.m2\repository\org\junit\jupiter\junit-jupiter\5.7.2\junit-jupiter-5.7.2.jar;C:\Users\SNG-012\.m2\repository\org\junit\jupiter\junit-jupiter-api\5.7.2\junit-jupiter-api-5.7.2.jar;C:\Users\SNG-012\.m2\repository\org\apiguardian\apiguardian-api\1.1.0\apiguardian-api-1.1.0.jar;C:\Users\SNG-012\.m2\repository\org\opentest4j\opentest4j\1.2.0\opentest4j-1.2.0.jar;C:\Users\SNG-012\.m2\repository\org\junit\platform\junit-platform-commons\1.7.2\junit-platform-commons-1.7.2.jar;C:\Users\SNG-012\.m2\repository\org\junit\jupiter\junit-jupiter-params\5.7.2\junit-jupiter-params-5.7.2.jar;C:\Users\SNG-012\.m2\repository\org\junit\jupiter\junit-jupiter-engine\5.7.2\junit-jupiter-engine-5.7.2.jar;C:\Users\SNG-012\.m2\repository\org\junit\platform\junit-platform-engine\1.7.2\junit-platform-engine-1.7.2.jar;C:\Users\SNG-012\.m2\repository\org\mockito\mockito-core\3.9.0\mockito-core-3.9.0.jar;C:\Users\SNG-012\.m2\repository\net\bytebuddy\byte-buddy\1.10.22\byte-buddy-1.10.22.jar;C:\Users\SNG-012\.m2\repository\net\bytebuddy\byte-buddy-agent\1.10.22\byte-buddy-agent-1.10.22.jar;C:\Users\SNG-012\.m2\repository\org\objenesis\objenesis\3.2\objenesis-3.2.jar;C:\Users\SNG-012\.m2\repository\org\mockito\mockito-junit-jupiter\3.9.0\mockito-junit-jupiter-3.9.0.jar;C:\Users\SNG-012\.m2\repository\org\skyscreamer\jsonassert\1.5.0\jsonassert-1.5.0.jar;C:\Users\SNG-012\.m2\repository\com\vaadin\external\google\android-json\0.0.20131108.vaadin1\android-json-0.0.20131108.vaadin1.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-test\5.3.15\spring-test-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\xmlunit\xmlunit-core\2.8.4\xmlunit-core-2.8.4.jar;C:\Users\SNG-012\.m2\repository\org\mybatis\spring\boot\mybatis-spring-boot-starter-test\2.3.1\mybatis-spring-boot-starter-test-2.3.1.jar;C:\Users\SNG-012\.m2\repository\org\mybatis\spring\boot\mybatis-spring-boot-test-autoconfigure\2.3.1\mybatis-spring-boot-test-autoconfigure-2.3.1.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-tx\5.3.15\spring-tx-5.3.15.jar;C:\Users\SNG-012\.m2\repository\com\auth0\java-jwt\3.10.3\java-jwt-3.10.3.jar;C:\Users\SNG-012\.m2\repository\commons-codec\commons-codec\1.15\commons-codec-1.15.jar;C:\Users\SNG-012\.m2\repository\org\assertj\assertj-core\3.19.0\assertj-core-3.19.0.jar;C:\Users\SNG-012\.m2\repository\cn\hutool\hutool-all\5.4.0\hutool-all-5.4.0.jar;C:\Users\SNG-012\.m2\repository\com\baomidou\mybatis-plus-boot-starter\3.5.1\mybatis-plus-boot-starter-3.5.1.jar;C:\Users\SNG-012\.m2\repository\com\baomidou\mybatis-plus\3.5.1\mybatis-plus-3.5.1.jar;C:\Users\SNG-012\.m2\repository\com\baomidou\mybatis-plus-extension\3.5.1\mybatis-plus-extension-3.5.1.jar;C:\Users\SNG-012\.m2\repository\com\baomidou\mybatis-plus-core\3.5.1\mybatis-plus-core-3.5.1.jar;C:\Users\SNG-012\.m2\repository\com\baomidou\mybatis-plus-annotation\3.5.1\mybatis-plus-annotation-3.5.1.jar;C:\Users\SNG-012\.m2\repository\com\github\jsqlparser\jsqlparser\4.3\jsqlparser-4.3.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\2.5.9\spring-boot-autoconfigure-2.5.9.jar;C:\Users\SNG-012\.m2\repository\com\baomidou\dynamic-datasource-spring-boot-starter\3.5.1\dynamic-datasource-spring-boot-starter-3.5.1.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-aop\2.5.9\spring-boot-starter-aop-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\aspectj\aspectjweaver\1.9.7\aspectjweaver-1.9.7.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-swagger2\2.9.2\springfox-swagger2-2.9.2.jar;C:\Users\SNG-012\.m2\repository\io\swagger\swagger-models\1.5.20\swagger-models-1.5.20.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-spi\2.9.2\springfox-spi-2.9.2.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-core\2.9.2\springfox-core-2.9.2.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-schema\2.9.2\springfox-schema-2.9.2.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-swagger-common\2.9.2\springfox-swagger-common-2.9.2.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-spring-web\2.9.2\springfox-spring-web-2.9.2.jar;C:\Users\SNG-012\.m2\repository\com\google\guava\guava\20.0\guava-20.0.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\classmate\1.5.1\classmate-1.5.1.jar;C:\Users\SNG-012\.m2\repository\org\springframework\plugin\spring-plugin-core\1.2.0.RELEASE\spring-plugin-core-1.2.0.RELEASE.jar;C:\Users\SNG-012\.m2\repository\org\springframework\plugin\spring-plugin-metadata\1.2.0.RELEASE\spring-plugin-metadata-1.2.0.RELEASE.jar;C:\Users\SNG-012\.m2\repository\org\mapstruct\mapstruct\1.2.0.Final\mapstruct-1.2.0.Final.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-swagger-ui\2.9.2\springfox-swagger-ui-2.9.2.jar;C:\Users\SNG-012\.m2\repository\io\swagger\swagger-annotations\1.5.20\swagger-annotations-1.5.20.jar;C:\Users\SNG-012\.m2\repository\com\github\xingshuangs\iot-communication\1.4.2\iot-communication-1.4.2.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-cache\2.5.9\spring-boot-starter-cache-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-context-support\5.3.15\spring-context-support-5.3.15.jar;C:\Users\SNG-012\.m2\repository\com\rabbitmq\amqp-client\5.13.1\amqp-client-5.13.1.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-amqp\2.5.9\spring-boot-starter-amqp-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-messaging\5.3.15\spring-messaging-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\amqp\spring-rabbit\2.3.14\spring-rabbit-2.3.14.jar;C:\Users\SNG-012\.m2\repository\org\springframework\amqp\spring-amqp\2.3.14\spring-amqp-2.3.14.jar;C:\Users\SNG-012\.m2\repository\org\springframework\retry\spring-retry\1.3.1\spring-retry-1.3.1.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.13.0\jackson-databind-2.13.0.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.13.0\jackson-core-2.13.0.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.13.0\jackson-annotations-2.13.0.jar;C:\Users\SNG-012\.m2\repository\io\netty\netty-all\4.1.36.Final\netty-all-4.1.36.Final.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-data-jpa\2.5.9\spring-boot-starter-data-jpa-2.5.9.jar;C:\Users\SNG-012\.m2\repository\jakarta\transaction\jakarta.transaction-api\1.3.3\jakarta.transaction-api-1.3.3.jar;C:\Users\SNG-012\.m2\repository\jakarta\persistence\jakarta.persistence-api\2.2.3\jakarta.persistence-api-2.2.3.jar;C:\Users\SNG-012\.m2\repository\org\hibernate\hibernate-core\5.4.33\hibernate-core-5.4.33.jar;C:\Users\SNG-012\.m2\repository\org\jboss\logging\jboss-logging\3.4.3.Final\jboss-logging-3.4.3.Final.jar;C:\Users\SNG-012\.m2\repository\org\javassist\javassist\3.27.0-GA\javassist-3.27.0-GA.jar;C:\Users\SNG-012\.m2\repository\antlr\antlr\2.7.7\antlr-2.7.7.jar;C:\Users\SNG-012\.m2\repository\org\jboss\jandex\2.2.3.Final\jandex-2.2.3.Final.jar;C:\Users\SNG-012\.m2\repository\org\dom4j\dom4j\2.1.3\dom4j-2.1.3.jar;C:\Users\SNG-012\.m2\repository\org\hibernate\common\hibernate-commons-annotations\5.1.2.Final\hibernate-commons-annotations-5.1.2.Final.jar;C:\Users\SNG-012\.m2\repository\org\glassfish\jaxb\jaxb-runtime\2.3.5\jaxb-runtime-2.3.5.jar;C:\Users\SNG-012\.m2\repository\org\glassfish\jaxb\txw2\2.3.5\txw2-2.3.5.jar;C:\Users\SNG-012\.m2\repository\com\sun\istack\istack-commons-runtime\3.0.12\istack-commons-runtime-3.0.12.jar;C:\Users\SNG-012\.m2\repository\com\sun\activation\jakarta.activation\1.2.2\jakarta.activation-1.2.2.jar;C:\Users\SNG-012\.m2\repository\org\springframework\data\spring-data-jpa\2.5.8\spring-data-jpa-2.5.8.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-orm\5.3.15\spring-orm-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-aspects\5.3.15\spring-aspects-5.3.15.jar;"/>
+    <property name="sun.cpu.endian" value="little"/>
+    <property name="user.home" value="C:\Users\SNG-012"/>
+    <property name="user.language" value="zh"/>
+    <property name="java.specification.vendor" value="Oracle Corporation"/>
+    <property name="java.home" value="C:\Program Files\Java\jdk1.8.0_121\jre"/>
+    <property name="basedir" value="D:\xm4\HangZhouMes\UnLoadGlassModule"/>
+    <property name="file.separator" value="\"/>
+    <property name="line.separator" value="&#10;"/>
+    <property name="java.vm.specification.vendor" value="Oracle Corporation"/>
+    <property name="java.specification.name" value="Java Platform API Specification"/>
+    <property name="java.awt.graphicsenv" value="sun.awt.Win32GraphicsEnvironment"/>
+    <property name="surefire.real.class.path" value="C:\Users\SNG-012\AppData\Local\Temp\surefire6753504794343487260\surefirebooter2512628117312458217.jar"/>
+    <property name="sun.boot.class.path" value="C:\Program Files\Java\jdk1.8.0_121\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\rt.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_121\jre\classes"/>
+    <property name="user.script" value=""/>
+    <property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/>
+    <property name="java.runtime.version" value="1.8.0_121-b13"/>
+    <property name="user.name" value="SNG-012"/>
+    <property name="path.separator" value=";"/>
+    <property name="os.version" value="10.0"/>
+    <property name="java.endorsed.dirs" value="C:\Program Files\Java\jdk1.8.0_121\jre\lib\endorsed"/>
+    <property name="java.runtime.name" value="Java(TM) SE Runtime Environment"/>
+    <property name="file.encoding" value="GBK"/>
+    <property name="java.vm.name" value="Java HotSpot(TM) 64-Bit Server VM"/>
+    <property name="localRepository" value="C:\Users\SNG-012\.m2\repository"/>
+    <property name="java.vendor.url.bug" value="http://bugreport.sun.com/bugreport/"/>
+    <property name="java.io.tmpdir" value="C:\Users\SNG-012\AppData\Local\Temp\"/>
+    <property name="idea.version" value="2021.1.3"/>
+    <property name="java.version" value="1.8.0_121"/>
+    <property name="user.dir" value="D:\xm4\HangZhouMes\UnLoadGlassModule"/>
+    <property name="os.arch" value="amd64"/>
+    <property name="java.vm.specification.name" value="Java Virtual Machine Specification"/>
+    <property name="java.awt.printerjob" value="sun.awt.windows.WPrinterJob"/>
+    <property name="sun.os.patch.level" value=""/>
+    <property name="java.library.path" value="C:\Program Files\Java\jdk1.8.0_121\jre\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;D:\vm\bin\;D:\jdk17.0.8\bin;D:\apache-jmeter-5.4.1\bin;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;D:/benxiaohai/mysql8/mysql8/mysql8\bin;C:\Program Files\Java\jdk1.8.0_121\bin;C:\Program Files\Tomcat\apache-tomcat-8.0.39\bin;D:\涓嬭浇\ADB;D;\github\platform-tools;C:\Program Files\python;C:\Program Files\python\Scripts;D:\BtSoft\panel\script;C:\Program Files\Google\Chrome\Application;C:\Program Files\apache-maven-3.9.1\bin;D:\寰俊web寮�鍙戣�呭伐鍏穃dll;C:\Pro;ram Files (x86)\NetSarang\Xshell 7\;C:\Program Files\Git\cmd;C:\Program Files\TortoiseGit\bin;D:\宸ヤ綔\apache-ant-1.9.16-bin\apache-ant-1.9.16\bin;D:\宸ヤ綔\Microsoft VS Code\bin;C:\Program Files (x86)\nodejs\;C:\Program Files\Tomcat2\apache-tomcat2\bin;C:\Program Files\Docker;C:\Program Files\Docker\Docker\resources\bin;D:\Erlang OTP\bin;D:\MQ\rabbitmq_server-3.12.12\sbin;D:\python\Scripts\;D:\python\;C:\Users\SNG-012\AppData\Local\Microsoft\WindowsApps;C:\Program Files\Google\Chrome\Application;C:\Users\SNG-012\AppData\Roaming\npm;."/>
+    <property name="java.vm.info" value="mixed mode"/>
+    <property name="java.vendor" value="Oracle Corporation"/>
+    <property name="java.vm.version" value="25.121-b13"/>
+    <property name="java.ext.dirs" value="C:\Program Files\Java\jdk1.8.0_121\jre\lib\ext;C:\Windows\Sun\Java\lib\ext"/>
+    <property name="sun.io.unicode.encoding" value="UnicodeLittle"/>
+    <property name="java.class.version" value="52.0"/>
+  </properties>
+  <testcase name="contextLoads" classname="com.mes.MesApplicationTests" time="0.09"/>
+</testsuite>
\ No newline at end of file
diff --git a/UnLoadGlassModule/target/surefire-reports/com.mes.MesApplicationTests.txt b/UnLoadGlassModule/target/surefire-reports/com.mes.MesApplicationTests.txt
new file mode 100644
index 0000000..92fc39e
--- /dev/null
+++ b/UnLoadGlassModule/target/surefire-reports/com.mes.MesApplicationTests.txt
@@ -0,0 +1,4 @@
+-------------------------------------------------------------------------------
+Test set: com.mes.MesApplicationTests
+-------------------------------------------------------------------------------
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.757 s - in com.mes.MesApplicationTests

--
Gitblit v1.8.0