From 43a6eccb37602e27c56bf7c40a74c8350ecfd82e Mon Sep 17 00:00:00 2001
From: wang <3597712270@qq.com>
Date: 星期三, 15 五月 2024 11:51:46 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes

---
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java                              |   16 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java                            |    2 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java                                |   38 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassInfo.java                          |   12 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/AppRunnerConfig.java                                               |   29 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java                  |   39 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-prod.yml                                                |    2 
 hangzhoumesParent/moduleService/LoadGlassModule/src/test/java/com/mes/LoadGlassModuleApplicationTest.java                                |   55 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/tools/ExcelToJsonConverter.java                                  |    8 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java                          |  100 +
 UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue                                                                                |   16 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/OptimizeGlassinfo.java                                       |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java                               |   76 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationTaskServiceImpl.java |   29 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/LoadGlassModuleApplication.java                                    |    2 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstationTask.java                  |   12 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml                                                      |    5 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java              |   10 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeProjectService.java                                        |   14 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/UpWorkstationService.java                      |   29 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/WebSocketServer.java                                        |  160 ++
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/impl/UpWorkstationServiceImpl.java             |   58 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java    |   13 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java        |   77 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/mapper/UpWorkstationMapper.java                        |    2 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/controller/EngineeringController.java                             |    2 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeProject.java                                                |   20 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/AppRunnerConfig.java                                             |   26 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java         |  251 +--
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassTask.java                          |    6 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownCacheGlassTask.java                                      |  289 ++++
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/JsonFile/PlcLoadGlass.json                                            |   71 +
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/EdgGlassTaskInfo.java                         |   37 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/TaskCacheService.java                           |    7 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java                                          |   84 +
 UI-Project/src/router/index.js                                                                                                           |   74 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java        |    2 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/OptimizeEngineering.java                                   |   78 +
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java                 |    7 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java  |  234 ++-
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/GlassInfoService.java                          |   12 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java                      |   42 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/entity/OptimizeUpPattenUsage.java                               |    2 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/mapper/EdgGlassTaskInfoMapper.java                   |   18 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml                                                       |    4 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java          |    8 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/mapper/xml/EngineeringMapper.xml                                  |    0 
 UI-Project/src/views/UnLoadGlass/loadmachinerack.vue                                                                                     |   18 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/controller/EdgGlassTaskInfoController.java           |   20 
 UI-Project/src/views/Caching/cachingun.vue                                                                                               |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/AppRunnerConfig.java                                      |   29 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java     |   83 -
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/JsonFile/PlcCacheGlass.json                                          |    9 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationTaskMapper.java            |    3 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/OptimizeProjectController.java                                  |   20 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/GlassInfo.java                                               |    2 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/EdgGlassTaskInfoService.java                 |   16 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/S7object.java                                             |   61 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java |   89 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/common/WebSocketServer.java                               |  160 ++
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java         |    4 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/Engineering.java                                           |    2 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationTaskService.java          |    8 
 hangzhoumesParent/common/servicebase/pom.xml                                                                                             |    7 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeProjectServiceImpl.java                               |   26 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/S7object.java                                               |   30 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/config/TokenWebSecurityConfig.java                                  |    1 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/JsonFile/PlcCacheVerticalGlass.json                          |   57 
 UI-Project/config.js                                                                                                                     |    4 
 hangzhoumesParent/common/pom.xml                                                                                                         |   13 
 UI-Project/src/views/UnLoadGlass/Landingindication.vue                                                                                   |   52 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java                                           |  359 ++++
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/impl/EdgGlassTaskInfoServiceImpl.java        |   20 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.xlsx                                          |    0 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/service/EngineeringService.java                                   |   38 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/service/UpPattenUsageService.java                               |   28 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java         |   13 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstation.java                      |    6 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/mapper/EngineeringMapper.java                                     |    0 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/controller/UpPattenUsageController.java                         |  124 +
 /dev/null                                                                                                                                |    0 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java                  |   43 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageService.java             |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/common/S7object.java                                      |   61 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.json                                          |  362 +++++
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java                  |    2 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/entity/UpWorkstation.java                              |    2 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/controller/DownStorageCageDetailsController.java     |   34 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java           |   16 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java                 |   20 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/GlassInfoService.java                                       |   11 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java                                                      |   39 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCageDetails.java                  |    8 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/CacheGlassModuleApplication.java                                  |    3 
 94 files changed, 3,126 insertions(+), 861 deletions(-)

diff --git a/UI-Project/config.js b/UI-Project/config.js
index 788923e..2dfd4e0 100644
--- a/UI-Project/config.js
+++ b/UI-Project/config.js
@@ -1,6 +1,6 @@
 export default {
-  serverUrl: "10.153.19.150:88/api",
-  //serverUrl: "localhost:88/api/",
+ serverUrl: "10.153.19.150:88/api",
+
   serverUrl2: "10.153.19.150:88"
   //serverUrl:"res.abeim.cn"
 }
\ No newline at end of file
diff --git a/UI-Project/src/router/index.js b/UI-Project/src/router/index.js
index ca1f7a8..c0773c2 100644
--- a/UI-Project/src/router/index.js
+++ b/UI-Project/src/router/index.js
@@ -1,5 +1,9 @@
 import {createRouter, createWebHashHistory} from 'vue-router'
- 
+
+// import User from '../views/sys/User.vue'
+// import Role from '../views/sys/Role.vue'
+// import Menu from '../views/sys/Menu.vue'
+
 const router = createRouter({
   history: createWebHashHistory(),
   routes: [
@@ -34,29 +38,19 @@
          ]
         },
       
-/*----------- 绯荤粺绠$悊 ----------------*/
-{
-  path: 'User',
-  name: 'user',
-  component: () => import('../views/user/user.vue'),
-  children:[
-    {
-      path: '/User/userlist',
-      name: 'userlist',
-      component: () => import('../views/User/userlist.vue')
-    },
-    {
-      path: '/User/permissions',
-      name: 'permissions',
-      component: () => import('../views/User/permissions.vue')
-    },
-    {
-      path: '/User/rolelist',
-      name: 'rolelist',
-      component: () => import('../views/User/rolelist.vue')
-    },
-  ]
-},
+/*----------- 鐢ㄦ埛鍒楄〃 ----------------*/
+// {
+//   path: 'User',
+//   name: 'User',
+//   component: () => import('../views/User/userlist.vue'),
+//   children:[
+//     {
+//       path: '/User/userlist',
+//       name: 'userlist',
+//       component: () => import('../views/User/userlist.vue')
+//     },
+//   ]
+//   },
   
 /*----------- 鏉冮檺鍒楄〃 ----------------*/
 // {
@@ -187,7 +181,7 @@
             }
           ]
         },
- 
+
          /*----------- 鍙鍖栫郴缁� ----------------*/
          {
           path: 'Visualization',
@@ -210,10 +204,34 @@
               component: () => import('../views/Visualization/screenthree.vue')
             }
           ]
+         },
+
+        /*----------- 绠$悊绯荤粺 ----------------*/
+        {
+          path: 'sys',
+          name: 'screen',
+          component: () => import('../views/Visualization/screen.vue'),
+          children: [
+            // {
+            //   path: '/sys/users',
+            //   name: 'SysUser',
+            //   component: User
+            // },
+            // {
+            //   path: '/sys/roles',
+            //   name: 'SysRole',
+            //   component: Role
+            // },
+            // {
+            //   path: '/sys/menus',
+            //   name: 'SysMenu',
+            //   component: Menu
+            // },
+          ]
         },
         {
           path: '',
-          redirect:'/Slicecage/slicecage'
+          redirect: '/Slicecage/slicecage'
         }
       ]
     },
@@ -225,5 +243,5 @@
     
   ]
 })
- 
-export default router
\ No newline at end of file
+
+export default router
diff --git a/UI-Project/src/views/Caching/cachingun.vue b/UI-Project/src/views/Caching/cachingun.vue
index 5cf4a38..5a82915 100644
--- a/UI-Project/src/views/Caching/cachingun.vue
+++ b/UI-Project/src/views/Caching/cachingun.vue
@@ -15,7 +15,7 @@
 const slot = ref('')
   
 
-request.post("/cacheGlass/edgStorageCage/selectEdgStorageCage").then((res) => {
+request.get("/unLoadGlass/downStorage/selectStorageCage").then((res) => {
           if (res.code == 200) {
             
           console.log(res.data);
diff --git a/UI-Project/src/views/UnLoadGlass/Landingindication.vue b/UI-Project/src/views/UnLoadGlass/Landingindication.vue
index 72b46a9..ca6a564 100644
--- a/UI-Project/src/views/UnLoadGlass/Landingindication.vue
+++ b/UI-Project/src/views/UnLoadGlass/Landingindication.vue
@@ -33,19 +33,21 @@
 
 <script setup>
 import Swal from 'sweetalert2'
-
+import request from "@/utils/request";
 const racks = [
   { x: 50, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: 'NG123456' } },
-  { x: 50, y: 270, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 20, width: 10, fillColor: 'yellow', content: 'NG1234567' } },
+ 
   { x: 280, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 30, width: 20, fillColor: 'yellow', content: 'NG12345678' } },
-  { x: 280, y: 270, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 35, width: 23, fillColor: 'yellow', content: 'NG123456910' } },
+ 
   { x: 140, y: 420, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 30, width: 100, fillColor: 'yellow', content: 'NG1234561454' } }
+  
 ];
 
+
 const calculateItemXPosition = (rack, item, index) => {
-  if (index === 0 || index === 1) {
+  if (index === 0 ) {
     return rack.x;
-  } else if (index === 2 || index === 3) {
+  } else if (index === 1 ) {
     return rack.x + rack.width - item.width;
   } else {
     return rack.x + (rack.width - item.width) / 2;
@@ -53,15 +55,51 @@
 };
 
 const calculateItemYPosition = (rack, item, index) => {
-  if (index === 0 || index === 1) {
+  if (index === 0 ) {
     return rack.y + (rack.height - item.height) / 2;
-  } else if (index === 2 || index === 3) {
+  } else if (index === 1) {
     return rack.y + (rack.height - item.height) / 2;
   } else {
     return rack.y + rack.height - item.height;
   }
 };
 
+
+const fetchFlowCardId = async () => {
+  try {
+    const response = await request.get('unLoadGlass/downWorkStation/getwo');
+    console.log(response)
+    if (response.code === 200) {
+      console.log(response.data);
+      // 閬嶅巻鍝嶅簲鏁版嵁骞舵浛鎹acks鏁扮粍涓殑item灞炴��
+      response.data.forEach((itemData, index) => {
+        if (index < racks.length) {
+          const rack = racks[index];
+          const newItem = {
+            content: itemData.item.content,
+            fillColor: itemData.item.fillColor,
+            width: itemData.item.width/10000,
+            height: itemData.item.height/10000
+          };
+          rack.item == newItem;
+         
+        }
+      });
+      
+      console.log(racks); // 鏌ョ湅鏇存柊鍚庣殑racks鏁扮粍
+    } else {
+      ElMessage.error(response.msg);
+    }
+  } catch (error) {
+    console.error(error);
+  }
+};
+
+fetchFlowCardId()
+// setTimeout(fetchFlowCardId(),1000);
+  
+
+
 const showCustomAlert = (content) => {
   var str="鏋跺彿   :      111\n" +
     "闀�     :      111\n" +
diff --git a/UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue b/UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue
index b340c83..1613c01 100644
--- a/UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue
+++ b/UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue
@@ -22,7 +22,7 @@
               :height="rack.item.height" 
               :fill="rack.item.fillColor"
             />
-            <text :x="rack.x + rack.width / 2" :y="rack.y - 10" text-anchor="middle">{{ index + 6 }}鍙峰伐浣�</text>
+            <text :x="rack.x + rack.width / 2" :y="rack.y - 10" text-anchor="middle">{{ index + 4 }}鍙峰伐浣�</text>
             <text :x="rack.x + rack.width / 2" :y="rack.y + rack.height + 20" text-anchor="middle">{{ rack.item.content }}</text>
           </g>
         </g>
@@ -34,18 +34,16 @@
 <script setup>
 import Swal from 'sweetalert2'
 
-const racks = [
+let racks = [
   { x: 50, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: 'NG123456' } },
-  { x: 50, y: 270, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 20, width: 10, fillColor: 'yellow', content: 'NG1234567' } },
   { x: 280, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 30, width: 20, fillColor: 'yellow', content: 'NG12345678' } },
-  { x: 280, y: 270, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 35, width: 23, fillColor: 'yellow', content: 'NG123456910' } },
   { x: 140, y: 420, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 30, width: 100, fillColor: 'yellow', content: 'NG1234561454' } }
 ];
