From 09381335e11d32e01c8067b71d897c7064ec279d Mon Sep 17 00:00:00 2001
From: ZengTao <2773468879@qq.com>
Date: 星期一, 20 五月 2024 14:38:18 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes

---
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java                            |    2 
 UI-Project/src/views/Returns/returns.vue                                                                                                 |  352 +++-
 hangzhoumesParent/gateway/src/main/resources/application.yml                                                                             |    6 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java                                |   14 
 UI-Project/src/lang/i18n.js                                                                                                              |    8 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java                  |   19 
 hangzhoumesParent/moduleService/LoadGlassModule/src/test/java/com/mes/LoadGlassModuleApplicationTest.java                                |   28 
 UI-Project/src/views/LoginView.vue                                                                                                       |   46 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java                          |   22 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/glassinfo/entity/GlassInfo.java                                   |    2 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/entity/TaskCache.java                                   |   35 
 UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue                                                                                |   98 +
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationTaskServiceImpl.java |    7 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterInfo.java                                                  |    2 
 UI-Project/package.json                                                                                                                  |    2 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstationTask.java                  |   10 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml                                                      |    7 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java              |   12 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeProjectService.java                                        |   10 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/UpWorkstationService.java                      |   26 
 JsonFile/PlcCacheGlass.json                                                                                                              |   64 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/impl/UpWorkstationServiceImpl.java             |   38 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/glassinfo/entity/GlassInfo.java                           |    5 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/controller/UpWorkstationController.java                |   25 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java        |   78 
 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                             |   25 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/AppRunnerConfig.java                                             |   26 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java         |  207 --
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassTask.java                          |    6 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownCacheGlassTask.java                                      |  293 ++++
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/JsonFile/PlcLoadGlass.json                                            |   11 
 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                                          |  121 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java        |   24 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java  |   99 +
 UI-Project/src/views/Identify/identify.vue                                                                                               |  109 +
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java                      |   33 
 UI-Project/src/views/Caching/cachingbefore.vue                                                                                           |   88 -
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java                                  |    7 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/mapper/EdgGlassTaskInfoMapper.java                   |   18 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml                                                       |    4 
 JsonFile/PlcLoadGlass.json                                                                                                               |   78 +
 UI-Project/src/views/UnLoadGlass/loadmachinerack.vue                                                                                     |   17 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/controller/EdgGlassTaskInfoController.java           |   20 
 UI-Project/src/views/Caching/cachingun.vue                                                                                               |   95 -
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java     |  105 -
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/OptimizeProjectController.java                                  |    6 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/mapper/LoadGlassMapper.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                                             |   59 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationTaskService.java          |    4 
 hangzhoumesParent/common/servicebase/pom.xml                                                                                             |    7 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeProjectServiceImpl.java                               |   13 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/S7object.java                                               |   11 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/config/TokenWebSecurityConfig.java                                  |    1 
 hangzhoumesParent/common/pom.xml                                                                                                         |   13 
 UI-Project/src/views/UnLoadGlass/Landingindication.vue                                                                                   |   79 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java                                           |  435 ++++-
 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                                   |   24 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/service/UpPattenUsageService.java                               |   33 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java         |   11 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/controller/UpPattenUsageController.java                         |   34 
 /dev/null                                                                                                                                |  458 ------
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java                  |   43 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/common/S7object.java                                      |    4 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.json                                          |   88 
 UI-Project/src/lang/LanguageMixin.js                                                                                                     |   24 
 JsonFile/PlcdownGlass.json                                                                                                               |  362 +++++
 UI-Project/src/main.js                                                                                                                   |   10 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java                  |    2 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java           |    7 
 UI-Project/package-lock.json                                                                                                             |   70 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/GlassInfoService.java                                       |    9 
 JsonFile/PlcCacheVerticalGlass.json                                                                                                      |   57 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java                                                      |   11 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/CacheGlassModuleApplication.java                                  |    3 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/common/S7object.java                                              |   10 
 81 files changed, 2,692 insertions(+), 1,584 deletions(-)

diff --git a/JsonFile/PlcCacheGlass.json b/JsonFile/PlcCacheGlass.json
new file mode 100644
index 0000000..01969b7
--- /dev/null
+++ b/JsonFile/PlcCacheGlass.json
@@ -0,0 +1,64 @@
+{
+   "plcAddressBegin":"DB11.0",
+   "plcAddressLenght":"80",
+   "dataType":"word",
+   "parameteInfor":[
+      {
+         "codeId": "A06_request_word",
+         "addressIndex":"0",
+         "addressLenght":"2", 
+         "ratio":"1", 
+         "unit":"m/min"    
+      },
+      {
+          "codeId": "A05_scanning_ID",
+          "addressIndex":"2",
+          "addressLenght":"30",
+          "ratio":"1",
+          "unit":""
+       },
+       {
+          "codeId": "Current_slot",
+          "addressIndex":"36",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       },
+        {
+          "codeId": "MES_confirmation_word",
+          "addressIndex":"38",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       },
+       {
+          "codeId": "A08_glass_status",
+          "addressIndex":"68",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       },
+       {
+          "codeId": "A10_glass_status",
+          "addressIndex":"70",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       },
+       {
+          "codeId": "A09_prohibit_film_production",
+          "addressIndex":"72",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       }
+       ,
+       {
+          "codeId": "A10_prohibit_film_production",
+          "addressIndex":"74",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+       }
+   ]
+}
diff --git a/JsonFile/PlcCacheVerticalGlass.json b/JsonFile/PlcCacheVerticalGlass.json
new file mode 100644
index 0000000..5838dac
--- /dev/null
+++ b/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/JsonFile/PlcLoadGlass.json b/JsonFile/PlcLoadGlass.json
new file mode 100644
index 0000000..9b0432b
--- /dev/null
+++ b/JsonFile/PlcLoadGlass.json
@@ -0,0 +1,78 @@
+{
+  "plcAddressBegin":"DB1.2000",
+  "plcAddressLenght":"100",
+  "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": "InkageStatus",
+      "addressIndex":"22",
+      "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/JsonFile/PlcdownGlass.json b/JsonFile/PlcdownGlass.json
new file mode 100644
index 0000000..c813b1d
--- /dev/null
+++ b/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/UI-Project/package-lock.json b/UI-Project/package-lock.json
index 3a65897..ba2dc0c 100644
--- a/UI-Project/package-lock.json
+++ b/UI-Project/package-lock.json
@@ -18,7 +18,7 @@
         "sortablejs": "^1.15.1",
         "sweetalert2": "^11.10.7",
         "vue": "^3.3.4",
-        "vue-i18n": "^9.11.0",
+        "vue-i18n": "^9.13.1",
         "vue-router": "^4.2.4",
         "vxe-table": "^4.5.15",
         "xe-utils": "^3.5.14",
@@ -462,23 +462,23 @@
       "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A=="
     },
     "node_modules/@intlify/core-base": {
-      "version": "9.11.0",
-      "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.11.0.tgz",
-      "integrity": "sha512-cveOqAstjLZIiyatcP/HrzrQ87cZI8ScPQna3yvoM8zjcjcIRK1MRvmxUNlPdg0rTNJMZw7rixPVM58O5aHVPA==",
+      "version": "9.13.1",
+      "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.13.1.tgz",
+      "integrity": "sha512-+bcQRkJO9pcX8d0gel9ZNfrzU22sZFSA0WVhfXrf5jdJOS24a+Bp8pozuS9sBI9Hk/tGz83pgKfmqcn/Ci7/8w==",
       "dependencies": {
-        "@intlify/message-compiler": "9.11.0",
-        "@intlify/shared": "9.11.0"
+        "@intlify/message-compiler": "9.13.1",
+        "@intlify/shared": "9.13.1"
       },
       "engines": {
         "node": ">= 16"
       }
     },
     "node_modules/@intlify/message-compiler": {
-      "version": "9.11.0",
-      "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.11.0.tgz",
-      "integrity": "sha512-x31Gl7cscnoI4UUY1yaIy8e7vVMVW1VVlTXZz4SIHKqoSEUkfmgqK8NAx1e7RcoHEbICR7uyCbud0ZL1s4OGXQ==",
+      "version": "9.13.1",
+      "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.13.1.tgz",
+      "integrity": "sha512-SKsVa4ajYGBVm7sHMXd5qX70O2XXjm55zdZB3VeMFCvQyvLew/dLvq3MqnaIsTMF1VkkOb9Ttr6tHcMlyPDL9w==",
       "dependencies": {
-        "@intlify/shared": "9.11.0",
+        "@intlify/shared": "9.13.1",
         "source-map-js": "^1.0.2"
       },
       "engines": {
@@ -486,9 +486,9 @@
       }
     },
     "node_modules/@intlify/shared": {
-      "version": "9.11.0",
-      "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.11.0.tgz",
-      "integrity": "sha512-KHSNgi7sRjmSm7aD8QH8WFt9VfKaekJuJ473opbJlkGY3EDnDUU8ikIhG8PbasQbgNvbY3m3tWNGqk2omIdwMA==",
+      "version": "9.13.1",
+      "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.13.1.tgz",
+      "integrity": "sha512-u3b6BKGhE6j/JeRU6C/RL2FgyJfy6LakbtfeVF8fJXURpZZTzfh3e05J0bu0XPw447Q6/WUp3C4ajv4TMS4YsQ==",
       "engines": {
         "node": ">= 16"
       }
@@ -1649,12 +1649,12 @@
       }
     },
     "node_modules/vue-i18n": {
-      "version": "9.11.0",
-      "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.11.0.tgz",
-      "integrity": "sha512-vU4gY6lu8Pdfs9BgKGiDAJmFDf88cceR47KcSB0VW4xJzUrXR/7qwqM7A8dQ2nedhoIDxoOm5Ro4pFd2KvJqbA==",
+      "version": "9.13.1",
+      "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.13.1.tgz",
+      "integrity": "sha512-mh0GIxx0wPtPlcB1q4k277y0iKgo25xmDPWioVVYanjPufDBpvu5ySTjP5wOrSvlYQ2m1xI+CFhGdauv/61uQg==",
       "dependencies": {
-        "@intlify/core-base": "9.11.0",
-        "@intlify/shared": "9.11.0",
+        "@intlify/core-base": "9.13.1",
+        "@intlify/shared": "9.13.1",
         "@vue/devtools-api": "^6.5.0"
       },
       "engines": {
@@ -1960,27 +1960,27 @@
       "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A=="
     },
     "@intlify/core-base": {
-      "version": "9.11.0",
-      "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.11.0.tgz",
-      "integrity": "sha512-cveOqAstjLZIiyatcP/HrzrQ87cZI8ScPQna3yvoM8zjcjcIRK1MRvmxUNlPdg0rTNJMZw7rixPVM58O5aHVPA==",
+      "version": "9.13.1",
+      "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.13.1.tgz",
+      "integrity": "sha512-+bcQRkJO9pcX8d0gel9ZNfrzU22sZFSA0WVhfXrf5jdJOS24a+Bp8pozuS9sBI9Hk/tGz83pgKfmqcn/Ci7/8w==",
       "requires": {
-        "@intlify/message-compiler": "9.11.0",
-        "@intlify/shared": "9.11.0"
+        "@intlify/message-compiler": "9.13.1",
+        "@intlify/shared": "9.13.1"
       }
     },
     "@intlify/message-compiler": {
-      "version": "9.11.0",
-      "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.11.0.tgz",
-      "integrity": "sha512-x31Gl7cscnoI4UUY1yaIy8e7vVMVW1VVlTXZz4SIHKqoSEUkfmgqK8NAx1e7RcoHEbICR7uyCbud0ZL1s4OGXQ==",
+      "version": "9.13.1",
+      "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.13.1.tgz",
+      "integrity": "sha512-SKsVa4ajYGBVm7sHMXd5qX70O2XXjm55zdZB3VeMFCvQyvLew/dLvq3MqnaIsTMF1VkkOb9Ttr6tHcMlyPDL9w==",
       "requires": {
-        "@intlify/shared": "9.11.0",
+        "@intlify/shared": "9.13.1",
         "source-map-js": "^1.0.2"
       }
     },
     "@intlify/shared": {
-      "version": "9.11.0",
-      "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.11.0.tgz",
-      "integrity": "sha512-KHSNgi7sRjmSm7aD8QH8WFt9VfKaekJuJ473opbJlkGY3EDnDUU8ikIhG8PbasQbgNvbY3m3tWNGqk2omIdwMA=="
+      "version": "9.13.1",
+      "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.13.1.tgz",
+      "integrity": "sha512-u3b6BKGhE6j/JeRU6C/RL2FgyJfy6LakbtfeVF8fJXURpZZTzfh3e05J0bu0XPw447Q6/WUp3C4ajv4TMS4YsQ=="
     },
     "@jridgewell/sourcemap-codec": {
       "version": "1.4.15",
@@ -2771,12 +2771,12 @@
       }
     },
     "vue-i18n": {
-      "version": "9.11.0",
-      "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.11.0.tgz",
-      "integrity": "sha512-vU4gY6lu8Pdfs9BgKGiDAJmFDf88cceR47KcSB0VW4xJzUrXR/7qwqM7A8dQ2nedhoIDxoOm5Ro4pFd2KvJqbA==",
+      "version": "9.13.1",
+      "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.13.1.tgz",
+      "integrity": "sha512-mh0GIxx0wPtPlcB1q4k277y0iKgo25xmDPWioVVYanjPufDBpvu5ySTjP5wOrSvlYQ2m1xI+CFhGdauv/61uQg==",
       "requires": {
-        "@intlify/core-base": "9.11.0",
-        "@intlify/shared": "9.11.0",
+        "@intlify/core-base": "9.13.1",
+        "@intlify/shared": "9.13.1",
         "@vue/devtools-api": "^6.5.0"
       }
     },
diff --git a/UI-Project/package.json b/UI-Project/package.json
index b816c15..6cade56 100644
--- a/UI-Project/package.json
+++ b/UI-Project/package.json
@@ -18,7 +18,7 @@
     "sortablejs": "^1.15.1",
     "sweetalert2": "^11.10.7",
     "vue": "^3.3.4",
-    "vue-i18n": "^9.11.0",
+    "vue-i18n": "^9.13.1",
     "vue-router": "^4.2.4",
     "vxe-table": "^4.5.15",
     "xe-utils": "^3.5.14",
diff --git a/UI-Project/src/lang/LanguageMixin.js b/UI-Project/src/lang/LanguageMixin.js
index 39a6488..5a90328 100644
--- a/UI-Project/src/lang/LanguageMixin.js
+++ b/UI-Project/src/lang/LanguageMixin.js
@@ -1,14 +1,14 @@
 export default {
-    created() {
-      const localStorageLang = localStorage.getItem('preferredLanguage');
-      if (localStorageLang) {
-        this.$i18n.locale = localStorageLang;
-      }
-    },
-    methods: {
-      switchLanguage(lang) {
-        this.$i18n.locale = lang;
-        localStorage.setItem('preferredLanguage', lang);
-      }
+  created() {
+    const localStorageLang = localStorage.getItem('preferredLanguage');
+    if (localStorageLang) {
+      this.$i18n.locale = localStorageLang;
     }
-  }
\ No newline at end of file
+  },
+  methods: {
+    switchLanguage(lang) {
+      this.$i18n.locale = lang;
+      localStorage.setItem('preferredLanguage', lang);
+    }
+  }
+}
\ No newline at end of file
diff --git a/UI-Project/src/lang/i18n.js b/UI-Project/src/lang/i18n.js
index c582ee5..080bd7c 100644
--- a/UI-Project/src/lang/i18n.js
+++ b/UI-Project/src/lang/i18n.js
@@ -1,9 +1,9 @@
 // i18n.js
-
+ 
 import { createI18n } from 'vue-i18n'
 import zhCn from './lang/locales/zh-CN.json'
 import enUs from './lang/locales/en-US.json'
-
+ 
 const i18n = createI18n({
   locale: 'zh-CN', // 璁剧疆榛樿璇█
   messages: {
@@ -11,5 +11,5 @@
     'en-US': enUs
   }
 })
-
-export default i18n
+ 
+export default i18n
\ No newline at end of file
diff --git a/UI-Project/src/main.js b/UI-Project/src/main.js
index 41bf9c3..fe656ab 100644
--- a/UI-Project/src/main.js
+++ b/UI-Project/src/main.js
@@ -1,5 +1,5 @@
 import './assets/main.css'
-
+ 
 import { createApp } from 'vue'
 import { createPinia } from 'pinia'
 import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
@@ -11,8 +11,8 @@
 import VXETable from 'vxe-table'
 import 'vxe-table/lib/style.css'
 //  import i18n from './lang/i18n' 
-
-
+ 
+ 
 const app = createApp(App)
 const pinia = createPinia()
 pinia.use(piniaPluginPersistedstate )
@@ -23,5 +23,5 @@
 app.use(ElementPlus,{
     locale: zhCn,
 })
-
-app.mount('#app')
+ 
+app.mount('#app')
\ No newline at end of file
diff --git a/UI-Project/src/views/Caching/cachingbefore.vue b/UI-Project/src/views/Caching/cachingbefore.vue
index 5d9d157..5b9d2a2 100644
--- a/UI-Project/src/views/Caching/cachingbefore.vue
+++ b/UI-Project/src/views/Caching/cachingbefore.vue
@@ -27,31 +27,6 @@
           }
           });
 
