From eb91a871e3a96a04870cfbb56d8f35d8561a1c8d Mon Sep 17 00:00:00 2001
From: wang <3597712270@qq.com>
Date: 星期四, 28 三月 2024 16:50:49 +0800
Subject: [PATCH] 内容调整

---
 TemperingGlassModule/target/surefire-reports/TEST-com.mes.MesApplicationTests.xml                               |   65 
 UnLoadGlassModule/src/main/java/com/mes/service/ModuleB.java                                                    |    9 
 TemperingGlassModule/MES-Module (1).iml                                                                         |  139 +
 UnLoadGlassModule/src/main/resources/JsonFile/sign.xlsx                                                         |    0 
 TemperingGlassModule/src/main/java/com/mes/mapper/userInfo/UserMapper.java                                      |    3 
 TemperingGlassModule/src/main/java/com/mes/service/userInfo/SysMenuItemService.java                             |    2 
 UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/MockS7PLCtwo.java                                       |  276 ++
 UnLoadGlassModule/src/main/resources/JsonFile/PlcSign.json                                                      |  460 ++++
 UI-Project/src/views/UnLoadGlass.zip                                                                            |    0 
 TemperingGlassModule/target/MES-Module-0.0.1-SNAPSHOT.jar.original                                              |    0 
 TemperingGlassModule/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst           |   53 
 UnLoadGlassModule/src/main/resources/JsonFile/test.xlsx                                                         |    0 
 UnLoadGlassModule/target/classes/JsonFile/PlcRead.json                                                          |  195 +
 UnLoadGlassModule/src/main/resources/JsonFile/PlcTest.json                                                      |  378 +++
 UnLoadGlassModule/src/main/resources/JsonFile/Plcframe.json                                                     |   51 
 UnLoadGlassModule/src/main/java/com/mes/service/ModuleA.java                                                    |    5 
 UnLoadGlassModule/src/main/resources/JsonFile/alarm.xlsx                                                        |    0 
 UnLoadGlassModule/target/classes/JsonFile/PlcTest.json                                                          |  378 +++
 UnLoadGlassModule/src/main/resources/JsonFile/PlcParameter.json                                                 |  610 +++++
 UI-Project/package.json                                                                                         |    2 
 UnLoadGlassModule/src/main/resources/JsonFile/PlcRead.json                                                      |  195 +
 UnLoadGlassModule/src/main/java/com/mes/service/Plchome.java                                                    |   44 
 UnLoadGlassModule/target/classes/JsonFile/PlcMes.json                                                           |   50 
 TemperingGlassModule/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst         |   54 
 UnLoadGlassModule/target/classes/JsonFile/PlcSign.json                                                          |  460 ++++
 UI-Project/src/utils/unloadrequest.js                                                                           |   49 
 UnLoadGlassModule/mockPLCData.properties                                                                        |   13 
 UnLoadGlassModule/src/main/java/com/mes/service/PLCAutoMes.java                                                 |   91 
 UnLoadGlassModule/src/main/java/com/mes/service/PlcService.java                                                 |  139 +
 UnLoadGlassModule/src/main/java/com/mes/common/RabbitMQUtils.java                                               |   61 
 UnLoadGlassModule/src/main/java/com/mes/service/Plcaction.java                                                  |   86 
 UnLoadGlassModule/src/main/java/com/mes/mapper/DownWorkstationMapper.java                                       |   45 
 UnLoadGlassModule/target/classes/JsonFile/sign.xlsx                                                             |    0 
 UnLoadGlassModule/target/classes/JsonFile/test.xlsx                                                             |    0 
 UnLoadGlassModule/src/main/resources/JsonFile/PlcState.json                                                     |  285 ++
 UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/MockS7PLC.java                                          |   96 
 UI-Project/src/utils/webSocket.js                                                                               |    2 
 UnLoadGlassModule/target/classes/JsonFile/Plcframe.json                                                         |   51 
 CacheGlassModule/src/main/resources/banner.txt                                                                  |   32 
 UnLoadGlassModule/src/main/java/com/mes/controller/userInfo/UserController.java                                 |   25 
 TemperingGlassModule/src/main/java/com/mes/mapper/userInfo/SysMenuItemMapper.java                               |    2 
 UnLoadGlassModule/src/main/java/com/mes/service/userInfo/SysMenuItemService.java                                |    2 
 UnLoadGlassModule/src/main/java/com/mes/service/userInfo/UserService.java                                       |    9 
 UnLoadGlassModule/src/main/java/com/mes/tools/InitUtil.java                                                     |   15 
 TemperingGlassModule/target/maven-archiver/pom.properties                                                       |    3 
 UnLoadGlassModule/src/main/java/com/mes/service/userInfo/SysErrorService.java                                   |    2 
 UnLoadGlassModule/src/main/java/com/mes/mapper/userInfo/SysMenuItemMapper.java                                  |    3 
 TemperingGlassModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst |    1 
 UnLoadGlassModule/src/main/resources/JsonFile/PlcMes.json                                                       |   50 
 UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterObject.java                                   |    3 
 UnLoadGlassModule/src/main/java/com/mes/entity/DownWorkstation.java                                             |    3 
 UnLoadGlassModule/src/main/java/com/mes/mapper/DownGlassInfoMapper.java                                         |   17 
 UnLoadGlassModule/src/main/java/com/mes/service/DownGlassInfoService.java                                       |    3 
 UnLoadGlassModule/src/main/java/com/mes/controller/DownGlassInfoController.java                                 |   40 
 UnLoadGlassModule/src/main/java/com/mes/entity/DownGlassInfo.java                                               |    2 
 TemperingGlassModule/src/main/java/com/mes/service/userInfo/SysMenuService.java                                 |    2 
 UnLoadGlassModule/target/classes/JsonFile/PlcState.json                                                         |  285 ++
 UI-Project/config.js                                                                                            |    3 
 UnLoadGlassModule/src/main/resources/JsonFile/PlcAlarm.json                                                     |  371 +++
 TemperingGlassModule/MES-Module.iml                                                                             |   15 
 TemperingGlassModule/src/main/java/com/mes/service/userInfo/SysErrorService.java                                |    2 
 UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java                                             |   56 
 UnLoadGlassModule/src/main/java/com/mes/service/userInfo/SysMenuService.java                                    |    2 
 UnLoadGlassModule/target/classes/JsonFile/alarm.xlsx                                                            |    0 
 TemperingGlassModule/target/surefire-reports/com.mes.MesApplicationTests.txt                                    |    4 
 UnLoadGlassModule/target/classes/JsonFile/PlcAlarm.json                                                         |  371 +++
 UnLoadGlassModule/target/classes/JsonFile/PlcParameter.json                                                     |  610 +++++
 /dev/null                                                                                                       |   65 
 TemperingGlassModule/src/main/java/com/mes/service/userInfo/UserService.java                                    |    9 
 TemperingGlassModule/src/main/resources/application.yml                                                         |   24 
 UI-Project/src/views/HomeView.vue                                                                               |   28 
 UI-Project/package-lock.json                                                                                    |    4 
 UnLoadGlassModule/src/main/resources/application.yml                                                            |   10 
 UnLoadGlassModule/target/classes/application.yml                                                                |   10 
 TemperingGlassModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst   |    1 
 UI-Project/vite.config.js                                                                                       |    2 
 76 files changed, 6,222 insertions(+), 211 deletions(-)