-
+// 璁$畻鍏冪礌浣嶇疆鐨勫嚱鏁�
 const calculateItemXPosition = (rack, item, index) => {
-  if (index === 0 || index === 1) {
+  if (index === 0) {
     return rack.x;
-  } else if (index === 2 || index === 3) {
+  } else if (index === 1) {
     return rack.x + rack.width - item.width;
   } else {
     return rack.x + (rack.width - item.width) / 2;
@@ -53,9 +51,9 @@
 };
 
 const calculateItemYPosition = (rack, item, index) => {
-  if (index === 0 || index === 1) {
+  if (index === 0) {
     return rack.y + (rack.height - item.height) / 2;
-  } else if (index === 2 || index === 3) {
+  } else if (index === 1) {
     return rack.y + (rack.height - item.height) / 2;
   } else {
     return rack.y + rack.height - item.height;
diff --git a/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue b/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
index 0d44280..faf1d53 100644
--- a/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
+++ b/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
@@ -9,6 +9,7 @@
 import Landingindication from "./Landingindication.vue";
 import Landingindicationtwo from "./Landingindicationtwo.vue";
 import request from "@/utils/request";
+
 const dialogFormVisiblea = ref(false)
 
 
@@ -100,7 +101,8 @@
     const response = await request.get('unLoadGlass/downWorkStation/getflowCardId');
     console.log(response)
     if (response.code === 200) {
-      flowCardOptions.value = response.data.map(item => ({ flowcard_id: item.flow_card_id }));
+      flowCardOptions.value = response.data.map(item => ({ flowcard_id: item.flow_card_Id }));
+      console.log(flowCardOptions.value)
     } else {
       ElMessage.error(response.msg);
     }
@@ -120,7 +122,9 @@
     if (response.code == 200) {
       // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
       console.log('缁戝畾鎴愬姛');
+   
       ElMessage.success(response.message);
+      updatePageData();
       dialogFormVisiblea.value = false;
     } else {
       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
@@ -130,6 +134,16 @@
     // 澶勭悊閿欒
     console.error(error);
   }
+};
+
+
+const updatePageData = () => {
+  // 鍋囪浣犵殑椤甸潰涓婃湁涓�涓悕涓� tableData 鐨� Vue 缁勪欢
+  // 浣犲彲浠ョ洿鎺ユ洿鏂� tableData 鐨勬暟鎹�
+  tableData.flowCardId = flowCardId.value;
+
+  // 浣跨敤 $forceUpdate() 寮哄埗鏇存柊缁勪欢
+  forceUpdate();
 };
 
 
@@ -198,7 +212,7 @@
 
 
 
-initWebSocket();
+// initWebSocket();
 onMounted(fetchTableData);
 // setInterval(fetchTableData, 2000)
 
diff --git a/hangzhoumesParent/common/pom.xml b/hangzhoumesParent/common/pom.xml
index 0a5605a..951b4ea 100644
--- a/hangzhoumesParent/common/pom.xml
+++ b/hangzhoumesParent/common/pom.xml
@@ -167,9 +167,22 @@
             <version>1.4.2</version>
         </dependency>
 
+        <!--寮曞叆redis,鎺掗櫎lettuce鐨勫紩鐢�-->
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-redis</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.lettuce</groupId>
+                    <artifactId>lettuce-core</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <!-- 寮曞叆Jedis瀹㈡埗绔�-->
+        <dependency>
+            <groupId>redis.clients</groupId>
+            <artifactId>jedis</artifactId>
         </dependency>
 
         <dependency>
diff --git a/hangzhoumesParent/common/servicebase/pom.xml b/hangzhoumesParent/common/servicebase/pom.xml
index e7f1411..07e9a43 100644
--- a/hangzhoumesParent/common/servicebase/pom.xml
+++ b/hangzhoumesParent/common/servicebase/pom.xml
@@ -16,5 +16,12 @@
         <maven.compiler.source>8</maven.compiler.source>
         <maven.compiler.target>8</maven.compiler.target>
     </properties>
+    <dependencies>
+        <dependency>
+            <groupId>com.microsoft.sqlserver</groupId>
+            <artifactId>sqljdbc4</artifactId>
+            <version>4.0</version>
+        </dependency>
+    </dependencies>
 
 </project>
\ No newline at end of file
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
index bc344ce..2e03df0 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
@@ -11,8 +11,43 @@
     //榛樿瑙掕壊
     public static final Long DEFULT_ROLE = 1L;
 
-    //A09鍑虹墖鐩爣浣嶇疆
+    /**
+     * 纾ㄨ竟娓呮礂鍓�
+     */
+    /**
+     * A09鍑虹墖鐩爣浣嶇疆2001
+     * A10鍑虹墖鐩爣浣嶇疆2002
+     */
     public static final Integer A09_OUT_TARGET_POSITION = 2001;
-    //A09鍑虹墖鐩爣浣嶇疆
     public static final Integer A10_OUT_TARGET_POSITION = 2002;
+
+    /**
+     * 鍗у紡鐞嗙墖绗艰鎯呰〃鐜荤拑鐘舵��
+     * 璇嗗埆鍚庢垚鍔熺姸鎬�100
+     * 鍑虹墖浠诲姟101
+     * 鎷胯蛋200
+     * 鐮存崯201
+     */
+    public static final Integer GLASS_STATE_IN = 100;
+    public static final Integer GLASS_STATE_OUT = 101;
+    public static final Integer GLASS_STATE_TAKE = 200;
+    public static final Integer A10_OUT_TARGET_DAMAGE = 201;
+
+    /**
+     * 鍗у紡鐞嗙墖绗艰鎯呰〃鐜荤拑鐘舵��
+     * 杩涚墖浠诲姟1
+     * 鍑虹墖浠诲姟2
+     */
+    public static final Integer GLASS_CACHE_TYPE_IN = 1;
+    public static final Integer GLASS_CACHE_TYPE_OUT = 2;
+
+    /**
+     * 纾ㄨ竟浠诲姟鐜荤拑鐘舵��
+     * 杩涚墖浠诲姟1
+     * 鍑虹墖浠诲姟2
+     */
+    public static final Integer EDG_GLASS_BEFORE = 0;
+    public static final Integer EDG_GLASS_START = 1;
+    public static final Integer EDG_GLASS_SUCCESS = 2;
+
 }
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/controller/EngineeringController.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/controller/EngineeringController.java
similarity index 89%
rename from hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/controller/EngineeringController.java
rename to hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/controller/EngineeringController.java
index 6b2c34c..f80d3c0 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/controller/EngineeringController.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/controller/EngineeringController.java
@@ -2,9 +2,7 @@
 
 
 import com.mes.engineering.entity.Engineering;
-import com.mes.engineering.service.impl.EngineeringServiceImpl;
 import com.mes.utils.Result;
-import com.mes.workstation.service.UpWorkstationService;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/entity/Engineering.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/Engineering.java
similarity index 97%
rename from hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/entity/Engineering.java
rename to hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/Engineering.java
index 4e68183..586a7b3 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/entity/Engineering.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/Engineering.java
@@ -89,7 +89,7 @@
     /**
      * 鑶滅郴id
      */
-    private Integer filmsId;
+    private String filmsId;
 
     /**
      * 澶囨敞
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/OptimizeEngineering.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/OptimizeEngineering.java
new file mode 100644
index 0000000..38b62f7
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/OptimizeEngineering.java
@@ -0,0 +1,78 @@
+package com.mes.engineering.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author SNG-010
+ */
+@Setter
+@Getter
+public class OptimizeEngineering {
+
+    // Getter methods
+    // Setter methods
+    /**
+     * 宸ョ▼鍙�
+     */
+    private String projectNo;
+
+    /**
+     * 宸ョ▼鍚�
+     */
+    private String projectName;
+
+    /**
+     * 骞冲潎鍒╃敤鐜�
+     */
+    private Double avgCutPct;
+
+    /**
+     * 鏈夋晥鍒╃敤鐜�
+     */
+    private Double validCutPct;
+
+    /**
+     * 灏剧墖鍒╃敤鐜�
+     */
+    private Double lastCutPct;
+
+    /**
+     * 鐘舵��
+     */
+    private Integer state;
+
+    /**
+     * 灏忕墖鎬绘暟
+     */
+    private Integer glassTotal;
+    /**
+     * 灏忕墖鎬婚潰绉�
+     */
+    private Double glassTotalArea;
+    /**
+     * 璁″垝鍘熺墖鎬绘暟
+     */
+    private Integer rawStockQty;
+    /**
+     * 璁″垝鍘熺墖鎬婚潰绉�
+     */
+    private Double rawStockArea;
+    /**
+     * 瀹為檯鍘熺墖鎬绘暟
+     */
+    private Integer actualStockQty;
+    /**
+     * 瀹為檯鍘熺墖鎬婚潰绉�
+     */
+    private Double actualStockArea;
+    /**
+     * 鑶滅郴
+     */
+    private  String glassType;
+    /**
+     * 澶囨敞
+     */
+    private  String remark;
+
+}
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/mapper/EngineeringMapper.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/mapper/EngineeringMapper.java
similarity index 100%
rename from hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/mapper/EngineeringMapper.java
rename to hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/mapper/EngineeringMapper.java
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/mapper/xml/EngineeringMapper.xml b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/mapper/xml/EngineeringMapper.xml
similarity index 100%
rename from hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/mapper/xml/EngineeringMapper.xml
rename to hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/mapper/xml/EngineeringMapper.xml
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/service/EngineeringService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/service/EngineeringService.java
new file mode 100644
index 0000000..77bd557
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/service/EngineeringService.java
@@ -0,0 +1,38 @@
+package com.mes.engineering.service;
+
+import com.mes.engineering.entity.Engineering;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  鏈嶅姟绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-04-22
+ */
+public interface EngineeringService extends IService<Engineering> {
+
+
+    /**
+     * 寮�濮�/鏆傚仠浠诲姟
+     * @return boolean
+     */
+    boolean  changeTask(String projectId, Integer state);
+    /**
+     * 鏌ヨ閽㈠寲淇℃伅
+     * @return List<Engineering>
+     */
+    List<Engineering> selectEngineering(String engineeringId);
+    /**
+     * 淇濆瓨閽㈠寲淇℃伅
+     */
+    void saveEngineering(List<Engineering> engineering);
+    /**
+     * 鏌ヨ鏄惁鏈変笂鐗囦换鍔�
+     * @return Engineering
+     */
+    Engineering selectInitiate(Integer state);
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java
new file mode 100644
index 0000000..908468b
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java
@@ -0,0 +1,100 @@
+package com.mes.engineering.service.impl;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
+import com.mes.engineering.entity.Engineering;
+import com.mes.engineering.mapper.EngineeringMapper;
+import com.mes.engineering.service.EngineeringService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mes.pp.entity.OptimizeProject;
+import com.mes.pp.mapper.OptimizeProjectMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ *  鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-04-22
+ */
+@Service
+@Slf4j
+public class EngineeringServiceImpl extends ServiceImpl<EngineeringMapper, Engineering> implements EngineeringService {
+
+    @Autowired
+    OptimizeProjectMapper optimizeProjectMapper;
+    //寮�濮�/鏆傚仠浠诲姟
+    @Override
+    public  boolean  changeTask(String projectId, Integer state) {
+        //鏆傚仠姝e湪杩涜宸ョ▼
+        LambdaUpdateChainWrapper<Engineering> pauseWrapper = new LambdaUpdateChainWrapper<>(this.getBaseMapper());
+        pauseWrapper.set(Engineering::getState,0);
+        pauseWrapper.eq(Engineering::getState,1);
+        pauseWrapper.update();
+        //浣跨敤projectId浣滀负鏉′欢寮�濮嬪伐绋�
+        LambdaUpdateChainWrapper<Engineering> wrapper = new LambdaUpdateChainWrapper<>(this.getBaseMapper());
+        wrapper.set(Engineering::getState,state);
+        wrapper.eq(Engineering::getEngineerId,projectId);
+        return  wrapper.update();
+    }
+
+    @Override
+    @DS("pp")
+    public List<Engineering> selectEngineering(String engineeringId) {
+        //鏌ヨ閽㈠寲宸ョ▼淇℃伅
+        List<OptimizeProject> optimizeEngineerings = null;
+        if (engineeringId != null) {
+            QueryWrapper<OptimizeProject> wrapper = new QueryWrapper<>();
+            wrapper.select("project_no,project_name,avg_cut_pct,valid_cut_pct,last_cut_pct,glass_total,glass_total_area,raw_stock_qty,raw_stock_area,glass_type,remark ")
+                    .eq("project_no", engineeringId);
+            optimizeEngineerings = optimizeProjectMapper.selectList(wrapper);
+
+        }
+        List<Engineering> resultList=new ArrayList<>();
+// 閬嶅巻鏌ヨ缁撴灉璧嬪��
+        if (optimizeEngineerings != null) {
+            for (OptimizeProject map : optimizeEngineerings) {
+                // 鍒涘缓涓�涓柊鐨� OptimizeProject 瀵硅薄
+                Engineering engineering = new Engineering();
+                // 灏� Map 涓殑姣忎釜閿�煎鏄犲皠鍒� OptimizeProject 瀵硅薄鐨勭浉搴斿瓧娈典笂
+                engineering.setEngineerId( map.getProjectNo());//宸ョ▼id
+                engineering.setEngineerName( map.getProjectName());//宸ョ▼鍚嶇О
+                engineering.setAvgAvailability( map.getAvgCutPct());//骞冲潎浼樺寲鐜�
+                engineering.setValidAvailability( map.getValidCutPct());//鏈夋晥浼樺寲鐜�
+                engineering.setLastAvailability( map.getLastCutPct());//灏剧墖浼樺寲鐜�
+                engineering.setState(0);//鐘舵��
+                engineering.setGlassTotal( map.getGlassTotal());//灏忕墖鐜荤拑鎬绘暟
+                engineering.setGlassTotalArea( map.getGlassTotalArea());//灏忕墖鎬婚潰绉�
+                engineering.setPlanPatternTotal( map.getRawStockQty());//璁″垝鍘熺墖鎬绘暟
+                engineering.setPlanPatternTotalArea( map.getRawStockArea());//璁″垝鍘熺墖鎬婚潰绉�
+                engineering.setFilmsId( map.getGlassType());//鑶滅郴
+                engineering.setNotes( map.getRemark());//澶囨敞
+                // 灏嗘槧灏勫悗鐨勫璞℃坊鍔犲埌缁撴灉鍒楄〃涓�
+                resultList.add(engineering);
+            }
+        }
+        log.info("鏌ヨ鍑洪挗鍖栧伐绋嬮泦鍚堜繚瀛樺埌瀹炰綋绫粄}",resultList);
+        return resultList;
+    }
+
+    @Override
+    public void saveEngineering(List<Engineering> engineering) {
+        this.saveBatch(engineering);
+        //淇濆瓨閽㈠寲宸ョ▼淇℃伅
+    }
+
+    @Override
+    public  Engineering selectInitiate(Integer state) {
+        //鏌ヨ鏄惁鏈夊紑濮嬩笂鐗囩殑宸ョ▼浠诲姟
+        QueryWrapper<Engineering> wrapper = new QueryWrapper<>();
+            wrapper.eq("state", state);
+        return this.getOne(wrapper);
+    }
+
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/GlassInfo.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/GlassInfo.java
index dfa7b6e..f1fa50d 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/GlassInfo.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/GlassInfo.java
@@ -34,7 +34,7 @@
     /**
      * 娴佺▼鍗$幓鐠冪被鍨�
      */
-    private Integer glassType;
+    private String glassType;
 
     /**
      * 瀹�
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/OptimizeGlassinfo.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/OptimizeGlassinfo.java
index 8f50981..622197a 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/OptimizeGlassinfo.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/OptimizeGlassinfo.java
@@ -15,7 +15,7 @@
     /**
      * 娴佺▼鍗″彿
      */
-    private String projectId;
+    private String processId;
 
     /**
      * 宸ョ▼绉嶇被
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/GlassInfoService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/GlassInfoService.java
index 746b5f4..f85f7f8 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/GlassInfoService.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/GlassInfoService.java
@@ -1,7 +1,6 @@
 package com.mes.glassinfo.service;
 
 import com.mes.glassinfo.entity.GlassInfo;
-import com.baomidou.mybatisplus.extension.service.IService;
 import com.github.yulichang.base.MPJBaseService;
 import java.util.List;
 
@@ -14,6 +13,14 @@
  * @since 2024-04-29
  */
 public interface GlassInfoService extends MPJBaseService<GlassInfo> {
-
+      /**
+       * 鏌ヨ灏忕墖琛�
+       * @return List<GlassInfo>
+       */
       List<GlassInfo> selectGlassInfo(String engineeringId);
+      /**
+       * 淇濆瓨灏忕墖琛�
+       */
+      void saveGlassInfo(List<GlassInfo> glassinfo);
 }
+
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
index 88838b9..25fada5 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
@@ -6,17 +6,14 @@
 import com.mes.glassinfo.entity.OptimizeGlassinfo;
 import com.mes.glassinfo.mapper.GlassInfoMapper;
 import com.mes.glassinfo.service.GlassInfoService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.mes.pp.entity.OptimizeProject;
 import com.mes.pp.mapper.OptimizeProjectMapper;
-import com.mes.uppattenusage.entity.UpPattenUsage;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 
 /**
@@ -34,14 +31,13 @@
     OptimizeProjectMapper optimizeProjectMapper;
     @Override
     @DS("pp")
-
     public List<GlassInfo> selectGlassInfo(String engineeringId) {
         List<OptimizeGlassinfo> optimizeGlassinfos=null;
         if (engineeringId != null) {
             optimizeGlassinfos = optimizeProjectMapper.selectJoinList(OptimizeGlassinfo.class, new MPJQueryWrapper<OptimizeProject>()
                     .select("b.process_id,t.type,b.width,b.height,t.glass_thickness,t.glass_type,b.p_width,b.p_height,b.stock_id,b.heat_layout_id,b.heat_layout_sort,b.x_axis,b.y_axis,b.project_no,b.glass_id")
                     .leftJoin("optimize_detail b on t.project_no=b.project_no")
-                    .eq("t.state",200)
+                    .eq("t.state",100)
                     .eq("t.project_no", engineeringId));
         }
 
@@ -54,10 +50,13 @@
                 GlassInfo glassInfo = new GlassInfo();
                 // 灏� Map 涓殑姣忎釜閿�煎鏄犲皠鍒� OptimizeGlassinfo 瀵硅薄鐨勭浉搴斿瓧娈典笂
                 glassInfo.setEngineerId(map.getProjectNo());
-                glassInfo.setFlowCardId(map.getProjectId());
+                glassInfo.setFlowCardId(map.getProcessId());
                 glassInfo.setFilmsid(map.getGlassType());
+                glassInfo.setGlassType(map.getType());
                 glassInfo.setWidth(map.getWidth());
                 glassInfo.setHeight(map.getHeight());
+                glassInfo.setEdgWidth(map.getPWidth());
+                glassInfo.setEdgHeight(map.getPHeight());
                 glassInfo.setThickness(map.getGlassThickness());
                 glassInfo.setPatternSequence(map.getStockId());//
                 glassInfo.setTemperingLayoutId(map.getHeatLayoutId());//閽㈠寲鐗堝浘id
@@ -74,4 +73,9 @@
         log.info("鏌ヨ鍑篻lassinfopro鐨勬暟鎹畕}:",optimizeGlassinfos);
         return resultList;
     }
+
+    @Override
+    public void saveGlassInfo(List<GlassInfo> glassinfo) {
+        this.saveBatch(glassinfo);
+    }
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/OptimizeProjectController.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/OptimizeProjectController.java
index 222759c..6b97fc2 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/OptimizeProjectController.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/OptimizeProjectController.java
@@ -41,16 +41,16 @@
         return Result.build(200, "", glass);
     }
 
-    @ApiOperation("淇濆瓨宸ョ▼淇℃伅")
-    @PostMapping("/saveProject") //鏄剧ず宸ョ▼閫夋嫨淇℃伅
-    public Result<List<OptimizeProject>> saveProject(@RequestBody OptimizeRequest optimizeRequest) {
-        log.info("鑾峰彇閫夋嫨濂界殑宸ョ▼id杩涜鏌ヨ鏁版嵁鍚庝繚瀛�");
-        List<OptimizeProject> glass = optimizeProjectService.selectSaveProject(optimizeRequest);
-        log.info("鏄剧ず宸ョ▼閫夋嫨淇℃伅鍚庝繚瀛樺埌upPattenUsage琛�:{}", glass);
-        optimizeProjectService.insetupPattenUsage(glass);
-        //void insetProject(glass);
-        return Result.build(200, "", glass);
-    }
+//    @ApiOperation("淇濆瓨宸ョ▼淇℃伅")
+//    @PostMapping("/saveProject") //鏄剧ず宸ョ▼閫夋嫨淇℃伅
+//    public Result<List<OptimizeProject>> saveProject(@RequestBody OptimizeRequest optimizeRequest) {
+//        log.info("鑾峰彇閫夋嫨濂界殑宸ョ▼id杩涜鏌ヨ鏁版嵁鍚庝繚瀛�");
+//        List<OptimizeProject> glass = optimizeProjectService.selectSaveProject(optimizeRequest);
+//        log.info("鏄剧ず宸ョ▼閫夋嫨淇℃伅鍚庝繚瀛樺埌upPattenUsage琛�:{}", glass);
+//        optimizeProjectService.insetupPattenUsage(glass);
+//        //void insetProject(glass);
+//        return Result.build(200, "", glass);
+//    }
 
 }
 
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeProject.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeProject.java
index beb015c..032b7c5 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeProject.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeProject.java
@@ -87,7 +87,7 @@
     /**
      * 绗竴娆″钩鍧囧垏瑁佺巼
      */
-    private String fristCutPct;
+    private Double fristCutPct;
 
     /**
      * 浣跨敤鐨勫師鏂欐暟
@@ -97,22 +97,22 @@
     /**
      * 浣跨敤鐨勫師鏂欓潰绉�
      */
-    private String rawStockArea;
+    private Double rawStockArea;
 
     /**
      * 骞冲潎鍒囪鐜�
      */
-    private String avgCutPct;
+    private Double avgCutPct;
 
     /**
      * 鏈夋晥鍒囪鐜�
      */
-    private String validCutPct;
+    private Double validCutPct;
 
     /**
      * 灏剧墖鍒囪鐜�
      */
-    private String lastCutPct;
+    private Double lastCutPct;
 
     /**
      * g娣锋帓绋嬪害
@@ -137,27 +137,27 @@
     /**
      * g涓婄墖瀹�
      */
-    private Float loadWidth;
+    private Double loadWidth;
 
     /**
      * g涓婄墖闀�
      */
-    private Float loadLength;
+    private Double loadLength;
 
     /**
      * x闂撮殧
      */
-    private Float xSpace;
+    private Double xSpace;
 
     /**
      * y闂撮殧
      */
-    private Float ySpace;
+    private Double ySpace;
 
     /**
      * g骞冲潎瑁呰浇鐜�
      */
-    private Float loadRate;
+    private Double loadRate;
 
     /**
      * 娴佺▼鍗¢泦鍚�
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeProjectService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeProjectService.java
index 0fb765e..94fe110 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeProjectService.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeProjectService.java
@@ -1,6 +1,5 @@
 package com.mes.pp.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
 import com.github.yulichang.base.MPJBaseService;
 import com.mes.pp.entity.OptimizeProject;
 import com.mes.pp.entity.request.OptimizeRequest;
@@ -19,17 +18,12 @@
 
     /**
      * 鏌ヨ鍙鍙栫殑浠诲姟宸ョ▼淇℃伅
-     * @return
+     * @return List<OptimizeProject>
      */
     List<OptimizeProject> listByState(OptimizeRequest optimizeRequest);
+
     /**
-     * 鏌ヨ淇濆瓨鍒板師鐗囦娇鐢ㄨ鎯呰〃鐨勬暟鎹�
-     * @return
+     * 灏嗗伐绋嬩俊鎭洿鏂扮姸鎬佷负宸查鍙�
      */
-    List<OptimizeProject> selectSaveProject(OptimizeRequest optimizeRequest);
-    /**
-     * 灏嗗伐绋嬩俊鎭繚瀛樺埌鍘熺墖浣跨敤璇︽儏琛�
-     * @return
-     */
-    void insetupPattenUsage(List<OptimizeProject> glass);
+    void changeTask(String engineeringId, int i);
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeProjectServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeProjectServiceImpl.java
index 5df4ef4..76aa79e 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeProjectServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeProjectServiceImpl.java
@@ -2,20 +2,18 @@
 
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.mes.pp.entity.OptimizeProject;
 import com.mes.pp.entity.request.OptimizeRequest;
 import com.mes.pp.mapper.OptimizeProjectMapper;
 import com.mes.pp.service.OptimizeProjectService;
-import com.mes.uppattenusage.entity.UpPattenUsage;
 import com.mes.uppattenusage.mapper.UpPattenUsageMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.Collections;
 import java.util.List;
 
 /**
@@ -47,23 +45,15 @@
 
 
     @Override
-    public void insetupPattenUsage(List<OptimizeProject> glass) {
-        log.info("寰幆鏌ヨ缁撴灉淇濆瓨鍒癠pPattenUsage琛ㄤ腑");
-        for (OptimizeProject project : glass) {
-            UpPattenUsage upPattenUsage = new UpPattenUsage();
-            upPattenUsage.setEngineeringId(project.getProjectNo());
-            upPattenUsage.setFilmsId(project.getGlassType());
-            upPattenUsage.setState(project.getState());
-            upPattenUsageMapper.insert(upPattenUsage);
-        }
+    public void changeTask(String engineeringId, int state) {
+        UpdateWrapper<OptimizeProject> wrapper = new UpdateWrapper<>();
+        wrapper.eq("project_no",engineeringId)
+                .set("state",state);
+        boolean updateSuccess = this.update(wrapper);
+        log.info("宸ョ▼琛ㄦ洿鏂扮姸鎬亄}",updateSuccess);
+
     }
 
-    @Override
-    public List<OptimizeProject> selectSaveProject(OptimizeRequest optimizeRequest) {
-        log.info("灏嗗弬鏁颁紶鍏ュ埌鏌ヨ绫婚噷,宸ョ▼鍙峰仛闈炵┖鍒ゆ柇妯$硦鏌ヨ");
 
-        log.info("杩斿洖宸ョ▼淇℃伅");
-        return this.baseMapper.saveProject(optimizeRequest);
-    }
 
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/controller/UpPattenUsageController.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/controller/UpPattenUsageController.java
index 48e78f1..04c3279 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/controller/UpPattenUsageController.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/controller/UpPattenUsageController.java
@@ -1,56 +1,74 @@
 package com.mes.uppattenusage.controller;
+import com.mes.engineering.entity.Engineering;
+import com.mes.engineering.service.EngineeringService;
+import com.mes.glassinfo.service.GlassInfoService;
+import com.mes.pp.entity.OptimizeProject;
+import com.mes.pp.service.OptimizeProjectService;
+import com.mes.uppattenusage.entity.UpPattenUsage;
+import com.mes.glassinfo.entity.GlassInfo;
+import com.mes.uppattenusage.service.UpPattenUsageService;
+import com.mes.utils.Result;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
-//
-//import com.mes.uppattenusage.service.GlassInfoService;
-//import com.mes.uppattenusage.entity.OptimizeUpPattenUsage;
-//import com.mes.uppattenusage.entity.UpPattenUsage;
-//import com.mes.glassinfo.entity.GlassInfo;
-//import com.mes.uppattenusage.service.UpPattenUsageService;
-//import com.mes.utils.Result;
-//import io.swagger.annotations.ApiOperation;
-//import lombok.extern.slf4j.Slf4j;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.web.bind.annotation.GetMapping;
-//import org.springframework.web.bind.annotation.RequestBody;
-//import org.springframework.web.bind.annotation.RequestMapping;
-//import org.springframework.web.bind.annotation.RestController;
-//
-//import java.util.List;
-//
-///**
-// * <p>
-// *  鍓嶇鎺у埗鍣�
-// * </p>
-// *
-// * @author zhoush
-// * @since 2024-04-18
-// */
-//@RestController
-//@RequestMapping("/up-patten-usage")
-//@Slf4j
-//public class UpPattenUsageController {
-//
-//    @Autowired
-//    private UpPattenUsageService upPattenUsageService;
-//    @Autowired
-//    private  GlassInfoService glassInfoService;
-//    @ApiOperation("鏄剧ず姝e湪鍑虹墖鐨勫伐绋嬩俊鎭�")
-//    @GetMapping("/prioritylist") //鏌ヨ鐜板湪涓婄墖鏈虹殑鐜荤拑淇℃伅
-//    public Result<List<UpPattenUsage>> prioritylist() {
-//        List<UpPattenUsage> glass = upPattenUsageService.prioritylist(1);
-//        log.info("鏄剧ず宸ヤ綅涓婄殑鐜荤拑淇℃伅:{}", glass);
-//        return Result.build(200, "", glass);
-//    }
-//
-//    @ApiOperation("鐐瑰嚮閫夋嫨宸ョ▼淇濆瓨鍚庤繘琛岃皟鐢�,浼犲叆宸ョ▼鍙�")
-//    @GetMapping("/saveUpPattenUsage") //鏌ヨ鐜板湪涓婄墖鏈虹殑鐜荤拑淇℃伅
-//    public Result<Integer> saveUpPattenUsage(String engineeringId) {
-//        List<UpPattenUsage> upPattenUsages = upPattenUsageService.selectSaveUpPattenUsage(engineeringId);
-//        log.info("灏嗘煡璇㈠嚭鐨刄pPattenUsage鏁版嵁淇濆瓨鍒版暟鎹簱琛ㄩ噷");
-//        upPattenUsageService.saveUpPattenUsage(upPattenUsages);
-//        log.info("浠嶱P琛ㄦ煡璇lassinfo鐨勬暟鎹苟淇濆瓨鍒拌〃閲�");
-//        List<GlassInfo> glassinfo=glassInfoService.selectGlassInfo(engineeringId);
-//        return Result.build(200, "", 200);
-//    }
-//}
+import java.util.List;
+
+/**
+ * <p>
+ *  鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-18
+ */
+@RestController
+@RequestMapping("/up-patten-usage")
+@Slf4j
+public class UpPattenUsageController {
+
+    @Autowired
+    private UpPattenUsageService upPattenUsageService;
+    @Autowired
+    private  GlassInfoService glassInfoService;
+    @Autowired
+    private  EngineeringService engineeringService;
+    @Autowired
+    private OptimizeProjectService optimizeProjectService;
+    @ApiOperation("鏄剧ず姝e湪鍑虹墖鐨勫伐绋嬩俊鎭�")
+    @GetMapping("/prioritylist") //鏌ヨ鐜板湪涓婄墖鏈虹殑鐜荤拑淇℃伅
+    public Result<List<UpPattenUsage>> prioritylist() {
+        List<UpPattenUsage> glass = upPattenUsageService.prioritylist(1);
+        log.info("鏄剧ず宸ヤ綅涓婄殑鐜荤拑淇℃伅:{}", glass);
+        return Result.build(200, "", glass);
+    }
+
+    @ApiOperation("鐐瑰嚮閫夋嫨宸ョ▼淇濆瓨鍚庤繘琛岃皟鐢�,浼犲叆宸ョ▼鍙�")
+    @GetMapping("/saveUpPattenUsage") //鏌ヨ鐜板湪涓婄墖鏈虹殑鐜荤拑淇℃伅
+    public Result<Integer> saveUpPattenUsage(String engineeringId) {
+        log.info("浼犲叆宸ョ▼鍙峰垽鏂槸鍚﹀凡淇濆瓨:{}", engineeringId);
+        UpPattenUsage upPattenUsage= upPattenUsageService.selectedEngineering(engineeringId);
+        if (upPattenUsage!=null){
+            log.info("宸蹭繚瀛樿繃");
+            return Result.build(200, "宸蹭繚瀛樼殑宸ョ▼", 200);
+        }else {
+            List<UpPattenUsage> upPattenUsages = upPattenUsageService.selectSaveUpPattenUsage(engineeringId);
+            log.info("灏嗘煡璇㈠嚭鐨刄pPattenUsage鏁版嵁淇濆瓨鍒版暟鎹簱琛ㄩ噷");
+            upPattenUsageService.saveUpPattenUsage(upPattenUsages);
+            log.info("浠嶱P琛ㄦ煡璇lassinfo鐨勬暟鎹苟淇濆瓨鍒拌〃閲�");
+            List<GlassInfo> glassinfo=glassInfoService.selectGlassInfo(engineeringId);
+            glassInfoService.saveGlassInfo(glassinfo);
+            log.info("浠嶱P琛ㄦ煡璇ngineering鐨勬暟鎹苟淇濆瓨鍒拌〃閲�");
+            List<Engineering> engineering= engineeringService.selectEngineering(engineeringId);
+            engineeringService.saveEngineering(engineering);
+            log.info("鏇存敼pp琛ㄧ姸鎬佷负宸查鍙�");
+            optimizeProjectService.changeTask(engineeringId, 200);
+            return Result.build(200, "", 200);
+        }
+
+    }
+}
 
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/entity/OptimizeUpPattenUsage.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/entity/OptimizeUpPattenUsage.java
index 7882159..d4aca93 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/entity/OptimizeUpPattenUsage.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/entity/OptimizeUpPattenUsage.java
@@ -40,7 +40,7 @@
     /**
      * 鍘熺墖鐗堝浘鐗囧簭
      */
-    private Integer heatLayoutSort;
+    private Integer stockId;
 
     /**
      * 鐘舵��
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/service/UpPattenUsageService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/service/UpPattenUsageService.java
index 37427e8..bcbd926 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/service/UpPattenUsageService.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/service/UpPattenUsageService.java
@@ -3,7 +3,6 @@
 import com.mes.uppattenusage.entity.UpPattenUsage;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * <p>
@@ -14,10 +13,33 @@
  * @since 2024-04-18
  */
 public interface UpPattenUsageService extends MPJBaseService<UpPattenUsage> {
+     /**
+      * 鏌ヨ宸ヤ綅涓婄殑鐜荤拑淇℃伅
+      * @return List<UpPattenUsage>
+      */
      List<UpPattenUsage> prioritylist(int state);
-
+     /**
+      * 鏌ヨ涓婄墖椤哄簭淇℃伅
+      * @return List<UpPattenUsage>
+      */
      List<UpPattenUsage> selectSaveUpPattenUsage(String engineeringId);
-
+     /**
+      * 淇濆瓨涓婄墖椤哄簭淇℃伅
+      */
      void saveUpPattenUsage(List<UpPattenUsage> upPattenUsages);
+     /**
+      * 鏇存柊涓婄墖琛ㄧ姸鎬�
+      */
+     void updateUpPattenUsageState(UpPattenUsage upPattenUsage, Integer state);
+     /**
+      * 鍒ゆ柇姝ゅ伐绋嬫槸鍚﹀凡淇濆瓨杩�
+      * @return UpPattenUsage
+      */
+     UpPattenUsage selectedEngineering(String engineeringId);
+     /**
+      * 鏌ヨ姝e湪鎵ц鐨勪笂鐗囦换鍔�
+      * @return UpPattenUsage
+      */
+     UpPattenUsage selectOverTask();
 }
 
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java
index 59a06be..afb470a 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.query.MPJQueryWrapper;
 import com.mes.pp.entity.OptimizeProject;
@@ -46,7 +47,7 @@
         List<OptimizeUpPattenUsage> upPattenUsageList = null;
         if (engineeringId != null) {
             upPattenUsageList = optimizeProjectMapper.selectJoinList(OptimizeUpPattenUsage.class, new MPJQueryWrapper<OptimizeProject>()
-                    .select("t.project_no,t.glass_type,b.width,b.height,REGEXP_REPLACE(t.glass_thickness,'\\D','')as glass_thickness,b.heat_layout_sort")
+                    .select("t.project_no,t.glass_type,b.width,b.height,REGEXP_REPLACE(t.glass_thickness,'\\D','')as glass_thickness,b.stock_id")
                     .leftJoin("optimize_layout b on t.project_no=b.project_no")
                     .eq("b.project_no", engineeringId));
         }
@@ -59,12 +60,12 @@
                 // 鍒涘缓涓�涓柊鐨� OptimizeProject 瀵硅薄
                 UpPattenUsage optimizeProject = new UpPattenUsage();
                 // 灏� Map 涓殑姣忎釜閿�煎鏄犲皠鍒� OptimizeProject 瀵硅薄鐨勭浉搴斿瓧娈典笂
-                optimizeProject.setEngineeringId((String) map.getProjectNo());
-                optimizeProject.setFilmsId((String) map.getGlassType());
-                optimizeProject.setWidth((Double) map.getWidth());
-                optimizeProject.setHeight((Double) map.getHeight());
-                optimizeProject.setThickness((Double)map.getHeight());
-                optimizeProject.setLayoutSequence((Integer) map.getHeatLayoutSort());
+                optimizeProject.setEngineeringId(map.getProjectNo());
+                optimizeProject.setFilmsId( map.getGlassType());
+                optimizeProject.setWidth(map.getWidth());
+                optimizeProject.setHeight( map.getHeight());
+                optimizeProject.setThickness(map.getGlassThickness());
+                optimizeProject.setLayoutSequence( map.getStockId());
                 optimizeProject.setState(0);
                 // 灏嗘槧灏勫悗鐨勫璞℃坊鍔犲埌缁撴灉鍒楄〃涓�
                 resultList.add(optimizeProject);
@@ -80,10 +81,29 @@
         //淇濆瓨鍘熺墖浣跨敤璇︽儏琛�
     }
 
-    //@Override
-    public void selectSaveGlassinfo(String engineeringId) {
-        //淇濆瓨鐜荤拑淇℃伅琛�
-        //optimizeProjectMapper.selectJoinList();
+    @Override
+    public void updateUpPattenUsageState(UpPattenUsage upPattenUsage, Integer state) {
+        upPattenUsage.setState(state);
+        boolean updateSuccess=this.updateById(upPattenUsage);
+        log.info("鏇存柊鐘舵�亄}",updateSuccess);
+        //鏇存柊鐘舵��
+    }
+
+    @Override
+    public UpPattenUsage selectedEngineering(String engineeringId) {
+        QueryWrapper<UpPattenUsage>wrapper = new QueryWrapper<>();
+        wrapper.eq("engineering_id",engineeringId)
+                .last("limit 1");
+        return this.getOne(wrapper);
+    }
+
+    @Override
+    public UpPattenUsage selectOverTask() {
+        QueryWrapper<UpPattenUsage>wrapper = new QueryWrapper<>();
+        wrapper.gt("state",0)
+                .lt("state",99)
+                .last("limit 1");
+        return this.getOne(wrapper);
     }
 
 
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/config/TokenWebSecurityConfig.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/config/TokenWebSecurityConfig.java
index e5f3071..a130533 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/config/TokenWebSecurityConfig.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/config/TokenWebSecurityConfig.java
@@ -72,6 +72,7 @@
                 .antMatchers("/webjars/**").permitAll()
                 .antMatchers("/v2/**").permitAll()
                 .antMatchers("/swagger-resources/**").permitAll()
+                .antMatchers("/**").permitAll()
                 .anyRequest().authenticated()
 
                 // 寮傚父澶勭悊鍣�
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java
index 34416ba..1505d1b 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java
@@ -77,4 +77,4 @@
         //鏀捐
         filterChain.doFilter(request, response);
     }
-}
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/CacheGlassModuleApplication.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/CacheGlassModuleApplication.java
index 376cca1..13cceb4 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/CacheGlassModuleApplication.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/CacheGlassModuleApplication.java
@@ -23,9 +23,6 @@
 
     public static void main(String[] args) {
         try {
-//            SpringApplication springApplication = new SpringApplication(CacheGlassModuleApplication.class);
-//            ConfigurableApplicationContext applicationContext = springApplication.run(args);
-//            WebSocketServer.setApplicationContext(applicationContext);
             SpringApplication.run(CacheGlassModuleApplication.class, args);
         } catch (Exception e) {
             log.error(e.getMessage());
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/common/PlcHomeEdg.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/common/PlcHomeEdg.java
deleted file mode 100644
index 7331a33..0000000
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/common/PlcHomeEdg.java
+++ /dev/null
@@ -1,202 +0,0 @@
-package com.mes.common;
-
-import cn.hutool.json.JSONObject;
-import com.github.yulichang.wrapper.MPJLambdaWrapper;
-import com.mes.edgstoragecage.entity.EdgStorageCage;
-import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
-import com.mes.edgstoragecage.mapper.EdgStorageCageDetailsMapper;
-import com.mes.edgstoragecage.service.EdgStorageCageDetailsService;
-import com.mes.edgstoragecage.service.EdgStorageCageService;
-import com.mes.glassinfo.entity.GlassInfo;
-import com.mes.glassinfo.service.GlassInfoService;
-import com.mes.taskcache.entity.TaskCache;
-import com.mes.taskcache.service.TaskCacheService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import java.util.*;
-
-@Service
-@Slf4j
-public class PlcHomeEdg extends Thread {
-
-
-    @Autowired
-    TaskCacheService taskCacheService;
-    @Autowired
-    GlassInfoService glassInfoService;
-    @Autowired
-    EdgStorageCageService edgStorageCageService;
-    @Autowired
-    EdgStorageCageDetailsService edgStorageCageDetailsService;
-    @Resource
-    private EdgStorageCageDetailsMapper edgStorageCageDetailsMapper;
-
-    private Map<String, String> mapParameter = new HashMap<String, String>();
-    private Map<String, String> mapValue = new HashMap<String, String>();
-    private Map<String, String> mapType = new HashMap<String, String>();
-    private Map<String, Object> mapSettings = new HashMap<String, Object>();
-
-
-    private void initialize() {
-//        mapParameter.put("A06_request_word", "DB11.0");   //work
-//        mapParameter.put("A05_scanning_ID", "DB11.2");
-//        mapParameter.put("MES_confirmation_word", "DB11.40");
-//        mapParameter.put("A09_glass_status", "DB11.70");
-//        //mapParameter.put("A10_glass_status", "DB11.72");
-//        mapParameter.put("A09_prohibit_film_production", "DB11.74");
-//        mapParameter.put("A10_prohibit_film_production", "DB11.76");
-//        mapSettings.put("territoryPoor", 3);
-//        mapType.put("A06_request_word", "Word");
-//        mapType.put("A05_scanning_ID", "String");
-//        mapType.put("MES_confirmation_word", "Word");
-//        mapType.put("A09_glass_status", "Word");
-//        //mapType.put("A10_glass_status", "Word");
-//        mapType.put("A09_prohibit_film_production", "Word");
-//        mapType.put("A10_prohibit_film_production", "Word");
-        mapValue.put("A06_request_word", "1");//璇锋眰瀛�
-        mapValue.put("A05_scanning_ID", "11111111111");//璇锋眰ID
-        mapValue.put("MES_confirmation_word", "0");//MES鍙戦�佸瓧
-        mapValue.put("A09_glass_status", "0");//A09鐜荤拑鐘舵��
-        mapValue.put("A10_glass_status", "0");//A09鐜荤拑鐘舵��
-        mapValue.put("A09_prohibit_film_production", "0");//A9绂佹鍑虹墖
-        mapValue.put("A10_prohibit_film_production", "0");//A10绂佹鍑虹墖
-
-    }
-
-    private void inTo() {
-        List<GlassInfo> glassInfos = glassInfoService.selectId(mapValue.get("A05_scanning_ID"));
-        if (glassInfos.size() < 1) {
-            log.info("姝ょ幓鐠冪紪鍙蜂笉瀛樺湪");
-        } else if (glassInfos.size() == 1) {
-            //娣诲姞杩涚墖浠诲姟  鏌ユ壘绌烘牸
-            log.info("姝e父");
-            List<EdgStorageCage> list = edgStorageCageService.selectCacheEmpty();
-
-            if (list.size() > 1) {
-                EdgStorageCageDetails edgStorageCageDetails = edgStorageCageDetailsMapper.selectOne(new MPJLambdaWrapper<EdgStorageCageDetails>()
-                        .eq(EdgStorageCageDetails::getGlassId, glassInfos.get(0).getGlassId()));
-                edgStorageCageDetails.setState(200);
-
-                TaskCache taskCache = new TaskCache();
-                EdgStorageCage edgStorageCage = list.get(0);
-                taskCache.setGlassId(glassInfos.get(0).getGlassId());
-                taskCache.setTaskStatus(0);
-                taskCache.setStartCell(0);
-                taskCache.setEndCell(edgStorageCage.getSlot());
-                taskCache.setTaskType(1);
-                taskCache.setCreateTime(new Date());
-                edgStorageCageDetailsMapper.updateById(edgStorageCageDetails);
-                taskCacheService.insertTaskCache(taskCache);
-                S7object.getinstance().plccontrol.WriteWord(mapParameter.get("MES_confirmation_word"), (short) 1);
-            } else {
-                log.info("涓嶅瓨鍦ㄧ┖鏍�");
-            }
-        } else {
-            log.info("姝ょ幓鐠冪紪鍙峰瓨鍦ㄥ涓�");
-        }
-    }
-
-    private void outTo(int line) {
-        int endcell = 0;
-        EdgStorageCageDetails outEdgStorageCageDetails = new EdgStorageCageDetails();
-        TaskCache taskCacheA09 = taskCacheService.selectLastOutCacheInfo("");
-        TaskCache taskCacheA10 = taskCacheService.selectLastOutCacheInfo("");
-        //涓ょ嚎鍚勮嚜瑕佸嚭鐨勭幓鐠�
-        EdgStorageCageDetails glassInfo09 = edgStorageCageDetailsService.selectConformGlass(taskCacheA09.getGlassId(), (int) mapSettings.get("territoryPoor"));
-        EdgStorageCageDetails glassInfo10 = edgStorageCageDetailsService.selectConformGlass(taskCacheA10.getGlassId(), (int) mapSettings.get("territoryPoor"));
-        //鍐冲畾绾胯矾
-        if (line == 1) {
-            endcell = 9000;
-            outEdgStorageCageDetails = glassInfo09;
-        } else if (line == 2) {
-            endcell = 1000;
-            outEdgStorageCageDetails = glassInfo10;
-        } else if (line == 3) {
-            endcell = 9000;//榛樿璧颁竴鍙风嚎  浼樺寲鏂瑰悜鍙牴鎹�  瀵规瘮涓ょ嚎閫熷害/涓ょ嚎褰撳墠浠诲姟鎯呭喌鍋�
-            outEdgStorageCageDetails = glassInfo09;
-        }
-        if (outEdgStorageCageDetails != null && endcell > 0) {
-            TaskCache taskCache = new TaskCache();
-            taskCache.setGlassId(outEdgStorageCageDetails.getGlassId());
-            taskCache.setTaskStatus(0);
-            taskCache.setStartCell(outEdgStorageCageDetails.getSlot());
-            taskCache.setEndCell(endcell);
-            taskCache.setTaskType(2);
-            taskCache.setCreateTime(new Date());
-            taskCacheService.insertTaskCache(taskCache);
-            S7object.getinstance().plccontrol.WriteWord(mapParameter.get("MES_confirmation_word"), (short) 1);
-        }
-
-
-    }
-
-    @Override
-    public void run() {
-        boolean start = true;
-        initialize();
-        log.info("褰撳墠鍙傛暟鍊硷細{}", mapValue);
-        while (this != null && start) {
-            JSONObject jsonObject = new JSONObject();
-            for (String key : mapParameter.keySet()) {
-                String value = "";
-                if ("String".equals(mapType.get(key))) {
-                    value = S7object.getinstance().plccontrol.readString(mapParameter.get(key));
-                } else {
-                    value = S7object.getinstance().plccontrol.readWord(mapParameter.get(key)) + "";
-                }
-                mapValue.put(key, value);
-            }
-
-            S7object.getinstance().plccontrol.WriteWord(S7object.getinstance().PlcMesObject.getPlcParameter("A06_request_word").getAddress(), (short)1);
-            try {
-                Thread.sleep(1000);
-//                initialize();//鍒濆鍖栨暟鎹�
-                if ("0".equals(S7object.getinstance().PlcMesObject.getPlcParameter("A06_request_word"))) {
-                    //娓呴櫎
-                    S7object.getinstance().plccontrol.WriteWord(mapParameter.get("MES_confirmation_word"), (short) 0);
-                } else if ("1".equals(S7object.getinstance().PlcMesObject.getPlcParameter("A06_request_word")) &&
-                        "0".equals(S7object.getinstance().PlcMesObject.getPlcParameter("MES_confirmation_word"))) {
-
-                    inTo();
-                } else if ("2".equals(mapValue.get("A06_request_word")) &&
-                        "0".equals(mapValue.get("MES_confirmation_word")) && !"0".equals(mapValue.get("A09_glass_status"))) {
-                    //09绌洪棽 锛�1      10绌洪棽 锛�2        閮界┖闂诧細3    鍏朵粬0
-                    outTo(Integer.parseInt(mapValue.get("A09_glass_status")));
-                } else if ("3".equals(mapValue.get("A06_request_word")) &&
-                        "0".equals(mapValue.get("MES_confirmation_word"))) {
-
-                    if ("0".equals(mapValue.get("A09_glass_status")) || "0".equals(mapValue.get("A10_glass_status"))) {
-                        outTo(Integer.parseInt(mapValue.get("A09_glass_status")));
-                    } else {
-                        inTo();
-                    }
-                }
-
-
-            } catch (InterruptedException e) {
-                e.printStackTrace();
-            }
-//            log.info("鎺ㄦ暟鎹�");
-            // jsonObject.append("params", new short[] { 30, 40, });
-            ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Home");
-            if (sendwServer != null) {
-                for (WebSocketServer webserver : sendwServer) {
-                    webserver.sendMessage(jsonObject.toString());
-                    if (webserver != null) {
-
-                        List<String> messages = webserver.getMessages();
-
-                        if (!messages.isEmpty()) {
-                            // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
-                            webserver.clearMessages();
-                        }
-                    }
-
-                }
-            }
-        }
-    }
-}
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/controller/EdgGlassTaskInfoController.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/controller/EdgGlassTaskInfoController.java
new file mode 100644
index 0000000..b8b8a9d
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/controller/EdgGlassTaskInfoController.java
@@ -0,0 +1,20 @@
+package com.mes.edgglasstask.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-05-11
+ */
+@RestController
+@RequestMapping("/edgGlassTaskInfo")
+public class EdgGlassTaskInfoController {
+
+}
+
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/EdgGlassTaskInfo.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/EdgGlassTaskInfo.java
new file mode 100644
index 0000000..810e146
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/EdgGlassTaskInfo.java
@@ -0,0 +1,37 @@
+package com.mes.edgglasstask.entity;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author wu
+ * @since 2024-05-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EdgGlassTaskInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private String glassId;
+
+    private Integer width;
+
+    private Integer height;
+
+    private Integer thickness;
+
+    private Integer glassType;
+
+    private Integer status;
+
+
+
+
+}
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/mapper/EdgGlassTaskInfoMapper.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/mapper/EdgGlassTaskInfoMapper.java
new file mode 100644
index 0000000..2f6a5be
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/mapper/EdgGlassTaskInfoMapper.java
@@ -0,0 +1,18 @@
+package com.mes.edgglasstask.mapper;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mes.edgglasstask.entity.EdgGlassTaskInfo;
+
+/**
+ * <p>
+ *  Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author wu
+ * @since 2024-05-11
+ */
+@DS("salve_hangzhoumes")
+public interface EdgGlassTaskInfoMapper extends BaseMapper<EdgGlassTaskInfo> {
+
+}
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/EdgGlassTaskInfoService.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/EdgGlassTaskInfoService.java
new file mode 100644
index 0000000..1589b7d
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/EdgGlassTaskInfoService.java
@@ -0,0 +1,16 @@
+package com.mes.edgglasstask.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mes.edgglasstask.entity.EdgGlassTaskInfo;
+
+/**
+ * <p>
+ *  鏈嶅姟绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-05-11
+ */
+public interface EdgGlassTaskInfoService extends IService<EdgGlassTaskInfo> {
+
+}
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/impl/EdgGlassTaskInfoServiceImpl.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/impl/EdgGlassTaskInfoServiceImpl.java
new file mode 100644
index 0000000..34a06f4
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/impl/EdgGlassTaskInfoServiceImpl.java
@@ -0,0 +1,20 @@
+package com.mes.edgglasstask.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mes.edgglasstask.entity.EdgGlassTaskInfo;
+import com.mes.edgglasstask.mapper.EdgGlassTaskInfoMapper;
+import com.mes.edgglasstask.service.EdgGlassTaskInfoService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-05-11
+ */
+@Service
+public class EdgGlassTaskInfoServiceImpl extends ServiceImpl<EdgGlassTaskInfoMapper, EdgGlassTaskInfo> implements EdgGlassTaskInfoService {
+
+}
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCageDetails.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCageDetails.java
index 11c4269..6e85d25 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCageDetails.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCageDetails.java
@@ -1,6 +1,7 @@
 package com.mes.edgstoragecage.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -98,7 +99,7 @@
     private Integer patternSequence;
 
     /**
-     * 鐘舵��
+     * 鐘舵��  锛堣瘑鍒悗鎴愬姛鐘舵��100锛屽嚭鐗囦换鍔�101锛� 鎷胯蛋200锛岀牬鎹�201锛�
      */
     private Integer state;
 
@@ -106,6 +107,11 @@
      * 鐜荤拑闂撮殭
      */
     private Integer gap;
+    /**
+     * 鐜荤拑闂撮殭
+     */
+    @TableField(exist = false)
+    private Integer count;
 
 
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java
index 577e794..f9c0aa1 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java
@@ -40,16 +40,16 @@
     /**
      * 鏌ヨ绗煎唴鐗堝浘宸�艰寖鍥村唴鐨�  姝ゅ昂瀵哥幓鐠�  濡傛棤鍒欐寜鐓� 閽㈠寲鐗堝浘搴忓彿 浠ュ強鐜荤拑搴忓彿
      * @param glassId
-     * @param poor
+     * @param threshold
      * @return
      */
-    EdgStorageCageDetails selectConformGlass(String glassId, int poor);
+    EdgStorageCageDetails selectConformGlass(String glassId, int threshold);
 
     /**
      * 鑾峰彇鍑虹墖淇℃伅鏁版嵁
      * @param glassId
-     * @param poor
+     * @param threshold
      * @return
      */
-    EdgStorageCageDetails selectOutGlass(String glassId, int poor);
+    EdgStorageCageDetails selectOutGlass(String glassId, int threshold);
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java
index 92e8d63..a9d0721 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java
@@ -1,6 +1,5 @@
 package com.mes.edgstoragecage.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
 import com.github.yulichang.base.MPJBaseService;
 import com.mes.edgstoragecage.entity.EdgStorageCage;
 import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
@@ -19,6 +18,12 @@
 public interface EdgStorageCageService extends MPJBaseService<EdgStorageCage> {
 
     /**
+     * 鏌ヨ绗煎唴绂绘寚瀹氭牸瀛愭渶杩戠┖鏍�
+     * @return
+     */
+    EdgStorageCage selectNearestEmpty(int currentSlot);
+
+    /**
      * 鏌ヨ绗煎唴绌烘牸
      * @return
      */
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java
index 3196f32..930f76f 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java
@@ -143,51 +143,52 @@
 
     /**
      * 鏌ヨ绗煎唴鐗堝浘宸�艰寖鍥村唴鐨�  姝ゅ昂瀵哥幓鐠�  濡傛棤鍒欐寜鐓� 閽㈠寲鐗堝浘搴忓彿 浠ュ強鐜荤拑搴忓彿
+     *
      * @param glassId
-     * @param poor
+     * @param threshold
      * @return
      */
     @Override
-    public EdgStorageCageDetails selectConformGlass(String glassId, int poor){
+    public EdgStorageCageDetails selectConformGlass(String glassId, int threshold) {
         //1.鍘荤鍐呮煡璇㈡灏哄鐨勭幓鐠� 鐩墠鐗堝浘宸�煎唴鐨勭幓鐠�  鏄惁鏈夊悓灏哄鐨�
         //1.1 鏈夊悓灏哄鐨� 鍒欑敓鎴愬悓灏哄鐨勪换鍔�
         //1.2 鏃犲悓灏哄鐨� 鍒欑敓鎴愮増鍥鹃『搴忔渶灏忕殑鍑虹墖
-        EdgStorageCageDetails edgStorageCageDetails= baseMapper.selectOne(new MPJLambdaQueryWrapper<EdgStorageCageDetails>()
+        EdgStorageCageDetails edgStorageCageDetails = baseMapper.selectOne(new MPJLambdaQueryWrapper<EdgStorageCageDetails>()
                 .selectAll(EdgStorageCageDetails.class)
-                .eq(EdgStorageCageDetails::getGlassId,glassId)
+                .eq(EdgStorageCageDetails::getGlassId, glassId)
         );
-        List<EdgStorageCageDetails> listEdgStorageCageDetails= baseMapper.selectList(new LambdaQueryWrapper<EdgStorageCageDetails>()
-                .lt(EdgStorageCageDetails::getState,200)
-                .orderByAsc(EdgStorageCageDetails::getTemperingLayoutId,EdgStorageCageDetails::getTemperingFeedSequence)
+        List<EdgStorageCageDetails> listEdgStorageCageDetails = baseMapper.selectList(new LambdaQueryWrapper<EdgStorageCageDetails>()
+                .lt(EdgStorageCageDetails::getState, 200)
+                .orderByAsc(EdgStorageCageDetails::getTemperingLayoutId, EdgStorageCageDetails::getTemperingFeedSequence)
         );
-        EdgStorageCageDetails minTemperingLayoutId=new EdgStorageCageDetails();
-        if(!listEdgStorageCageDetails.isEmpty()){
-            minTemperingLayoutId=listEdgStorageCageDetails.get(0);
+        EdgStorageCageDetails minTemperingLayoutId = new EdgStorageCageDetails();
+        if (!listEdgStorageCageDetails.isEmpty()) {
+            minTemperingLayoutId = listEdgStorageCageDetails.get(0);
         }
-        EdgStorageCageDetails result=new EdgStorageCageDetails();
-        if(edgStorageCageDetails!=null&&minTemperingLayoutId!=null){
-            result=edgStorageCageMapper.selectJoinOne(EdgStorageCageDetails.class,new MPJLambdaWrapper<EdgStorageCage>()
+        EdgStorageCageDetails result = new EdgStorageCageDetails();
+        if (edgStorageCageDetails != null && minTemperingLayoutId != null) {
+            result = edgStorageCageMapper.selectJoinOne(EdgStorageCageDetails.class, new MPJLambdaWrapper<EdgStorageCage>()
                     .selectAll(EdgStorageCageDetails.class)
-                    .leftJoin(EdgStorageCageDetails.class,on->on
-                            .eq(EdgStorageCageDetails::getDeviceId,EdgStorageCage::getDeviceId)
-                            .eq(EdgStorageCageDetails::getSlot,EdgStorageCage::getSlot))
+                    .leftJoin(EdgStorageCageDetails.class, on -> on
+                            .eq(EdgStorageCageDetails::getDeviceId, EdgStorageCage::getDeviceId)
+                            .eq(EdgStorageCageDetails::getSlot, EdgStorageCage::getSlot))
                     .isNotNull(EdgStorageCageDetails::getSlot)
-                    .eq(EdgStorageCageDetails::getWidth,edgStorageCageDetails.getWidth())
-                    .eq(EdgStorageCageDetails::getHeight,edgStorageCageDetails.getHeight())
-                    .ge(EdgStorageCageDetails::getTemperingLayoutId,minTemperingLayoutId.getTemperingLayoutId())
-                    .le(EdgStorageCageDetails::getTemperingLayoutId,minTemperingLayoutId.getTemperingLayoutId()+poor)
-                    .orderByAsc(EdgStorageCageDetails::getTemperingLayoutId,EdgStorageCageDetails::getTemperingFeedSequence)
+                    .eq(EdgStorageCageDetails::getWidth, edgStorageCageDetails.getWidth())
+                    .eq(EdgStorageCageDetails::getHeight, edgStorageCageDetails.getHeight())
+                    .ge(EdgStorageCageDetails::getTemperingLayoutId, minTemperingLayoutId.getTemperingLayoutId())
+                    .le(EdgStorageCageDetails::getTemperingLayoutId, minTemperingLayoutId.getTemperingLayoutId() + threshold)
+                    .orderByAsc(EdgStorageCageDetails::getTemperingLayoutId, EdgStorageCageDetails::getTemperingFeedSequence)
             );
         }
 
-        if (result==null){
-            result=edgStorageCageMapper.selectJoinOne(EdgStorageCageDetails.class,new MPJLambdaWrapper<EdgStorageCage>()
+        if (result == null) {
+            result = edgStorageCageMapper.selectJoinOne(EdgStorageCageDetails.class, new MPJLambdaWrapper<EdgStorageCage>()
                     .selectAll(EdgStorageCageDetails.class)
-                    .leftJoin(EdgStorageCageDetails.class,on->on
-                            .eq(EdgStorageCageDetails::getDeviceId,EdgStorageCage::getDeviceId)
-                            .eq(EdgStorageCageDetails::getSlot,EdgStorageCage::getSlot))
+                    .leftJoin(EdgStorageCageDetails.class, on -> on
+                            .eq(EdgStorageCageDetails::getDeviceId, EdgStorageCage::getDeviceId)
+                            .eq(EdgStorageCageDetails::getSlot, EdgStorageCage::getSlot))
                     .isNotNull(EdgStorageCageDetails::getSlot)
-                    .orderByAsc(EdgStorageCageDetails::getTemperingLayoutId,EdgStorageCageDetails::getTemperingFeedSequence)
+                    .orderByAsc(EdgStorageCageDetails::getTemperingLayoutId, EdgStorageCageDetails::getTemperingFeedSequence)
             );
         }
         return result;
@@ -197,11 +198,11 @@
      * 鏌ヨ绗煎唴鐗堝浘宸�艰寖鍥村唴鐨�  姝ゅ昂瀵哥幓鐠�  濡傛棤鍒欐寜鐓� 閽㈠寲鐗堝浘搴忓彿 浠ュ強鐜荤拑搴忓彿
      *
      * @param glassId
-     * @param poor
+     * @param threshold
      * @return
      */
     @Override
-    public EdgStorageCageDetails selectOutGlass(String glassId, int poor) {
+    public EdgStorageCageDetails selectOutGlass(String glassId, int threshold) {
         EdgStorageCageDetails oldEdgStorageCageDetails = null;
         if (StringUtils.isNotEmpty(glassId)) {
             oldEdgStorageCageDetails = baseMapper.selectOne(new MPJLambdaQueryWrapper<EdgStorageCageDetails>()
@@ -227,25 +228,23 @@
 
         EdgStorageCageDetails outEdgStorageCageDetails = null;
 
-        //todo:鑾峰彇绗煎瓙鍐呮渶澶х増鍥緄d鍜屾渶灏忕増鍥緄d鎻掑�硷紝鍒ゆ柇鏄惁澶т簬闃堝�硷紝澶т簬闃堝�肩洿鎺ュ嚭鏈�灏忕増鍥剧幓鐠�
-        //todo:閫昏緫1锛氳幏鍙栦袱鏉$嚎宸插嚭鏈�鍚庝竴鍧楃幓鐠冨湪绗煎唴鐩稿悓灏哄鎵�鍓╂暟閲忥紝浼樺厛璧版暟閲忓皯鐨勭嚎
-        //todo:閫昏緫2锛氫紭鍏堣蛋绌洪棽鐨勭嚎
-        //todo:闇�瑕佸湪鍗у紡鐞嗙墖绗艰鎯呰〃涓柊澧炵姸鎬侊紝鐢ㄦ潵琛ㄧず鐜荤拑杩涘嚭鐞嗙墖绗兼儏鍐�
-        if (oldEdgStorageCageDetails != null && minTemperingLayoutId != null) {
-            log.info("鎸夌収涓婁竴鐗囧凡鍑虹幓鐠冨搴}锛岄珮搴}锛屽強鐗堝浘id鍖洪棿{}鍒皗}鑾峰彇鍑虹墖浠诲姟鐜荤拑淇℃伅", oldEdgStorageCageDetails.getWidth()
-                    , oldEdgStorageCageDetails.getHeight(), minTemperingLayoutId.getTemperingLayoutId(), minTemperingLayoutId.getTemperingLayoutId() + poor);
-            outEdgStorageCageDetails = this.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
-                    .notIn(CollectionUtils.isNotEmpty(glassIds), EdgStorageCageDetails::getGlassId, glassIds)
-                    .eq(EdgStorageCageDetails::getWidth, oldEdgStorageCageDetails.getWidth())
-                    .eq(EdgStorageCageDetails::getHeight, oldEdgStorageCageDetails.getHeight())
-                    .orderByAsc(EdgStorageCageDetails::getTemperingLayoutId, EdgStorageCageDetails::getTemperingFeedSequence)
-                    .last("limit 1"));
-            log.info("鍑虹墖浠诲姟鐨勭幓鐠冧俊鎭細{}", outEdgStorageCageDetails);
-        }
+//        if (queryMaxMinDiff(threshold))
+            //todo:閫昏緫1锛氳幏鍙栦袱鏉$嚎宸插嚭鏈�鍚庝竴鍧楃幓鐠冨湪绗煎唴鐩稿悓灏哄鎵�鍓╂暟閲忥紝浼樺厛璧版暟閲忓皯鐨勭嚎
+            //todo:闇�瑕佸湪鍗у紡鐞嗙墖绗艰鎯呰〃涓柊澧炵姸鎬侊紝鐢ㄦ潵琛ㄧず鐜荤拑杩涘嚭鐞嗙墖绗兼儏鍐�
+            if (oldEdgStorageCageDetails != null && minTemperingLayoutId != null) {
+                log.info("鎸夌収涓婁竴鐗囧凡鍑虹幓鐠冨搴}锛岄珮搴}锛屽強鐗堝浘id鍖洪棿{}鍒皗}鑾峰彇鍑虹墖浠诲姟鐜荤拑淇℃伅", oldEdgStorageCageDetails.getWidth()
+                        , oldEdgStorageCageDetails.getHeight(), minTemperingLayoutId.getTemperingLayoutId(), minTemperingLayoutId.getTemperingLayoutId() + threshold);
+                outEdgStorageCageDetails = this.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
+                        .notIn(CollectionUtils.isNotEmpty(glassIds), EdgStorageCageDetails::getGlassId, glassIds)
+                        .eq(EdgStorageCageDetails::getWidth, oldEdgStorageCageDetails.getWidth())
+                        .eq(EdgStorageCageDetails::getHeight, oldEdgStorageCageDetails.getHeight())
+                        .orderByAsc(EdgStorageCageDetails::getTemperingLayoutId, EdgStorageCageDetails::getTemperingFeedSequence)
+                        .last("limit 1"));
+                log.info("鍑虹墖浠诲姟鐨勭幓鐠冧俊鎭細{}", outEdgStorageCageDetails);
+            }
         if (outEdgStorageCageDetails == null) {
             outEdgStorageCageDetails = minTemperingLayoutId;
         }
         return outEdgStorageCageDetails;
     }
-
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java
index 242ffed..2969896 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java
@@ -3,6 +3,7 @@
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.toolkit.JoinWrappers;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.mes.common.config.Const;
 import com.mes.edgstoragecage.entity.EdgStorageCage;
 import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
 import com.mes.edgstoragecage.mapper.EdgStorageCageDetailsMapper;
@@ -19,7 +20,7 @@
 
 /**
  * <p>
- *  鏈嶅姟瀹炵幇绫�
+ * 鏈嶅姟瀹炵幇绫�
  * </p>
  *
  * @author zhoush
@@ -34,33 +35,48 @@
     @Autowired
     UpPattenUsageMapper upPattenUsageMapper;
 
+    @Override
+    public EdgStorageCage selectNearestEmpty(int currentSlot) {
+        return this.selectJoinOne(EdgStorageCage.class, new MPJLambdaWrapper<EdgStorageCage>()
+                .selectAll(EdgStorageCage.class)
+                .leftJoin(EdgStorageCageDetails.class, on -> on
+                        .eq(EdgStorageCageDetails::getSlot, EdgStorageCage::getSlot)
+                        .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN))
+                .isNull(EdgStorageCageDetails::getSlot)
+                .last("order by abs(t.slot - " + currentSlot + ")  asc limit 1")
+        );
+    }
+
     /**
      * 鏌ヨ绗煎唴绌烘牸
+     *
      * @return
      */
     @Override
-    public List<EdgStorageCage> selectCacheEmpty(){
-        return baseMapper.selectJoinList(EdgStorageCage.class,new MPJLambdaWrapper<EdgStorageCage>()
+    public List<EdgStorageCage> selectCacheEmpty() {
+        return baseMapper.selectJoinList(EdgStorageCage.class, new MPJLambdaWrapper<EdgStorageCage>()
                 .selectAll(EdgStorageCage.class)
-                .leftJoin(EdgStorageCageDetails.class,on->on
-                        .eq(EdgStorageCageDetails::getSlot,EdgStorageCage::getSlot)
-                        .eq(EdgStorageCageDetails::getState,"100"))
+                .leftJoin(EdgStorageCageDetails.class, on -> on
+                        .eq(EdgStorageCageDetails::getSlot, EdgStorageCage::getSlot)
+                        .eq(EdgStorageCageDetails::getState, "100"))
                 .isNull(EdgStorageCageDetails::getSlot)
+                .last("order by abs(t.slot - 4)  asc")
         );
     }
 
     /**
      * 鏌ヨ绗煎唴鍑虹墖浠诲姟   鎸夐挗鍖栫増鍥惧彿+鐗堝浘鍐呭簭鍙�
+     *
      * @return
      */
     @Override
-    public List<Map<String, Object>> selectCacheOut(){
+    public List<Map<String, Object>> selectCacheOut() {
 
         return upPattenUsageMapper.selectJoinMaps(JoinWrappers.lambda(UpPattenUsage.class).selectAll(UpPattenUsage.class)
-                .select(EdgStorageCageDetails::getWidth, EdgStorageCageDetails::getHeight,EdgStorageCageDetails::getGlassId)
-                .leftJoin(EdgStorageCageDetails.class,on->on
-                        .eq(EdgStorageCageDetails::getDeviceId,EdgStorageCage::getDeviceId)
-                        .eq(EdgStorageCageDetails::getSlot,EdgStorageCage::getSlot))
+                .select(EdgStorageCageDetails::getWidth, EdgStorageCageDetails::getHeight, EdgStorageCageDetails::getGlassId)
+                .leftJoin(EdgStorageCageDetails.class, on -> on
+                        .eq(EdgStorageCageDetails::getDeviceId, EdgStorageCage::getDeviceId)
+                        .eq(EdgStorageCageDetails::getSlot, EdgStorageCage::getSlot))
                 .isNull(EdgStorageCageDetails::getSlot)
         );
 //        return upPattenUsageMapper.selectJoinMaps(new MPJQueryWrapper<UpPattenUsage>().selectAll(UpPattenUsage.class)
@@ -73,17 +89,18 @@
 
     /**
      * 鐞嗙墖缂撳瓨璇︽儏
+     *
      * @return
      */
     @Override
-    public List<Map<String, Object>> selectEdgStorageCages(){
+    public List<Map<String, Object>> selectEdgStorageCages() {
         return baseMapper.selectJoinMaps(JoinWrappers.lambda(EdgStorageCage.class)
                 .selectAll(EdgStorageCage.class)
-                .selectAs(EdgStorageCageDetails::getId,"esdId")
-                .select(EdgStorageCageDetails::getGlassId,EdgStorageCageDetails::getWidth,EdgStorageCageDetails::getHeight,EdgStorageCageDetails::getId)
-                .leftJoin(EdgStorageCageDetails.class,on->on
-                        .eq(EdgStorageCageDetails::getDeviceId,EdgStorageCage::getDeviceId)
-                        .eq(EdgStorageCageDetails::getSlot,EdgStorageCage::getSlot))
+                .selectAs(EdgStorageCageDetails::getId, "esdId")
+                .select(EdgStorageCageDetails::getGlassId, EdgStorageCageDetails::getWidth, EdgStorageCageDetails::getHeight, EdgStorageCageDetails::getId)
+                .leftJoin(EdgStorageCageDetails.class, on -> on
+                        .eq(EdgStorageCageDetails::getDeviceId, EdgStorageCage::getDeviceId)
+                        .eq(EdgStorageCageDetails::getSlot, EdgStorageCage::getSlot))
         );
 //        return baseMapper.selectJoinMaps(new MPJQueryWrapper<EdgStorageCage>().selectAll(EdgStorageCage.class)
 //                        .select("escd.glass_id","escd.flow_card_id","escd.width","escd.height")
@@ -93,39 +110,41 @@
 
     /**
      * 淇敼鐞嗙墖绗间俊鎭� 鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑 銆愬惎鐢�/绂佺敤銆�
+     *
      * @param edgStorageCage
      * @return
      */
     @Override
-    public boolean updateEdgStorageCage(EdgStorageCage edgStorageCage){
-        EdgStorageCage edgItem=baseMapper.selectById(edgStorageCage.getId());
+    public boolean updateEdgStorageCage(EdgStorageCage edgStorageCage) {
+        EdgStorageCage edgItem = baseMapper.selectById(edgStorageCage.getId());
         edgItem.setEnableState(edgStorageCage.getEnableState());
         baseMapper.updateById(edgItem);
         return true;
     }
 
     /**
-     *淇敼鐞嗙墖绗间俊鎭� 鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑 銆愭坊鍔�/鍒犻櫎/鏇存崲銆�
+     * 淇敼鐞嗙墖绗间俊鎭� 鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑 銆愭坊鍔�/鍒犻櫎/鏇存崲銆�
+     *
      * @param edgStorageCageId
      * @param edgStorageCageDetails
      * @return
      */
     @Override
-    public boolean updateEdgStorageCageDetails(int edgStorageCageId,EdgStorageCageDetails edgStorageCageDetails){
-        EdgStorageCage edgItem=baseMapper.selectById(edgStorageCageId);
-        log.info("姝e父"+edgItem);
-        EdgStorageCageDetails edgDItem=edgStorageCageDetailsMapper.selectById(edgStorageCageDetails.getId());
-        if (edgItem!=null){
+    public boolean updateEdgStorageCageDetails(int edgStorageCageId, EdgStorageCageDetails edgStorageCageDetails) {
+        EdgStorageCage edgItem = baseMapper.selectById(edgStorageCageId);
+        log.info("姝e父" + edgItem);
+        EdgStorageCageDetails edgDItem = edgStorageCageDetailsMapper.selectById(edgStorageCageDetails.getId());
+        if (edgItem != null) {
             //绉婚櫎
-            EdgStorageCageDetails result=edgStorageCageDetailsMapper.selectOne(new MPJLambdaWrapper<EdgStorageCageDetails>().eq(EdgStorageCageDetails::getSlot,edgStorageCageId));
-            if (result!=null){
+            EdgStorageCageDetails result = edgStorageCageDetailsMapper.selectOne(new MPJLambdaWrapper<EdgStorageCageDetails>().eq(EdgStorageCageDetails::getSlot, edgStorageCageId));
+            if (result != null) {
                 result.setSlot(0);
                 edgStorageCageDetailsMapper.updateById(result);
             }
             //娣诲姞
-            if(edgDItem!=null){
+            if (edgDItem != null) {
                 //鍙紶鏍煎瓙  锛氱Щ闄ょ幓鐠�
-                EdgStorageCageDetails newresult=edgStorageCageDetailsMapper.selectById(edgStorageCageDetails.getId());
+                EdgStorageCageDetails newresult = edgStorageCageDetailsMapper.selectById(edgStorageCageDetails.getId());
                 newresult.setSlot(edgItem.getSlot());
                 edgStorageCageDetailsMapper.updateById(newresult);
             }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
index d559304..500a02a 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
@@ -3,9 +3,14 @@
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.lang.Assert;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.github.yulichang.query.MPJQueryWrapper;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.mes.common.S7object;
 import com.mes.common.config.Const;
 import com.mes.device.PlcParameterObject;
+import com.mes.edgglasstask.entity.EdgGlassTaskInfo;
+import com.mes.edgglasstask.service.EdgGlassTaskInfoService;
 import com.mes.edgstoragecage.entity.EdgStorageCage;
 import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
 import com.mes.edgstoragecage.service.EdgStorageCageDetailsService;
@@ -15,12 +20,14 @@
 import com.mes.taskcache.entity.TaskCache;
 import com.mes.taskcache.service.TaskCacheService;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -42,50 +49,88 @@
     @Autowired
     EdgStorageCageDetailsService edgStorageCageDetailsService;
 
+    @Autowired
+    EdgGlassTaskInfoService edgGlassTaskInfoService;
+
     @Value("${mes.threshold}")
     private int threshold;
 
-    @Scheduled(fixedDelay = 10000)
+    @Value("${mes.ratio}")
+    private int ratio;
+
+    @Scheduled(fixedDelay = 1000)
     public void plcHomeEdgTask() {
         PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
-
         String taskRequestTypeValue = plcParameterObject.getPlcParameter("A06_request_word").getValue();
         String glassIdeValue = plcParameterObject.getPlcParameter("A05_scanning_ID").getValue();
         String confirmationWrodValue = plcParameterObject.getPlcParameter("MES_confirmation_word").getValue();
-//        1涓篈09绌洪棽锛�2涓篈10绌洪棽锛�3涓篈09A10閮界┖闂�,0涓篈09A10閮芥湁鐜荤拑
-        String outGlassstate = plcParameterObject.getPlcParameter("A09_glass_status").getValue();
-
+        //A08  A09琛ㄧず绾胯矾鐩稿悓  鍙仛绛変环  鏃犳暟鎹浆int寮傚父
+        String out08Glassstate = plcParameterObject.getPlcParameter("A08_glass_status").getValue();
+        String out10Glassstate = plcParameterObject.getPlcParameter("A10_glass_status").getValue();
         String confirmationWrodAddress = plcParameterObject.getPlcParameter("MES_confirmation_word").getAddress();
+        String currentSlot = plcParameterObject.getPlcParameter("Current_slot").getValue();
+
+//        String taskRequestTypeValue = "2";
+//        String glassIdeValue = "2222222222";
+//        String confirmationWrodValue = "0";
+//        //A08  A09琛ㄧず绾胯矾鐩稿悓  鍙仛绛変环
+//        Integer out08Glassstate = 1;
+//        Integer out10Glassstate = 0;
+//        String confirmationWrodAddress = "DB11.38";
+//        String currentSlot = "1";
+
+
+        log.info("1銆佽幏鍙栧埌鐨勮姹傚瓧涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{}锛岃幏鍙栧埌鐨勭‘璁ゅ瓧涓猴細{}锛岃幏鍙栧埌鐨勫嚭鐗囩姸鎬佸垎鍒负锛欰09:{}銆丄10:{},褰撳墠鏍煎瓙鍙蜂负锛歿}",
+                taskRequestTypeValue, glassIdeValue, confirmationWrodValue, out08Glassstate, out10Glassstate, currentSlot);
 
         if ("0".equals(taskRequestTypeValue)) {
-            log.info("1銆佽幏鍙栧埌鐨勮姹傚瓧涓�0锛屽皢纭瀛楁敼涓�0");
+            if ("0".equals(confirmationWrodValue)) {
+                log.info("2銆佽幏鍙栧埌鐨勮姹傚瓧涓�0锛屼笖纭瀛椾负0锛屼笉鎵ц浠诲姟");
+                return;
+            }
+            log.info("2銆佽幏鍙栧埌鐨勮姹傚瓧涓�0锛屽皢纭瀛楁敼涓�0");
             S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 0);
             return;
         }
         if (!"0".equals(confirmationWrodValue)) {
-            log.info("1銆佽幏鍙栧埌鐨勮姹傚瓧涓嶄负0锛屽皢纭瀛楁敼涓�0");
+            log.info("2銆佽幏鍙栧埌鐨勮姹傚瓧涓嶄负0锛屽皢纭瀛楁敼涓�0");
             S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 0);
             return;
         }
         if ("1".equals(taskRequestTypeValue)) {
             log.info("2銆佽繘鐗囪姹傦紝涓旂‘璁ゅ瓧涓�0锛屾墽琛岃繘鐗囦换鍔�");
-            inTo(glassIdeValue, confirmationWrodAddress);
+            inTo(glassIdeValue, confirmationWrodAddress, currentSlot);
         } else if ("2".equals(taskRequestTypeValue)) {
             //09绌洪棽 锛�1      10绌洪棽 锛�2        閮界┖闂诧細3    鍏朵粬0
             log.info("2銆佸嚭鐗囪姹傦紝涓旂‘璁ゅ瓧涓�0锛屾墽琛岃繘鐗囦换鍔�");
-            outTo(Integer.parseInt(outGlassstate), confirmationWrodAddress);
+            outTo(Integer.parseInt(out08Glassstate),
+                    Integer.parseInt(out10Glassstate), confirmationWrodAddress);
         } else if ("3".equals(taskRequestTypeValue)) {
             log.info("2銆佽繘鐗囧拰鍑虹墖閮界┖闂诧紝鎵ц鍑虹墖浠诲姟");
-            if ("0".equals(outGlassstate)) {
-                inTo(glassIdeValue, confirmationWrodAddress);
+            //鍔犵瀛愰噷闈㈡槸鍚︽湁鐜荤拑锛屾湁鍏堝嚭锛屾棤鐜荤拑鍏堣繘
+            int count = edgStorageCageDetailsService.count(new LambdaQueryWrapper<EdgStorageCageDetails>().eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN));
+            if (("1".equals(out08Glassstate) || "1".equals(out10Glassstate)) && count > 0) {
+                boolean outFlase = outTo(Integer.parseInt(out08Glassstate),
+                        Integer.parseInt(out10Glassstate), confirmationWrodAddress);
+                log.info("鍑虹墖浠诲姟鏄惁瀹屾垚锛歿},澶辫触涓旂幓鐠僫d:{}涓嶄负绌哄垯鎵ц杩涚墖浠诲姟", outFlase, glassIdeValue);
+                if (!outFlase && StringUtils.isNotBlank(glassIdeValue)) {
+                    inTo(glassIdeValue, confirmationWrodAddress, currentSlot);
+                }
             } else {
-                outTo(Integer.parseInt(outGlassstate), confirmationWrodAddress);
+                inTo(glassIdeValue, confirmationWrodAddress, currentSlot);
             }
         }
     }
 
-    private void inTo(String glassId, String confirmationWrodAddress) {
-        log.info("1銆佹寜鐓х幓鐠僫d:{}鑾峰彇鐜荤拑灏忕墖淇℃伅", glassId);
+    /**
+     * 杩涚墖浠诲姟
+     *
+     * @param glassId
+     * @param confirmationWrodAddress
+     * @param currentSlot
+     */
+    private void inTo(String glassId, String confirmationWrodAddress, String currentSlot) {
+        log.info("1銆佹寜鐓х幓鐠僫d:{}鑾峰彇鐜荤拑灏忕墖淇℃伅,褰撳墠鏍煎瓙涓�:{}", glassId, currentSlot);
         GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId));
         if (glassInfo == null) {
             log.info("2銆佹鐜荤拑缂栧彿涓嶅瓨鍦�");
@@ -93,75 +138,265 @@
         }
         log.info("2銆佽幏鍙栧埌鐨勭幓鐠冧俊鎭负{}", glassInfo);
         //娣诲姞杩涚墖浠诲姟  鏌ユ壘绌烘牸
-        List<EdgStorageCage> list = edgStorageCageService.selectCacheEmpty();
-        log.info("3銆佹煡璇㈠崸寮忕悊鐗囩閲岄潰鐨勭┖鏍�:{}", list);
-        if (CollectionUtil.isEmpty(list)) {
-            log.info("4銆佷笉瀛樺湪绌烘牸");
-            return;
-        }
-        log.info("4銆佸皢鐜荤拑淇℃伅鎻掑叆鍗у紡鐞嗙墖绗�:{}", glassInfo);
+        EdgStorageCage nearestEmpty = edgStorageCageService.selectNearestEmpty(Integer.parseInt(currentSlot));
+        Assert.isTrue(null != nearestEmpty, "鏍煎瓙宸叉弧");
+        log.info("3銆佹煡璇㈠崸寮忕悊鐗囩閲岄潰鐨勭┖鏍�:{}", nearestEmpty);
+
+        log.info("4銆佸皢鐜荤拑淇℃伅鎻掑叆鍗у紡鐞嗙墖绗�,褰撳墠鐜荤拑淇℃伅:{}", glassInfo);
         EdgStorageCageDetails details = new EdgStorageCageDetails();
         BeanUtils.copyProperties(glassInfo, details);
-        details.setState(100);
-        Integer slot = list.get(0).getSlot();
-        Integer deviceId = list.get(0).getDeviceId();
-        log.info("5銆佽幏鍙栫┖闂叉牸瀛愪负:{},璁惧鍙蜂负{}", slot, deviceId);
-        details.setSlot(slot);
-        details.setDeviceId(deviceId);
+        details.setState(Const.GLASS_STATE_IN);
+        details.setSlot(nearestEmpty.getSlot());
+        details.setDeviceId(nearestEmpty.getDeviceId());
         edgStorageCageDetailsService.save(details);
+        log.info("5銆佺幓鐠冧俊鎭凡瀛樺叆鐞嗙墖绗艰鎯呰〃锛岀幓鐠冧俊鎭负{}", details);
+        //娣诲姞杩涚墖浠诲姟
+        boolean taskCache = saveTaskCache(details.getGlassId(), 0, nearestEmpty.getSlot(), Const.GLASS_CACHE_TYPE_IN);
+        log.info("6銆佺敓鎴愯繘鐗囦换鍔′俊鎭瓨鍏ヤ换鍔¤〃鏄惁瀹屾垚锛歿}", taskCache);
 
-        log.info("6銆佺敓鎴愯繘鐗囦换鍔′俊鎭瓨鍏ヤ换鍔¤〃");
-        TaskCache taskCache = new TaskCache();
-        taskCache.setGlassId(glassId);
-        taskCache.setTaskStatus(0);
-        taskCache.setStartCell(0);
-        taskCache.setEndCell(slot);
-        taskCache.setTaskType(1);
-        taskCache.setCreateTime(new Date());
-        taskCacheService.insertTaskCache(taskCache);
-        log.info("6銆佸彂閫佺‘璁ゅ瓧");
         S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 1);
+        log.info("7銆佸彂閫佺‘璁ゅ瓧瀹屾垚");
 
 
     }
 
-    private void outTo(int line, String confirmationWrodAddress) {
-        Assert.isTrue(line != 0, "A09銆丄10閮芥湁鐜荤拑锛屾棤娉曞嚭鐗�");
-        log.info("1銆佸嚭鐗囦换鍔″嚭銆恵}銆戝彿绾�,澶囨敞(09绌洪棽锛�1;10绌洪棽锛�2;閮界┖闂诧細3)", line);
+    /**
+     * 鍑虹墖浠诲姟
+     *
+     * @param out08Glassstate
+     * @param out10Glassstate
+     * @param confirmationWrodAddress
+     */
+    private boolean outTo(int out08Glassstate, int out10Glassstate, String confirmationWrodAddress) {
+        //閫昏緫姝ラ锛�
+//        0銆丄09銆丄10鏄惁绌洪棽锛屾槸鍚﹀彲浠ユ墽琛屽嚭鐗囦换鍔�
+//        1銆佽幏鍙栭挗鍖栫増鍥炬槸鍚﹁秴杩囬槇鍊�
+//        1.1銆佽秴杩囬槇鍊硷細鑾峰彇褰撳墠鏈�灏忕増鍥鹃渶瑕佸嚭鐗囩殑鐜荤拑淇℃伅
+//        1.1.1銆佽幏鍙栦袱鏉$嚎鏈�鍚庝竴娆″嚭鐗囩殑浠诲姟淇℃伅
+//        1.1.2銆佹寜鐓у嚭鐗囦俊鎭幓璇︽儏琛ㄦ煡璇㈡牸瀛愬湪绗煎瓙閲岄潰鍓╀綑鐩稿悓灏哄鐨勭幓鐠冩暟鎹�
+//        1.1.3銆佸垽鏂摢鏉$嚎鐜荤拑鏁伴噺鍦ㄧ悊鐗囩鍐呯殑鏁版嵁鏈�灏戯紝鍐冲畾鏈�灏忕増鍥捐蛋璇ユ潯绾匡紙闂锛氬鏋滆繖鏉$嚎闈炵┖闂诧紝鐩存帴缁撴潫锛�
+//        1.2銆佹湭瓒呰繃闃堝�硷細
+//        1.2.1銆佽幏鍙栫▼搴忛偅鏉$嚎绌洪棽
+//        1.2.2銆佽幏鍙栬鏉$嚎鏈�鍚庝竴娆″嚭鐗囩殑浠诲姟淇℃伅
+//        1.2.3銆佹寜鐓у嚭鐗囦俊鎭幓璇︽儏琛ㄦ煡璇㈡牸瀛愬湪绗煎瓙閲岄潰鍓╀綑鐩稿悓灏哄鐨勭幓鐠冩暟鎹笖浠ョ増鍥緄d銆佺増搴忓崌搴忔帓搴�  鍙栫涓�鍧楃幓鐠冨嚭鐗�
+//        2銆佸鏋滄病鏈夊巻鍙插嚭鐗囦换鍔�
+//        2.1銆佸嚭褰撳墠鐗堝浘id鏈�灏忕増搴忔渶灏忕殑鐜荤拑锛堥棶棰橈細涓ゆ潯绾块兘娌℃湁鍘嗗彶浠诲姟锛屽嚭鐗囨椂涓ゆ潯绾跨殑鐜荤拑灏哄鐩稿悓锛屾槸鍚︽壘灏哄涓嶅悓鐨勶級
+        Assert.isFalse(out08Glassstate == 0 && out10Glassstate == 0, "A09銆丄10閮芥湁鐜荤拑锛屾棤娉曞嚭鐗�");
+        log.info("0銆佸嚭鐗囦换鍔″嚭鐨勭姸鎬�:A09:銆恵}銆�;A10:銆恵}銆�)", out08Glassstate, out10Glassstate);
+        //瀹氫箟鍑虹墖鐜荤拑淇℃伅
         int endcell = 0;
+        EdgStorageCageDetails glassInfo = null;
+        boolean flag = queryMaxMinDiff(threshold);
+        log.info("1銆佽幏鍙栭挗鍖栫増鍥炬槸鍚﹁秴杩囬槇鍊�:{}", flag);
+        if (flag) {
+            glassInfo = queryMinGlass(0.0, 0.0);
+            log.info("1.1銆佽秴杩囬槇鍊硷細鑾峰彇褰撳墠鏈�灏忕増鍥鹃渶瑕佸嚭鐗囩殑鐜荤拑淇℃伅:{}", glassInfo);
+            Integer a09Count = queryCountByTaskLine(Const.A09_OUT_TARGET_POSITION).size();
+            Integer a10Count = queryCountByTaskLine(Const.A10_OUT_TARGET_POSITION).size();
+            log.info("1.2銆佽幏鍙栫瀛愬墿浣欐暟閲廇09涓簕},A10涓簕}", a09Count, a10Count);
 
-        List<TaskCache> oldTaskCacheList;
-        if (line == 2) {
-            endcell = Const.A10_OUT_TARGET_POSITION;
-            oldTaskCacheList = taskCacheService.selectLastOutCacheInfos(Const.A10_OUT_TARGET_POSITION);
+            // 鍋囪宸茬煡 outXXGlassstate 鐨勫�煎彧鏈� 0 鍜� 1 涓ょ鎯呭喌锛屼笖 0 琛ㄧず鏌愮鐘舵�侊紝1 琛ㄧず鍙︿竴绉嶇姸鎬�
+            int targetPositionWhenStateZero = (out08Glassstate == 0) ? Const.A10_OUT_TARGET_POSITION : Const.A09_OUT_TARGET_POSITION;
+            int targetPositionWhenStateOne = (out10Glassstate == 0) ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION;
+            endcell = (a10Count <= a09Count) ? targetPositionWhenStateZero : targetPositionWhenStateOne;
         } else {
-            endcell = Const.A09_OUT_TARGET_POSITION;
-            oldTaskCacheList = taskCacheService.selectLastOutCacheInfos(Const.A09_OUT_TARGET_POSITION);
+            //褰撳墠浠诲姟鍑哄畬鏃犵幓鐠� 鏇存崲鐜荤拑  鑾峰彇鍙︿竴鏉$嚎璺�
+            endcell = out08Glassstate == 1 ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION;
+            int othercell = endcell == Const.A10_OUT_TARGET_POSITION ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION;
+            List<EdgStorageCageDetails> details = queryCountByTaskLine(endcell);
+            if (details.size() > 0) {
+                glassInfo = details.get(0);
+            } else {
+                //鍘荤悊鐗囩閲岄潰鏌�
+                glassInfo = queryChangeGlassInfo(othercell);
+            }
         }
-        log.info("2銆佸垽鏂嚭鐗囩嚎璺瘂}锛岃幏鍙栨渶鍚庤鏉$嚎宸插嚭鐗囩殑浠诲姟淇℃伅{}(澶囨敞锛�0寰呮墽琛岋紝1宸叉墽琛�).閮界┖闂蹭紭鍏堝嚭A09绾�", endcell, oldTaskCacheList);
-
-        String glassId = "";
-        if (CollectionUtil.isNotEmpty(oldTaskCacheList)) {
-            glassId = oldTaskCacheList.get(0).getGlassId();
-        }
-        EdgStorageCageDetails glassInfo = edgStorageCageDetailsService.selectOutGlass(glassId, threshold);
-        log.info("3銆佹寜鐓у巻鍙插凡鍑虹幓鐠僫d{}鍜岄槇鍊納}锛屾嬁鍑虹悊鐗囩鍐呯殑鍑虹墖淇℃伅{}", glassId, threshold, glassInfo);
 
         if (glassInfo != null) {
             log.info("4銆佹坊鍔犲嚭鐗囦换鍔★紝鐜荤拑id锛歿}锛屼换鍔$被鍨嬶細{}锛岃捣濮嬩綅缃細{}锛岀粨鏉熶綅缃細{}", glassInfo.getGlassId(),
                     2, glassInfo.getSlot(), endcell);
-            TaskCache taskCache = new TaskCache();
-            taskCache.setGlassId(glassInfo.getGlassId());
-            taskCache.setTaskStatus(0);
-            taskCache.setStartCell(glassInfo.getSlot());
-            taskCache.setEndCell(endcell);
-            taskCache.setTaskType(2);
-            taskCache.setCreateTime(new Date());
-            taskCacheService.insertTaskCache(taskCache);
+
+            LambdaQueryWrapper<EdgStorageCageDetails> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(EdgStorageCageDetails::getGlassId, glassInfo.getGlassId());
+            EdgStorageCageDetails updateDetail = new EdgStorageCageDetails();
+            updateDetail.setState(Const.GLASS_STATE_OUT);
+            edgStorageCageDetailsService.update(updateDetail, wrapper);
+            log.info("5銆佹洿鏂板嚭鐗囩幓鐠冪殑鐘舵�佷负{}", Const.GLASS_STATE_OUT);
+
+            boolean taskCacheStatus = saveTaskCache(glassInfo.getGlassId(), glassInfo.getSlot(), endcell, Const.GLASS_CACHE_TYPE_OUT);
+            log.info("6銆佹坊鍔犲嚭鐗囦换鍔℃槸鍚﹀畬鎴愶細{}", taskCacheStatus);
+
+            boolean glassSizeStatus = saveGlassSize(glassInfo);
+            log.info("7銆佹坊鍔犲嚭鐗囩幓鐠冨昂瀵镐俊鎭埌纾ㄨ竟鍓嶇幓鐠冭〃鏄惁瀹屾垚锛歿}", glassSizeStatus);
+
             S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 1);
+            log.info("8銆佸彂閫佺‘璁ゅ瓧宸插畬鎴�");
+            return Boolean.TRUE;
+        }
+        return Boolean.FALSE;
+    }
+
+    /**
+     * 鑾峰彇璇︽儏琛ㄥ唴鏈�澶ф渶灏忕増鍥緄d鐨勫樊鍊硷紝鍒ゆ柇鏄惁鍑烘渶灏忕増鍥剧幓鐠�
+     *
+     * @return
+     */
+    private boolean queryMaxMinDiff(int threshold) {
+        //鑾峰彇绗煎瓙鍐呮渶澶х増鍥緄d鍜屾渶灏忕増鍥緄d鎻掑�硷紝鍒ゆ柇鏄惁澶т簬闃堝�硷紝澶т簬闃堝�肩洿鎺ュ嚭鏈�灏忕増鍥剧幓鐠�
+        QueryWrapper<EdgStorageCageDetails> queryWrapper = new QueryWrapper<>();
+        queryWrapper.select("max(tempering_layout_id)-min(tempering_layout_id) as diff")
+                .eq("state", Const.GLASS_STATE_IN);
+        List<Object> list = edgStorageCageDetailsService.listObjs(queryWrapper);
+        if (CollectionUtil.isNotEmpty(list)) {
+            Long diff = (Long) list.get(0);
+            return diff > threshold;
+        } else {
+            return Boolean.FALSE;
         }
 
+    }
 
+    /**
+     * 鑾峰彇褰撳墠鏈�灏忕増鍥鹃渶瑕佸嚭鐗囩殑鐜荤拑淇℃伅
+     *
+     * @param width
+     * @param height
+     */
+    private EdgStorageCageDetails queryMinGlass(Double width, Double height) {
+        return edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
+                .eq(EdgStorageCageDetails::getState, 100)
+                .eq(width != 0, EdgStorageCageDetails::getWidth, width)
+                .eq(height != 0, EdgStorageCageDetails::getHeight, height)
+                .orderByAsc(EdgStorageCageDetails::getTemperingLayoutId, EdgStorageCageDetails::getTemperingFeedSequence)
+                .last("limit 1"));
+    }
+
+    /**
+     * 鑾峰彇浠诲姟琛ㄤ腑鎸囧畾绾胯矾绗煎瓙鍐呰繕鍓╀綑鐨勭幓鐠冩暟閲�
+     */
+    private List<EdgStorageCageDetails> queryCountByTaskLine(int line) {
+        //鑾峰彇浠诲姟琛ㄤ腑鏈�鍚庝竴娆″嚭鐗囩殑鐜荤拑id
+        LambdaQueryWrapper<TaskCache> queryWrapper = new LambdaQueryWrapper<TaskCache>().eq(TaskCache::getTaskType, Const.GLASS_CACHE_TYPE_OUT)
+                .eq(TaskCache::getEndCell, line).orderByDesc(TaskCache::getCreateTime);
+        List<TaskCache> taskCacheList = taskCacheService.list(queryWrapper);
+        if (CollectionUtil.isEmpty(taskCacheList)) {
+            return new ArrayList<>();
+        }
+        TaskCache taskCache = taskCacheList.get(0);
+        MPJQueryWrapper<EdgStorageCageDetails> mpjLambdaWrapper = new MPJQueryWrapper<>();
+        mpjLambdaWrapper.select("t1.*")
+                .innerJoin("edg_storage_cage_details t1 on t.width = t1.width and t.height = t1.height")
+                .eq("t.glass_id", taskCache.getGlassId())
+                .ne("t1.glass_id", taskCache.getGlassId())
+                .orderByAsc("t1.tempering_layout_id", "t1.tempering_feed_sequence");
+        List<EdgStorageCageDetails> details = edgStorageCageDetailsService.selectJoinList(EdgStorageCageDetails.class, mpjLambdaWrapper);
+        if (CollectionUtil.isEmpty(details)) {
+            return new ArrayList<>();
+        }
+        return details;
+    }
+
+    /**
+     * 鏇存崲鍑虹墖鐜荤拑
+     *
+     * @param othercell
+     * @return
+     */
+    private EdgStorageCageDetails queryChangeGlassInfo(int othercell) {
+        //鑾峰彇绗煎瓙鍐呮暟閲忓墠浜岀殑鐜荤拑鏁伴噺
+        MPJLambdaWrapper<EdgStorageCageDetails> wrapper = new MPJLambdaWrapper<>();
+        wrapper.select(EdgStorageCageDetails::getWidth, EdgStorageCageDetails::getHeight)
+                .selectCount(EdgStorageCageDetails::getGlassId, EdgStorageCageDetails::getCount)
+                .groupBy(EdgStorageCageDetails::getWidth, EdgStorageCageDetails::getHeight)
+                .last("order by count(t.glass_id) desc limit 2");
+        List<EdgStorageCageDetails> list = edgStorageCageDetailsService.list(wrapper);
+        log.info("鑾峰彇绗煎瓙鍐呮暟閲忓墠浜岀殑鐜荤拑鏁伴噺锛歿}", list);
+        if (CollectionUtil.isEmpty(list)) {
+            log.info("绗煎瓙閲屾病鏈夌幓鐠�");
+            return null;
+        }
+        //涓�鐗囩幓鐠冪洿鎺ュ嚭
+        //鑾峰彇瀹介珮鎷嶇涓�鐨勭幓鐠冧俊鎭�
+        EdgStorageCageDetails firstSize = list.get(0);
+        Integer firstCount = firstSize.getCount();
+        Double firstWidth = firstSize.getWidth();
+        Double firstHeight = firstSize.getHeight();
+        if (list.size() == 1) {
+            return queryMinGlass(firstWidth, firstHeight);
+        }
+        //鑾峰彇瀹介珮鎷嶇浜岀殑鐜荤拑淇℃伅
+        EdgStorageCageDetails secondSize = list.get(1);
+        //鑾峰彇浠诲姟琛ㄤ腑鏈�鍚庝竴娆″嚭鐗囩殑鐜荤拑id
+        LambdaQueryWrapper<TaskCache> queryWrapper = new LambdaQueryWrapper<TaskCache>().eq(TaskCache::getTaskType, Const.GLASS_CACHE_TYPE_OUT)
+                .eq(TaskCache::getEndCell, othercell).orderByDesc(TaskCache::getCreateTime);
+        List<TaskCache> taskCacheList = taskCacheService.list(queryWrapper);
+        log.info("鑾峰彇浠诲姟琛ㄤ腑{}绾挎渶鍚庝竴娆″嚭鐗囩殑鐜荤拑浠诲姟淇℃伅锛歿}", othercell, taskCacheList);
+        if (CollectionUtil.isEmpty(taskCacheList)) {
+            log.info("{}绾挎病鏈夊嚭鐗囦换鍔′俊鎭紝鐩存帴鍑虹墖", othercell);
+            return queryMinGlass(firstSize.getWidth(), firstSize.getHeight());
+        }
+
+        Integer secondCount = secondSize.getCount();
+        Double secondWidth = secondSize.getWidth();
+        Double secondHeight = secondSize.getHeight();
+        //鑾峰彇鏁伴噺鍓�2鐨勭幓鐠冩暟閲忔瘮渚�
+        Integer mix = firstCount / secondCount;
+        log.info("鑾峰彇鐜荤拑鏁伴噺鍓�2鐨勭幓鐠冨崰姣斾负锛歿}", mix);
+
+        if (mix >= 2) {
+            log.info("鑾峰彇鐜荤拑鏁伴噺鍓�2鐨勭幓鐠冨崰姣斾负{}锛屽ぇ浜�2锛岀洿鎺ュ嚭鐜荤拑鏁版嵁鐨勬渶澶氱殑锛屽锛歿}锛岄珮锛歿}", mix, firstWidth, firstHeight);
+            return queryMinGlass(firstWidth, firstHeight);
+        } else {
+            log.info("鑾峰彇鐜荤拑鏁伴噺鍓�2鐨勭幓鐠冨崰姣斾负{}锛屽皬浜�2", mix);
+            TaskCache taskCache = taskCacheList.get(0);
+            EdgStorageCageDetails outGlassInfo = edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>().eq(EdgStorageCageDetails::getGlassId, taskCache.getGlassId()));
+            log.info("{}绾挎湁鍑虹墖浠诲姟淇℃伅,浠诲姟淇℃伅涓簕}锛岀幓鐠冧俊鎭负{}", othercell, taskCache, outGlassInfo);
+            if (outGlassInfo.getWidth().equals(firstWidth) && outGlassInfo.getHeight().equals(firstHeight)) {
+                log.info("鏁伴噺鏈�澶氱殑瀹絳}楂榹}鍜寋}绾夸换鍔$殑瀹絳}楂榹}鐩稿悓锛屽嚭鏁伴噺鎺掔浜岀殑鐜荤拑锛屽{}楂榹}",
+                        firstWidth, firstHeight, othercell, outGlassInfo.getWidth(), outGlassInfo.getHeight(), secondWidth, secondHeight);
+                return queryMinGlass(secondWidth, secondHeight);
+            } else {
+                log.info("鏁伴噺绗簩澶氱殑瀹絳}楂榹}鍜寋}绾夸换鍔$殑瀹絳}楂榹}鐩稿悓锛屽嚭鏁伴噺鎺掔浜岀殑鐜荤拑锛屽{}楂榹}",
+                        secondWidth, secondHeight, othercell, outGlassInfo.getWidth(), outGlassInfo.getHeight(), firstWidth, firstHeight);
+                return queryMinGlass(firstWidth, firstHeight);
+            }
+        }
+    }
+
+    /**
+     * 娣诲姞鐞嗙墖绗间换鍔�
+     *
+     * @param glassId
+     * @param startcell
+     * @param endcell
+     * @param taskType
+     * @return
+     */
+    private boolean saveTaskCache(String glassId, int startcell, int endcell, int taskType) {
+        TaskCache taskCache = new TaskCache();
+        taskCache.setGlassId(glassId);
+        taskCache.setTaskStatus(0);
+        taskCache.setStartCell(startcell);
+        taskCache.setEndCell(endcell);
+        taskCache.setTaskType(taskType);
+        taskCache.setCreateTime(new Date());
+        return taskCacheService.save(taskCache);
+    }
+
+    /**
+     * 娣诲姞鐞嗙墖绗间换鍔�
+     *
+     * @param glassInfo
+     * @return
+     */
+    private boolean saveGlassSize(EdgStorageCageDetails glassInfo) {
+        EdgGlassTaskInfo edgGlassTaskInfo = new EdgGlassTaskInfo();
+        BeanUtils.copyProperties(glassInfo, edgGlassTaskInfo);
+        edgGlassTaskInfo.setHeight((int) (glassInfo.getEdgHeight() * ratio));
+        edgGlassTaskInfo.setWidth((int) (glassInfo.getWidth() * ratio));
+        edgGlassTaskInfo.setThickness((int) (glassInfo.getThickness() * ratio));
+        edgGlassTaskInfo.setStatus(Const.EDG_GLASS_BEFORE);
+        return edgGlassTaskInfoService.save(edgGlassTaskInfo);
     }
 
 
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/TaskCacheService.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/TaskCacheService.java
index c5a6f02..4f37295 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/TaskCacheService.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/TaskCacheService.java
@@ -16,13 +16,6 @@
 public interface TaskCacheService extends IService<TaskCache> {
 
     /**
-     * 娣诲姞鐞嗙墖绗间换鍔�
-     * @param taskCache
-     * @return
-     */
-    boolean insertTaskCache(TaskCache taskCache);
-
-    /**
      * 鏌ヨ纾ㄨ竟浠诲姟
      * @param line
      * @return
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java
index 07a04f8..2398039 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java
@@ -11,7 +11,7 @@
 
 /**
  * <p>
- *  鏈嶅姟瀹炵幇绫�
+ * 鏈嶅姟瀹炵幇绫�
  * </p>
  *
  * @author zhoush
@@ -20,41 +20,32 @@
 @Service
 public class TaskCacheServiceImpl extends ServiceImpl<TaskCacheMapper, TaskCache> implements TaskCacheService {
 
-
-    /**
-     * 娣诲姞鐞嗙墖绗间换鍔�
-     * @param taskCache
-     * @return
-     */
-    @Override
-    public boolean insertTaskCache(TaskCache taskCache){
-        baseMapper.insert(taskCache);
-        return true;
-    }
-
     /**
      * 鏌ヨ纾ㄨ竟浠诲姟
+     *
      * @param line
      * @return
      */
     @Override
     public List<TaskCache> selectEdgInfo(String line) {
-        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getEndCell,line));
+        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getEndCell, line));
 //        return baseMapper.selectList(new QueryWrapper<TaskCache>().eq("end_cell",line));
     }
 
     /**
      * 鏌ヨ寰呯悊鐗囧伐浣滅殑浠诲姟
+     *
      * @return
      */
     @Override
-    public List<TaskCache> selectCacheInfo(){
-        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getTaskStatus,0));
+    public List<TaskCache> selectCacheInfo() {
+        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getTaskStatus, 0));
 //        return baseMapper.selectList(new QueryWrapper<TaskCache>().eq("task_status",0));
     }
 
     /**
      * 鏌ヨ鍏ㄩ儴浠诲姟
+     *
      * @return
      */
     @Override
@@ -64,44 +55,48 @@
 
     /**
      * 鏌ヨ寰呰繘鐗囦换鍔�
+     *
      * @return
      */
     @Override
-    public List<TaskCache> selectInputTaskCache(){
-        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getTaskStatus,0).eq(TaskCache::getTaskType,1));
+    public List<TaskCache> selectInputTaskCache() {
+        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getTaskStatus, 0).eq(TaskCache::getTaskType, 1));
 
 //        return baseMapper.selectList(new QueryWrapper<TaskCache>().eq("task_status",0).eq("task_type",1));
     }
 
     /**
      * 鏌ヨ寰呭嚭鐗囦换鍔�
+     *
      * @return
      */
     @Override
-    public List<TaskCache> selectOutTaskCache(){
-        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getTaskStatus,0).eq(TaskCache::getTaskType,2));
+    public List<TaskCache> selectOutTaskCache() {
+        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getTaskStatus, 0).eq(TaskCache::getTaskType, 2));
 //        return baseMapper.selectList(new QueryWrapper<TaskCache>().eq("task_status",0).eq("task_type",2));
     }
 
     /**
      * 鏌ヨ  A09  鎴� A10 鏈�鏂扮殑涓�鐗� 鍑虹墖浠诲姟
+     *
      * @param line
      * @return
      */
     @Override
-    public List<TaskCache> selectLastOutCacheInfos(String line){
-        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getEndCell,line).eq(TaskCache::getTaskStatus,1).orderByDesc(TaskCache::getCreateTime));
+    public List<TaskCache> selectLastOutCacheInfos(int line) {
+        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getEndCell, line).eq(TaskCache::getTaskStatus, 1).orderByDesc(TaskCache::getCreateTime));
 //        return baseMapper.selectList(new QueryWrapper<TaskCache>().eq("end_cell",line).eq("task_status",1).orderByDesc("ID"));
     }
 
     /**
      * 鏌ヨ  A09  鎴� A10 鏈�鏂扮殑涓�鐗� 鍑虹墖浠诲姟
+     *
      * @param line
      * @return
      */
     @Override
-    public TaskCache selectLastOutCacheInfo(String line){
-        return baseMapper.selectOne(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getEndCell,line).eq(TaskCache::getTaskStatus,1).orderByDesc(TaskCache::getCreateTime));
+    public TaskCache selectLastOutCacheInfo(String line) {
+        return baseMapper.selectOne(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getEndCell, line).eq(TaskCache::getTaskStatus, 1).orderByDesc(TaskCache::getCreateTime));
     }
 
 
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/JsonFile/PlcCacheGlass.json b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/JsonFile/PlcCacheGlass.json
index e32b9d6..01969b7 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/JsonFile/PlcCacheGlass.json
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/JsonFile/PlcCacheGlass.json
@@ -18,6 +18,13 @@
           "unit":""
        },
        {
+          "codeId": "Current_slot",
+          "addressIndex":"36",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       },
+        {
           "codeId": "MES_confirmation_word",
           "addressIndex":"38",
           "addressLenght":"2",
@@ -25,7 +32,7 @@
           "unit":""
        },
        {
-          "codeId": "A09_glass_status",
+          "codeId": "A08_glass_status",
           "addressIndex":"68",
           "addressLenght":"2",
           "ratio":"1",
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
index d0380ee..e48a9b9 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
@@ -1,14 +1,15 @@
 server:
-  port: 8085
+  port: 8081
 
 spring:
   profiles:
     active: dev
   application:
-    name: unLoadGlass
+    name: cacheGlass
 mybatis-plus:
   mapper-locations: classpath*:mapper/*.xml
   configuration:
     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
 mes:
   threshold: 3
+  ratio: 10
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/AppRunnerConfig.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/AppRunnerConfig.java
new file mode 100644
index 0000000..1a84ab6
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/AppRunnerConfig.java
@@ -0,0 +1,29 @@
+package com.mes;
+
+import com.mes.common.S7object;
+import com.mes.job.PlcStorageCageTask;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+@Slf4j
+@Component
+@Order(1)
+
+public class AppRunnerConfig implements ApplicationRunner {
+
+    private final PlcStorageCageTask plcStorageCageTask;
+
+    public AppRunnerConfig(PlcStorageCageTask plcStorageCageTask) {
+        this.plcStorageCageTask = plcStorageCageTask;
+    }
+
+    @Override
+    public void run(ApplicationArguments args) throws Exception {
+        log.info("鍚姩瀹屾垚");
+        S7object.getinstance().start();
+
+    }
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageService.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageService.java
index 2b18a23..60ba4df 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageService.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageService.java
@@ -18,7 +18,7 @@
  */
 public interface BigStorageCageService extends IService<BigStorageCage> {
 
-    void updateRemainWidth(int Slot);
+    void updateRemainWidth(int slot);
 
     BigStorageCageDetails feedGlass(GlassInfo glassInfo, BigStorageCageDetails bigStorageCageDetails);
 
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java
index 6e71ea3..51d5f49 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java
@@ -61,10 +61,10 @@
             bigStorageCageDetails.setSlot(layoutSlotInfo.getSlot());
         } else {
             log.info("3銆佹煡璇㈢悊鐗囩鍐呯墖搴�+1绛変簬褰撳墠鐜荤拑鐗囧簭鐨勭幓鐠冪殑缁撴灉涓虹┖鏃惰幏鍙栧綋鍓嶇幓鐠冪増鍥緄d鏄惁瀛樺湪鐞嗙墖绗煎唴");
-            LambdaQueryWrapper<BigStorageCageDetails> BigStorageCageDetailslambdaQueryWrapper = new LambdaQueryWrapper<>();
-            BigStorageCageDetailslambdaQueryWrapper
+            LambdaQueryWrapper<BigStorageCageDetails> bigStorageCageDetailslambdaQueryWrapper = new LambdaQueryWrapper<>();
+            bigStorageCageDetailslambdaQueryWrapper
                     .select(BigStorageCageDetails::getTemperingLayoutId);
-            layoutSlotInfo = bigStorageCageDetailsMapper.selectOne(BigStorageCageDetailslambdaQueryWrapper);
+            layoutSlotInfo = bigStorageCageDetailsMapper.selectOne(bigStorageCageDetailslambdaQueryWrapper);
 
             if(layoutSlotInfo != null){
                 log.info("4銆佽幏鍙栫瀛愬唴閫傚悎鐨勬牸瀛�");
@@ -78,10 +78,10 @@
                         .apply("LEFT JOIN (SELECT device_id, tempering_layout_id FROM big_storage_cage_details) b ON a.device_id = b.device_id AND a.slot = b.slot")
                         .orderByAsc("layoutCount")
                         .orderByAsc("a.device_id");
-                List<Map<String, Object>> BigStorageCageDetailsCount= bigStorageCageDetailsMapper.selectMaps(queryWrapper);
+                List<Map<String, Object>> bigStorageCageDetailsCount= bigStorageCageDetailsMapper.selectMaps(queryWrapper);
 
                 log.info("5銆佹煡璇㈢瀛愬唴鏄惁鏈夊悎閫傜殑鏍煎瓙");
-                for (Map<String, Object> map : BigStorageCageDetailsCount) {
+                for (Map<String, Object> map : bigStorageCageDetailsCount) {
                     for (Map.Entry<String, Object> entry : map.entrySet()) {
                         int deviceId = Integer.parseInt(entry.getKey());
                         BigStorageCage bigStorageCage=bigStorageCageSlot(deviceId);
@@ -92,8 +92,9 @@
                 }
             }
         }
-        log.info("6銆佸綋鎵惧埌鍚堥�傜殑鏍煎瓙鏃舵坊鍔犵幓鐠冨埌绗煎瓙琛�");
+
         if (bigStorageCageDetails.getSlot() != null) {
+            log.info("6銆佸綋鎵惧埌鍚堥�傜殑鏍煎瓙鏃舵坊鍔犵幓鐠冨埌绗煎瓙琛�");
             bigStorageCageDetails.setState(0);
             bigStorageCageDetailsMapper.insert(bigStorageCageDetails);
             updateRemainWidth(bigStorageCageDetails.getSlot()) ;
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/common/S7object.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/common/S7object.java
new file mode 100644
index 0000000..102ff13
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/common/S7object.java
@@ -0,0 +1,61 @@
+package com.mes.common;
+
+import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
+import com.mes.device.PlcParameterObject;
+import com.mes.tools.InitUtil;
+import com.mes.tools.S7control;
+
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/4/9 15:13
+ * @Description:
+ */
+public class S7object extends Thread {
+    public S7control plccontrol; // PLC閫氳绫诲疄渚�
+    private EPlcType plcType = EPlcType.S1200; // 瑗块棬瀛怭LC绫诲瀷
+    private String ip = "192.168.10.1"; // plc ip鍦板潃
+    private int port = 102; // plc 绔彛鍙�
+
+
+    public PlcParameterObject PlcMesObject;
+    private static volatile S7object instance = null;
+
+    private S7object() {
+        if (plccontrol == null) {
+            plccontrol = new S7control(plcType, ip, port, 0, 0);
+
+            String PlcLoadGlass=S7object.class.getResource("/JsonFile/PlcCacheVerticalGlass.json").getPath();
+            //log.info(PLCAutoMes.class.getResource("").getPath());
+            PlcMesObject = InitUtil.initword(PlcLoadGlass);
+        }
+    }
+
+    // 鍗曚緥妯″紡 鑾峰彇绫荤殑鍞竴瀹炰緥
+    public static S7object getinstance() {
+        if (instance == null) {
+            synchronized (S7object.class) {
+                if (instance == null) {
+                    instance = new S7object();
+                }
+            }
+        }
+        return instance;
+    }
+
+    @Override
+    public void run() {
+        while (this != null) {
+            try {
+                Thread.sleep(100);
+
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+
+            byte[] getplcvlues=   plccontrol.ReadByte(PlcMesObject.getPlcAddressBegin(),PlcMesObject.getPlcAddressLength());
+            PlcMesObject.setPlcParameterList(getplcvlues);
+
+        }
+    }
+}
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/common/WebSocketServer.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/common/WebSocketServer.java
new file mode 100644
index 0000000..5fabafa
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/common/WebSocketServer.java
@@ -0,0 +1,160 @@
+package com.mes.common;
+
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.stereotype.Component;
+
+import javax.websocket.*;
+import javax.websocket.server.PathParam;
+import javax.websocket.server.ServerEndpoint;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+@ServerEndpoint(value = "/api/talk/{username}")
+@Component("webSocketServer")
+public class WebSocketServer {
+
+
+    public static ConfigurableApplicationContext applicationContext;
+
+    // 瑙e喅鏃犳硶娉ㄥ叆mapper闂 //浣跨敤鏂规硶
+    // homeMapper=WebSocketServer.applicationContext.getBean(HomeMapper.class);
+    public static void setApplicationContext(ConfigurableApplicationContext configurableApplicationContext) {
+        WebSocketServer.applicationContext = configurableApplicationContext;
+    }
+
+    private static final Logger log = LoggerFactory.getLogger(WebSocketServer.class);
+    private List<String> messages;
+    /**
+     * 璁板綍褰撳墠鍦ㄧ嚎杩炴帴鏁�
+     */
+    public static final Map<String, ArrayList<WebSocketServer>> sessionMap = new ConcurrentHashMap<>();
+
+    String username;
+    Session session;
+
+    public WebSocketServer() {
+        this.messages = new ArrayList<>();
+    }
+
+    /**
+     * 杩炴帴寤虹珛鎴愬姛璋冪敤鐨勬柟娉�
+     */
+    @OnOpen
+    public void onOpen(Session session, @PathParam("username") String username) {
+        this.username = username;
+        this.session = session;
+        List<WebSocketServer> webSocketServers = sessionMap.get(username);
+        if (webSocketServers == null) {
+            ArrayList<WebSocketServer> arrayListwebserver = new ArrayList<WebSocketServer>();
+            arrayListwebserver.add(this);
+            sessionMap.put(username, arrayListwebserver);
+        } else {
+            webSocketServers.add(this);
+        }
+
+        log.info("鏈夋柊鐢ㄦ埛鍔犲叆锛寀sername={}, 褰撳墠鍦ㄧ嚎浜烘暟涓猴細{}", username, sessionMap.get(username).size());
+
+        // JSONObject result = new JSONObject();
+        // JSONArray array = new JSONArray();
+        // result.set("users", array);
+        // for (Object key : sessionMap.keySet()) {
+        // JSONObject jsonObject = new JSONObject();
+        // jsonObject.set("username", key);
+        // array.add(jsonObject);
+        // }
+
+        // sendAllMessage(JSONUtil.toJsonStr(result)); // 鍚庡彴鍙戦�佹秷鎭粰鎵�鏈夌殑瀹㈡埛绔�
+    }
+
+    /**
+     * 杩炴帴鍏抽棴璋冪敤鐨勬柟娉�
+     */
+    @OnClose
+    public void onClose(Session session, @PathParam("username") String username) {
+        List<WebSocketServer> webSocketServers = sessionMap.get(username);
+        ArrayList<WebSocketServer> arrayListwebserver = new ArrayList<WebSocketServer>();
+        if (webSocketServers.size() > 1) {
+            for (WebSocketServer webSocketServer : webSocketServers) {
+                if (webSocketServer != this) {
+                    arrayListwebserver.add(webSocketServer);
+                }
+            }
+            sessionMap.put(username, arrayListwebserver);
+            log.info("绉婚櫎username={}涓�鍚嶇敤鎴穝ession, {}鐨勫綋鍓嶅湪绾夸汉鏁颁负锛歿}", username, username, sessionMap.get(username).size());
+        } else {
+            sessionMap.remove(username);
+            log.info("绉婚櫎username={}涓�鍚嶇敤鎴穝ession, {}杩炴帴鍏抽棴, 褰撳墠杩炴帴鏁颁负锛歿}", username, username, sessionMap.size());
+        }
+
+    }
+
+    /**
+     * 鏀跺埌瀹㈡埛绔秷鎭悗璋冪敤鐨勬柟娉�
+     * 鍚庡彴鏀跺埌瀹㈡埛绔彂閫佽繃鏉ョ殑娑堟伅
+     * onMessage 鏄竴涓秷鎭殑涓浆绔�
+     * 鎺ュ彈 娴忚鍣ㄧ socket.send 鍙戦�佽繃鏉ョ殑 json鏁版嵁
+     *
+     * @param message 瀹㈡埛绔彂閫佽繃鏉ョ殑娑堟伅
+     */
+    @OnMessage
+    public void onMessage(String message, Session session, @PathParam("username") String username) {
+        log.info("鏈嶅姟绔敹鍒扮敤鎴穟sername={}鐨勬秷鎭�:{}", username, message);
+        JSONObject obj = JSONUtil.parseObj(message);
+        String text = obj.getStr("data");
+
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.set("message", text);
+        this.messages.add(text);
+        this.sendMessage(jsonObject.toString()); // JSONUtil.toJsonStr(jsonObject)
+
+    }
+
+    @OnError
+    public void onError(Session session, Throwable error) {
+        log.error("鍙戠敓閿欒");
+        error.printStackTrace();
+    }
+
+    /**
+     * 鏈嶅姟绔彂閫佹秷鎭粰瀹㈡埛绔�
+     */
+    public void sendMessage(String message) {
+        try {
+            // log.info("鏈嶅姟绔粰瀹㈡埛绔痆{}]鍙戦�佹秷鎭瘂}", this.session.getId(), message);
+            this.session.getBasicRemote().sendText(message);
+        } catch (Exception e) {
+            log.error("鏈嶅姟绔彂閫佹秷鎭粰瀹㈡埛绔け璐�", e);
+        }
+    }
+
+    // /**
+    //  * 鏈嶅姟绔彂閫佹秷鎭粰鎵�鏈夊鎴风
+    //  */
+    // public void sendAllMessage(String message) {
+    //     try {
+    //         for (WebSocketServer webSocketServer : sessionMap.values()) {
+    //             // log.info("鏈嶅姟绔粰瀹㈡埛绔痆{}]鍙戦�佹秷鎭瘂}", this.session.getId(), message);
+    //             webSocketServer.sendMessage(message);
+    //         }
+    //     } catch (Exception e) {
+    //         log.error("鏈嶅姟绔彂閫佹秷鎭粰瀹㈡埛绔け璐�", e);
+    //     }
+    // }
+
+    public List<String> getMessages() {
+        return messages;
+
+    }
+
+    public void clearMessages() {
+        messages.clear();
+    }
+
+
+}
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
index ab589a7..1e9a559 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -5,8 +5,12 @@
 import com.mes.bigstorage.service.BigStorageCageDetailsService;
 import com.mes.bigstorage.service.BigStorageCageService;
 import com.mes.bigstoragetask.entity.BigStorageCageFeedTask;
+import com.mes.bigstoragetask.entity.BigStorageCageOutTask;
 import com.mes.bigstoragetask.service.BigStorageCageFeedTaskService;
 import com.mes.bigstoragetask.service.BigStorageCageOutTaskService;
+import com.mes.common.S7object;
+import com.mes.common.WebSocketServer;
+import com.mes.device.PlcParameterObject;
 import com.mes.edgstoragetask.service.TaskCacheService;
 import com.mes.glassinfo.entity.GlassInfo;
 import com.mes.glassinfo.service.GlassInfoService;
@@ -16,28 +20,31 @@
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
+import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.List;
 
 @Component
 @Slf4j
 public class PlcStorageCageTask {
 
-    @Autowired
+    @Resource
     private BigStorageCageService bigStorageCageService;
-    @Autowired
+    @Resource
     private BigStorageCageDetailsService bigStorageCageDetailsService;
-    @Autowired
+    @Resource
     private GlassInfoService glassInfoService;
-    @Autowired
+    @Resource
     private BigStorageCageFeedTaskService bigStorageCageFeedTaskService;
-    @Autowired
+    @Resource
     private BigStorageCageOutTaskService bigStorageCageOutTaskService;
-    @Autowired
+    @Resource
     private TaskCacheService taskCacheService;
 
-    @Autowired
+    @Resource
     private SysMenuService sysMenuService;
 
+    PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
     /**
      * fixedRate : 涓婁竴涓皟鐢ㄥ紑濮嬪悗鍐嶆璋冪敤鐨勫欢鏃讹紙涓嶇敤绛夊緟涓婁竴娆¤皟鐢ㄥ畬鎴愶級
      * fixedDelay : 涓婁竴涓皟鐢ㄧ粨鏉熷悗鍐嶆璋冪敤鐨勫欢鏃�
@@ -46,22 +53,18 @@
     public void plcStorageCageTask() throws InterruptedException {
         JSONObject jsonObject = new JSONObject();
         try {
-            Thread.sleep(300);
+            // 鐖嗙鎶ヨ
             boolean bigStorageCageFullAlarm = false;
 
-            String plcD01FeedReq = "0";
-            String plcD04FeedReq = "0";
-            String plcFeedGlassid = "111";
+            String plcFeedGlassid = "";
             String plcFeedReqLine = "0";
-            if ("1".equals(plcD01FeedReq)) {
+            if ("1".equals(plcParameterObject.getPlcParameter("D01Request").getValue())) {
                 plcFeedReqLine = "1";
-            } else {
-                //plc浠诲姟鍙戦�佸瓧0
+                plcFeedGlassid=plcParameterObject.getPlcParameter("D01ID1").getValue();
             }
-            if ("1".equals(plcD04FeedReq)) {
+            if ("1".equals(plcParameterObject.getPlcParameter("D04Request").getValue())) {
                 plcFeedReqLine = "2";
-            } else {
-                //plc浠诲姟鍙戦�佸瓧0
+                plcFeedGlassid=plcParameterObject.getPlcParameter("D04ID1").getValue();
             }
 
             if (!("0".equals(plcFeedReqLine))) {
@@ -75,10 +78,8 @@
                     log.info("3銆佹煡璇换鍔¤〃鍒ゆ柇褰撳墠浠诲姟绫诲瀷涓轰笂杞︾瓑鍒拌繕鏄笂杞﹀惎鍔�" + taskType);
                     bigStorageCageFeedTaskService.addFeedTask(slotInfo, Integer.parseInt(plcFeedReqLine), taskType);
                     log.info("4銆佹坊鍔犱换鍔″埌浠诲姟琛�");
-                    //plc浠诲姟鍙戦�佸瓧1
                     bigStorageCageFullAlarm = false;
                 } else {
-                    //鐞嗙墖绗肩垎绗兼姤璀�
                     bigStorageCageFullAlarm = true;
                 }
             } else {
@@ -96,24 +97,33 @@
                 }
             }
 
-            //鍑虹墖璇锋眰
-            String plcOutReq = "0";
-            boolean result = false;
-            if ("1".equals(plcOutReq)) {
-                result = bigStorageCageService.outGlass();
-                log.info("8銆佸嚭鐗囪姹傛椂璋冪敤鍑虹墖鎺ュ彛" + result);
-                if (result) {
-                    //plc浠诲姟鍙戦�佸瓧1
-                }
-            } else {
-                bigStorageCageOutTaskService.updateOutTask();
-                //plc浠诲姟鍙戦�佸瓧0
+            //鏌ヨ鍑虹墖琛ㄦ槸鍚︽湁浠诲姟鏈畬鎴愮殑浠诲姟
+            List<BigStorageCageOutTask> bigStorageCageOutTask=bigStorageCageOutTaskService.querybigStorageCageOutTask(0);
+            if(bigStorageCageOutTask.size()==0){
+                bigStorageCageService.outGlass();
+                log.info("8銆佹病鏈夋湭瀹屾垚浠诲姟鏃惰皟鐢ㄥ嚭鐗囨帴鍙�");
             }
-
-            //鏄剧ず鍓╀綑绌烘牸瀛�
+            bigStorageCageOutTaskService.updateOutTask();
+            log.info("9銆佹牴鎹换鍔¤〃鐘舵�佷慨鏀归挗鍖栧皬鐗囪〃浠诲姟鐘舵��");
 
             //鎶ヨ淇℃伅
             jsonObject.append("bigStorageCageFullAlarm", bigStorageCageFullAlarm);
+
+            ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Home");
+            if (sendwServer != null) {
+                for (WebSocketServer webserver : sendwServer) {
+                    if (webserver != null) {
+                        webserver.sendMessage(jsonObject.toString());
+                        List<String> messages = webserver.getMessages();
+                        if (!messages.isEmpty()) {
+                            // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
+                            webserver.clearMessages();
+                        }
+                    } else {
+                        log.info("Home is closed");
+                    }
+                }
+            }
         } catch (Exception e) {
             e.printStackTrace();
         }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/JsonFile/PlcCacheVerticalGlass.json b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/JsonFile/PlcCacheVerticalGlass.json
new file mode 100644
index 0000000..5838dac
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/JsonFile/PlcCacheVerticalGlass.json
@@ -0,0 +1,57 @@
+{
+  "plcAddressBegin":"DB.0",
+  "plcAddressLenght":"72",
+  "dataType":"word",
+  "parameteInfor":[
+    {
+      "codeId": "D01Request",
+      "addressIndex":"0",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":"m/min"
+    },
+    {
+      "codeId": "D01ID1",
+      "addressIndex":"2",
+      "addressLenght":"6",
+      "ratio":"1",
+      "unit":""
+    },
+    {
+      "codeId": "D04Request",
+      "addressIndex":"8",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    },
+    {
+      "codeId": "D04ID1",
+      "addressIndex":"10",
+      "addressLenght":"6",
+      "ratio":"1",
+      "unit":""
+    },
+    {
+      "codeId": "D02Go",
+      "addressIndex":"20",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    },
+    {
+      "codeId": "D05Go",
+      "addressIndex":"22",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    }
+  ,
+    {
+      "codeId": "DeviceStatus",
+      "addressIndex":"70",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    }
+  ]
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/AppRunnerConfig.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/AppRunnerConfig.java
new file mode 100644
index 0000000..4f6a172
--- /dev/null
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/AppRunnerConfig.java
@@ -0,0 +1,29 @@
+package com.mes;
+
+import com.mes.common.S7object;
+import com.mes.job.PlcLoadGlassTask;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+@Slf4j
+@Component
+@Order(1)
+
+public class AppRunnerConfig implements ApplicationRunner {
+
+    private final PlcLoadGlassTask plcLoadGlassTask;
+
+    public AppRunnerConfig(PlcLoadGlassTask plcLoadGlassTask) {
+        this.plcLoadGlassTask = plcLoadGlassTask;
+    }
+
+    @Override
+    public void run(ApplicationArguments args) throws Exception {
+        log.info("鍚姩瀹屾垚");
+        S7object.getinstance().start();
+
+    }
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/LoadGlassModuleApplication.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/LoadGlassModuleApplication.java
index 2634690..593308c 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/LoadGlassModuleApplication.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/LoadGlassModuleApplication.java
@@ -5,6 +5,7 @@
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.scheduling.annotation.EnableScheduling;
 import springfox.documentation.swagger2.annotations.EnableSwagger2;
 
 /**
@@ -16,6 +17,7 @@
 @SpringBootApplication
 @EnableSwagger2
 @EnableDiscoveryClient
+@EnableScheduling
 @MapperScan(basePackages = "com.mes.*.mapper")
 public class LoadGlassModuleApplication {
     public static void main(String[] args) {
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/JsonFile/PlcLoadGlass.json b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/JsonFile/PlcLoadGlass.json
deleted file mode 100644
index eed5688..0000000
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/JsonFile/PlcLoadGlass.json
+++ /dev/null
@@ -1,414 +0,0 @@
-{
-   "plcAddressBegin":"DB14.0",
-   "plcAddressLenght":"208",
-   "dataType":"word",
-   "parameteInfor":[
-      {
-         "codeId": "PLCToMES",  
-         "addressIndex":"0",
-         "addressLenght":"2", 
-         "ratio":"1", 
-         "unit":"m/min"    
-      },
-      {
-          "codeId": "IDStatus1",
-          "addressIndex":"2",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"m/min"      
-       },
-       {
-          "codeId": "IDStatus2",
-          "addressIndex":"4",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"m/min"
-       },
-       {
-          "codeId": "IDStatus3",
-          "addressIndex":"6",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "IDStatus4",
-          "addressIndex":"8",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "IDStatus5",
-          "addressIndex":"10",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       }
-       ,
-       {
-          "codeId": "IDStatus6",
-          "addressIndex":"12",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "StautsID1",
-          "addressIndex":"14",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       }
-       ,
-       {
-          "codeId": "StautsID2",
-          "addressIndex":"16",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       }
-       ,
-       {
-          "codeId": "StautsID3",
-          "addressIndex":"18",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       }
-       ,
-       {
-          "codeId": "StautsID4",
-          "addressIndex":"20",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       }
-       ,
-       {
-          "codeId": "StautsID5",
-          "addressIndex":"22",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "StautsID6",
-          "addressIndex":"24",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "GaToMES",
-          "addressIndex":"26",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "Height",
-          "addressIndex":"28",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "width",
-          "addressIndex":"30",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "ExportTOMES1",
-          "addressIndex":"32",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       }
-       ,
-       {
-          "codeId": "ExportToMES2",
-          "addressIndex":"34",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       } ,
-       {
-          "codeId": "MESToPLC",
-          "addressIndex":"36",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       } ,
-       {
-          "codeId": "MESID1",
-          "addressIndex":"38",
-          "addressLenght":"14",
-          "ratio":"1",
-          "unit":"mm/S"
-       } ,
-       {
-          "codeId": "MESID2",
-          "addressIndex":"54",
-          "addressLenght":"14",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "MESID3",
-          "addressIndex":"70",
-          "addressLenght":"14",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "MESID4",
-          "addressIndex":"86",
-          "addressLenght":"14",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "MESID5",
-          "addressIndex":"102",
-          "addressLenght":"14",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "MESID6",
-          "addressIndex":"118",
-          "addressLenght":"14",
-          "ratio":"1",
-          "unit":"mm/S"
-       },
-       {
-          "codeId": "MESToPLCStart1",
-          "addressIndex":"134",
-          "addressLenght":"2",
-          "ratio":"1",
-          "unit":"mm/S"
-       },{
-         "codeId": "MESToPLCStart2",
-         "addressIndex":"136",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "MESToPLCStart3",
-         "addressIndex":"138",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      }
-      ,{
-         "codeId": "MESToPLCStart4",
-         "addressIndex":"140",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      }
-      ,{
-         "codeId": "MESToPLCStart5",
-         "addressIndex":"142",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      }
-      ,{
-         "codeId": "MESToPLCStart6",
-         "addressIndex":"144",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "MESToPLCTarget1",
-         "addressIndex":"146",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "MESToPLCTarget2",
-         "addressIndex":"148",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "MESToPLCTarget3",
-         "addressIndex":"150",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "MESToPLCTarget4",
-         "addressIndex":"152",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "MESToPLCTarget5",
-         "addressIndex":"154",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "MESToPLCTarget6",
-         "addressIndex":"156",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "MESToPLCStatus1",
-         "addressIndex":"158",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "MESToPLCStatus2",
-         "addressIndex":"160",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "MESToPLCStatus3",
-         "addressIndex":"162",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "MESToPLCStatus4",
-         "addressIndex":"164",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "MESToPLCStatus5",
-         "addressIndex":"166",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "MESToPLCStatus6",
-         "addressIndex":"168",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "MESToGaStatus",
-         "addressIndex":"170",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "A01Err",
-         "addressIndex":"172",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "A02Err",
-         "addressIndex":"174",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "B01Err",
-         "addressIndex":"176",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "C01Err",
-         "addressIndex":"178",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "C02Err",
-         "addressIndex":"180",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "ErrSpace1",
-         "addressIndex":"182",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "ErrSpace2",
-         "addressIndex":"184",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "ErrSpace3",
-         "addressIndex":"186",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "B01Position",
-         "addressIndex":"188",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "C01Position",
-         "addressIndex":"190",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "C02Position",
-         "addressIndex":"192",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "DeviceState",
-         "addressIndex":"194",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "AllFVRun",
-         "addressIndex":"196",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "A01State",
-         "addressIndex":"198",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "A02State",
-         "addressIndex":"200",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "B01State",
-         "addressIndex":"202",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "C01State",
-         "addressIndex":"204",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      },{
-         "codeId": "C02State",
-         "addressIndex":"206",
-         "addressLenght":"2",
-         "ratio":"1",
-         "unit":"mm/S"
-      }
-   ]
-}
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/S7object.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/S7object.java
index 45e5467..2ad66f4 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/S7object.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/S7object.java
@@ -1,24 +1,34 @@
 package com.mes.common;
 
 import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
+import com.mes.device.PlcParameterObject;
+import com.mes.tools.InitUtil;
 import com.mes.tools.S7control;
+
+
 
 /**
  * @Author : zhoush
  * @Date: 2024/4/9 15:13
  * @Description:
  */
-public class S7object {
+public class S7object extends Thread {
     public S7control plccontrol; // PLC閫氳绫诲疄渚�
-    private EPlcType plcType = EPlcType.S1500; // 瑗块棬瀛怭LC绫诲瀷
+    private EPlcType plcType = EPlcType.S1200; // 瑗块棬瀛怭LC绫诲瀷
     private String ip = "192.168.10.1"; // plc ip鍦板潃
     private int port = 102; // plc 绔彛鍙�
 
+
+    public PlcParameterObject PlcMesObject;
     private static volatile S7object instance = null;
 
     private S7object() {
         if (plccontrol == null) {
             plccontrol = new S7control(plcType, ip, port, 0, 0);
+
+            String PlcLoadGlass=S7object.class.getResource("/JsonFile/PlcLoadGlass.json").getPath();
+            //log.info(PLCAutoMes.class.getResource("").getPath());
+            PlcMesObject = InitUtil.initword(PlcLoadGlass);
         }
     }
 
@@ -33,4 +43,20 @@
         }
         return instance;
     }
+
+    @Override
+    public void run() {
+        while (this != null) {
+            try {
+                Thread.sleep(100);
+
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+
+            byte[] getplcvlues=   plccontrol.ReadByte(PlcMesObject.getPlcAddressBegin(),PlcMesObject.getPlcAddressLength());
+            PlcMesObject.setPlcParameterList(getplcvlues);
+
+        }
+    }
 }
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/WebSocketServer.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/WebSocketServer.java
new file mode 100644
index 0000000..5fabafa
--- /dev/null
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/WebSocketServer.java
@@ -0,0 +1,160 @@
+package com.mes.common;
+
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.stereotype.Component;
+
+import javax.websocket.*;
+import javax.websocket.server.PathParam;
+import javax.websocket.server.ServerEndpoint;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+@ServerEndpoint(value = "/api/talk/{username}")
+@Component("webSocketServer")
+public class WebSocketServer {
+
+
+    public static ConfigurableApplicationContext applicationContext;
+
+    // 瑙e喅鏃犳硶娉ㄥ叆mapper闂 //浣跨敤鏂规硶
+    // homeMapper=WebSocketServer.applicationContext.getBean(HomeMapper.class);
+    public static void setApplicationContext(ConfigurableApplicationContext configurableApplicationContext) {
+        WebSocketServer.applicationContext = configurableApplicationContext;
+    }
+
+    private static final Logger log = LoggerFactory.getLogger(WebSocketServer.class);
+    private List<String> messages;
+    /**
+     * 璁板綍褰撳墠鍦ㄧ嚎杩炴帴鏁�
+     */
+    public static final Map<String, ArrayList<WebSocketServer>> sessionMap = new ConcurrentHashMap<>();
+
+    String username;
+    Session session;
+
+    public WebSocketServer() {
+        this.messages = new ArrayList<>();
+    }
+
+    /**
+     * 杩炴帴寤虹珛鎴愬姛璋冪敤鐨勬柟娉�
+     */
+    @OnOpen
+    public void onOpen(Session session, @PathParam("username") String username) {
+        this.username = username;
+        this.session = session;
+        List<WebSocketServer> webSocketServers = sessionMap.get(username);
+        if (webSocketServers == null) {
+            ArrayList<WebSocketServer> arrayListwebserver = new ArrayList<WebSocketServer>();
+            arrayListwebserver.add(this);
+            sessionMap.put(username, arrayListwebserver);
+        } else {
+            webSocketServers.add(this);
+        }
+
+        log.info("鏈夋柊鐢ㄦ埛鍔犲叆锛寀sername={}, 褰撳墠鍦ㄧ嚎浜烘暟涓猴細{}", username, sessionMap.get(username).size());
+
+        // JSONObject result = new JSONObject();
+        // JSONArray array = new JSONArray();
+        // result.set("users", array);
+        // for (Object key : sessionMap.keySet()) {
+        // JSONObject jsonObject = new JSONObject();
+        // jsonObject.set("username", key);
+        // array.add(jsonObject);
+        // }
+
+        // sendAllMessage(JSONUtil.toJsonStr(result)); // 鍚庡彴鍙戦�佹秷鎭粰鎵�鏈夌殑瀹㈡埛绔�
+    }
+
+    /**
+     * 杩炴帴鍏抽棴璋冪敤鐨勬柟娉�
+     */
+    @OnClose
+    public void onClose(Session session, @PathParam("username") String username) {
+        List<WebSocketServer> webSocketServers = sessionMap.get(username);
+        ArrayList<WebSocketServer> arrayListwebserver = new ArrayList<WebSocketServer>();
+        if (webSocketServers.size() > 1) {
+            for (WebSocketServer webSocketServer : webSocketServers) {
+                if (webSocketServer != this) {
+                    arrayListwebserver.add(webSocketServer);
+                }
+            }
+            sessionMap.put(username, arrayListwebserver);
+            log.info("绉婚櫎username={}涓�鍚嶇敤鎴穝ession, {}鐨勫綋鍓嶅湪绾夸汉鏁颁负锛歿}", username, username, sessionMap.get(username).size());
+        } else {
+            sessionMap.remove(username);
+            log.info("绉婚櫎username={}涓�鍚嶇敤鎴穝ession, {}杩炴帴鍏抽棴, 褰撳墠杩炴帴鏁颁负锛歿}", username, username, sessionMap.size());
+        }
+
+    }
+
+    /**
+     * 鏀跺埌瀹㈡埛绔秷鎭悗璋冪敤鐨勬柟娉�
+     * 鍚庡彴鏀跺埌瀹㈡埛绔彂閫佽繃鏉ョ殑娑堟伅
+     * onMessage 鏄竴涓秷鎭殑涓浆绔�
+     * 鎺ュ彈 娴忚鍣ㄧ socket.send 鍙戦�佽繃鏉ョ殑 json鏁版嵁
+     *
+     * @param message 瀹㈡埛绔彂閫佽繃鏉ョ殑娑堟伅
+     */
+    @OnMessage
+    public void onMessage(String message, Session session, @PathParam("username") String username) {
+        log.info("鏈嶅姟绔敹鍒扮敤鎴穟sername={}鐨勬秷鎭�:{}", username, message);
+        JSONObject obj = JSONUtil.parseObj(message);
+        String text = obj.getStr("data");
+
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.set("message", text);
+        this.messages.add(text);
+        this.sendMessage(jsonObject.toString()); // JSONUtil.toJsonStr(jsonObject)
+
+    }
+
+    @OnError
+    public void onError(Session session, Throwable error) {
+        log.error("鍙戠敓閿欒");
+        error.printStackTrace();
+    }
+
+    /**
+     * 鏈嶅姟绔彂閫佹秷鎭粰瀹㈡埛绔�
+     */
+    public void sendMessage(String message) {
+        try {
+            // log.info("鏈嶅姟绔粰瀹㈡埛绔痆{}]鍙戦�佹秷鎭瘂}", this.session.getId(), message);
+            this.session.getBasicRemote().sendText(message);
+        } catch (Exception e) {
+            log.error("鏈嶅姟绔彂閫佹秷鎭粰瀹㈡埛绔け璐�", e);
+        }
+    }
+
+    // /**
+    //  * 鏈嶅姟绔彂閫佹秷鎭粰鎵�鏈夊鎴风
+    //  */
+    // public void sendAllMessage(String message) {
+    //     try {
+    //         for (WebSocketServer webSocketServer : sessionMap.values()) {
+    //             // log.info("鏈嶅姟绔粰瀹㈡埛绔痆{}]鍙戦�佹秷鎭瘂}", this.session.getId(), message);
+    //             webSocketServer.sendMessage(message);
+    //         }
+    //     } catch (Exception e) {
+    //         log.error("鏈嶅姟绔彂閫佹秷鎭粰瀹㈡埛绔け璐�", e);
+    //     }
+    // }
+
+    public List<String> getMessages() {
+        return messages;
+
+    }
+
+    public void clearMessages() {
+        messages.clear();
+    }
+
+
+}
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/EngineeringService.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/EngineeringService.java
deleted file mode 100644
index ebca48c..0000000
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/EngineeringService.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.mes.engineering.service;
-
-import com.mes.engineering.entity.Engineering;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
- * <p>
- *  鏈嶅姟绫�
- * </p>
- *
- * @author wu
- * @since 2024-04-22
- */
-public interface EngineeringService extends IService<Engineering> {
-
-    boolean  changeTask(String projectId,Integer state);
-}
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java
deleted file mode 100644
index fa3ec49..0000000
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.mes.engineering.service.impl;
-
-import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
-import com.mes.engineering.entity.Engineering;
-import com.mes.engineering.mapper.EngineeringMapper;
-import com.mes.engineering.service.EngineeringService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- *  鏈嶅姟瀹炵幇绫�
- * </p>
- *
- * @author wu
- * @since 2024-04-22
- */
-@Service
-public class EngineeringServiceImpl extends ServiceImpl<EngineeringMapper, Engineering> implements EngineeringService {
-    //寮�濮�/鏆傚仠浠诲姟
-    @Override
-    public  boolean  changeTask(String projectId, Integer state) {
-        //浣跨敤projectId浣滀负鏉′欢淇敼state瀛楁
-        LambdaUpdateChainWrapper<Engineering> wrapper = new LambdaUpdateChainWrapper<>(this.getBaseMapper());
-        wrapper.set(Engineering::getState,state);
-        wrapper.eq(Engineering::getEngineerId,projectId);
-        return  wrapper.update();
-    }
-
-}
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java
index d3c4324..c8bce6f 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java
@@ -1,33 +1,109 @@
 package com.mes.job;
 
-import cn.hutool.json.JSONObject;
+import com.mes.common.S7object;
+import com.mes.device.PlcParameterObject;
+import com.mes.engineering.entity.Engineering;
+import com.mes.engineering.service.EngineeringService;
+import com.mes.uppattenusage.entity.UpPattenUsage;
+import com.mes.uppattenusage.service.UpPattenUsageService;
+import com.mes.workstation.entity.UpWorkstation;
 import com.mes.workstation.service.UpWorkstationService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
+/**
+ * @author SNG-010
+ */
 @Component
 @Slf4j
 public class PlcLoadGlassTask {
 
     @Autowired
     private UpWorkstationService upWorkstationService;
+    @Autowired
+    private EngineeringService engineeringService;
+    @Autowired
+    private UpPattenUsageService upPattenUsageService;
 
+    PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
 
     /**
      * fixedRate : 涓婁竴涓皟鐢ㄥ紑濮嬪悗鍐嶆璋冪敤鐨勫欢鏃讹紙涓嶇敤绛夊緟涓婁竴娆¤皟鐢ㄥ畬鎴愶級
      * fixedDelay : 涓婁竴涓皟鐢ㄧ粨鏉熷悗鍐嶆璋冪敤鐨勫欢鏃�
      */
+
     @Scheduled(fixedDelay = 300)
     public void plcLoadGlassTask() throws InterruptedException {
-        JSONObject jsonObject = new JSONObject();
         try {
-            Thread.sleep(300);
-            upWorkstationService.selectPriority();
+            //鑾峰彇鏄惁鏈変笂鐗囪姹�
+            String loadRequest = plcParameterObject.getPlcParameter("loadRequest").getValue();
+            //鍒ゆ柇寮�濮嬩笂鐗囩殑宸ョ▼鍙�
+            Engineering engineering = engineeringService.selectInitiate(1);
+            if ("1".equals(loadRequest) && engineering != null) {
+                log.info("寮�濮嬩笂鐗囦换鍔�");
+                UpPattenUsage upPattenUsage = upWorkstationService.selectPriority(engineering);
+                log.info("褰撴湁璇锋眰鏃舵煡璇㈠綋鍓嶄笂鐗囬『搴忕殑鐜荤拑淇℃伅{}", upPattenUsage);
+                UpWorkstation upwork = upWorkstationService.selectWorkstation(upPattenUsage);
+                log.info("绗﹀悎鐨勫昂瀵哥殑宸ヤ綅鐜荤拑锛歿}", upwork);
+                if (upwork != null) {
+                    int workId = upwork.getWorkstationId();//宸ヤ綅id
+                    double width = upwork.getPatternWidth();//瀹藉害
+                    double height = upwork.getPatternHeight();//楂樺害
+                    S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("WorkId").getAddress(), workId);
+                    S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("GlassWidth").getAddress(), (long) width);
+                    S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("GlassHeight").getAddress(), (long) height);
+                    S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlc").getAddress(), 1);
+                    //鏇存敼涓婄墖琛ㄧ姸鎬�
+                    upPattenUsageService.updateUpPattenUsageState(upPattenUsage, workId);
+
+                }
+            }else {
+                //璇锋眰瀛椾负闆舵椂锛屼换鍔″瓧娓呴浂
+                S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlc").getAddress(), 0);
+            }
+            //鎵ц鍚庝紤鐪�300姣
+            //Thread.sleep(300);
         } catch (Exception e) {
             e.printStackTrace();
         }
     }
 
+    @Scheduled(fixedDelay = 300)
+    public void plcLoadGlassReport(){
+        //鑾峰彇鏄惁鏈夋眹鎶�
+        String loadStatus = plcParameterObject.getPlcParameter("PlcStatus").getValue();
+        if (loadStatus != null) {
+            log.info(loadStatus);
+            if ("1".equals(loadStatus)) {
+                log.info("鏀跺埌姹囨姤浠诲姟瀹屾垚");
+                S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(), 1);
+            } else if ("2".equals(loadStatus)) {
+                log.info("鏀跺埌姹囨姤鏈畬鎴愪换鍔�");
+                //鍑忓皯宸ヤ綅鏁伴噺,鎭㈠浠诲姟鐘舵��
+                overTask(loadStatus,0);
+            } else if ("3".equals(loadStatus)) {
+                log.info("鏀跺埌姹囨姤鐜荤拑鐮存崯");
+                overTask(loadStatus,0);
+            } else if("0".equals(loadStatus)){
+                log.info("鏀跺埌姹囨姤娓�0鐘舵��");
+                //鍑忓皯宸ヤ綅鏁伴噺,瀹屾垚浠诲姟鐘舵��
+                overTask(loadStatus,100);
+            }
+        }
+    }
+
+    public void overTask(String loadStatus, int state)  {
+        UpPattenUsage upPattenUsage = upPattenUsageService.selectOverTask();
+        if (upPattenUsage != null) {
+            log.info("鏀跺埌姹囨姤娓厈}鐘舵��", loadStatus);
+            //鍑忓皯宸ヤ綅鏁伴噺
+            upWorkstationService.reduceWorkstationNumber(upPattenUsage.getState());
+            //瀹屾垚涓婄墖琛ㄧ姸鎬�
+            upPattenUsageService.updateUpPattenUsageState(upPattenUsage, state);
+            S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(), 0);
+        }
+    }
+
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/entity/UpWorkstation.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/entity/UpWorkstation.java
index 74f6cce..b5265de 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/entity/UpWorkstation.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/entity/UpWorkstation.java
@@ -56,7 +56,7 @@
     /**
      * 鍘熺墖楂�
      */
-    private Double patternHeigth;
+    private Double patternHeight;
 
     /**
      * 鍘熺墖鍘氬害
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/mapper/UpWorkstationMapper.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/mapper/UpWorkstationMapper.java
index f5358bf..6c44a7d 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/mapper/UpWorkstationMapper.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/mapper/UpWorkstationMapper.java
@@ -3,7 +3,7 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.mes.workstation.entity.UpWorkSequence;
 import com.mes.workstation.entity.UpWorkstation;
-import io.lettuce.core.dynamic.annotation.Param;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/UpWorkstationService.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/UpWorkstationService.java
index 4c2638b..28547f4 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/UpWorkstationService.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/UpWorkstationService.java
@@ -1,7 +1,8 @@
 package com.mes.workstation.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.mes.workstation.entity.UpWorkSequence;
+import com.mes.engineering.entity.Engineering;
+import com.mes.uppattenusage.entity.UpPattenUsage;
 import com.mes.workstation.entity.UpWorkstation;
 
 /**
@@ -13,22 +14,26 @@
  * @since 2024-04-07
  */
 public interface UpWorkstationService extends IService<UpWorkstation> {
-    //PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
 
-
-
-    //鍒ゆ柇浼樺厛鍚哥墖浣嶇疆鍚庡彂閫佸嚭鐗囦换鍔�
-    UpWorkSequence selectPriority();
-
-    //鏌ヨ姝e湪杩涜鐨勫伐绋�
-
-
+    //鍒ゆ柇浼樺厛鍚哥墖鐜荤拑
+    /**
+     * 鍒ゆ柇浼樺厛鍚哥墖浣嶇疆
+     * @return UpPattenUsage
+     */
+    UpPattenUsage selectPriority(Engineering engineering);
+    /**
+     * 鏌ヨ姝e湪杩涜鐨勫崟鐗囦俊鎭�
+     * @return UpWorkstation
+     */
+    UpWorkstation selectWorkstation(UpPattenUsage upPattenUsage);
+    /**
+     * 鍑忓皯宸ヤ綅鏁伴噺
+     */
+    void reduceWorkstationNumber(Integer upworkId);
     /**
      * 澧炲姞浜哄伐杈撳叆鐨勫伐浣嶇幓鐠冧俊鎭�
-     *
      * @param upwork
      */
-    //淇敼宸ヤ綅琛ㄥ鍔犵幓鐠冧俊鎭垨鑰呭垹闄ょ幓鐠冧俊鎭�
     void updateGlassMessage(UpWorkstation upwork);
 
 
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/impl/UpWorkstationServiceImpl.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/impl/UpWorkstationServiceImpl.java
index ffd6491..3b8a57a 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/impl/UpWorkstationServiceImpl.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/impl/UpWorkstationServiceImpl.java
@@ -1,7 +1,9 @@
 package com.mes.workstation.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mes.engineering.entity.Engineering;
 import com.mes.uppattenusage.entity.UpPattenUsage;
 import com.mes.uppattenusage.mapper.UpPattenUsageMapper;
 import com.mes.workstation.entity.UpWorkSequence;
@@ -27,36 +29,47 @@
 public class UpWorkstationServiceImpl extends ServiceImpl<UpWorkstationMapper, UpWorkstation> implements UpWorkstationService {
     @Resource
     UpPattenUsageMapper upPattenUsageMapper;
-    public static final String DB_100_10 = "DB_100_10";
-
-    //鍒ゆ柇鏄惁鍙互鍚哥墖杩涜浠诲姟
-    public boolean isCanLoadGlass() {
-        String loadstart = "鍚哥墖淇″彿";//plcmes.getPlcParameter("鍚哥墖淇″彿").getValue();
-        return "1".equals(loadstart);
-
-    }
-    //鏄剧ず姝e湪杩涜浠诲姟鐨勫伐绋嬩俊鎭�
+    @Resource
+    UpWorkstationMapper upWorkstationMapper;
 
 
     //鍒ゆ柇浼樺厛鍚哥墖浣嶇疆鍚庡彂閫佸嚭鐗囦换鍔�
 
-    public UpWorkSequence selectPriority() {
-        UpWorkSequence upwork= this.baseMapper.selectPriority(1);
-        String start = "1";//plcmes.getPlcParameter("鍚哥墖淇″彿").getValue();
-        UpPattenUsage uplist=new UpPattenUsage();
-        if(start.equals("1")){
-            //鍙戦�佸嚭鐗囦换鍔�
-            UpdateWrapper<UpPattenUsage> updateWrapper = new UpdateWrapper<>();
-            updateWrapper.eq("state",1).last("LIMIT 1");
-            uplist= upPattenUsageMapper.selectOne(updateWrapper);
-            log.info("鏌ヨ鍑烘湰娆″嚭鐗囩殑鐜荤拑淇℃伅[]",uplist);
-        }
-        return upwork;
+    public UpPattenUsage selectPriority(Engineering engineering) {
+        QueryWrapper<UpPattenUsage> wrapper=new QueryWrapper<>();
+        wrapper.eq("state", 0)
+                .eq("engineering_id",engineering.getEngineerId())
+                .orderByAsc("layout_sequence")
+                .last("limit 1");
+        return upPattenUsageMapper.selectOne(wrapper);
+    }
+
+    //鍒ゆ柇宸ヤ綅鏄惁鏈夌鍚堟潯浠剁殑鐜荤拑
+    @Override
+    public UpWorkstation selectWorkstation(UpPattenUsage upPattenUsage) {
+        QueryWrapper<UpWorkstation> wrapper = new QueryWrapper<>();
+        wrapper.eq("pattern_width", upPattenUsage.getWidth())
+                .eq("pattern_height", upPattenUsage.getHeight())
+                .eq("pattern_thickness", upPattenUsage.getThickness())
+                .eq("films_id", upPattenUsage.getFilmsId())
+                .gt("number", 0)
+                .orderByAsc("number")
+                .last("limit 1");
+        return this.baseMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public void reduceWorkstationNumber(Integer upworkId) {
+        UpdateWrapper<UpWorkstation> wrapper = new UpdateWrapper<>();
+        wrapper.eq("id", upworkId)
+                .setSql("number = number - 1");
+        boolean updateResult = upWorkstationMapper.update(null, wrapper) > 0;
+        log.info("鍑忓皯宸ヤ綅鏁伴噺{}",updateResult);
+
     }
 
     /**
      * 澧炲姞浜哄伐杈撳叆鐨勫伐浣嶇幓鐠冧俊鎭�/鍒犻櫎浜哄伐鎼蛋鐨勭幓鐠冧俊鎭�
-     * @param upwork
      */
     @Override
     public void updateGlassMessage(UpWorkstation upwork) {
@@ -66,4 +79,5 @@
     }
 
 
+
 }
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/JsonFile/PlcLoadGlass.json b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/JsonFile/PlcLoadGlass.json
new file mode 100644
index 0000000..1a32fde
--- /dev/null
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/JsonFile/PlcLoadGlass.json
@@ -0,0 +1,71 @@
+{
+  "plcAddressBegin":"DB14.0",
+  "plcAddressLenght":"98",
+  "dataType":"word",
+  "parameteInfor":[
+    {
+      "codeId": "loadRequest",
+      "addressIndex":"0",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":"m/min"
+    },
+    {
+      "codeId": "PlcStatus",
+      "addressIndex":"10",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    },
+    {
+      "codeId": "MesToPlc",
+      "addressIndex":"20",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    },
+    {
+      "codeId": "WorkId",
+      "addressIndex":"24",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    },
+    {
+      "codeId": "GlassWidth",
+      "addressIndex":"26",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    },
+    {
+      "codeId": "GlassHeight",
+      "addressIndex":"28",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    }
+  ,
+    {
+      "codeId": "MesToPlcStatus",
+      "addressIndex":"40",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    },
+    {
+      "codeId": "MesToPlcStatusId",
+      "addressIndex":"42",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    },
+    {
+      "codeId": "MesTaskStatus",
+      "addressIndex":"56",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    }
+  ]
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml
index 94840e1..625cc04 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml
@@ -7,5 +7,5 @@
     name: loadGlass
 mybatis-plus:
   mapper-locations: classpath*:mapper/*.xml
-  configuration:
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
\ No newline at end of file
+#   configuration:
+#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 鎵撳嵃sql璇彞
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/test/java/com/mes/LoadGlassModuleApplicationTest.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/test/java/com/mes/LoadGlassModuleApplicationTest.java
index afb83c3..c92e6e9 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/test/java/com/mes/LoadGlassModuleApplicationTest.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/test/java/com/mes/LoadGlassModuleApplicationTest.java
@@ -1,11 +1,14 @@
 package com.mes;
 
+import com.mes.engineering.entity.Engineering;
+import com.mes.engineering.service.EngineeringService;
 import com.mes.glassinfo.entity.GlassInfo;
 import com.mes.glassinfo.service.GlassInfoService;
-import com.mes.pp.mapper.OptimizeProjectMapper;
-import com.mes.uppattenusage.entity.OptimizeUpPattenUsage;
+import com.mes.pp.service.OptimizeProjectService;
 import com.mes.uppattenusage.entity.UpPattenUsage;
 import com.mes.uppattenusage.service.impl.UpPattenUsageServiceImpl;
+import com.mes.workstation.entity.UpWorkstation;
+import com.mes.workstation.service.UpWorkstationService;
 import lombok.extern.slf4j.Slf4j;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -13,27 +16,29 @@
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
-import javax.annotation.Resource;
 import java.util.Arrays;
 import java.util.List;
-import java.util.Map;
 
 /**
- * @Author : zhoush
- * @Date: 2024/3/27 16:37
- * @Description:
+
  */
 @Slf4j
 @RunWith(SpringRunner.class)
 @SpringBootTest(classes = LoadGlassModuleApplication.class)
 public class LoadGlassModuleApplicationTest {
 
-    @Resource
-    private OptimizeProjectMapper optimizeProjectMapper;
+//    @Resource
+//    private OptimizeProjectMapper optimizeProjectMapper;
     @Autowired
     private UpPattenUsageServiceImpl upPattenUsageService;
     @Autowired
     private GlassInfoService glassInfoService;
+    @Autowired
+    private EngineeringService engineeringService;
+    @Autowired
+    private UpWorkstationService workstationService;
+    @Autowired
+    private OptimizeProjectService optimizeProjectService;
     @Test
     public void test() {
 //        List<OptimizeProject> list = optimizeProjectMapper.saveProject("P24032204");
@@ -48,12 +53,40 @@
 
     @Test
     public void testFindPa() {
-        List<UpPattenUsage> glass = upPattenUsageService.selectSaveUpPattenUsage("P24032204");
-        log.info("瀹屾暣璺緞锛歿}", Arrays.asList(glass));
+        Engineering  engineering= engineeringService.selectInitiate(1);
+        log.info("寮�濮嬩笂鐗囩殑宸ョ▼锛歿}", Arrays.asList(engineering));
+        UpPattenUsage upPattenUsage = workstationService.selectPriority(engineering);
+        log.info("涓婄墖椤哄簭锛歿}", Arrays.asList(upPattenUsage));
+        UpWorkstation glass2=workstationService.selectWorkstation(upPattenUsage);
+        log.info("绗﹀悎鐨勫伐浣嶇幓鐠儃}",glass2);
+        workstationService.reduceWorkstationNumber(glass2.getWorkstationId());
+        //鍑忓皯鏁伴噺
+        upPattenUsageService.updateUpPattenUsageState(upPattenUsage,1);
+        //鏇存柊鐘舵��
     }
+
     @Test
     public  void  textglassinfo(){
         List<GlassInfo> glass= glassInfoService.selectGlassInfo("P24032204");
         log.info("glassinfo锛歿}", Arrays.asList(glass));
+        glassInfoService.saveGlassInfo(glass);
     }
+    @Test
+    public  void  textengineering(){
+        List<Engineering> glass= engineeringService.selectEngineering("P24032204");
+        engineeringService.saveEngineering(glass);
+        log.info("glassinfo锛歿}", Arrays.asList(glass));
+    }
+    @Test
+    public  void  textengineering2(){
+        //鏇存柊宸ョ▼琛ㄧ姸鎬佷负宸查鍙�
+        optimizeProjectService.changeTask("P24050801",200);
+    }
+    @Test
+    public  void  textengineering3(){
+        //鍒ゆ柇鏄惁宸蹭繚瀛樿繃宸ョ▼鍙峰埌涓婄墖琛�
+        UpPattenUsage upPattenUsage=upPattenUsageService.selectOverTask();
+        log.info("涓婄墖琛ㄤ换鍔′腑鐨勬暟鎹畕}",upPattenUsage);
+    }
+
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/AppRunnerConfig.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/AppRunnerConfig.java
new file mode 100644
index 0000000..ddac7f5
--- /dev/null
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/AppRunnerConfig.java
@@ -0,0 +1,26 @@
+package com.mes;
+
+import com.mes.common.S7object;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author SNG-012
+ */
+@Slf4j
+@Component
+@Order(1)
+
+public class AppRunnerConfig implements ApplicationRunner {
+
+
+    @Override
+    public void run(ApplicationArguments args) throws Exception {
+        log.info("鍚姩瀹屾垚");
+        S7object.getinstance().start();
+
+    }
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/PLCAutoMes.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/PLCAutoMes.java
deleted file mode 100644
index 6fd4740..0000000
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/PLCAutoMes.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package com.mes.common;
-
-import com.mes.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 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);
-
-            List<String> addresses = new ArrayList<>();
-            addresses.add("FeedID");
-            addresses.add("AddStart");
-
-            List<String> addresses2 = new ArrayList<>();
-            addresses2.add("FeedID");
-            addresses2.add("FeedCarStatus");
-
-            //   System.out.println(PlcReadObject.getPlcParameterValues(addresses2));
-
-        }
-    }
-}
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/Plcdownglass.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/Plcdownglass.java
deleted file mode 100644
index 48861a2..0000000
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/Plcdownglass.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package com.mes.common;
-
-import cn.hutool.json.JSONObject;
-
-import com.mes.downstorage.service.DownStorageCageService;
-import com.mes.downworkstation.service.DownWorkstationService;
-
-
-import com.mes.tools.WebSocketServer;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-
-@Component
-@Slf4j
-public class Plcdownglass {
-
-    public static final String RESULT_IN = "1";
-    public static final String RESULT_OUT = "2";
-    public static final String RESULT_IN_OUT = "3";
-
-    @Autowired
-    private DownStorageCageService downStorageCageService;
-    @Autowired
-    private DownWorkstationService downWorkstationService;
-
-
-    @Scheduled(fixedDelay = 300)
-    public void PlcdownglassTask() throws InterruptedException {
-        JSONObject jsonObject = new JSONObject();
-        try {
-            Thread.sleep(300);
-
-
-            //                String result = S7control.getinstance().ReadWord("DB14.0", 1).get(0) + "";
-//                String number = S7control.getinstance().ReadWord("DB14.2", 1).get(0) + "";
-            String result = "2";
-            String number = "1";
-            // 杩涚墖璇锋眰
-            if (RESULT_IN.equals(result)) {
-                downStorageCageService.processInto(number);
-            }
-            // 鍑虹墖璇锋眰
-            else if (RESULT_OUT.equals(result)) {
-                downStorageCageService.processOut();
-            }
-            // 杩涘嚭鐗囪姹�
-            else if (RESULT_IN_OUT.equals(result)) {
-                // 鍏堝嚭鍚庤繘
-                if (!downStorageCageService.processOut()) {
-                    downStorageCageService.processInto(number);
-                }
-            }
-
-            //涓嬬墖鏇存柊
-            downWorkstationService.insertdownglassinfo();
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/Plchome.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/Plchome.java
deleted file mode 100644
index 4969337..0000000
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/Plchome.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package com.mes.common;
-
-import cn.hutool.json.JSONObject;
-
-import com.mes.downworkstation.service.DownWorkstationService;
-import com.mes.tools.WebSocketServer;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.function.Supplier;
-
-@Component
-public class Plchome extends Thread {
-    private int i = 1;
-    private static final Logger log = LogManager.getLogger(Plchome.class);
-    @Autowired
-    private  DownWorkstationService downWorkstationService;
-
-   // private final Supplier<DownGlassLogic> plcServiceSupplier;
-
-//    public Plchome() {
-//        this.plcServiceSupplier = () -> WebSocketServer.applicationContext.getBean(DownGlassLogic.class);
-//    }
-
-
-    @Override
-    public void run() {
-        while (!Thread.currentThread().isInterrupted()) {
-            try {
-                i++;
-                Thread.sleep(1000);
-                JSONObject jsonObject = new JSONObject();
-                System.out.println(77);
-                downWorkstationService = WebSocketServer.applicationContext.getBean(DownWorkstationService.class);
-                List<Map<String, Object>>  yy= downWorkstationService.getTotalGlassDimensionsByWorkstation();
-                jsonObject.append("data", yy);
-                ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("unloadglass");
-                if (sendwServer != null) {
-                    for (WebSocketServer webserver : sendwServer) {
-                        webserver.sendMessage(jsonObject.toString());
-                        log.info("鍑嗗鍚� WebSocket 鏈嶅姟鍣ㄥ彂閫佹秷鎭�: {}", jsonObject.toString());
-                    }
-                }
-
-
-            } catch (InterruptedException e) {
-                Thread.currentThread().interrupt();
-                e.printStackTrace();
-            }
-
-
-
-        }
-    }
-}
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/S7control.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/S7control.java
deleted file mode 100644
index 429a6e0..0000000
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/S7control.java
+++ /dev/null
@@ -1,458 +0,0 @@
-package com.mes.common;
-
-import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
-import com.github.xingshuangs.iot.protocol.s7.service.MultiAddressWrite;
-import com.github.xingshuangs.iot.protocol.s7.service.S7PLC;
-import com.google.common.primitives.Bytes;
-
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.List;
-
-public class S7control {
-
-    S7PLC s7PLC; // PLC閫氳绫诲疄渚�
-    private EPlcType plcType = EPlcType.S1500; // 瑗块棬瀛怭LC绫诲瀷
-    private String ip = "192.168.10.1"; // plc ip鍦板潃
-    private int port = 102; // plc 绔彛鍙�
-
-    private static volatile S7control instance = null;
-
-    private S7control() {
-        if (s7PLC == null)
-            s7PLC = new S7PLC(plcType, ip, port, 0, 0);
-    }
-
-    // 鍗曚緥妯″紡 鑾峰彇绫荤殑鍞竴瀹炰緥
-    public static S7control getinstance() {
-        if (instance == null) {
-            synchronized (S7control.class) {
-                if (instance == null) {
-                    instance = new S7control();
-                }
-            }
-        }
-        return instance;
-    }
-
-    /**
-     * 鍏抽棴瑗块棬瀛恠7閫氳杩炴帴
-     */
-    public void CloseS7client() {
-        if (s7PLC == null)
-            s7PLC.close();
-        s7PLC.checkConnected();
-    }
-
-    /**
-     * s7閫氳杩炴帴鐘舵��
-     */
-    public boolean CheckConnected() {
-        return s7PLC.checkConnected();
-    }
-
-    /**
-     * 鎸夋寚瀹氱殑鍦板潃 鍐欏叆涓�涓獁ord
-     *
-     * @param address 鍦板潃
-     * @param data    word鐨勫��
-     */
-    public void WriteWord(String address, short data) {
-        if (s7PLC == null) {
-            return;
-        }
-        s7PLC.writeInt16(address, data);
-    }
-
-    /**
-     * 浠庢煇鍦板潃杩炵画 鍐欏叆澶氫釜word
-     *
-     * @param address 鍦板潃
-     * @param datas   word鐨勫��
-     */
-    public void WriteWord(String address, List<Short> datas) {
-        if (s7PLC == null)
-            return;
-        // s7PLC.write(address, data);
-        List<String> addresslist = GetAddressList(address, datas.size(), 16);
-        MultiAddressWrite addressWrite = new MultiAddressWrite();
-        for (int i = 0; i < datas.size(); i++) {
-            addressWrite.addInt16(addresslist.get(i), datas.get(i));
-        }
-        s7PLC.writeMultiData(addressWrite);
-    }
-
-    /**
-     * 鎸夋寚瀹氱殑鍦板潃 鍐欏叆澶氫釜word
-     *
-     * @param address 鍦板潃
-     * @param datas   word鐨勫��
-     */
-
-
-    /**
-     * 鎸夋寚瀹氱殑鍦板潃 鍐欏叆涓�涓狟it
-     *
-     * @param address 鍦板潃
-     * @param data    Bit鐨勫��
-     */
-    public void WriteBit(String address, Boolean data) {
-        if (s7PLC == null)
-            return;
-        s7PLC.writeBoolean(address, data);
-    }
-
-    /**
-     * 鎸夋寚瀹氱殑鍦板潃 鍐欏叆澶氫釜bit
-     *
-     * @param address 鍦板潃
-     * @param datas   bit鐨勫��
-     */
-    public void WriteBit(List<String> address, List<Boolean> datas) {
-        if (s7PLC == null)
-            return;
-        // s7PLC.write(address, data);
-
-        MultiAddressWrite addressWrite = new MultiAddressWrite();
-        for (int i = 0; i < address.size(); i++) {
-            addressWrite.addBoolean(address.get(i), datas.get(i));
-        }
-        s7PLC.writeMultiData(addressWrite);
-    }
-
-    /**
-     * 浠庢煇鍦板潃杩炵画 鍐欏叆澶氫釜bit
-     *
-     * @param address 鍦板潃
-     * @param datas   word鐨勫��
-     */
-    public void WriteBit(String address, List<Boolean> datas) {
-        if (s7PLC == null)
-            return;
-        // s7PLC.write(address, data);
-        List<String> addresslist = GetAddressList(address, datas.size(), 1);
-        MultiAddressWrite addressWrite = new MultiAddressWrite();
-        for (int i = 0; i < datas.size(); i++) {
-            addressWrite.addBoolean(addresslist.get(i), datas.get(i));
-        }
-        s7PLC.writeMultiData(addressWrite);
-    }
-
-    /**
-     * 鎸夋寚瀹氱殑鍦板潃 鍐欏叆澶氫釜byte
-     *
-     * @param address 鍦板潃
-     * @param datas   byte鐨勫��
-     */
-    public void WriteByte(String address, byte[] datas) {
-        if (s7PLC == null)
-            return;
-        // s7PLC.write(address, data); 
-        s7PLC.writeByte(address, datas);
-    }
-
-    /**
-     * 鎸夋寚瀹氱殑鍦板潃 璇诲彇word缁撴灉闆�
-     *
-     * @param address 鍦板潃
-     * @return 缁撴灉
-     */
-    public List<Short> ReadWord(List<String> address) {
-        if (s7PLC == null)
-            return null;
-
-        try {
-            return s7PLC.readInt16(address);
-        } catch (Exception e) {
-            System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
-            return null;
-        }
-    }
-
-
-    private int getIndexFromAddress(String address) {
-
-        // 鍙互瑙f瀽鍑哄湴鍧�涓殑鏁板瓧閮ㄥ垎锛屽苟杞崲涓烘暣鏁�
-        return 0;
-    }
-
-    private String getAddressFromIndex(int index) {
-
-        // 鏁存暟杞崲涓哄湴鍧�鏍煎紡鐨勫瓧绗︿覆
-        return "";
-    }
-
-    /**
-     * 鎸夋寚瀹氱殑鍦板潃 璇诲彇word缁撴灉闆�
-     *
-     * @param address 鍦板潃
-     * @param count   杩炵画璇诲灏戜釜word
-     * @return 缁撴灉
-     */
-    public List<Short> ReadWord(String address, int count) {
-        if (s7PLC == null)
-            return null;
-
-        List<String> addresslist = GetAddressList(address, count, 16);
-        try {
-            return s7PLC.readInt16(addresslist);
-        } catch (Exception e) {
-            System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
-
-            return null;
-        }
-    }
-
-    /**
-     * 鎸夋寚瀹氱殑鍦板潃 璇诲彇byte缁撴灉闆�
-     *
-     * @param address 鍦板潃
-     * @param count   杩炵画璇诲灏戜釜byte
-     * @return 缁撴灉
-     */
-    public byte[] ReadByte(String address, int count) {
-        if (s7PLC == null)
-            return null;
-        // List<String> addresslist = GetAddressList(address, count, 16);
-
-        try {
-            return s7PLC.readByte(address, count);
-        } catch (Exception e) {
-            // 澶勭悊寮傚父
-            System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
-            return null;
-        }
-
-    }
-
-    /**
-     * 鎸夋寚瀹氱殑鍦板潃 鎸塨it浣� 0 flase 1 true 璇诲彇缁撴灉
-     *
-     * @param addresslist 鍦板潃闆�
-     * @return Boolean缁撴灉
-     */
-    public List<Boolean> ReadBits(List<String> addresslist) {
-        if (s7PLC == null)
-            return null;
-        return s7PLC.readBoolean(addresslist);
-    }
-
-    //璇诲彇涓嶈繛缁湴鍧�bit
-    public List<Boolean> readBits(List<String> addressList) {
-        if (s7PLC == null || addressList.isEmpty()) {
-            return null;
-        }
-
-        List<Boolean> values = new ArrayList<>();
-        for (String address : addressList) {
-            try {
-                boolean value = s7PLC.readBoolean(address);
-                values.add(value);
-            } catch (Exception e) {
-                // 澶勭悊寮傚父
-                System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
-            }
-        }
-
-        return values;
-    }
-
-
-    //璇诲彇String
-    public List<String> readStrings(List<String> addressList) {
-        if (s7PLC == null) {
-            return null;
-        }
-        List<String> result = new ArrayList<>();
-        for (String address : addressList) {
-            try {
-                byte[] bytes = s7PLC.readByte(address, 14);
-                if (bytes != null) {
-                    String str = new String(bytes, StandardCharsets.UTF_8);
-                    result.add(str);
-                }
-            } catch (Exception e) {
-                System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
-                result.add(null);
-            }
-        }
-
-        return result;
-    }
-
-
-    public List<String> readStringsandword(List<String> addressList) {
-        if (s7PLC == null) {
-            return null;
-        }
-        List<String> result = new ArrayList<>();
-        for (String address : addressList) {
-            try {
-                if (address.contains("-")) {
-                    address = address.substring(0, address.indexOf("-"));
-
-                    byte[] bytes = s7PLC.readByte(address, 14);
-                    if (bytes != null) {
-                        String str = new String(bytes, StandardCharsets.UTF_8);
-                        result.add(str);
-                    }
-
-                } else {
-                    Short value = s7PLC.readInt16(address);
-                    result.add(value.toString());
-
-                }
-            } catch (Exception e) {
-                System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
-                result.add(null);
-            }
-        }
-
-        return result;
-    }
-
-
-    //涓嶈繛缁湴鍧�鍐欏叆Word
-    public void WriteWord(List<String> address, List<Short> datas) {
-        if (s7PLC == null)
-            return;
-
-        for (int i = 0; i < address.size(); i++) {
-            String addr = address.get(i);
-            short data = datas.get(i);
-
-            if (addr.contains("-")) {
-                outmesid(String.valueOf(data), addr); // 鍗曠嫭澶勭悊甯︾牬鎶樺彿鐨勫湴鍧�
-            } else {
-                s7PLC.writeInt16(addr, data); // 灏嗘暟鎹啓鍏ュ崟涓湴鍧�
-            }
-        }
-    }
-
-
-    //瀛楃涓插啓鍏�
-    public void outmesid(String data, String addr) {
-//        System.out.println("outmesid: " + data);
-        List<Byte> glassidlist = new ArrayList<>();
-        String[] parts = addr.split("-");
-        if (parts.length == 2) {
-            addr = parts[0]; // 鍙繚鐣� "-" 鍓嶉潰鐨勯儴鍒�
-        }
-        for (char iditem : data.toCharArray()) {
-            glassidlist.add(Byte.valueOf(String.valueOf(iditem)));
-        }
-        byte[] bytes = Bytes.toArray(glassidlist);
-        S7control.getinstance().WriteByte(addr, bytes);
-    }
-
-    //璇诲彇涓嶈繛缁瓀ord
-    public List<Short> readWords(List<String> addresses) {
-        if (s7PLC == null) {
-            return null;
-        }
-
-        List<Short> data = new ArrayList<>();
-
-        for (String address : addresses) {
-            try {
-
-                // 鍗曚釜鍦板潃
-                Short value = s7PLC.readInt16(address);
-                data.add(value);
-            } catch (Exception e) {
-                System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
-
-            }
-
-        }
-        return data;
-    }
-
-    //璇诲彇鏃堕棿
-    public Long readtime(String address) {
-        if (s7PLC == null)
-            return null;
-        try {
-            return s7PLC.readTime(address);
-        } catch (Exception e) {
-            System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
-            return null;
-        }
-    }
-
-
-    public void writetime(String address, long datas) {
-        if (s7PLC == null)
-            return;
-
-
-        s7PLC.writeTime(address, datas); // 灏嗘暟鎹啓鍏ュ崟涓湴鍧�
-    }
-
-
-    private int extractAddressNumber(String address) {
-        String numberStr = address.replaceAll("\\D+", ""); // 浣跨敤姝e垯琛ㄨ揪寮忔彁鍙栨暟瀛楅儴鍒�
-        return Integer.parseInt(numberStr);
-    }
-
-
-    /**
-     * 浠庢寚瀹氱殑鍦板潃寮�濮� 杩炵画鎸塨it浣嶈鍙�
-     *
-     * @param address 鍦板潃
-     * @param count   闀垮害
-     * @return Boolean缁撴灉
-     */
-    public List<Boolean> ReadBits(String address, int count) {
-        if (s7PLC == null)
-            return null;
-        List<String> addresslist = GetAddressList(address, count, 1);
-        try {
-            return s7PLC.readBoolean(addresslist);
-        } catch (Exception e) {
-            System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
-            return null;
-        }
-
-    }
-
-    ;
-
-
-    public void writeString(String addr, String data) {
-        s7PLC.writeString(addr, data);
-    }
-
-
-    private List<String> GetAddressList(String address, int count, int addedbit) {
-        List<String> addresslist = new ArrayList<String>();
-
-        String[] stringdatas = address.trim().split("\\.");
-        if (stringdatas.length < 2 || !address.startsWith("DB"))
-            return null;
-        int dbwindex = 0;
-        int bitindex = 0;
-        if (stringdatas.length == 2) {
-            dbwindex = Integer.parseInt(stringdatas[1]);
-        } else if (stringdatas.length == 3) {
-            dbwindex = Integer.parseInt(stringdatas[1]);
-            bitindex = Integer.parseInt(stringdatas[2]);
-        } else
-            return null;
-
-        addresslist.add(address);
-        for (int i = 0; i < count - 1; i++) {
-
-            int bitcurrent = bitindex + addedbit;
-            if (bitcurrent > 7) {
-                dbwindex += bitcurrent / 8;
-                bitindex = 0;
-            } else
-                bitindex = bitcurrent;
-
-            String endstr = stringdatas.length == 3 ? "." + bitindex : "";
-            addresslist.add(stringdatas[0] + "." + dbwindex + endstr);
-        }
-        return addresslist;
-    }
-}
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/S7object.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/S7object.java
new file mode 100644
index 0000000..7ec3d2e
--- /dev/null
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/S7object.java
@@ -0,0 +1,61 @@
+package com.mes.common;
+
+import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
+import com.mes.device.PlcParameterObject;
+import com.mes.tools.InitUtil;
+import com.mes.tools.S7control;
+
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/4/9 15:13
+ * @Description:
+ */
+public class S7object extends Thread {
+    public S7control plccontrol; // PLC閫氳绫诲疄渚�
+    private EPlcType plcType = EPlcType.S1200; // 瑗块棬瀛怭LC绫诲瀷
+    private String ip = "192.168.10.1"; // plc ip鍦板潃
+    private int port = 102; // plc 绔彛鍙�
+
+
+    public PlcParameterObject PlcMesObject;
+    private static volatile S7object instance = null;
+
+    private S7object() {
+        if (plccontrol == null) {
+            plccontrol = new S7control(plcType, ip, port, 0, 0);
+
+            String PlcCacheGlass=S7object.class.getResource("/JsonFile/PlcdownGlass.json").getPath();
+            //log.info(PLCAutoMes.class.getResource("").getPath());
+            PlcMesObject = InitUtil.initword(PlcCacheGlass);
+        }
+    }
+
+    // 鍗曚緥妯″紡 鑾峰彇绫荤殑鍞竴瀹炰緥
+    public static S7object getinstance() {
+        if (instance == null) {
+            synchronized (S7object.class) {
+                if (instance == null) {
+                    instance = new S7object();
+                }
+            }
+        }
+        return instance;
+    }
+
+    @Override
+    public void run() {
+        while (this != null) {
+            try {
+                Thread.sleep(100);
+
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+
+            byte[] getplcvlues=   plccontrol.ReadByte(PlcMesObject.getPlcAddressBegin(),PlcMesObject.getPlcAddressLength());
+            PlcMesObject.setPlcParameterList(getplcvlues);
+
+        }
+    }
+}
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java
deleted file mode 100644
index c0bf80e..0000000
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.mes.config;
-
-import com.mes.common.Plcdownglass;
-import com.mes.common.Plchome;
-import com.mes.device.PLCAutoMes;
-import org.springframework.boot.ApplicationArguments;
-import org.springframework.boot.ApplicationRunner;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Component;
-
-@Component
-@Order(1)
-
-public class AppRunnerConfig implements ApplicationRunner {
-
-    @Override
-    public void run(ApplicationArguments args) throws Exception {
-        // TODO Auto-generated method stub
-        //
-        System.out.println("鍚姩瀹屾垚");
-
-        //new Plcdownglass().start();
-
-//       new PLCAutoMes().start();
-//
-// new Plchome().start();
-
-    }
-}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassInfo.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassInfo.java
index 40a5d0b..5543ab5 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassInfo.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassInfo.java
@@ -2,7 +2,9 @@
 
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.springframework.data.annotation.Id;
 import org.springframework.stereotype.Component;
+
 
 import java.io.Serializable;
 
@@ -24,6 +26,7 @@
     /**
      * 涓嬬墖鐜荤拑淇℃伅琛╥d
      */
+
     private Long id;
 
     /**
@@ -51,8 +54,15 @@
      */
     private Double thickness;
 
-
+    /**
+     * 鑶滅郴
+     */
     private String Filmsid;
 
+    /**
+     * 鐜荤拑id
+     */
+    private String glassId;
+
 
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassTask.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassTask.java
index 5903d00..13fbc8a 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassTask.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassTask.java
@@ -5,6 +5,7 @@
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * <p>
@@ -75,4 +76,9 @@
      * 鐜荤拑id
      */
     private String glassId;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private Date CreateTime;
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java
index 4521c5a..02674b0 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java
@@ -26,7 +26,7 @@
      *
      * @return
      */
-    void updateTaskStateToZero(long id);
+    void updateTaskState(String id);
 
     /**
      * 鍒犻櫎浠诲姟
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
index 66783be..3cd3349 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
@@ -14,6 +14,7 @@
 import com.mes.downworkstation.service.DownWorkstationService;
 import com.mes.downworkstation.service.DownWorkstationTaskService;
 import com.mes.tools.WebSocketServer;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -37,6 +38,9 @@
 
     @Override
     public void insertDownGlassInfo(DownGlassInfo downGlassInfo) {
+
+
+
         baseMapper.insert(downGlassInfo);
     }
 
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java
index 8feea50..df1f641 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java
@@ -11,6 +11,7 @@
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -28,21 +29,21 @@
     @Override
     public List<DownGlassTask> getUnloadingTaskState() {
         QueryWrapper<DownGlassTask> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("task_stauts", 1);
+        queryWrapper.eq("task_stauts", 0);
         return baseMapper.selectList(queryWrapper);
     }
 
     @Override
-    public void updateTaskStateToZero(long id) {
+    public void updateTaskState(String id) {
         UpdateWrapper<DownGlassTask> updateWrapper = new UpdateWrapper<>();
-        updateWrapper.set("task_stauts", 0).eq("id", id);
+        updateWrapper.set("task_stauts", 2).eq("id", id);
         baseMapper.update(new DownGlassTask(), updateWrapper);
     }
 
     @Override
     public void deleteTask(String id) {
         LambdaQueryWrapper<DownGlassTask> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(DownGlassTask::getFlowCardId, id);
+        queryWrapper.eq(DownGlassTask::getGlassId, id);
 
         baseMapper.delete(queryWrapper);
     }
@@ -71,8 +72,8 @@
         // 濡傛灉涓婚敭鍊间笉瀛樺湪锛屽垯杩涜鎻掑叆鎿嶄綔
         DownGlassTask newDownGlassTask = new DownGlassTask();
         BeanUtils.copyProperties(downGlassTask, newDownGlassTask);
-        newDownGlassTask.setTaskStauts(0); // 榛樿浠诲姟鐘舵�佷负0
-
+        newDownGlassTask.setTaskStauts(1); // 榛樿浠诲姟鐘舵�佷负1
+        newDownGlassTask.setCreateTime(new Date());
         int rows = baseMapper.insert(newDownGlassTask);
         return rows > 0 ? rows : null;
     }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/controller/DownStorageCageDetailsController.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/controller/DownStorageCageDetailsController.java
index f89f3ee..5737bd6 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/controller/DownStorageCageDetailsController.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/controller/DownStorageCageDetailsController.java
@@ -1,5 +1,6 @@
 package com.mes.downstorage.controller;
 
+import com.mes.downstorage.entity.DownStorageCage;
 import com.mes.downstorage.entity.DownStorageCageDetails;
 import com.mes.downstorage.service.DownStorageCageDetailsService;
 import com.mes.downstorage.service.DownStorageCageService;
@@ -33,32 +34,35 @@
     @ApiOperation("鏌ヨ缂撳瓨鐞嗙墖绗煎唴璇︽儏")
     @GetMapping("/selectStorageCage")
     @ResponseBody
-    public Result selectEdgStorageCage () {
-        List<Map> list=downStorageCageDetailsService.getCacheInfo();
+    public Result selectDownStorageCage () {
+        List<Map<String, Object>> list=downStorageCageService.selectDownStorageCages();
         return Result.build(200,"鎴愬姛",list);
     }
 
 
+//
+//    @ApiOperation("娣诲姞缂撳瓨鐞嗙墖绗间俊鎭�   鍔熻兘锛氱鍐呯粦瀹氱幓鐠�  鍙傛暟(DownStorageCageDetails downStorageCageDetails)")
+//    @PostMapping("/insertEdgStorageCage")
+//    @ResponseBody
+//    public Result insertEdgStorageCage(@RequestBody DownStorageCageDetails downStorageCageDetails) {
+//        boolean isSucess=downStorageCageService.updatedownStorageCageDetails(downStorageCageDetails);
+//        return Result.build(200,"娣诲姞鎴愬姛",1);
+//    }
 
-    @ApiOperation("娣诲姞缂撳瓨鐞嗙墖绗间俊鎭�   鍔熻兘锛氱鍐呯粦瀹氱幓鐠�  鍙傛暟(DownStorageCageDetails downStorageCageDetails)")
-    @PostMapping("/insertEdgStorageCage")
-    @ResponseBody
-    public Result insertEdgStorageCage(@RequestBody DownStorageCageDetails downStorageCageDetails) {
-        boolean isSucess=downStorageCageDetailsService.updatedownStorageCageDetails(downStorageCageDetails);
-        return Result.build(200,"娣诲姞鎴愬姛",1);
-    }
+
+
     @ApiOperation("淇敼缂撳瓨鐞嗙墖绗间俊鎭�   鍔熻兘锛氬绗煎唴鏍呮牸杩涜銆愬惎鐢�/绂佺敤銆�/ 銆愭洿鎹€�戠鍐呮爡鏍肩幓鐠冧俊鎭�")
-    @PostMapping("/updateEdgStorageCage")
+    @PostMapping("/updateDownStorageCage")
     @ResponseBody
-    public Result updateEdgStorageCage(@RequestBody DownStorageCageDetails downStorageCageDetails) {
-        boolean isSucess=downStorageCageDetailsService.updatedownStorageCageDetails(downStorageCageDetails);
+    public Result updateDownStorageCage(@RequestBody DownStorageCage downStorageCage) {
+        boolean isSucess=downStorageCageService.updateDownStorageCage(downStorageCage);
         return Result.build(200,"鏇存崲鎴愬姛",1);
     }
     @ApiOperation("鍒犻櫎缂撳瓨鐞嗙墖绗间俊鎭�   鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑杩涜銆愭竻闄ゃ��")
-    @PostMapping("/deleteEdgStorageCage")
+    @PostMapping("/deleteDownStorageCage")
     @ResponseBody
-    public Result deleteEdgStorageCage(@RequestBody DownStorageCageDetails downStorageCageDetails) {
-        boolean isSucess=downStorageCageDetailsService.updatedownStorageCageDetails(downStorageCageDetails);
+    public Result deleteDownStorageCage(@RequestBody DownStorageCageDetails downStorageCageDetails,int downStorageCageId) {
+        boolean isSucess=downStorageCageService.updateDownStorageCageDetails(downStorageCageId,downStorageCageDetails);
         return Result.build(200,"鍒犻櫎鎴愬姛",1);
     }
 
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java
index 78b15e4..173056a 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java
@@ -1,12 +1,12 @@
 package com.mes.downstorage.service;
 
+import com.github.yulichang.base.MPJBaseService;
 import com.mes.downstorage.entity.DownStorageCageDetails;
-import com.mes.glassinfo.entity.GlassInfo;
 
 import java.util.List;
 import java.util.Map;
 
-public interface DownStorageCageDetailsService {
+public interface DownStorageCageDetailsService extends MPJBaseService<DownStorageCageDetails> {
     /**
      * @return //娣诲姞鐞嗙墖绗煎唴淇℃伅
      */
@@ -18,19 +18,19 @@
      */
     boolean updatedownStorageCageDetails(DownStorageCageDetails details);
 
-    List<DownStorageCageDetails> getCacheLeisure();
+   // List<DownStorageCageDetails> getCacheLeisure();
 
     /**
      * @param start
      * @param end
      * @return 鏍规嵁浼犲叆鐨勫伐浣嶆煡璇㈢鍚堟寜鐓ч『搴忓拰澶у皬鍑虹墖鐨勫皬鐗�
      */
-    List<DownStorageCageDetails> getCacheOut(int start, int end);
+  //  List<DownStorageCageDetails> getCacheOut(int start, int end);
 
     /**
      * @return 鏌ヨ绗煎瓙鍐呬俊鎭�
      */
-    List<Map> getCacheInfo();
+    List<Map<String, Object>> getCacheInfo();
 
 
     /**
@@ -38,7 +38,7 @@
      * @param width
      * @return 鏌ヨ鍙繘姝ょ墖鐜荤拑鐨勬爡鏍煎彿  鎵惧埌绌烘牸
      */
-    List<DownStorageCageDetails> getIsExistIntoCacheByflowcardid(String flowcardid, double width);
+   // List<DownStorageCageDetails> getIsExistIntoCacheByflowcardid(String flowcardid, double width);
 
     /**
      * @param start
@@ -48,8 +48,8 @@
     List<DownStorageCageDetails> CacheOut(int start, int end);
 
     /**
-     * @return 鏌ヨ绌烘牸瀛�
+     * @return 鍑虹墖
      */
-    List<DownStorageCageDetails> selectCacheEmpty2();
 
+    List<DownStorageCageDetails> CacheOut1(int start, int end);
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java
index 81a88a8..32d55a3 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java
@@ -2,8 +2,10 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.github.yulichang.base.MPJBaseService;
+import com.mes.downglassinfo.entity.DownGlassTask;
 import com.mes.downstorage.entity.DownStorageCage;
 import com.mes.downstorage.entity.DownStorageCageDetails;
+import com.mes.glassinfo.entity.GlassInfo;
 
 import java.util.List;
 import java.util.Map;
@@ -18,25 +20,36 @@
  */
 public interface DownStorageCageService extends MPJBaseService<DownStorageCage> {
 
-
+    DownGlassTask createDownGlassTask(GlassInfo glassInfo, String startCell, String endCell, String taskType);
+    DownGlassTask createDownGlassTask(DownStorageCageDetails glassInfo, String startCell, String endCell, String taskType);
     //    List<Map<String, Object>> selectCacheLeisure();
 
 
-    /**
-     * @param Number
-     * @return 杩涚墖
-     */
-    boolean processInto(String Number);
+
+
 
     /**
-
-     * @return 绌烘牸
+     * @return 鎵惧埌绌烘牸瀛�
      */
-
-    /**
-     * @return 鍑虹墖
-     */
-    boolean processOut();
     List<DownStorageCageDetails> selectCacheEmpty() ;
 
+    /**
+     * @param downStorageCage
+     * @return 淇敼鐞嗙墖绗间俊鎭� 鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑 銆愬惎鐢�/绂佺敤銆�
+     */
+    boolean updateDownStorageCage(DownStorageCage downStorageCage);
+
+    /**
+     /**
+     *淇敼鐞嗙墖绗间俊鎭� 鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑 銆愭坊鍔�/鍒犻櫎/鏇存崲銆�
+     */
+    boolean updateDownStorageCageDetails(int downStorageCageId,DownStorageCageDetails downStorageCageDetails);
+
+    /**
+     * @return 鏌ヨ绗煎瓙淇℃伅
+     */
+    List<Map<String, Object>> selectDownStorageCages();
+
 }
+
+
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java
index b5c01ee..f94df84 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java
@@ -1,6 +1,8 @@
 package com.mes.downstorage.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.yulichang.query.MPJQueryWrapper;
 
 
@@ -13,22 +15,33 @@
 
 import com.mes.downstorage.mapper.DownStorageCageMapper;
 import com.mes.downstorage.service.DownStorageCageDetailsService;
+import com.mes.downworkstation.entity.DownWorkstation;
+import com.mes.downworkstation.mapper.DownWorkstationMapper;
 import com.mes.glassinfo.entity.GlassInfo;
+import com.mes.glassinfo.mapper.GlassInfoMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
+
 @Slf4j
 @Service
 public class DownStorageCageDetailsServiceImpl extends ServiceImpl<DownStorageCageDetailsMapper, DownStorageCageDetails> implements DownStorageCageDetailsService {
 
-    @Autowired
+    @Autowired(required = false)
     private DownStorageCageMapper downStorageCageMapper;
     @Autowired
     private DownStorageCageDetailsMapper downStorageCageDetailsMapper;
+    @Autowired
+    private GlassInfoMapper glassInfoMapper;
+    @Autowired
+    private DownWorkstationMapper downWorkstationMapper;
+
     @Override
     public void addDownStorageCageDetails(DownStorageCageDetails details) {
         this.save(details);
@@ -37,7 +50,7 @@
 
     @Override
     //淇敼鐞嗙墖绗煎唴淇℃伅 鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑 銆愭坊鍔�/鍒犻櫎/鏇存崲銆�
-    public boolean updatedownStorageCageDetails(DownStorageCageDetails details){
+    public boolean updatedownStorageCageDetails(DownStorageCageDetails details) {
         baseMapper.updateById(details);
         return true;
     }
@@ -63,104 +76,163 @@
     }
 
 
+//    @Override
+//    public List<DownStorageCageDetails> getCacheOut(int start, int end) {
+//        log.info("鏍规嵁浼犲叆鐨勫伐浣嶆煡璇㈢鍚堟寜鐓ч『搴忓拰澶у皬鍑虹墖鐨勫皬鐗�");
+//        return  downStorageCageMapper.selectJoinList(
+//                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>()
+//                        .select("escd.*")
+//                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
+//                        .leftJoin("down_workstation dw on escd.flow_card_id = dw.flow_card_id")
+//                        .leftJoin("glass_info gi on dw.flow_card_id = gi.flowcard_id  and gi.flowcard_id=escd.flow_card_id ")
+//                        .isNotNull("escd.slot")
+//                        .between("dw.workstation_id", start, end)
+//                        .orderByDesc("escd.width")
+//                        .orderByDesc("escd.height")
+//        );
+//    }
 
 
-
-
-
-
-
-
-
-
-
-    @Override
-    public List<DownStorageCageDetails> getCacheOut(int start, int end) {
-        log.info("鏍规嵁浼犲叆鐨勫伐浣嶆煡璇㈢鍚堟寜鐓ч『搴忓拰澶у皬鍑虹墖鐨勫皬鐗�");
-        return  downStorageCageMapper.selectJoinList(
-                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>()
-                        .select("escd.*")
-                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
-                        .leftJoin("down_workstation dw on escd.flow_card_id = dw.flow_card_id")
-                        .leftJoin("glass_info gi on dw.flow_card_id = gi.flowcard_id  and gi.flowcard_id=escd.flow_card_id ")
-                        .isNotNull("escd.slot")
-                        .between("dw.workstation_id", start, end)
-                        .orderByDesc("escd.width")
-                        .orderByDesc("escd.height")
-        );
-    }
+//    @Override
+//    public List<DownStorageCageDetails> selectCacheEmpty2(){
+//        return  downStorageCageMapper.selectJoinList(
+//                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>()
+//                        .select("escd.glass_id","escd.flow_card_id","escd.width","escd.height")
+//                        .leftJoin("down_storage_cage_details escd on t.device_id=escd.device_id and t.slot=escd.slot")
+//                        .isNull("escd.slot")
+//        );
+//    }
 
 
     @Override
-    public List<DownStorageCageDetails> selectCacheEmpty2(){
-        return  downStorageCageMapper.selectJoinList(
-                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>()
-                        .select("escd.glass_id","escd.flow_card_id","escd.width","escd.height")
-                        .leftJoin("down_storage_cage_details escd on t.device_id=escd.device_id and t.slot=escd.slot")
-                        .isNull("escd.slot")
+    public List<Map<String, Object>> getCacheInfo() {
+        log.info("鏌ヨ绗煎瓙鍐呬俊鎭�");
+        return downStorageCageDetailsMapper.selectJoinMaps(JoinWrappers.lambda(DownStorageCageDetails.class) // 浣跨敤 JoinWrappers.lambda 鍒涘缓鑱斿悎鏌ヨ
+                .selectAll(DownStorageCageDetails.class) // 閫夋嫨鎵�鏈夊瓧娈�
+                .eq(DownStorageCage::getSlot, DownStorageCageDetails::getSlot) // 璁剧疆鍏宠仈鏉′欢
+                .orderByAsc(DownStorageCage::getSlot) // 鎸� slot 瀛楁鍗囧簭鎺掑簭
         );
     }
+
+//
+//    @Override
+//    public List<Map> getCacheInfo() {
+//        log.info(" 鏌ヨ绗煎瓙鍐呬俊鎭�");
+//        return downStorageCageMapper.selectJoinList(
+//                Map.class, new MPJQueryWrapper<DownStorageCage>()
+//                        .select("escd.*")
+//                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
+//                        .orderByAsc("t.slot")
+//        );
+//
+//    }
+
+//    @Override
+//    public List<DownStorageCageDetails> getCacheLeisure() {
+//        log.info(" 鏌ヨ绗煎瓙鍐呯┖闂�");
+//        List<DownStorageCageDetails> list = downStorageCageMapper.selectJoinList(
+//                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>()
+//                        .select("escd.*")
+//                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
+//                        .isNull("escd.slot")
+//
+//                        .orderByAsc("escd.slot")
+//        );
+//        return list;
+//    }
+
+
+//    @Override
+//    public List<DownStorageCageDetails> getIsExistIntoCacheByflowcardid(String flowcardid, double width) {
+//        log.info("  鏌ヨ鍙繘姝ょ墖鐜荤拑鐨勬爡鏍煎彿  鎵惧埌绌烘牸");
+//
+//        return downStorageCageMapper.selectJoinList(
+//                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>()
+//                        .select("escd.*")
+//                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
+//                        .isNull("escd.slot")
+//                        .apply("t.remain_width - " + width + " > 0")
+//                        .orderByAsc("escd.sequence")
+//        );
+//
+//
+//
+//
+//    }
 
 
     @Override
-    public List<Map> getCacheInfo() {
-        log.info(" 鏌ヨ绗煎瓙鍐呬俊鎭�");
-        return downStorageCageMapper.selectJoinList(
-                Map.class, new MPJQueryWrapper<DownStorageCage>()
-                        .select("escd.*")
-                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
-                        .orderByAsc("t.slot")
-        );
-
-    }
+    public List<DownStorageCageDetails> CacheOut1(int start, int end) {
 
 
-
-    @Override
-    public List<DownStorageCageDetails> getCacheLeisure() {
-        log.info(" 鏌ヨ绗煎瓙鍐呯┖闂�");
-        List<DownStorageCageDetails> list = downStorageCageMapper.selectJoinList(
-                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>()
-                        .select("escd.*")
-                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
-                        .isNull("escd.slot")
-
-                        .orderByAsc("escd.slot")
-        );
-        return list;
-    }
+        List<DownStorageCageDetails> cageDetails = downStorageCageDetailsMapper.selectList(null);
+        // Step 5: 鍒ゆ柇 down_storage_cage_details 缁撴灉鏁伴噺鏄惁涓�9锛屽鏋滄槸锛屽垯鎵ц鍙﹀涓�涓煡璇�
+        if (cageDetails.size() == 9) {
+            log.info("1銆佺瀛愭弧浜嗙殑鏃跺�欙紝鎸夌収绗煎唴鐗堝浘id 鐗堝浘鐗囧簭鍑�");
+            List<DownWorkstation> workstationList = downWorkstationMapper.selectList(new QueryWrapper<DownWorkstation>().between("workstation_id", start, end));
 
 
-    @Override
-    public List<DownStorageCageDetails> getIsExistIntoCacheByflowcardid(String flowcardid, double width) {
-        log.info("  鏌ヨ鍙繘姝ょ墖鐜荤拑鐨勬爡鏍煎彿  鎵惧埌绌烘牸");
+            List<String> flowCardIds = new ArrayList<>();
+            for (DownWorkstation workstation : workstationList) {
+                flowCardIds.add(workstation.getFlowCardId());
+            }
 
-        return downStorageCageMapper.selectJoinList(
-                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>()
-                        .select("escd.*")
-                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
-                        .isNull("escd.slot")
-                        .apply("t.remain_width - " + width + " > 0")
-                        .orderByAsc("escd.sequence")
-        );
+            if (flowCardIds.isEmpty()) {
+                log.error("鏈壘鍒板搴旂殑 flow_card_id");
+                return Collections.emptyList(); // 杩斿洖绌哄垪琛ㄦ垨鑰呮姏鍑哄紓甯革紝瑙嗘儏鍐佃�屽畾
+            }
+            LambdaQueryWrapper<DownStorageCageDetails> anotherQueryWrapper = Wrappers.lambdaQuery();
+
+            anotherQueryWrapper.orderByAsc(DownStorageCageDetails::getTemperingLayoutId);
+            anotherQueryWrapper.orderByDesc(DownStorageCageDetails::getTemperingFeedSequence);
+            anotherQueryWrapper.in(DownStorageCageDetails::getFlowCardId, flowCardIds);
+            anotherQueryWrapper.last("LIMIT 1");
+            return downStorageCageDetailsMapper.selectList(anotherQueryWrapper);
+        } else {
+
+            // Step 1: 鏌ヨ DownWorkstation 琛ㄨ幏鍙栧搴� workstation_id 鐨� flow_card_id
+            List<DownWorkstation> workstationList = downWorkstationMapper.selectList(new QueryWrapper<DownWorkstation>().between("workstation_id", start, end));
 
 
+            List<String> flowCardIds = new ArrayList<>();
+            for (DownWorkstation workstation : workstationList) {
+                flowCardIds.add(workstation.getFlowCardId());
+            }
+
+            if (flowCardIds.isEmpty()) {
+                log.error("2銆佹湭鎵惧埌瀵瑰簲鐨� flow_card_id");
+                return Collections.emptyList(); // 杩斿洖绌哄垪琛ㄦ垨鑰呮姏鍑哄紓甯革紝瑙嗘儏鍐佃�屽畾
+            }
+            log.info("娴佺▼鍗�:{}", flowCardIds);
+            LambdaQueryWrapper<GlassInfo> queryWrapper2 = Wrappers.lambdaQuery();
+            queryWrapper2.select(GlassInfo::getFlowCardId,
+                    GlassInfo::getGlassId,
+                    GlassInfo::getTemperingLayoutId,
+                    GlassInfo::getTemperingFeedSequence)
+                    .notInSql(GlassInfo::getGlassId, "SELECT glass_id FROM down_glass_info")
+                    .orderByAsc(GlassInfo::getTemperingLayoutId)
+                    .orderByDesc(GlassInfo::getTemperingFeedSequence)
+                    .last("LIMIT 1");
+
+            // 鏌ヨ GlassInfo 琛�
+            List<GlassInfo> glassInfos = glassInfoMapper.selectList(queryWrapper2);
+            if (glassInfos.isEmpty()) {
+                log.error("鏈壘鍒板搴旂殑鐜荤拑淇℃伅");
+                return Collections.emptyList(); // 杩斿洖绌哄垪琛ㄦ垨鑰呮姏鍑哄紓甯革紝瑙嗘儏鍐佃�屽畾
+            }
+            // Step 3: 鏋勯�犳煡璇� down_storage_cage_details 琛ㄧ殑鏉′欢
+            List<String> glassIds = glassInfos.stream().map(GlassInfo::getGlassId).collect(Collectors.toList());
+            LambdaQueryWrapper<DownStorageCageDetails> cageDetailsQueryWrapper = Wrappers.lambdaQuery();
+            cageDetailsQueryWrapper.in(DownStorageCageDetails::getGlassId, glassIds);
+            cageDetailsQueryWrapper.in(DownStorageCageDetails::getFlowCardId, flowCardIds);
+
+            log.info("鎸夌収娴佺▼鍗$殑鐗堝浘id 鐗堝浘鐗囧簭鍑�");
+            // Step 4: 鏌ヨ down_storage_cage_details 琛ㄥ苟杩斿洖缁撴灉
+            return downStorageCageDetailsMapper.selectList(cageDetailsQueryWrapper);
+        }
 
 
     }
-
-
-
-
-
-
-
-
-
-
-
-
-
 
 
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java
index d1a6673..e580072 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java
@@ -1,19 +1,23 @@
 package com.mes.downstorage.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.yulichang.toolkit.JoinWrappers;
-import com.mes.common.PLCAutoMes;
-import com.mes.common.S7control;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+
 import com.mes.device.PlcParameterObject;
 import com.mes.downglassinfo.entity.DownGlassTask;
 import com.mes.downglassinfo.service.DownGlassTaskService;
 import com.mes.downstorage.entity.DownStorageCage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.mes.downstorage.entity.DownStorageCageDetails;
+import com.mes.downstorage.mapper.DownStorageCageDetailsMapper;
 import com.mes.downstorage.mapper.DownStorageCageMapper;
 import com.mes.downstorage.service.DownStorageCageDetailsService;
 import com.mes.downstorage.service.DownStorageCageService;
 import com.mes.glassinfo.entity.GlassInfo;
 import com.mes.glassinfo.service.GlassInfoService;
+import com.mes.pp.entity.OptimizeDetail;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,7 +28,7 @@
 
 /**
  * <p>
- *  鏈嶅姟瀹炵幇绫�
+ * 鏈嶅姟瀹炵幇绫�
  * </p>
  *
  * @author zhoush
@@ -33,7 +37,7 @@
 @Slf4j
 @Service
 public class DownStorageCageServiceImpl extends ServiceImpl<DownStorageCageMapper, DownStorageCage> implements DownStorageCageService {
-    @Autowired
+    @Autowired(required = false)
     private DownStorageCageMapper downStorageCageMapper;
 
     @Autowired
@@ -43,46 +47,26 @@
     private DownGlassTaskService downGlassTaskService;
     @Autowired
     private DownStorageCageDetailsService downStorageCageDetailsService;
+    @Autowired
+    private DownStorageCageDetailsMapper downStorageCageDetailsMapper;
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    public DownGlassTask createDownGlassTask(GlassInfo glassInfo, String startCell, String endCell,String taskType ) {
+    @Override
+    public DownGlassTask createDownGlassTask(GlassInfo glassInfo, String startCell, String endCell, String taskType) {
         DownGlassTask downGlassTask = new DownGlassTask();
 
-        BeanUtils.copyProperties(glassInfo,downGlassTask);
+        BeanUtils.copyProperties(glassInfo, downGlassTask);
 
         downGlassTask.setStartCell(startCell);
-       downGlassTask.setTaskType(taskType);
-      downGlassTask.setEndCell(endCell);
+        downGlassTask.setTaskType(taskType);
+        downGlassTask.setEndCell(endCell);
         return downGlassTask;
     }
 
-
-    public DownGlassTask createDownGlassTask(DownStorageCageDetails glassInfo, String startCell, String endCell,String taskType ) {
+    @Override
+    public DownGlassTask createDownGlassTask(DownStorageCageDetails glassInfo, String startCell, String endCell, String taskType) {
         DownGlassTask downGlassTask = new DownGlassTask();
 
-        BeanUtils.copyProperties(glassInfo,downGlassTask);
+        BeanUtils.copyProperties(glassInfo, downGlassTask);
         downGlassTask.setStartCell(startCell);
         downGlassTask.setTaskType(taskType);
         downGlassTask.setEndCell(endCell);
@@ -90,140 +74,9 @@
     }
 
 
-    @Override
-    public boolean processInto(String Number) {
-
-        //鎸塱d鏌ヨ鐜荤拑淇℃伅琛ㄩ噷鐨勭幓鐠�
-        GlassInfo GlassInfo = glassInfoService.selectGlassId(Number);
-     PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
-        //瀛樺湪姝ょ幓鐠冪紪鍙�
-        if (GlassInfo != null) {
-            //鍚屾壘鍒板悓娴佺▼鍗¢檮杩戠┖鏍�
-            List<DownStorageCageDetails> list = selectCacheEmpty();
 
 
-
-            //            list<Map> list=selectCacheEmpty();
-//            list<Map> = downStorageCageService.selectCacheEmpty();
-            if (list.size() > 0) {
-                //瀛樺湪绌烘牸
-                //1.鐢熸垚浠诲姟锛�  璧峰浣嶇疆0   缁撴潫浣嶇疆this.slot  浠诲姟绫诲瀷 1   锛堣繘鐗囦换鍔★級
-                //2.鍥炲 1杩涚墖
-                DownStorageCageDetails item = list.get(0);
-
-                //selectInfo.insertCacheTask(GlassInfo.getId() + "", "0", item.getSlot() + "", "1", GlassInfo.getWidth(), GlassInfo.getHeight(), GlassInfo.getFilmsid(), GlassInfo.getThickness(), GlassInfo.getFlowcardId());
-
-                DownGlassTask downGlassTask =   createDownGlassTask(GlassInfo,"0",item.getSlot()+"","1");
-
-                downGlassTaskService.insertCacheTask(downGlassTask);
-
-               //S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(), (short) 1);
-
-
-                //瀹屾垚鍚庢彃鍏ュ皬鐗囨暟鎹埌缂撳瓨琛�
-                return true;
-            }
-
-        } else {
-            // ID缂栧彿涓嶅瓨鍦�   涓嶅鐞�/鍥炲PLC  杩涜鎶ヨ鎻愮ず
-        }
-        //杩斿洖缁撴灉
-        return false;
-    }
-
-
-    /**
-     * 鐞嗙墖 鍑�
-     * @return
-     */
-    //
-    @Override
-    public boolean processOut() {
-        // 鏌ヨ浠诲姟
-
-
-        PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
-
-        List<DownStorageCageDetails> list = downStorageCageDetailsService.CacheOut(1, 5);
-        List<DownStorageCageDetails> list2 = downStorageCageDetailsService.CacheOut(6, 10);
-        List<DownStorageCageDetails> list3 = downStorageCageDetailsService.CacheOut(1, 10);
-        //鑷姩缁戝畾鏋跺瓙
-
-
-
-
-        // 浼樺厛 瓒呭嚭灏哄浼樺厛浜哄伐鍑虹墖 浜哄伐澶勭悊
-
-        if (!list3.isEmpty()) {
-            DownStorageCageDetails item3 = list3.get(0);
-            if (item3.getHeight() >= 1 && item3.getWidth() >= 1) {
-
-                String endcell = "13";
-                String SendEndcell = "1";
-
-
-
-                DownGlassTask downGlassTask =createDownGlassTask(item3,"0",endcell,"2");
-
-                downGlassTaskService.insertCacheTask(downGlassTask);
-           //  S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), SendEndcell);
-               // S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
-                return true;
-            }
-        }
-
-
-        //濡傛灉鍚屾椂鍓嶅悗绔兘绌洪棽 浼樺厛鍚庣鍑虹墖骞朵笖浼樺厛婊℃灦
-        else if (!list2.isEmpty()&&!list3.isEmpty()) {
-
-            DownStorageCageDetails item3 = list2.get(0);
-            String endcell = "11";
-            String SendEndcell = "1";
-
-            DownGlassTask downGlassTask =createDownGlassTask(item3,"0",endcell,"2");
-            downGlassTaskService.insertCacheTask(downGlassTask);
-
-            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), SendEndcell);
-            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
-            return true;
-
-        }
-        // 鎸夌収澶у皬绗﹀悎鍓嶇鍑虹墖
-        else if (!list.isEmpty()) {
-            DownStorageCageDetails item = list.get(0);
-
-            // 鍑哄埌 G06
-
-
-            DownGlassTask downGlassTask =createDownGlassTask(item,"0","06","2");
-            downGlassTaskService.insertCacheTask(downGlassTask);
-            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), "1");
-            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
-            return true;
-
-            // 鎸夌収澶у皬绗﹀悎鍚庣鍑虹墖
-        } else if (!list2.isEmpty()) {
-            DownStorageCageDetails item2 = list2.get(0);
-
-            // 鍑哄埌 G11
-
-            DownGlassTask downGlassTask =createDownGlassTask(item2,"0","11","2");
-            downGlassTaskService.insertCacheTask(downGlassTask);
-
-            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), "2");
-            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
-            return true;
-
-
-        }
-
-
-
-        // 杩斿洖缁撴灉
-        return false;
-    }
-
-
+    //鎵惧埌绌烘牸瀛�
     @Override
     public List<DownStorageCageDetails> selectCacheEmpty() {
         return baseMapper.selectJoinList(DownStorageCageDetails.class,
@@ -237,4 +90,70 @@
         );
     }
 
+
+
+
+
+
+    @Override
+    public List<Map<String, Object>> selectDownStorageCages() {
+        return baseMapper.selectJoinMaps(JoinWrappers.lambda(DownStorageCage.class)
+                .selectAll(DownStorageCage.class)
+                .selectAs(DownStorageCageDetails::getId, "esdId")
+                .select(DownStorageCageDetails::getGlassId, DownStorageCageDetails::getWidth, DownStorageCageDetails::getHeight, DownStorageCageDetails::getId)
+                .leftJoin(DownStorageCageDetails.class, on -> on
+                        .eq(DownStorageCageDetails::getDeviceId, DownStorageCage::getDeviceId)
+                        .eq(DownStorageCageDetails::getSlot, DownStorageCage::getSlot))
+        );
+
+    }
+
+    /**
+     * 淇敼鐞嗙墖绗间俊鎭� 鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑 銆愬惎鐢�/绂佺敤銆�
+     *
+     * @param downStorageCage
+     * @return
+     */
+    @Override
+    public boolean updateDownStorageCage(DownStorageCage downStorageCage) {
+        DownStorageCage downItem = baseMapper.selectById(downStorageCage.getId());
+        downItem.setEnableState(downStorageCage.getEnableState());
+        baseMapper.updateById(downItem);
+        return true;
+    }
+
+    /**
+     * 淇敼鐞嗙墖绗间俊鎭� 鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑 銆愭坊鍔�/鍒犻櫎/鏇存崲銆�
+     *
+     * @param downStorageCageId
+     * @param downStorageCageDetails
+     * @return
+     */
+    @Override
+    public boolean updateDownStorageCageDetails(int downStorageCageId, DownStorageCageDetails downStorageCageDetails) {
+        DownStorageCage downItem = baseMapper.selectById(downStorageCageId);
+        log.info("姝e父" + downItem);
+        if (downStorageCageDetails != null) {
+            DownStorageCageDetails edgDItem = downStorageCageDetailsMapper.selectById(downStorageCageDetails.getId());
+            //娣诲姞
+            if (edgDItem != null) {
+                //鍙紶鏍煎瓙  锛氱Щ闄ょ幓鐠�
+                DownStorageCageDetails newresult = downStorageCageDetailsMapper.selectById(downStorageCageDetails.getId());
+                newresult.setSlot(downItem.getSlot());
+                downStorageCageDetailsMapper.updateById(newresult);
+            }
+        }
+
+        if (downItem != null) {
+            //绉婚櫎
+            DownStorageCageDetails result = downStorageCageDetailsMapper.selectOne(new MPJLambdaWrapper<DownStorageCageDetails>().eq(DownStorageCageDetails::getSlot, downStorageCageId));
+            if (result != null) {
+                result.setSlot(0);
+                downStorageCageDetailsMapper.updateById(result);
+            }
+
+        }
+        return true;
+    }
+
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java
index 6b0b547..0daec61 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java
@@ -37,7 +37,7 @@
     @GetMapping("/getone")
     public ResponseEntity<?> getOneDownWorkstations() {
         try {
-            List<DownWorkstation> data = downWorkstationService.getoneDownWorkstations(1,5);
+            List<DownWorkstation> data = downWorkstationService.getoneDownWorkstations(1,6);
             // 鏋勫缓绗﹀悎棰勬湡鏍煎紡鐨勫搷搴旀暟鎹�
             Map<String, Object> responseData = new HashMap<>();
             responseData.put("code", 200);
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstation.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstation.java
index e9f6e7a..d242127 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstation.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstation.java
@@ -54,9 +54,15 @@
     private Integer workState;
 
 
+    /**
+     * 鎬绘暟閲�
+     */
     @TableField("total_quantity")
     private Integer totalquantity;
 
+    /**
+     * 钀芥灦鏁伴噺
+     */
     @TableField("racks_number")
     private Integer Racksnumber;
 
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstationTask.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstationTask.java
index 7ac060a..15cbb9f 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstationTask.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstationTask.java
@@ -56,7 +56,17 @@
      */
     private Integer state;
     /**
-     * 鐜荤拑
+     * 鐜荤拑ID
      */
     private String glassId;
+
+    /**
+     * 宸ヤ綅id
+     */
+    private String workstationid;
+
+    /**
+     * 鏈哄櫒浜�
+     */
+    private String Robot;
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationTaskMapper.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationTaskMapper.java
index 3cdda74..b9b2df0 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationTaskMapper.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationTaskMapper.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.mes.downworkstation.entity.DownWorkstation;
 import com.mes.downworkstation.entity.DownWorkstationTask;
+import org.mapstruct.Mapper;
 
 import java.util.List;
 
@@ -15,7 +16,9 @@
  * @author zhoush
  * @since 2024-04-07
  */
+
 @DS("salve_hangzhoumes")
+@Mapper
 public interface DownWorkstationTaskMapper extends BaseMapper<DownWorkstationTask> {
 
     List<DownWorkstationTask> selectList();
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java
index 7a1348b..5e8c697 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java
@@ -55,11 +55,19 @@
      */
     int updateFlowCardIdAndCount(String flowCardId, int glassInfoCount, int workstationId);
 
-    void insertdownglassinfo();
+
 
     /**
      * @return //
      * 宸ヤ綅鏄剧ず
      */
     List<Map<String, Object>> getTotalGlassDimensionsByWorkstation();
+
+
+    /**
+     * @param flowcardid
+     * 鏍规嵁娴佺▼鍗″彿鏌ヨ
+     * @return
+     */
+    DownWorkstation selectByFlowCardId(String flowcardid);
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationTaskService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationTaskService.java
index a40bc9b..7b11958 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationTaskService.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationTaskService.java
@@ -18,15 +18,17 @@
     /**
      * @param downGlassInfo 鎻掑叆浠诲姟
      */
-    void insertdownWorkstationtask(DownGlassInfo downGlassInfo);
+    void insertdownWorkstationtask(DownGlassInfo downGlassInfo,String workstationid);
 
     /**
-     * @param Id 鏇存柊浠诲姟鐘舵��
+     * @param downWorkstationTask 鏇存柊浠诲姟鐘舵��
      */
-    void updateTaskStateToZero(long Id);
+    void updateTaskState(DownWorkstationTask downWorkstationTask);
 
     /**
      * @return 鑾峰彇浠诲姟鐘舵�佷负1鐨勪俊鎭�
      */
     List<DownWorkstationTask> getTaskState();
+
+    void deleteTask(DownWorkstationTask downWorkstationTask);
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
index 5800c38..0746d83 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
@@ -32,7 +32,7 @@
 
     @Autowired
     private DownWorkstationMapper downWorkstationMapper;
-    @Autowired
+    @Autowired(required=false)
     private DownWorkstationTaskMapper downWorkstationTaskMapper;
     @Autowired
     private DownGlassInfoService downGlassInfoService;
@@ -52,13 +52,13 @@
 //鑾峰彇鎬绘暟閲�
     @Override
     public int getTotalQuantity(int workstationId) {
-        QueryWrapper<DownWorkstation> queryWrapper = new QueryWrapper<>();
-        queryWrapper.select("total_quantity")
-                .eq("workstation_id", workstationId);
+        DownWorkstation result = baseMapper.selectOne(new QueryWrapper<DownWorkstation>().lambda()
+                .select(DownWorkstation::getTotalquantity)
+                .eq(DownWorkstation::getWorkstationId, workstationId));
 
-        DownWorkstation result = baseMapper.selectOne(queryWrapper);
         return result != null ? result.getTotalquantity() : 0;
     }
+
 
     //宸ヤ綅鏄剧ず
     @Override
@@ -68,8 +68,8 @@
                 .leftJoin("down_glass_info b on t.flow_card_id = b.flow_card_id")
                 .groupBy("t.workstation_id", "t.flow_card_id");
 
-//        List<DownWorkstionAndDownGlassinfo> workstationList = downWorkstationMapper.selectJoinList(DownWorkstionAndDownGlassinfo.class, queryWrapper);
-        List<DownWorkstionAndDownGlassinfo> workstationList = null;
+    List<DownWorkstionAndDownGlassinfo> workstationList = downWorkstationMapper.selectJoinList(DownWorkstionAndDownGlassinfo.class, queryWrapper);
+       // List<DownWorkstionAndDownGlassinfo> workstationList = null;
         List<Map<String, Object>> result = new ArrayList<>();
         for (DownWorkstionAndDownGlassinfo downWorkstionAndDownGlassinfo : workstationList) {
             Map<String, Object> rack = new HashMap<>();
@@ -148,6 +148,7 @@
 
 
 
+    @Override
     public DownWorkstation selectByFlowCardId(String flowcardid) {
         QueryWrapper<DownWorkstation> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("flow_card_id", flowcardid);
@@ -167,74 +168,6 @@
     }
 
 
-    @Override
-    public void insertdownglassinfo() {
-
-
-        List<DownGlassTask> taskdownGlassInf = downGlassTaskService.getUnloadingTaskState();
-//
-
-
-        if (taskdownGlassInf != null && !taskdownGlassInf.isEmpty()) {
-
-//
-
-            for (DownGlassTask downGlassInfo : taskdownGlassInf) {
-                // 鍒涘缓鏂扮殑 DownGlassInfo 瀵硅薄骞惰缃浉鍏冲睘鎬�
-                DownGlassInfo newdownGlassInfo = new DownGlassInfo();
-
-                newdownGlassInfo.setFlowCardId(downGlassInfo.getFlowCardId());
-                Integer maxSequence = downGlassInfoService.getMaxSequenceByFlowCardId(downGlassInfo.getFlowCardId());
-                // 鍒濆鍖栭『搴忓瓧娈靛��
-                int sequence = maxSequence != null ? maxSequence + 1 : 1;
-//                newdownGlassInfo.setId(downGlassInfo.getId());
-                newdownGlassInfo.setWidth(downGlassInfo.getWidth());
-                newdownGlassInfo.setHeight(downGlassInfo.getHeight());
-                newdownGlassInfo.setThickness(downGlassInfo.getThickness());
-                newdownGlassInfo.setFilmsid(downGlassInfo.getFilmsid());
-                // 璁剧疆椤哄簭瀛楁鍊�
-                newdownGlassInfo.setSequence(sequence);
-
-                // 鎻掑叆鏁版嵁鍒颁笅鐗囩幓鐠冧俊鎭〃
-                downGlassInfoService.insertDownGlassInfo(newdownGlassInfo);
-                //鎻掑叆鏁版嵁鍒版満姊版墜浠诲姟琛�
-
-                downWorkstationTaskService.insertdownWorkstationtask(newdownGlassInfo);
-                //鏇存柊涓嬬墖浠诲姟琛ㄧ姸鎬佷负0
-                downGlassTaskService.updateTaskStateToZero(downGlassInfo.getId());
-                //鍒犻櫎涓嬬墖浠诲姟琛ㄤ腑鐨勮褰�
-                downGlassTaskService.deleteTask(downGlassInfo.getFlowCardId());
-
-                sequence++; // 閫掑椤哄簭瀛楁鍊�
-
-
-            }
-        }
-
-
-        try {
-            //鏌ヨ涓嬬墖宸ヤ綅琛ㄤ腑鏋跺瓙鏄惁缁戝畾浜嗘祦绋嬪崱鍙� 宸ヤ綅琛ㄥ拰浠诲姟琛ㄤ腑鐘舵�佷负1鐨勬祦绋嬪崱鍙峰拰宸茶惤鏋舵暟閲�
-            List<DownWorkstationTask> taskdownWorkstation = downWorkstationTaskService.getTaskState();
-            if (taskdownWorkstation != null && !taskdownWorkstation.isEmpty()) {
-                //锛屽鏋滃凡缁忕粦瀹氬垯鏇存柊宸茶惤鏋舵暟閲�,骞朵笖鍒犻櫎涓嬬墖浠诲姟琛ㄤ腑鐨勮褰�
-                for (DownWorkstationTask downWorkstation : taskdownWorkstation) {
-                    //鏇存柊涓嬬墖宸ヤ綅琛ㄤ腑宸茶惤鏋舵暟閲�
-                    DownWorkstation downWorkstation1 = selectByFlowCardId(downWorkstation.getFlowCardId());
-                    updateracksnumber(downWorkstation.getFlowCardId(), downWorkstation1.getRacksnumber() + 1);
-                    //鏇存柊鏈烘浠诲姟琛ㄤ腑鐘舵�佷负0
-                    downWorkstationTaskService.updateTaskStateToZero(downWorkstation.getId());
-                    //鍒犻櫎鏈烘浠诲姟琛�
-                    downWorkstationTaskService.removeById(downWorkstation.getId());
-
-
-                }
-            }
-        } catch (Exception e) {
-            // 鎵撳嵃寮傚父淇℃伅
-            e.printStackTrace();
-            // 鎴栬�呭彲浠ヨ繘琛屽叾浠栧紓甯稿鐞嗭紝姣斿璁板綍鏃ュ織鎴栬�呰繑鍥炵壒瀹氱殑閿欒淇℃伅
-        }
-    }
 
 
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationTaskServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationTaskServiceImpl.java
index 01cf539..813c149 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationTaskServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationTaskServiceImpl.java
@@ -1,6 +1,8 @@
 package com.mes.downworkstation.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.mes.downglassinfo.entity.DownGlassInfo;
@@ -25,7 +27,7 @@
 public class DownWorkstationTaskServiceImpl extends ServiceImpl<DownWorkstationTaskMapper, DownWorkstationTask> implements DownWorkstationTaskService {
 
 
-    public void insertdownWorkstationtask(DownGlassInfo downGlassInfo) {
+    public void insertdownWorkstationtask(DownGlassInfo downGlassInfo,String workstationid) {
         DownWorkstationTask entity = new DownWorkstationTask();
         // 鏌ヨ褰撳墠鏈�澶х殑 id 鍊�
         Long maxId = getMaxId();
@@ -33,9 +35,10 @@
         Long newId = (maxId == null) ? 1 : maxId + 1;
 
 
-        BeanUtils.copyProperties(entity,downGlassInfo);
+        BeanUtils.copyProperties(downGlassInfo,entity);
         entity.setId(newId); // 璁剧疆鎵嬪姩閫掑鐨� id
         entity.setState(1);
+        entity.setWorkstationid(workstationid);
         baseMapper.insert(entity);
     }
 
@@ -62,12 +65,24 @@
         queryWrapper.eq("state", 1);
         return baseMapper.selectList(queryWrapper);
     }
-    @Override
-    public void updateTaskStateToZero(long id) {
-        UpdateWrapper<DownWorkstationTask> updateWrapper = new UpdateWrapper<>();
-        updateWrapper.set("state", 0).eq("id", id);
 
-        baseMapper.update(new DownWorkstationTask(), updateWrapper);
+    @Override
+    public void updateTaskState(DownWorkstationTask downWorkstationTask) {
+        LambdaUpdateWrapper<DownWorkstationTask> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
+
+        lambdaUpdateWrapper.set(DownWorkstationTask::getState, 2)
+                .eq(DownWorkstationTask::getGlassId, downWorkstationTask.getGlassId());
+
+        baseMapper.update(new DownWorkstationTask(), lambdaUpdateWrapper);
+    }
+
+
+    @Override
+    public void deleteTask(DownWorkstationTask downWorkstationTask) {
+        LambdaQueryWrapper<DownWorkstationTask> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(DownWorkstationTask::getGlassId, downWorkstationTask.getGlassId());
+
+        baseMapper.delete(queryWrapper);
     }
 
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/GlassInfoService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/GlassInfoService.java
index 7d16a94..2f827dc 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/GlassInfoService.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/GlassInfoService.java
@@ -16,10 +16,22 @@
  */
 public interface GlassInfoService extends IService<GlassInfo> {
 
+    /**
+     * @param flowCardId
+     * @return 鏍规嵁娴佺▼鍗″彿鏌ヨ鐜荤拑淇℃伅
+     */
     int getGlassInfoCountByFlowCardId(String flowCardId);
 
+    /**
+     * @return
+     * 鏌ヨ鎵�鏈変笉鍚屾祦绋嬪崱鍙�
+     */
     List<Map<String, Object>> getFlowCardId();
 
+    /**
+     * @param id
+     * @return 鏍规嵁鐜荤拑id鏌ヨ鐜荤拑淇℃伅
+     */
     GlassInfo selectGlassId(String id);
 //    List<GlassInfo> getmaxglass(GlassInfo glassInfo);
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
index a60db72..58bb4b0 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
@@ -24,34 +24,34 @@
 
     private GlassInfoMapper glassInfoMapper;
 
-    @Autowired
+    @Autowired(required=false)
     public GlassInfoServiceImpl(GlassInfoMapper glassInfoMapper) {
         this.glassInfoMapper = glassInfoMapper;
     }
 
     @Override
     public int getGlassInfoCountByFlowCardId(String flowCardId) {
-        QueryWrapper<GlassInfo> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("flow_card_id", flowCardId);
-
-        return baseMapper.selectCount(queryWrapper);
+        return baseMapper.selectCount(new QueryWrapper<GlassInfo>().lambda()
+                .eq(GlassInfo::getFlowCardId, flowCardId));
     }
+
 
     @Override
     public List<Map<String, Object>> getFlowCardId() {
-        return baseMapper.selectMaps(new QueryWrapper<GlassInfo>().select("DISTINCT flow_card_id"));
+        return baseMapper.selectMaps(new QueryWrapper<GlassInfo>().lambda().select(GlassInfo::getFlowCardId).groupBy(GlassInfo::getFlowCardId));
     }
+
+
 
 
 
     @Override
     public GlassInfo selectGlassId(String id) {
-        QueryWrapper<GlassInfo> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("glass_id", id);
-
-        return baseMapper.selectOne(queryWrapper);
+        return baseMapper.selectOne(new QueryWrapper<GlassInfo>().lambda()
+                .eq(GlassInfo::getGlassId, id));
     }
 
 
 
+
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownCacheGlassTask.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownCacheGlassTask.java
new file mode 100644
index 0000000..820b173
--- /dev/null
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownCacheGlassTask.java
@@ -0,0 +1,289 @@
+package com.mes.job;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Assert;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.mes.common.S7object;
+import com.mes.common.config.Const;
+import com.mes.device.PlcParameterObject;
+import com.mes.downglassinfo.entity.DownGlassInfo;
+import com.mes.downglassinfo.mapper.DownGlassInfoMapper;
+import com.mes.downglassinfo.service.DownGlassInfoService;
+import com.mes.downstorage.entity.DownStorageCage;
+import com.mes.downstorage.entity.DownStorageCageDetails;
+import com.mes.downstorage.service.DownStorageCageDetailsService;
+import com.mes.downstorage.service.DownStorageCageService;
+import com.mes.downworkstation.entity.DownWorkstation;
+import com.mes.downworkstation.entity.DownWorkstationTask;
+import com.mes.downworkstation.service.DownWorkstationService;
+import com.mes.downworkstation.service.DownWorkstationTaskService;
+import com.mes.glassinfo.entity.GlassInfo;
+import com.mes.glassinfo.service.GlassInfoService;
+import com.mes.downglassinfo.entity.DownGlassTask;
+import com.mes.downglassinfo.service.DownGlassTaskService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/5/8 8:17
+ * @Description:
+ */
+@Component
+@Slf4j
+public class DownCacheGlassTask {
+
+
+    @Autowired
+    DownGlassTaskService downGlassTaskService;
+    @Autowired
+    GlassInfoService glassInfoService;
+    @Autowired
+    DownStorageCageDetailsService downStorageCageDetailsService;
+    @Autowired
+    DownStorageCageService downStorageCageService;
+    @Autowired
+    DownWorkstationService downWorkstationService;
+    @Autowired
+     DownGlassInfoService downGlassInfoService;
+
+
+
+
+    @Autowired
+    private DownWorkstationTaskService downWorkstationTaskService;
+
+//    @Value("${mes.threshold}")
+    private int threshold;
+
+    //@Scheduled(fixedDelay = 1000)
+    public void plcdownGlassTask() {
+   //   PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
+//        String taskRequestTypeValue = plcParameterObject.getPlcParameter("A06_request_word").getValue();
+//        String glassIdeValue = plcParameterObject.getPlcParameter("A05_scanning_ID").getValue();
+//        String confirmationWrodValue = plcParameterObject.getPlcParameter("MES_confirmation_word").getValue();
+//        String outGlassstate = plcParameterObject.getPlcParameter("A09_glass_status").getValue();
+//        String confirmationWrodAddress = plcParameterObject.getPlcParameter("MES_confirmation_word").getAddress();
+      // String G06RobotTaskRequestWord = plcParameterObject.getPlcParameter("G06RobotTaskRequestWord").getAddress();
+
+
+                String taskRequestTypeValue ="3";
+        String glassIdeValue ="NG24041101C002-2-6-1-6";
+        String confirmationWrodValue ="1";
+        String outGlassstate="1";
+        String confirmationWrodAddress="1";
+        String G11RobotTaskRequestWord ="1";
+        String G06RobotTaskRequestWord ="1";
+        String G13RobotTaskRequestWord ="1";
+
+                log.info("1銆佽幏鍙栧埌鐨勮姹傚瓧涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{}锛岃幏鍙栧埌鐨勭‘璁ゅ瓧涓猴細{}锛岃幏鍙栧埌鐨勫嚭鐗囩姸鎬佷负锛歿}",
+                taskRequestTypeValue, glassIdeValue, confirmationWrodValue, outGlassstate);
+
+//        if ("0".equals(taskRequestTypeValue)) {
+//            if ("0".equals(confirmationWrodValue)) {
+//                log.info("2銆佽幏鍙栧埌鐨勮姹傚瓧涓�0锛屼笖纭瀛椾负0锛屼笉鎵ц浠诲姟");
+//                return;
+//            }
+//            log.info("2銆佽幏鍙栧埌鐨勮姹傚瓧涓�0锛屽皢纭瀛楁敼涓�0");
+//            S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 0);
+//            return;
+//        }
+//        if (!"0".equals(confirmationWrodValue)) {
+//            log.info("2銆佽幏鍙栧埌鐨勮姹傚瓧涓嶄负0锛屽皢纭瀛楁敼涓�0");
+//            S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 0);
+//            return;
+//        }
+
+        if ("1".equals(taskRequestTypeValue)) {
+            log.info("3銆佽繘鐗囪姹傦紝涓旂‘璁ゅ瓧涓�0锛屾墽琛岃繘鐗囦换鍔�");
+            inTo(glassIdeValue, confirmationWrodAddress);
+        } else if ("2".equals(taskRequestTypeValue)) {
+
+            log.info("3銆佸嚭鐗囪姹傦紝涓旂‘璁ゅ瓧涓�0锛屾墽琛岃繘鐗囦换鍔�");
+            outTo( confirmationWrodAddress);
+
+        } else if ("3".equals(taskRequestTypeValue)) {
+            log.info("3銆佽繘鐗囧拰鍑虹墖閮界┖闂诧紝鎵ц鍑虹墖浠诲姟");
+            if (outTo(confirmationWrodAddress)) {
+                inTo(glassIdeValue, confirmationWrodAddress);
+
+
+            }
+        }
+
+        if (("1".equals(G11RobotTaskRequestWord) || "1".equals(G06RobotTaskRequestWord))  || "1".equals(G13RobotTaskRequestWord)) {
+            log.info("4銆佹湁鏈哄櫒浜轰笅鐗囪姹傦紝鎵ц涓嬬墖浠诲姟");
+            insertdownglassinfo();
+        }
+
+        //鑷姩缁戝畾鏋跺瓙锛屽鏋滃伐浣嶈〃娌℃湁缁戝畾鏋跺瓙锛岄粯璁ゅ皢绗煎瓙涓暟閲忔渶澶氱殑娴佺▼鍗″彿缁戝畾鏈哄櫒鎵�2鐨勭┖鏋跺瓙
+
+
+
+    }
+
+    /**
+     * 杩涚墖浠诲姟
+     * @param glassId
+     * @param confirmationWrodAddress
+     * @param
+     */
+    private void inTo(String glassId, String confirmationWrodAddress) {
+        log.info("1銆佹寜鐓х幓鐠僫d:{}鑾峰彇鐜荤拑灏忕墖淇℃伅", glassId);
+        GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId));
+        if (glassInfo == null) {
+            log.info("2銆佹鐜荤拑缂栧彿涓嶅瓨鍦�");
+            return;
+        }
+        log.info("2銆佽幏鍙栧埌鐨勭幓鐠冧俊鎭负{}", glassInfo);
+        //娣诲姞杩涚墖浠诲姟  鏌ユ壘绌烘牸
+        List<DownStorageCageDetails> list = downStorageCageService.selectCacheEmpty();
+        if(list.size()>0){
+            DownStorageCageDetails item = list.get(0);
+
+
+
+        log.info("3銆佹煡璇㈠崸寮忕悊鐗囩閲岄潰鐨勭┖鏍�:{}", list);
+        log.info("4銆佸皢鐜荤拑淇℃伅鎻掑叆鍗у紡鐞嗙墖绗�,褰撳墠鐜荤拑淇℃伅:{}", glassInfo);
+        DownStorageCageDetails details = new DownStorageCageDetails();
+        BeanUtils.copyProperties(glassInfo, details);
+        details.setState(1);
+        details.setGlassId(glassInfo.getGlassId());
+        details.setSlot(item.getSlot());
+        details.setDeviceId(item.getDeviceId());
+        downStorageCageDetailsService.save(details);
+        log.info("5銆佺幓鐠冧俊鎭凡瀛樺叆鐞嗙墖绗艰鎯呰〃锛岀幓鐠冧俊鎭负{}", details);
+
+            DownGlassTask downGlassTask = downStorageCageService.createDownGlassTask(glassInfo, "0", item.getSlot() + "", "1");
+        //娣诲姞杩涚墖浠诲姟
+        log.info("6銆佺敓鎴愯繘鐗囦换鍔′俊鎭瓨鍏ヤ换鍔¤〃{}", downGlassTask);
+            downGlassTaskService.insertCacheTask(downGlassTask);
+        }
+        //S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 1);
+        log.info("7銆佸彂閫佺‘璁ゅ瓧瀹屾垚");
+
+
+    }
+
+    /**
+     * 鍑虹墖浠诲姟
+     *
+     * @param confirmationWrodAddress
+     *
+     */
+    private Boolean outTo( String confirmationWrodAddress) {
+        log.info("鍗曠墖鎯呭喌鏍规嵁浼犲叆鐨勬枡鏋跺彿 鏌ヨ绗﹀悎鎸夌収鐗堝浘id鍜岀墖搴忓嚭鐗�,骞朵笖浼樺厛鍑烘弧鏋剁殑灏忕墖");
+        List<DownStorageCageDetails> list = downStorageCageDetailsService.CacheOut1(1,3);
+
+        List<DownStorageCageDetails> list2 = downStorageCageDetailsService.CacheOut1(4,6);
+
+        List<DownStorageCageDetails> list3 = downStorageCageDetailsService.CacheOut1(1,6);
+        // 浼樺厛 瓒呭嚭灏哄浼樺厛浜哄伐鍑虹墖 浜哄伐澶勭悊
+        if (!list3.isEmpty()) {
+
+            DownStorageCageDetails item3 = list3.get(0);
+            if (item3.getHeight() >= 2500 && item3.getWidth() >= 2660) {
+                log.info("浜哄伐澶勭悊");
+                String endcell = "7";
+
+
+                DownGlassTask downGlassTask = downStorageCageService.createDownGlassTask(item3, "9", endcell, "2");
+                downGlassTaskService.insertCacheTask(downGlassTask);
+              // S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 2);
+
+              return true;
+            }
+            else if (!list2.isEmpty() && !list3.isEmpty()) {
+                log.info("鍓嶅悗绔兘绌洪棽 浼樺厛鍚庣鍑虹墖骞朵笖浼樺厛婊℃灦");
+                DownStorageCageDetails item4 = list2.get(0);
+
+                DownWorkstation downWorkstation = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>().eq(DownWorkstation::getFlowCardId, item4.getFlowCardId()));
+                String endcell = String.valueOf(downWorkstation.getWorkstationId());
+
+                DownGlassTask downGlassTask = downStorageCageService.createDownGlassTask(item4, "9", endcell, "2");
+                downGlassTaskService.insertCacheTask(downGlassTask);
+
+                //S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 2);
+
+                return true;
+
+            }
+            // 鎸夌収鐗堝浘id鍜岀墖搴忕鍚堝墠绔嚭鐗�
+            else if (!list.isEmpty()) {
+                log.info("鍓嶇鍑虹墖");
+                DownStorageCageDetails item = list.get(0);
+                DownWorkstation downWorkstation = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>().eq(DownWorkstation::getFlowCardId, item.getFlowCardId()));
+                String endcell = String.valueOf(downWorkstation.getWorkstationId());
+                // 鍑哄埌 G06
+                DownGlassTask downGlassTask = downStorageCageService.createDownGlassTask(item, "9", endcell, "2");
+                downGlassTaskService.insertCacheTask(downGlassTask);
+                // S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 2);
+
+
+                return true;
+                // 鎸夌収鐗堝浘id鍜岀墖搴忕鍚堝悗绔嚭鐗�
+            } else if (!list2.isEmpty()) {
+                log.info("鍚庣鍑虹墖");
+                DownStorageCageDetails item2 = list2.get(0);
+                DownWorkstation downWorkstation = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>().eq(DownWorkstation::getFlowCardId, item2.getFlowCardId()));
+                String endcell = String.valueOf(downWorkstation.getWorkstationId());
+                // 鍑哄埌 G11
+                DownGlassTask downGlassTask = downStorageCageService.createDownGlassTask(item2, "9", endcell, "2");
+                downGlassTaskService.insertCacheTask(downGlassTask);
+                //  S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 2);
+                return true;
+            }
+        }
+        //濡傛灉鍚屾椂鍓嶅悗绔兘绌洪棽 浼樺厛鍚庣鍑虹墖骞朵笖浼樺厛婊℃灦
+
+        // 杩斿洖缁撴灉
+        return false;
+    }
+
+
+//
+    public void insertdownglassinfo() {
+        try {
+
+        List<DownGlassTask> taskdownGlassInf = downGlassTaskService.getUnloadingTaskState();
+        if (taskdownGlassInf != null && !taskdownGlassInf.isEmpty()) {
+
+            for (DownGlassTask downGlassInfo : taskdownGlassInf) {
+                // 鍒涘缓鏂扮殑 DownGlassInfo 瀵硅薄骞惰缃浉鍏冲睘鎬�
+                DownGlassInfo newdownGlassInfo = new DownGlassInfo();
+
+                Integer maxSequence = downGlassInfoService.getMaxSequenceByFlowCardId(downGlassInfo.getFlowCardId());
+                // 鍒濆鍖栭『搴忓瓧娈靛��
+                int sequence = maxSequence != null ? maxSequence + 1 : 1;
+                BeanUtils.copyProperties(downGlassInfo, newdownGlassInfo);
+                // 璁剧疆椤哄簭瀛楁鍊�
+                newdownGlassInfo.setSequence(sequence);
+                // 鎻掑叆鏁版嵁鍒颁笅鐗囩幓鐠冧俊鎭〃
+                downGlassInfoService.insertDownGlassInfo(newdownGlassInfo);
+                log.info("鎻掑叆鏁版嵁鍒颁笅鐗囩幓鐠冧俊鎭〃");
+                DownWorkstation downWorkstation1 = downWorkstationService.selectByFlowCardId(downGlassInfo.getFlowCardId());
+                downWorkstationService.updateracksnumber(downGlassInfo.getFlowCardId(), downWorkstation1.getRacksnumber() + 1);
+                log.info("鏇存柊钀芥灦鏁伴噺");
+                sequence++; // 閫掑椤哄簭瀛楁鍊�
+
+
+            }
+        }
+        } catch (Exception e) {
+            // 鎵撳嵃寮傚父淇℃伅
+            e.printStackTrace();
+            // 鎴栬�呭彲浠ヨ繘琛屽叾浠栧紓甯稿鐞嗭紝姣斿璁板綍鏃ュ織鎴栬�呰繑鍥炵壒瀹氱殑閿欒淇℃伅
+        }
+
+
+    }
+
+
+}
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/tools/ExcelToJsonConverter.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/tools/ExcelToJsonConverter.java
index 8fbb58a..d5cc9c8 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/tools/ExcelToJsonConverter.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/tools/ExcelToJsonConverter.java
@@ -18,13 +18,13 @@
 public class ExcelToJsonConverter {
 
     public static void main(String[] args) {
-        String excelFilePath = "src/main/resources/JsonFile/alarm.xlsx";
+        String excelFilePath = "src/main/resources/JsonFile/PlcdownGlass.xlsx";
         String sheetName = "Sheet1";
         int addressColumnIndex = 0;
         int nameColumnIndex = 1;
 
         //int unitColumnIndex = 2;
-        String outputFilePath = "src/main/resources/JsonFile/PlcAlarm.json";
+        String outputFilePath = "src/main/resources/JsonFile/PlcdownGlass.json";
 
         try (Workbook workbook = new XSSFWorkbook(new FileInputStream(excelFilePath))) {
             Sheet sheet = workbook.getSheet(sheetName);
@@ -75,8 +75,8 @@
             LinkedHashMap<String, Object> resultObject = new LinkedHashMap<>();
             resultObject.put("plcAddressBegin", "DB100.0");
             resultObject.put("plcAddressLenght", String.valueOf(plcAddressLength));
-            // resultObject.put("dataType", "word");
-            resultObject.put("dataType", "bit");
+            resultObject.put("dataType", "word");
+           // resultObject.put("dataType", "bit");
             resultObject.put("parameteInfor", jsonList);
 
             Gson gson = new Gson();
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcAlarm.json b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcAlarm.json
deleted file mode 100644
index acfdad0..0000000
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcAlarm.json
+++ /dev/null
@@ -1,371 +0,0 @@
-{
-  "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/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcMes.json b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcMes.json
deleted file mode 100644
index ab5d4cd..0000000
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcMes.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-   "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/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcParameter.json b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcParameter.json
deleted file mode 100644
index afbe090..0000000
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcParameter.json
+++ /dev/null
@@ -1,610 +0,0 @@
-{
-   "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/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcRead.json b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcRead.json
deleted file mode 100644
index f3ebb33..0000000
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcRead.json
+++ /dev/null
@@ -1,195 +0,0 @@
-{
-   "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/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcSign.json b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcSign.json
deleted file mode 100644
index 8f9295a..0000000
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcSign.json
+++ /dev/null
@@ -1,460 +0,0 @@
-{
-  "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/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcState.json b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcState.json
deleted file mode 100644
index 595107e..0000000
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcState.json
+++ /dev/null
@@ -1,285 +0,0 @@
-{
-  "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/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcTest.json b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcTest.json
deleted file mode 100644
index 95a2010..0000000
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcTest.json
+++ /dev/null
@@ -1,378 +0,0 @@
-{
-  "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/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.json b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.json
new file mode 100644
index 0000000..3880ffc
--- /dev/null
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.json
@@ -0,0 +1,362 @@
+{
+  "plcAddressBegin": "DB100.0",
+  "plcAddressLenght": "142",
+  "dataType": "word",
+  "parameteInfor": [
+    {
+      "codeId": "RequestWord",
+      "addressIndex": "0",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G04ID",
+      "addressIndex": "2",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G06RobotTaskRequestWord",
+      "addressIndex": "4",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G06ID",
+      "addressIndex": "6",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G11RobotTaskRequestWord",
+      "addressIndex": "8",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G011ID",
+      "addressIndex": "10",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "spare",
+      "addressIndex": "12",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "spare",
+      "addressIndex": "14",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "spare",
+      "addressIndex": "16",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "spare",
+      "addressIndex": "18",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "MESSendingWord",
+      "addressIndex": "20",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "InputGrid",
+      "addressIndex": "22",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "OutputGrid",
+      "addressIndex": "24",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "OutputID",
+      "addressIndex": "26",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "FrontOrRearLowerSlice",
+      "addressIndex": "28",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "spare",
+      "addressIndex": "30",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G06RobotTaskReply",
+      "addressIndex": "32",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G06Rack",
+      "addressIndex": "34",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G11RobotTaskReply",
+      "addressIndex": "36",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G11Rack",
+      "addressIndex": "38",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "spare",
+      "addressIndex": "40",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "spare",
+      "addressIndex": "42",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "spare",
+      "addressIndex": "44",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "spare",
+      "addressIndex": "46",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "spare",
+      "addressIndex": "48",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "spare",
+      "addressIndex": "50",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "spare",
+      "addressIndex": "52",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "spare",
+      "addressIndex": "54",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "MESTaskState",
+      "addressIndex": "56",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "spare",
+      "addressIndex": "58",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "AlarmState",
+      "addressIndex": "60",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "Alarm1",
+      "addressIndex": "62",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "Alarm2",
+      "addressIndex": "64",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "Alarm3",
+      "addressIndex": "66",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "Alarm4",
+      "addressIndex": "68",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "neirong",
+      "addressIndex": "70",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "device",
+      "addressIndex": "72",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "spare",
+      "addressIndex": "74",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "spare",
+      "addressIndex": "76",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "InOut1",
+      "addressIndex": "78",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "InOut2",
+      "addressIndex": "80",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "InOut3",
+      "addressIndex": "82",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "InOut4",
+      "addressIndex": "84",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "InOut5",
+      "addressIndex": "86",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "InOut6",
+      "addressIndex": "88",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "InOut7",
+      "addressIndex": "90",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "spare",
+      "addressIndex": "92",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "spare",
+      "addressIndex": "94",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "spare",
+      "addressIndex": "96",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "spare",
+      "addressIndex": "98",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "spare",
+      "addressIndex": "100",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G04ActionState",
+      "addressIndex": "102",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G05ActionState",
+      "addressIndex": "104",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G06ActionState",
+      "addressIndex": "106",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G07ActionState",
+      "addressIndex": "108",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G08ActionState",
+      "addressIndex": "110",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G09ActionState",
+      "addressIndex": "112",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G10ActionState",
+      "addressIndex": "114",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G11ActionState",
+      "addressIndex": "116",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G12ActionState",
+      "addressIndex": "118",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G13ActionState",
+      "addressIndex": "120",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G04IDS",
+      "addressIndex": "122",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G05IDS",
+      "addressIndex": "124",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G06IDS",
+      "addressIndex": "126",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G07IDS",
+      "addressIndex": "128",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G08IDS",
+      "addressIndex": "130",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G09IDS",
+      "addressIndex": "132",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G10IDS",
+      "addressIndex": "134",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G11IDS",
+      "addressIndex": "136",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G12IDS",
+      "addressIndex": "138",
+      "addressLenght": "2"
+    },
+    {
+      "codeId": "G13ID",
+      "addressIndex": "140",
+      "addressLenght": "2"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.xlsx b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.xlsx
new file mode 100644
index 0000000..dd72649
--- /dev/null
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.xlsx
Binary files differ
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/Plcframe.json b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/Plcframe.json
deleted file mode 100644
index c270227..0000000
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/Plcframe.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
-   "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/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/alarm.xlsx b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/alarm.xlsx
deleted file mode 100644
index 50b26dc..0000000
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/alarm.xlsx
+++ /dev/null
Binary files differ
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/sign.xlsx b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/sign.xlsx
deleted file mode 100644
index 3922301..0000000
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/sign.xlsx
+++ /dev/null
Binary files differ
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/test.xlsx b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/test.xlsx
deleted file mode 100644
index 9862cf5..0000000
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/test.xlsx
+++ /dev/null
Binary files differ
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-prod.yml b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-prod.yml
index 2e6a12c..113ecb3 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-prod.yml
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-prod.yml
@@ -5,7 +5,7 @@
       strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
       datasource:
         hangzhoumes:
-          url: jdbc:mysql://10.153.19.150:3306/hangzhoumes?serverTimezone=GMT%2b8
+          url: jdbc:mysql://127.0.0.1:3306/hangzhoumes?serverTimezone=GMT%2b8
           username: root
           password: beibo.123/
           driver-class-name: com.mysql.cj.jdbc.Driver
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java
index a783463..440b651 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java
@@ -10,6 +10,7 @@
 
 import com.mes.downworkstation.service.DownWorkstationService;
 import com.mes.downworkstation.service.impl.DownWorkstationServiceImpl;
+import com.mes.glassinfo.service.impl.GlassInfoServiceImpl;
 import lombok.extern.slf4j.Slf4j;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -43,6 +44,10 @@
     DownStorageCageDetailsService downStorageCageDetailsService;
     @Autowired
     DownWorkstationServiceImpl downWorkstationServiceImpl;
+    @Autowired
+    GlassInfoServiceImpl glassInfoServiceImpl;
+    @Autowired
+    DownWorkstationService downWorkstationService;
 
     @Test
     public void testFindPath() {
@@ -51,21 +56,22 @@
 
     @Test
     public void testCacheGlass() {
-        List<Map> map = downStorageCageDetailsServiceImpl.getCacheInfo();
-        log.info("绗煎唴淇℃伅锛歿}", Arrays.asList(map));
+        //List<Map<String, Object>> map = downStorageCageServiceImpl.selectDownStorageCages();
+      //  log.info("绗煎唴淇℃伅锛歿}", Arrays.asList(map));
+        downStorageCageServiceImpl.updateDownStorageCageDetails(1,null);
     }
 
     @Test
     public void testselectCacheEmpty() {
-        List<DownStorageCageDetails> map = downStorageCageDetailsServiceImpl.getCacheLeisure();
-        log.info("绗煎唴绌烘牸锛歿}", Arrays.asList(map));
+       // List<DownStorageCageDetails> map = downStorageCageDetailsServiceImpl.getCacheLeisure();
+       // log.info("绗煎唴绌烘牸锛歿}", Arrays.asList(map));
     }
 
 
     @Test
     public void testgetCacheOut() {
-        List<DownStorageCageDetails> map = downStorageCageDetailsServiceImpl.getCacheOut(1, 5);
-        log.info("鏍规嵁浼犲叆鐨勫伐浣嶆煡璇㈢鍚堟寜鐓ч『搴忓拰澶у皬鍑虹墖鐨勫皬鐗囷細{}", Arrays.asList(map));
+       // List<DownStorageCageDetails> map = downStorageCageDetailsServiceImpl.getCacheOut(1, 5);
+      //  log.info("鏍规嵁浼犲叆鐨勫伐浣嶆煡璇㈢鍚堟寜鐓ч『搴忓拰澶у皬鍑虹墖鐨勫皬鐗囷細{}", Arrays.asList(map));
     }
 
 
@@ -79,7 +85,7 @@
     @Test
     public void testplc() {
         log.info("娴嬭瘯");
-        downWorkstationServiceImpl.insertdownglassinfo();
+        glassInfoServiceImpl.getGlassInfoCountByFlowCardId("NG24030702A01");
 
     }
 
@@ -88,7 +94,7 @@
     @Test
     public void testin2() {
         log.info("娴嬭瘯杩涚墖");
-        downStorageCageDetailsServiceImpl.getIsExistIntoCacheByflowcardid("NG2023005",500);
+        //downStorageCageDetailsServiceImpl.getIsExistIntoCacheByflowcardid("NG2023005",500);
 
     }
 
@@ -96,22 +102,30 @@
     @Test
     public void selectCacheEmpty() {
         log.info("娴嬭瘯杩涚墖");
-        downStorageCageDetailsServiceImpl.getCacheLeisure();
+        //downStorageCageDetailsServiceImpl.getCacheLeisure();
 
     }
 
     @Test
     public void CacheEmpty() {
         log.info("娴嬭瘯鍑虹墖");
-        downStorageCageDetailsService.CacheOut(1,10);
+        downStorageCageDetailsService.CacheOut(1,2);
 
     }
+    @Test
+    public void CacheEmpty1() {
+        log.info("娴嬭瘯鍑虹墖");
+        downStorageCageDetailsServiceImpl.CacheOut1(1,6);
+
+    }
+
+
 
 
     @Test
     public void getTotalGlassDimensionsByWorkstation() {
         log.info("宸ヤ綅鏄剧ず");
-        downWorkstationServiceImpl.getTotalGlassDimensionsByWorkstation();
+        downWorkstationService.getTotalGlassDimensionsByWorkstation();
 
     }
 
@@ -127,7 +141,7 @@
     public void updateTaskStateToZero() {
         log.info("鏇存柊鐘舵��0");
 
-        downGlassTaskServiceImpl.updateTaskStateToZero(3);
+        downGlassTaskServiceImpl.updateTaskState("3");
     }
 
 

--
Gitblit v1.8.0