-//   const getTableRow = (row,type) =>{
-//   switch (type) {
-//     case 'delete':{
-//       let flowData = ref({
-//         id:0,
-//         slot:row.slot
-//       })
-//       request.post("/cacheGlass/edgStorageCage/edgStorageCageGlass",flowData.value).then((res) => {
-//         if(res.code==200){
-//           ElMessage.success(t('searchOrder.msgDeleteSuccess'))
-//           router.push({path:'/main/delivery/selectDelivery',query:{random:Math.random()}})
-//         }else{
-//           ElMessage.warning(res.msg)
-//           router.push("/login")
-//         }
-//       })
-
-//       return
-//     }
-//   }
-// }
-// let slots = ref({
-//   id:0,
-//    slot: slot.value
-// })
 const open = async(row) => {  
   try {  
     const confirmResult = await ElMessageBox.confirm(  
@@ -65,16 +40,17 @@
     );  
     if (confirmResult === 'confirm') {  
       // 鐢ㄦ埛鐐瑰嚮浜嗏�滄槸鈥濓紝鐜板湪璋冪敤鍒犻櫎鎺ュ彛  
-      const deleteResponse = await request.post("/cacheGlass/edgStorageCage/edgStorageCageGlass", {
-        id: row.id,
+      var url="/cacheGlass/edgStorageCage/edgStorageCageGlass?edgStorageCageId="+row.id;
+      console.log(url);
+      const response = await request.post(url, {
         esdId: row.esdId
     })
-      if (response.code == 200) {  
-        // 鍒犻櫎鎴愬姛锛屾偍鍙互鏍规嵁闇�瑕佸鐞嗘垚鍔熺殑鎯呭喌  
-        alert('鍒犻櫎鎴愬姛锛�');  
+    if (response.code === 200) {
+      ElMessage.success(response.message);
       } else {  
         // 鍒犻櫎澶辫触锛屾偍鍙互澶勭悊閿欒鎴栨樉绀洪敊璇俊鎭粰鐢ㄦ埛  
-        alert('鍒犻櫎澶辫触锛�' + deleteResponse.message); 
+      ElMessage.error(response.msg);
+        // alert('鍒犻櫎澶辫触锛�' + deleteResponse.message); 
       }  
     }  
   } catch (error) {  
@@ -82,56 +58,6 @@
     console.error('鍙戠敓閿欒:', error);  
   }  
 };  
-// const open = () => {
-//   ElMessageBox.confirm(
-//     '鏄惁鍒犻櫎璇ユ潯淇℃伅?',
-//     '鎻愮ず',
-//     {
-//       confirmButtonText: '鏄�',
-//       cancelButtonText: '鍙栨秷',
-//       type: 'warning',
-//     }
-//   )
-//     .then(() => {
-//       ElMessage({
-//         type: 'success',
-//         message: '鍒犻櫎鎴愬姛锛�',
-//       })
-//     })
-//     .catch(() => {
-//       ElMessage({
-//         type: 'info',
-//         message: '鍒犻櫎澶辫触',
-//       })
-//     })
-// }
-// 鍒犻櫎
-// const handleBindRacka = (row) => {
-//   adda.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
-// };
-// // 鍒犻櫎
-// const handleConfirma = async () => {
-//   try {
-//       window.localStorage.setItem('slot', res.data.slot)
-//     let slot = window.localStorage.getItem('slot')
-//     const response = await request.post('/cacheGlass/edgStorageCage/edgStorageCageGlass', {
-//       slot: slot.value,
-//       id: 0
-//     }); 
- 
-//     if (response.code == 200) {
-//       // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
-//       ElMessage.success(response.message);
-//       adda.value = false;
-//     } else {
-//       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
-//       ElMessage.error(response.msg);
-//     }
-//   } catch (error) {
-//     // 澶勭悊閿欒
-//     console.error(error);
-//   }
-// };
 
 const gridOptions = reactive({
   border:  "full",//琛ㄦ牸鍔犺竟妗�
diff --git a/UI-Project/src/views/Caching/cachingun.vue b/UI-Project/src/views/Caching/cachingun.vue
index 5a82915..ba1686f 100644
--- a/UI-Project/src/views/Caching/cachingun.vue
+++ b/UI-Project/src/views/Caching/cachingun.vue
@@ -27,35 +27,10 @@
           }
           });
 
-//   const getTableRow = (row,type) =>{
-//   switch (type) {
-//     case 'delete':{
-//       let flowData = ref({
-//         id:0,
-//         slot:row.slot
-//       })
-//       request.post("/cacheGlass/edgStorageCage/edgStorageCageGlass",flowData.value).then((res) => {
-//         if(res.code==200){
-//           ElMessage.success(t('searchOrder.msgDeleteSuccess'))
-//           router.push({path:'/main/delivery/selectDelivery',query:{random:Math.random()}})
-//         }else{
-//           ElMessage.warning(res.msg)
-//           router.push("/login")
-//         }
-//       })
-
-//       return
-//     }
-//   }
-// }
-// let slots = ref({
-//   id:0,
-//    slot: slot.value
-// })
 const open = async(row) => {  
   try {  
     const confirmResult = await ElMessageBox.confirm(  
-      '鏄惁鍒犻櫎璇ユ潯淇℃伅?',  
+      '鏄惁鎶ョ己璇ユ潯淇℃伅?',  
       '鎻愮ず',  
       {  
         confirmButtonText: '鏄�',  
@@ -65,74 +40,24 @@
     );  
     if (confirmResult === 'confirm') {  
       // 鐢ㄦ埛鐐瑰嚮浜嗏�滄槸鈥濓紝鐜板湪璋冪敤鍒犻櫎鎺ュ彛  
-      const deleteResponse = await request.post("/cacheGlass/edgStorageCage/edgStorageCageGlass", {
-        id:0,
-        slot: row.slot
+      var url="/cacheGlass/edgStorageCage/edgStorageCageGlass?edgStorageCageId="+row.id;
+      console.log(url);
+      const response = await request.post(url, {
+        esdId: row.esdId
     })
-      if (response.code == 200) {  
-        // 鍒犻櫎鎴愬姛锛屾偍鍙互鏍规嵁闇�瑕佸鐞嗘垚鍔熺殑鎯呭喌  
-        alert('鍒犻櫎鎴愬姛锛�');  
+    if (response.code === 200) {
+      ElMessage.success(response.message);
       } else {  
         // 鍒犻櫎澶辫触锛屾偍鍙互澶勭悊閿欒鎴栨樉绀洪敊璇俊鎭粰鐢ㄦ埛  
-        alert('鍒犻櫎澶辫触锛�' + deleteResponse.message);  
+      ElMessage.error(response.msg);
+        // alert('鍒犻櫎澶辫触锛�' + deleteResponse.message); 
       }  
     }  
   } catch (error) {  
     // 澶勭悊鍙兘鍑虹幇鐨勯敊璇紝姣斿 ElMessageBox 鎶涘嚭鐨勫紓甯哥瓑  
     console.error('鍙戠敓閿欒:', error);  
   }  
-};  
-// const open = () => {
-//   ElMessageBox.confirm(
-//     '鏄惁鍒犻櫎璇ユ潯淇℃伅?',
-//     '鎻愮ず',
-//     {
-//       confirmButtonText: '鏄�',
-//       cancelButtonText: '鍙栨秷',
-//       type: 'warning',
-//     }
-//   )
-//     .then(() => {
-//       ElMessage({
-//         type: 'success',
-//         message: '鍒犻櫎鎴愬姛锛�',
-//       })
-//     })
-//     .catch(() => {
-//       ElMessage({
-//         type: 'info',
-//         message: '鍒犻櫎澶辫触',
-//       })
-//     })
-// }
-// 鍒犻櫎
-// const handleBindRacka = (row) => {
-//   adda.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
-// };
-// // 鍒犻櫎
-// const handleConfirma = async () => {
-//   try {
-//       window.localStorage.setItem('slot', res.data.slot)
-//     let slot = window.localStorage.getItem('slot')
-//     const response = await request.post('/cacheGlass/edgStorageCage/edgStorageCageGlass', {
-//       slot: slot.value,
-//       id: 0
-//     }); 
- 
-//     if (response.code == 200) {
-//       // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
-//       ElMessage.success(response.message);
-//       adda.value = false;
-//     } else {
-//       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
-//       ElMessage.error(response.msg);
-//     }
-//   } catch (error) {
-//     // 澶勭悊閿欒
-//     console.error(error);
-//   }
-// };
-
+};   
 const gridOptions = reactive({
   border:  "full",//琛ㄦ牸鍔犺竟妗�
   keepSource: true,//淇濇寔婧愭暟鎹�
diff --git a/UI-Project/src/views/Identify/identify.vue b/UI-Project/src/views/Identify/identify.vue
index 5e2bc03..c8c0ce0 100644
--- a/UI-Project/src/views/Identify/identify.vue
+++ b/UI-Project/src/views/Identify/identify.vue
@@ -7,28 +7,31 @@
     > 
     <div  
       v-for="(rect, index) in adjustedRects"  
-      :key="index"  
+      :key="rect.glass_id"  
       class="rect"  
-      @click="handleBind"
-      :style="{ position: 'absolute', top: `${rect.y_axis}px`, left: `${rect.x_axis}px`, width: `${rect.width}px`, height: `${rect.height}px` }"  
+      @click="showDialog(rect.glass_id)"  
+      :style="{ position: 'absolute', 
+      top: `${rect.y_axis}px`, left: `${rect.x_axis}px`, width: `${rect.width}px`, height: `${rect.height}px`,
+      backgroundColor: getRectColor(rect.glass_state)
+       }"  
     >
      <!-- 绠ご -->  
      <!-- <div id="arrow"></div>  
      <div id="line"></div>   -->
      <!-- <div  class="centered-text" >NG24030401B01</div> -->
      <div  class="centered-text">
-    <div>{{ rect.process_id }}</div>  
+    <div>{{ rect.process_id }}</div>
     <div style="margin-top: 50px;margin-left: -85px;">{{ rect.width }}*{{ rect.height }}</div>  
   </div>
   </div> 
   <!-- 鐐瑰嚮寮瑰嚭 -->
   <el-dialog v-model="blind" top="30vh" width="15%" style="text-align: center;">
     <!-- <template #footer> -->
-      <!-- <div id="dialog-footer"> -->
-        <el-button type="warning" plain :icon="Delete" @click="handle"  style="width: 120px;margin-left: 10px;">
+      <!-- <div id="dialog-footer"> --> 
+        <el-button type="warning" plain :icon="Delete" @click="handleDamage(currentGlassId)"  style="width: 120px;margin-left: 10px;">
           鐮存崯
         </el-button>
-        <el-button  type="danger" plain @click="blind = false" style="width: 120px;margin-top: 10px;">
+        <el-button  type="danger" plain @click="handleManualTake(currentGlassId)" style="width: 120px;margin-top: 10px;">
           <el-icon class="el-icon--right"><Upload /></el-icon>
           浜哄伐鎷胯蛋</el-button>
       <!-- </div> -->
@@ -42,18 +45,25 @@
   
 <script setup lang="ts">  
 import { Delete, Upload } from '@element-plus/icons-vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
 import { ref, onMounted } from 'vue';  
 import request from "@/utils/request"
 const blind = ref(false)
 const olWidth = ref(); 
 const olHeight = ref();
 const process_id = ref(); // 鐢ㄤ簬瀛樺偍process_id鐨勫搷搴斿紡寮曠敤 
+const glass_id = ref();
 // const rects = ref([]); // 鐢ㄤ簬瀛樺偍鐭╁舰鏁版嵁鐨勫搷搴斿紡寮曠敤  
+const currentGlassId = ref(null); // 瀛樺偍褰撳墠鐐瑰嚮鐭╁舰鐨� glass_id  
 const adjustedRects = ref([]);
-const handleBind = (row) => {
- 
-  blind.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
-};
+// const handleBind = (row) => {
+//   blind.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
+// };
+// 鏄剧ず瀵硅瘽妗嗗苟璁剧疆褰撳墠 glass_id  
+function showDialog(glassId: number) {  
+  currentGlassId.value = glassId;  
+  blind.value = true;  
+}  
 onMounted(async () => {  
   try {  
     const response = await request.post('/cacheGlass/taskCache/currentCutTerritory'); // 鏇挎崲涓轰綘鐨凙PI绔偣  
@@ -61,10 +71,11 @@
       // const process_id = response.data[0].process_id
       const rawRects = response.data; // 璁剧疆鐭╁舰鏁版嵁  
       console.log(response.data);
-      const { olWidth: newolWidth, olHeight: newolHeight, process_id: newprocess_id  } = response.data; // 鑾峰彇灏哄  
+      const { olWidth: newolWidth, olHeight: newolHeight, process_id: newprocess_id ,glass_id:newglass_id } = response.data; // 鑾峰彇灏哄  
       olWidth.value = newolWidth; // 璁剧疆瀹瑰櫒瀹藉害  
       olHeight.value = newolHeight; // 璁剧疆瀹瑰櫒楂樺害  
       process_id.value = newprocess_id;  
+      glass_id.value = newglass_id;
 
       adjustedRects.value = rawRects.map(rect => ({  
         ...rect, // 澶嶅埗鍘熷瀵硅薄鐨勫叾浠栧睘鎬�  
@@ -72,7 +83,9 @@
         y_axis: (rect.y_axis*100) * 0.005,
         width: (rect.width*100) * 0.004 ,
         height:( rect.height*100) * 0.004 ,
+        glass_state: rect.glass_state
       }));  
+      
         console.log(rect);
 
       //   console.log( (rect.width*100) / 300 );
@@ -84,13 +97,81 @@
     // console.error('Error fetching rectangles :', error);
     console.error('Error fetching rects :', error);  
   }  
-});  
+}); 
+// 鐮存崯
+const handleDamage = async () => {
+  try  {
+    var url="/cacheGlass/taskCache/identControls?identId="+currentGlassId.value+'&controlsId='+201;
+      console.log(url);
+      const response = await request.post(url)
+  // const response = await request.post('/cacheGlass/taskCache/identControls', {
+  //   identId: currentGlassId.value,
+  //   controlsId: 201,
+  //   })
+    if (response.code == 200) {
+      // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
+      ElMessage.success(response.message);
+      // window.location.reload() 
+      blind.value = false;
+    } else {
+      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+      ElMessage.error(response.msg);
+    }
+}
+catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+}
+// // 浜哄伐鎷胯蛋
+const handleManualTake = async () => {
+  try  {
+    var url="/cacheGlass/taskCache/identControls?identId="+currentGlassId.value+'&controlsId='+200;
+      console.log(url);
+      const response = await request.post(url)
+  // const response = await request.post('/cacheGlass/taskCache/identControls', {
+  //   identId: currentGlassId.value,
+  //   controlsId: 200,
+  //   })
+    if (response.code == 200) {
+      // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
+      ElMessage.success(response.message);
+      // window.location.reload() 
+      blind.value = false;
+    } else {
+      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+      ElMessage.error(response.msg);
+    }
+}
+catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+}
+function getRectColor(state: number): string {  
+  switch (state) {  
+    case 0:  
+      return '#e1f3d8';  
+    case 100:  
+      return '#c8c9cc';  
+    case 110:  
+      return '#b3e19d';  
+    case 120:  
+      return '#f89898';  
+    case 200: 
+      return 'lightblue';  
+    case 201:  
+      return '#f3d19e';  
+    default:  
+      return '#911005'; // 榛樿棰滆壊  
+  }  
+}  
 </script>  
   
 <style scoped>  
 .rect {  
   border: 1px solid black; /* 璁剧疆鐭╁舰鐨勮竟妗� */  
-  background-color: lightblue; /* 璁剧疆鐭╁舰鐨勮儗鏅壊 */  
+  /* background-color: lightblue; 璁剧疆鐭╁舰鐨勮儗鏅壊   */
 } 
 .centered-text {
   /* 璁剧疆鏂囧瓧灞呬腑鏍峰紡 */  
diff --git a/UI-Project/src/views/LoginView.vue b/UI-Project/src/views/LoginView.vue
index 366ed5a..40d2d9b 100644
--- a/UI-Project/src/views/LoginView.vue
+++ b/UI-Project/src/views/LoginView.vue
@@ -5,21 +5,21 @@
 import {ElMessage} from 'element-plus'
 import request from '@/utils/request'
 import userInfo from '@/stores/userInfo'
-
+ 
 const store = userInfo()
 let ruleFormRef = ref<FormInstance>()
 const router = useRouter()
 const route = useRoute()
-
+ 
 const userForm = reactive({
   userName: '',
   password: '',
 })
-
+ 
 if (typeof route.query.id != 'undefined') {
   userForm.userId = <string>route.query.id
 }
-
+ 
 const validateUser = (rule: any, value: any, callback: any) => {
   if (value === '') {
     callback(new Error('璇疯緭鍏ヤ綘鐨勮处鍙�'))
@@ -27,7 +27,7 @@
     callback()
   }
 }
-
+ 
 const validatePass = (rule: any, value: any, callback: any) => {
   if (value === '') {
     callback(new Error('璇疯緭鍏ヤ綘鐨勫瘑鐮�'))
@@ -35,12 +35,12 @@
     callback()
   }
 }
-
+ 
 const rules = reactive<FormRules<typeof userForm>>({
   userId: [{validator: validateUser, trigger: 'blur'}],
   pass: [{validator: validatePass, trigger: 'blur'}],
 })
-
+ 
 //鐧婚檰鏂规硶
 const submitForm = (formEl: FormInstance | undefined) => {
   if (!formEl) return
@@ -54,7 +54,7 @@
             if (res['code'] == 200) {
               store.$patch({user: res.data})
               console.log(res.data)
-
+ 
               router.push('/main')
               ElMessage.success(`鐧诲綍鎴愬姛`)
             } else {
@@ -77,16 +77,16 @@
     }
   })
 }
-
+ 
 function register() {
   router.push({
     path: '/register',
   })
 }
-
+ 
 let loginLoadings = ref(false)
 let registerLoadings = ref(false)
-
+ 
 const keyDown = (e) => {
   // 鍥炶溅鍒欐墽琛岀櫥褰曟柟娉� enter閿殑ASCII鏄�13
   if (e.keyCode == 13 || e.keyCode == 100) {
@@ -100,7 +100,7 @@
   window.removeEventListener('keydown', keyDown)
 })
 </script>
-
+ 
 <template>
   <div class="mainDiv">
     <div id="main-login">
@@ -155,29 +155,29 @@
                          @click="register"
                          plain>娉ㄥ唽
               </el-button>
-
+ 
             </el-form-item>
           </div>
         </el-form>
       </div>
     </div>
-
+ 
   </div>
 </template>
-
+ 
 <style scoped>
 .mainDiv {
   overflow: hidden;
   min-width: 718px;
   background-image: url('../../src/assets/background.jpg');
 }
-
+ 
 #main-login {
   margin: 150px auto 0 auto;
   height: 70vh;
   width: 80vw;
 }
-
+ 
 #img-div {
   width: 55%;
   height: 100%;
@@ -186,12 +186,12 @@
   align-items: center;
   float: left;
 }
-
+ 
 #img-pic {
   max-height: 90%;
   max-width: 100%;
 }
-
+ 
 #div-login {
   margin-top: 5%;
   /* margin-top: 20%; */
@@ -204,22 +204,22 @@
   border-radius: 4px;
   box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0), 0 6px 5px 0 rgba(0, 0, 0, 0.19);
 }
-
+ 
 #center {
   margin-top: -30px;
 }
-
+ 
 .el-form {
   width: 60%;
   margin: 20% auto auto;
 }
-
+ 
 #submitForm {
   display: flex;
   justify-content: space-evenly;
   margin-top: 2rem;
 }
-
+ 
 :deep(.el-form-item__content) {
   flex: unset;
 }
diff --git a/UI-Project/src/views/Returns/returns.vue b/UI-Project/src/views/Returns/returns.vue
index 49db7d7..c917ca0 100644
--- a/UI-Project/src/views/Returns/returns.vue
+++ b/UI-Project/src/views/Returns/returns.vue
@@ -5,7 +5,6 @@
 const router = useRouter()
 import type { TableColumnCtx } from 'element-plus'
  
-// import { ref } from 'vue'
 import { ElMessage, ElMessageBox } from 'element-plus'
 const dialogFormVisible = ref(false)
 const blind = ref(false)
@@ -17,14 +16,14 @@
 const flakea = ref(false)
 // const value = ref('')
 import request from "@/utils/request"
- 
+const ida = ref(null); 
 import { ref, onMounted } from "vue";
 // import http from "@/http/index";
  
 let ruleForm = ref({
-  // engineeringId: '',
+  projectNo: '',
   workstationId: '',
-  patternHeigth: '',
+  patternHeight: '',
   patternWidth: '',
   filmsId: '',
   patternThickness: '',
@@ -33,7 +32,7 @@
 })
 const tableDataa = ref([])
   
-
+ 
   const tableData = reactive([]);
 //   let filterData = ref({
 //   damageDetails: {
@@ -61,27 +60,52 @@
     ElMessage.error('鑾峰彇琛ㄦ牸鏁版嵁澶辫触锛岃閲嶈瘯');
   }
 };
-request.get("/loadGlass/LoadGlass/list").then((res) => {
-          if (res.code == 200) {
-          console.log(res.data);
-          tableDataa.value = res.data
-      window.localStorage.setItem('patternWidth', res.data.patternWidth)
-      window.localStorage.setItem('workstationId', res.data.workstationId)
-      let workstationIda = window.localStorage.getItem('workstationId')
-      let patternWidth = window.localStorage.getItem('patternWidth')
-      if (patternWidth !== '' || workstationIda == '1') {
-      flake.value = true
-    } else if (patternWidth !== '' || workstationIda == '2') {
-      flakea.value = true
+   request.get("/loadGlass/LoadGlass/list").then((res) => {
+    if (res.code === 200) {
+     console.log(res.data);
+     tableDataa.value = res.data;
+   
+    if (tableDataa.value.length === 2) {
+     if (tableDataa.value[0].patternWidth > 0) {
+      flake.value = true;
+     }
+ 
+    if (tableDataa.value[1].patternWidth > 0) {
+    flakea.value = true;
     }
-          } else {
-          ElMessage.warning(res.msg)
-          // router.push("/login")
-          }
-          });
+    }
+    } else {
+    ElMessage.warning(res.msg);
+    // router.push("/login");
+    }
+   });
+// request.get("/loadGlass/LoadGlass/list").then((res) => {
+//       window.localStorage.setItem('patternWidth', res.data.patternWidth)
+//       window.localStorage.setItem('workstationId', res.data.workstationId)
+//           if (res.code == 200) {
+//           console.log(res.data);
+//           tableDataa.value = res.data
+//           console.log(res.data.patternWidth);
+          
+//       let workstationId = window.localStorage.getItem('workstationId')
+//       let patternWidth = window.localStorage.getItem('patternWidth')
+//       if (patternWidth !== '' || workstationId == '1') {
+//       flake.value = true
+//     } else if (patternWidth !== '' || workstationId == '2') {
+//       flakea.value = true
+//     }
+//           } else {
+//           ElMessage.warning(res.msg)
+//           // router.push("/login")
+//           }
+//           });
 //瀹氫箟鎺ユ敹鍔犺浇琛ㄥご涓嬫媺鏁版嵁
 const titleSelectJson = ref({
   processType: [],
+ 
+})
+const titleSelectJsona = ref({
+  processTypea: [],
  
 })
 // const getBasicData = ref({
@@ -108,6 +132,7 @@
 };  
 // 鍝嶅簲寮忔暟鎹�  
 const selectedProjectNo = ref(''); // 褰撳墠閫変腑鐨勫伐绋嬪彿  