diff --git a/CacheGlassModule/src/main/resources/banner.txt b/CacheGlassModule/src/main/resources/banner.txt
new file mode 100644
index 0000000..b4027f0
--- /dev/null
+++ b/CacheGlassModule/src/main/resources/banner.txt
@@ -0,0 +1,32 @@
+________                ________                 ___       _____________   ____
+`MMMMMMMb.          68b `MMMMMMMb.               `MMb     dMM'`MMMMMMMMM  6MMMMb\
+ MM    `Mb          Y89  MM    `Mb                MMM.   ,PMM  MM      \ 6M'    `
+ MM     MM   ____   ___  MM     MM   _____        M`Mb   d'MM  MM        MM
+ MM    .M9  6MMMMb  `MM  MM    .M9  6MMMMMb       M YM. ,P MM  MM    ,   YM.
+ MMMMMMM(  6M'  `Mb  MM  MMMMMMM(  6M'   `Mb      M `Mb d' MM  MMMMMMM    YMMMMb
+ MM    `Mb MM    MM  MM  MM    `Mb MM     MM      M  YM.P  MM  MM    `        `Mb
+ MM     MM MMMMMMMM  MM  MM     MM MM     MM      M  `Mb'  MM  MM              MM
+ MM     MM MM        MM  MM     MM MM     MM      M   YP   MM  MM              MM
+ MM    .M9 YM    d9  MM  MM    .M9 YM.   ,M9 68b  M   `'   MM  MM      / L    ,M9
+_MMMMMMM9'  YMMMM9  _MM__MMMMMMM9'  YMMMMM9  Y89 _M_      _MM__MMMMMMMMM MYMMMM9
+
+//                          _ooOoo_                               //
+//                         o8888888o                              //
+//                         88" . "88                              //
+//                         (| ^_^ |)                              //
+//                         O\  =  /O                              //
+//                      ____/`---'\____                           //
+//                    .'  \\|     |//  `.                         //
+//                   /  \\|||  :  |||//  \                        //
+//                  /  _||||| -:- |||||-  \                       //
+//                  |   | \\\  -  /// |   |                       //
+//                  | \_|  ''\---/''  |   |                       //
+//                  \  .-\__  `-`  ___/-. /                       //
+//                ___`. .'  /--.--\  `. . ___                     //
+//              ."" '<  `.___\_<|>_/___.'  >'"".                  //
+//            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //
+//            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //
+//      ========`-.____`-.___\_____/___.-`____.-'========         //
+//                           `=---='                              //
+//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
+//            浣涚淇濅綉       姘镐笉瀹曟満      姘告棤BUG                銆�銆�//
\ No newline at end of file
diff --git "a/TemperingGlassModule/MES-Module \0501\051.iml" "b/TemperingGlassModule/MES-Module \0501\051.iml"
new file mode 100644
index 0000000..100b632
--- /dev/null
+++ "b/TemperingGlassModule/MES-Module \0501\051.iml"
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="web" name="Web">
+      <configuration>
+        <webroots />
+        <sourceRoots>
+          <root url="file://$MODULE_DIR$/src/main/java" />
+          <root url="file://$MODULE_DIR$/src/main/resources" />
+        </sourceRoots>
+      </configuration>
+    </facet>
+    <facet type="Spring" name="Spring">
+      <configuration />
+    </facet>
+  </component>
+  <component name="MavenCustomPomFilePath">
+    <option name="mavenPomFileUrl" value="file://$MODULE_DIR$/effective-pom.xml" />
+  </component>
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
+    <content url="file://$MODULE_DIR$/src/main/java">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+    </content>
+    <content url="file://$MODULE_DIR$/src/main/resources">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+    </content>
+    <content url="file://$MODULE_DIR$/src/test/java">
+      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <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" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.5.9" level="project" />
+    <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" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.5.9" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.12.6" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.6" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.12.6" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.5.9" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.56" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:9.0.56" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.56" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-web:5.3.15" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.3.15" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.3.15" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-context:5.3.15" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.3.15" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.3.1" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.5.9" level="project" />
+    <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:4.0.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.3.15" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.3.1" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.13" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.1.1" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.70" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:2.3.1.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-core:5.3.15" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.3.15" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.3.15" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.33" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: mysql:mysql-connector-java:8.0.20" level="project" />
+    <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.22" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.5.9" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:2.5.9" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.5.9" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.5.0" level="project" />
+    <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" 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" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.apiguardian:apiguardian-api:1.1.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.opentest4j:opentest4j:1.2.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-commons:1.7.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-params:5.7.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-engine:5.7.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-engine:1.7.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:3.9.0" level="project" />
+    <orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.10.22" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.10.22" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:3.2" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-junit-jupiter:3.9.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.5.0" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:5.3.15" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.xmlunit:xmlunit-core:2.8.4" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter-test:2.3.1" level="project" />
+    <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" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.12.6" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.12.6" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.12.6" level="project" />
+    <orderEntry type="library" scope="RUNTIME" 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" />
+    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.5.1" level="project" />
+    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.5.1" level="project" />
+    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.5.1" level="project" />
+    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.5.1" level="project" />
+    <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.5.9" level="project" />
+    <orderEntry type="library" name="Maven: com.baomidou:dynamic-datasource-spring-boot-starter:3.5.1" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.5.9" level="project" />
+    <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.7" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.20" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-core:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: com.google.guava:guava:20.0" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.5.1" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.2.0.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.20" level="project" />
+    <orderEntry type="library" name="Maven: com.github.xingshuangs:iot-communication:1.4.2" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-cache:2.5.9" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.3.15" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-all:4.1.36.Final" level="project" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/TemperingGlassModule/MES-Module.iml b/TemperingGlassModule/MES-Module.iml
new file mode 100644
index 0000000..ddaeab8
--- /dev/null
+++ b/TemperingGlassModule/MES-Module.iml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+      <excludeFolder url="file://$MODULE_DIR$/target" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/TemperingGlassModule/src/main/java/com/mes/mapper/userInfo/SysMenuItemMapper.java b/TemperingGlassModule/src/main/java/com/mes/mapper/userInfo/SysMenuItemMapper.java
index 0bf0923..08baad9 100644
--- a/TemperingGlassModule/src/main/java/com/mes/mapper/userInfo/SysMenuItemMapper.java
+++ b/TemperingGlassModule/src/main/java/com/mes/mapper/userInfo/SysMenuItemMapper.java
@@ -2,11 +2,13 @@
 
 import com.mes.entity.userInfo.SysMenuItem;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
 
 import java.util.List;
 
 @Mapper
 public interface SysMenuItemMapper {
 
+     @Select("select  * from sys_menu_item as a where a.state=1 order by a.listSort")
      List<SysMenuItem> findAll() ;
 }
diff --git a/TemperingGlassModule/src/main/java/com/mes/mapper/userInfo/UserMapper.java b/TemperingGlassModule/src/main/java/com/mes/mapper/userInfo/UserMapper.java
index 53e9856..dc3b242 100644
--- a/TemperingGlassModule/src/main/java/com/mes/mapper/userInfo/UserMapper.java
+++ b/TemperingGlassModule/src/main/java/com/mes/mapper/userInfo/UserMapper.java
@@ -16,9 +16,8 @@
 
     User findOne(Integer id);
 
-    @Select("select user_name FROM `user` where login_name=#{LoginName} 聽")
+    @Select("select user_name FROM `user` where login_name=#{LoginName}")
     User findOneLoginName(String LoginName);
-
     @Select("select count(id) FROM `user` where login_name=#{userName} and password=#{password}  ")
     int  checkUser(@Param("userName") String userName,@Param("password") String password);
 
diff --git a/TemperingGlassModule/src/main/java/com/mes/service/userInfo/SysErrorService.java b/TemperingGlassModule/src/main/java/com/mes/service/userInfo/SysErrorService.java
index 004399b..9940470 100644
--- a/TemperingGlassModule/src/main/java/com/mes/service/userInfo/SysErrorService.java
+++ b/TemperingGlassModule/src/main/java/com/mes/service/userInfo/SysErrorService.java
@@ -7,7 +7,7 @@
 import org.springframework.stereotype.Service;
 
 @Service
-@DS("user_info")
+@DS("hangzhoumes")
 public class SysErrorService {
     private final SysErrorMapper sysErrorMapper;
 
diff --git a/TemperingGlassModule/src/main/java/com/mes/service/userInfo/SysMenuItemService.java b/TemperingGlassModule/src/main/java/com/mes/service/userInfo/SysMenuItemService.java
index 6efd838..ee38452 100644
--- a/TemperingGlassModule/src/main/java/com/mes/service/userInfo/SysMenuItemService.java
+++ b/TemperingGlassModule/src/main/java/com/mes/service/userInfo/SysMenuItemService.java
@@ -9,7 +9,7 @@
 import java.util.List;
 
 @Service
-@DS("user_info")
+@DS("hangzhoumes")
 public class SysMenuItemService {
     @Autowired
     SysMenuItemMapper sysMenuItemMapper;
diff --git a/TemperingGlassModule/src/main/java/com/mes/service/userInfo/SysMenuService.java b/TemperingGlassModule/src/main/java/com/mes/service/userInfo/SysMenuService.java
index 278b057..55f8fc6 100644
--- a/TemperingGlassModule/src/main/java/com/mes/service/userInfo/SysMenuService.java
+++ b/TemperingGlassModule/src/main/java/com/mes/service/userInfo/SysMenuService.java
@@ -9,7 +9,7 @@
 import java.util.List;
 
 @Service
-@DS("user_info")
+@DS("hangzhoumes")
 public class SysMenuService {
     @Autowired
     private SysMenuMapper sysMenuMapper;
diff --git a/TemperingGlassModule/src/main/java/com/mes/service/userInfo/UserService.java b/TemperingGlassModule/src/main/java/com/mes/service/userInfo/UserService.java
index 08fb8dd..e172f10 100644
--- a/TemperingGlassModule/src/main/java/com/mes/service/userInfo/UserService.java
+++ b/TemperingGlassModule/src/main/java/com/mes/service/userInfo/UserService.java
@@ -2,23 +2,18 @@
 
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.dynamic.datasource.annotation.DS;
-import com.mes.common.CacheUtil;
-import com.mes.common.Result;
+import com.mes.controller.dto.UserDTO;
 import com.mes.entity.userInfo.User;
 import com.mes.mapper.userInfo.UserMapper;
-import com.mes.controller.dto.UserDTO;
 import com.mes.tools.TokenTools;
-import org.apache.ibatis.jdbc.Null;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.List;
-
 @Service
-@DS("user_info")
+@DS("hangzhoumes")
 public class UserService {
 
     @Autowired
diff --git a/TemperingGlassModule/src/main/resources/application.yml b/TemperingGlassModule/src/main/resources/application.yml
index d74069d..a85e82a 100644
--- a/TemperingGlassModule/src/main/resources/application.yml
+++ b/TemperingGlassModule/src/main/resources/application.yml
@@ -2,31 +2,17 @@
 server:
   port: 8080
   servlet:
-   context-path: /mesModuleTools
+    context-path: /mesModuleTools
 
 spring:
   datasource:
     dynamic:
-      primary: user_info #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
       strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
       datasource:
-        user_info:
-          url: jdbc:mysql://10.153.19.150:3306/erp_user_info?serverTimezone=GMT%2b8
-          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
+
+        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/TemperingGlassModule/target/MES-Module-0.0.1-SNAPSHOT.jar.original b/TemperingGlassModule/target/MES-Module-0.0.1-SNAPSHOT.jar.original
new file mode 100644
index 0000000..5562d4d
--- /dev/null
+++ b/TemperingGlassModule/target/MES-Module-0.0.1-SNAPSHOT.jar.original
Binary files differ
diff --git a/TemperingGlassModule/target/maven-archiver/pom.properties b/TemperingGlassModule/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..f4d443d
--- /dev/null
+++ b/TemperingGlassModule/target/maven-archiver/pom.properties
@@ -0,0 +1,3 @@
+artifactId=MES-Module
+groupId=com.MES-Module
+version=0.0.1-SNAPSHOT
diff --git a/TemperingGlassModule/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/TemperingGlassModule/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..8c9427b
--- /dev/null
+++ b/TemperingGlassModule/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,54 @@
+com\mes\controller\OrderTestController.class
+com\mes\common\PlcTools\S7object2.class
+com\mes\MesApplication.class
+com\mes\controller\userInfo\SysMenuItemController.class
+com\mes\exception\ServiceException.class
+com\mes\entity\UpPattenUsage.class
+com\mes\service\userInfo\SysErrorService.class
+com\mes\config\MyCorsConfig$1.class
+com\mes\common\Result.class
+com\mes\entity\Engineering.class
+com\mes\common\PlcTools\S7control.class
+com\mes\entity\BigStorageCage.class
+com\mes\service\IOrderService.class
+com\mes\mapper\userInfo\UserMapper.class
+com\mes\common\Constants.class
+com\mes\entity\GlassFilms.class
+com\mes\entity\BigStorageCageDetails.class
+com\mes\entity\DownStorageCagedetails.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\config\InterceptorConfig.class
+com\mes\service\userInfo\SysMenuItemService.class
+com\mes\entity\OrderTest.class
+com\mes\entity\UpWorkstation.class
+com\mes\entity\userInfo\SysMenuItem.class
+com\mes\entity\userInfo\User.class
+com\mes\config\MyCorsConfig.class
+com\mes\entity\GlassInfo.class
+com\mes\tools\TokenTools.class
+com\mes\service\impl\OrderServiceImpl.class
+com\mes\exception\GlobalExceptionHandle.class
+com\mes\service\userInfo\SysMenuService.class
+com\mes\tools\WebSocketServer.class
+com\mes\controller\userInfo\SysMenuController.class
+com\mes\entity\DownWorkstation.class
+com\mes\entity\userInfo\SysMenu.class
+com\mes\config\AppRunnerConfig.class
+com\mes\entity\DownStorageCage.class
+com\mes\config\MybatisPlusConfig.class
+com\mes\service\userInfo\UserService.class
+com\mes\entity\DownGlassInfo.class
+com\mes\entity\userInfo\SysError.class
+com\mes\entity\EdgStorageCage.class
+com\mes\config\WebSocketConfig.class
+com\mes\config\SwaggerConfig.class
+com\mes\controller\userInfo\UserController.class
+com\mes\mapper\userInfo\SysMenuMapper.class
+com\mes\entity\Tempering.class
+com\mes\mapper\OrderTestMapper.class
+com\mes\mapper\userInfo\SysErrorMapper.class
+com\mes\entity\EdgStorageCageDetails.class
+com\mes\common\interceptor\JwtInterceptor.class
diff --git a/TemperingGlassModule/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/TemperingGlassModule/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..9a930c2
--- /dev/null
+++ b/TemperingGlassModule/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,53 @@
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\common\Constants.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\entity\UpPattenUsage.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\entity\DownGlassInfo.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\common\interceptor\JwtInterceptor.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\common\Result.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\config\WebSocketConfig.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\mapper\userInfo\SysErrorMapper.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\mapper\userInfo\UserMapper.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\service\userInfo\UserService.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\mapper\userInfo\SysMenuMapper.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\common\PlcTools\S7object.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\common\PlcTools\S7object2.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\config\AppRunnerConfig.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\entity\Tempering.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\config\InterceptorConfig.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\config\SwaggerConfig.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\entity\UpWorkstation.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\entity\userInfo\User.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\entity\EdgStorageCageDetails.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\entity\OrderTest.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\entity\BigStorageCageDetails.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\controller\dto\UserDTO.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\controller\userInfo\UserController.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\service\userInfo\SysMenuItemService.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\service\impl\OrderServiceImpl.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\mapper\OrderTestMapper.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\tools\TokenTools.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\entity\BigStorageCage.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\entity\userInfo\SysError.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\common\PlcTools\S7control.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\entity\EdgStorageCage.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\controller\userInfo\SysMenuController.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\entity\Engineering.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\controller\OrderTestController.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\entity\DownWorkstation.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\service\userInfo\SysMenuService.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\entity\GlassInfo.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\service\userInfo\SysErrorService.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\MesApplication.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\entity\DownStorageCage.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\exception\GlobalExceptionHandle.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\entity\GlassFilms.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\config\MybatisPlusConfig.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\config\MyCorsConfig.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\controller\userInfo\SysMenuItemController.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\common\CacheUtil.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\tools\WebSocketServer.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\entity\DownStorageCagedetails.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\entity\userInfo\SysMenu.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\exception\ServiceException.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\entity\userInfo\SysMenuItem.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\mapper\userInfo\SysMenuItemMapper.java
+D:\xm4\HangZhouMes\TemperingGlassModule\src\main\java\com\mes\service\IOrderService.java
diff --git a/TemperingGlassModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/TemperingGlassModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
new file mode 100644
index 0000000..9c25a83
--- /dev/null
+++ b/TemperingGlassModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
@@ -0,0 +1 @@
+com\mes\MesApplicationTests.class
diff --git a/TemperingGlassModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/TemperingGlassModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
new file mode 100644
index 0000000..5b92fc7
--- /dev/null
+++ b/TemperingGlassModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
@@ -0,0 +1 @@
+D:\xm4\HangZhouMes\TemperingGlassModule\src\test\java\com\mes\MesApplicationTests.java
diff --git a/TemperingGlassModule/target/surefire-reports/TEST-com.mes.MesApplicationTests.xml b/TemperingGlassModule/target/surefire-reports/TEST-com.mes.MesApplicationTests.xml
new file mode 100644
index 0000000..4a1f5d8
--- /dev/null
+++ b/TemperingGlassModule/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.389" 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\TemperingGlassModule\target\test-classes;D:\xm4\HangZhouMes\TemperingGlassModule\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\com\fasterxml\jackson\core\jackson-databind\2.12.6\jackson-databind-2.12.6.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.12.6\jackson-annotations-2.12.6.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.12.6\jackson-core-2.12.6.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\io\netty\netty-all\4.1.36.Final\netty-all-4.1.36.Final.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\surefire33896117267200105\surefirebooter1902636531692371884.jar C:\Users\SNG-012\AppData\Local\Temp\surefire33896117267200105 2024-03-07T11-50-56_835-jvmRun1 surefire967000318635874576tmp surefire_08363905452971083609tmp"/>
+    <property name="surefire.test.class.path" value="D:\xm4\HangZhouMes\TemperingGlassModule\target\test-classes;D:\xm4\HangZhouMes\TemperingGlassModule\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\com\fasterxml\jackson\core\jackson-databind\2.12.6\jackson-databind-2.12.6.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.12.6\jackson-annotations-2.12.6.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.12.6\jackson-core-2.12.6.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\io\netty\netty-all\4.1.36.Final\netty-all-4.1.36.Final.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\TemperingGlassModule"/>
+    <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\surefire33896117267200105\surefirebooter1902636531692371884.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\TemperingGlassModule"/>
+    <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.225"/>
+</testsuite>
\ No newline at end of file
diff --git a/TemperingGlassModule/target/surefire-reports/com.mes.MesApplicationTests.txt b/TemperingGlassModule/target/surefire-reports/com.mes.MesApplicationTests.txt
new file mode 100644
index 0000000..93941f7
--- /dev/null
+++ b/TemperingGlassModule/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.389 s - in com.mes.MesApplicationTests
diff --git a/UI-Project/config.js b/UI-Project/config.js
index 201fb02..ac9f2b1 100644
--- a/UI-Project/config.js
+++ b/UI-Project/config.js
@@ -1,4 +1,5 @@
 export default {
-  serverUrl:"localhost:8080/mesModuleTools"
+  serverUrl:"localhost:8080/mesModuleTools",
+  serverUrl2:"localhost:8081/mesModuleTools"
   //serverUrl:"res.abeim.cn"
 }
\ No newline at end of file
diff --git a/UI-Project/package-lock.json b/UI-Project/package-lock.json
index 0acc5fd..a7386d3 100644
--- a/UI-Project/package-lock.json
+++ b/UI-Project/package-lock.json
@@ -1,11 +1,11 @@
 {
-  "name": "northglass-erp",
+  "name": "northglass-mes",
   "version": "0.0.0",
   "lockfileVersion": 2,
   "requires": true,
   "packages": {
     "": {
-      "name": "northglass-erp",
+      "name": "northglass-mes",
       "version": "0.0.0",
       "dependencies": {
         "@element-plus/icons-vue": "^2.1.0",
diff --git a/UI-Project/package.json b/UI-Project/package.json
index d123656..75d8054 100644
--- a/UI-Project/package.json
+++ b/UI-Project/package.json
@@ -1,5 +1,5 @@
 {
-  "name": "northglass-erp",
+  "name": "northglass-mes",
   "version": "0.0.0",
   "private": true,
   "scripts": {
diff --git a/UI-Project/src/utils/unloadrequest.js b/UI-Project/src/utils/unloadrequest.js
new file mode 100644
index 0000000..bdaeeb5
--- /dev/null
+++ b/UI-Project/src/utils/unloadrequest.js
@@ -0,0 +1,49 @@
+import axios from 'axios'
+import config from '../../config';
+import useUserInfoStore from '@/stores/userInfo'
+const userStore=useUserInfoStore()
+const unloadrequest = axios.create({
+    baseURL: `http://${config.serverUrl2}`,  // 娉ㄦ剰锛侊紒 杩欓噷鏄叏灞�缁熶竴鍔犱笂浜� 鍚庣鎺ュ彛鍓嶇紑 鍓嶇紑锛屽悗绔繀椤昏繘琛岃法鍩熼厤缃紒
+    timeout: 5000
+})
+
+//
+
+// request 鎷︽埅鍣�
+// 鍙互鑷姹傚彂閫佸墠瀵硅姹傚仛涓�浜涘鐞�
+// 姣斿缁熶竴鍔爐oken锛屽璇锋眰鍙傛暟缁熶竴鍔犲瘑
+unloadrequest.interceptors.request.use(config => {
+    config.headers['Content-Type'] = 'application/json;charset=utf-8';
+    if(userStore.user){
+        config.headers['token'] = userStore.user.token;
+    }
+      // 璁剧疆璇锋眰澶�
+    return config
+}, error => {
+    return Promise.reject(error)
+});
+
+// response 鎷︽埅鍣�
+// 鍙互鍦ㄦ帴鍙e搷搴斿悗缁熶竴澶勭悊缁撴灉
+unloadrequest.interceptors.response.use(
+    response => {
+        let res = response.data;
+        // 濡傛灉鏄繑鍥炵殑鏂囦欢
+        if (response.config.responseType === 'blob') {
+            return res
+        }
+        // 鍏煎鏈嶅姟绔繑鍥炵殑瀛楃涓叉暟鎹�
+        if (typeof res === 'string') {
+            res = res ? JSON.parse(res) : res
+        }
+        return res;
+    },
+    error => {
+        console.log('err' + error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+
+export default unloadrequest
+
diff --git a/UI-Project/src/utils/webSocket.js b/UI-Project/src/utils/webSocket.js
index 779990b..51e5ede 100644
--- a/UI-Project/src/utils/webSocket.js
+++ b/UI-Project/src/utils/webSocket.js
@@ -6,7 +6,7 @@
 
 
 var serverPort = "/ws"; // webSocket杩炴帴绔彛
-var wsuri = "ws://127.0.0.1:12345/ws";
+var wsuri = "ws://localhost:8081/mesModuleTools";
 
 function createWebSocket(callback) {
 
diff --git a/UI-Project/src/views/HomeView.vue b/UI-Project/src/views/HomeView.vue
index 075c71e..6285749 100644
--- a/UI-Project/src/views/HomeView.vue
+++ b/UI-Project/src/views/HomeView.vue
@@ -3,21 +3,21 @@
 
 import { sendSock, createWebSocket, closeSock } from "@/utils/webSocket"
 
-function global_callback(msg) {
-  console.log("websocket鐨勫洖璋冨嚱鏁版敹鍒版湇鍔″櫒淇℃伅锛�" + JSON.stringify(msg));
-  // console.log("鏀跺埌鏈嶅姟鍣ㄤ俊鎭細" + msg);
-}
-function close(){
- closeSock();
+// function global_callback(msg) {
+//   console.log("websocket鐨勫洖璋冨嚱鏁版敹鍒版湇鍔″櫒淇℃伅锛�" + JSON.stringify(msg));
+//   // console.log("鏀跺埌鏈嶅姟鍣ㄤ俊鎭細" + msg);
+// }
+// function close(){
+//  closeSock();
 
-}
-function sendMessage(){
-  sendSock("123")
-}
-function createSocket(){
-  createWebSocket(global_callback);
-}
-</script>
+// }
+// function sendMessage(){
+//   sendSock("123")
+// }
+// function createSocket(){
+//   createWebSocket(global_callback);
+// }
+// </script>
 
 
 <template>
diff --git a/UI-Project/src/views/UnLoadGlass.zip b/UI-Project/src/views/UnLoadGlass.zip
new file mode 100644
index 0000000..6435317
--- /dev/null
+++ b/UI-Project/src/views/UnLoadGlass.zip
Binary files differ
diff --git a/UI-Project/vite.config.js b/UI-Project/vite.config.js
index c5cc368..b0685b2 100644
--- a/UI-Project/vite.config.js
+++ b/UI-Project/vite.config.js
@@ -33,7 +33,7 @@
       '/api2': {
         target: 'localhost:8080/mesModuleTools',
         changeOrigin: true,
-        rewrite: (path) => path.replace(/^\/api2/, ""),
+        rewrite: (path) => path.replace(/^\/api2/, "mesModuleTools"),
       },
     }
   }
diff --git a/UnLoadGlassModule/mockPLCData.properties b/UnLoadGlassModule/mockPLCData.properties
new file mode 100644
index 0000000..56514ef
--- /dev/null
+++ b/UnLoadGlassModule/mockPLCData.properties
@@ -0,0 +1,13 @@
+#Mock S7 PLC Data
+#Wed Mar 27 10:21:54 CST 2024
+DB4.0.0=false
+DB4.1.1=false
+DB4.1.0=false
+DB4.0.7=false
+DB4.0.6=false
+DB4.0.5=true
+DB4.0.4=true
+DB4.0.3=true
+DB4.0.2=true
+DB4.0.1=true
+DB101.0=1
diff --git a/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/MockS7PLC.java b/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/MockS7PLC.java
new file mode 100644
index 0000000..86d7a0b
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/MockS7PLC.java
@@ -0,0 +1,96 @@
+package com.mes.common.PlcTools;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 妯℃嫙S7 PLC鐨勭畝鍗曞疄鐜帮紝鐢ㄤ簬娴嬭瘯鍜屽紑鍙戦樁娈�
+ */
+public class MockS7PLC {
+    // 浣跨敤Map妯℃嫙PLC鐨勫唴瀛樺瓨鍌紝閿槸鍦板潃锛屽�兼槸瀛樺偍鐨勬暟鎹�
+    private Map<String, byte[]> memory = new HashMap<>();
+
+    private static volatile MockS7PLC instance; // 鍗曚緥瀹炰緥
+    public static MockS7PLC getInstance() {
+        if (instance == null) {
+            synchronized (MockS7PLC.class) {
+                if (instance == null)
+                    instance = new MockS7PLC();
+            }
+        }
+        return instance;
+    }
+    /**
+     * 妯℃嫙鍐欏叆涓�涓垨澶氫釜瀛楄妭鍒版寚瀹氬湴鍧�
+     *
+     * @param address 鍦板潃
+     * @param data    瑕佸啓鍏ョ殑鏁版嵁
+     */
+    public void writeByte(String address, byte[] data) {
+        memory.put(address, data);
+    }
+
+    /**
+     * 妯℃嫙浠庢寚瀹氬湴鍧�璇诲彇涓�瀹氭暟閲忕殑瀛楄妭
+     *
+     * @param address 鍦板潃
+     * @param count   瑕佽鍙栫殑瀛楄妭鏁�
+     * @return 璇诲彇鍒扮殑鏁版嵁
+     */
+    public byte[] readByte(String address, int count) {
+        byte[] bytes = memory.getOrDefault(address, new byte[0]);
+
+        if (count >= 0 && count <= bytes.length) {
+            byte[] result = new byte[count];
+            System.arraycopy(bytes, 0, result, 0, count);
+            return result;
+        } else {
+            // 濡傛灉璇锋眰鐨勫瓧鑺傛暟瓒呭嚭浜嗗疄闄呭彲鐢ㄧ殑瀛楄妭鏁帮紝鍒欒繑鍥炲叏閮ㄥ彲鐢ㄧ殑瀛楄妭
+            return bytes;
+        }
+    }
+
+
+    /**
+     * 妯℃嫙鍐欏叆涓�涓�16浣嶆暣鏁板埌鎸囧畾鍦板潃
+     *
+     * @param address 鍦板潃
+     * @param data    瑕佸啓鍏ョ殑鏁版嵁
+     */
+    public void writeInt16(String address, short data) {
+        memory.put(address, new byte[]{(byte) (data >> 8), (byte) data});
+    }
+
+    /**
+     * 妯℃嫙浠庢寚瀹氬湴鍧�璇诲彇涓�涓�16浣嶆暣鏁�
+     *
+     * @param address 鍦板潃
+     * @return 璇诲彇鍒扮殑鏁版嵁
+     */
+    public short readInt16(String address) {
+        byte[] data = memory.getOrDefault(address, new byte[]{0, 0});
+        return (short) ((data[0] << 8) | (data[1] & 0xFF));
+    }
+
+    /**
+     * 妯℃嫙鍐欏叆涓�涓竷灏斿�煎埌鎸囧畾鍦板潃
+     *
+     * @param address 鍦板潃
+     * @param data    瑕佸啓鍏ョ殑鏁版嵁
+     */
+    public void writeBoolean(String address, boolean data) {
+        memory.put(address, new byte[]{(byte) (data ? 1 : 0)});
+    }
+
+    /**
+     * 妯℃嫙浠庢寚瀹氬湴鍧�璇诲彇涓�涓竷灏斿��
+     *
+     * @param address 鍦板潃
+     * @return 璇诲彇鍒扮殑鏁版嵁
+     */
+    public boolean readBoolean(String address) {
+        return memory.getOrDefault(address, new byte[]{0})[0] != 0;
+    }
+
+    // 鏍规嵁闇�瑕侊紝鎮ㄥ彲浠ユ坊鍔犳洿澶氭ā鎷烶LC鎿嶄綔鐨勬柟娉�
+}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/MockS7PLCtwo.java b/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/MockS7PLCtwo.java
new file mode 100644
index 0000000..2d0905d
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/MockS7PLCtwo.java
@@ -0,0 +1,276 @@
+package com.mes.common.PlcTools;
+
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class MockS7PLCtwo {
+    private static volatile MockS7PLCtwo instance; // 鍗曚緥瀹炰緥
+    private ConcurrentHashMap<String, String> memory = new ConcurrentHashMap<>();
+    private String storageFilePath = "mockPLCData.properties";
+
+    // 绉佹湁鍖栨瀯閫犲嚱鏁�
+    private MockS7PLCtwo() {
+        // 鍦ㄦ瀯閫犲嚱鏁颁腑灏濊瘯鍔犺浇鐜版湁鐨勬ā鎷熸暟鎹�
+        try (FileInputStream fis = new FileInputStream(storageFilePath)) {
+            Properties properties = new Properties();
+            properties.load(fis);
+            properties.forEach((key, value) -> memory.put(String.valueOf(key), String.valueOf(value)));
+        } catch (IOException e) {
+            System.out.println("娌℃湁鎵惧埌鐜版湁鐨勬ā鎷熸暟鎹枃浠讹紝灏嗗垱寤轰竴涓柊鐨勩��");
+        }
+    }
+
+    // 鍏叡闈欐�佹柟娉曡幏鍙栫被鐨勫敮涓�瀹炰緥
+    public static MockS7PLCtwo getInstance() {
+        if (instance == null) {
+            synchronized (MockS7PLCtwo.class) {
+                if (instance == null)
+                    instance = new MockS7PLCtwo();
+            }
+        }
+        return instance;
+    }
+
+    // 淇敼鍐欏叆鏂规硶浠ユ寔涔呭寲鏁版嵁
+    public void writeByte(String address, byte[] data) {
+        memory.put(address, new String(data, StandardCharsets.ISO_8859_1));
+        saveMemory();
+    }
+
+    // 淇敼璇诲彇鏂规硶浠ヤ粠鎸佷箙鍖栫殑鏁版嵁涓鍙�
+    public byte[] readByte(String address,int count) {
+        String value = memory.getOrDefault(address, "");
+        byte[] bytes = value.getBytes(StandardCharsets.ISO_8859_1);
+        if (count >= 0 && count <= bytes.length) {
+            byte[] result = new byte[count];
+            System.arraycopy(bytes, 0, result, 0, count);
+            return result;
+        } else {
+            // 濡傛灉璇锋眰鐨勫瓧鑺傛暟瓒呭嚭浜嗗疄闄呭彲鐢ㄧ殑瀛楄妭鏁帮紝鍒欒繑鍥炲叏閮ㄥ彲鐢ㄧ殑瀛楄妭
+            return bytes;
+        }
+    }
+
+
+
+
+
+
+    public void writeInt16(String address, short data) {
+        memory.put(address, Short.toString(data));
+        saveMemory();
+    }
+
+    public Short readInt16(String address) {
+        String value = memory.get(address);
+        return value != null ? Short.parseShort(value) : null;
+    }
+
+    public void writeBoolean(String address, boolean data) {
+        memory.put(address, Boolean.toString(data));
+        saveMemory();
+    }
+
+    public Boolean readBoolean(String address) {
+        String value = memory.get(address);
+        return value != null ? Boolean.parseBoolean(value) : null;
+    }
+
+    public void writeString(String address, String data) {
+        memory.put(address, data);
+        saveMemory();
+    }
+
+    public String readString(String address) {
+        return memory.getOrDefault(address, "");
+    }
+
+    public void writeTime(String address, long data) {
+        memory.put(address, Long.toString(data));
+        saveMemory();
+    }
+
+    public Long readTime(String address) {
+        String value = memory.get(address);
+        return value != null ? Long.parseLong(value) : null;
+    }
+
+    // 娣诲姞涓�涓柟娉曟潵淇濆瓨鏁版嵁鍒版枃浠�
+    private void saveMemory() {
+        Properties properties = new Properties();
+        properties.putAll(memory);
+        try (FileOutputStream fos = new FileOutputStream(storageFilePath)) {
+            properties.store(fos, "Mock S7 PLC Data");
+        } catch (IOException e) {
+            System.out.println("淇濆瓨妯℃嫙鏁版嵁澶辫触锛�" + e.getMessage());
+        }
+    }
+
+    // 杩炵画鍐欏叆澶氫釜Word
+    public void writeword(String address, List<Short> data) {
+        for (int i = 0; i < data.size(); i++) {
+            String addr = calculateAddress(address, i * 2); // 鍋囪姣忎釜word鍗犱袱涓湴鍧�鍗曚綅
+            memory.put(addr, Short.toString(data.get(i)));
+
+        }
+        saveMemory();
+    }
+
+    // 涓嶈繛缁湴鍧�word鍐欏叆澶氫釜Word
+    public void WriteWords(List<String> addresses, List<Short> datas) {
+        if (addresses.size() != datas.size()) {
+            throw new IllegalArgumentException("鍦板潃鍒楄〃鍜屾暟鎹垪琛ㄧ殑澶у皬蹇呴』鐩稿悓銆�");
+        }
+
+        for (int i = 0; i < addresses.size(); i++) {
+            String addr = addresses.get(i);
+            short data = datas.get(i);
+            // 鍋囪杩欓噷浣跨敤鍐呭瓨鏄犲皠鏉ユā鎷烶LC鍐欏叆鎿嶄綔
+            memory.put(addr, Short.toString(data));
+        }
+        saveMemory(); // 鍦ㄦ墍鏈夋暟鎹啓鍏ュ悗淇濆瓨鏇存敼
+    }
+
+    // 杩炵画璇诲彇澶氫釜Word
+    public List<Short> readwords(String address, int count) {
+        List<Short> result = new ArrayList<>();
+        for (int i = 0; i < count; i++) {
+            String addr = calculateAddress(address, i * 2); // 鍚屼笂锛屾瘡涓獁ord鍗犱袱涓湴鍧�鍗曚綅
+
+            //System.out.println(addr);
+
+            String value = memory.get(addr);
+            if (value != null) {
+                result.add(Short.parseShort(value));
+            } else {
+                result.add(null); // 鎴栬�呰�冭檻鎶涘嚭寮傚父鎴栧叾浠栭敊璇鐞�
+            }
+        }
+        return result;
+    }
+
+
+    public List<Short> ReadWords(List<String> addresses) {
+        List<Short> datas = new ArrayList<>();
+
+        for (String addr : addresses) {
+            // 浠庡唴瀛樻槧灏勪腑鑾峰彇鏁版嵁
+            String dataStr = memory.get(addr);
+
+            // 灏嗗瓧绗︿覆杞崲鎴恠hort绫诲瀷锛屽苟娣诲姞鍒扮粨鏋滃垪琛ㄤ腑
+            // 杩欓噷鍋囪鏁版嵁宸茬粡浠ラ�傚綋鐨勬柟寮忓瓨鍌紙渚嬪锛屼綔涓虹煭鏁村瀷鐨勫瓧绗︿覆琛ㄧず锛�
+            // 濡傛灉璇诲彇鐨勬暟鎹负绌烘垨杞崲澶辫触锛屼綘鍙兘闇�瑕佸鐞嗚繖浜涙儏鍐�
+            try {
+                short data = Short.parseShort(dataStr);
+                datas.add(data);
+            } catch (NumberFormatException e) {
+                System.err.println("璇诲彇鍦板潃 " + addr + " 鐨勬暟鎹椂鍑洪敊: " + e.getMessage());
+
+            }
+        }
+
+        return datas;
+    }
+
+
+
+
+
+    // 杩炵画鍐欏叆澶氫釜Bit
+    public void writebits(String address, List<Boolean> data) {
+        for (int i = 0; i < data.size(); i++) {
+            String addr = calculateAddress(address, i); // 鍋囪姣忎釜bit鍗犱竴涓湴鍧�鍗曚綅
+            memory.put(addr, Boolean.toString(data.get(i)));
+        }
+        saveMemory();
+    }
+
+//bit鍒嗘暎鍦板潃璇诲彇
+    public List<Boolean> readBits(List<String> addresses) {
+        List<Boolean> results = new ArrayList<>();
+        for (String address : addresses) {
+            // 瀵逛簬姣忎釜鍦板潃锛岀洿鎺ヤ娇鐢� calculateAddress 鏉ュ鐞嗗彲鑳界殑浣嶅亸绉�
+            // 杩欓噷鍋囪 calculateAddress 宸茬粡瓒冲鏅鸿兘浠ュ鐞嗗崟涓綅鐨勫亸绉�
+            // 鐢变簬鎴戜滑鏄�愪釜璇诲彇锛屾瘡娆″亸绉婚噺閮芥槸0
+            String addr = calculateAddress(address, 0);
+            String value = memory.get(addr);
+            if (value != null) {
+                results.add(Boolean.parseBoolean(value));
+            } else {
+                // 濡傛灉鍦板潃瀵瑰簲鐨勫�间笉瀛樺湪浜庡唴瀛樹腑锛屽彲浠ラ�夋嫨娣诲姞 null 鎴栨姏鍑哄紓甯�
+                // 杩欓噷閫夋嫨娣诲姞 null锛屼絾鍦ㄥ疄闄呭簲鐢ㄤ腑搴旀牴鎹叿浣撻渶姹傚喅瀹�
+                results.add(null);
+            }
+        }
+        return results;
+    }
+
+    // 杩炵画璇诲彇澶氫釜Bit
+    public List<Boolean> readbits(String address, int count) {
+        List<Boolean> result = new ArrayList<>();
+        for (int i = 0; i < count; i++) {
+            String addr = calculateAddress(address, i); // 鍚屼笂锛屾瘡涓猙it鍗犱竴涓湴鍧�鍗曚綅
+            String value = memory.get(addr);
+            if (value != null) {
+                result.add(Boolean.parseBoolean(value));
+            } else {
+                result.add(null); // 鎴栬�呰�冭檻鎶涘嚭寮傚父鎴栧叾浠栭敊璇鐞�
+            }
+        }
+        return result;
+    }
+
+    // 璁$畻杩炵画鍦板潃
+//    private String calculateAddress(String baseAddress, int offset) {
+//        // 鏀寔甯﹀瓧姣嶇殑鍦板潃鏍煎紡
+//        Pattern pattern = Pattern.compile("(\\D*)(\\d+)");
+//        Matcher matcher = pattern.matcher(baseAddress);
+//        if (matcher.find()) {
+//            String prefix = matcher.group(1);
+//            int address = Integer.parseInt(matcher.group(2));
+//            return prefix + (address + offset);
+//        } else {
+//            throw new IllegalArgumentException("Invalid address format: " + baseAddress);
+//        }
+//    }
+
+    private String calculateAddress(String baseAddress, int offset) {
+        // 鍒嗗壊鍦板潃涓烘暟鎹潡銆佸瓧鍋忕Щ鍜屼綅鍋忕Щ锛堝鏋滄湁锛�
+        Pattern pattern = Pattern.compile("(DB\\d+)\\.(\\d+)(?:\\.(\\d+))?");
+        Matcher matcher = pattern.matcher(baseAddress);
+        if (matcher.find()) {
+            String dbNumber = matcher.group(1); // 鏁版嵁鍧楃紪鍙凤紝濡� "DB100"
+            int wordOffset = Integer.parseInt(matcher.group(2)); // 瀛楀亸绉�
+            String bitOffsetStr = matcher.group(3); // 浣嶅亸绉伙紝鍙兘涓虹┖
+
+            if (bitOffsetStr != null) {
+                // 瀛樺湪浣嶅亸绉伙紝杩涜浣嶆搷浣�
+                int bitOffset = Integer.parseInt(bitOffsetStr);
+                int totalBitOffset = bitOffset + offset;
+                // 璁$畻鏂扮殑瀛楀亸绉诲拰浣嶅亸绉�
+                int newWordOffset = wordOffset + (totalBitOffset / 8);
+                int newBitOffset = totalBitOffset % 8;
+                return String.format("%s.%d.%d", dbNumber, newWordOffset, newBitOffset);
+            } else {
+                // 浠呭瓨鍦ㄥ瓧鍋忕Щ锛岃繘琛屽瓧鎿嶄綔
+                // 娉ㄦ剰锛氬亣璁炬瘡涓瓧鍗犵敤2涓瓧鑺�
+                int newWordOffset = wordOffset + (offset );
+                return String.format("%s.%d", dbNumber, newWordOffset);
+            }
+        } else {
+            throw new IllegalArgumentException("Invalid address format: " + baseAddress);
+        }
+    }
+
+
+
+
+}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/common/RabbitMQUtils.java b/UnLoadGlassModule/src/main/java/com/mes/common/RabbitMQUtils.java
index 1da8717..f381270 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/common/RabbitMQUtils.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/common/RabbitMQUtils.java
@@ -106,6 +106,25 @@
     }
 
 
+//鎺ユ敹闃熷垪涓墍鏈夋秷鎭紝涓嶆秷璐�
+    public static List<String> browseMessages(String queueName) throws Exception {
+        ConnectionFactory factory = new ConnectionFactory();
+        factory.setHost(host);
+        List<String> messages = new ArrayList<>();
+        try (Connection connection = factory.newConnection();
+             Channel channel = connection.createChannel()) {
+            channel.queueDeclare(queueName, false, false, false, args);
+            // 鑾峰彇闃熷垪涓殑娑堟伅
+            GetResponse response;
+            while ((response = channel.basicGet(queueName, false)) != null) {
+                String message = new String(response.getBody(), "UTF-8");
+                messages.add(message);
+            }
+        }
+        return messages;
+    }
+
+
 
     private static Set<String> sentMessageIds = new HashSet<>();
 //鏍规嵁id鍙戦�佹秷鎭�
@@ -137,32 +156,32 @@
         }
     }
 //鏍规嵁id娑堣垂娑堟伅
-    public static String consumeMessageById( String messageId,String queueName) throws Exception {
-        ConnectionFactory factory = new ConnectionFactory();
-        factory.setHost(host);
+public static String consumeMessageById(String messageId, String queueName) throws Exception {
+    ConnectionFactory factory = new ConnectionFactory();
+    factory.setHost(host);
 
-        try (Connection connection = factory.newConnection(); Channel channel = connection.createChannel()) {
-            channel.queueDeclare(queueName, false, false, false, args);
+    try (Connection connection = factory.newConnection(); Channel channel = connection.createChannel()) {
+        channel.queueDeclare(queueName, false, false, false, args);
 
-            GetResponse response;
-            while ((response = channel.basicGet(queueName, false)) != null) {
-                String receivedMessage = new String(response.getBody(), "UTF-8");
-                if (response.getProps().getMessageId().equals(messageId)) {
-                    long deliveryTag = response.getEnvelope().getDeliveryTag();
-                    channel.basicAck(deliveryTag, false);
-                    System.out.println("Selected message: "+messageId+ receivedMessage);
-                    return receivedMessage; // 杩斿洖閫夊畾鐨勬秷鎭唴瀹�
-                } else {
-                    // 瀵逛簬涓嶇鍚堟潯浠剁殑娑堟伅锛岃繘琛� Nack 鎿嶄綔
-//                    long deliveryTag = response.getEnvelope().getDeliveryTag();
-//                    channel.basicNack(deliveryTag, false, true);
-                    return "Specified message not found in the queue.";
-                }
+        GetResponse response;
+        boolean found = false;
+
+        while ((response = channel.basicGet(queueName, false)) != null) {
+            String receivedMessage = new String(response.getBody(), "UTF-8");
+            if (response.getProps().getMessageId().equals(messageId)) {
+                long deliveryTag = response.getEnvelope().getDeliveryTag();
+                channel.basicAck(deliveryTag, false);
+                System.out.println("Selected message: " + messageId + " " + receivedMessage);
+                return receivedMessage;
+            } else {
+                // 鏈壘鍒版寚瀹氭秷鎭紝缁х画鏌ユ壘
+                channel.basicReject(response.getEnvelope().getDeliveryTag(), false);
             }
-
-            return "Specified message not found in the queue.";
         }
+
+        return "Specified message not found in the queue.";
     }
+}
 
 //娑堣垂鎸囧畾娑堟伅
     public static String consumeSelectedMessage(int messageToConsume, String queueName) throws Exception {
diff --git a/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java b/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java
index f6ecf3f..ab753f3 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java
@@ -1,23 +1,51 @@
 package com.mes.config;
 
-import com.mes.service.Plcaction;
-import com.mes.service.DownGlassInfoService;
-import org.springframework.context.ApplicationListener;
-import org.springframework.context.event.ContextRefreshedEvent;
+import com.mes.service.PLCAutoMes;
+import com.mes.service.Plchome;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Component;
 
 @Component
-class AppStartup implements ApplicationListener<ContextRefreshedEvent> {
+@Order(1)
 
-    private final DownGlassInfoService downGlassInfoService;
-
-    public AppStartup(DownGlassInfoService downGlassInfoService) {
-        this.downGlassInfoService = downGlassInfoService;
-    }
+public class AppRunnerConfig implements ApplicationRunner {
 
     @Override
-    public void onApplicationEvent(ContextRefreshedEvent event) {
-        Plcaction.setDownGlassInfoService(downGlassInfoService);
-        new Plcaction().start();
+    public void run(ApplicationArguments args) throws Exception {
+        // TODO Auto-generated method stub
+        //
+        System.out.println("鍚姩瀹屾垚");
+
+
+
+
+        //  new PlcHold().start();
+       new PLCAutoMes().start();
+
+    new Plchome().start();
+        //  new PlcLayout().start();
+        //  new Plcalarm().start();
+
+        //  new Plcsign().start();
+
+        //  new Plcstate().start();
+        //  new PlcPositioning1().start();
+
+        //  new PlcParameter2().start();
+        //  new PLCAutomaticParameterSetting().start();
+
+        //  new PlcManualonePosition().start();
+        //  new PlcManualonePosition2().start();
+        //  new PlcServoManualone().start();
+        //  new PLCManualJog().start();
+        //  new Plclog().start();
+
+        //  new PlcInteractionState().start();
+        //new PlcParameter1Review().start();
+        //new PLCAutomaticParameterSettingReview2().start();
+
+    // new PLCManualJogReview().start();
     }
-}
+}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/java/com/mes/controller/DownGlassInfoController.java b/UnLoadGlassModule/src/main/java/com/mes/controller/DownGlassInfoController.java
new file mode 100644
index 0000000..085e400
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/controller/DownGlassInfoController.java
@@ -0,0 +1,40 @@
+package com.mes.controller;
+
+import com.mes.entity.DownGlassInfo;
+import com.mes.service.DownGlassInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/downGlassInfo")
+public class DownGlassInfoController {
+
+    @Autowired
+    private DownGlassInfoService downGlassInfoService;
+
+    // 鑾峰彇鎸囧畾ID鐨凞ownGlassInfo淇℃伅
+    @GetMapping("/{id}")
+    public DownGlassInfo getDownGlassInfoById(@PathVariable Integer id) {
+        return downGlassInfoService.getDownGlassInfoById(id);
+    }
+
+
+
+//    @GetMapping("/messages")
+//    public String getMessages() throws IOException, TimeoutException {
+//        List<String> messages = new ArrayList<>();
+//        try {
+//            messages = RabbitMQUtils.browseMessages("hangzhou2");
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//        return messages.toString();  // 杩斿洖娑堟伅鍒楄〃鐨勫瓧绗︿覆琛ㄧず褰㈠紡
+//    }
+
+
+
+
+}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/controller/userInfo/UserController.java b/UnLoadGlassModule/src/main/java/com/mes/controller/userInfo/UserController.java
index 9a8eea0..e3be9dc 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/controller/userInfo/UserController.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/controller/userInfo/UserController.java
@@ -3,7 +3,6 @@
 import com.mes.common.CacheUtil;
 import com.mes.common.Constants;
 import com.mes.common.Result;
-import com.mes.controller.dto.UserDTO;
 import com.mes.entity.userInfo.User;
 import com.mes.exception.ServiceException;
 import com.mes.mapper.userInfo.UserMapper;
@@ -31,18 +30,18 @@
         System.out.println(cacheUtil.getCacheData("admin"));
         return userMapper.findAll();
     }
-    @ApiOperation("鐧诲綍")
-    @PostMapping("/login")
-    public Result login(@RequestBody UserDTO userDTO){
-        //UserDTO getUserCacheDTO = cacheUtil.getCacheData(userDTO.getUserId());
-        userService.deleteCache(userDTO.getUserId());
-        UserDTO getUserDTO=userService.login(userDTO);
-        if(getUserDTO!=null){
-            return Result.seccess(userDTO);
-        }else{
-            throw new ServiceException(Constants.Code_600,"鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒");
-        }
-    }
+    //@ApiOperation("鐧诲綍")
+   // @PostMapping("/login")
+//    public Result login(@RequestBody UserDTO userDTO){
+//        //UserDTO getUserCacheDTO = cacheUtil.getCacheData(userDTO.getUserId());
+//        userService.deleteCache(userDTO.getUserId());
+//        UserDTO getUserDTO=userService.login(userDTO);
+//        if(getUserDTO!=null){
+//            return Result.seccess(userDTO);
+//        }else{
+//            throw new ServiceException(Constants.Code_600,"鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒");
+//        }
+//    }
     @ApiOperation("娉ㄥ唽")
     @PostMapping("/register")
     public Result register(@RequestBody User user){
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/DownGlassInfo.java b/UnLoadGlassModule/src/main/java/com/mes/entity/DownGlassInfo.java
index 6630735..206e72d 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/entity/DownGlassInfo.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/entity/DownGlassInfo.java
@@ -15,5 +15,7 @@
     private Double width; // 瀹�
     private Double height; // 楂�
     private Double thickness; // 鍘氬害
+    private String filmsid;//鑶滅郴
+
 
 }
\ 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
index d9a2dfd..524d865 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/entity/DownWorkstation.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/entity/DownWorkstation.java
@@ -14,4 +14,7 @@
     private Integer deviceId; // 璁惧id
     private Integer enableState; // 鍚敤鐘舵��
     private Integer workState; // 宸ヤ綔鐘舵��
+    private Integer racks_number; // 宸茶惤鏋舵暟閲�
+    private Integer total_quantity; // 鎬绘暟閲�
+
 }
\ 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
index 5355db5..af3536c 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterObject.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterObject.java
@@ -15,6 +15,8 @@
     private int plcAddressLength;
     private ArrayList<PlcParameterInfo> plcParameterList;
 
+
+
     /**
      * @return 鏁版嵁鍖哄紑濮嬪湴鍧�
      */
@@ -199,4 +201,5 @@
     }
 
 
+
 }
\ 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
index 95ef927..dbd519c 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/mapper/DownGlassInfoMapper.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/mapper/DownGlassInfoMapper.java
@@ -4,12 +4,27 @@
 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.apache.ibatis.annotations.*;
 import org.springframework.stereotype.Repository;
+
+import java.util.List;
 
 @Mapper
 @Repository
 @InterceptorIgnore(tenantLine = "true")
 @DS("hangzhoumes") // 鎸囧畾浣跨敤 hangzhoumes 鏁版嵁婧�
 public interface DownGlassInfoMapper extends BaseMapper<DownGlassInfo> {
+
+    // 鏌ヨ涓嬬墖浠诲姟琛ㄤ腑鐘舵�佷负1鐨勪笅鐗囦俊鎭�
+    @Select("SELECT flow_card_id,filmsid,width,height,thickness FROM down_glass_task WHERE state = 1;")
+    List<DownGlassInfo> selectunloadingtaskstate();
+
+    @Update("UPDATE down_glass_task SET state = 0 WHERE flow_card_id = #{flowCardId}")
+    void updateTaskStateToZero(@Param("flowCardId") String flowCardId);
+
+    @Select("SELECT MAX(sequence) FROM down_glass_info WHERE flow_card_id = #{flowCardId} LIMIT 1")
+    Integer getMaxSequenceByFlowCardId(@Param("flowCardId") String flowCardId);
+
+    @Delete("delete  from down_glass_task where flow_card_id = #{flowCardId}")
+    void deletetask(@Param("flowCardId") String flowCardId);
 }
diff --git a/UnLoadGlassModule/src/main/java/com/mes/mapper/DownWorkstationMapper.java b/UnLoadGlassModule/src/main/java/com/mes/mapper/DownWorkstationMapper.java
index c48a549..163348d 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/mapper/DownWorkstationMapper.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/mapper/DownWorkstationMapper.java
@@ -3,14 +3,57 @@
 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 com.mes.entity.DownWorkstation;
-import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.*;
+import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 @Mapper
+@Component
 @Repository
 @InterceptorIgnore(tenantLine = "true")
 @DS("hangzhoumes") // 鎸囧畾浣跨敤 hangzhoumes 鏁版嵁婧�
 public interface DownWorkstationMapper extends BaseMapper<DownWorkstation> {
+//鏍规嵁宸ヤ綅ID鍜岃澶嘔D鏇存柊宸ヤ綅鐘舵��
+    @Update("UPDATE down_workstation SET work_state = #{workState} " +
+            "WHERE workstation_id = #{workstationId} AND device_id = #{deviceId}")
+    void updateWorkStateByWorkstationIdAndDeviceId(@Param("workstationId") Integer workstationId,
+                                                   @Param("deviceId") Integer deviceId,
+                                                   @Param("workState") Integer workState);
+//宸ヤ綅ID鍒犻櫎淇℃伅
+    @Delete("DELETE FROM down_workstation WHERE workstation_id = #{workstationId}")
+    void deleteByWorkstationId(@Param("workstationId") Integer workstationId);
+
+//钀芥灦
+    @Insert("INSERT INTO down_workstation (workstation_id, flow_card_id, device_id, enable_state, work_state) " +
+            "VALUES (#{workstationId}, #{flowCardId}, #{deviceId}, #{enableState}, #{workState})")
+    void insertDownWorkstation(DownWorkstation downWorkstation);
+
+//鏍规嵁璁惧ID鏌ヨ宸ヤ綅淇℃伅
+    @Select("SELECT * FROM down_workstation WHERE device_id = #{deviceId}")
+    List<DownWorkstation> selectByDeviceId(@Param("deviceId") Integer deviceId);
+//浠庢満姊版墜浠诲姟琛ㄦ煡璇㈢姸鎬佷负1鐨勬祦绋嬪崱鍙�
+//    @Select("SELECT *  FROM down_workstation_task WHERE state = 1")
+//    List<DownWorkstation> selectdownWorkstationstate();
+
+    @Select("SELECT dw.flow_card_id,dw.racks_number FROM down_workstation_task dwt JOIN down_workstation dw ON dwt.flow_card_id = dw.flow_card_id WHERE dwt.state = 1 LIMIT 1")
+    List<DownWorkstation> selectdownWorkstationstate();
+
+    @Update("UPDATE down_workstation SET racks_number = #{racksNumber} " +
+            "WHERE flow_card_id = #{flowCardId}")
+    void  update_racks_number(@Param("flowCardId") String flowCardId,
+                                   @Param("racksNumber") Integer racksNumber);
+
+
+    @Insert("INSERT INTO down_workstation_task (flow_card_id, width, height, thickness, filmsid,state) " +
+            "VALUES (#{flowCardId}, #{width}, #{height}, #{thickness}, #{filmsid},1)")
+    void insertdownWorkstationtask(DownGlassInfo downGlassInfo);
+
+
+
+
 
 }
diff --git a/UnLoadGlassModule/src/main/java/com/mes/mapper/userInfo/SysMenuItemMapper.java b/UnLoadGlassModule/src/main/java/com/mes/mapper/userInfo/SysMenuItemMapper.java
index 0bf0923..bdb183e 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/mapper/userInfo/SysMenuItemMapper.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/mapper/userInfo/SysMenuItemMapper.java
@@ -2,11 +2,12 @@
 
 import com.mes.entity.userInfo.SysMenuItem;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
 
 import java.util.List;
 
 @Mapper
 public interface SysMenuItemMapper {
-
+     @Select("select  * from sys_menu_item as a where a.state=1 order by a.listSort")
      List<SysMenuItem> findAll() ;
 }
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/DownGlassInfoService.java b/UnLoadGlassModule/src/main/java/com/mes/service/DownGlassInfoService.java
index 5f69be8..2cf4210 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/service/DownGlassInfoService.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/service/DownGlassInfoService.java
@@ -13,7 +13,10 @@
     @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
deleted file mode 100644
index 0909523..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/service/GlassHandler.java
+++ /dev/null
@@ -1,65 +0,0 @@
-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 889bd32..40af511 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/service/ModuleA.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/service/ModuleA.java
@@ -18,7 +18,10 @@
 //        receiver.sendMessageWithId(QUEUE_NAME, message, messageId); // 璋冪敤 sendMessageWithId 鏂规硶鍙戦�佹秷鎭�
         receiver.sendMessageWithId("hangzhou2", "Hello RabbitMQ!", "1");
         receiver.sendMessageWithId("hangzhou2", "Another message", "2");
-        receiver.sendMessageWithId("hangzhou2", "Yet another message", "1"); // 杩欐潯娑堟伅浼氭墦鍗伴噸澶嶆秷鎭殑閿欒淇℃伅
+        receiver.sendMessageWithId("hangzhou2", "Another message", "3");
+        receiver.sendMessageWithId("hangzhou2", "Another message", "4");
+        receiver.sendMessageWithId("hangzhou2", "Another message", "5");
+      //  receiver.sendMessageWithId("hangzhou2", "Yet another message", "1"); // 杩欐潯娑堟伅浼氭墦鍗伴噸澶嶆秷鎭殑閿欒淇℃伅
 
     }
 }
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/ModuleB.java b/UnLoadGlassModule/src/main/java/com/mes/service/ModuleB.java
index 75c2e16..2cd57e4 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/service/ModuleB.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/service/ModuleB.java
@@ -2,6 +2,8 @@
 
 import com.mes.common.RabbitMQUtils;
 
+import java.util.List;
+
 public class ModuleB {
     private final static String QUEUE_NAME = "hangzhou2";
 
@@ -13,10 +15,11 @@
 
         try {
 
-            receiver.consumeMessageById("2",QUEUE_NAME);
+            //receiver.consumeMessageById("5",QUEUE_NAME);
+
            // String receivedMessage = receiver.consumeSelectedMessage(1,QUEUE_NAME);
-//            String receivedMessage = String.valueOf(receiver.readMessages(QUEUE_NAME,false));
-          // System.out.println("Received message: " + receivedMessage);
+        List<String> receivedMessage = receiver.browseMessages(QUEUE_NAME);
+          System.out.println("Received message: " + receivedMessage);
         } catch (Exception e) {
             e.printStackTrace();
         }
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/PLCAutoMes.java b/UnLoadGlassModule/src/main/java/com/mes/service/PLCAutoMes.java
new file mode 100644
index 0000000..66e4cc9
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/service/PLCAutoMes.java
@@ -0,0 +1,91 @@
+package com.mes.service;
+
+import com.mes.entity.device.PlcParameterObject;
+import com.mes.tools.InitUtil;
+import org.springframework.context.annotation.Configuration;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import static com.mes.tools.InitUtil.readAndUpdateWordValues;
+
+public class PLCAutoMes extends Thread {
+
+    // 鐢ㄤ簬瀛樺偍搴旂敤绋嬪簭鐨勯厤缃俊鎭�
+    private Configuration config;
+    private static InitUtil initUtil;
+
+
+    // 鍗曚緥瀹炰緥
+    private static PLCAutoMes instance;
+    private static String PlcMes = PLCAutoMes.class.getResource("/JsonFile/PlcMes.json").getPath();
+    private static String PlcRead = PLCAutoMes.class.getResource("/JsonFile/PlcRead.json").getPath();
+    private static String Plcframe = PLCAutoMes.class.getResource("/JsonFile/Plcframe.json").getPath();
+//    private static String PlcParameter = PLCAutomaticParameterSettingReview2.class
+//            .getResource("/JsonFile/PlcParameter.json").getPath();
+//    private static String PlcSign = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcSign.json")
+//            .getPath();
+//    private static String PlcState = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcState.json")
+//            .getPath();
+    private static String PlcAlarm = PLCAutoMes.class.getResource("/JsonFile/PlcAlarm.json").getPath();
+   // private static String PlcTest = PLCAutoMes.class.getResource("/JsonFile/PlcTest.json").getPath();
+
+    // 璋冪敤initword鏂规硶
+
+//
+   // public static PlcBitObject plcPlcAlarm = initUtil.initbit(PlcAlarm);
+    public static PlcParameterObject PlcMesObject = initUtil.initword(PlcMes);
+    public static PlcParameterObject PlcReadObject = initUtil.initword(PlcRead);
+    public static PlcParameterObject PlcframeObject = initUtil.initword(Plcframe);
+
+    // 绉佹湁鏋勯�犲嚱鏁�
+    public PLCAutoMes() throws IOException {
+
+        initUtil = new InitUtil();
+    }
+
+    // 鑾峰彇鍗曚緥瀹炰緥
+    public static synchronized PLCAutoMes getInstance() throws IOException {
+        if (instance == null) {
+            instance = new PLCAutoMes();
+        }
+        return instance;
+    }
+
+    @Override
+    public void run() {
+        while (this != null) {
+            try {
+                Thread.sleep(100);
+
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+
+            // System.out.println(jsonFilePath);
+
+          // readAndUpdateWordValues(PlcReadObject);
+            readAndUpdateWordValues(PlcMesObject);
+//      readAndUpdateWordValues(PlcframeObject);
+            // readAndUpdateWordValues(PlcframeObject);
+
+            // readAndUpdateWordValues(plcStateObject);
+          //  int index = PlcMesObject.getPlcParameter("AddStart").getAddressIndex();
+            // System.out.println(index);
+          //  PlcMesObject.getPlcParameter("AddStart").getAddress(index);
+            // System.out.println(PlcMesObject.getPlcParameter("AddStart").getAddress(index));
+            List<String> addresses = new ArrayList<>();
+            addresses.add("FeedID");
+            addresses.add("AddStart");
+            // System.out.println(addresses);
+            // System.out.println(PlcMesObject.getPlcParameterValues(addresses));
+            List<String> addresses2 = new ArrayList<>();
+            addresses2.add("FeedID");
+            addresses2.add("FeedCarStatus");
+
+         //   System.out.println(PlcReadObject.getPlcParameterValues(addresses2));
+
+        }
+    }
+}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/PlcService.java b/UnLoadGlassModule/src/main/java/com/mes/service/PlcService.java
new file mode 100644
index 0000000..581cfe8
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/service/PlcService.java
@@ -0,0 +1,139 @@
+package com.mes.service;
+
+import com.mes.entity.DownGlassInfo;
+import com.mes.entity.DownStorageCageDetails;
+import com.mes.entity.DownWorkstation;
+import com.mes.entity.device.PlcParameterObject;
+import com.mes.mapper.DownGlassInfoMapper;
+import com.mes.mapper.DownWorkstationMapper;
+import com.mes.tools.WebSocketServer;
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+@Data
+@Service
+public class PlcService {
+
+    @Autowired
+    private DownWorkstationMapper downWorkstationMapper;
+    private DownGlassInfo downGlassInfo;
+    private DownWorkstation downWorkstation;
+    private DownGlassInfoMapper downGlassInfoMapper;
+
+    private DownGlassInfoService downGlassInfoService;
+
+
+
+
+
+    private List<DownGlassInfo> glassList; // 瀛樻斁寰呭鐞嗙殑鐜荤拑淇℃伅
+    private List<DownStorageCageDetails> cageDetailsList; // 瀛樻斁鐜荤拑鏀剧疆鍦ㄧ紦瀛樼涓殑璇︾粏淇℃伅
+    PlcParameterObject plcread=PLCAutoMes.PlcReadObject;
+    String Robot1PLCrequestword=plcread.getPlcParameter("A01Position").getValue();// 鏈烘鎵�1PLC璇锋眰瀛�
+    String Robot2PLCrequestword=plcread.getPlcParameter("A01Position").getValue();// 鏈烘鎵�2PLC璇锋眰瀛�
+    String GlassID=plcread.getPlcParameter("A01Position").getValue();// 鐜荤拑id
+    String Glasswidth=plcread.getPlcParameter("A01Position").getValue();//鐜荤拑瀹藉害
+    String Glassheight=plcread.getPlcParameter("A01Position").getValue();//鐜荤拑楂樺害
+    String Glassthickness=plcread.getPlcParameter("A01Position").getValue();//鍘氬害
+    String PLCwancheng = plcread.getPlcParameter("A01Position").getValue();// plc瀹屾垚瀛�
+
+
+    //褰撲笅鐗囦换鍔¤〃鐘舵�佷负1鏃跺�欏皢鏁版嵁鎻掑叆鍒颁笅鐗囩幓鐠冧俊鎭〃
+    public void insertdownglassinfo() {
+
+
+        downWorkstationMapper = WebSocketServer.applicationContext.getBean(DownWorkstationMapper.class);
+        downGlassInfoService = WebSocketServer.applicationContext.getBean(DownGlassInfoService.class);
+        downGlassInfoMapper = WebSocketServer.applicationContext.getBean(DownGlassInfoMapper.class);
+        List<DownGlassInfo> taskdownGlassInf = downGlassInfoMapper.selectunloadingtaskstate();
+//
+        if (taskdownGlassInf != null && !taskdownGlassInf.isEmpty()) {
+
+
+
+
+            for (DownGlassInfo downGlassInfo : taskdownGlassInf) {
+                // 鍒涘缓鏂扮殑 DownGlassInfo 瀵硅薄骞惰缃浉鍏冲睘鎬�
+                DownGlassInfo newdownGlassInfo = new DownGlassInfo();
+
+                newdownGlassInfo.setFlowCardId(downGlassInfo.getFlowCardId());
+                Integer maxSequence = downGlassInfoMapper.getMaxSequenceByFlowCardId(downGlassInfo.getFlowCardId());
+                int sequence = maxSequence != null ? maxSequence + 1 : 1; // 鍒濆鍖栭『搴忓瓧娈靛��
+
+                newdownGlassInfo.setWidth(downGlassInfo.getWidth());
+                newdownGlassInfo.setHeight(downGlassInfo.getHeight());
+                newdownGlassInfo.setThickness(downGlassInfo.getThickness());
+                newdownGlassInfo.setFilmsid(downGlassInfo.getFilmsid());
+                newdownGlassInfo.setSequence(sequence); // 璁剧疆椤哄簭瀛楁鍊�
+
+                // 鎻掑叆鏁版嵁鍒颁笅鐗囩幓鐠冧俊鎭〃
+                downGlassInfoMapper.insert(newdownGlassInfo);
+                //鎻掑叆鏁版嵁鍒版満姊版墜浠诲姟琛�
+                downWorkstationMapper.insertdownWorkstationtask(newdownGlassInfo);
+                //鏇存柊浠诲姟琛ㄧ姸鎬佷负0
+                downGlassInfoMapper.updateTaskStateToZero(downGlassInfo.getFlowCardId());
+
+                sequence++; // 閫掑椤哄簭瀛楁鍊�
+
+
+
+
+            }
+        }
+    }
+
+
+    //褰撴満姊版墜浠诲姟琛ㄤ腑鐘舵�佷负1锛屽伐浣嶈〃娴佺▼鍗$粦瀹氫簡鏋跺瓙 鏇存柊宸茬粡钀芥灦鏁伴噺锛屽苟涓旀妸涓嬬墖浠诲姟琛ㄧ殑瀵瑰簲璁板綍鍒犳帀
+    public void down_workstation(){
+
+        //downWorkstationMapper = WebSocketServer.applicationContext.getBean(DownWorkstationMapper.class);
+        //downGlassInfoMapper = WebSocketServer.applicationContext.getBean(DownGlassInfoMapper.class);
+        try {
+            List<DownWorkstation> taskdownWorkstation = downWorkstationMapper.selectdownWorkstationstate();
+            if (taskdownWorkstation != null && !taskdownWorkstation.isEmpty()) {
+                //鏌ヨ涓嬬墖宸ヤ綅琛ㄤ腑鏄惁缁戝畾浜嗘灦瀛愭槸鍚︾粦瀹氫簡娴佺▼鍗″彿锛屽鏋滃凡缁忕粦瀹氬垯鏇存柊宸茶惤鏋舵暟閲�,骞朵笖鍒犻櫎涓嬬墖浠诲姟琛ㄤ腑鐨勮褰�
+                for (DownWorkstation downWorkstation : taskdownWorkstation) {
+                    downWorkstationMapper.update_racks_number(downWorkstation.getFlowCardId(),6 );
+                    downGlassInfoMapper.deletetask(downWorkstation.getFlowCardId());
+
+                }
+            }
+        } catch (Exception e) {
+            // 鎵撳嵃寮傚父淇℃伅
+            e.printStackTrace();
+            // 鎴栬�呭彲浠ヨ繘琛屽叾浠栧紓甯稿鐞嗭紝姣斿璁板綍鏃ュ織鎴栬�呰繑鍥炵壒瀹氱殑閿欒淇℃伅
+        }
+
+
+    }
+
+
+
+    //缁戝畾娴佺▼鍗″彿鏋跺瓙
+    public void bindingshelf(DownWorkstation downWorkstation){
+
+        String FlowCardId=downWorkstation.getFlowCardId();
+        int WorkstationId=downWorkstation.getWorkstationId();
+
+
+
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/Plcaction.java b/UnLoadGlassModule/src/main/java/com/mes/service/Plcaction.java
index 5c39775..4268c38 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/service/Plcaction.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/service/Plcaction.java
@@ -1,20 +1,25 @@
 package com.mes.service;
 
+import com.mes.common.PlcTools.MockS7PLCtwo;
 import com.mes.entity.DownGlassInfo;
+import com.mes.mapper.DownWorkstationMapper;
+import com.mes.tools.WebSocketServer;
+import org.springframework.beans.factory.annotation.Autowired;
 
-import java.util.Collections;
+import java.util.ArrayList;
+import java.util.Arrays;
 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; //
+  @Autowired
+  private DownWorkstationMapper downWorkstationMapper;
+  private DownGlassInfo downGlassInfo; //
+  private DownGlassInfoService downGlassInfoService;
   private int i =1; //
+
+    //MockS7PLC mockS7PLC=new MockS7PLC();
   @Override
   public void run() {
     while (!Thread.currentThread().isInterrupted()) {
@@ -25,11 +30,74 @@
         Thread.currentThread().interrupt();
         e.printStackTrace();
       }
+      downWorkstationMapper = WebSocketServer.applicationContext.getBean(DownWorkstationMapper.class);
+      downGlassInfoService = WebSocketServer.applicationContext.getBean(DownGlassInfoService.class);
+      int workstationId = 1;
+      int deviceId = 2;
+      int newWorkState = 9;
+
+      downWorkstationMapper.updateWorkStateByWorkstationIdAndDeviceId(workstationId, deviceId, newWorkState);
+      downGlassInfo  = downGlassInfoService.getDownGlassInfoById(1); // 璁剧疆闇�瑕佹煡璇㈢殑id
+//   System.out.println("Down Glass Info in new thread: "+i + downGlassInfo);
+      Boolean[] value4 = { false, true, true, true, true, true, false, false, false,
+              false};
+     List<Boolean> booldata2 = new ArrayList<>(Arrays.asList(value4));
+       // MockS7PLCtwo.getInstance().writeBoolean("DB1.DBX0.0", false);
+       // MockS7PLCtwo.getInstance().writebits("DB4.0.0",booldata2);
+// 浠庣浉鍚岀殑鍦板潃璇诲彇甯冨皵鍊�
+      boolean value = MockS7PLCtwo.getInstance().readBoolean("DB1.DBX0.0");
+      Short[] values1 = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1};
+      Short[] values2 = { 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
+
+   List<Short> data = new ArrayList<>(Arrays.asList(values1));
+      List<Short> data2 = new ArrayList<>(Arrays.asList(values2));
+        List<String> addresses3 = new ArrayList<>();
+        addresses3.add("DB1.0.0");
+        addresses3.add("DB1.0.3");
+        addresses3.add("DB1.0.5");
+      List<String> addresses = new ArrayList<>();
+      addresses.add("DB100.0");
+      addresses.add("DB100.2");
+      addresses.add("DB100.4");
+      addresses.add("DB100.6");
+      addresses.add("DB100.26");
+      addresses.add("DB100.28");
+      addresses.add("DB100.30");
+      addresses.add("DB100.32");
+      addresses.add("DB100.34");
+      addresses.add("DB100.36");
 
 
 
-      downGlassInfo  = Collections.singletonList(downGlassInfoService.getDownGlassInfoById(1)); // 璁剧疆闇�瑕佹煡璇㈢殑id
-   System.out.println("Down Glass Info in new thread: "+i + downGlassInfo);
+      List<String> addresses2 = new ArrayList<>();
+      addresses2.add("DB101.0");
+      addresses2.add("DB101.2");
+      addresses2.add("DB101.4");
+      addresses2.add("DB101.6");
+      addresses2.add("DB101.8");
+      addresses2.add("DB101.10");
+      addresses2.add("DB101.12");
+      addresses2.add("DB101.14");
+      addresses2.add("DB101.16");
+      addresses2.add("DB101.18");
+//      mockPLC.writeword("DB100.2",data );
+        MockS7PLCtwo.getInstance().WriteWords(addresses, data);
+        MockS7PLCtwo.getInstance().WriteWords(addresses2, data2);
+  //DB100.2,DB100.4,DB100.6,DB100.28,DB100.30,DB100.32,DB100.36,DB100.38,DB100.40
+
+  List<Short> data5= MockS7PLCtwo.getInstance().readwords("DB104.0", 9);
+      List<Short> data3= MockS7PLCtwo.getInstance().ReadWords(addresses);
+      List<Boolean> data4= MockS7PLCtwo.getInstance().readbits("DB4.0.0",10);
+
+        List<Boolean> data6= MockS7PLCtwo.getInstance().readBits(addresses3);
+    //  System.out.println("璇诲彇鐨勫竷灏斿��: " + value); // 搴旇杈撳嚭 true
+     // System.out.println("璇诲彇鐨剋ord鍊�: " + data3);
+      System.out.println("璇诲彇鐨剋ord鍊�: " + data4);
+//        System.out.println("璇诲彇鐨刡it鍊�: " + data4);
+//        System.out.println("璇诲彇鐨刡it鍊�: " + data6);
+
+
+     //   System.out.println("璇诲彇鐨剋ord鍊�: " + MockS7PLCtwo.getInstance().readInt16("DB5.0.0"));
     }
   }
 }
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/Plchome.java b/UnLoadGlassModule/src/main/java/com/mes/service/Plchome.java
new file mode 100644
index 0000000..eba16ae
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/service/Plchome.java
@@ -0,0 +1,44 @@
+package com.mes.service;
+
+import com.mes.tools.WebSocketServer;
+import org.springframework.stereotype.Component;
+
+import java.util.function.Supplier;
+
+@Component
+public class Plchome extends Thread {
+    private int i = 1;
+    private final Supplier<PlcService> plcServiceSupplier;
+
+    public Plchome() {
+        this.plcServiceSupplier = () -> WebSocketServer.applicationContext.getBean(PlcService.class);
+    }
+
+
+
+    @Override
+    public void run() {
+        while (!Thread.currentThread().isInterrupted()) {
+            try {
+                i++;
+                Thread.sleep(100);
+                PlcService plcService = plcServiceSupplier.get();
+               // plcService.performPlcActions();
+                //plcService.unloadpush();
+
+                //褰撲笅鐗囦换鍔¤〃鐘舵�佷负1鏃跺�欏皢鏁版嵁鎻掑叆鍒颁笅鐗囩幓鐠冧俊鎭〃
+                plcService.insertdownglassinfo();
+
+
+
+                //褰撴満姊版墜浠诲姟琛ㄤ腑鐘舵�佷负1 鏇存柊宸茬粡钀芥灦鏁伴噺锛屽苟涓旀妸涓嬬墖浠诲姟琛ㄧ殑閭f潯璁板綍鍒犳帀 宸ヤ綅琛ㄦ祦绋嬪崱缁戝畾浜嗘灦瀛�
+                plcService.down_workstation();
+
+
+            } catch (InterruptedException e) {
+                Thread.currentThread().interrupt();
+                e.printStackTrace();
+            }
+        }
+    }
+}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/SysErrorService.java b/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/SysErrorService.java
index 004399b..9940470 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/SysErrorService.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/SysErrorService.java
@@ -7,7 +7,7 @@
 import org.springframework.stereotype.Service;
 
 @Service
-@DS("user_info")
+@DS("hangzhoumes")
 public class SysErrorService {
     private final SysErrorMapper sysErrorMapper;
 
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/SysMenuItemService.java b/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/SysMenuItemService.java
index 6efd838..ee38452 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/SysMenuItemService.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/SysMenuItemService.java
@@ -9,7 +9,7 @@
 import java.util.List;
 
 @Service
-@DS("user_info")
+@DS("hangzhoumes")
 public class SysMenuItemService {
     @Autowired
     SysMenuItemMapper sysMenuItemMapper;
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/SysMenuService.java b/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/SysMenuService.java
index 278b057..55f8fc6 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/SysMenuService.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/SysMenuService.java
@@ -9,7 +9,7 @@
 import java.util.List;
 
 @Service
-@DS("user_info")
+@DS("hangzhoumes")
 public class SysMenuService {
     @Autowired
     private SysMenuMapper sysMenuMapper;
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/UserService.java b/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/UserService.java
index 08fb8dd..e172f10 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/UserService.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/service/userInfo/UserService.java
@@ -2,23 +2,18 @@
 
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.dynamic.datasource.annotation.DS;
-import com.mes.common.CacheUtil;
-import com.mes.common.Result;
+import com.mes.controller.dto.UserDTO;
 import com.mes.entity.userInfo.User;
 import com.mes.mapper.userInfo.UserMapper;
-import com.mes.controller.dto.UserDTO;
 import com.mes.tools.TokenTools;
-import org.apache.ibatis.jdbc.Null;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.List;
-
 @Service
-@DS("user_info")
+@DS("hangzhoumes")
 public class UserService {
 
     @Autowired
diff --git a/UnLoadGlassModule/src/main/java/com/mes/tools/InitUtil.java b/UnLoadGlassModule/src/main/java/com/mes/tools/InitUtil.java
index 90c8a30..30d75ae 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/tools/InitUtil.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/tools/InitUtil.java
@@ -2,7 +2,6 @@
 
 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;
@@ -11,6 +10,8 @@
 import java.io.BufferedReader;
 import java.io.FileReader;
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 public class InitUtil {
@@ -107,18 +108,18 @@
 //
     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());
+        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());
+         byte[] getplcvlues = {0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03,0x03};
+       // byte[] getplcvlues = MockS7PLC.getInstance().readByte(plcParameterObject.getPlcAddressBegin(), plcParameterObject.getPlcAddressLength());
         plcParameterObject.setPlcParameterList(getplcvlues);
     }
 
diff --git a/UnLoadGlassModule/src/main/resources/JsonFile/PlcAlarm.json b/UnLoadGlassModule/src/main/resources/JsonFile/PlcAlarm.json
new file mode 100644
index 0000000..a840092
--- /dev/null
+++ b/UnLoadGlassModule/src/main/resources/JsonFile/PlcAlarm.json
@@ -0,0 +1,371 @@
+{
+  "plcAddressBegin": "DB104.0.0",
+  "plcAddressLenght": "91",
+  "dataType": "bit",
+  "parameteInfor": [
+    {
+      "codeId": "D01VFDerror",
+      "addressIndex": 0
+    },
+    {
+      "codeId": "D02VFDerror",
+      "addressIndex": 1
+    },
+    {
+      "codeId": "D03VFDerror",
+      "addressIndex": 2
+    },
+    {
+      "codeId": "D04VFDerror",
+      "addressIndex": 3
+    },
+    {
+      "codeId": "D05VFDerror",
+      "addressIndex": 4
+    },
+    {
+      "codeId": "D06VFDerror",
+      "addressIndex": 5
+    },
+    {
+      "codeId": "B01VFDerror",
+      "addressIndex": 6
+    },
+    {
+      "codeId": "B02VFDerror",
+      "addressIndex": 7
+    },
+    {
+      "codeId": "A01VFDerror",
+      "addressIndex": 8
+    },
+    {
+      "codeId": "A02VFDerror",
+      "addressIndex": 9
+    },
+    {
+      "codeId": "A01servoturnerror",
+      "addressIndex": 10
+    },
+    {
+      "codeId": "A02servoturnerror",
+      "addressIndex": 11
+    },
+    {
+      "codeId": "A01servotravelerror",
+      "addressIndex": 12
+    },
+    {
+      "codeId": "A02servotravelerror",
+      "addressIndex": 13
+    },
+    {
+      "codeId": "B01servotravelerror",
+      "addressIndex": 14
+    },
+    {
+      "codeId": "B02servotravelerror",
+      "addressIndex": 15
+    },
+    {
+      "codeId": "D01DECerror",
+      "addressIndex": 16
+    },
+    {
+      "codeId": "D01poserror",
+      "addressIndex": 17
+    },
+    {
+      "codeId": "D02DECerror",
+      "addressIndex": 18
+    },
+    {
+      "codeId": "D02poserror",
+      "addressIndex": 19
+    },
+    {
+      "codeId": "D03DECerror",
+      "addressIndex": 20
+    },
+    {
+      "codeId": "D03poserror",
+      "addressIndex": 21
+    },
+    {
+      "codeId": "D04DECerror",
+      "addressIndex": 22
+    },
+    {
+      "codeId": "D04poserror",
+      "addressIndex": 23
+    },
+    {
+      "codeId": "D05DECerror",
+      "addressIndex": 24
+    },
+    {
+      "codeId": "D05poserror",
+      "addressIndex": 25
+    },
+    {
+      "codeId": "D06DECerror",
+      "addressIndex": 26
+    },
+    {
+      "codeId": "D06poserror",
+      "addressIndex": 27
+    },
+    {
+      "codeId": "A01DECerror",
+      "addressIndex": 28
+    },
+    {
+      "codeId": "A01poserror",
+      "addressIndex": 29
+    },
+    {
+      "codeId": "A02DECerror",
+      "addressIndex": 30
+    },
+    {
+      "codeId": "A02poserror",
+      "addressIndex": 31
+    },
+    {
+      "codeId": "B01INDECerror",
+      "addressIndex": 32
+    },
+    {
+      "codeId": "B01INposerror",
+      "addressIndex": 33
+    },
+    {
+      "codeId": "B01OUTDECerror",
+      "addressIndex": 34
+    },
+    {
+      "codeId": "B01OUTposerror",
+      "addressIndex": 35
+    },
+    {
+      "codeId": "B02INDECerror",
+      "addressIndex": 36
+    },
+    {
+      "codeId": "B02INposerror",
+      "addressIndex": 37
+    },
+    {
+      "codeId": "B02OUTDECerror",
+      "addressIndex": 38
+    },
+    {
+      "codeId": "B02OUTposerror",
+      "addressIndex": 39
+    },
+    {
+      "codeId": "D01Scanglassexceedinglimit",
+      "addressIndex": 40
+    },
+    {
+      "codeId": "emergencystopalarm",
+      "addressIndex": 41
+    },
+    {
+      "codeId": "Moreglassthanknown",
+      "addressIndex": 42
+    },
+    {
+      "codeId": "lessglassthanknown",
+      "addressIndex": 43
+    },
+    {
+      "codeId": "D01conveyortimeoutalarm",
+      "addressIndex": 44
+    },
+    {
+      "codeId": "D02conveyortimeoutalarm",
+      "addressIndex": 45
+    },
+    {
+      "codeId": "D03conveyortimeoutalarm",
+      "addressIndex": 46
+    },
+    {
+      "codeId": "D04conveyortimeoutalarm",
+      "addressIndex": 47
+    },
+    {
+      "codeId": "D05conveyortimeoutalarm",
+      "addressIndex": 48
+    },
+    {
+      "codeId": "D06conveyortimeoutalarm",
+      "addressIndex": 49
+    },
+    {
+      "codeId": "A01conveyortimeoutalarm",
+      "addressIndex": 50
+    },
+    {
+      "codeId": "A02conveyortimeoutalarm",
+      "addressIndex": 51
+    },
+    {
+      "codeId": "B01conveyortimeoutalarm",
+      "addressIndex": 52
+    },
+    {
+      "codeId": "B02conveyortimeoutalarm",
+      "addressIndex": 53
+    },
+    {
+      "codeId": "A01conveyorLeftsafetyalarm",
+      "addressIndex": 54
+    },
+    {
+      "codeId": "A01conveyorrightsafetyalarm",
+      "addressIndex": 55
+    },
+    {
+      "codeId": "A02conveyorLeftsafetyalarm",
+      "addressIndex": 56
+    },
+    {
+      "codeId": "A02conveyorrightsafetyalarm",
+      "addressIndex": 57
+    },
+    {
+      "codeId": "1#buffersafetyalarm",
+      "addressIndex": 58
+    },
+    {
+      "codeId": "2#buffersafetyalarm",
+      "addressIndex": 59
+    },
+    {
+      "codeId": "3#buffersafetyalarm",
+      "addressIndex": 60
+    },
+    {
+      "codeId": "4#buffersafetyalarm",
+      "addressIndex": 61
+    },
+    {
+      "codeId": "A01.SRrightinposerror",
+      "addressIndex": 62
+    },
+    {
+      "codeId": "A02.SRleftinposerror",
+      "addressIndex": 63
+    },
+    {
+      "codeId": "B01.SRleftinposerror",
+      "addressIndex": 64
+    },
+    {
+      "codeId": "B01.SRleftdecerror",
+      "addressIndex": 65
+    },
+    {
+      "codeId": "B01.SRrightdecerror",
+      "addressIndex": 66
+    },
+    {
+      "codeId": "B01.SRrightinposerror",
+      "addressIndex": 67
+    },
+    {
+      "codeId": "B02.SRleftinposerror",
+      "addressIndex": 68
+    },
+    {
+      "codeId": "B02.SRleftdecerror",
+      "addressIndex": 69
+    },
+    {
+      "codeId": "B02.SRrightdecerror",
+      "addressIndex": 70
+    },
+    {
+      "codeId": "B02.SRrightinposerror",
+      "addressIndex": 71
+    },
+    {
+      "codeId": "A01servoturnhomed",
+      "addressIndex": 72
+    },
+    {
+      "codeId": "A02servoturnhomed",
+      "addressIndex": 73
+    },
+    {
+      "codeId": "A01servotravelhomed",
+      "addressIndex": 74
+    },
+    {
+      "codeId": "A02servotravelhomed",
+      "addressIndex": 75
+    },
+    {
+      "codeId": "B01servotravelhomed",
+      "addressIndex": 76
+    },
+    {
+      "codeId": "B02servotravelhomed",
+      "addressIndex": 77
+    },
+    {
+      "codeId": "resetDelay",
+      "addressIndex": 78
+    },
+    {
+      "codeId": "A01travelNegativelimit",
+      "addressIndex": 79
+    },
+    {
+      "codeId": "A01travelPositivelimit",
+      "addressIndex": 80
+    },
+    {
+      "codeId": "A01turnuplimit",
+      "addressIndex": 81
+    },
+    {
+      "codeId": "A01turndownlimit",
+      "addressIndex": 82
+    },
+    {
+      "codeId": "A02travelNegativelimit",
+      "addressIndex": 83
+    },
+    {
+      "codeId": "A02travelPositivelimit",
+      "addressIndex": 84
+    },
+    {
+      "codeId": "A02turnuplimit",
+      "addressIndex": 85
+    },
+    {
+      "codeId": "A02turndownlimit",
+      "addressIndex": 86
+    },
+    {
+      "codeId": "B01travelNegativelimit",
+      "addressIndex": 87
+    },
+    {
+      "codeId": "B01travelPositivelimit",
+      "addressIndex": 88
+    },
+    {
+      "codeId": "B02travelNegativelimit",
+      "addressIndex": 89
+    },
+    {
+      "codeId": "B02travelPositivelimit",
+      "addressIndex": 90
+    }
+  ]
+}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/resources/JsonFile/PlcMes.json b/UnLoadGlassModule/src/main/resources/JsonFile/PlcMes.json
new file mode 100644
index 0000000..ab5d4cd
--- /dev/null
+++ b/UnLoadGlassModule/src/main/resources/JsonFile/PlcMes.json
@@ -0,0 +1,50 @@
+{
+   "plcAddressBegin":"DB105.0",
+   "plcAddressLenght":"12",
+   "dataType":"word",
+   "parameteInfor":[
+      {
+         "codeId": "OutActivate",
+         "addressIndex":"0",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+          "codeId": "Addgoal",
+          "addressIndex":"2",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"m/min"      
+       },
+       {
+          "codeId": "AddLength",
+          "addressIndex":"4",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"m/min"       
+       },
+       {
+          "codeId": "AddWidth",
+          "addressIndex":"6",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "AddCount",
+          "addressIndex":"8",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "OutStart",
+          "addressIndex":"10",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       }
+
+   ]
+}
diff --git a/UnLoadGlassModule/src/main/resources/JsonFile/PlcParameter.json b/UnLoadGlassModule/src/main/resources/JsonFile/PlcParameter.json
new file mode 100644
index 0000000..afbe090
--- /dev/null
+++ b/UnLoadGlassModule/src/main/resources/JsonFile/PlcParameter.json
@@ -0,0 +1,610 @@
+{
+   "plcAddressBegin":"DB100.0",
+   "plcAddressLenght":"198",
+   "dataType":"word",
+   "parameteInfor":[
+      {
+         "codeId": "conveyorVelocity(Max)",
+         "addressIndex":"0",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+          "codeId": "conveyorVelocity(AutoFAST)",
+          "addressIndex":"2",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"m/min"      
+       },
+       {
+          "codeId": "conveyorVelocity(AutoSLOW)",
+          "addressIndex":"4",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"m/min"       
+       },
+       {
+          "codeId": "conveyorVelocity(Manual)",
+          "addressIndex":"6",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "A01A02TURNJOGVelocity",
+          "addressIndex":"8",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "A01A02TRAVELJOGVelocity",
+          "addressIndex":"10",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "B01B02TRAVELJOGVelocity",
+          "addressIndex":"12",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "A01A02TURNPOSVelocityAUTO",
+          "addressIndex":"14",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "A01TURNPOSVelocitymanual",
+          "addressIndex":"16",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+         "codeId": "A01A02TRAVELPOSVelocityAUTO",
+         "addressIndex":"18",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },
+     {
+       "codeId": "A01TRAVELPOSVelocitymanual",
+       "addressIndex":"20",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm/S"
+     },
+     {
+       "codeId": "B01B02TRAVELPOSVelocityAUTO",
+       "addressIndex":"22",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm/S"
+     },
+     {
+       "codeId": "B01TRAVELPOSVelocitymanual",
+       "addressIndex":"24",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm/S"
+     },
+     {
+       "codeId": "A01A02conveyorVelocity(Max)",
+       "addressIndex":"26",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"m/min"
+     },
+     {
+       "codeId": "A01A02conveyorVelocity(AutoFAST)",
+       "addressIndex":"28",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"m/min"
+     },
+     {
+       "codeId": "A01A02conveyorVelocity(AutoSLOW)",
+       "addressIndex":"30",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"m/min"
+     },
+     {
+       "codeId": "B01B02conveyorVelocity(Manual)",
+       "addressIndex":"32",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"m/min"
+     },
+     {
+       "codeId": "B01B02conveyorVelocity(Max)",
+       "addressIndex":"34",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"m/min"
+     },
+     {
+       "codeId": "B01B02conveyorVelocity(AutoFAST)",
+       "addressIndex":"36",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"m/min"
+     },
+     {
+       "codeId": "B01B02conveyorVelocity(AutoSLOW)",
+       "addressIndex":"38",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"m/min"
+     },
+     {
+       "codeId": "B01B02conveyorVelocity(Manual)",
+       "addressIndex":"40",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"m/min"
+     },
+     {
+       "codeId": "gridspacing",
+       "addressIndex":"42",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A01Spliceaddresssetting",
+       "addressIndex":"44",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A02Spliceaddresssetting",
+       "addressIndex":"46",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A011#gridaddress",
+       "addressIndex":"48",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A0122#gridaddress",
+       "addressIndex":"50",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A0143#gridaddress",
+       "addressIndex":"52",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A0164#gridaddress",
+       "addressIndex":"54",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A0185#gridaddress",
+       "addressIndex":"56",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A01106#gridaddress",
+       "addressIndex":"58",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A01127#gridaddress",
+       "addressIndex":"60",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A01148#gridaddress",
+       "addressIndex":"62",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A01169#gridaddress",
+       "addressIndex":"64",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A01190#gridaddress",
+       "addressIndex":"66",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A021#gridaddress",
+       "addressIndex":"68",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A0222#gridaddress",
+       "addressIndex":"70",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A0243#gridaddress",
+       "addressIndex":"72",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A0264#gridaddress",
+       "addressIndex":"74",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A0285#gridaddress",
+       "addressIndex":"76",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A02106#gridaddress",
+       "addressIndex":"78",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A02127#gridaddress",
+       "addressIndex":"80",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A02148#gridaddress",
+       "addressIndex":"82",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A02169#gridaddress",
+       "addressIndex":"84",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A02190#gridaddress",
+       "addressIndex":"86",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "B011#gridaddress",
+       "addressIndex":"88",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "B0122#gridaddress",
+       "addressIndex":"90",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "B0143#gridaddress",
+       "addressIndex":"92",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "B0164#gridaddress",
+       "addressIndex":"94",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "B0185#gridaddress",
+       "addressIndex":"96",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "B02106#gridaddress",
+       "addressIndex":"98",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "B02127#gridaddress",
+       "addressIndex":"100",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "B02148#gridaddress",
+       "addressIndex":"102",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "B02169#gridaddress",
+       "addressIndex":"104",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "B02190#gridaddress",
+       "addressIndex":"106",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A01Targetgrid(Manual)",
+       "addressIndex":"108",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": " A02Targetgrid(Manual)",
+       "addressIndex":"110",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "B01Targetgrid(Manual)",
+       "addressIndex":"112",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "B02Targetgrid(Manual)",
+       "addressIndex":"114",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "A01turnTargetAngle(Manual)",
+       "addressIndex":"116",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"掳"
+     },
+     {
+       "codeId": "A02turnTargetAngle(Manual)",
+       "addressIndex":"118",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"掳"
+     },
+     {
+       "codeId": "A01turnAngle1",
+       "addressIndex":"120",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"掳"
+     },
+     {
+       "codeId": "A01turnAngle2",
+       "addressIndex":"122",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"掳"
+     },
+     {
+       "codeId": "A01turnAngle3",
+       "addressIndex":"124",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"掳"
+     },
+     {
+       "codeId": "A01turnAngle4",
+       "addressIndex":"126",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"掳"
+     },
+     {
+       "codeId": "A02turnAngle1",
+       "addressIndex":"128",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"掳"
+     },
+     {
+       "codeId": "A02turnAngle2",
+       "addressIndex":"130",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"掳"
+     },
+     {
+       "codeId": "A02turnAngle3",
+       "addressIndex":"132",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"掳"
+     },
+     {
+       "codeId": "A02turnAngle4",
+       "addressIndex":"134",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"掳"
+     },
+     {
+       "codeId": "Minimumglasslength",
+       "addressIndex":"136",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "Minimumglassheight",
+       "addressIndex":"138",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "Maximumglasslength",
+       "addressIndex":"140",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "Maximumglassheight",
+       "addressIndex":"142",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "A01cellsGlassNum",
+       "addressIndex":"144",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "A02cellsGlassNum",
+       "addressIndex":"146",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "A01ID",
+       "addressIndex":"148",
+       "addressLenght":"14",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "A02ID",
+       "addressIndex":"162",
+       "addressLenght":"14",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "A02TRAVELPOSVelocitymanual",
+       "addressIndex":"176",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "B02TRAVELPOSVelocitymanual",
+       "addressIndex":"178",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "Startingpositionofthefeedca",
+       "addressIndex":"180",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "Targetpositionofthefeedcar",
+       "addressIndex":"182",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "Lengthofincomingglass",
+       "addressIndex":"184",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "Widthofincomingglass",
+       "addressIndex":"186",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "Startingpositionoftheexitcar",
+       "addressIndex":"188",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     }, {
+       "codeId": "Exitcartargetposition",
+       "addressIndex":"190",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     }
+     , {
+       "codeId": "A02TURNPOSVelocitymanual",
+       "addressIndex":"192",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     }
+     , {
+       "codeId": "A01delayTime",
+       "addressIndex":"194",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     }
+
+
+   ]
+}
diff --git a/UnLoadGlassModule/src/main/resources/JsonFile/PlcRead.json b/UnLoadGlassModule/src/main/resources/JsonFile/PlcRead.json
new file mode 100644
index 0000000..f3ebb33
--- /dev/null
+++ b/UnLoadGlassModule/src/main/resources/JsonFile/PlcRead.json
@@ -0,0 +1,195 @@
+{
+   "plcAddressBegin": "DB106.0",
+   "plcAddressLenght": "66",
+   "dataType": "word",
+   "parameteInfor": [{
+         "codeId": "A01Position",
+         "addressIndex": "0",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "A01FlipPosition",
+         "addressIndex": "2",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "A01QuestStartPosition",
+         "addressIndex": "4",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "A01EndPosition",
+         "addressIndex": "6",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "FeedCarStatus",
+         "addressIndex": "8",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "A02QuestOver",
+         "addressIndex": "10",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "A02Position",
+         "addressIndex": "12",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "A02FlipPosition",
+         "addressIndex": "14",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "A02QuestStartPosition",
+         "addressIndex": "16",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "A02EndPosition",
+         "addressIndex": "18",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "ExitCarStatus",
+         "addressIndex": "20",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "A02QuestOver",
+         "addressIndex": "22",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "FeedRequest",
+         "addressIndex": "24",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "FeedID",
+         "addressIndex": "26",
+         "addressLenght":"14", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "B01Position",
+         "addressIndex": "40",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "B01QuestPosition",
+         "addressIndex": "42",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "B01CurrentTaskMode",
+         "addressIndex": "44",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "B01CarStatus",
+         "addressIndex": "46",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "B01CarTaskStatus",
+         "addressIndex": "48",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "B02Position",
+         "addressIndex": "50",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "B02CarCurrentTask",
+         "addressIndex": "52",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "B02CurrentTaskMode",
+         "addressIndex": "54",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "B02CarStatus",
+         "addressIndex": "56",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "B02CarSaskStatus",
+         "addressIndex": "58",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "B01CompleteTheReport",
+         "addressIndex": "60",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "B02CompleteTheReport",
+         "addressIndex": "62",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "OutRequest",
+         "addressIndex": "64",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      }
+   ]
+}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/resources/JsonFile/PlcSign.json b/UnLoadGlassModule/src/main/resources/JsonFile/PlcSign.json
new file mode 100644
index 0000000..8f9295a
--- /dev/null
+++ b/UnLoadGlassModule/src/main/resources/JsonFile/PlcSign.json
@@ -0,0 +1,460 @@
+{
+  "plcAddressBegin": "DB102.0.0",
+  "plcAddressLenght": "112",
+  "dataType": "bit",
+  "parameteInfor": [
+    {
+      "codeId": "D01.SRdec",
+      "addressIndex": 0
+    },
+    {
+      "codeId": "D01.SRinpos",
+      "addressIndex": 1
+    },
+    {
+      "codeId": "D02.SRdec",
+      "addressIndex": 2
+    },
+    {
+      "codeId": "D02.SRinpos",
+      "addressIndex": 3
+    },
+    {
+      "codeId": "D03.SRinto",
+      "addressIndex": 4
+    },
+    {
+      "codeId": "D03.SRdec",
+      "addressIndex": 5
+    },
+    {
+      "codeId": "D03.SRinpos",
+      "addressIndex": 6
+    },
+    {
+      "codeId": "D04.SRdec",
+      "addressIndex": 7
+    },
+    {
+      "codeId": "D04.SRinpos",
+      "addressIndex": 8
+    },
+    {
+      "codeId": "D05.SRdec",
+      "addressIndex": 9
+    },
+    {
+      "codeId": "D05.SRinpos",
+      "addressIndex": 10
+    },
+    {
+      "codeId": "D06.SRdec",
+      "addressIndex": 11
+    },
+    {
+      "codeId": "D06.SRinpos",
+      "addressIndex": 12
+    },
+    {
+      "codeId": "B01.SRindec",
+      "addressIndex": 13
+    },
+    {
+      "codeId": "B01.SRininpos",
+      "addressIndex": 14
+    },
+    {
+      "codeId": "B01.SRoutdec",
+      "addressIndex": 15
+    },
+    {
+      "codeId": "B01.SRoutinpos",
+      "addressIndex": 16
+    },
+    {
+      "codeId": "B01.SRturnon",
+      "addressIndex": 17
+    },
+    {
+      "codeId": "B01.SRturnoff",
+      "addressIndex": 18
+    },
+    {
+      "codeId": "B01.SRup",
+      "addressIndex": 19
+    },
+    {
+      "codeId": "B01.SRdown",
+      "addressIndex": 20
+    },
+    {
+      "codeId": "B02.SRoutdec",
+      "addressIndex": 21
+    },
+    {
+      "codeId": "B02.SRoutinpos",
+      "addressIndex": 22
+    },
+    {
+      "codeId": "B02.SRindec",
+      "addressIndex": 23
+    },
+    {
+      "codeId": "B02.SRininpos",
+      "addressIndex": 24
+    },
+    {
+      "codeId": "B02.SRturnon",
+      "addressIndex": 25
+    },
+    {
+      "codeId": "B02.SRturnoff",
+      "addressIndex": 26
+    },
+    {
+      "codeId": "B02.SRup",
+      "addressIndex": 27
+    },
+    {
+      "codeId": "B02.SRdown",
+      "addressIndex": 28
+    },
+    {
+      "codeId": "B01.SRinsafety",
+      "addressIndex": 29
+    },
+    {
+      "codeId": "B01.SRoutsafety",
+      "addressIndex": 30
+    },
+    {
+      "codeId": "B02.SRinsafety",
+      "addressIndex": 31
+    },
+    {
+      "codeId": "SB.start(+)",
+      "addressIndex": 32
+    },
+    {
+      "codeId": "SB.stop(-)",
+      "addressIndex": 33
+    },
+    {
+      "codeId": "SB.reset",
+      "addressIndex": 34
+    },
+    {
+      "codeId": "SB.auto/manul",
+      "addressIndex": 35
+    },
+    {
+      "codeId": "D01.SB.confirm",
+      "addressIndex": 36
+    },
+    {
+      "codeId": "SB.emg",
+      "addressIndex": 37
+    },
+    {
+      "codeId": "D01.SB.start",
+      "addressIndex": 38
+    },
+    {
+      "codeId": "D06.SB.start",
+      "addressIndex": 39
+    },
+    {
+      "codeId": "B02.SRoutsafety",
+      "addressIndex": 40
+    },
+    {
+      "codeId": "SafetyDoor.requset",
+      "addressIndex": 41
+    },
+    {
+      "codeId": "SafetyDoor.confirm",
+      "addressIndex": 42
+    },
+    {
+      "codeId": "SafetyDoor.reset",
+      "addressIndex": 43
+    },
+    {
+      "codeId": "Sspce",
+      "addressIndex": 44
+    },
+    {
+      "codeId": "Sspce",
+      "addressIndex": 45
+    },
+    {
+      "codeId": "Sspce",
+      "addressIndex": 46
+    },
+    {
+      "codeId": "Sspce",
+      "addressIndex": 47
+    },
+    {
+      "codeId": "A01.SRleftdec",
+      "addressIndex": 48
+    },
+    {
+      "codeId": "A01.SRleftinpos",
+      "addressIndex": 49
+    },
+    {
+      "codeId": "A01.SRleftsafety",
+      "addressIndex": 50
+    },
+    {
+      "codeId": "A01.SRrightdec",
+      "addressIndex": 51
+    },
+    {
+      "codeId": "A01.SRrightinpos",
+      "addressIndex": 52
+    },
+    {
+      "codeId": "A01.SRrightsafety",
+      "addressIndex": 53
+    },
+    {
+      "codeId": "A01.SRturnhome",
+      "addressIndex": 54
+    },
+    {
+      "codeId": "A01.SRturnup",
+      "addressIndex": 55
+    },
+    {
+      "codeId": "A01.SRturndown",
+      "addressIndex": 56
+    },
+    {
+      "codeId": "A01.SRtravelhome",
+      "addressIndex": 57
+    },
+    {
+      "codeId": "A01.SRtravelleftdec",
+      "addressIndex": 58
+    },
+    {
+      "codeId": "A01.SRtravelleftlimit",
+      "addressIndex": 59
+    },
+    {
+      "codeId": "A01.SRtravelrightdec",
+      "addressIndex": 60
+    },
+    {
+      "codeId": "A01.SRtravelrightlimit",
+      "addressIndex": 61
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 62
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 63
+    },
+    {
+      "codeId": "A02.SRleftdec",
+      "addressIndex": 64
+    },
+    {
+      "codeId": "A02.SRleftinpos",
+      "addressIndex": 65
+    },
+    {
+      "codeId": "A02.SRleftsafety",
+      "addressIndex": 66
+    },
+    {
+      "codeId": "A02.SRrightdec",
+      "addressIndex": 67
+    },
+    {
+      "codeId": "A02.SRrightinpos",
+      "addressIndex": 68
+    },
+    {
+      "codeId": "A02.SRrightsafety",
+      "addressIndex": 69
+    },
+    {
+      "codeId": "A02.SRturnhome",
+      "addressIndex": 70
+    },
+    {
+      "codeId": "A02.SRturnup",
+      "addressIndex": 71
+    },
+    {
+      "codeId": "A02.SRturndown",
+      "addressIndex": 72
+    },
+    {
+      "codeId": "A02.SRtravelhome",
+      "addressIndex": 73
+    },
+    {
+      "codeId": "A02.SRtravelleftdec",
+      "addressIndex": 74
+    },
+    {
+      "codeId": "A02.SRtravelleftlimit",
+      "addressIndex": 75
+    },
+    {
+      "codeId": "A02.SRtravelrightdec",
+      "addressIndex": 76
+    },
+    {
+      "codeId": "A02.SRtravelrightlimit",
+      "addressIndex": 77
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 78
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 79
+    },
+    {
+      "codeId": "B01.SRorigin",
+      "addressIndex": 80
+    },
+    {
+      "codeId": "B01.SRleftlimit",
+      "addressIndex": 81
+    },
+    {
+      "codeId": "B01.SRrightlimit",
+      "addressIndex": 82
+    },
+    {
+      "codeId": "B02.SRorigin",
+      "addressIndex": 83
+    },
+    {
+      "codeId": "B02.SRleftlimit",
+      "addressIndex": 84
+    },
+    {
+      "codeId": "B02.SRrightlimit",
+      "addressIndex": 85
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 86
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 87
+    },
+    {
+      "codeId": "LED.red",
+      "addressIndex": 88
+    },
+    {
+      "codeId": "LED.green",
+      "addressIndex": 89
+    },
+    {
+      "codeId": "LED.yellow",
+      "addressIndex": 90
+    },
+    {
+      "codeId": "D01.LED.green",
+      "addressIndex": 91
+    },
+    {
+      "codeId": "D06.LED.green",
+      "addressIndex": 92
+    },
+    {
+      "codeId": "B01.YV.turn",
+      "addressIndex": 93
+    },
+    {
+      "codeId": "B01.YV.updown",
+      "addressIndex": 94
+    },
+    {
+      "codeId": "B01.YV.gassing",
+      "addressIndex": 95
+    },
+    {
+      "codeId": "B02.YV.turn",
+      "addressIndex": 96
+    },
+    {
+      "codeId": "B02.YV.updown",
+      "addressIndex": 97
+    },
+    {
+      "codeId": "B02.YV.gassing",
+      "addressIndex": 98
+    },
+    {
+      "codeId": "SafetyDoor.Led",
+      "addressIndex": 99
+    },
+    {
+      "codeId": "SafetyDoor.open",
+      "addressIndex": 100
+    },
+    {
+      "codeId": "D01SB.confirm",
+      "addressIndex": 101
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 102
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 103
+    },
+    {
+      "codeId": "A01oilPump",
+      "addressIndex": 104
+    },
+    {
+      "codeId": "A01motorCtr",
+      "addressIndex": 105
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 106
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 107
+    },
+    {
+      "codeId": "A02oilPump",
+      "addressIndex": 108
+    },
+    {
+      "codeId": "A02motorCtr",
+      "addressIndex": 109
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 110
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 111
+    }
+    ,
+    {
+      "codeId": "space",
+      "addressIndex": 111
+    }
+  ]
+}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/resources/JsonFile/PlcState.json b/UnLoadGlassModule/src/main/resources/JsonFile/PlcState.json
new file mode 100644
index 0000000..dfdbaec
--- /dev/null
+++ b/UnLoadGlassModule/src/main/resources/JsonFile/PlcState.json
@@ -0,0 +1,285 @@
+{
+  "plcAddressBegin": "DB103.0",
+  "plcAddressLenght": "258",
+  "dataType": "word",
+  "parameteInfor": [
+    {
+      "codeId": "D01.State",
+      "addressIndex": "0",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "D02.State",
+      "addressIndex": "2",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "B01.State",
+      "addressIndex": "4",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "B02.State",
+      "addressIndex": "6",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "A01.State",
+      "addressIndex": "8",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "A02.State",
+      "addressIndex": "10",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "D03.State",
+      "addressIndex": "12",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "D04.State",
+      "addressIndex": "14",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "D05.State",
+      "addressIndex": "16",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "D06.State",
+      "addressIndex": "18",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "A01tavelActualPosition",
+      "addressIndex": "20",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "A01turnActualangle",
+      "addressIndex": "22",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "A02tavelActualPosition",
+      "addressIndex": "24",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "A02turnActualangle",
+      "addressIndex": "26",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "B01tavelActualPosition",
+      "addressIndex": "28",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "B02tavelActualPosition",
+      "addressIndex": "30",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "A01CurrentGrid",
+      "addressIndex": "32",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "A02CurrentGrid",
+      "addressIndex": "34",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "B01CurrentGrid",
+      "addressIndex": "36",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "B01TargetGrid",
+      "addressIndex": "38",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "B02CurrentGrid",
+      "addressIndex": "40",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "B02TargetGrid",
+      "addressIndex": "42",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "D01ID",
+      "addressIndex": "44",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "D02ID",
+      "addressIndex": "58",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "D03ID",
+      "addressIndex": "72",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "D04ID",
+      "addressIndex": "86",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "D05ID",
+      "addressIndex": "100",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "D06ID",
+      "addressIndex": "114",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "A01ID1",
+      "addressIndex": "128",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "A01ID2",
+      "addressIndex": "142",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "A02ID1",
+      "addressIndex": "156",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "A02ID2",
+      "addressIndex": "170",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "B01ID1",
+      "addressIndex": "184",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "B01ID2",
+      "addressIndex": "198",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "B02ID1",
+      "addressIndex": "212",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "B02ID2",
+      "addressIndex": "226",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "A01conveyorFaultcodes",
+      "addressIndex": "240",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "A01turnservoFaultcodes",
+      "addressIndex": "242",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "A01travelservoFaultcodes",
+      "addressIndex": "244",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "A02conveyorFaultcodes",
+      "addressIndex": "246",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "A02turnservoFaultcodes",
+      "addressIndex": "248",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "A02travelservoFaultcodes",
+      "addressIndex": "250",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "B01travelservoFaultcodes",
+      "addressIndex": "252",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "B02travelservoFaultcodes",
+      "addressIndex": "254",
+      "addressLenght": "2",
+      "unit": ""
+    }
+    ,
+    {
+      "codeId": "Scanningguns",
+      "addressIndex": "256",
+      "addressLenght": "2",
+      "unit": ""
+    }
+    ,
+    {
+      "codeId": "Frameid",
+      "addressIndex": "270",
+      "addressLenght": "2",
+      "unit": ""
+    }
+  ]
+}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/resources/JsonFile/PlcTest.json b/UnLoadGlassModule/src/main/resources/JsonFile/PlcTest.json
new file mode 100644
index 0000000..263c782
--- /dev/null
+++ b/UnLoadGlassModule/src/main/resources/JsonFile/PlcTest.json
@@ -0,0 +1,378 @@
+{
+  "plcAddressBegin": "DB101.0.0",
+  "plcAddressLenght": "93",
+  "dataType": "bit",
+  "parameteInfor": [
+    {
+      "codeId": "D01VFDconveyor",
+      "addressIndex": 0
+    },
+    {
+      "codeId": "D02VFDconveyor",
+      "addressIndex": 1
+    },
+    {
+      "codeId": "D03VFDconveyor",
+      "addressIndex": 2
+    },
+    {
+      "codeId": "D04VFDconveyor",
+      "addressIndex": 3
+    },
+    {
+      "codeId": "D05VFDconveyor",
+      "addressIndex": 4
+    },
+    {
+      "codeId": "D06VFDconveyor",
+      "addressIndex": 5
+    },
+    {
+      "codeId": "A01VFDconveyor",
+      "addressIndex": 6
+    },
+    {
+      "codeId": "A02VFDconveyor",
+      "addressIndex": 7
+    },
+    {
+      "codeId": "B01VFDconveyor",
+      "addressIndex": 8
+    },
+    {
+      "codeId": "B02VFDconveyor",
+      "addressIndex": 9
+    },
+    {
+      "codeId": "A01SERVETURN",
+      "addressIndex": 10
+    },
+    {
+      "codeId": "A02SERVETURN",
+      "addressIndex": 11
+    },
+    {
+      "codeId": "A01SERVETRAVEL",
+      "addressIndex": 12
+    },
+    {
+      "codeId": "A02SERVETRAVEL",
+      "addressIndex": 13
+    },
+    {
+      "codeId": "B01SERVETRAVEL",
+      "addressIndex": 14
+    },
+    {
+      "codeId": "B02SERVETRAVEL",
+      "addressIndex": 15
+    },
+    {
+      "codeId": "A01SERVETURNPOS",
+      "addressIndex": 16
+    },
+    {
+      "codeId": "A02SERVETURNPOS",
+      "addressIndex": 17
+    },
+    {
+      "codeId": "A01SERVETRAVELPOS",
+      "addressIndex": 18
+    },
+    {
+      "codeId": "A02SERVETRAVELPOS",
+      "addressIndex": 19
+    },
+    {
+      "codeId": "B01SERVETRAVELPOS",
+      "addressIndex": 20
+    },
+    {
+      "codeId": "B02SERVETRAVELPOS",
+      "addressIndex": 21
+    },
+    {
+      "codeId": "B01YVTURN",
+      "addressIndex": 22
+    },
+    {
+      "codeId": "B01YVUPDOWN",
+      "addressIndex": 23
+    },
+    {
+      "codeId": "B02YVTURN",
+      "addressIndex": 24
+    },
+    {
+      "codeId": "B02YVUPDOWN",
+      "addressIndex": 25
+    },
+    {
+      "codeId": "B01YVGassing",
+      "addressIndex": 26
+    },
+    {
+      "codeId": "B02YVGassing",
+      "addressIndex": 27
+    },
+    {
+      "codeId": "A01VFDconveyorreverse",
+      "addressIndex": 28
+    },
+    {
+      "codeId": "A02VFDconveyorreverse",
+      "addressIndex": 29
+    },
+    {
+      "codeId": "A01SERVETURNreset",
+      "addressIndex": 30
+    },
+    {
+      "codeId": "A01SERVETURNhome",
+      "addressIndex": 31
+    },
+    {
+      "codeId": "A01SERVETRAVELreset",
+      "addressIndex": 32
+    },
+    {
+      "codeId": "A02SERVETURNreset",
+      "addressIndex": 33
+    },
+    {
+      "codeId": "A02SERVETURNhome",
+      "addressIndex": 34
+    },
+    {
+      "codeId": "A02SERVETRAVELreset",
+      "addressIndex": 35
+    },
+    {
+      "codeId": "B01SERVETRAVELreset",
+      "addressIndex": 36
+    },
+    {
+      "codeId": "B01SERVETRAVELhome",
+      "addressIndex": 37
+    },
+    {
+      "codeId": "B02SERVETRAVELreset",
+      "addressIndex": 38
+    },
+    {
+      "codeId": "B02SERVETRAVELhome",
+      "addressIndex": 39
+    },
+    {
+      "codeId": "Manualstoragestartup",
+      "addressIndex": 40
+    },
+    {
+      "codeId": "Manualoutputstartup",
+      "addressIndex": 41
+    },
+    {
+      "codeId": "A01oilpump",
+      "addressIndex": 42
+    },
+    {
+      "codeId": "A02oilpump",
+      "addressIndex": 43
+    },
+    {
+      "codeId": "A01get1#gridaddress",
+      "addressIndex": 44
+    },
+    {
+      "codeId": "A01get22#gridaddress",
+      "addressIndex": 45
+    },
+    {
+      "codeId": "A01get43#gridaddress",
+      "addressIndex": 46
+    },
+    {
+      "codeId": "A01get64#gridaddress",
+      "addressIndex": 47
+    },
+    {
+      "codeId": "A01get85#gridaddress",
+      "addressIndex": 48
+    },
+    {
+      "codeId": "A01get106#gridaddress",
+      "addressIndex": 49
+    },
+    {
+      "codeId": "A01get127#gridaddress",
+      "addressIndex": 50
+    },
+    {
+      "codeId": "A01get148#gridaddress",
+      "addressIndex": 51
+    },
+    {
+      "codeId": "A01get169#gridaddress",
+      "addressIndex": 52
+    },
+    {
+      "codeId": "A02get190#gridaddress",
+      "addressIndex": 53
+    },
+    {
+      "codeId": "A02get1#gridaddress",
+      "addressIndex": 54
+    },
+    {
+      "codeId": "A02get22#gridaddress",
+      "addressIndex": 55
+    },
+    {
+      "codeId": "A02get43#gridaddress",
+      "addressIndex": 56
+    },
+    {
+      "codeId": "A02get64#gridaddress",
+      "addressIndex": 57
+    },
+    {
+      "codeId": "A02get85#gridaddress",
+      "addressIndex": 58
+    },
+    {
+      "codeId": "A02get106#gridaddress",
+      "addressIndex": 59
+    },
+    {
+      "codeId": "A02get127#gridaddress",
+      "addressIndex": 60
+    },
+    {
+      "codeId": "A02get148#gridaddress",
+      "addressIndex": 61
+    },
+    {
+      "codeId": "A02get169#gridaddress",
+      "addressIndex": 62
+    },
+    {
+      "codeId": "A02get190#gridaddress",
+      "addressIndex": 63
+    },
+    {
+      "codeId": "B01get1#gridaddress",
+      "addressIndex": 64
+    },
+    {
+      "codeId": "B01get22#gridaddress",
+      "addressIndex": 65
+    },
+    {
+      "codeId": "B01get43#gridaddress",
+      "addressIndex": 66
+    },
+    {
+      "codeId": "B01get64#gridaddress",
+      "addressIndex": 67
+    },
+    {
+      "codeId": "B01get85#gridaddress",
+      "addressIndex": 68
+    },
+    {
+      "codeId": "B02get106#gridaddress",
+      "addressIndex": 69
+    },
+    {
+      "codeId": "B02get127#gridaddress",
+      "addressIndex": 70
+    },
+    {
+      "codeId": "B02get148#gridaddress",
+      "addressIndex": 71
+    },
+    {
+      "codeId": "B02get169#gridaddress",
+      "addressIndex": 72
+    },
+    {
+      "codeId": "B02get190#gridaddress",
+      "addressIndex": 73
+    },
+    {
+      "codeId": "D01IDClean",
+      "addressIndex": 74
+    },
+    {
+      "codeId": "D02IDClean",
+      "addressIndex": 75
+    },
+    {
+      "codeId": "D03IDClean",
+      "addressIndex": 76
+    },
+    {
+      "codeId": "D04IDClean",
+      "addressIndex": 77
+    },
+    {
+      "codeId": "D05IDClean",
+      "addressIndex": 78
+    },
+    {
+      "codeId": "D06IDClean",
+      "addressIndex": 79
+    },
+    {
+      "codeId": "A01IDClean",
+      "addressIndex": 80
+    },
+    {
+      "codeId": "A02IDClean",
+      "addressIndex": 81
+    },
+    {
+      "codeId": "B01IDClean",
+      "addressIndex": 82
+    },
+    {
+      "codeId": "B02IDClean",
+      "addressIndex": 83
+    },
+    {
+      "codeId": "abort/resumeTasks",
+      "addressIndex": 84
+    },
+    {
+      "codeId": "A01SERVETRAVELhome",
+      "addressIndex": 85
+    },
+    {
+      "codeId": "A02SERVETRAVELhome",
+      "addressIndex": 86
+    },
+    {
+      "codeId": "A01A02travelHoming",
+      "addressIndex": 87
+    },
+    {
+      "codeId": "A01halfAutoSelect",
+      "addressIndex": 88
+    },
+    {
+      "codeId": "A02halfAutoSelect",
+      "addressIndex": 89
+    },
+    {
+      "codeId": "A02abortTasks",
+      "addressIndex": 90
+    },
+    {
+      "codeId": "emgHMI",
+      "addressIndex": 91
+    },
+    {
+      "codeId": "Scanningmethod",
+      "addressIndex": 92
+  ]
+}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/resources/JsonFile/Plcframe.json b/UnLoadGlassModule/src/main/resources/JsonFile/Plcframe.json
new file mode 100644
index 0000000..c270227
--- /dev/null
+++ b/UnLoadGlassModule/src/main/resources/JsonFile/Plcframe.json
@@ -0,0 +1,51 @@
+{
+   "plcAddressBegin":"DB17.0",
+   "plcAddressLenght":"40",
+   "dataType":"word",
+   "parameteInfor":[
+      {
+         "codeId": "E01id",  
+         "addressIndex":"0",
+         "addressLenght":"14", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+          "codeId": "E01Quest",
+          "addressIndex":"16",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"m/min"      
+       },
+       {
+          "codeId": "E01Reply",
+          "addressIndex":"18",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"m/min"       
+       },
+       {
+          "codeId": "J01Quest",
+          "addressIndex":"20",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "J01id",
+          "addressIndex":"22",
+          "addressLenght":"14",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "J01TurnGo",
+          "addressIndex":"38",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       }
+
+
+   ]
+}
diff --git a/UnLoadGlassModule/src/main/resources/JsonFile/alarm.xlsx b/UnLoadGlassModule/src/main/resources/JsonFile/alarm.xlsx
new file mode 100644
index 0000000..50b26dc
--- /dev/null
+++ b/UnLoadGlassModule/src/main/resources/JsonFile/alarm.xlsx
Binary files differ
diff --git a/UnLoadGlassModule/src/main/resources/JsonFile/sign.xlsx b/UnLoadGlassModule/src/main/resources/JsonFile/sign.xlsx
new file mode 100644
index 0000000..3922301
--- /dev/null
+++ b/UnLoadGlassModule/src/main/resources/JsonFile/sign.xlsx
Binary files differ
diff --git a/UnLoadGlassModule/src/main/resources/JsonFile/test.xlsx b/UnLoadGlassModule/src/main/resources/JsonFile/test.xlsx
new file mode 100644
index 0000000..9862cf5
--- /dev/null
+++ b/UnLoadGlassModule/src/main/resources/JsonFile/test.xlsx
Binary files differ
diff --git a/UnLoadGlassModule/src/main/resources/application.yml b/UnLoadGlassModule/src/main/resources/application.yml
index 7a2e2be..8ba75c8 100644
--- a/UnLoadGlassModule/src/main/resources/application.yml
+++ b/UnLoadGlassModule/src/main/resources/application.yml
@@ -1,20 +1,16 @@
 
 server:
-  port: 8080
+  port: 8081
   servlet:
    context-path: /mesModuleTools
 
 spring:
   datasource:
     dynamic:
-      primary: user_info #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
       strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
       datasource:
-        user_info:
-          url: jdbc:mysql://10.153.19.150:3306/erp_user_info?serverTimezone=GMT%2b8
-          username: root
-          password: beibo.123/
-          driver-class-name: com.mysql.cj.jdbc.Driver
+
         hangzhoumes:
             url: jdbc:mysql://10.153.19.150:3306/hangzhoumes?serverTimezone=GMT%2b8
             username: root
diff --git a/UnLoadGlassModule/target/classes/JsonFile/PlcAlarm.json b/UnLoadGlassModule/target/classes/JsonFile/PlcAlarm.json
new file mode 100644
index 0000000..a840092
--- /dev/null
+++ b/UnLoadGlassModule/target/classes/JsonFile/PlcAlarm.json
@@ -0,0 +1,371 @@
+{
+  "plcAddressBegin": "DB104.0.0",
+  "plcAddressLenght": "91",
+  "dataType": "bit",
+  "parameteInfor": [
+    {
+      "codeId": "D01VFDerror",
+      "addressIndex": 0
+    },
+    {
+      "codeId": "D02VFDerror",
+      "addressIndex": 1
+    },
+    {
+      "codeId": "D03VFDerror",
+      "addressIndex": 2
+    },
+    {
+      "codeId": "D04VFDerror",
+      "addressIndex": 3
+    },
+    {
+      "codeId": "D05VFDerror",
+      "addressIndex": 4
+    },
+    {
+      "codeId": "D06VFDerror",
+      "addressIndex": 5
+    },
+    {
+      "codeId": "B01VFDerror",
+      "addressIndex": 6
+    },
+    {
+      "codeId": "B02VFDerror",
+      "addressIndex": 7
+    },
+    {
+      "codeId": "A01VFDerror",
+      "addressIndex": 8
+    },
+    {
+      "codeId": "A02VFDerror",
+      "addressIndex": 9
+    },
+    {
+      "codeId": "A01servoturnerror",
+      "addressIndex": 10
+    },
+    {
+      "codeId": "A02servoturnerror",
+      "addressIndex": 11
+    },
+    {
+      "codeId": "A01servotravelerror",
+      "addressIndex": 12
+    },
+    {
+      "codeId": "A02servotravelerror",
+      "addressIndex": 13
+    },
+    {
+      "codeId": "B01servotravelerror",
+      "addressIndex": 14
+    },
+    {
+      "codeId": "B02servotravelerror",
+      "addressIndex": 15
+    },
+    {
+      "codeId": "D01DECerror",
+      "addressIndex": 16
+    },
+    {
+      "codeId": "D01poserror",
+      "addressIndex": 17
+    },
+    {
+      "codeId": "D02DECerror",
+      "addressIndex": 18
+    },
+    {
+      "codeId": "D02poserror",
+      "addressIndex": 19
+    },
+    {
+      "codeId": "D03DECerror",
+      "addressIndex": 20
+    },
+    {
+      "codeId": "D03poserror",
+      "addressIndex": 21
+    },
+    {
+      "codeId": "D04DECerror",
+      "addressIndex": 22
+    },
+    {
+      "codeId": "D04poserror",
+      "addressIndex": 23
+    },
+    {
+      "codeId": "D05DECerror",
+      "addressIndex": 24
+    },
+    {
+      "codeId": "D05poserror",
+      "addressIndex": 25
+    },
+    {
+      "codeId": "D06DECerror",
+      "addressIndex": 26
+    },
+    {
+      "codeId": "D06poserror",
+      "addressIndex": 27
+    },
+    {
+      "codeId": "A01DECerror",
+      "addressIndex": 28
+    },
+    {
+      "codeId": "A01poserror",
+      "addressIndex": 29
+    },
+    {
+      "codeId": "A02DECerror",
+      "addressIndex": 30
+    },
+    {
+      "codeId": "A02poserror",
+      "addressIndex": 31
+    },
+    {
+      "codeId": "B01INDECerror",
+      "addressIndex": 32
+    },
+    {
+      "codeId": "B01INposerror",
+      "addressIndex": 33
+    },
+    {
+      "codeId": "B01OUTDECerror",
+      "addressIndex": 34
+    },
+    {
+      "codeId": "B01OUTposerror",
+      "addressIndex": 35
+    },
+    {
+      "codeId": "B02INDECerror",
+      "addressIndex": 36
+    },
+    {
+      "codeId": "B02INposerror",
+      "addressIndex": 37
+    },
+    {
+      "codeId": "B02OUTDECerror",
+      "addressIndex": 38
+    },
+    {
+      "codeId": "B02OUTposerror",
+      "addressIndex": 39
+    },
+    {
+      "codeId": "D01Scanglassexceedinglimit",
+      "addressIndex": 40
+    },
+    {
+      "codeId": "emergencystopalarm",
+      "addressIndex": 41
+    },
+    {
+      "codeId": "Moreglassthanknown",
+      "addressIndex": 42
+    },
+    {
+      "codeId": "lessglassthanknown",
+      "addressIndex": 43
+    },
+    {
+      "codeId": "D01conveyortimeoutalarm",
+      "addressIndex": 44
+    },
+    {
+      "codeId": "D02conveyortimeoutalarm",
+      "addressIndex": 45
+    },
+    {
+      "codeId": "D03conveyortimeoutalarm",
+      "addressIndex": 46
+    },
+    {
+      "codeId": "D04conveyortimeoutalarm",
+      "addressIndex": 47
+    },
+    {
+      "codeId": "D05conveyortimeoutalarm",
+      "addressIndex": 48
+    },
+    {
+      "codeId": "D06conveyortimeoutalarm",
+      "addressIndex": 49
+    },
+    {
+      "codeId": "A01conveyortimeoutalarm",
+      "addressIndex": 50
+    },
+    {
+      "codeId": "A02conveyortimeoutalarm",
+      "addressIndex": 51
+    },
+    {
+      "codeId": "B01conveyortimeoutalarm",
+      "addressIndex": 52
+    },
+    {
+      "codeId": "B02conveyortimeoutalarm",
+      "addressIndex": 53
+    },
+    {
+      "codeId": "A01conveyorLeftsafetyalarm",
+      "addressIndex": 54
+    },
+    {
+      "codeId": "A01conveyorrightsafetyalarm",
+      "addressIndex": 55
+    },
+    {
+      "codeId": "A02conveyorLeftsafetyalarm",
+      "addressIndex": 56
+    },
+    {
+      "codeId": "A02conveyorrightsafetyalarm",
+      "addressIndex": 57
+    },
+    {
+      "codeId": "1#buffersafetyalarm",
+      "addressIndex": 58
+    },
+    {
+      "codeId": "2#buffersafetyalarm",
+      "addressIndex": 59
+    },
+    {
+      "codeId": "3#buffersafetyalarm",
+      "addressIndex": 60
+    },
+    {
+      "codeId": "4#buffersafetyalarm",
+      "addressIndex": 61
+    },
+    {
+      "codeId": "A01.SRrightinposerror",
+      "addressIndex": 62
+    },
+    {
+      "codeId": "A02.SRleftinposerror",
+      "addressIndex": 63
+    },
+    {
+      "codeId": "B01.SRleftinposerror",
+      "addressIndex": 64
+    },
+    {
+      "codeId": "B01.SRleftdecerror",
+      "addressIndex": 65
+    },
+    {
+      "codeId": "B01.SRrightdecerror",
+      "addressIndex": 66
+    },
+    {
+      "codeId": "B01.SRrightinposerror",
+      "addressIndex": 67
+    },
+    {
+      "codeId": "B02.SRleftinposerror",
+      "addressIndex": 68
+    },
+    {
+      "codeId": "B02.SRleftdecerror",
+      "addressIndex": 69
+    },
+    {
+      "codeId": "B02.SRrightdecerror",
+      "addressIndex": 70
+    },
+    {
+      "codeId": "B02.SRrightinposerror",
+      "addressIndex": 71
+    },
+    {
+      "codeId": "A01servoturnhomed",
+      "addressIndex": 72
+    },
+    {
+      "codeId": "A02servoturnhomed",
+      "addressIndex": 73
+    },
+    {
+      "codeId": "A01servotravelhomed",
+      "addressIndex": 74
+    },
+    {
+      "codeId": "A02servotravelhomed",
+      "addressIndex": 75
+    },
+    {
+      "codeId": "B01servotravelhomed",
+      "addressIndex": 76
+    },
+    {
+      "codeId": "B02servotravelhomed",
+      "addressIndex": 77
+    },
+    {
+      "codeId": "resetDelay",
+      "addressIndex": 78
+    },
+    {
+      "codeId": "A01travelNegativelimit",
+      "addressIndex": 79
+    },
+    {
+      "codeId": "A01travelPositivelimit",
+      "addressIndex": 80
+    },
+    {
+      "codeId": "A01turnuplimit",
+      "addressIndex": 81
+    },
+    {
+      "codeId": "A01turndownlimit",
+      "addressIndex": 82
+    },
+    {
+      "codeId": "A02travelNegativelimit",
+      "addressIndex": 83
+    },
+    {
+      "codeId": "A02travelPositivelimit",
+      "addressIndex": 84
+    },
+    {
+      "codeId": "A02turnuplimit",
+      "addressIndex": 85
+    },
+    {
+      "codeId": "A02turndownlimit",
+      "addressIndex": 86
+    },
+    {
+      "codeId": "B01travelNegativelimit",
+      "addressIndex": 87
+    },
+    {
+      "codeId": "B01travelPositivelimit",
+      "addressIndex": 88
+    },
+    {
+      "codeId": "B02travelNegativelimit",
+      "addressIndex": 89
+    },
+    {
+      "codeId": "B02travelPositivelimit",
+      "addressIndex": 90
+    }
+  ]
+}
\ No newline at end of file
diff --git a/UnLoadGlassModule/target/classes/JsonFile/PlcMes.json b/UnLoadGlassModule/target/classes/JsonFile/PlcMes.json
new file mode 100644
index 0000000..ab5d4cd
--- /dev/null
+++ b/UnLoadGlassModule/target/classes/JsonFile/PlcMes.json
@@ -0,0 +1,50 @@
+{
+   "plcAddressBegin":"DB105.0",
+   "plcAddressLenght":"12",
+   "dataType":"word",
+   "parameteInfor":[
+      {
+         "codeId": "OutActivate",
+         "addressIndex":"0",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+          "codeId": "Addgoal",
+          "addressIndex":"2",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"m/min"      
+       },
+       {
+          "codeId": "AddLength",
+          "addressIndex":"4",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"m/min"       
+       },
+       {
+          "codeId": "AddWidth",
+          "addressIndex":"6",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "AddCount",
+          "addressIndex":"8",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "OutStart",
+          "addressIndex":"10",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       }
+
+   ]
+}
diff --git a/UnLoadGlassModule/target/classes/JsonFile/PlcParameter.json b/UnLoadGlassModule/target/classes/JsonFile/PlcParameter.json
new file mode 100644
index 0000000..afbe090
--- /dev/null
+++ b/UnLoadGlassModule/target/classes/JsonFile/PlcParameter.json
@@ -0,0 +1,610 @@
+{
+   "plcAddressBegin":"DB100.0",
+   "plcAddressLenght":"198",
+   "dataType":"word",
+   "parameteInfor":[
+      {
+         "codeId": "conveyorVelocity(Max)",
+         "addressIndex":"0",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+          "codeId": "conveyorVelocity(AutoFAST)",
+          "addressIndex":"2",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"m/min"      
+       },
+       {
+          "codeId": "conveyorVelocity(AutoSLOW)",
+          "addressIndex":"4",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"m/min"       
+       },
+       {
+          "codeId": "conveyorVelocity(Manual)",
+          "addressIndex":"6",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "A01A02TURNJOGVelocity",
+          "addressIndex":"8",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "A01A02TRAVELJOGVelocity",
+          "addressIndex":"10",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "B01B02TRAVELJOGVelocity",
+          "addressIndex":"12",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "A01A02TURNPOSVelocityAUTO",
+          "addressIndex":"14",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "A01TURNPOSVelocitymanual",
+          "addressIndex":"16",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+         "codeId": "A01A02TRAVELPOSVelocityAUTO",
+         "addressIndex":"18",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },
+     {
+       "codeId": "A01TRAVELPOSVelocitymanual",
+       "addressIndex":"20",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm/S"
+     },
+     {
+       "codeId": "B01B02TRAVELPOSVelocityAUTO",
+       "addressIndex":"22",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm/S"
+     },
+     {
+       "codeId": "B01TRAVELPOSVelocitymanual",
+       "addressIndex":"24",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm/S"
+     },
+     {
+       "codeId": "A01A02conveyorVelocity(Max)",
+       "addressIndex":"26",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"m/min"
+     },
+     {
+       "codeId": "A01A02conveyorVelocity(AutoFAST)",
+       "addressIndex":"28",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"m/min"
+     },
+     {
+       "codeId": "A01A02conveyorVelocity(AutoSLOW)",
+       "addressIndex":"30",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"m/min"
+     },
+     {
+       "codeId": "B01B02conveyorVelocity(Manual)",
+       "addressIndex":"32",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"m/min"
+     },
+     {
+       "codeId": "B01B02conveyorVelocity(Max)",
+       "addressIndex":"34",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"m/min"
+     },
+     {
+       "codeId": "B01B02conveyorVelocity(AutoFAST)",
+       "addressIndex":"36",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"m/min"
+     },
+     {
+       "codeId": "B01B02conveyorVelocity(AutoSLOW)",
+       "addressIndex":"38",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"m/min"
+     },
+     {
+       "codeId": "B01B02conveyorVelocity(Manual)",
+       "addressIndex":"40",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"m/min"
+     },
+     {
+       "codeId": "gridspacing",
+       "addressIndex":"42",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A01Spliceaddresssetting",
+       "addressIndex":"44",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A02Spliceaddresssetting",
+       "addressIndex":"46",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A011#gridaddress",
+       "addressIndex":"48",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A0122#gridaddress",
+       "addressIndex":"50",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A0143#gridaddress",
+       "addressIndex":"52",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A0164#gridaddress",
+       "addressIndex":"54",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A0185#gridaddress",
+       "addressIndex":"56",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A01106#gridaddress",
+       "addressIndex":"58",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A01127#gridaddress",
+       "addressIndex":"60",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A01148#gridaddress",
+       "addressIndex":"62",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A01169#gridaddress",
+       "addressIndex":"64",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A01190#gridaddress",
+       "addressIndex":"66",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A021#gridaddress",
+       "addressIndex":"68",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A0222#gridaddress",
+       "addressIndex":"70",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A0243#gridaddress",
+       "addressIndex":"72",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A0264#gridaddress",
+       "addressIndex":"74",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A0285#gridaddress",
+       "addressIndex":"76",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A02106#gridaddress",
+       "addressIndex":"78",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A02127#gridaddress",
+       "addressIndex":"80",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A02148#gridaddress",
+       "addressIndex":"82",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A02169#gridaddress",
+       "addressIndex":"84",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A02190#gridaddress",
+       "addressIndex":"86",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "B011#gridaddress",
+       "addressIndex":"88",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "B0122#gridaddress",
+       "addressIndex":"90",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "B0143#gridaddress",
+       "addressIndex":"92",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "B0164#gridaddress",
+       "addressIndex":"94",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "B0185#gridaddress",
+       "addressIndex":"96",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "B02106#gridaddress",
+       "addressIndex":"98",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "B02127#gridaddress",
+       "addressIndex":"100",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "B02148#gridaddress",
+       "addressIndex":"102",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "B02169#gridaddress",
+       "addressIndex":"104",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "B02190#gridaddress",
+       "addressIndex":"106",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"mm"
+     },
+     {
+       "codeId": "A01Targetgrid(Manual)",
+       "addressIndex":"108",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": " A02Targetgrid(Manual)",
+       "addressIndex":"110",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "B01Targetgrid(Manual)",
+       "addressIndex":"112",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "B02Targetgrid(Manual)",
+       "addressIndex":"114",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "A01turnTargetAngle(Manual)",
+       "addressIndex":"116",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"掳"
+     },
+     {
+       "codeId": "A02turnTargetAngle(Manual)",
+       "addressIndex":"118",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"掳"
+     },
+     {
+       "codeId": "A01turnAngle1",
+       "addressIndex":"120",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"掳"
+     },
+     {
+       "codeId": "A01turnAngle2",
+       "addressIndex":"122",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"掳"
+     },
+     {
+       "codeId": "A01turnAngle3",
+       "addressIndex":"124",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"掳"
+     },
+     {
+       "codeId": "A01turnAngle4",
+       "addressIndex":"126",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"掳"
+     },
+     {
+       "codeId": "A02turnAngle1",
+       "addressIndex":"128",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"掳"
+     },
+     {
+       "codeId": "A02turnAngle2",
+       "addressIndex":"130",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"掳"
+     },
+     {
+       "codeId": "A02turnAngle3",
+       "addressIndex":"132",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"掳"
+     },
+     {
+       "codeId": "A02turnAngle4",
+       "addressIndex":"134",
+       "addressLenght":"2",
+       "ratio":"1",
+       "unit":"掳"
+     },
+     {
+       "codeId": "Minimumglasslength",
+       "addressIndex":"136",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "Minimumglassheight",
+       "addressIndex":"138",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "Maximumglasslength",
+       "addressIndex":"140",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "Maximumglassheight",
+       "addressIndex":"142",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "A01cellsGlassNum",
+       "addressIndex":"144",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "A02cellsGlassNum",
+       "addressIndex":"146",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "A01ID",
+       "addressIndex":"148",
+       "addressLenght":"14",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "A02ID",
+       "addressIndex":"162",
+       "addressLenght":"14",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "A02TRAVELPOSVelocitymanual",
+       "addressIndex":"176",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "B02TRAVELPOSVelocitymanual",
+       "addressIndex":"178",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "Startingpositionofthefeedca",
+       "addressIndex":"180",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "Targetpositionofthefeedcar",
+       "addressIndex":"182",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "Lengthofincomingglass",
+       "addressIndex":"184",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "Widthofincomingglass",
+       "addressIndex":"186",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     },
+     {
+       "codeId": "Startingpositionoftheexitcar",
+       "addressIndex":"188",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     }, {
+       "codeId": "Exitcartargetposition",
+       "addressIndex":"190",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     }
+     , {
+       "codeId": "A02TURNPOSVelocitymanual",
+       "addressIndex":"192",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     }
+     , {
+       "codeId": "A01delayTime",
+       "addressIndex":"194",
+       "addressLenght":"2",
+       "ratio":"1"
+
+     }
+
+
+   ]
+}
diff --git a/UnLoadGlassModule/target/classes/JsonFile/PlcRead.json b/UnLoadGlassModule/target/classes/JsonFile/PlcRead.json
new file mode 100644
index 0000000..f3ebb33
--- /dev/null
+++ b/UnLoadGlassModule/target/classes/JsonFile/PlcRead.json
@@ -0,0 +1,195 @@
+{
+   "plcAddressBegin": "DB106.0",
+   "plcAddressLenght": "66",
+   "dataType": "word",
+   "parameteInfor": [{
+         "codeId": "A01Position",
+         "addressIndex": "0",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "A01FlipPosition",
+         "addressIndex": "2",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "A01QuestStartPosition",
+         "addressIndex": "4",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "A01EndPosition",
+         "addressIndex": "6",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "FeedCarStatus",
+         "addressIndex": "8",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "A02QuestOver",
+         "addressIndex": "10",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "A02Position",
+         "addressIndex": "12",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "A02FlipPosition",
+         "addressIndex": "14",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "A02QuestStartPosition",
+         "addressIndex": "16",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "A02EndPosition",
+         "addressIndex": "18",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "ExitCarStatus",
+         "addressIndex": "20",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "A02QuestOver",
+         "addressIndex": "22",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "FeedRequest",
+         "addressIndex": "24",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "FeedID",
+         "addressIndex": "26",
+         "addressLenght":"14", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "B01Position",
+         "addressIndex": "40",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "B01QuestPosition",
+         "addressIndex": "42",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "B01CurrentTaskMode",
+         "addressIndex": "44",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "B01CarStatus",
+         "addressIndex": "46",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "B01CarTaskStatus",
+         "addressIndex": "48",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "B02Position",
+         "addressIndex": "50",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "B02CarCurrentTask",
+         "addressIndex": "52",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "B02CurrentTaskMode",
+         "addressIndex": "54",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "B02CarStatus",
+         "addressIndex": "56",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "B02CarSaskStatus",
+         "addressIndex": "58",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "B01CompleteTheReport",
+         "addressIndex": "60",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "B02CompleteTheReport",
+         "addressIndex": "62",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+         "codeId": "OutRequest",
+         "addressIndex": "64",
+         "addressLenght":"2", 
+         "ratio":"1",
+         "unit":"m/min"    
+      }
+   ]
+}
\ No newline at end of file
diff --git a/UnLoadGlassModule/target/classes/JsonFile/PlcSign.json b/UnLoadGlassModule/target/classes/JsonFile/PlcSign.json
new file mode 100644
index 0000000..8f9295a
--- /dev/null
+++ b/UnLoadGlassModule/target/classes/JsonFile/PlcSign.json
@@ -0,0 +1,460 @@
+{
+  "plcAddressBegin": "DB102.0.0",
+  "plcAddressLenght": "112",
+  "dataType": "bit",
+  "parameteInfor": [
+    {
+      "codeId": "D01.SRdec",
+      "addressIndex": 0
+    },
+    {
+      "codeId": "D01.SRinpos",
+      "addressIndex": 1
+    },
+    {
+      "codeId": "D02.SRdec",
+      "addressIndex": 2
+    },
+    {
+      "codeId": "D02.SRinpos",
+      "addressIndex": 3
+    },
+    {
+      "codeId": "D03.SRinto",
+      "addressIndex": 4
+    },
+    {
+      "codeId": "D03.SRdec",
+      "addressIndex": 5
+    },
+    {
+      "codeId": "D03.SRinpos",
+      "addressIndex": 6
+    },
+    {
+      "codeId": "D04.SRdec",
+      "addressIndex": 7
+    },
+    {
+      "codeId": "D04.SRinpos",
+      "addressIndex": 8
+    },
+    {
+      "codeId": "D05.SRdec",
+      "addressIndex": 9
+    },
+    {
+      "codeId": "D05.SRinpos",
+      "addressIndex": 10
+    },
+    {
+      "codeId": "D06.SRdec",
+      "addressIndex": 11
+    },
+    {
+      "codeId": "D06.SRinpos",
+      "addressIndex": 12
+    },
+    {
+      "codeId": "B01.SRindec",
+      "addressIndex": 13
+    },
+    {
+      "codeId": "B01.SRininpos",
+      "addressIndex": 14
+    },
+    {
+      "codeId": "B01.SRoutdec",
+      "addressIndex": 15
+    },
+    {
+      "codeId": "B01.SRoutinpos",
+      "addressIndex": 16
+    },
+    {
+      "codeId": "B01.SRturnon",
+      "addressIndex": 17
+    },
+    {
+      "codeId": "B01.SRturnoff",
+      "addressIndex": 18
+    },
+    {
+      "codeId": "B01.SRup",
+      "addressIndex": 19
+    },
+    {
+      "codeId": "B01.SRdown",
+      "addressIndex": 20
+    },
+    {
+      "codeId": "B02.SRoutdec",
+      "addressIndex": 21
+    },
+    {
+      "codeId": "B02.SRoutinpos",
+      "addressIndex": 22
+    },
+    {
+      "codeId": "B02.SRindec",
+      "addressIndex": 23
+    },
+    {
+      "codeId": "B02.SRininpos",
+      "addressIndex": 24
+    },
+    {
+      "codeId": "B02.SRturnon",
+      "addressIndex": 25
+    },
+    {
+      "codeId": "B02.SRturnoff",
+      "addressIndex": 26
+    },
+    {
+      "codeId": "B02.SRup",
+      "addressIndex": 27
+    },
+    {
+      "codeId": "B02.SRdown",
+      "addressIndex": 28
+    },
+    {
+      "codeId": "B01.SRinsafety",
+      "addressIndex": 29
+    },
+    {
+      "codeId": "B01.SRoutsafety",
+      "addressIndex": 30
+    },
+    {
+      "codeId": "B02.SRinsafety",
+      "addressIndex": 31
+    },
+    {
+      "codeId": "SB.start(+)",
+      "addressIndex": 32
+    },
+    {
+      "codeId": "SB.stop(-)",
+      "addressIndex": 33
+    },
+    {
+      "codeId": "SB.reset",
+      "addressIndex": 34
+    },
+    {
+      "codeId": "SB.auto/manul",
+      "addressIndex": 35
+    },
+    {
+      "codeId": "D01.SB.confirm",
+      "addressIndex": 36
+    },
+    {
+      "codeId": "SB.emg",
+      "addressIndex": 37
+    },
+    {
+      "codeId": "D01.SB.start",
+      "addressIndex": 38
+    },
+    {
+      "codeId": "D06.SB.start",
+      "addressIndex": 39
+    },
+    {
+      "codeId": "B02.SRoutsafety",
+      "addressIndex": 40
+    },
+    {
+      "codeId": "SafetyDoor.requset",
+      "addressIndex": 41
+    },
+    {
+      "codeId": "SafetyDoor.confirm",
+      "addressIndex": 42
+    },
+    {
+      "codeId": "SafetyDoor.reset",
+      "addressIndex": 43
+    },
+    {
+      "codeId": "Sspce",
+      "addressIndex": 44
+    },
+    {
+      "codeId": "Sspce",
+      "addressIndex": 45
+    },
+    {
+      "codeId": "Sspce",
+      "addressIndex": 46
+    },
+    {
+      "codeId": "Sspce",
+      "addressIndex": 47
+    },
+    {
+      "codeId": "A01.SRleftdec",
+      "addressIndex": 48
+    },
+    {
+      "codeId": "A01.SRleftinpos",
+      "addressIndex": 49
+    },
+    {
+      "codeId": "A01.SRleftsafety",
+      "addressIndex": 50
+    },
+    {
+      "codeId": "A01.SRrightdec",
+      "addressIndex": 51
+    },
+    {
+      "codeId": "A01.SRrightinpos",
+      "addressIndex": 52
+    },
+    {
+      "codeId": "A01.SRrightsafety",
+      "addressIndex": 53
+    },
+    {
+      "codeId": "A01.SRturnhome",
+      "addressIndex": 54
+    },
+    {
+      "codeId": "A01.SRturnup",
+      "addressIndex": 55
+    },
+    {
+      "codeId": "A01.SRturndown",
+      "addressIndex": 56
+    },
+    {
+      "codeId": "A01.SRtravelhome",
+      "addressIndex": 57
+    },
+    {
+      "codeId": "A01.SRtravelleftdec",
+      "addressIndex": 58
+    },
+    {
+      "codeId": "A01.SRtravelleftlimit",
+      "addressIndex": 59
+    },
+    {
+      "codeId": "A01.SRtravelrightdec",
+      "addressIndex": 60
+    },
+    {
+      "codeId": "A01.SRtravelrightlimit",
+      "addressIndex": 61
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 62
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 63
+    },
+    {
+      "codeId": "A02.SRleftdec",
+      "addressIndex": 64
+    },
+    {
+      "codeId": "A02.SRleftinpos",
+      "addressIndex": 65
+    },
+    {
+      "codeId": "A02.SRleftsafety",
+      "addressIndex": 66
+    },
+    {
+      "codeId": "A02.SRrightdec",
+      "addressIndex": 67
+    },
+    {
+      "codeId": "A02.SRrightinpos",
+      "addressIndex": 68
+    },
+    {
+      "codeId": "A02.SRrightsafety",
+      "addressIndex": 69
+    },
+    {
+      "codeId": "A02.SRturnhome",
+      "addressIndex": 70
+    },
+    {
+      "codeId": "A02.SRturnup",
+      "addressIndex": 71
+    },
+    {
+      "codeId": "A02.SRturndown",
+      "addressIndex": 72
+    },
+    {
+      "codeId": "A02.SRtravelhome",
+      "addressIndex": 73
+    },
+    {
+      "codeId": "A02.SRtravelleftdec",
+      "addressIndex": 74
+    },
+    {
+      "codeId": "A02.SRtravelleftlimit",
+      "addressIndex": 75
+    },
+    {
+      "codeId": "A02.SRtravelrightdec",
+      "addressIndex": 76
+    },
+    {
+      "codeId": "A02.SRtravelrightlimit",
+      "addressIndex": 77
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 78
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 79
+    },
+    {
+      "codeId": "B01.SRorigin",
+      "addressIndex": 80
+    },
+    {
+      "codeId": "B01.SRleftlimit",
+      "addressIndex": 81
+    },
+    {
+      "codeId": "B01.SRrightlimit",
+      "addressIndex": 82
+    },
+    {
+      "codeId": "B02.SRorigin",
+      "addressIndex": 83
+    },
+    {
+      "codeId": "B02.SRleftlimit",
+      "addressIndex": 84
+    },
+    {
+      "codeId": "B02.SRrightlimit",
+      "addressIndex": 85
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 86
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 87
+    },
+    {
+      "codeId": "LED.red",
+      "addressIndex": 88
+    },
+    {
+      "codeId": "LED.green",
+      "addressIndex": 89
+    },
+    {
+      "codeId": "LED.yellow",
+      "addressIndex": 90
+    },
+    {
+      "codeId": "D01.LED.green",
+      "addressIndex": 91
+    },
+    {
+      "codeId": "D06.LED.green",
+      "addressIndex": 92
+    },
+    {
+      "codeId": "B01.YV.turn",
+      "addressIndex": 93
+    },
+    {
+      "codeId": "B01.YV.updown",
+      "addressIndex": 94
+    },
+    {
+      "codeId": "B01.YV.gassing",
+      "addressIndex": 95
+    },
+    {
+      "codeId": "B02.YV.turn",
+      "addressIndex": 96
+    },
+    {
+      "codeId": "B02.YV.updown",
+      "addressIndex": 97
+    },
+    {
+      "codeId": "B02.YV.gassing",
+      "addressIndex": 98
+    },
+    {
+      "codeId": "SafetyDoor.Led",
+      "addressIndex": 99
+    },
+    {
+      "codeId": "SafetyDoor.open",
+      "addressIndex": 100
+    },
+    {
+      "codeId": "D01SB.confirm",
+      "addressIndex": 101
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 102
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 103
+    },
+    {
+      "codeId": "A01oilPump",
+      "addressIndex": 104
+    },
+    {
+      "codeId": "A01motorCtr",
+      "addressIndex": 105
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 106
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 107
+    },
+    {
+      "codeId": "A02oilPump",
+      "addressIndex": 108
+    },
+    {
+      "codeId": "A02motorCtr",
+      "addressIndex": 109
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 110
+    },
+    {
+      "codeId": "space",
+      "addressIndex": 111
+    }
+    ,
+    {
+      "codeId": "space",
+      "addressIndex": 111
+    }
+  ]
+}
\ No newline at end of file
diff --git a/UnLoadGlassModule/target/classes/JsonFile/PlcState.json b/UnLoadGlassModule/target/classes/JsonFile/PlcState.json
new file mode 100644
index 0000000..dfdbaec
--- /dev/null
+++ b/UnLoadGlassModule/target/classes/JsonFile/PlcState.json
@@ -0,0 +1,285 @@
+{
+  "plcAddressBegin": "DB103.0",
+  "plcAddressLenght": "258",
+  "dataType": "word",
+  "parameteInfor": [
+    {
+      "codeId": "D01.State",
+      "addressIndex": "0",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "D02.State",
+      "addressIndex": "2",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "B01.State",
+      "addressIndex": "4",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "B02.State",
+      "addressIndex": "6",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "A01.State",
+      "addressIndex": "8",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "A02.State",
+      "addressIndex": "10",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "D03.State",
+      "addressIndex": "12",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "D04.State",
+      "addressIndex": "14",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "D05.State",
+      "addressIndex": "16",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "D06.State",
+      "addressIndex": "18",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "A01tavelActualPosition",
+      "addressIndex": "20",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "A01turnActualangle",
+      "addressIndex": "22",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "A02tavelActualPosition",
+      "addressIndex": "24",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "A02turnActualangle",
+      "addressIndex": "26",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "B01tavelActualPosition",
+      "addressIndex": "28",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "B02tavelActualPosition",
+      "addressIndex": "30",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "A01CurrentGrid",
+      "addressIndex": "32",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "A02CurrentGrid",
+      "addressIndex": "34",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "B01CurrentGrid",
+      "addressIndex": "36",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "B01TargetGrid",
+      "addressIndex": "38",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "B02CurrentGrid",
+      "addressIndex": "40",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "B02TargetGrid",
+      "addressIndex": "42",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "D01ID",
+      "addressIndex": "44",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "D02ID",
+      "addressIndex": "58",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "D03ID",
+      "addressIndex": "72",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "D04ID",
+      "addressIndex": "86",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "D05ID",
+      "addressIndex": "100",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "D06ID",
+      "addressIndex": "114",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "A01ID1",
+      "addressIndex": "128",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "A01ID2",
+      "addressIndex": "142",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "A02ID1",
+      "addressIndex": "156",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "A02ID2",
+      "addressIndex": "170",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "B01ID1",
+      "addressIndex": "184",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "B01ID2",
+      "addressIndex": "198",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "B02ID1",
+      "addressIndex": "212",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "B02ID2",
+      "addressIndex": "226",
+      "addressLenght": "14",
+      "unit": ""
+    },
+    {
+      "codeId": "A01conveyorFaultcodes",
+      "addressIndex": "240",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "A01turnservoFaultcodes",
+      "addressIndex": "242",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "A01travelservoFaultcodes",
+      "addressIndex": "244",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "A02conveyorFaultcodes",
+      "addressIndex": "246",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "A02turnservoFaultcodes",
+      "addressIndex": "248",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "A02travelservoFaultcodes",
+      "addressIndex": "250",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "B01travelservoFaultcodes",
+      "addressIndex": "252",
+      "addressLenght": "2",
+      "unit": ""
+    },
+    {
+      "codeId": "B02travelservoFaultcodes",
+      "addressIndex": "254",
+      "addressLenght": "2",
+      "unit": ""
+    }
+    ,
+    {
+      "codeId": "Scanningguns",
+      "addressIndex": "256",
+      "addressLenght": "2",
+      "unit": ""
+    }
+    ,
+    {
+      "codeId": "Frameid",
+      "addressIndex": "270",
+      "addressLenght": "2",
+      "unit": ""
+    }
+  ]
+}
\ No newline at end of file
diff --git a/UnLoadGlassModule/target/classes/JsonFile/PlcTest.json b/UnLoadGlassModule/target/classes/JsonFile/PlcTest.json
new file mode 100644
index 0000000..263c782
--- /dev/null
+++ b/UnLoadGlassModule/target/classes/JsonFile/PlcTest.json
@@ -0,0 +1,378 @@
+{
+  "plcAddressBegin": "DB101.0.0",
+  "plcAddressLenght": "93",
+  "dataType": "bit",
+  "parameteInfor": [
+    {
+      "codeId": "D01VFDconveyor",
+      "addressIndex": 0
+    },
+    {
+      "codeId": "D02VFDconveyor",
+      "addressIndex": 1
+    },
+    {
+      "codeId": "D03VFDconveyor",
+      "addressIndex": 2
+    },
+    {
+      "codeId": "D04VFDconveyor",
+      "addressIndex": 3
+    },
+    {
+      "codeId": "D05VFDconveyor",
+      "addressIndex": 4
+    },
+    {
+      "codeId": "D06VFDconveyor",
+      "addressIndex": 5
+    },
+    {
+      "codeId": "A01VFDconveyor",
+      "addressIndex": 6
+    },
+    {
+      "codeId": "A02VFDconveyor",
+      "addressIndex": 7
+    },
+    {
+      "codeId": "B01VFDconveyor",
+      "addressIndex": 8
+    },
+    {
+      "codeId": "B02VFDconveyor",
+      "addressIndex": 9
+    },
+    {
+      "codeId": "A01SERVETURN",
+      "addressIndex": 10
+    },
+    {
+      "codeId": "A02SERVETURN",
+      "addressIndex": 11
+    },
+    {
+      "codeId": "A01SERVETRAVEL",
+      "addressIndex": 12
+    },
+    {
+      "codeId": "A02SERVETRAVEL",
+      "addressIndex": 13
+    },
+    {
+      "codeId": "B01SERVETRAVEL",
+      "addressIndex": 14
+    },
+    {
+      "codeId": "B02SERVETRAVEL",
+      "addressIndex": 15
+    },
+    {
+      "codeId": "A01SERVETURNPOS",
+      "addressIndex": 16
+    },
+    {
+      "codeId": "A02SERVETURNPOS",
+      "addressIndex": 17
+    },
+    {
+      "codeId": "A01SERVETRAVELPOS",
+      "addressIndex": 18
+    },
+    {
+      "codeId": "A02SERVETRAVELPOS",
+      "addressIndex": 19
+    },
+    {
+      "codeId": "B01SERVETRAVELPOS",
+      "addressIndex": 20
+    },
+    {
+      "codeId": "B02SERVETRAVELPOS",
+      "addressIndex": 21
+    },
+    {
+      "codeId": "B01YVTURN",
+      "addressIndex": 22
+    },
+    {
+      "codeId": "B01YVUPDOWN",
+      "addressIndex": 23
+    },
+    {
+      "codeId": "B02YVTURN",
+      "addressIndex": 24
+    },
+    {
+      "codeId": "B02YVUPDOWN",
+      "addressIndex": 25
+    },
+    {
+      "codeId": "B01YVGassing",
+      "addressIndex": 26
+    },
+    {
+      "codeId": "B02YVGassing",
+      "addressIndex": 27
+    },
+    {
+      "codeId": "A01VFDconveyorreverse",
+      "addressIndex": 28
+    },
+    {
+      "codeId": "A02VFDconveyorreverse",
+      "addressIndex": 29
+    },
+    {
+      "codeId": "A01SERVETURNreset",
+      "addressIndex": 30
+    },
+    {
+      "codeId": "A01SERVETURNhome",
+      "addressIndex": 31
+    },
+    {
+      "codeId": "A01SERVETRAVELreset",
+      "addressIndex": 32
+    },
+    {
+      "codeId": "A02SERVETURNreset",
+      "addressIndex": 33
+    },
+    {
+      "codeId": "A02SERVETURNhome",
+      "addressIndex": 34
+    },
+    {
+      "codeId": "A02SERVETRAVELreset",
+      "addressIndex": 35
+    },
+    {
+      "codeId": "B01SERVETRAVELreset",
+      "addressIndex": 36
+    },
+    {
+      "codeId": "B01SERVETRAVELhome",
+      "addressIndex": 37
+    },
+    {
+      "codeId": "B02SERVETRAVELreset",
+      "addressIndex": 38
+    },
+    {
+      "codeId": "B02SERVETRAVELhome",
+      "addressIndex": 39
+    },
+    {
+      "codeId": "Manualstoragestartup",
+      "addressIndex": 40
+    },
+    {
+      "codeId": "Manualoutputstartup",
+      "addressIndex": 41
+    },
+    {
+      "codeId": "A01oilpump",
+      "addressIndex": 42
+    },
+    {
+      "codeId": "A02oilpump",
+      "addressIndex": 43
+    },
+    {
+      "codeId": "A01get1#gridaddress",
+      "addressIndex": 44
+    },
+    {
+      "codeId": "A01get22#gridaddress",
+      "addressIndex": 45
+    },
+    {
+      "codeId": "A01get43#gridaddress",
+      "addressIndex": 46
+    },
+    {
+      "codeId": "A01get64#gridaddress",
+      "addressIndex": 47
+    },
+    {
+      "codeId": "A01get85#gridaddress",
+      "addressIndex": 48
+    },
+    {
+      "codeId": "A01get106#gridaddress",
+      "addressIndex": 49
+    },
+    {
+      "codeId": "A01get127#gridaddress",
+      "addressIndex": 50
+    },
+    {
+      "codeId": "A01get148#gridaddress",
+      "addressIndex": 51
+    },
+    {
+      "codeId": "A01get169#gridaddress",
+      "addressIndex": 52
+    },
+    {
+      "codeId": "A02get190#gridaddress",
+      "addressIndex": 53
+    },
+    {
+      "codeId": "A02get1#gridaddress",
+      "addressIndex": 54
+    },
+    {
+      "codeId": "A02get22#gridaddress",
+      "addressIndex": 55
+    },
+    {
+      "codeId": "A02get43#gridaddress",
+      "addressIndex": 56
+    },
+    {
+      "codeId": "A02get64#gridaddress",
+      "addressIndex": 57
+    },
+    {
+      "codeId": "A02get85#gridaddress",
+      "addressIndex": 58
+    },
+    {
+      "codeId": "A02get106#gridaddress",
+      "addressIndex": 59
+    },
+    {
+      "codeId": "A02get127#gridaddress",
+      "addressIndex": 60
+    },
+    {
+      "codeId": "A02get148#gridaddress",
+      "addressIndex": 61
+    },
+    {
+      "codeId": "A02get169#gridaddress",
+      "addressIndex": 62
+    },
+    {
+      "codeId": "A02get190#gridaddress",
+      "addressIndex": 63
+    },
+    {
+      "codeId": "B01get1#gridaddress",
+      "addressIndex": 64
+    },
+    {
+      "codeId": "B01get22#gridaddress",
+      "addressIndex": 65
+    },
+    {
+      "codeId": "B01get43#gridaddress",
+      "addressIndex": 66
+    },
+    {
+      "codeId": "B01get64#gridaddress",
+      "addressIndex": 67
+    },
+    {
+      "codeId": "B01get85#gridaddress",
+      "addressIndex": 68
+    },
+    {
+      "codeId": "B02get106#gridaddress",
+      "addressIndex": 69
+    },
+    {
+      "codeId": "B02get127#gridaddress",
+      "addressIndex": 70
+    },
+    {
+      "codeId": "B02get148#gridaddress",
+      "addressIndex": 71
+    },
+    {
+      "codeId": "B02get169#gridaddress",
+      "addressIndex": 72
+    },
+    {
+      "codeId": "B02get190#gridaddress",
+      "addressIndex": 73
+    },
+    {
+      "codeId": "D01IDClean",
+      "addressIndex": 74
+    },
+    {
+      "codeId": "D02IDClean",
+      "addressIndex": 75
+    },
+    {
+      "codeId": "D03IDClean",
+      "addressIndex": 76
+    },
+    {
+      "codeId": "D04IDClean",
+      "addressIndex": 77
+    },
+    {
+      "codeId": "D05IDClean",
+      "addressIndex": 78
+    },
+    {
+      "codeId": "D06IDClean",
+      "addressIndex": 79
+    },
+    {
+      "codeId": "A01IDClean",
+      "addressIndex": 80
+    },
+    {
+      "codeId": "A02IDClean",
+      "addressIndex": 81
+    },
+    {
+      "codeId": "B01IDClean",
+      "addressIndex": 82
+    },
+    {
+      "codeId": "B02IDClean",
+      "addressIndex": 83
+    },
+    {
+      "codeId": "abort/resumeTasks",
+      "addressIndex": 84
+    },
+    {
+      "codeId": "A01SERVETRAVELhome",
+      "addressIndex": 85
+    },
+    {
+      "codeId": "A02SERVETRAVELhome",
+      "addressIndex": 86
+    },
+    {
+      "codeId": "A01A02travelHoming",
+      "addressIndex": 87
+    },
+    {
+      "codeId": "A01halfAutoSelect",
+      "addressIndex": 88
+    },
+    {
+      "codeId": "A02halfAutoSelect",
+      "addressIndex": 89
+    },
+    {
+      "codeId": "A02abortTasks",
+      "addressIndex": 90
+    },
+    {
+      "codeId": "emgHMI",
+      "addressIndex": 91
+    },
+    {
+      "codeId": "Scanningmethod",
+      "addressIndex": 92
+  ]
+}
\ No newline at end of file
diff --git a/UnLoadGlassModule/target/classes/JsonFile/Plcframe.json b/UnLoadGlassModule/target/classes/JsonFile/Plcframe.json
new file mode 100644
index 0000000..c270227
--- /dev/null
+++ b/UnLoadGlassModule/target/classes/JsonFile/Plcframe.json
@@ -0,0 +1,51 @@
+{
+   "plcAddressBegin":"DB17.0",
+   "plcAddressLenght":"40",
+   "dataType":"word",
+   "parameteInfor":[
+      {
+         "codeId": "E01id",  
+         "addressIndex":"0",
+         "addressLenght":"14", 
+         "ratio":"1",
+         "unit":"m/min"    
+      },
+      {
+          "codeId": "E01Quest",
+          "addressIndex":"16",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"m/min"      
+       },
+       {
+          "codeId": "E01Reply",
+          "addressIndex":"18",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"m/min"       
+       },
+       {
+          "codeId": "J01Quest",
+          "addressIndex":"20",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "J01id",
+          "addressIndex":"22",
+          "addressLenght":"14",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "J01TurnGo",
+          "addressIndex":"38",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       }
+
+
+   ]
+}
diff --git a/UnLoadGlassModule/target/classes/JsonFile/alarm.xlsx b/UnLoadGlassModule/target/classes/JsonFile/alarm.xlsx
new file mode 100644
index 0000000..50b26dc
--- /dev/null
+++ b/UnLoadGlassModule/target/classes/JsonFile/alarm.xlsx
Binary files differ
diff --git a/UnLoadGlassModule/target/classes/JsonFile/sign.xlsx b/UnLoadGlassModule/target/classes/JsonFile/sign.xlsx
new file mode 100644
index 0000000..3922301
--- /dev/null
+++ b/UnLoadGlassModule/target/classes/JsonFile/sign.xlsx
Binary files differ
diff --git a/UnLoadGlassModule/target/classes/JsonFile/test.xlsx b/UnLoadGlassModule/target/classes/JsonFile/test.xlsx
new file mode 100644
index 0000000..9862cf5
--- /dev/null
+++ b/UnLoadGlassModule/target/classes/JsonFile/test.xlsx
Binary files differ
diff --git a/UnLoadGlassModule/target/classes/application.yml b/UnLoadGlassModule/target/classes/application.yml
index 7a2e2be..8ba75c8 100644
--- a/UnLoadGlassModule/target/classes/application.yml
+++ b/UnLoadGlassModule/target/classes/application.yml
@@ -1,20 +1,16 @@
 
 server:
-  port: 8080
+  port: 8081
   servlet:
    context-path: /mesModuleTools
 
 spring:
   datasource:
     dynamic:
-      primary: user_info #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
       strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
       datasource:
-        user_info:
-          url: jdbc:mysql://10.153.19.150:3306/erp_user_info?serverTimezone=GMT%2b8
-          username: root
-          password: beibo.123/
-          driver-class-name: com.mysql.cj.jdbc.Driver
+
         hangzhoumes:
             url: jdbc:mysql://10.153.19.150:3306/hangzhoumes?serverTimezone=GMT%2b8
             username: root

--
Gitblit v1.8.0