+const selectedProjectNoa = ref(''); // 褰撳墠閫変腑鐨勫伐绋嬪彿  
 const options = ref<any[]>([]); // 涓嬫媺閫夐」鍒楄〃  
   
 // 璋冪敤鎺ュ彛鑾峰彇閫夐」鏁版嵁鐨勫嚱鏁�  
@@ -121,14 +146,8 @@
     
     if (response.code == 200) {  
     titleSelectJson.value.processType = response.data;
-
-    //   titleSelectJson.value.processType = response.data(item => ({  
-    //   // options.value = response.data.data.map(item => ({  
-    //     value: item.projectNo,  
-    //     // label: item.id // 鍋囪鍚庣杩斿洖鐨勬暟鎹腑鏈�  瀛楁浣滀负鏄剧ず鏍囩  
-    //   }));  
     console.log(response.data);
-
+ 
     } else {  
       ElMessage.warning(response.data);  
     }  
@@ -136,7 +155,22 @@
     console.error('Error fetching options:', error);  
   }  
 };  
-  
+  // 寮�濮嬩笂鐗囦笅鎷夐��  
+const fetchOptionsa = async (queryString: string) => {  
+  try {  
+    // 鍙戦�佽姹傚埌鍚庣鎺ュ彛  
+    const response = await request.get('/loadGlass/engineering/engineering/selectTask');  
+    if (response.code == 200) {  
+    titleSelectJsona.value.processTypea = response.data;
+    console.log(response.data);
+ 
+    } else {  
+      ElMessage.warning(response.data);  
+    }  
+  } catch (error) {  
+    console.error('Error fetching options:', error);  
+  }  
+}; 
 // 澶勭悊鐢ㄦ埛杈撳叆鍙樺寲鐨勬柟娉�  
 const handleInputChange = async (value: string) => {  
   if (value) {  
@@ -145,13 +179,23 @@
     options.value = []; // 娓呯┖閫夐」鍒楄〃  
   }  
 };  
-  
+  // 澶勭悊鐢ㄦ埛杈撳叆鍙樺寲鐨勬柟娉�  
+const handleInputChangea = async (value: string) => {  
+  if (value) {  
+    await fetchOptionsa(value);  
+  } else {  
+    options.value = []; // 娓呯┖閫夐」鍒楄〃  
+  }  
+};  
 // 鍒濆鍖栧姞杞芥暟鎹紙濡傛灉闇�瑕侊級  
 onMounted(() => {  
   // 鍦ㄧ粍浠舵寕杞藉悗璋冪敤 fetchOptions('') 鏉ュ姞杞藉垵濮嬫暟鎹紙濡傛灉闇�瑕侊級  
   fetchOptions('');  
 });  
-  
+onMounted(() => {  
+  // 鍦ㄧ粍浠舵寕杞藉悗璋冪敤 fetchOptions('') 鏉ュ姞杞藉垵濮嬫暟鎹紙濡傛灉闇�瑕侊級  
+  fetchOptionsa('');  
+}); 
 // const billall  = () => {
 //   request.post("/loadGlass/optimizeProject/listByState", requestData)
 //     .then((res: any) => {
@@ -164,32 +208,43 @@
 // }
 const user = ref('');
 // 瀹氫箟琛ㄥご涓婁紶鏁版嵁
-let titleUploadData = ref({
-  projectNo:'',
-})
-// const engineeringId = ref('');
+// let titleUploadData = ref({
+//   projectNo:'',
+// })
+const projectNo = ref('');
 const workstationId = ref('');
-const patternHeigth = ref('');
+const id = ref('');
+const patternHeight = ref('');
 const patternWidth = ref('');
 const filmsId = ref('');
 const patternThickness = ref('');
 const number = ref('');
- 
+// 娣诲姞
+const handleBindRack = (row) => {
+  workstationId.value = row.workstationId; // 鍋囪rackNumber鏄灦鍙峰瓧娈电殑灞炴�у悕
+  ida.value = row.id;
+  console.log(ida.value);
+  add.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
+};
 // 娣诲姞
     const handleConfirm = async () => {
-  try {
+  console.log(ida.value);
+      // console.log('id.value:', id.value);
+  if ((ida.value === 2 || ida.value === 4) && (parseInt(patternHeight.value, 10) >= 2700 )) {  
+    try {
     const response = await request.post('/loadGlass/LoadGlass/updateGlassMessage', {
+      id: workstationId.value,
       workstationId: workstationId.value,
-      patternHeigth: patternHeigth.value,
+      patternHeight: patternHeight.value,
       patternWidth: patternWidth.value,
       filmsId: filmsId.value,
       patternThickness: patternThickness.value,
       number: number.value
     }); 
- 
     if (response.code == 200) {
       // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
       ElMessage.success(response.message);
+      window.location.reload() 
       add.value = false;
       window.localStorage.setItem('workstationId', response.data.workstationId)
       let workstationId = window.localStorage.getItem('workstationId')
@@ -202,17 +257,59 @@
       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
       ElMessage.error(response.msg);
     }
-  } catch (error) {
-    // 澶勭悊閿欒
-    console.error(error);
-  }
-};
+  } catch (error) {  
+      // 澶勭悊璇锋眰閿欒  
+      console.error(error);  
+      alert('璇锋眰澶辫触锛岃绋嶅悗鍐嶈瘯锛�');  
+    }  
+  }  
+  else if( ida.value === 1 || ida.value === 3){
+      try {
+    const response = await request.post('/loadGlass/LoadGlass/updateGlassMessage', {
+      id: workstationId.value,
+      workstationId: workstationId.value,
+      patternHeight: patternHeight.value,
+      patternWidth: patternWidth.value,
+      filmsId: filmsId.value,
+      patternThickness: patternThickness.value,
+      number: number.value
+    }); 
+    if (response.code == 200) {
+      // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
+      ElMessage.success(response.message);
+      window.location.reload() 
+      add.value = false;
+      window.localStorage.setItem('workstationId', response.data.workstationId)
+      let workstationId = window.localStorage.getItem('workstationId')
+      if (workstationId == '1') {
+      flake.value = true
+    } else if (workstationId == '2'){
+      flakea.value = true
+    }
+    } else {
+      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+      ElMessage.error(response.msg);
+    }
+  } catch (error) {  
+      // 澶勭悊璇锋眰閿欒  
+      console.error(error);  
+      alert('璇锋眰澶辫触锛岃绋嶅悗鍐嶈瘯锛�');  
+    } 
+    }
+  else  {
+      ElMessage({
+        type: 'info',
+        message: '绗簩琛屽拰绗洓琛岀殑楂樺繀椤诲ぇ浜�2700鎵嶈兘淇濆瓨锛�',
+      })
+    }
+   
+};  
 // 鍒犻櫎
 const handleConfirma = async () => {
   try {
     const response = await request.post('/loadGlass/LoadGlass/updateGlassMessage', {
       workstationId: workstationId.value,
-      patternHeigth: 0,
+      patternHeight: 0,
       patternWidth: 0,
       filmsId: "",
       patternThickness: 0,
@@ -239,30 +336,20 @@
     console.error(error);
   }
 };
-// 寮�濮嬩笂鐗�
-const handle = async () => {
+// 閫夋嫨宸ョ▼纭
+const handleup = async () => {
   try  {
-  let engineeringId = window.localStorage.getItem('engineeringId')
-console.log(engineeringId);
-if (engineeringId !== '') {
-  const response = await request.post('/loadGlass/engineering/engineering/changeTask', {
-      engineeringId: engineeringId,
-      state: 1,
+  const response = await request.post('/loadGlass/up-patten-usage/saveUpPattenUsage', {
+    engineerId: selectedProjectNo.value,
     })
     if (response.code == 200) {
       // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
       ElMessage.success(response.message);
-      blind.value = false;
+      window.location.reload() 
+      dialogFormVisible.value = false;
     } else {
       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
       ElMessage.error(response.msg);
-    }
-  }
-    else  {
-      ElMessage({
-        type: 'info',
-        message: '宸ョ▼鍙蜂笉鑳戒负绌猴紒',
-      })
     }
 }
 catch (error) {
@@ -270,6 +357,58 @@
     console.error(error);
   }
 }
+// 寮�濮嬩笂鐗�
+const handle = async () => {
+  try  {
+  const response = await request.post('/loadGlass/engineering/engineering/changeTask', {
+    engineerId: selectedProjectNoa.value,
+    state: 1,
+    })
+    if (response.code == 200) {
+      // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
+      ElMessage.success(response.message);
+      window.location.reload() 
+      blind.value = false;
+    } else {
+      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+      ElMessage.error(response.msg);
+    }
+}
+catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+}
+// const handle = async () => {
+//   try  {
+//   let engineeringId = window.localStorage.getItem('engineeringId')
+// console.log(engineeringId);
+// if (engineeringId !== '') {
+//   const response = await request.post('/loadGlass/engineering/engineering/changeTask', {
+//       engineeringId: engineerId.va,
+//       state: 1,
+//     })
+//     if (response.code == 200) {
+//       // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
+//       ElMessage.success(response.message);
+//       blind.value = false;
+//     } else {
+//       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+//       ElMessage.error(response.msg);
+//     }
+//   }
+//     else  {
+//       ElMessage({
+//         type: 'info',
+//         message: '宸ョ▼鍙蜂笉鑳戒负绌猴紒',
+//       })
+//     }
+// }
+// catch (error) {
+//     // 澶勭悊閿欒
+//     console.error(error);
+//   }
+// }
 // 鏆傚仠
 const handlea = async () => {
   try  {
@@ -283,6 +422,7 @@
     if (response.code == 200) {
       // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
       ElMessage.success(response.message);
+      window.location.reload() 
       blinda.value = false;
     } else {
       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
@@ -301,7 +441,7 @@
     console.error(error);
   }
 }
-// 寮�濮嬩笂鐗�
+// 鍋滄浠诲姟
 const handleb = async () => {
   try  {
   let engineeringId = window.localStorage.getItem('engineeringId')
@@ -314,6 +454,7 @@
     if (response.code == 200) {
       // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
       ElMessage.success(response.message);
+      window.location.reload() 
       blindb.value = false;
     } else {
       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
@@ -333,7 +474,24 @@
   }
 }
 onMounted(fetchTableData);
- 
+function getStatusText(state: number) {  
+  switch (state) {  
+    case 0:  
+      return '绛夊緟涓�';  
+    case 1:  
+    case 2:  
+      return '涓婄墖涓�';  
+    case 100:  
+      return '宸插畬鎴�';  
+    default:  
+      return '鏈煡鐘舵��';  
+  }  
+}  
+  
+function getStatusType(state: number) {  
+  // 杩欓噷鍋囪鍙湁100鏃剁被鍨嬩笉鏄痵uccess锛屽叾浠栭兘鏄痵uccess  
+  return state === 100 ? 'info' : 'success'; // 鏍规嵁闇�瑕佽皟鏁寸被鍨�  
+}  
 // const open = () => {
 //   ElMessageBox.confirm(
 //     '鏄惁鍒犻櫎璇ユ潯淇℃伅?',
@@ -375,12 +533,7 @@
  
   blindb.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
 };
-// 娣诲姞
-const handleBindRack = (row) => {
-  workstationId.value = row.workstationId; // 鍋囪rackNumber鏄灦鍙峰瓧娈电殑灞炴�у悕
- 
-  add.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
-};
+
 // 鍒犻櫎
 const handleBindRacka = (row) => {
   workstationId.value = row.workstationId; // 鍋囪rackNumber鏄灦鍙峰瓧娈电殑灞炴�у悕
@@ -462,15 +615,39 @@
             min-width="80"
             prop="state"
           >
-          <template #default="scope">
-            <el-tag type="success" >{{ scope.row.state==1?"灏辩华":"鏈氨缁�"  }}</el-tag>
-          </template>
+          <template #default="scope">  
+        <el-tag :type="getStatusType(scope.row.state)">  
+          {{ getStatusText(scope.row.state) }}  
+        </el-tag>  
+      </template> 
+          <!-- <template #default="scope">
+            <el-tag type="success" >{{ scope.row.state==0?"绛夊緟涓�":"涓婄墖涓�"  }}</el-tag>
+          </template> -->
           </el-table-column>
     </el-table>
       </div>
       
     </el-card>
-  <el-dialog v-model="blind" top="30vh" width="25%" title="鏄惁寮�濮嬩笂鐗�?" >
+    <el-dialog v-model="blind" top="24vh" width="30%" title="鏄惁寮�濮嬩笂鐗囷紵" >
+    <div style="margin-left: 50px;margin-bottom: 10px;">
+      <el-form-item label="宸ョ▼鍙凤細" :required="true">
+        <el-select  
+           v-model="selectedProjectNoa"  
+           filterable  
+           clearable  
+           placeholder="璇烽�夋嫨宸ョ▼"  
+           style="width: 220px"  
+           @input="handleInputChangea"  
+         >  
+      <el-option  
+         v-for="item in titleSelectJsona['processTypea']"  
+         :key="item.id"  
+         :label="item.engineerId"  
+         :value="item.engineerId"  
+      />  
+    </el-select>  
+              </el-form-item>
+          </div>
     <template #footer>
       <div id="dialog-footer">
         <el-button type="primary" @click="handle">
@@ -480,6 +657,16 @@
       </div>
     </template>
   </el-dialog>
+  <!-- <el-dialog v-model="blind" top="30vh" width="25%" title="鏄惁寮�濮嬩笂鐗�?" >
+    <template #footer>
+      <div id="dialog-footer">
+        <el-button type="primary" @click="handle">
+          纭
+        </el-button>
+        <el-button @click="blind = false">鍙栨秷</el-button>
+      </div>
+    </template>
+  </el-dialog> -->
   <el-dialog v-model="blinda" top="30vh" width="25%" title="鏄惁鏆傚仠?" >
     <template #footer>
       <div id="dialog-footer">
@@ -510,7 +697,7 @@
      :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"
         >
           <el-table-column prop="patternWidth" align="center" label="瀹�" min-width="80" />
-          <el-table-column prop="patternHeigth" align="center" label="闀�" min-width="80" />
+          <el-table-column prop="patternHeight" align="center" label="闀�" min-width="80" />
           <el-table-column prop="filmsId" align="center" label="鑶滅郴" min-width="80" />
           <el-table-column prop="number" align="center" label="鏁伴噺" min-width="80" />
           <el-table-column fixed="right" label="鎿嶄綔" align="center" width="150">
@@ -531,7 +718,7 @@
               <div id="dt" style="font-size: 15px;">
         <div>
               <el-form-item label="闀匡細" :required="true" style="width: 14vw">
-                <el-input  v-model="patternHeigth" autocomplete="off" />
+                <el-input  v-model="patternHeight" autocomplete="off" />
               </el-form-item></div></div>
           </el-col>
           <el-col :span="9">
@@ -611,20 +798,11 @@
          :value="item.projectNo"  
       />  
     </el-select>  
-        <!-- <el-select  v-model="getBasicData.projectNo" clearable placeholder="璇烽�夋嫨宸ョ▼" style="width: 220px"
-                   >
-            <el-option
-                v-for="item in titleSelectJson['processType']"
-                :key="item.id"
-                :label="item.projectNo"
-                :value="item.projectNo"
-            />
-          </el-select> -->
               </el-form-item>
           </div>
     <template #footer>
       <div id="dialog-footer">
-        <el-button type="primary" @click="dialogFormVisible = false">
+        <el-button type="primary" @click="handleup">
           纭
         </el-button>
         <el-button @click="dialogFormVisible = false">鍙栨秷</el-button>
diff --git a/UI-Project/src/views/UnLoadGlass/Landingindication.vue b/UI-Project/src/views/UnLoadGlass/Landingindication.vue
index 72b46a9..bf305e6 100644
--- a/UI-Project/src/views/UnLoadGlass/Landingindication.vue
+++ b/UI-Project/src/views/UnLoadGlass/Landingindication.vue
@@ -4,7 +4,7 @@
       <svg width="500" height="500" xmlns="http://www.w3.org/2000/svg">
         <g stroke="null" id="Layer_1">
           <!-- 浣跨敤 v-for 寰幆娓叉煋鏁版嵁 -->
-          <g v-for="(rack, index) in racks" :key="index">
+          <g v-for="(rack, index) in racks" :key="index"   :data="tableData">
             <rect 
               :x="rack.x" 
               :y="rack.y" 
@@ -31,21 +31,28 @@
   </div>
 </template>
 
-<script setup>
+<script  setup>
+import { ref, watchEffect } from 'vue';
 import Swal from 'sweetalert2'
-
-const racks = [
+import request from "@/utils/request";
+const racks = ref([
   { 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' } }
-];
+ 
+  { x: 280, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: 'NG12345678' } },
+ 
+  { x: 140, y: 420, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 20, width: 100, fillColor: 'yellow', content: 'NG1234561454' } }
+  
+]);
+
+watchEffect(() => {
+  // 瑙﹀彂鏁版嵁鍙樺寲鏃堕噸鏂版覆鏌�
+});
+
 
 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 +60,61 @@
 };
 
 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');
+    
+    if (response.code === 200) {
+      console.log(response); 
+      // 閬嶅巻鍝嶅簲鏁版嵁骞舵浛鎹acks鏁扮粍涓殑item灞炴��
+      response.data.forEach((itemData, index) => {
+  if (index < racks.value.length) {
+    const rack = racks.value[index];
+    const newItem = {
+      content: itemData.item.content,
+      fillColor: itemData.item.fillColor,
+      width: itemData.item.width === 0 ? "" : 10,
+      height: itemData.item.height === 0 ? "" : 90
+    };
+
+    if (index === 2 && itemData.item.width > 0) {
+      newItem.width = 100;
+      newItem.height = 20;
+    }
+
+    rack.item = newItem;
+
+    console.log(racks.value); // 鎵撳嵃鏇存柊鍚庣殑 racks 鍊�
+  }
+});
+
+
+
+      
+     
+    } else {
+      ElMessage.error(response.msg);
+    }
+  } catch (error) {
+    console.error(error);
+  }
+};
+
+fetchFlowCardId()
+// setTimeout(fetchFlowCardId(),1000);
+//setInterval(fetchFlowCardId, 2000)
+
+
 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..e5f562f 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>
@@ -32,20 +32,27 @@
 </template>
 
 <script setup>
+import { ref, watchEffect } from 'vue';
 import Swal from 'sweetalert2'
+import request from "@/utils/request";
 
-const racks = [
+const racks = ref([
   { 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' } }
-];
+ 
+  { x: 280, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: 'NG12345678' } },
+ 
+  { x: 140, y: 420, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 20, width: 100, fillColor: 'yellow', content: 'NG1234561454' } }
+  
+]);
 
+watchEffect(() => {
+  // 瑙﹀彂鏁版嵁鍙樺寲鏃堕噸鏂版覆鏌�
+});
+// 璁$畻鍏冪礌浣嶇疆鐨勫嚱鏁�
 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,32 +60,75 @@
 };
 
 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 showCustomAlert = (content) => {
-  var str="鏋跺彿   :      111\n" +
-    "闀�     :      111\n" +
-    "瀹�     :      111\n" +
-    "鍘�     :      111\n"+
-    "鐜荤拑ID :      111\n"+
-    "鑶滅郴   :      111\n";
 
-  Swal.fire({
-    title: '鐜荤拑淇℃伅',
-    html: '<pre>' + str + '</pre>',
-    customClass: {
-      popup: 'format-pre'
+const fetchFlowCardId = async () => {
+  try {
+    const response = await request.get('unLoadGlass/downWorkStation/getwo2');
+    
+    if (response.code === 200) {
+      console.log(response); 
+      // 閬嶅巻鍝嶅簲鏁版嵁骞舵浛鎹acks鏁扮粍涓殑item灞炴��
+      response.data.forEach((itemData, index) => {
+  if (index < racks.value.length) {
+    const rack = racks.value[index];
+    const newItem = {
+      content: itemData.item.content,
+      fillColor: itemData.item.fillColor,
+      width: itemData.item.width === 0 ? "" : 10,
+      height: itemData.item.height === 0 ? "" : 90
+    };
+
+    if (index === 2 && itemData.item.width > 0) {
+      newItem.width = 100;
+      newItem.height = 20;
     }
-  });
+
+    rack.item = newItem;
+
+    console.log(racks.value); // 鎵撳嵃鏇存柊鍚庣殑 racks 鍊�
+  }
+});
+
+
+
+      
+     
+    } else {
+      ElMessage.error(response.msg);
+    }
+  } catch (error) {
+    console.error(error);
+  }
 };
 
+fetchFlowCardId()
+
+// const showCustomAlert = (content) => {
+//   var str="鏋跺彿   :      111\n" +
+//     "闀�     :      111\n" +
+//     "瀹�     :      111\n" +
+//     "鍘�     :      111\n"+
+//     "鐜荤拑ID :      111\n"+
+//     "鑶滅郴   :      111\n";
+
+//   Swal.fire({
+//     title: '鐜荤拑淇℃伅',
+//     html: '<pre>' + str + '</pre>',
+//     customClass: {
+//       popup: 'format-pre'
+//     }
+//   });
+// };
+
 const showRectInfo = (rectInfo) => {
   const content = rectInfo.item.content;
   showCustomAlert(content);
diff --git a/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue b/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
index 6f605ad..d4a17c1 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)
 
 
@@ -75,7 +76,7 @@
 const workstationId = ref('');
 const flowCardId = ref('');
 const flowCardOptions = ref([]);
-
+const tableData = reactive([]);
 
 // 鏂规硶
 const handleSelectionChange = () => {
@@ -121,7 +122,9 @@
     if (response.code == 200) {
       // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
       console.log('缁戝畾鎴愬姛');
+   
       ElMessage.success(response.message);
+      updatePageData();
       dialogFormVisiblea.value = false;
     } else {
       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
@@ -131,6 +134,16 @@
     // 澶勭悊閿欒
     console.error(error);
   }
+};
+
+
+const updatePageData = () => {
+  // 鍋囪浣犵殑椤甸潰涓婃湁涓�涓悕涓� tableData 鐨� Vue 缁勪欢
+  // 浣犲彲浠ョ洿鎺ユ洿鏂� tableData 鐨勬暟鎹�
+  fetchTableData()
+
+  // 浣跨敤 $forceUpdate() 寮哄埗鏇存柊缁勪欢
+ 
 };
 
 
@@ -173,7 +186,7 @@
 
 
 
-const tableData = reactive([]);
+
 
 // 鍙戦�佽幏鍙栬〃鏍兼暟鎹殑璇锋眰
 const fetchTableData = async () => {
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 7899cfa..af09ed0 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
@@ -37,8 +37,19 @@
      * 鍗у紡鐞嗙墖绗艰鎯呰〃鐜荤拑鐘舵��
      * 杩涚墖浠诲姟1
      * 鍑虹墖浠诲姟2
+     * 鍑虹墖浠诲姟2
      */
     public static final Integer GLASS_CACHE_TYPE_IN = 1;
     public static final Integer GLASS_CACHE_TYPE_OUT = 2;
+    public static final Integer GLASS_CACHE_TYPE_THROUGH = 3;
+
+    /**
+     * 纾ㄨ竟浠诲姟鐜荤拑鐘舵��
+     * 杩涚墖浠诲姟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/common/servicebase/src/main/java/com/mes/device/PlcParameterInfo.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterInfo.java
index 38155f0..313adc2 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterInfo.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterInfo.java
@@ -105,7 +105,7 @@
         if (addressLength < 2) {
             return null;
         }
-        int wordindex = index;
+        int wordindex = Integer.parseInt(stringdatas[1]) + index;
         return stringdatas[0] + "." + wordindex;
       /*  if (addressLength == 2) {
 
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/controller/EngineeringController.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/controller/EngineeringController.java
index f80d3c0..7400f9f 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/controller/EngineeringController.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/controller/EngineeringController.java
@@ -2,12 +2,17 @@
 
 
 import com.mes.engineering.entity.Engineering;
+import com.mes.uppattenusage.entity.UpPattenUsage;
+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.*;
 import com.mes.engineering.service.EngineeringService;
+
+import java.util.List;
+
 /**
  * <p>
  *  鍓嶇鎺у埗鍣�
@@ -22,14 +27,26 @@
 public class EngineeringController {
     @Autowired
     private EngineeringService engineeringService;
+    @Autowired
+    private UpPattenUsageService upPattenUsageService;
 
     @ApiOperation("寮�濮�/鏆傚仠浠诲姟/浼犻�掑伐绋嬪彿鍜岀姸鎬�,寮�濮嬫槸1 鏆傚仠鏄�0")
     @PostMapping("/changeTask") //璋冪敤涓婄墖浠诲姟
     @ResponseBody
-    public Result <Engineering> changeTask(String projectId , Integer state) {
-        boolean work=engineeringService.changeTask(projectId,state);
-        log.info("寮�濮嬩换鍔¤繑鍥�:{}", work);
-        return Result.build(200, "",null);
+    public  Result <List<UpPattenUsage>> changeTask(@RequestBody Engineering engineering) {
+        boolean work=engineeringService.changeTask(engineering.getEngineerId(),engineering.getState());
+        List<UpPattenUsage> glass = upPattenUsageService.prioritylist();
+        log.info("StartorStop:{},{}", work,engineering);
+        return Result.build(200, engineering.getEngineerId(),glass);
+    }
+
+    @ApiOperation("鏌ヨ鍙互涓婄墖鐨勫伐绋嬪彿")
+    @GetMapping("/selectTask") //璋冪敤涓婄墖浠诲姟
+    @ResponseBody
+    public Result <List<Engineering>> selectTask() {
+        List<Engineering> engineering=engineeringService.selectTask();
+        log.info("鍙鍙栦换鍔¤繑鍥�:{}", engineering);
+        return Result.build(200, "",engineering);
     }
 }
 
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
index 7c01553..3828c3b 100644
--- 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
@@ -16,13 +16,25 @@
 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> engineerings);
-
+    /**
+     * 淇濆瓨閽㈠寲淇℃伅
+     */
+    void saveEngineering(List<Engineering> engineering);
+    /**
+     * 鏌ヨ鏄惁鏈変笂鐗囦换鍔�
+     * @return Engineering
+     */
     Engineering selectInitiate(Integer state);
+
+    List<Engineering> selectTask();
 }
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
index 968cd59..8dd2ddc 100644
--- 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
@@ -29,10 +29,18 @@
 
     @Autowired
     OptimizeProjectMapper optimizeProjectMapper;
+    @Autowired
+    private EngineeringMapper engineeringMapper;
+
     //寮�濮�/鏆傚仠浠诲姟
     @Override
     public  boolean  changeTask(String projectId, Integer state) {
-        //浣跨敤projectId浣滀负鏉′欢淇敼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);
@@ -79,8 +87,8 @@
     }
 
     @Override
-    public void saveEngineering(List<Engineering> engineerings) {
-        this.saveBatch(engineerings);
+    public void saveEngineering(List<Engineering> engineering) {
+        this.saveBatch(engineering);
         //淇濆瓨閽㈠寲宸ョ▼淇℃伅
     }
 
@@ -92,4 +100,12 @@
         return this.getOne(wrapper);
     }
 
+    @Override
+    public List<Engineering> selectTask() {
+        //鏌ヨ鍙紑濮嬩换鍔$殑宸ョ▼
+        QueryWrapper<Engineering> wrapper = new QueryWrapper<>();
+        wrapper.eq("state", 0);
+        return engineeringMapper.selectList(wrapper);
+    }
+
 }
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 9fad7a7..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
@@ -13,9 +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/pp/controller/OptimizeProjectController.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/OptimizeProjectController.java
index 6b97fc2..38fc688 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
@@ -8,10 +8,7 @@
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
@@ -34,6 +31,7 @@
 
     @ApiOperation("鏄剧ず宸ョ▼閫夋嫨淇℃伅")
     @PostMapping("/listByState") //鏄剧ず宸ョ▼閫夋嫨淇℃伅
+    @ResponseBody
     public Result<List<OptimizeProject>> listByState(@RequestBody OptimizeRequest optimizeRequest) {
         log.info("灏嗚姹傚弬鏁板皝瑁呭湪璇锋眰绫婚噷闈�");
         List<OptimizeProject> glass = optimizeProjectService.listByState(optimizeRequest);
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 e12e67f..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
-     */
-    void insetupPattenUsage(List<OptimizeProject> glass);
+
     /**
      * 灏嗗伐绋嬩俊鎭洿鏂扮姸鎬佷负宸查鍙�
-     * @return
      */
     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 20a4b32..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
@@ -9,7 +9,6 @@
 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;
@@ -44,18 +43,6 @@
         return this.list(wrapper);
     }
 
-
-    @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);
-        }
-    }
 
     @Override
     public void changeTask(String engineeringId, int state) {
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 a8a3edf..dd4950e 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
@@ -11,9 +11,7 @@
 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 org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
@@ -40,33 +38,37 @@
     private OptimizeProjectService optimizeProjectService;
     @ApiOperation("鏄剧ず姝e湪鍑虹墖鐨勫伐绋嬩俊鎭�")
     @GetMapping("/prioritylist") //鏌ヨ鐜板湪涓婄墖鏈虹殑鐜荤拑淇℃伅
+    @ResponseBody
     public Result<List<UpPattenUsage>> prioritylist() {
-        List<UpPattenUsage> glass = upPattenUsageService.prioritylist(1);
-        log.info("鏄剧ず宸ヤ綅涓婄殑鐜荤拑淇℃伅:{}", glass);
+        List<UpPattenUsage> glass = upPattenUsageService.prioritylist();
+        log.info("鏄剧ず姝e湪鍑虹墖鐨勫伐绋嬩俊鎭�:{}", glass);
         return Result.build(200, "", glass);
     }
 
     @ApiOperation("鐐瑰嚮閫夋嫨宸ョ▼淇濆瓨鍚庤繘琛岃皟鐢�,浼犲叆宸ョ▼鍙�")
-    @GetMapping("/saveUpPattenUsage") //鏌ヨ鐜板湪涓婄墖鏈虹殑鐜荤拑淇℃伅
-    public Result<Integer> saveUpPattenUsage(String engineeringId) {
-        log.info("浼犲叆宸ョ▼鍙峰垽鏂槸鍚﹀凡淇濆瓨:{}", engineeringId);
-        UpPattenUsage upPattenUsage= upPattenUsageService.selectedEngineering(engineeringId);
+    @PostMapping("/saveUpPattenUsage") //鏌ヨ鐜板湪涓婄墖鏈虹殑鐜荤拑淇℃伅
+    @ResponseBody
+    public Result<Engineering> saveUpPattenUsage(@RequestBody Engineering engineering) {
+        log.info("engineeringId:{}", engineering);
+        UpPattenUsage upPattenUsage= upPattenUsageService.selectedEngineering(engineering.getEngineerId());
         if (upPattenUsage!=null){
             log.info("宸蹭繚瀛樿繃");
-            return Result.build(200, "宸蹭繚瀛樿繃", 200);
+            return Result.build(200, "宸蹭繚瀛樼殑宸ョ▼", null);
         }else {
-            List<UpPattenUsage> upPattenUsages = upPattenUsageService.selectSaveUpPattenUsage(engineeringId);
+            List<UpPattenUsage> upPattenUsages = upPattenUsageService.selectSaveUpPattenUsage(engineering.getEngineerId());
             log.info("灏嗘煡璇㈠嚭鐨刄pPattenUsage鏁版嵁淇濆瓨鍒版暟鎹簱琛ㄩ噷");
             upPattenUsageService.saveUpPattenUsage(upPattenUsages);
             log.info("浠嶱P琛ㄦ煡璇lassinfo鐨勬暟鎹苟淇濆瓨鍒拌〃閲�");
-            List<GlassInfo> glassinfo=glassInfoService.selectGlassInfo(engineeringId);
+            List<GlassInfo> glassinfo=glassInfoService.selectGlassInfo(engineering.getEngineerId());
             glassInfoService.saveGlassInfo(glassinfo);
             log.info("浠嶱P琛ㄦ煡璇ngineering鐨勬暟鎹苟淇濆瓨鍒拌〃閲�");
-            List<Engineering> engineerings= engineeringService.selectEngineering(engineeringId);
-            engineeringService.saveEngineering(engineerings);
+            List<Engineering> listEngineering= engineeringService.selectEngineering(engineering.getEngineerId());
+            engineeringService.saveEngineering(listEngineering);
             log.info("鏇存敼pp琛ㄧ姸鎬佷负宸查鍙�");
-            optimizeProjectService.changeTask(engineeringId, 200);
-            return Result.build(200, "", 200);
+            optimizeProjectService.changeTask(engineering.getEngineerId(), 200);
+//            List<UpPattenUsage> data=upPattenUsageService.prioritylist();
+//            log.info("鏄剧ず淇濆瓨鍚庣殑涓婄墖椤哄簭琛�");
+            return Result.build(200, "", engineering);
         }
 
     }
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 7bc799b..d5506a4 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,15 +13,33 @@
  * @since 2024-04-18
  */
 public interface UpPattenUsageService extends MPJBaseService<UpPattenUsage> {
-     List<UpPattenUsage> prioritylist(int state);
-
+     /**
+      * 鏌ヨ宸ヤ綅涓婄殑鐜荤拑淇℃伅
+      * @return List<UpPattenUsage>
+      */
+     List<UpPattenUsage> prioritylist();
+     /**
+      * 鏌ヨ涓婄墖椤哄簭淇℃伅
+      * @return List<UpPattenUsage>
+      */
      List<UpPattenUsage> selectSaveUpPattenUsage(String engineeringId);
-
+     /**
+      * 淇濆瓨涓婄墖椤哄簭淇℃伅
+      */
      void saveUpPattenUsage(List<UpPattenUsage> upPattenUsages);
-
-     void updateupPattenUsageState(UpPattenUsage upPattenUsage, Integer state);
-
+     /**
+      * 鏇存柊涓婄墖琛ㄧ姸鎬�
+      */
+     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 ecff14b..132a0e5 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
@@ -5,6 +5,8 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.query.MPJQueryWrapper;
+import com.mes.engineering.entity.Engineering;
+import com.mes.engineering.service.EngineeringService;
 import com.mes.pp.entity.OptimizeProject;
 import com.mes.pp.mapper.OptimizeProjectMapper;
 import com.mes.uppattenusage.entity.OptimizeUpPattenUsage;
@@ -31,13 +33,21 @@
 
     @Autowired
     OptimizeProjectMapper optimizeProjectMapper;
+    @Autowired
+    EngineeringService engineeringService;
     @Override
-    public List<UpPattenUsage> prioritylist(int state) {
-        log.info("灏嗗弬鏁颁紶鍏ュ埌鏌ヨ绫婚噷,宸ョ▼鍙峰仛闈炵┖鍒ゆ柇妯$硦鏌ヨ");
-        LambdaQueryWrapper<UpPattenUsage> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(UpPattenUsage::getState,state);
-        log.info("杩斿洖宸ョ▼淇℃伅");
-        return this.list(wrapper);
+    public List<UpPattenUsage> prioritylist() {
+        //鑾峰彇姝e湪涓婄墖鐨勪换鍔d
+        Engineering engineering= engineeringService.selectInitiate(1);
+        log.info("灏嗗弬鏁颁紶鍏ュ埌鏌ヨ绫婚噷{}",engineering);
+        if(engineering!=null){
+            LambdaQueryWrapper<UpPattenUsage> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(UpPattenUsage::getEngineeringId,engineering.getEngineerId());
+            return this.list(wrapper);
+        }else {
+            return  null;
+        }
+
     }
 
     @Override
@@ -82,7 +92,7 @@
     }
 
     @Override
-    public void updateupPattenUsageState(UpPattenUsage upPattenUsage, Integer state) {
+    public void updateUpPattenUsageState(UpPattenUsage upPattenUsage, Integer state) {
         upPattenUsage.setState(state);
         boolean updateSuccess=this.updateById(upPattenUsage);
         log.info("鏇存柊鐘舵�亄}",updateSuccess);
@@ -97,5 +107,14 @@
         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/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java
index b4d0fc6..c65bd69 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java
@@ -61,12 +61,13 @@
         MPJLambdaWrapper<SysUserRole> wrapper = new MPJLambdaWrapper<>();
 
         wrapper.selectAll(SysMenu.class).distinct()
-                .leftJoin(SysUser.class, SysUser::getId, SysUserRole::getUserId)
-                .leftJoin(SysRoleMenu.class, SysRoleMenu::getRoleId, SysUserRole::getRoleId)
-                .leftJoin(SysMenu.class, SysMenu::getId, SysRoleMenu::getMenuId)
+                .innerJoin(SysUser.class, SysUser::getId, SysUserRole::getUserId)
+                .innerJoin(SysRoleMenu.class, SysRoleMenu::getRoleId, SysUserRole::getRoleId)
+                .innerJoin(SysMenu.class, SysMenu::getId, SysRoleMenu::getMenuId)
                 .eq(SysUser::getId, user.getId())
                 .like(StringUtils.isNotBlank(request.getKey()), SysMenu::getMenuName, request.getKey());
 
+        //
         List<SysMenu> menuList = sysUserRoleMapper.selectJoinList(SysMenu.class, wrapper);
         return create(menuList);
     }
diff --git a/hangzhoumesParent/gateway/src/main/resources/application-dev.yml b/hangzhoumesParent/gateway/src/main/resources/application-dev.yml
deleted file mode 100644
index 22ac82e..0000000
--- a/hangzhoumesParent/gateway/src/main/resources/application-dev.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-spring:
-  cloud:
-    nacos:
-      discovery:
-        server-addr: 127.0.0.1:8848
diff --git a/hangzhoumesParent/gateway/src/main/resources/application-prod.yml b/hangzhoumesParent/gateway/src/main/resources/application-prod.yml
deleted file mode 100644
index dc6869c..0000000
--- a/hangzhoumesParent/gateway/src/main/resources/application-prod.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-spring:
-  cloud:
-    nacos:
-      discovery:
-        server-addr: 10.153.19.150:8848
\ No newline at end of file
diff --git a/hangzhoumesParent/gateway/src/main/resources/application.yml b/hangzhoumesParent/gateway/src/main/resources/application.yml
index f8655cf..3ddd26b 100644
--- a/hangzhoumesParent/gateway/src/main/resources/application.yml
+++ b/hangzhoumesParent/gateway/src/main/resources/application.yml
@@ -1,10 +1,12 @@
 server:
   port: 88
 spring:
-  profiles:
-    active: prod
   application:
     name: gateway
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 127.0.0.1:8848
     gateway:
       discovery:
         locator:
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/common/S7object.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/common/S7object.java
index de9760b..f13c19b 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/common/S7object.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/common/S7object.java
@@ -6,7 +6,6 @@
 import com.mes.tools.S7control;
 
 
-
 /**
  * @Author : zhoush
  * @Date: 2024/4/9 15:13
@@ -25,10 +24,9 @@
     private S7object() {
         if (plccontrol == null) {
             plccontrol = new S7control(plcType, ip, port, 0, 0);
-
-            String PlcCacheGlass=S7object.class.getResource("/JsonFile/PlcCacheGlass.json").getPath();
-            //log.info(PLCAutoMes.class.getResource("").getPath());
-            PlcMesObject = InitUtil.initword(PlcCacheGlass);
+            String PlcLoadGlass = System.getProperty("user.dir") + "/JsonFile/PlcCacheGlass.json";
+//            String PlcLoadGlass=S7object.class.getResource("/JsonFile/PlcCacheGlass.json").getPath();
+            PlcMesObject = InitUtil.initword(PlcLoadGlass);
         }
     }
 
@@ -54,7 +52,7 @@
                 e.printStackTrace();
             }
 
-            byte[] getplcvlues=   plccontrol.ReadByte(PlcMesObject.getPlcAddressBegin(),PlcMesObject.getPlcAddressLength());
+            byte[] getplcvlues = plccontrol.ReadByte(PlcMesObject.getPlcAddressBegin(), PlcMesObject.getPlcAddressLength());
             PlcMesObject.setPlcParameterList(getplcvlues);
 
         }
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/service/impl/EdgStorageCageServiceImpl.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java
index 7c71c38..f94d854 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
@@ -1,5 +1,6 @@
 package com.mes.edgstoragecage.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.toolkit.JoinWrappers;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
@@ -20,7 +21,7 @@
 
 /**
  * <p>
- *  鏈嶅姟瀹炵幇绫�
+ * 鏈嶅姟瀹炵幇绫�
  * </p>
  *
  * @author zhoush
@@ -37,44 +38,50 @@
 
     @Override
     public EdgStorageCage selectNearestEmpty(int currentSlot) {
-        return this.selectJoinOne(EdgStorageCage.class,new MPJLambdaWrapper<EdgStorageCage>()
+        List<EdgStorageCage> emptyList = this.selectJoinList(EdgStorageCage.class, new MPJLambdaWrapper<EdgStorageCage>()
                 .selectAll(EdgStorageCage.class)
-                .leftJoin(EdgStorageCageDetails.class,on->on
-                        .eq(EdgStorageCageDetails::getSlot,EdgStorageCage::getSlot)
+                .leftJoin(EdgStorageCageDetails.class, on -> on
+                        .eq(EdgStorageCageDetails::getSlot, EdgStorageCage::getSlot)
                         .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN))
                 .isNull(EdgStorageCageDetails::getSlot)
-                .last("order by abs(slot - 4)  asc limit 1")
+                .last("order by abs(t.slot - " + currentSlot + ")  asc limit 2")
         );
+        if (CollectionUtil.isEmpty(emptyList) || emptyList.size() < 2) {
+            return null;
+        }
+        return emptyList.get(0);
     }
 
     /**
      * 鏌ヨ绗煎唴绌烘牸
+     *
      * @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(slot - 4)  asc")
+                .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)
@@ -87,17 +94,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")
@@ -107,39 +115,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/glassinfo/entity/GlassInfo.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/glassinfo/entity/GlassInfo.java
index 7e387a2..9f8583a 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/glassinfo/entity/GlassInfo.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/glassinfo/entity/GlassInfo.java
@@ -55,7 +55,7 @@
     /**
      * 鑶滅郴
      */
-    private Integer filmsid;
+    private String filmsid;
 
     /**
      * 纾ㄥ墠瀹�
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 fc0aa21..dc9db3c 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
@@ -7,8 +7,11 @@
 import com.github.yulichang.query.MPJQueryWrapper;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.mes.common.S7object;
+import com.mes.common.WebSocketServer;
 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;
@@ -18,6 +21,7 @@
 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;
@@ -46,8 +50,20 @@
     @Autowired
     EdgStorageCageDetailsService edgStorageCageDetailsService;
 
+    @Autowired
+    EdgGlassTaskInfoService edgGlassTaskInfoService;
+
+    @Autowired
+    WebSocketServer webServerService;
+
     @Value("${mes.threshold}")
     private int threshold;
+
+    @Value("${mes.ratio}")
+    private int ratio;
+
+    @Value("${mes.sequence.order}")
+    private boolean sequenceOrder;
 
     @Scheduled(fixedDelay = 1000)
     public void plcHomeEdgTask() {
@@ -55,12 +71,13 @@
         String taskRequestTypeValue = plcParameterObject.getPlcParameter("A06_request_word").getValue();
         String glassIdeValue = plcParameterObject.getPlcParameter("A05_scanning_ID").getValue();
         String confirmationWrodValue = plcParameterObject.getPlcParameter("MES_confirmation_word").getValue();
-        //A08  A09琛ㄧず绾胯矾鐩稿悓  鍙仛绛変环
+        //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();
-        log.info("1銆佽幏鍙栧埌鐨勮姹傚瓧涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{}锛岃幏鍙栧埌鐨勭‘璁ゅ瓧涓猴細{}锛岃幏鍙栧埌鐨勫嚭鐗囩姸鎬佸垎鍒负锛欰09{}銆丄10{},褰撳墠鏍煎瓙鍙蜂负锛歿}",
+
+        log.info("1銆佽幏鍙栧埌鐨勮姹傚瓧涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{}锛岃幏鍙栧埌鐨勭‘璁ゅ瓧涓猴細{}锛岃幏鍙栧埌鐨勫嚭鐗囩姸鎬佸垎鍒负锛欰09:{}銆丄10:{},褰撳墠鏍煎瓙鍙蜂负锛歿}",
                 taskRequestTypeValue, glassIdeValue, confirmationWrodValue, out08Glassstate, out10Glassstate, currentSlot);
 
         if ("0".equals(taskRequestTypeValue)) {
@@ -73,28 +90,52 @@
             return;
         }
         if (!"0".equals(confirmationWrodValue)) {
-            log.info("2銆佽幏鍙栧埌鐨勮姹傚瓧涓嶄负0锛屽皢纭瀛楁敼涓�0");
-            S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 0);
+            log.info("2銆佽幏鍙栧埌鐨勮姹傚瓧涓嶄负0锛屽皢纭瀛椾笉涓�0锛岀洿鎺ョ粨鏉�");
             return;
         }
-
         if ("1".equals(taskRequestTypeValue)) {
-            log.info("3銆佽繘鐗囪姹傦紝涓旂‘璁ゅ瓧涓�0锛屾墽琛岃繘鐗囦换鍔�");
+            log.info("2銆佽繘鐗囪姹傦紝涓旂‘璁ゅ瓧涓�0锛屾墽琛岃繘鐗囦换鍔�");
             inTo(glassIdeValue, confirmationWrodAddress, currentSlot);
         } else if ("2".equals(taskRequestTypeValue)) {
             //09绌洪棽 锛�1      10绌洪棽 锛�2        閮界┖闂诧細3    鍏朵粬0
-            log.info("3銆佸嚭鐗囪姹傦紝涓旂‘璁ゅ瓧涓�0锛屾墽琛岃繘鐗囦换鍔�");
-            outTo(Integer.parseInt(out08Glassstate), confirmationWrodAddress);
+            log.info("2銆佸嚭鐗囪姹傦紝涓旂‘璁ゅ瓧涓�0锛屾墽琛岃繘鐗囦换鍔�");
+            outTo(Integer.parseInt(out08Glassstate),
+                    Integer.parseInt(out10Glassstate), confirmationWrodAddress, "", 0);
         } else if ("3".equals(taskRequestTypeValue)) {
-            log.info("3銆佽繘鐗囧拰鍑虹墖閮界┖闂诧紝鎵ц鍑虹墖浠诲姟");
+            log.info("2銆佽繘鐗囧拰鍑虹墖閮界┖闂诧紝鎵ц鍑虹墖浠诲姟");
             //鍔犵瀛愰噷闈㈡槸鍚︽湁鐜荤拑锛屾湁鍏堝嚭锛屾棤鐜荤拑鍏堣繘
-            int count = edgStorageCageDetailsService.count(new LambdaQueryWrapper<EdgStorageCageDetails>().eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN));
-            if ("0".equals(out08Glassstate) || count > 0) {
-                inTo(glassIdeValue, confirmationWrodAddress, currentSlot);
+            if (("1".equals(out08Glassstate) || "1".equals(out10Glassstate))) {
+                boolean outFlase = outTo(Integer.parseInt(out08Glassstate),
+                        Integer.parseInt(out10Glassstate), confirmationWrodAddress, glassIdeValue, Integer.parseInt(currentSlot));
+                log.info("鍑虹墖浠诲姟鏄惁瀹屾垚锛歿},澶辫触涓旂幓鐠僫d:{}涓嶄负绌哄垯鎵ц杩涚墖浠诲姟", outFlase, glassIdeValue);
+                if (!outFlase && StringUtils.isNotBlank(glassIdeValue)) {
+                    inTo(glassIdeValue, confirmationWrodAddress, currentSlot);
+                }
             } else {
-                outTo(Integer.parseInt(out08Glassstate), confirmationWrodAddress);
+                inTo(glassIdeValue, confirmationWrodAddress, currentSlot);
             }
         }
+    }
+
+    public void plcToHomeEdgTask() {
+        // 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();
+//                    }
+//                }
+//
+//            }
+//        }
     }
 
     /**
@@ -114,7 +155,7 @@
         log.info("2銆佽幏鍙栧埌鐨勭幓鐠冧俊鎭负{}", glassInfo);
         //娣诲姞杩涚墖浠诲姟  鏌ユ壘绌烘牸
         EdgStorageCage nearestEmpty = edgStorageCageService.selectNearestEmpty(Integer.parseInt(currentSlot));
-        Assert.isTrue(nearestEmpty == null, "鏍煎瓙宸叉弧");
+        Assert.isTrue(null != nearestEmpty, "鏍煎瓙宸叉弧");
         log.info("3銆佹煡璇㈠崸寮忕悊鐗囩閲岄潰鐨勭┖鏍�:{}", nearestEmpty);
 
         log.info("4銆佸皢鐜荤拑淇℃伅鎻掑叆鍗у紡鐞嗙墖绗�,褰撳墠鐜荤拑淇℃伅:{}", glassInfo);
@@ -125,17 +166,9 @@
         details.setDeviceId(nearestEmpty.getDeviceId());
         edgStorageCageDetailsService.save(details);
         log.info("5銆佺幓鐠冧俊鎭凡瀛樺叆鐞嗙墖绗艰鎯呰〃锛岀幓鐠冧俊鎭负{}", details);
-
         //娣诲姞杩涚墖浠诲姟
-        TaskCache taskCache = new TaskCache();
-        taskCache.setGlassId(glassId);
-        taskCache.setTaskStatus(0);
-        taskCache.setStartCell(0);
-        taskCache.setEndCell(nearestEmpty.getSlot());
-        taskCache.setTaskType(1);
-        taskCache.setCreateTime(new Date());
-        taskCacheService.insertTaskCache(taskCache);
-        log.info("6銆佺敓鎴愯繘鐗囦换鍔′俊鎭瓨鍏ヤ换鍔¤〃{}", taskCache);
+        boolean taskCache = saveTaskCache(details.getGlassId(), 0, nearestEmpty.getSlot(), Const.GLASS_CACHE_TYPE_IN);
+        log.info("6銆佺敓鎴愯繘鐗囦换鍔′俊鎭瓨鍏ヤ换鍔¤〃鏄惁瀹屾垚锛歿}", taskCache);
 
         S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 1);
         log.info("7銆佸彂閫佺‘璁ゅ瓧瀹屾垚");
@@ -146,10 +179,13 @@
     /**
      * 鍑虹墖浠诲姟
      *
-     * @param line
+     * @param out08Glassstate
+     * @param out10Glassstate
      * @param confirmationWrodAddress
+     * @param glassId
+     * @param currentSlot
      */
-    private void outTo(int line, String confirmationWrodAddress) {
+    private boolean outTo(int out08Glassstate, int out10Glassstate, String confirmationWrodAddress, String glassId, int currentSlot) {
         //閫昏緫姝ラ锛�
 //        0銆丄09銆丄10鏄惁绌洪棽锛屾槸鍚﹀彲浠ユ墽琛屽嚭鐗囦换鍔�
 //        1銆佽幏鍙栭挗鍖栫増鍥炬槸鍚﹁秴杩囬槇鍊�
@@ -163,54 +199,94 @@
 //        1.2.3銆佹寜鐓у嚭鐗囦俊鎭幓璇︽儏琛ㄦ煡璇㈡牸瀛愬湪绗煎瓙閲岄潰鍓╀綑鐩稿悓灏哄鐨勭幓鐠冩暟鎹笖浠ョ増鍥緄d銆佺増搴忓崌搴忔帓搴�  鍙栫涓�鍧楃幓鐠冨嚭鐗�
 //        2銆佸鏋滄病鏈夊巻鍙插嚭鐗囦换鍔�
 //        2.1銆佸嚭褰撳墠鐗堝浘id鏈�灏忕増搴忔渶灏忕殑鐜荤拑锛堥棶棰橈細涓ゆ潯绾块兘娌℃湁鍘嗗彶浠诲姟锛屽嚭鐗囨椂涓ゆ潯绾跨殑鐜荤拑灏哄鐩稿悓锛屾槸鍚︽壘灏哄涓嶅悓鐨勶級
-        Assert.isTrue(line != 0, "A09銆丄10閮芥湁鐜荤拑锛屾棤娉曞嚭鐗�");
-        log.info("0銆佸嚭鐗囦换鍔″嚭銆恵}銆戝彿绾�,澶囨敞(09绌洪棽锛�1;10绌洪棽锛�2;閮界┖闂诧細3)", line);
+        Assert.isFalse(out08Glassstate == 0 && out10Glassstate == 0, "A09銆丄10閮芥湁鐜荤拑锛屾棤娉曞嚭鐗�");
+        log.info("0銆佸嚭鐗囦换鍔″嚭鐨勭姸鎬�:A09:銆恵}銆�;A10:銆恵}銆�)", out08Glassstate, out10Glassstate);
         //瀹氫箟鍑虹墖鐜荤拑淇℃伅
-        EdgStorageCageDetails glassInfo = null;
         int endcell = 0;
+        EdgStorageCageDetails glassInfo = null;
         boolean flag = queryMaxMinDiff(threshold);
         log.info("1銆佽幏鍙栭挗鍖栫増鍥炬槸鍚﹁秴杩囬槇鍊�:{}", flag);
         if (flag) {
-            glassInfo = queryMinGlass(0.0, 0.0);
+            //鑾峰彇褰撳墠鏈�灏忕増鍥鹃渶瑕佸嚭鐗囩殑鐜荤拑淇℃伅
+            glassInfo = queryMinGlass(0.0, 0.0, glassId);
             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);
-            if (a10Count <= a09Count && line != 2) {
-                log.info("1.2.1銆丄09绾垮嚭鐗�");
-                endcell = Const.A09_OUT_TARGET_POSITION;
-            } else {
-                log.info("1.2.2銆丄10绾垮嚭鐗�");
-                endcell = Const.A09_OUT_TARGET_POSITION;
+            if (glassInfo == null) {
+                log.info("绗煎瓙鍐呭拰寰呰繘鐗囨病鏈夌幓鐠�");
+                return Boolean.FALSE;
             }
+            EdgStorageCageDetails a09EdgGlass = queryGlassByTaskCache(Const.A09_OUT_TARGET_POSITION, Const.GLASS_CACHE_TYPE_OUT);
+            EdgStorageCageDetails a10EdgGlass = queryGlassByTaskCache(Const.A10_OUT_TARGET_POSITION, Const.GLASS_CACHE_TYPE_OUT);
+            endcell = queryLineByGlassInfo(a09EdgGlass, a10EdgGlass, glassInfo, out08Glassstate, out10Glassstate);
         } else {
-            //鑾峰彇鎸囧畾绾胯矾灏嗚鍑虹殑鐜荤拑淇℃伅
-            endcell = line == 2 ? Const.A10_OUT_TARGET_POSITION : Const.A09_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);
+            //鍒ゆ柇涓ゆ潯绾挎槸鍚﹂兘绌洪棽
+            endcell = out08Glassstate == 1 ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION;
+            if (out08Glassstate == 1 && out10Glassstate == 1) {
+                EdgStorageCageDetails a09EdgGlass = queryGlassByTaskCache(Const.A09_OUT_TARGET_POSITION, Const.GLASS_CACHE_TYPE_OUT);
+                EdgStorageCageDetails a10EdgGlass = queryGlassByTaskCache(Const.A10_OUT_TARGET_POSITION, Const.GLASS_CACHE_TYPE_OUT);
+                if (a09EdgGlass == null && a10EdgGlass == null) {
+                    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);
+                    if (CollectionUtil.isEmpty(list)) {
+                        GlassInfo one = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>()
+                                .eq(GlassInfo::getGlassId, glassId));
+                        EdgStorageCageDetails resultDetails = new EdgStorageCageDetails();
+                        BeanUtils.copyProperties(one, resultDetails);
+                        glassInfo = resultDetails;
+                    } else {
+                        glassInfo = queryMinGlass(list.get(0).getWidth(), list.get(0).getHeight(), glassId);
+                    }
+                } else if (a09EdgGlass != null && a10EdgGlass != null) {
+                    List<EdgStorageCageDetails> a09Count = queryGlassByTaskLine(Const.A09_OUT_TARGET_POSITION);
+                    List<EdgStorageCageDetails> a10Count = queryGlassByTaskLine(Const.A09_OUT_TARGET_POSITION);
+                    endcell = a09Count.size() > a10Count.size() ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION;
+                    glassInfo = a09Count.size() > a10Count.size() ? queryMinGlass(a09EdgGlass.getWidth(), a09EdgGlass.getHeight(), glassId)
+                            : queryMinGlass(a10EdgGlass.getWidth(), a10EdgGlass.getHeight(), glassId);
+                } else {
+                    endcell = a09EdgGlass != null ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION;
+                    glassInfo = a09EdgGlass != null ? queryMinGlass(a09EdgGlass.getWidth(), a09EdgGlass.getHeight(), glassId)
+                            : queryMinGlass(a10EdgGlass.getWidth(), a10EdgGlass.getHeight(), glassId);
+                }
             } else {
-                //todo:鍘荤悊鐗囩閲岄潰鏌�
-                glassInfo = queryChangeGlassInfo(othercell);
+                List<EdgStorageCageDetails> edgStorageCageDetails = queryGlassByTaskLine(endcell);
+                if (CollectionUtil.isNotEmpty(edgStorageCageDetails)) {
+                    glassInfo = edgStorageCageDetails.get(0);
+                } else {
+                    //鑾峰彇绗煎唴鎵�鏈夌幓鐠冧俊鎭紝鍖呮嫭寰呰繘鐗囩殑
+                    List<EdgStorageCageDetails> glassList = queryEdgAllGlass(glassId);
+                    Assert.isTrue(CollectionUtil.isNotEmpty(glassList), "绗煎唴鍜屽緟杩涚墖閮芥病鏈夌幓鐠�");
+                    int othercell = endcell == Const.A10_OUT_TARGET_POSITION ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION;
+                    glassInfo = queryChangeGlassInfo(othercell, glassId);
+                }
             }
-
         }
+        return saveOutGlassMessage(glassInfo, endcell, confirmationWrodAddress, glassId, currentSlot);
+    }
 
-        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);
-            S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 1);
+    /**
+     * 鑾峰彇绗煎瓙鍐呮墍鏈夌幓鐠冧俊鎭紝鍖呮嫭寰呰繘鐗囩殑
+     *
+     * @param glassId
+     */
+    private List<EdgStorageCageDetails> queryEdgAllGlass(String glassId) {
+        List<EdgStorageCageDetails> glassList = new ArrayList<>();
+        //鑾峰彇寰呰繘鐗囩幓鐠�
+        if(StringUtils.isNotBlank(glassId)){
+            GlassInfo one = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>()
+                    .eq(GlassInfo::getGlassId, glassId));
+            EdgStorageCageDetails resultDetails = new EdgStorageCageDetails();
+            BeanUtils.copyProperties(one, resultDetails);
+            glassList.add(resultDetails);
         }
+        //鑾峰彇绗煎唴鐜荤拑
+        List<EdgStorageCageDetails> details = edgStorageCageDetailsService.list(new LambdaQueryWrapper<EdgStorageCageDetails>()
+                .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN));
+        glassList.addAll(details);
+        return glassList;
+
     }
 
     /**
@@ -219,12 +295,18 @@
      * @return
      */
     private boolean queryMaxMinDiff(int threshold) {
-        //todo:鑾峰彇绗煎瓙鍐呮渶澶х増鍥緄d鍜屾渶灏忕増鍥緄d鎻掑�硷紝鍒ゆ柇鏄惁澶т簬闃堝�硷紝澶т簬闃堝�肩洿鎺ュ嚭鏈�灏忕増鍥剧幓鐠�
+        //鑾峰彇绗煎瓙鍐呮渶澶х増鍥緄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);
-        Integer diff = (Integer) edgStorageCageDetailsService.listObjs(queryWrapper).get(0);
-        return diff > threshold;
+        List<Object> list = edgStorageCageDetailsService.listObjs(queryWrapper);
+        if (CollectionUtil.isNotEmpty(list)) {
+            Long diff = (Long) list.get(0);
+            return diff > threshold;
+        } else {
+            return Boolean.FALSE;
+        }
+
     }
 
     /**
@@ -233,33 +315,50 @@
      * @param width
      * @param height
      */
-    private EdgStorageCageDetails queryMinGlass(Double width, Double height) {
-        return edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
+    private EdgStorageCageDetails queryMinGlass(Double width, Double height, String glassId) {
+        //鑾峰彇琛ㄥ唴鐗堝浘id鏈�灏忕殑鐜荤拑淇℃伅
+        EdgStorageCageDetails glassDetails = 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)
+                .orderByAsc(EdgStorageCageDetails::getTemperingLayoutId)
+                .orderBy(Boolean.TRUE, sequenceOrder, EdgStorageCageDetails::getTemperingFeedSequence)
                 .last("limit 1"));
+        if (StringUtils.isBlank(glassId)) {
+            return glassDetails;
+        }
+        GlassInfo one = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>()
+                .eq(GlassInfo::getGlassId, glassId));
+        EdgStorageCageDetails resultDetails = new EdgStorageCageDetails();
+        BeanUtils.copyProperties(one, resultDetails);
+        if (null == glassDetails) {
+            return resultDetails;
+        }
+        return resultDetails.getTemperingLayoutId() <= glassDetails.getTemperingLayoutId() && resultDetails.getTemperingFeedSequence() > glassDetails.getTemperingFeedSequence() ?
+                resultDetails : glassDetails;
     }
 
     /**
-     * 鑾峰彇浠诲姟琛ㄤ腑鎸囧畾绾胯矾绗煎瓙鍐呰繕鍓╀綑鐨勭幓鐠冩暟閲�
+     * 鑾峰彇浠诲姟琛ㄤ腑鎸囧畾绾胯矾绗煎瓙鍐呰繕鍓╀綑鐨勭幓鐠冧俊鎭�
      */
-    private List<EdgStorageCageDetails> queryCountByTaskLine(int line) {
+    private List<EdgStorageCageDetails> queryGlassByTaskLine(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)) {
+            log.info("娌℃湁鎵惧埌{}绾夸换鍔′俊鎭�", line);
             return new ArrayList<>();
         }
         TaskCache taskCache = taskCacheList.get(0);
         MPJQueryWrapper<EdgStorageCageDetails> mpjLambdaWrapper = new MPJQueryWrapper<>();
-        mpjLambdaWrapper.select("a.*")
+        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");
+                .eq("t1.state", Const.GLASS_STATE_IN)
+                .orderByAsc("t1.tempering_layout_id")
+                .orderBy(Boolean.TRUE, sequenceOrder, "t1.tempering_feed_sequence");
         List<EdgStorageCageDetails> details = edgStorageCageDetailsService.selectJoinList(EdgStorageCageDetails.class, mpjLambdaWrapper);
         if (CollectionUtil.isEmpty(details)) {
             return new ArrayList<>();
@@ -268,40 +367,83 @@
     }
 
     /**
-     * 鏇存崲鍑虹墖鐜荤拑
+     * 鎸夌収浠诲姟绫诲瀷銆佺嚎鍙疯幏鍙栦换鍔′俊鎭�
      *
-     * @param othercell
+     * @param line
+     * @param taskType
      * @return
      */
-    private EdgStorageCageDetails queryChangeGlassInfo(int othercell) {
+    private EdgStorageCageDetails queryGlassByTaskCache(int line, int taskType) {
+        LambdaQueryWrapper<TaskCache> queryWrapper = new LambdaQueryWrapper<TaskCache>().eq(TaskCache::getTaskType, taskType)
+                .eq(TaskCache::getEndCell, line).orderByDesc(TaskCache::getCreateTime);
+        List<TaskCache> list = taskCacheService.list(queryWrapper);
+        if (CollectionUtil.isEmpty(list)) {
+            log.info("娌℃湁鎵惧埌{}绾夸换鍔′俊鎭�", line);
+            return null;
+        }
+        return edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>().eq(EdgStorageCageDetails::getGlassId, list.get(0).getGlassId()));
+    }
+
+    /**
+     * 鎸夌収浠诲姟鐜荤拑淇℃伅鍜屽緟鍑虹墖鐜荤拑淇℃伅鑾峰彇鍑虹墖璺緞
+     *
+     * @param a08EdgStorageCageDetails 09鍙风嚎鍑虹墖鐜荤拑淇℃伅
+     * @param a10EdgStorageCageDetails 10鍙风嚎鍑虹墖鐜荤拑淇℃伅
+     * @param glassInfo                甯﹀嚭鐗囩幓鐠冧俊鎭�
+     * @param out08Glassstate          09鍙风嚎绌洪棽鐘舵��
+     * @param out10Glassstate          10鍙风嚎绌洪棽鐘舵��
+     * @return
+     */
+    private Integer queryLineByGlassInfo(EdgStorageCageDetails a08EdgStorageCageDetails, EdgStorageCageDetails a10EdgStorageCageDetails,
+                                         EdgStorageCageDetails glassInfo, int out08Glassstate, int out10Glassstate) {
+        if (a08EdgStorageCageDetails != null && a08EdgStorageCageDetails.getHeight().equals(glassInfo.getHeight())
+                && a08EdgStorageCageDetails.getWidth().equals(glassInfo.getWidth()) && out08Glassstate == 1) {
+            return Const.A09_OUT_TARGET_POSITION;
+        }
+        if (a10EdgStorageCageDetails != null && a10EdgStorageCageDetails.getHeight().equals(glassInfo.getHeight())
+                && a10EdgStorageCageDetails.getWidth().equals(glassInfo.getWidth()) && out10Glassstate == 1) {
+            return Const.A10_OUT_TARGET_POSITION;
+        }
+        if (out08Glassstate == 1) {
+            return Const.A09_OUT_TARGET_POSITION;
+        }
+        if (out10Glassstate == 1) {
+            return Const.A10_OUT_TARGET_POSITION;
+        }
+        Assert.isTrue(Boolean.FALSE, "娌℃湁鎵惧埌鍑虹墖璺緞");
+        return 0;
+    }
+
+    /**
+     * 鎸夌収灏哄鍑虹幓鐠�
+     *
+     * @param endcell endcell = out08Glassstate == 1 ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION;
+     * @param glassId
+     * @return
+     */
+    private EdgStorageCageDetails queryChangeGlassInfo(int endcell, String glassId) {
         //鑾峰彇绗煎瓙鍐呮暟閲忓墠浜岀殑鐜荤拑鏁伴噺
         MPJLambdaWrapper<EdgStorageCageDetails> wrapper = new MPJLambdaWrapper<>();
         wrapper.select(EdgStorageCageDetails::getWidth, EdgStorageCageDetails::getHeight)
-                .selectCount("*", EdgStorageCageDetails::getCount)
+                .selectCount(EdgStorageCageDetails::getGlassId, EdgStorageCageDetails::getCount)
+                .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN)
                 .groupBy(EdgStorageCageDetails::getWidth, EdgStorageCageDetails::getHeight)
-                .last("order by count(*) desc limit 2");
+                .last("order by count(t.glass_id) desc limit 2");
         List<EdgStorageCageDetails> list = edgStorageCageDetailsService.list(wrapper);
+        if (CollectionUtil.isEmpty(list)){
+            return null;
+        }
         log.info("鑾峰彇绗煎瓙鍐呮暟閲忓墠浜岀殑鐜荤拑鏁伴噺锛歿}", list);
-        Assert.notEmpty(list, "绗煎瓙閲屾病鏈夌幓鐠�");
-        //涓�鐗囩幓鐠冪洿鎺ュ嚭
-        if (list.size() == 1) {
-            return list.get(0);
-        }
-        //鍒嗗埆鑾峰彇瀹介珮鐨勭幓鐠冩暟閲�
+        //鑾峰彇瀹介珮鎷嶇涓�鐨勭幓鐠冧俊鎭�
         EdgStorageCageDetails firstSize = list.get(0);
-        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 firstCount = firstSize.getCount();
         Double firstWidth = firstSize.getWidth();
         Double firstHeight = firstSize.getHeight();
+        if (list.size() == 1) {
+            return queryMinGlass(firstWidth, firstHeight, glassId);
+        }
+        //鑾峰彇瀹介珮鎷嶇浜岀殑鐜荤拑淇℃伅
+        EdgStorageCageDetails secondSize = list.get(1);
         Integer secondCount = secondSize.getCount();
         Double secondWidth = secondSize.getWidth();
         Double secondHeight = secondSize.getHeight();
@@ -311,21 +453,116 @@
 
         if (mix >= 2) {
             log.info("鑾峰彇鐜荤拑鏁伴噺鍓�2鐨勭幓鐠冨崰姣斾负{}锛屽ぇ浜�2锛岀洿鎺ュ嚭鐜荤拑鏁版嵁鐨勬渶澶氱殑锛屽锛歿}锛岄珮锛歿}", mix, firstWidth, firstHeight);
-            return queryMinGlass(firstWidth, firstHeight);
+            return queryMinGlass(firstWidth, firstHeight, glassId);
         } else {
             log.info("鑾峰彇鐜荤拑鏁伴噺鍓�2鐨勭幓鐠冨崰姣斾负{}锛屽皬浜�2", mix);
+            //鑾峰彇浠诲姟琛ㄤ腑鏈�鍚庝竴娆″嚭鐗囩殑鐜荤拑id
+            LambdaQueryWrapper<TaskCache> queryWrapper = new LambdaQueryWrapper<TaskCache>().eq(TaskCache::getTaskType, Const.GLASS_CACHE_TYPE_OUT)
+                    .eq(TaskCache::getEndCell, endcell).orderByDesc(TaskCache::getCreateTime);
+            List<TaskCache> taskCacheList = taskCacheService.list(queryWrapper);
+            log.info("鑾峰彇浠诲姟琛ㄤ腑{}绾挎渶鍚庝竴娆″嚭鐗囩殑鐜荤拑浠诲姟淇℃伅锛歿}", endcell, taskCacheList);
+            if (CollectionUtil.isEmpty(taskCacheList)) {
+                log.info("{}绾挎病鏈夊嚭鐗囦换鍔′俊鎭紝鐩存帴鍑虹墖", endcell);
+                return queryMinGlass(firstSize.getWidth(), firstSize.getHeight(), glassId);
+            }
             TaskCache taskCache = taskCacheList.get(0);
-            EdgStorageCageDetails outGlassInfo = edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>().eq(EdgStorageCageDetails::getGlassId, taskCache.getGlassId()));
-            log.info("{}绾挎湁鍑虹墖浠诲姟淇℃伅,浠诲姟淇℃伅涓簕}锛岀幓鐠冧俊鎭负{}", othercell, taskCache, outGlassInfo);
+            EdgStorageCageDetails outGlassInfo = edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
+                    .eq(EdgStorageCageDetails::getGlassId, taskCache.getGlassId()));
+            log.info("{}绾挎湁鍑虹墖浠诲姟淇℃伅,浠诲姟淇℃伅涓簕}锛岀幓鐠冧俊鎭负{}", endcell, 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);
+                        firstWidth, firstHeight, endcell, outGlassInfo.getWidth(), outGlassInfo.getHeight(), secondWidth, secondHeight);
+                return queryMinGlass(secondWidth, secondHeight, glassId);
             } else {
                 log.info("鏁伴噺绗簩澶氱殑瀹絳}楂榹}鍜寋}绾夸换鍔$殑瀹絳}楂榹}鐩稿悓锛屽嚭鏁伴噺鎺掔浜岀殑鐜荤拑锛屽{}楂榹}",
-                        secondWidth, secondHeight, othercell, outGlassInfo.getWidth(), outGlassInfo.getHeight(), firstWidth, firstHeight);
-                return queryMinGlass(firstWidth, firstHeight);
+                        secondWidth, secondHeight, endcell, outGlassInfo.getWidth(), outGlassInfo.getHeight(), firstWidth, firstHeight);
+                return queryMinGlass(firstWidth, firstHeight, glassId);
             }
         }
     }
+
+    /**
+     * 淇濆瓨鍑虹墖浠诲姟鐩稿叧淇℃伅
+     *
+     * @param glassInfo
+     * @param endcell
+     * @param confirmationWrodAddress
+     * @param glassId
+     * @return
+     */
+    private boolean saveOutGlassMessage(EdgStorageCageDetails glassInfo, int endcell, String confirmationWrodAddress, String glassId, Integer currentSlot) {
+        if (glassInfo != null) {
+            log.info("4銆佹坊鍔犲嚭鐗囦换鍔★紝鐜荤拑id锛歿}锛屼换鍔$被鍨嬶細{}锛岃捣濮嬩綅缃細{}锛岀粨鏉熶綅缃細{}", glassInfo.getGlassId(),
+                    2, glassInfo.getSlot(), endcell);
+            if (glassInfo.getGlassId().equals(glassId)) {
+                log.info("5銆佺洿閫氫换鍔�,灏嗙幓鐠冧俊鎭彃鍏ュ崸寮忕悊鐗囩,褰撳墠鐜荤拑淇℃伅:{}", glassInfo);
+                EdgStorageCageDetails details = new EdgStorageCageDetails();
+                BeanUtils.copyProperties(glassInfo, details);
+                EdgStorageCage nearestEmpty = edgStorageCageService.selectNearestEmpty(currentSlot);
+                Assert.isTrue(null != nearestEmpty, "鏍煎瓙宸叉弧,鏃犳硶鎵ц鐩撮�氫换鍔�");
+                log.info("3銆佹煡璇㈠崸寮忕悊鐗囩閲岄潰鐨勭┖鏍�:{}", nearestEmpty);
+                details.setSlot(nearestEmpty.getSlot());
+                details.setState(Const.GLASS_STATE_OUT);
+                edgStorageCageDetailsService.save(details);
+
+                boolean taskCacheStatus = saveTaskCache(glassInfo.getGlassId(), nearestEmpty.getSlot(), endcell, Const.GLASS_CACHE_TYPE_THROUGH);
+                log.info("6銆佹坊鍔犲嚭鐗囦换鍔℃槸鍚﹀畬鎴愶細{}", taskCacheStatus);
+            } else {
+                log.info("5銆侀潪鐩撮�氫换鍔�,灏嗙幓鐠冧俊鎭彃鍏ュ崸寮忕悊鐗囩,褰撳墠鐜荤拑淇℃伅:{}", glassInfo);
+                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;
+    }
+
+    /**
+     * 娣诲姞鐞嗙墖绗间换鍔�
+     *
+     * @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.getHeight() * 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/entity/TaskCache.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/entity/TaskCache.java
index fe7028f..fb0c415 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/entity/TaskCache.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/entity/TaskCache.java
@@ -5,14 +5,35 @@
 
 import java.util.Date;
 
-@Data  //lombok 绠�鍐檍ava浠g爜 瀹炰綋绫荤殑get涓巗et
+/**
+ * 鍗у紡鐞嗙墖绗间换鍔¤〃
+ */
+@Data
 @TableName("task_cache")
 public class TaskCache {
-    private String glassId;//浠诲姟缂栧彿
-    private int startCell;//璧峰
-    private int endCell;//缁撴潫
-    private int taskType;//浠诲姟绫诲瀷
-    private int taskStatus;//浠诲姟鐘舵��
-    private Date createTime;//浠诲姟鐘舵��
+    /**
+     * 浠诲姟缂栧彿
+     */
+    private String glassId;
+    /**
+     * 璧峰
+     */
+    private int startCell;
+    /**
+     * 缁撴潫
+     */
+    private int endCell;
+    /**
+     * 浠诲姟绫诲瀷
+     */
+    private int taskType;
+    /**
+     * 浠诲姟鐘舵��
+     */
+    private int taskStatus;
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private Date createTime;
 
 }
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 486eb8a..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(int 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/application.yml b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
index d0380ee..a344abc 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
@@ -1,14 +1,17 @@
 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
+  sequence:
+    order: false
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
index 102ff13..785ef2f 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/common/S7object.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/common/S7object.java
@@ -24,9 +24,7 @@
     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());
+            String PlcLoadGlass = System.getProperty("user.dir") + "/JsonFile/PlcCacheVerticalGlass.json";
             PlcMesObject = InitUtil.initword(PlcLoadGlass);
         }
     }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/glassinfo/entity/GlassInfo.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/glassinfo/entity/GlassInfo.java
index 43dcc90..c38d086 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/glassinfo/entity/GlassInfo.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/glassinfo/entity/GlassInfo.java
@@ -2,9 +2,10 @@
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
-import java.io.Serializable;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
 
 /**
  * <p>
@@ -54,7 +55,7 @@
     /**
      * 鑶滅郴
      */
-    private Integer filmsid;
+    private String filmsid;
 
     /**
      * 纾ㄥ墠瀹�
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 2ad66f4..ed8f92d 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
@@ -6,7 +6,6 @@
 import com.mes.tools.S7control;
 
 
-
 /**
  * @Author : zhoush
  * @Date: 2024/4/9 15:13
@@ -14,8 +13,8 @@
  */
 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 EPlcType plcType = EPlcType.S200_SMART; // 瑗块棬瀛怭LC绫诲瀷
+    private String ip = "192.168.10.100"; // plc ip鍦板潃
     private int port = 102; // plc 绔彛鍙�
 
 
@@ -25,9 +24,7 @@
     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());
+            String PlcLoadGlass = System.getProperty("user.dir") + "/JsonFile/PlcLoadGlass.json";
             PlcMesObject = InitUtil.initword(PlcLoadGlass);
         }
     }
@@ -54,7 +51,7 @@
                 e.printStackTrace();
             }
 
-            byte[] getplcvlues=   plccontrol.ReadByte(PlcMesObject.getPlcAddressBegin(),PlcMesObject.getPlcAddressLength());
+            byte[] getplcvlues = plccontrol.ReadByte(PlcMesObject.getPlcAddressBegin(), PlcMesObject.getPlcAddressLength());
             PlcMesObject.setPlcParameterList(getplcvlues);
 
         }
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 4d3f240..3fd3a87 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,6 +1,5 @@
 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;
@@ -24,11 +23,12 @@
     @Autowired
     private UpWorkstationService upWorkstationService;
     @Autowired
-    private EngineeringService  engineeringService;
+    private EngineeringService engineeringService;
     @Autowired
     private UpPattenUsageService upPattenUsageService;
 
     PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
+
     /**
      * fixedRate : 涓婁竴涓皟鐢ㄥ紑濮嬪悗鍐嶆璋冪敤鐨勫欢鏃讹紙涓嶇敤绛夊緟涓婁竴娆¤皟鐢ㄥ畬鎴愶級
      * fixedDelay : 涓婁竴涓皟鐢ㄧ粨鏉熷悗鍐嶆璋冪敤鐨勫欢鏃�
@@ -37,48 +37,33 @@
     @Scheduled(fixedDelay = 300)
     public void plcLoadGlassTask() throws InterruptedException {
         try {
-            log.info("寮�濮嬩笂鐗�");
             //鑾峰彇鏄惁鏈変笂鐗囪姹�
             String loadRequest = plcParameterObject.getPlcParameter("loadRequest").getValue();
+            String mesToPlc = plcParameterObject.getPlcParameter("MesToPlc").getValue();
             //鍒ゆ柇寮�濮嬩笂鐗囩殑宸ョ▼鍙�
-            Engineering engineering=engineeringService.selectInitiate(1);
-            if("1".equals(loadRequest)&&engineering!=null){
-                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);
+            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);
-                    //鍑忓皯宸ヤ綅鏁伴噺
-                    upWorkstationService.reduceWorkstationNumber(upwork);
-                    //瀹屾垚涓婄墖琛ㄧ姸鎬�
-                    upPattenUsageService.updateupPattenUsageState(upPattenUsage,1);
+                    S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlc").getAddress(), 1);
+                    //鏇存敼涓婄墖琛ㄧ姸鎬�
+                    upPattenUsageService.updateUpPattenUsageState(upPattenUsage, workId);
 
                 }
             }
-            //鑾峰彇鏄惁鏈夋眹鎶�
-            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("鏀跺埌姹囨姤鏈畬鎴愪换鍔�");
-                    S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(), 1);
-                } else if ("3".equals(loadStatus)) {
-                    log.info("鏀跺埌姹囨姤鐜荤拑鐮存崯");
-                    S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(), 1);
-                } else {
-                    log.info("鏀跺埌姹囨姤娓�0鐘舵��");
-                    S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(), 0);
-                }
+            if("1".equals(mesToPlc)&& "0".equals(loadRequest)){
+                //璇锋眰瀛椾负闆舵椂锛屼换鍔″瓧娓呴浂
+                S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlc").getAddress(), 0);
             }
             //鎵ц鍚庝紤鐪�300姣
             //Thread.sleep(300);
@@ -86,28 +71,46 @@
             e.printStackTrace();
         }
     }
-//    @Scheduled(fixedDelay = 300)
-//    public void plcLoadGlassOver() throws InterruptedException {
-//        try {
-//            //鑾峰彇鏄惁鏈夋眹鎶�
-//            String loadStatus = plcParameterObject.getPlcParameter("PlcStatus").getValue();
-//            if ("1".equals(loadStatus)){
-//                log.info("鏀跺埌姹囨姤浠诲姟瀹屾垚");
-//                S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(),1);
-//            }else if ("2".equals(loadStatus)) {
-//                log.info("鏀跺埌姹囨姤鏈畬鎴愪换鍔�");
-//                S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(),1);
-//            }else if("3".equals(loadStatus)){
-//                log.info("鏀跺埌姹囨姤鐜荤拑鐮存崯");
-//                S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(),1);
-//            }else {
-//                log.info("鏀跺埌姹囨姤娓�0鐘舵��");
-//                S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(),0);
-//            }
-//
-//        } catch (Exception e) {
-//            e.printStackTrace();
-//        }
-//    }
+
+    @Scheduled(fixedDelay = 300)
+    public void plcLoadGlassReport(){
+        //鑾峰彇鏄惁鏈夋眹鎶�
+        String loadStatus = plcParameterObject.getPlcParameter("PlcStatus").getValue();
+        if (loadStatus != null) {
+            log.info(loadStatus);
+            switch (loadStatus) {
+                case "1":
+                    log.info("鏀跺埌姹囨姤浠诲姟瀹屾垚");
+                    S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(), 1);
+                    break;
+                case "2":
+                    log.info("鏀跺埌姹囨姤鏈畬鎴愪换鍔�");
+                    //鍑忓皯宸ヤ綅鏁伴噺,鎭㈠浠诲姟鐘舵��
+                    overTask(loadStatus, 0);
+                    break;
+                case "3":
+                    log.info("鏀跺埌姹囨姤鐜荤拑鐮存崯");
+                    overTask(loadStatus, 0);
+                    break;
+                case "0":
+                    log.info("鏀跺埌姹囨姤娓�0鐘舵��");
+                    //鍑忓皯宸ヤ綅鏁伴噺,瀹屾垚浠诲姟鐘舵��
+                    overTask(loadStatus, 100);
+                    break;
+            }
+        }
+    }
+
+    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/controller/UpWorkstationController.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/controller/UpWorkstationController.java
index 0534009..f1907fe 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/controller/UpWorkstationController.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/controller/UpWorkstationController.java
@@ -2,8 +2,6 @@
 
 
 import com.mes.utils.Result;
-import com.mes.workstation.entity.GlassInfo;
-import com.mes.workstation.entity.UpWorkSequence;
 import com.mes.workstation.entity.UpWorkstation;
 import com.mes.workstation.service.UpWorkstationService;
 import io.swagger.annotations.ApiOperation;
@@ -29,6 +27,7 @@
     private UpWorkstationService upWorkstationService;
     @ApiOperation("鏄剧ず宸ヤ綅涓婄殑鐜荤拑淇℃伅")
     @GetMapping("/list") //鏌ヨ鐜板湪涓婄墖鏈虹殑鐜荤拑淇℃伅
+    @ResponseBody
     public Result<List<UpWorkstation>> list() {
         List<UpWorkstation> glass = upWorkstationService.list();
         log.info("鏄剧ず宸ヤ綅涓婄殑鐜荤拑淇℃伅:{}", glass);
@@ -40,19 +39,21 @@
     @ApiOperation("淇敼宸ヤ綅琛ㄥ鍔犵幓鐠冧俊鎭垨鑰呭垹闄ょ幓鐠冧俊鎭�,浼犻�扷pworkstation绫�,鍙慨鏀瑰楂樺帤鏁伴噺鑶滅郴")
     @PostMapping("/updateGlassMessage")
     @ResponseBody
-    public Result<UpWorkstation> updateGlassMessage(@RequestBody UpWorkstation upwork) {
+    public Result<List<UpWorkstation>> updateGlassMessage(@RequestBody UpWorkstation upwork) {
         upWorkstationService.updateGlassMessage(upwork);
-        return Result.build(200, "", upwork);
+        List<UpWorkstation> glass = upWorkstationService.list();
+        return Result.build(200, "", glass);
     }
 
-//    @ApiOperation("寮�濮嬩笂鐗囦换鍔�")
-//    @PostMapping("/selectPriority") //璋冪敤涓婄墖浠诲姟
-//    @ResponseBody
-//    public void selectPriority() {
-//        UpWorkSequence work=upWorkstationService.selectPriority();
-//        log.info("鏄剧ず鍙笂鐨勭幓鐠冧俊鎭�:{}", work);
-//
-//    }
+
+
+    @ApiOperation("淇敼涓婄墖mes鑱斿姩璇锋眰瀛�")
+    @PostMapping("/updateMesInkageLoad")
+    @ResponseBody
+    public Result<String> updateMesInkageLoad(@RequestBody short inKageWord) {
+        String result = upWorkstationService.updateMesInkageLoad(inKageWord);
+        return Result.success(result);
+    }
 
 }
 
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/mapper/LoadGlassMapper.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/mapper/LoadGlassMapper.java
index aedecb4..93ba7fb 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/mapper/LoadGlassMapper.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/mapper/LoadGlassMapper.java
@@ -11,7 +11,7 @@
 public interface LoadGlassMapper extends BaseMapper<UpWorkstation> {
     //鍒ゆ柇浼樺厛宸ヤ綅鍚哥墖
     @Select("select b.layout_sequence,a.number from up_workstation a left join up_patten_usage b " +
-            "on a.pattern_width=b.width and a.pattern_heigth=b.width " +
+            "on a.pattern_width=b.width and a.pattern_height=b.height " +
             "and a.pattern_thickness=b.thickness where a.workstation_id=#{id}")
     Map<String, Object> selectPriority(int id);
 
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 ca6f827..bd2a6c8 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
@@ -3,7 +3,6 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.mes.engineering.entity.Engineering;
 import com.mes.uppattenusage.entity.UpPattenUsage;
-import com.mes.workstation.entity.UpWorkSequence;
 import com.mes.workstation.entity.UpWorkstation;
 
 /**
@@ -15,26 +14,29 @@
  * @since 2024-04-07
  */
 public interface UpWorkstationService extends IService<UpWorkstation> {
-    //PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
-
-
 
     //鍒ゆ柇浼樺厛鍚哥墖鐜荤拑
+    /**
+     * 鍒ゆ柇浼樺厛鍚哥墖浣嶇疆
+     * @return UpPattenUsage
+     */
     UpPattenUsage selectPriority(Engineering engineering);
-    //鏌ヨ姝e湪杩涜鐨勫崟鐗囦俊鎭�
-    UpWorkstation selectworkstation(UpPattenUsage upPattenUsage);
-    //鍑忓皯宸ヤ綅鏁伴噺
-    void reduceWorkstationNumber(UpWorkstation upwork);
-
-
+    /**
+     * 鏌ヨ姝e湪杩涜鐨勫崟鐗囦俊鎭�
+     * @return UpWorkstation
+     */
+    UpWorkstation selectWorkstation(UpPattenUsage upPattenUsage);
+    /**
+     * 鍑忓皯宸ヤ綅鏁伴噺
+     */
+    void reduceWorkstationNumber(Integer upworkId);
     /**
      * 澧炲姞浜哄伐杈撳叆鐨勫伐浣嶇幓鐠冧俊鎭�
-     *
      * @param upwork
      */
-    //淇敼宸ヤ綅琛ㄥ鍔犵幓鐠冧俊鎭垨鑰呭垹闄ょ幓鐠冧俊鎭�
     void updateGlassMessage(UpWorkstation upwork);
 
 
+    String updateMesInkageLoad(short inKageWord);
 }
 
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 1e24d13..9949483 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
@@ -3,10 +3,11 @@
 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.common.S7object;
+import com.mes.device.PlcParameterObject;
 import com.mes.engineering.entity.Engineering;
 import com.mes.uppattenusage.entity.UpPattenUsage;
 import com.mes.uppattenusage.mapper.UpPattenUsageMapper;
-import com.mes.workstation.entity.UpWorkSequence;
 import com.mes.workstation.entity.UpWorkstation;
 import com.mes.workstation.mapper.UpWorkstationMapper;
 import com.mes.workstation.service.UpWorkstationService;
@@ -17,7 +18,7 @@
 
 /**
  * <p>
- *  鏈嶅姟瀹炵幇绫�
+ * 鏈嶅姟瀹炵幇绫�
  * </p>
  *
  * @author zhoush
@@ -35,10 +36,11 @@
 
     //鍒ゆ柇浼樺厛鍚哥墖浣嶇疆鍚庡彂閫佸嚭鐗囦换鍔�
 
+    @Override
     public UpPattenUsage selectPriority(Engineering engineering) {
-        QueryWrapper<UpPattenUsage> wrapper=new QueryWrapper<>();
+        QueryWrapper<UpPattenUsage> wrapper = new QueryWrapper<>();
         wrapper.eq("state", 0)
-                .eq("engineering_id",engineering.getEngineerId())
+                .eq("engineering_id", engineering.getEngineerId())
                 .orderByAsc("layout_sequence")
                 .last("limit 1");
         return upPattenUsageMapper.selectOne(wrapper);
@@ -46,7 +48,7 @@
 
     //鍒ゆ柇宸ヤ綅鏄惁鏈夌鍚堟潯浠剁殑鐜荤拑
     @Override
-    public UpWorkstation selectworkstation(UpPattenUsage upPattenUsage) {
+    public UpWorkstation selectWorkstation(UpPattenUsage upPattenUsage) {
         QueryWrapper<UpWorkstation> wrapper = new QueryWrapper<>();
         wrapper.eq("pattern_width", upPattenUsage.getWidth())
                 .eq("pattern_height", upPattenUsage.getHeight())
@@ -59,12 +61,12 @@
     }
 
     @Override
-    public void reduceWorkstationNumber(UpWorkstation upwork) {
+    public void reduceWorkstationNumber(Integer upworkId) {
         UpdateWrapper<UpWorkstation> wrapper = new UpdateWrapper<>();
-        wrapper.eq("id", upwork.getWorkstationId())
+        wrapper.eq("id", upworkId)
                 .setSql("number = number - 1");
         boolean updateResult = upWorkstationMapper.update(null, wrapper) > 0;
-        log.info("鍑忓皯宸ヤ綅鏁伴噺{}",updateResult);
+        log.info("鍑忓皯宸ヤ綅鏁伴噺{}", updateResult);
 
     }
 
@@ -74,9 +76,23 @@
     @Override
     public void updateGlassMessage(UpWorkstation upwork) {
         UpdateWrapper<UpWorkstation> updateWrapper = new UpdateWrapper<>();
-        updateWrapper.eq("workstation_id", upwork.getWorkstationId());
-        int update = this.baseMapper.update(upwork, updateWrapper);
+        if (upwork.getWorkstationId() == 1 || upwork.getWorkstationId() == 3) {
+            updateWrapper.eq("workstation_id", upwork.getWorkstationId());
+            int update = this.baseMapper.update(upwork, updateWrapper);
+        } else {
+            if (upwork.getPatternHeight() > 2700 || upwork.getPatternHeight() == 0) {
+                updateWrapper.eq("workstation_id", upwork.getWorkstationId());
+                int update = this.baseMapper.update(upwork, updateWrapper);
+            }
+        }
     }
 
+    @Override
+    public String updateMesInkageLoad(short inKageWord) {
+        PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
+        log.info("淇敼璁惧涓ゆ爧璇锋眰涓簕}锛�0鑱旂嚎锛�1鑱斿姩", inKageWord);
+        S7object.getinstance().plccontrol.WriteWord(plcParameterObject.getPlcParameter("InkageStatus").getAddress(), inKageWord);
+        return "success";
+    }
 
-}
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/JsonFile/PlcLoadGlass.json b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/JsonFile/PlcLoadGlass.json
index 1a32fde..d85b3d8 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/JsonFile/PlcLoadGlass.json
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/JsonFile/PlcLoadGlass.json
@@ -1,6 +1,6 @@
 {
-  "plcAddressBegin":"DB14.0",
-  "plcAddressLenght":"98",
+  "plcAddressBegin":"DB1.2000",
+  "plcAddressLenght":"100",
   "dataType":"word",
   "parameteInfor":[
     {
@@ -25,6 +25,13 @@
       "unit":""
     },
     {
+          "codeId": "InkageStatus",
+          "addressIndex":"22",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":""
+    },
+    {
       "codeId": "WorkId",
       "addressIndex":"24",
       "addressLenght":"2",
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 c4d40db..9725c57 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/test/java/com/mes/LoadGlassModuleApplicationTest.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/test/java/com/mes/LoadGlassModuleApplicationTest.java
@@ -4,7 +4,6 @@
 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.pp.service.OptimizeProjectService;
 import com.mes.uppattenusage.entity.UpPattenUsage;
 import com.mes.uppattenusage.service.impl.UpPattenUsageServiceImpl;
@@ -17,7 +16,6 @@
 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;
 
@@ -59,20 +57,15 @@
         log.info("寮�濮嬩笂鐗囩殑宸ョ▼锛歿}", Arrays.asList(engineering));
         UpPattenUsage upPattenUsage = workstationService.selectPriority(engineering);
         log.info("涓婄墖椤哄簭锛歿}", Arrays.asList(upPattenUsage));
-        UpWorkstation glass2=workstationService.selectworkstation(upPattenUsage);
+        UpWorkstation glass2=workstationService.selectWorkstation(upPattenUsage);
         log.info("绗﹀悎鐨勫伐浣嶇幓鐠儃}",glass2);
-        workstationService.reduceWorkstationNumber(glass2);
+        workstationService.reduceWorkstationNumber(glass2.getWorkstationId());
         //鍑忓皯鏁伴噺
-        upPattenUsageService.updateupPattenUsageState(upPattenUsage,1);
+        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");
@@ -82,11 +75,20 @@
     @Test
     public  void  textengineering2(){
         //鏇存柊宸ョ▼琛ㄧ姸鎬佷负宸查鍙�
-        optimizeProjectService.changeTask("P24050801",200);
+        //optimizeProjectService.changeTask("P24050801",200);
+        engineeringService.changeTask("P24051102",1);
     }
     @Test
     public  void  textengineering3(){
         //鍒ゆ柇鏄惁宸蹭繚瀛樿繃宸ョ▼鍙峰埌涓婄墖琛�
-        upPattenUsageService.selectedEngineering("P24050801");
+        UpPattenUsage upPattenUsage=upPattenUsageService.selectOverTask();
+        log.info("涓婄墖琛ㄤ换鍔′腑鐨勬暟鎹畕}",upPattenUsage);
     }
+    @Test
+    public  void  textengineering4(){
+        //鍒ゆ柇鏄惁宸蹭繚瀛樿繃宸ョ▼鍙峰埌涓婄墖琛�
+        List<Engineering> engineerings=engineeringService.selectTask();
+        log.info("涓婄墖琛ㄤ换鍔′腑鐨勬暟鎹畕}",engineerings);
+    }
+
 }
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 e3218e1..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 9b1b935..0000000
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/Plcdownglass.java
+++ /dev/null
@@ -1,71 +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 = "3";
-            String number = "4";
-            // 杩涚墖璇锋眰
-            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()) {
-                    //涓嬬墖鏇存柊
-                    downWorkstationService.insertdownglassinfo();
-                    // 鎵ц杩涚墖鎿嶄綔
-                    downStorageCageService.processInto(number);
-                } else {
-                    // 濡傛灉 processOut() 杩斿洖 false锛屽彲浠ュ湪杩欓噷澶勭悊鍏朵粬閫昏緫
-                    log.info("鍑虹墖璇锋眰澶辫触锛屾棤娉曟墽琛岃繘鐗囨搷浣�");
-                }
-
-            }
-
-
-        } 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..92f56b5
--- /dev/null
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/S7object.java
@@ -0,0 +1,59 @@
+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 = System.getProperty("user.dir") + "/JsonFile/PlcdownGlass.json";
+            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/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 f6d883e..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(String id);
+    void updateTaskState(String id);
 
     /**
      * 鍒犻櫎浠诲姟
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 2d163d1..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,14 +29,14 @@
     @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(String 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);
     }
 
@@ -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/service/DownStorageCageDetailsService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java
index 1327452..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,11 +1,12 @@
 package com.mes.downstorage.service;
 
+import com.github.yulichang.base.MPJBaseService;
 import com.mes.downstorage.entity.DownStorageCageDetails;
 
 import java.util.List;
 import java.util.Map;
 
-public interface DownStorageCageDetailsService {
+public interface DownStorageCageDetailsService extends MPJBaseService<DownStorageCageDetails> {
     /**
      * @return //娣诲姞鐞嗙墖绗煎唴淇℃伅
      */
@@ -47,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 7aea275..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,12 @@
  */
 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 鍑虹墖
-     */
-    boolean processOut();
 
 
     /**
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 c10e337..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,5 +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;
 
 
@@ -12,20 +15,32 @@
 
 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 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(required=false)
+    @Autowired(required = false)
     private DownStorageCageMapper downStorageCageMapper;
     @Autowired
     private DownStorageCageDetailsMapper downStorageCageDetailsMapper;
+    @Autowired
+    private GlassInfoMapper glassInfoMapper;
+    @Autowired
+    private DownWorkstationMapper downWorkstationMapper;
 
     @Override
     public void addDownStorageCageDetails(DownStorageCageDetails details) {
@@ -35,7 +50,7 @@
 
     @Override
     //淇敼鐞嗙墖绗煎唴淇℃伅 鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑 銆愭坊鍔�/鍒犻櫎/鏇存崲銆�
-    public boolean updatedownStorageCageDetails(DownStorageCageDetails details){
+    public boolean updatedownStorageCageDetails(DownStorageCageDetails details) {
         baseMapper.updateById(details);
         return true;
     }
@@ -59,19 +74,6 @@
 
         );
     }
-
-
-
-
-
-
-
-
-
-
-
-
-
 
 
 //    @Override
@@ -159,17 +161,78 @@
 //    }
 
 
+    @Override
+    public List<DownStorageCageDetails> CacheOut1(int start, int end) {
 
 
+        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));
 
 
+            List<String> flowCardIds = new ArrayList<>();
+            for (DownWorkstation workstation : workstationList) {
+                flowCardIds.add(workstation.getFlowCardId());
+            }
+
+            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 d139f5f..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,9 +1,10 @@
 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.github.yulichang.wrapper.MPJLambdaWrapper;
-import com.mes.common.PLCAutoMes;
-import com.mes.common.S7control;
+
 import com.mes.device.PlcParameterObject;
 import com.mes.downglassinfo.entity.DownGlassTask;
 import com.mes.downglassinfo.service.DownGlassTaskService;
@@ -27,7 +28,7 @@
 
 /**
  * <p>
- *  鏈嶅姟瀹炵幇绫�
+ * 鏈嶅姟瀹炵幇绫�
  * </p>
  *
  * @author zhoush
@@ -36,7 +37,7 @@
 @Slf4j
 @Service
 public class DownStorageCageServiceImpl extends ServiceImpl<DownStorageCageMapper, DownStorageCage> implements DownStorageCageService {
-    @Autowired(required=false)
+    @Autowired(required = false)
     private DownStorageCageMapper downStorageCageMapper;
 
     @Autowired
@@ -49,46 +50,23 @@
     @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);
@@ -96,134 +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();
-
-            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,
@@ -236,6 +89,10 @@
                         .isNull(DownStorageCageDetails::getSlot)
         );
     }
+
+
+
+
 
 
     @Override
@@ -253,42 +110,44 @@
 
     /**
      * 淇敼鐞嗙墖绗间俊鎭� 鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑 銆愬惎鐢�/绂佺敤銆�
+     *
      * @param downStorageCage
      * @return
      */
     @Override
-    public boolean updateDownStorageCage(DownStorageCage downStorageCage){
-        DownStorageCage downItem=baseMapper.selectById(downStorageCage.getId());
+    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());
+    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){
+            if (edgDItem != null) {
                 //鍙紶鏍煎瓙  锛氱Щ闄ょ幓鐠�
-                DownStorageCageDetails newresult=downStorageCageDetailsMapper.selectById(downStorageCageDetails.getId());
+                DownStorageCageDetails newresult = downStorageCageDetailsMapper.selectById(downStorageCageDetails.getId());
                 newresult.setSlot(downItem.getSlot());
                 downStorageCageDetailsMapper.updateById(newresult);
             }
         }
 
-        if (downItem!=null){
+        if (downItem != null) {
             //绉婚櫎
-            DownStorageCageDetails result=downStorageCageDetailsMapper.selectOne(new MPJLambdaWrapper<DownStorageCageDetails>().eq(DownStorageCageDetails::getSlot,downStorageCageId));
-            if (result!=null){
+            DownStorageCageDetails result = downStorageCageDetailsMapper.selectOne(new MPJLambdaWrapper<DownStorageCageDetails>().eq(DownStorageCageDetails::getSlot, downStorageCageId));
+            if (result != null) {
                 result.setSlot(0);
                 downStorageCageDetailsMapper.updateById(result);
             }
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..d6f8f74 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);
@@ -131,12 +131,12 @@
 
 
 
-    @ApiOperation("鑾峰彇宸ヤ綅鏄剧ず鍥�")
+    @ApiOperation("鑾峰彇宸ヤ綅鏄剧ず鍥�1")
     @GetMapping("/getwo")
     public ResponseEntity<Map<String, Object>> getwo() {
         Map<String, Object> responseData = new HashMap<>();
         try {
-            List<Map<String, Object>> data = downWorkstationService.getTotalGlassDimensionsByWorkstation();
+            List<Map<String, Object>> data = downWorkstationService.getTotalGlassDimensionsByWorkstation(1,3);
             responseData.put("code", 200);
             responseData.put("msg", "鎴愬姛");
             responseData.put("data", data);
@@ -149,7 +149,23 @@
         }
     }
 
-
+    @ApiOperation("鑾峰彇宸ヤ綅鏄剧ず鍥�1")
+    @GetMapping("/getwo2")
+    public ResponseEntity<Map<String, Object>> getw2o() {
+        Map<String, Object> responseData = new HashMap<>();
+        try {
+            List<Map<String, Object>> data = downWorkstationService.getTotalGlassDimensionsByWorkstation(4,6);
+            responseData.put("code", 200);
+            responseData.put("msg", "鎴愬姛");
+            responseData.put("data", data);
+            return ResponseEntity.ok(responseData);
+        } catch (Exception e) {
+            responseData.put("code", 500);
+            responseData.put("msg", "澶辫触");
+            responseData.put("data", null);
+            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(responseData);
+        }
+    }
 
 
 
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 29e8dfc..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
@@ -59,4 +59,14 @@
      * 鐜荤拑ID
      */
     private String glassId;
+
+    /**
+     * 宸ヤ綅id
+     */
+    private String workstationid;
+
+    /**
+     * 鏈哄櫒浜�
+     */
+    private String Robot;
 }
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..8a4ba9d 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();
+    List<Map<String, Object>> getTotalGlassDimensionsByWorkstation(int start,int end);
+
+
+    /**
+     * @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 efb02ba..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,12 +18,12 @@
     /**
      * @param downGlassInfo 鎻掑叆浠诲姟
      */
-    void insertdownWorkstationtask(DownGlassInfo downGlassInfo);
+    void insertdownWorkstationtask(DownGlassInfo downGlassInfo,String workstationid);
 
     /**
      * @param downWorkstationTask 鏇存柊浠诲姟鐘舵��
      */
-    void updateTaskStateToZero(DownWorkstationTask downWorkstationTask);
+    void updateTaskState(DownWorkstationTask downWorkstationTask);
 
     /**
      * @return 鑾峰彇浠诲姟鐘舵�佷负1鐨勪俊鎭�
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 668caf6..a602f88 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
@@ -62,31 +62,43 @@
 
     //宸ヤ綅鏄剧ず
     @Override
-    public List<Map<String, Object>> getTotalGlassDimensionsByWorkstation() {
+    public List<Map<String, Object>> getTotalGlassDimensionsByWorkstation(int start,int end) {
         MPJQueryWrapper<DownWorkstation> queryWrapper = new MPJQueryWrapper<>();
         queryWrapper.select("t.workstation_id", "t.flow_card_id", "COALESCE(SUM(b.width), 0) AS totalwidth", "COALESCE(SUM(b.height), 0) AS totalheight")
                 .leftJoin("down_glass_info b on t.flow_card_id = b.flow_card_id")
-                .groupBy("t.workstation_id", "t.flow_card_id");
+                .groupBy("t.workstation_id", "t.flow_card_id")
+                .orderByAsc("t.workstation_id").between("t.workstation_id", start, end)
+
+        ;
 
     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<>();
-
-            // 鍒涘缓瀛愰」锛坕tem锛夊璞�
             Map<String, Object> item = new HashMap<>();
-            item.put("height", downWorkstionAndDownGlassinfo.getTotalheight()); // 璁剧疆瀛愰」楂樺害锛屾牴鎹疄闄呮儏鍐佃缃�
-            item.put("width", downWorkstionAndDownGlassinfo.getTotalwidth()); // 璁剧疆瀛愰」瀹藉害锛屾牴鎹疄闄呮儏鍐佃缃�
-            item.put("fillColor", "yellow"); // 璁剧疆瀛愰」棰滆壊
-            item.put("content", downWorkstionAndDownGlassinfo.getFlowCardId()); // 浣跨敤娴佺▼鍗″彿浣滀负瀛愰」鍐呭
+            item.put("height", downWorkstionAndDownGlassinfo.getTotalheight());
+            item.put("width", downWorkstionAndDownGlassinfo.getTotalwidth());
+            item.put("fillColor", "yellow");
+            item.put("content", downWorkstionAndDownGlassinfo.getFlowCardId());
 
-            rack.put("item", item); // 灏嗗瓙椤瑰璞℃斁鍏ヨ揣鏋跺璞′腑
+            // 鏌ヨ DownGlassInfo 骞舵坊鍔犲埌 item 涓�
+            MPJQueryWrapper<DownGlassInfo> glassInfoQueryWrapper = new MPJQueryWrapper<>();
+            glassInfoQueryWrapper.select("*"); // 鏌ヨ鎵�鏈夊垪
+            glassInfoQueryWrapper.eq("flow_card_id", downWorkstionAndDownGlassinfo.getFlowCardId());
+            List<DownGlassInfo> downGlassInfoList = downGlassInfoMapper.selectList(glassInfoQueryWrapper);
 
-            result.add(rack); // 灏嗚揣鏋跺璞℃坊鍔犲埌缁撴灉鍒楄〃涓�
-            //log.info("璐ф灦瀵硅薄: {}", rack);
+
+         if (!downGlassInfoList.isEmpty()) {
+
+                item.put("downGlassInfoList", downGlassInfoList);
+
+            }
+
+            rack.put("item", item);
+            result.add(rack);
         }
-
+        log.info("result"+(result));
         return result; // 杩斿洖鏈�缁堢粨鏋�
     }
 
@@ -148,6 +160,7 @@
 
 
 
+    @Override
     public DownWorkstation selectByFlowCardId(String flowcardid) {
         QueryWrapper<DownWorkstation> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("flow_card_id", flowcardid);
@@ -167,74 +180,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.setId(downGlassInfo.getId());
-                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.setGlassId(downGlassInfo.getGlassId());
-                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.getGlassId());
-                //鍒犻櫎涓嬬墖浠诲姟琛ㄤ腑鐨勮褰�
-                downGlassTaskService.deleteTask(downGlassInfo.getGlassId());
-
-                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);
-                    //鍒犻櫎鏈烘浠诲姟琛�
-                    downWorkstationTaskService.deleteTask(downWorkstation);
-
-
-                }
-            }
-        } 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 c54fa2b..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
@@ -27,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();
@@ -38,6 +38,7 @@
         BeanUtils.copyProperties(downGlassInfo,entity);
         entity.setId(newId); // 璁剧疆鎵嬪姩閫掑鐨� id
         entity.setState(1);
+        entity.setWorkstationid(workstationid);
         baseMapper.insert(entity);
     }
 
@@ -66,10 +67,10 @@
     }
 
     @Override
-    public void updateTaskStateToZero(DownWorkstationTask downWorkstationTask) {
+    public void updateTaskState(DownWorkstationTask downWorkstationTask) {
         LambdaUpdateWrapper<DownWorkstationTask> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
 
-        lambdaUpdateWrapper.set(DownWorkstationTask::getState, 0)
+        lambdaUpdateWrapper.set(DownWorkstationTask::getState, 2)
                 .eq(DownWorkstationTask::getGlassId, downWorkstationTask.getGlassId());
 
         baseMapper.update(new DownWorkstationTask(), lambdaUpdateWrapper);
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..69b61b3
--- /dev/null
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownCacheGlassTask.java
@@ -0,0 +1,293 @@
+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);
+
+//        if(glassInfo.getFlowCardId()=){
+//
+//        }
+        //娣诲姞杩涚墖浠诲姟  鏌ユ壘绌烘牸
+        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/resources/JsonFile/PlcdownGlass.json b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.json
index d44cf10..3880ffc 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.json
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.json
@@ -14,22 +14,22 @@
       "addressLenght": "2"
     },
     {
-      "codeId": "spare",
+      "codeId": "G06RobotTaskRequestWord",
       "addressIndex": "4",
       "addressLenght": "2"
     },
     {
-      "codeId": "spare",
+      "codeId": "G06ID",
       "addressIndex": "6",
       "addressLenght": "2"
     },
     {
-      "codeId": "spare",
+      "codeId": "G11RobotTaskRequestWord",
       "addressIndex": "8",
       "addressLenght": "2"
     },
     {
-      "codeId": "spare",
+      "codeId": "G011ID",
       "addressIndex": "10",
       "addressLenght": "2"
     },
@@ -69,12 +69,12 @@
       "addressLenght": "2"
     },
     {
-      "codeId": "鍑虹墖ID",
+      "codeId": "OutputID",
       "addressIndex": "26",
       "addressLenght": "2"
     },
     {
-      "codeId": "鍓嶇鍚庣涓嬬墖",
+      "codeId": "FrontOrRearLowerSlice",
       "addressIndex": "28",
       "addressLenght": "2"
     },
@@ -84,22 +84,22 @@
       "addressLenght": "2"
     },
     {
-      "codeId": "spare",
+      "codeId": "G06RobotTaskReply",
       "addressIndex": "32",
       "addressLenght": "2"
     },
     {
-      "codeId": "spare",
+      "codeId": "G06Rack",
       "addressIndex": "34",
       "addressLenght": "2"
     },
     {
-      "codeId": "spare",
+      "codeId": "G11RobotTaskReply",
       "addressIndex": "36",
       "addressLenght": "2"
     },
     {
-      "codeId": "spare",
+      "codeId": "G11Rack",
       "addressIndex": "38",
       "addressLenght": "2"
     },
@@ -144,7 +144,7 @@
       "addressLenght": "2"
     },
     {
-      "codeId": "MES浠诲姟鐘舵��",
+      "codeId": "MESTaskState",
       "addressIndex": "56",
       "addressLenght": "2"
     },
@@ -154,37 +154,37 @@
       "addressLenght": "2"
     },
     {
-      "codeId": "鎶ヨ鐘舵��",
+      "codeId": "AlarmState",
       "addressIndex": "60",
       "addressLenght": "2"
     },
     {
-      "codeId": "鎶ヨ瀛�1",
+      "codeId": "Alarm1",
       "addressIndex": "62",
       "addressLenght": "2"
     },
     {
-      "codeId": "鎶ヨ瀛�2",
+      "codeId": "Alarm2",
       "addressIndex": "64",
       "addressLenght": "2"
     },
     {
-      "codeId": "鎶ヨ瀛�3",
+      "codeId": "Alarm3",
       "addressIndex": "66",
       "addressLenght": "2"
     },
     {
-      "codeId": "鎶ヨ瀛�4",
+      "codeId": "Alarm4",
       "addressIndex": "68",
       "addressLenght": "2"
     },
     {
-      "codeId": "鍐呭",
+      "codeId": "neirong",
       "addressIndex": "70",
       "addressLenght": "2"
     },
     {
-      "codeId": "璁惧鐘舵�佸瓧",
+      "codeId": "device",
       "addressIndex": "72",
       "addressLenght": "2"
     },
@@ -199,37 +199,37 @@
       "addressLenght": "2"
     },
     {
-      "codeId": "杈撳叆杈撳嚭1",
+      "codeId": "InOut1",
       "addressIndex": "78",
       "addressLenght": "2"
     },
     {
-      "codeId": "杈撳叆杈撳嚭2",
+      "codeId": "InOut2",
       "addressIndex": "80",
       "addressLenght": "2"
     },
     {
-      "codeId": "杈撳叆杈撳嚭3",
+      "codeId": "InOut3",
       "addressIndex": "82",
       "addressLenght": "2"
     },
     {
-      "codeId": "杈撳叆杈撳嚭4",
+      "codeId": "InOut4",
       "addressIndex": "84",
       "addressLenght": "2"
     },
     {
-      "codeId": "杈撳叆杈撳嚭5",
+      "codeId": "InOut5",
       "addressIndex": "86",
       "addressLenght": "2"
     },
     {
-      "codeId": "杈撳叆杈撳嚭6",
+      "codeId": "InOut6",
       "addressIndex": "88",
       "addressLenght": "2"
     },
     {
-      "codeId": "杈撳叆杈撳嚭7",
+      "codeId": "InOut7",
       "addressIndex": "90",
       "addressLenght": "2"
     },
@@ -259,97 +259,97 @@
       "addressLenght": "2"
     },
     {
-      "codeId": "G04鍔ㄤ綔鐘舵��",
+      "codeId": "G04ActionState",
       "addressIndex": "102",
       "addressLenght": "2"
     },
     {
-      "codeId": "G05鍔ㄤ綔鐘舵��",
+      "codeId": "G05ActionState",
       "addressIndex": "104",
       "addressLenght": "2"
     },
     {
-      "codeId": "G06鍔ㄤ綔鐘舵��",
+      "codeId": "G06ActionState",
       "addressIndex": "106",
       "addressLenght": "2"
     },
     {
-      "codeId": "G07鍔ㄤ綔鐘舵��",
+      "codeId": "G07ActionState",
       "addressIndex": "108",
       "addressLenght": "2"
     },
     {
-      "codeId": "G08鍔ㄤ綔鐘舵��",
+      "codeId": "G08ActionState",
       "addressIndex": "110",
       "addressLenght": "2"
     },
     {
-      "codeId": "G09鍔ㄤ綔鐘舵��",
+      "codeId": "G09ActionState",
       "addressIndex": "112",
       "addressLenght": "2"
     },
     {
-      "codeId": "G10鍔ㄤ綔鐘舵��",
+      "codeId": "G10ActionState",
       "addressIndex": "114",
       "addressLenght": "2"
     },
     {
-      "codeId": "G11鍔ㄤ綔鐘舵��",
+      "codeId": "G11ActionState",
       "addressIndex": "116",
       "addressLenght": "2"
     },
     {
-      "codeId": "G12鍔ㄤ綔鐘舵��",
+      "codeId": "G12ActionState",
       "addressIndex": "118",
       "addressLenght": "2"
     },
     {
-      "codeId": "G13鍔ㄤ綔鐘舵��",
+      "codeId": "G13ActionState",
       "addressIndex": "120",
       "addressLenght": "2"
     },
     {
-      "codeId": "G04ID",
+      "codeId": "G04IDS",
       "addressIndex": "122",
       "addressLenght": "2"
     },
     {
-      "codeId": "G05ID",
+      "codeId": "G05IDS",
       "addressIndex": "124",
       "addressLenght": "2"
     },
     {
-      "codeId": "G06ID",
+      "codeId": "G06IDS",
       "addressIndex": "126",
       "addressLenght": "2"
     },
     {
-      "codeId": "G07ID",
+      "codeId": "G07IDS",
       "addressIndex": "128",
       "addressLenght": "2"
     },
     {
-      "codeId": "G08ID",
+      "codeId": "G08IDS",
       "addressIndex": "130",
       "addressLenght": "2"
     },
     {
-      "codeId": "G09ID",
+      "codeId": "G09IDS",
       "addressIndex": "132",
       "addressLenght": "2"
     },
     {
-      "codeId": "G10ID",
+      "codeId": "G10IDS",
       "addressIndex": "134",
       "addressLenght": "2"
     },
     {
-      "codeId": "G11ID",
+      "codeId": "G11IDS",
       "addressIndex": "136",
       "addressLenght": "2"
     },
     {
-      "codeId": "G12ID",
+      "codeId": "G12IDS",
       "addressIndex": "138",
       "addressLenght": "2"
     },
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/test/java/mes/UnloadGlassModuleApplicationTest.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java
index b46da5e..09de05d 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java
@@ -109,15 +109,23 @@
     @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("宸ヤ綅鏄剧ず");
-        downWorkstationService.getTotalGlassDimensionsByWorkstation();
+        downWorkstationService.getTotalGlassDimensionsByWorkstation(1,3);
 
     }
 
@@ -133,7 +141,7 @@
     public void updateTaskStateToZero() {
         log.info("鏇存柊鐘舵��0");
 
-        downGlassTaskServiceImpl.updateTaskStateToZero("3");
+        downGlassTaskServiceImpl.updateTaskState("3");
     }
 
 

--
Gitblit v1.8.0