From 68ee8235c8cd659fba5e59e3d924d5ea093504ab Mon Sep 17 00:00:00 2001
From: wu <731351411@qq.com>
Date: 星期四, 18 七月 2024 08:39:57 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/impl/BigStorageCageFeedTaskServiceImpl.java |   12 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/controller/LoadPositionController.java                      |   99 +
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/controller/StorageTaskController.java                        |  102 +
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java                           |    9 
 UI-Project/src/views/LoginView.vue                                                                                                                |    8 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/entity/LoadPosition.java                                    |   77 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/entity/Damage.java                                                              |    7 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java                                              |   70 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCage.java                              |   15 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/entity/RawUsage.java                                            |  107 +
 UI-Project/src/assets/ypccche.png                                                                                                                 |    0 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/GlassStorageApplication.java                                             |   28 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/ShelfRackService.java                                  |   17 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-prod.yml                                                      |    1 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCage.java                                  |    1 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/dto/DownGlassInfoDTO.java                          |    7 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java             |  165 -
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/service/impl/LoadPositionServiceImpl.java                   |   32 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java                 |   35 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.java                              |   16 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application.yml                                                             |   16 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java                  |   22 
 UI-Project/src/assets/d1a.png                                                                                                                     |    0 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java                                                |   26 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserRoleMapper.java                                              |    3 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/mapper/TemperingGlassInfoMapper.java                                    |    2 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMenuMapper.java                                                  |    3 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.xml                               |    5 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeLayoutMapper.java                                                    |   18 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/EdgGlassTaskInfo.java                                  |    4 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java                 |  122 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-dev.yml                                                         |   25 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstionAndDownGlassinfo.java                 |   13 
 hangzhoumesParent/moduleService/pom.xml                                                                                                           |    1 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-prod.yml                                                  |    5 
 UI-Project/src/views/Caching/cachingbefore.vue                                                                                                    |   26 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java                                                             |    4 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/entity/StorageTask.java                                      |   77 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/mapper/BigStorageCageFeedTaskMapper.java            |    6 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.java                                    |   15 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.xml                                     |    5 
 UI-Project/src/views/UnLoadGlass/loadmachinerack.vue                                                                                              |   97 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java              |   60 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-cz.yml                                                        |   10 
 UI-Project/src/views/User/permissions.vue                                                                                                         |   32 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/StorageTaskService.java                              |   16 
 UI-Project/src/stores/tableData.js                                                                                                                |  225 ++
 UI-Project/config.js                                                                                                                              |    3 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-cz.yml                                                           |    2 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java                                                    |  184 -
 UI-Project/src/lang/zh.js                                                                                                                         |   57 
 UI-Project/src/views/ReportWork/reportWork.vue                                                                                                    |  125 +
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java      |  117 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml                                                       |    2 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-dev.yml                                                       |   14 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeProjectMapper.java                                                   |    3 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-prod.yml                                                           |    8 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java                  |   11 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstation.java                               |   11 
 UI-Project/src/views/Slicecage/slicecage.vue                                                                                                      |  278 ++-
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageService.java                      |    6 
 UI-Project/src/views/GlassStorage/MaterialRackManagement.vue                                                                                      |  236 +-
 UI-Project/src/main.js                                                                                                                            |    6 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java                    |    2 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/GlassInfoService.java                                                |   16 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java                                                               |   11 
 UI-Project/src/views/PurchaseReturn/purchaseReturn.vue                                                                                            |    8 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java                                       |   20 
 UI-Project/src/views/User/rolelist.vue                                                                                                            |  176 +
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java                                         |   36 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/mapper/BigStorageCageOutTaskMapper.java             |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java               |    2 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/service/impl/RawUsageServiceImpl.java                           |   31 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.java                                      |   15 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml                                               |   24 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java     |    1 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/entity/ShelfRack.java                                          |   65 
 UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue                                                                                         |   10 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/controller/WorkAssignmentController.java                               |   11 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java                                        |  207 +
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java                      |    3 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/request/DownWorkRequest.java                       |   28 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeDetailMapper.java                                                    |    3 
 UI-Project/package.json                                                                                                                           |    3 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml                                                               |   10 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.xml                                       |    5 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml                                                              |   10 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java                             |   21 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java                       |   11 
 UI-Project/src/assets/dlpl9.png                                                                                                                   |    0 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java         |    4 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java                                                      |    3 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.java                                |   15 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassTask.java                                   |    4 
 UI-Project/src/assets/lp9.png                                                                                                                     |    0 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java                                             |   17 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/mapper/SysMenuMapper.java                                                      |    3 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.xml                                 |    5 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-cz.yml                                                             |    8 
 UI-Project/src/views/PurchaseReturn/purchaseStorage.vue                                                                                           |    4 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMapper.java                                                      |    2 
 UI-Project/src/router/index.js                                                                                                                    |   26 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/impl/ShelfRackServiceImpl.java                         |   31 
 hangzhoumesParent/moduleService/GlassStorageModule/pom.xml                                                                                        |   34 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java                          |   13 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java                 |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageFeedTaskMapper.xml                               |   20 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java           |   12 
 UI-Project/src/layout/MainErpView.vue                                                                                                             |   15 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java                                           |  129 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-dev.yml                                                          |    5 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeLayoutServiceImpl.java                                         |   22 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/controller/RawUsageController.java                              |  102 +
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeLayoutService.java                                                  |   16 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationMapper.java                         |    7 
 UI-Project/src/views/Caching/cachingun.vue                                                                                                        |   20 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationTaskMapper.java                     |    3 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/S7object.java                                                      |    4 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/service/LoadPositionService.java                            |   19 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java          |    8 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/controller/ShelfRackController.java                            |  102 +
 UI-Project/src/assets/ypcc.png                                                                                                                    |    0 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-cz.yml                                                    |    4 
 UI-Project/src/views/User/userlist.vue                                                                                                            |   28 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserMapper.java                                                  |    3 
 UI-Project/src/views/largescreen/largescreen.vue                                                                                                  |  268 +++
 UI-Project/src/views/UnLoadGlass/Landingindication.vue                                                                                            |    8 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml                                |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java                       |   79 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-dev.yml                                                   |    4 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/impl/StorageTaskServiceImpl.java                     |   31 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/common/S7object.java                                               |    9 
 /dev/null                                                                                                                                         |  311 ---
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.json                                                   |    2 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/service/RawUsageService.java                                    |   17 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-prod.yml                                                        |   30 
 UI-Project/package-lock.json                                                                                                                      |  107 +
 UI-Project/src/assets/lpa9.png                                                                                                                    |    0 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java                    |   12 
 139 files changed, 3,526 insertions(+), 1,484 deletions(-)

diff --git a/UI-Project/config.js b/UI-Project/config.js
index 2dfd4e0..b15a1a5 100644
--- a/UI-Project/config.js
+++ b/UI-Project/config.js
@@ -1,6 +1,7 @@
 export default {
  serverUrl: "10.153.19.150:88/api",
-
+//  serverUrl: "192.168.1.199:88/api",
   serverUrl2: "10.153.19.150:88"
+  // serverUrl2: "192.168.1.199:88"
   //serverUrl:"res.abeim.cn"
 }
\ No newline at end of file
diff --git a/UI-Project/package-lock.json b/UI-Project/package-lock.json
index df7b41a..d8cc8aa 100644
--- a/UI-Project/package-lock.json
+++ b/UI-Project/package-lock.json
@@ -12,7 +12,7 @@
         "@vue-macros/reactivity-transform": "^0.3.23",
         "axios": "^1.6.8",
         "chart.js": "^4.4.3",
-        "echarts": "^5.5.0",
+        "echarts": "^5.5.1",
         "element-plus": "^2.4.0",
         "moment": "^2.30.1",
         "pinia": "^2.1.6",
@@ -21,6 +21,7 @@
         "sweetalert2": "^11.10.7",
         "vue": "^3.3.4",
         "vue-draggable-plus": "^0.5.0",
+        "vue-echarts": "^6.7.3",
         "vue-i18n": "^9.10.1",
         "vue-router": "^4.2.4",
         "vxe-table": "^4.5.15",
@@ -762,12 +763,12 @@
       "integrity": "sha512-M/MERVDZ8hguvjl6MAlLWSLYLS7PzEyXaTb5gEeJ+SF+e9iUC0sdvlzqe91MMDHBoy+nqw7wKcUOrDSyvMCrRg=="
     },
     "node_modules/echarts": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.5.0.tgz",
-      "integrity": "sha512-rNYnNCzqDAPCr4m/fqyUFv7fD9qIsd50S6GDFgO1DxZhncCsNsG7IfUlAlvZe5oSEQxtsjnHiUuppzccry93Xw==",
+      "version": "5.5.1",
+      "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.5.1.tgz",
+      "integrity": "sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==",
       "dependencies": {
         "tslib": "2.3.0",
-        "zrender": "5.5.0"
+        "zrender": "5.6.0"
       }
     },
     "node_modules/element-plus": {
@@ -1351,6 +1352,11 @@
       "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
       "dev": true
     },
+    "node_modules/resize-detector": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmmirror.com/resize-detector/-/resize-detector-0.3.0.tgz",
+      "integrity": "sha512-R/tCuvuOHQ8o2boRP6vgx8hXCCy87H1eY9V5imBYeVNyNVpuL9ciReSccLj2gDcax9+2weXy3bc8Vv+NRXeEvQ=="
+    },
     "node_modules/reusify": {
       "version": "1.0.4",
       "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz",
@@ -1676,6 +1682,55 @@
         }
       }
     },
+    "node_modules/vue-echarts": {
+      "version": "6.7.3",
+      "resolved": "https://registry.npmmirror.com/vue-echarts/-/vue-echarts-6.7.3.tgz",
+      "integrity": "sha512-vXLKpALFjbPphW9IfQPOVfb1KjGZ/f8qa/FZHi9lZIWzAnQC1DgnmEK3pJgEkyo6EP7UnX6Bv/V3Ke7p+qCNXA==",
+      "hasInstallScript": true,
+      "dependencies": {
+        "resize-detector": "^0.3.0",
+        "vue-demi": "^0.13.11"
+      },
+      "peerDependencies": {
+        "@vue/composition-api": "^1.0.5",
+        "@vue/runtime-core": "^3.0.0",
+        "echarts": "^5.4.1",
+        "vue": "^2.6.12 || ^3.1.1"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        },
+        "@vue/runtime-core": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vue-echarts/node_modules/vue-demi": {
+      "version": "0.13.11",
+      "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz",
+      "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==",
+      "hasInstallScript": true,
+      "bin": {
+        "vue-demi-fix": "bin/vue-demi-fix.js",
+        "vue-demi-switch": "bin/vue-demi-switch.js"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      },
+      "peerDependencies": {
+        "@vue/composition-api": "^1.0.0-rc.1",
+        "vue": "^3.0.0-0 || ^2.6.0"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/vue-i18n": {
       "version": "9.13.1",
       "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.13.1.tgz",
@@ -1777,9 +1832,9 @@
       }
     },
     "node_modules/zrender": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.5.0.tgz",
-      "integrity": "sha512-O3MilSi/9mwoovx77m6ROZM7sXShR/O/JIanvzTwjN3FORfLSr81PsUGd7jlaYOeds9d8tw82oP44+3YucVo+w==",
+      "version": "5.6.0",
+      "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.0.tgz",
+      "integrity": "sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==",
       "dependencies": {
         "tslib": "2.3.0"
       }
@@ -2317,12 +2372,12 @@
       "integrity": "sha512-M/MERVDZ8hguvjl6MAlLWSLYLS7PzEyXaTb5gEeJ+SF+e9iUC0sdvlzqe91MMDHBoy+nqw7wKcUOrDSyvMCrRg=="
     },
     "echarts": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.5.0.tgz",
-      "integrity": "sha512-rNYnNCzqDAPCr4m/fqyUFv7fD9qIsd50S6GDFgO1DxZhncCsNsG7IfUlAlvZe5oSEQxtsjnHiUuppzccry93Xw==",
+      "version": "5.5.1",
+      "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.5.1.tgz",
+      "integrity": "sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==",
       "requires": {
         "tslib": "2.3.0",
-        "zrender": "5.5.0"
+        "zrender": "5.6.0"
       }
     },
     "element-plus": {
@@ -2722,6 +2777,11 @@
       "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
       "dev": true
     },
+    "resize-detector": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmmirror.com/resize-detector/-/resize-detector-0.3.0.tgz",
+      "integrity": "sha512-R/tCuvuOHQ8o2boRP6vgx8hXCCy87H1eY9V5imBYeVNyNVpuL9ciReSccLj2gDcax9+2weXy3bc8Vv+NRXeEvQ=="
+    },
     "reusify": {
       "version": "1.0.4",
       "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz",
@@ -2927,6 +2987,23 @@
         "@types/sortablejs": "^1.15.8"
       }
     },
+    "vue-echarts": {
+      "version": "6.7.3",
+      "resolved": "https://registry.npmmirror.com/vue-echarts/-/vue-echarts-6.7.3.tgz",
+      "integrity": "sha512-vXLKpALFjbPphW9IfQPOVfb1KjGZ/f8qa/FZHi9lZIWzAnQC1DgnmEK3pJgEkyo6EP7UnX6Bv/V3Ke7p+qCNXA==",
+      "requires": {
+        "resize-detector": "^0.3.0",
+        "vue-demi": "^0.13.11"
+      },
+      "dependencies": {
+        "vue-demi": {
+          "version": "0.13.11",
+          "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz",
+          "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==",
+          "requires": {}
+        }
+      }
+    },
     "vue-i18n": {
       "version": "9.13.1",
       "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.13.1.tgz",
@@ -2994,9 +3071,9 @@
       }
     },
     "zrender": {
-      "version": "5.5.0",
-      "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.5.0.tgz",
-      "integrity": "sha512-O3MilSi/9mwoovx77m6ROZM7sXShR/O/JIanvzTwjN3FORfLSr81PsUGd7jlaYOeds9d8tw82oP44+3YucVo+w==",
+      "version": "5.6.0",
+      "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.0.tgz",
+      "integrity": "sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==",
       "requires": {
         "tslib": "2.3.0"
       }
diff --git a/UI-Project/package.json b/UI-Project/package.json
index 7a586a0..3a98cb7 100644
--- a/UI-Project/package.json
+++ b/UI-Project/package.json
@@ -12,7 +12,7 @@
     "@vue-macros/reactivity-transform": "^0.3.23",
     "axios": "^1.6.8",
     "chart.js": "^4.4.3",
-    "echarts": "^5.5.0",
+    "echarts": "^5.5.1",
     "element-plus": "^2.4.0",
     "moment": "^2.30.1",
     "pinia": "^2.1.6",
@@ -21,6 +21,7 @@
     "sweetalert2": "^11.10.7",
     "vue": "^3.3.4",
     "vue-draggable-plus": "^0.5.0",
+    "vue-echarts": "^6.7.3",
     "vue-i18n": "^9.10.1",
     "vue-router": "^4.2.4",
     "vxe-table": "^4.5.15",
diff --git a/UI-Project/src/assets/d1a.png b/UI-Project/src/assets/d1a.png
new file mode 100644
index 0000000..b031d4b
--- /dev/null
+++ b/UI-Project/src/assets/d1a.png
Binary files differ
diff --git a/UI-Project/src/assets/dlpl9.png b/UI-Project/src/assets/dlpl9.png
new file mode 100644
index 0000000..fc78fde
--- /dev/null
+++ b/UI-Project/src/assets/dlpl9.png
Binary files differ
diff --git a/UI-Project/src/assets/lp9.png b/UI-Project/src/assets/lp9.png
new file mode 100644
index 0000000..a976458
--- /dev/null
+++ b/UI-Project/src/assets/lp9.png
Binary files differ
diff --git a/UI-Project/src/assets/lpa9.png b/UI-Project/src/assets/lpa9.png
new file mode 100644
index 0000000..f7f2204
--- /dev/null
+++ b/UI-Project/src/assets/lpa9.png
Binary files differ
diff --git a/UI-Project/src/assets/ypcc.png b/UI-Project/src/assets/ypcc.png
new file mode 100644
index 0000000..fdca249
--- /dev/null
+++ b/UI-Project/src/assets/ypcc.png
Binary files differ
diff --git a/UI-Project/src/assets/ypccche.png b/UI-Project/src/assets/ypccche.png
new file mode 100644
index 0000000..96f75d0
--- /dev/null
+++ b/UI-Project/src/assets/ypccche.png
Binary files differ
diff --git a/UI-Project/src/lang/zh.js b/UI-Project/src/lang/zh.js
index 1c0b3b0..3a9af7a 100644
--- a/UI-Project/src/lang/zh.js
+++ b/UI-Project/src/lang/zh.js
@@ -90,8 +90,8 @@
         width:'瀹�',
         height:'楂�',
         startstatus:'鍚敤鐘舵��',
-        disable:'绂佺敤',
-        start:'鍚敤',
+        disable:'宸茬鐢�',
+        start:'宸插惎鐢�',
         deficiencieste:'鎶ョ己',
         updown:'浜哄伐涓嬬墖',
         operate:'鎿嶄綔',
@@ -159,7 +159,6 @@
         inglassgaps:'璇疯緭鍏ョ幓鐠冮棿闅�',
         sure:'纭',
         cancel:'鍙栨秷',
-        glassID:'鐜荤拑ID',
         operate:'鎿嶄綔',
         breakage:'鐮存崯',
         delete:'鍒犻櫎',
@@ -169,8 +168,8 @@
         gridnumber:'鏍呮牸鍙�',
         gridnumbera:'鏍呮牸鍙凤細',
         grid:'璇疯緭鍏ユ爡鏍煎彿',
-        enable:'鍚敤',
-        disable:'绂佺敤',
+        enable:'宸插惎鐢�',
+        disable:'宸茬鐢�',
         remainingwidth:'鍓╀綑瀹藉害',
         add:'娣诲姞',
         sheetID:'閽㈠寲灏忕墖淇℃伅琛↖D',
@@ -238,7 +237,7 @@
         state:'鐘舵��',
         devicenumber:'璁惧鍙�',
         startstatus:'鍚敤鐘舵��',
-        enable:'鍚敤',
+        enable:'宸插惎鐢�',
         unenable:'鏈惎鐢�',
         operate:'鎿嶄綔',
         bindingshelves:'缁戝畾鏋跺瓙',
@@ -368,4 +367,50 @@
         materialName :'鐗╂枡鍚嶇О',
         createTime :'杩斿簱鏃ユ湡',
     },
+    large:{
+        time: '娆$牬鏃堕棿',
+        number: '璁㈠崟鍙�',
+        jobnumber: '鎶ュ伐缂栧彿',
+        productionnumber: '鐢熶骇璁㈠崟鍙�',
+        cardnumber: '娴佺▼鍗″彿',
+        projectname: '椤圭洰鍚嶇О',
+        batch: '鎵规',
+        detailID: '鏄庣粏ID',
+        building: '妤煎彿',
+        serialnumber: '璁㈠崟搴忓彿',
+        productname: '浜у搧鍚嶇О',
+        serial: '宸ヨ壓纭搴忓彿',
+        slicemarker: '鐗囨爣璁帮紙浣嶇疆锛�',
+        numberpatches: '琛ョ墖鏁伴噺',
+        width: '瀹�',
+        height: '楂�',
+        shape: '褰㈢姸',
+        responsibleprocess: '璐d换宸ュ簭',
+        process: '鏈伐搴�',
+        numberfractions: '娆$牬鏈ˉ鏁伴噺',
+        breakreason: '娆$牬鍘熷洜',
+        breaktype: '娆$牬绫诲瀷',
+        responsiblepersonnel: '璐d换浜哄憳',
+        responsiblequipment: '璐d换璁惧',
+        responsibleteam: '璐d换鐝粍',
+        area: '娆$牬闈㈢Н',
+        inspector: '璐ㄦ鍛�',
+        operate: '鎿嶄綔',
+        mes: '璇︽儏',
+        projectnumber: '宸ョ▼鍗曞彿',
+        brokeno: '鎶ユ鐮存湭琛�',
+        close: '鍏抽棴',
+        orderId: '璁㈠崟ID',
+        customerName: '瀹㈡埛鍚嶇О',
+        project: '椤圭洰鍚嶇О',
+        are: '闈㈢Н',
+        quantity: '鍖呰鏂瑰紡',
+        warehousing: '鐘舵��',
+        deliveryDate: '閫佽揣鏃堕棿',
+        notstocked: '鏈叆搴�',
+        inboundstatus: '閮ㄥ垎鍏ュ簱鐘舵��',
+        allstatus: '鍏ㄩ儴鍏ュ簱鐘舵��',
+        completedquantity: '瀹屾垚鏁伴噺',
+        scrapquantity: '鎶ュ簾鏁伴噺',
+    }
 }
\ No newline at end of file
diff --git a/UI-Project/src/layout/MainErpView.vue b/UI-Project/src/layout/MainErpView.vue
index 85cd1aa..098140d 100644
--- a/UI-Project/src/layout/MainErpView.vue
+++ b/UI-Project/src/layout/MainErpView.vue
@@ -23,20 +23,17 @@
 let token = userInfo; // 鎻愬彇 token  
 // 閫�鍑虹櫥褰曟柟娉�  
 function quit() {  
-  // removeToken()  
+  // localStorage.removeItem('token'); 
+  store.$patch({
+              user: null,
+              })
   router.push('/login')  
 }
 // const quit = async () => {
 //   try  {
-    
-//     const response = await request.get('/loadGlass/sys/user/logout', {
-//         token: token,
-//         user: null,
-//     })
+//       store.$patch({user: null})
+//     const response = await request.post('/loadGlass/sys/user/logout')
 //     if (response.code === 200) {  
-//         // 鐧诲嚭鎴愬姛锛屾竻闄ゆ湰鍦板瓨鍌ㄧ殑 userInfo  
-//         localStorage.removeItem('userInfo');  
-//         // 鍙互鍦ㄨ繖閲岄噸缃簲鐢ㄧ姸鎬侊紝濡傚鑸埌鐧诲綍椤电瓑  
 //         console.log('鐧诲嚭鎴愬姛');  
 //       } else {  
 //         // 澶勭悊閿欒鎯呭喌  
diff --git a/UI-Project/src/main.js b/UI-Project/src/main.js
index b8b328b..7f48d13 100644
--- a/UI-Project/src/main.js
+++ b/UI-Project/src/main.js
@@ -11,7 +11,13 @@
 import VXETable from 'vxe-table'
 import 'vxe-table/lib/style.css'
 import i18n from '@/lang'
+// import Echarts from "vue-echarts"
+import * as echarts from "echarts"
+// echarts.registerMap('china', china)
+// Vue.prototype.$echarts = echarts
 
+// app.component("v-chart", Echarts)
+// app.config.globalProperties.$echarts = echarts
 const app = createApp(App)
 const pinia = createPinia()
 pinia.use(piniaPluginPersistedstate )
diff --git a/UI-Project/src/router/index.js b/UI-Project/src/router/index.js
index 2beb066..d790e4b 100644
--- a/UI-Project/src/router/index.js
+++ b/UI-Project/src/router/index.js
@@ -246,6 +246,32 @@
     }
   ]
  },
+  /*----------- 澶у睆鏄剧ず ----------------*/
+  {
+    path: 'largescreen',
+    name: 'largescreen',
+    component: () => import('../views/largescreen/largescreen.vue'),
+    children:[
+      {
+        path: '/largescreen/largescreen',
+        name: 'largescreen',
+        component: () => import('../views/largescreen/largescreen.vue')
+      },
+    ]
+  },
+  /*----------- 鎶ュ伐绠$悊 ----------------*/
+  {
+    path: 'reportWork',
+    name: 'reportWork',
+    component: () => import('../views/ReportWork/reportWork.vue'),
+    children:[
+      {
+        path: '/ReportWork/reportWork',
+        name: 'reportWork',
+        component: () => import('../views/ReportWork/reportWork.vue')
+      },
+    ]
+  },
         /*----------- 绠$悊绯荤粺 ----------------*/
         {
           path: 'sys',
diff --git a/UI-Project/src/stores/tableData.js b/UI-Project/src/stores/tableData.js
new file mode 100644
index 0000000..3d21d2f
--- /dev/null
+++ b/UI-Project/src/stores/tableData.js
@@ -0,0 +1,225 @@
+// tableData.js
+
+import { ref } from 'vue';
+
+export const tableData = ref([
+  {
+    location: '1',
+    type: 'Type A',
+    length: '100',
+    height: '50',
+    thickness: '10',
+    quantity: '5',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },
+  {
+    location: '2',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 0
+  },
+  {
+    location: '3',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },
+  {
+    location: '4',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },
+  {
+    location: '5',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },
+  {
+    location: '1',
+    type: 'Type A',
+    length: '100',
+    height: '50',
+    thickness: '10',
+    quantity: '5',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },
+  {
+    location: '2',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 0
+  },
+  {
+    location: '3',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },
+  {
+    location: '4',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },
+  {
+    location: '5',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },{
+    location: '1',
+    type: 'Type A',
+    length: '100',
+    height: '50',
+    thickness: '10',
+    quantity: '5',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },
+  {
+    location: '2',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 0
+  },
+  {
+    location: '3',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },
+  {
+    location: '4',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },
+  {
+    location: '5',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },{
+    location: '1',
+    type: 'Type A',
+    length: '100',
+    height: '50',
+    thickness: '10',
+    quantity: '5',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },
+  {
+    location: '2',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 0
+  },
+  {
+    location: '3',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },
+  {
+    location: '4',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  },
+  {
+    location: '5',
+    type: 'Type B',
+    length: '120',
+    height: '60',
+    thickness: '12',
+    quantity: '10',
+    entry_time: '2024-06-19 10:00:00',
+    batchnumber: '444',
+    shelf_status: 1
+  }
+  // Add more data as needed
+]);
diff --git a/UI-Project/src/views/Caching/cachingbefore.vue b/UI-Project/src/views/Caching/cachingbefore.vue
index 9f4ed48..6c9510b 100644
--- a/UI-Project/src/views/Caching/cachingbefore.vue
+++ b/UI-Project/src/views/Caching/cachingbefore.vue
@@ -42,13 +42,13 @@
 const toggleEnableState = async (row) => {  
   const newState = row.enable_state === 1 ? 0 : 1;
   // 鍙戦�佽姹傚埌鍚庣鏇存柊鐘舵�侊紙杩欓噷鐪佺暐浜嗗疄闄呯殑璇锋眰閫昏緫锛�  
-  const response = await request.post('/cacheGlass/edgStorageCage/updateEdgStorageCage', { id: row.id, enablestate: newState });  
+  const response = await request.post('/cacheGlass/edgStorageCage/updateEdgStorageCage', { id: row.id, enableState: newState });  
   if (response.code === 200) {
       ElMessage.success(response.message);
       } else {  
       ElMessage.error(response.message);
       }  
-  row.enable_state = newState;  
+  row.enable_state = newState;   
 }; 
 const open = async(row) => {
   try {
@@ -104,7 +104,7 @@
 </script>
 
 <template>
-  <div>
+  <div style="height: 500px;">
     <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading">
       <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
         <el-table height="240" ref="table" 
@@ -141,10 +141,9 @@
         </el-table>
       </div>
     </el-card>
-  </div>
-  <div id="awatch">
-    <img src="../../assets/woshihuancun.png" alt="" style="width: 60%;height: 90%;margin-left: 260px;margin-top: 20px;position: relative;"> 
-    <div style="position: absolute; width: 500px;height: 95px;margin-top: -165px;margin-left: 450px;">
+  <div class="awatch">
+    <img src="../../assets/woshihuancun.png" alt="" style="width: 70%;height: 90%;margin-left: 200px;margin-top: 20px;position: relative;"> 
+    <div style="position: relative; width: 500px;height: 95px;margin-top: -165px;margin-left: 450px;">
     <div  
       v-for="(rect, index) in adjustedRects"  
       :key="rect"  
@@ -153,11 +152,9 @@
       backgroundColor: '#409EFF'
        }"  
     >
-    </div>
   </div>
-<!-- <div style="width: 100px;height: 10px;background-color: #409EFF;margin-top: -124px;margin-left: 480px;"></div>
-<div style="width: 100px;height: 10px;background-color: #409EFF;margin-top: -30px;margin-left: 850px;"></div>
-<div style="width: 100px;height: 10px;background-color: #409EFF;margin-top: 30px;margin-left: 695px;"></div> -->
+  </div>
+</div>
 </div>
 </template>
 
@@ -178,9 +175,10 @@
    background-color: #337ecc;
    margin-left: 28%;
 }
-#awatch{
+.awatch{
   height: 460px;
   width: 1500px;
-  /* margin-top: -60px; */
+  max-width: 100%;
 }
-</style>
\ No newline at end of file
+
+</style>
diff --git a/UI-Project/src/views/Caching/cachingun.vue b/UI-Project/src/views/Caching/cachingun.vue
index cf17b1f..e7110cc 100644
--- a/UI-Project/src/views/Caching/cachingun.vue
+++ b/UI-Project/src/views/Caching/cachingun.vue
@@ -1,5 +1,5 @@
 <template>
-  <div>
+  <div style="height: 500px;">
     <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading">
       <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
         <el-table height="240" ref="table" 
@@ -10,7 +10,7 @@
           <el-table-column prop="width" align="center" :label="$t('sorter.width')" min-width="120" />
           <el-table-column prop="height" align="center" :label="$t('sorter.height')" min-width="120" />
           <el-table-column
-          align="center"
+            align="center"
             :label="$t('sorter.startstatus')"
             min-width="80"
             prop="enable_state"
@@ -36,10 +36,9 @@
         </el-table>
       </div>
     </el-card>
-  </div>
-  <div id="awatch">
-    <img src="../../assets/woshihuancun.png" alt="" style="width: 60%;height: 90%;margin-left: 260px;margin-top: 20px;position: relative;"> 
-    <div style="position: absolute; width: 500px;height: 95px;margin-top: -165px;margin-left: 450px;">
+  <div class="awatch">
+    <img src="../../assets/woshihuancun.png" alt="" style="width: 70%;height: 90%;margin-left: 200px;margin-top: 20px;position: relative;"> 
+    <div style="position: relative; width: 500px;height: 95px;margin-top: -165px;margin-left: 450px;">
     <div  
       v-for="(rect, index) in adjustedRects"  
       :key="rect"  
@@ -50,6 +49,7 @@
     >
     </div>
   </div>
+</div>
 </div>
 </template>
 <script setup>
@@ -194,7 +194,7 @@
 const toggleEnableState = async (row) => {  
   const newState = row.enable_state === 1 ? 0 : 1;  
   // 鍙戦�佽姹傚埌鍚庣鏇存柊鐘舵�侊紙杩欓噷鐪佺暐浜嗗疄闄呯殑璇锋眰閫昏緫锛�  
-  const response = await request.post('/unLoadGlass/downStorage/updateDownStorageCage', { id: row.id, enablestate: newState });  
+  const response = await request.post('/unLoadGlass/downStorage/updateDownStorageCage', { id: row.id, enableState: newState });  
   if (response.code === 200) {
       ElMessage.success(response.message);
       } else {  
@@ -202,6 +202,9 @@
       }  
   row.enable_state = newState;  
 };
+
+
+
 const socketUrl = `ws://${WebSocketHost}:${host}/api/unLoadGlass/api/talk/unloadglass`;
 // 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
 const handleMessage = (data) => {
@@ -245,9 +248,10 @@
    background-color: #337ecc;
    margin-left: 28%;
 }
-#awatch{
+.awatch{
   height: 460px;
   width: 1500px;
+  max-width: 100%;
   /* margin-top: -60px; */
 }
 </style>
\ No newline at end of file
diff --git a/UI-Project/src/views/GlassStorage/MaterialRackManagement.vue b/UI-Project/src/views/GlassStorage/MaterialRackManagement.vue
index b36c181..e1b6d88 100644
--- a/UI-Project/src/views/GlassStorage/MaterialRackManagement.vue
+++ b/UI-Project/src/views/GlassStorage/MaterialRackManagement.vue
@@ -5,6 +5,7 @@
 
 <!-- 宸︿晶鎸夐挳缁� -->
 <div >
+  <el-button type="success" size="mini"  @click="storage()">鍘熺墖浠撳偍璇︽儏</el-button>
   <el-button type="success" size="mini" @click="handleInbound()">鍏ュ簱</el-button>
   <el-button type="success" size="mini" >鍚婅浣嶅叆搴�</el-button>
  
@@ -20,9 +21,9 @@
 </el-form-item>
 
 </div>
-
+<el-dialog v-model="Hidden" top="10vh" width="80%"  >
       <el-table
-        :data="tableData"
+        :data="tableData" v-model="dialogVisible3"
        
         style="width: 98%; height: 200px"
         @selection-change="handleSelectionChange"
@@ -55,17 +56,22 @@
 </el-table-column>
 
         <!-- 鎿嶄綔鍒� -->
-        <el-table-column label="鎿嶄綔" width="350">
+        <el-table-column label="鎿嶄綔" width="250">
           <template #default="{ row }">
             <el-button type="primary" size="mini" @click="edithandleRowClick(row)">淇敼</el-button>
             <el-button type="danger" size="mini" @click="handleDelete(row)">鍒犻櫎</el-button>
             <el-button type="warning" size="mini" @click="handleCheckout(row)">鍑哄簱</el-button>
-            <el-button type="success" size="mini" @click="addglass()">娣诲姞鍘熺墖</el-button>
+            <!-- <el-button type="success" size="mini" @click="addglass()">娣诲姞鍘熺墖</el-button> -->
           </template>
         </el-table-column>
       </el-table>
 
-      <el-table
+
+      
+  </el-dialog>
+
+
+  <el-table
     :data="tasktableData"
     style="width: 98%; height: 150px"
     @selection-change="handleSelectionChange"
@@ -109,11 +115,20 @@
       </template>
     </el-table-column>
   </el-table>
-
     </el-card>
 
-    <div ref="chart" id="chart" style="width: 100%; height: 250px;"></div>
- 
+
+
+
+   
+    <div class="img-ypcc" >
+
+
+      <div class="img-car1" :style="'z-index:999;left:397px;top:205px;position:absolute;'">
+      <div v-show="cellshow1" style="margin-top:10px;width:200px;height:5px;background-color:#409EFF;"></div>
+    </div>
+   
+    </div>
    
     <!-- 鍏ュ簱瀵硅瘽妗� -->
     <el-dialog
@@ -175,19 +190,19 @@
       </el-form-item>
 
       <el-form-item label="闀垮害">
-        <el-input v-model="formData.wid" required style="width: 250px; font-size: 20px" @focus="clearInput('wid')"></el-input>
+        <el-input v-model="formData.width" required style="width: 250px; font-size: 20px" @focus="clearInput('wid')"></el-input>
       </el-form-item>
 
       <el-form-item label="楂樺害">
-        <el-input v-model="formData.heig" required style="width: 250px; font-size: 20px" @focus="clearInput('heig')"></el-input>
+        <el-input v-model="formData.height" required style="width: 250px; font-size: 20px" @focus="clearInput('heig')"></el-input>
       </el-form-item>
 
       <el-form-item label="鍘氬害">
-        <el-input v-model="formData.thinkness" required style="width: 250px; font-size: 20px" @focus="clearInput('thinkness')"></el-input>
+        <el-input v-model="formData.thickness" required style="width: 250px; font-size: 20px" @focus="clearInput('thinkness')"></el-input>
       </el-form-item>
 
       <el-form-item label="鏁伴噺">
-        <el-input-number v-model="formData.num" required :min="0" :max="9000" style="width: 250px; font-size: 20px" @focus="clearInput('num')"></el-input-number>
+        <el-input-number v-model="formData.quantity" required :min="0" :max="9000" style="width: 250px; font-size: 20px" @focus="clearInput('num')"></el-input-number>
       </el-form-item>
     </el-form>
 
@@ -205,6 +220,15 @@
         <el-form-item label="鎵规鍙�">
           <el-input v-model="editForm.batchnumber"></el-input>
         </el-form-item>
+        <el-form-item label="闀垮害">
+          <el-input v-model="editForm.length"></el-input>
+        </el-form-item>
+        <el-form-item label="楂樺害">
+          <el-input v-model="editForm.height"></el-input>
+        </el-form-item>
+        <el-form-item label="鍘氬害">
+          <el-input v-model="editForm.thickness"></el-input>
+        </el-form-item>
       </el-form>
 
       <div  class="dialog-footer">
@@ -214,7 +238,6 @@
     </el-dialog>
 
 
-    <!-- <div ref="chart" id="chart" style="width: 100%; height: 400px;"></div> -->
   </div>
 </template>
 
@@ -225,67 +248,14 @@
 import { ref, onMounted, onBeforeUnmount } from 'vue'; // 瀵煎叆 Vue 3 鐨勬ā鍧�
 import * as echarts from 'echarts';
 import { ElMessage, ElMessageBox } from 'element-plus'
+import {tableData} from '@/stores/tableData.js';
+
 
 
     const loading = ref(false);
-    const tableData = ref([
-    {
-        location: '1',
-        type: 'Type A',
-        length: '100',
-        height: '50',
-        thickness: '10',
-        quantity: '5',
-        entry_time: '2024-06-19 10:00:00',
-        batchnumber:"444",
-        shelf_status: 1
-      },
-      {
-        location: '2',
-        type: 'Type B',
-        length: '120',
-        height: '60',
-        thickness: '12',
-        quantity: '10',
-        entry_time: '2024-06-19 10:00:00',
-        batchnumber:"444",
-        shelf_status: 0
-      },
-      {
-        location: '3',
-        type: 'Type B',
-        length: '120',
-        height: '60',
-        thickness: '12',
-        quantity: '10',
-        entry_time: '2024-06-19 10:00:00',
-        batchnumber:"444",
-        shelf_status: 1
-      },
-      {
-        location: '4',
-        type: 'Type B',
-        length: '120',
-        height: '60',
-        thickness: '12',
-        quantity: '10',
-        entry_time: '2024-06-19 10:00:00',
-        batchnumber:"444",
-        shelf_status: 1
-      },
-      {
-        location: '5',
-        type: 'Type B',
-        length: '120',
-        height: '60',
-        thickness: '12',
-        quantity: '10',
-        entry_time: '2024-06-19 10:00:00',
-        batchnumber:"444",
-        shelf_status: 1
-      }
-      // Add more data as needed
-    ]);
+   
+
+    const Hidden = ref(false)
 
    const getTagType2 =(status) => {
       switch (status) {
@@ -386,6 +356,12 @@
       dialogVisible.value = true;
     };
 
+    const storage = () => {
+      // 鎵撳紑鍏ュ簱瀵硅瘽妗�
+      Hidden.value = true;
+    };
+    
+
     const handleCloseDialog = () => {
       // 鍏抽棴瀵硅瘽妗嗘椂閲嶇疆琛ㄥ崟鏁版嵁
       formData.value = {
@@ -451,7 +427,10 @@
     const editdialogVisible = ref(false);
     const editForm = ref({
       quantity: '',
-      batchnumber: ''
+      batchnumber: '',
+      length:'',
+      height:'',
+      thickness:''
     });
     const editFormRef = ref(null);
     let currentRow = ref(null);
@@ -459,8 +438,12 @@
     // 澶勭悊琛岀偣鍑讳簨浠�
     const edithandleRowClick = (row) => {
       currentRow.value = row;
+      console.log(row)
       editForm.value.quantity = row.quantity.toString();
       editForm.value.batchnumber = row.batchnumber;
+      editForm.value.length = row.length;
+      editForm.value.height = row.height;
+      editForm.value.thickness = row.thickness;
       editdialogVisible.value = true;
       console.log(editForm.value)
     };
@@ -481,6 +464,11 @@
     const edithandleDialogClose = () => {
       editForm.value.quantity = '';
       editForm.value.batchnumber = '';
+      editForm.value.width = '';
+      editForm.value.height = '';
+      editForm.value.thickness = '';
+  
+
       currentRow.value = null;
     };
 
@@ -561,85 +549,8 @@
 
 
 
-    let chartInstance = null;
+    
 
-onMounted(() => {
-  // Initialize the chart
-  chartInstance = echarts.init(document.getElementById('chart'));
-
-  // Simulated data for demonstration
-  const chartData = {
-    labels: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'],
-    datasets: [
-      { name: '浣跨敤鎯呭喌缁熻', data: [{ remaining: 4, total: 5 }, { remaining: 9, total: 10 }, { remaining: 0, total: 30 }, { remaining: 0, total: 10 },{ remaining: 4, total: 5 }] }
-    ]
-  };
-
-  const options = {
-    tooltip: {
-      trigger: 'axis',
-      axisPointer: {
-        type: 'shadow'
-      }
-    },
-    legend: {
-      data: ['浣跨敤鎯呭喌缁熻']
-    },
-    xAxis: {
-      type: 'category',
-      data: chartData.labels
-    },
-    yAxis: {
-      type: 'value'
-    },
-    series: chartData.datasets.map(item => ({
-      name: item.name,
-      type: 'bar',
-      stack: '鎬婚噺',
-      label: {
-        show: true,
-        position: 'inside',
-        formatter: '{c}%'
-      },
-      data: item.data.map(dataItem => ({
-        value: (dataItem.remaining / dataItem.total * 100).toFixed(2), // 璁$畻鍓╀綑閲忓崰姣旓紝淇濈暀涓や綅灏忔暟
-        remaining: dataItem.remaining,
-        total: dataItem.total,
-        itemStyle: {
-          color: getColorByRemaining(dataItem.remaining, dataItem.total)
-        }
-      }))
-    }))
-  };
-
-  function getColorByRemaining(remaining, total) {
-    // 鏍规嵁鍓╀綑閲忎笌鎬婚噺鐨勬瘮渚嬶紝璁剧疆涓嶅悓鐨勯鑹查�昏緫
-    const percentage = remaining / total;
-    if (percentage >= 0.8) {
-      return '#FF6666'; // Red
-    } else if (percentage >= 0.5) {
-      return '#FFCC66'; // Yellow
-    } else {
-      return '#66CC66'; // Green
-    }
-  }
-
-  // Set options and render chart
-  if (chartInstance) {
-    chartInstance.setOption(options);
-  }
-});
-
-onBeforeUnmount(() => {
-  if (chartInstance) {
-    chartInstance.dispose();
-    chartInstance = null;
-  }
-});
-
-const handleSelectionChange = (selection) => {
-  console.log('Selection changed:', selection);
-};
 
 </script>
 
@@ -659,7 +570,32 @@
 
 
 
+.img-ypcc{
+  margin-left: 80px;
+  background-image:url('../../assets/ypcc.png');
+  background-repeat: no-repeat;
+    background-attachment: local;
+    min-height: 600px;
+    width: 1400px;
+    max-width: 100%;
+    background-size: 1400px 600px;
+    overflow: hidden;
+    position:relative;
+    margin-top:0px
+}
 
+.img-car1{
+  background-image:url('../../assets/ypccche.png');
+  position: absolute;
+  background-repeat: no-repeat;
+    background-attachment: local;
+    min-height: 400px;
+    width: 200px;
+    max-width: 100%;
+    background-size: 200px 170px;
+    overflow: hidden;
+    position:relative
+}
 
 .custom-dialog {
   max-height: 90vh; /* 鏈�澶ч珮搴︿负瑙嗗彛楂樺害鐨�90% */
diff --git a/UI-Project/src/views/LoginView.vue b/UI-Project/src/views/LoginView.vue
index d84f329..7f7bb7d 100644
--- a/UI-Project/src/views/LoginView.vue
+++ b/UI-Project/src/views/LoginView.vue
@@ -48,6 +48,9 @@
  
 //鐧婚檰鏂规硶
 const submitForm = (formEl: FormInstance | undefined) => {
+  store.$patch({
+              user: null,
+              })
   if (!formEl) return
   formEl.validate((valid) => {
     if (valid) {
@@ -161,15 +164,16 @@
               <el-button :loading="loginLoadings"
                          type="primary"
                          native-type="submit"
+                         style="width: 80px;"
                          @click="submitForm(ruleFormRef)"
                          @keyup.enter.native="keyDown(e)"
                          plain>{{ $t('login.login') }}
               </el-button>
-              <el-button :loading="registerLoadings"
+              <!-- <el-button :loading="registerLoadings"
                          type="primary"
                          @click="register"
                          plain>{{ $t('login.register') }}
-              </el-button>
+              </el-button> -->
  
             </el-form-item>
           </div>
diff --git a/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
index 77bd047..14920eb 100644
--- a/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
+++ b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
@@ -89,7 +89,7 @@
     >
      <div  class="centered-text">
     <div >{{ rect.flowcardId }}</div>  
-    <div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div>  
+    <div style="text-align: center;">{{ rect.widtha }}*{{ rect.heighta }}</div>  
   </div>
   </div>
    </div>
@@ -106,7 +106,7 @@
     >
      <div  class="centered-text">
     <div >{{ rect.flowcardId }}</div>  
-    <div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div>  
+    <div style="text-align: center;">{{ rect.widtha }}*{{ rect.heighta }}</div>  
   </div>
   </div>
    </div>
@@ -128,7 +128,7 @@
        backgroundColor: rect.state === 0 ? '#dedfe0' : '#d1edc4' }">
      <div  class="centered-text">
     <div >{{ rect.flowcardId }}</div>  
-    <div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div>  
+    <div style="text-align: center;">{{ rect.widtha }}*{{ rect.heighta }}</div>  
   </div>
   </div> 
    </div>
@@ -149,7 +149,7 @@
        backgroundColor: rect.state === 4 ? '#911005' : '#f8e3c5' }">
      <div  class="centered-text">
     <div >{{ rect.flowcardId }}</div>  
-    <div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div>  
+    <div style="text-align: center;">{{ rect.widtha }}*{{ rect.heighta }}</div>  
   </div>
   </div> 
    </div>
diff --git a/UI-Project/src/views/PurchaseReturn/purchaseStorage.vue b/UI-Project/src/views/PurchaseReturn/purchaseStorage.vue
index 10bf427..5c0133f 100644
--- a/UI-Project/src/views/PurchaseReturn/purchaseStorage.vue
+++ b/UI-Project/src/views/PurchaseReturn/purchaseStorage.vue
@@ -38,7 +38,7 @@
         widtha: rect.width,
         heighta: rect.height,
       })); 
-      console.log(data.intoGlass[0]);
+      console.log(adjustedRects.value);
 };
 onMounted(() => {
   // fetchFlowCardId();
@@ -67,7 +67,7 @@
        backgroundColor: rect.state === 4 ? '#d1edc4' : '#f8e3c5' }">
      <div  class="centered-text">
     <div >{{ rect.flowcardId }}</div>  
-    <div style="margin-top: 50px;margin-left: -50px;">{{ rect.widtha }}*{{ rect.heighta }}</div>  
+    <div style="text-align: center;">{{ rect.widtha }}*{{ rect.heighta }}</div>  
   </div>
   </div> 
    </div>
diff --git a/UI-Project/src/views/ReportWork/reportWork.vue b/UI-Project/src/views/ReportWork/reportWork.vue
new file mode 100644
index 0000000..cd22ee2
--- /dev/null
+++ b/UI-Project/src/views/ReportWork/reportWork.vue
@@ -0,0 +1,125 @@
+<template>
+  <div style="height: 600px;">
+    <span class="demonstration">鐢熶骇鏃堕棿</span>
+    <el-date-picker v-model="timeRange" type="daterange" format="YYYY/MM/DD" value-format="YYYY-MM-DD"
+      start-placeholder="寮�濮嬫椂闂�" end-placeholder="缁撴潫鏃堕棿" :default-time="defaultTime" />
+    <el-select v-model="report.type" placeholder="娓呴�夋嫨绫诲瀷">
+      <el-option label="鍏ㄩ儴" value="0"></el-option>
+      <el-option label="瀹屽伐" value="1"></el-option>
+      <el-option label="鐮存崯" value="2"></el-option>
+      <el-option label="鎷胯蛋" value="3"></el-option>
+    </el-select>
+    <el-select v-model="report.status" placeholder="娓呴�夋嫨鐘舵��">
+      <el-option label="鍏ㄩ儴" value="0"></el-option>
+      <el-option label="鏈姤宸�" value="1"></el-option>
+      <el-option label="寰呮姤宸�" value="2"></el-option>
+      <el-option label="宸叉姤宸�" value="3"></el-option>
+    </el-select>
+    <el-select v-model="report.workProcedure" placeholder="娓呴�夋嫨宸ュ簭">
+      <el-option label="鍏ㄩ儴" value="0"></el-option>
+      <el-option label="鍒囧壊" value="1"></el-option>
+      <el-option label="纾ㄨ竟" value="2"></el-option>
+      <el-option label="閽㈠寲" value="3"></el-option>
+    </el-select>
+    <el-button type="primary" @click="selectReportData()">鏌ヨ</el-button>
+    <el-button type="success">鎶ュ伐</el-button>
+    <el-table height="100%" ref="table" :data="reportData"
+      :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }">
+      <el-table-column prop="reportData.line" align="center" label="绾胯矾" min-width="120" />
+      <el-table-column prop="reportData.line" align="center" label="宸ュ簭" min-width="120" />
+      <el-table-column prop="reportData.line" align="center" label="鐜荤拑id" min-width="120" />
+      <el-table-column prop="reportData.line" align="center" label="宸ョ▼鍙�" min-width="120" />
+      <el-table-column prop="reportData.line" align="center" label="閽㈠寲鐗堝浘id" min-width="120" />
+      <el-table-column prop="reportData.line" align="center" label="鐢熶骇鏃堕棿" min-width="120" />
+      <el-table-column prop="reportData.line" align="center" label="澶囨敞" min-width="120" />
+      <el-table-column prop="reportData.line" align="center" label="绫诲瀷" min-width="120" />
+      <el-table-column prop="reportData.line" align="center" label="鐘舵��" min-width="120" />
+      <el-table-column prop="reportData.line" align="center" label="娴佺▼鍗�" min-width="120" />
+      <el-table-column prop="reportData.line" align="center" label="搴忓彿" min-width="120" />
+      <el-table-column prop="reportData.line" align="center" label="灞�" min-width="120" />
+      <el-table-column prop="reportData.line" align="center" label="鐮存崯绫诲瀷" min-width="120" />
+      <el-table-column prop="reportData.line" align="center" label="鐮存崯鍘熷洜" min-width="120" />
+      <el-table-column prop="reportData.line" align="center" label="璐d换宸ュ簭" min-width="120" />
+      <el-table-column prop="reportData.line" align="center" label="璐d换浜哄憳" min-width="120" />
+      <el-table-column prop="reportData.line" align="center" label="璐d换鐝粍" min-width="120" />
+      <el-table-column prop="reportData.line" align="center" label="璐d换璁惧" min-width="120" />
+      <el-table-column prop="reportData.line" align="center" label="鎶ュ伐鐝粍" min-width="120" />
+      <el-table-column prop="reportData.line" align="center" label="鎶ュ伐璁惧" min-width="120" />
+    </el-table>
+  </div>
+</template>
+<script setup>
+import { Delete, Upload } from '@element-plus/icons-vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+import { ref, onMounted, onBeforeUnmount, reactive, computed, shallowRef, onUnmounted, watchEffect } from "vue";
+import request from "@/utils/request"
+import { WebSocketHost, host } from '@/utils/constants'
+import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService';
+import { useI18n } from 'vue-i18n'
+const { t } = useI18n()
+const report = ref({
+  type: '',
+  status: '',
+  workProcedure: '',
+});
+const reportData = ref([])
+const timeRange = ref([new Date(2000, 10, 10), new Date(2200, 10, 11)])
+
+
+// 鏌ヨ鏁版嵁
+const selectReportData = async () => {
+  console.log(timeRange.value[0])
+  const response = await request.post("/loadGlass/damage/selectDamage", {
+    startTime: timeRange.value[0],
+    endTime: timeRange.value[1],
+    type: report.value.type,
+    status: report.value.status,
+    workProcedure: report.value.workProcedure,
+  })
+  if (response.code === 200) {
+    reportData.value = response.data;
+    ElMessage.success(response.message);
+  } else {
+    ElMessage.error(response.message);
+  }
+};
+
+const socketUrl = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/screen`;
+const handleMessage = (data) => {
+  // adjustedRects.value = data.device[0].map(rect => ({  
+  //       ...rect, 
+  //       completed: rect.completedQuantity,
+  //       breakage: rect.breakageQuantity,
+  //       thisProcess: rect.thisProcess,
+  //     })); 
+};
+let socket;
+onMounted(() => {
+  socket = new WebSocket(socketUrl);
+  socket.onmessage = (event) => {
+    const data = JSON.parse(event.data);
+
+    // updateCharts();
+  };
+  // };  
+});
+
+
+
+
+onUnmounted(() => {
+  socket.close();
+});
+
+onMounted(() => {
+  // fetchFlowCardId();
+  // fetchTableData(); // 鑾峰彇鏁版嵁
+  initializeWebSocket(socketUrl, handleMessage);
+});
+onBeforeUnmount(() => {
+  console.log("鍏抽棴浜�")
+  closeWebSocket();
+});
+</script>
+
+<style scoped></style>
\ No newline at end of file
diff --git a/UI-Project/src/views/Slicecage/slicecage.vue b/UI-Project/src/views/Slicecage/slicecage.vue
index 3035fa4..749d012 100644
--- a/UI-Project/src/views/Slicecage/slicecage.vue
+++ b/UI-Project/src/views/Slicecage/slicecage.vue
@@ -20,8 +20,11 @@
 const tableDatad = ref([])
 const tableDataf = ref([])
 const tableDatae = ref([])
+const carPosition = ref([])
 const adjustedRects = ref([]);
 const project = ref([]);
+const adjust = ref([]);
+const adjusta = ref([]);
 const adjustedRectsa = ref([]);
 const adjustedRectsb = ref([]);
 const adjustedRectsc = ref([]);
@@ -29,6 +32,7 @@
 const adjustedRectse = ref([]);
 const adjustedRectsf = ref([]);
 const adjustedRectsg = ref([]);
+const adjustedRectsh = ref([]);
 const currentRow = reactive({}); // 褰撳墠琛岀殑鏁版嵁 
 const add = ref(false)
 const flowCardId = ref('');
@@ -42,17 +46,11 @@
 const temperingLayoutId = ref('');
 const thickness = ref('');
 const width = ref('');
-const carposition1 = ref(60);
-const carposition2 = ref(220);
-const carposition3 = ref(60);
-const carposition4 = ref(260);
 const timers1 =ref(true);
 const timers2 =ref(true);
 const timers3 =ref(true);
 const timers4 =ref(true);
 const cellshow5=ref(false);
-const c1=ref(false);
-const c2=ref(false);
 const cellshow1=ref(true);
 const cellshow2=ref(true);
 const cellshow3=ref(true);
@@ -69,58 +67,59 @@
 const cell6=ref(true);
 const cell7=ref(true);
 const cell8=ref(true);
+const cell9=ref(true);
 const selectedRow = ref(null); // 瀛樺偍閫変腑鐨勮鏁版嵁  
-
-
+ 
+ 
     // 褰撳墠椤电爜鍜屾瘡椤垫樉绀虹殑鏉℃暟
     const currentPage = ref(1);
     const itemsPerPage = computed(() => {
       if (currentPage.value === 1) {
-        return 21;
+        return 55;
       } else if (currentPage.value === 2) {
-        return 21;
+        return 55;
       } else if (currentPage.value === 3) {
-        return 21;
+        return 55;
       } else if (currentPage.value === 4) {
-        return 20;
+        return 55;
       } else if (currentPage.value === 5) {
-        return 21;
+        return 55;
       } else if (currentPage.value === 6) {
         return 25;
       } else if (currentPage.value === 7) {
-        return 51;
+        return 30;
       } else if (currentPage.value === 8) {
         return 25;
       } else {
         return 25; // 榛樿鍊硷紝鍙互鏍规嵁瀹為檯闇�姹備慨鏀�
       }
     });
-
+ 
     // 璁$畻鍒嗛〉鍚庣殑鏁版嵁
     const paginatedUsers = computed(() => {
       const startIndex = calculateStartIndex();
       const endIndex = startIndex + itemsPerPage.value;
       return tableData.value.slice(startIndex, endIndex);
     });
-
+ 
     // 璁$畻褰撳墠椤电殑璧峰绱㈠紩
     function calculateStartIndex() {
       let index = 0;
       for (let i = 1; i < currentPage.value; i++) {
         if (i === 1) {
-          index += 21;
+          index += 55;
         } else if (i === 2) {
-          index += 21;
+          index += 55;
         } else if (i === 3) {
-          index += 21;
+          index += 55;
         }else if (i === 4) {
-          index += 20;
+          index += 55;
         }else if (i === 5) {
-          index += 21;
+          index += 55;
         }else if (i === 6) {
           index += 25;
         }else if (i === 7) {
-          index += 51;
+          index += 30;
         }else if (i === 8) {
           index += 25;
         } else {
@@ -129,7 +128,11 @@
       }
       return index;
     }
-
+    function jumpToPage(page: number) {  
+  if (page >= 1 && page <= totalPages.value) {  
+    currentPage.value = page;  
+  }  
+}
     // 涓婁竴椤靛拰涓嬩竴椤垫柟娉�
     const prevPage = () => {
       if (currentPage.value > 1) {
@@ -142,7 +145,7 @@
         currentPage.value++;
       }
     };
-
+ 
     // 鎬婚〉鏁拌绠�
     const totalPages = computed(() => {
       // let total = 0;
@@ -159,9 +162,9 @@
       // }
       return 9;
     });
-
-
-
+ 
+ 
+ 
 const getTableRow = (row,type) =>{
   switch (type) {
     case 'edit' :{
@@ -449,7 +452,7 @@
       ElMessage.success(response.message);
       glassId.value = '';
       tableDataf.value = '';
-
+ 
       } else {  
       ElMessage.error(response.message);
       }  
@@ -466,62 +469,93 @@
 // 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
 const handleMessage = (data) => {
   // 鏇存柊 tableData 鐨勬暟鎹�
-  tableDatac.value = data.bigStorageCageDetailsOutTask[0]
-  tableDatad.value = data.bigStorageCageDetailsFeedTask[0]
+  if(data.bigStorageCageDetailsOutTask!=null){
+    tableDatac.value = data.bigStorageCageDetailsOutTask[0]
+    adjusta.value = data.bigStorageCageDetailsOutTask[0].filter(rect => rect.slot !== null && rect.slot !== undefined);
+  }
+  if(data.bigStorageCageDetailsFeedTask!=null){
+    tableDatad.value = data.bigStorageCageDetailsFeedTask[0]
+    adjust.value = data.bigStorageCageDetailsFeedTask[0].filter(rect => rect.slot !== null && rect.slot !== undefined); 
+  }
+  
+  // adjust.value = data.bigStorageCageDetailsFeedTask[0].map(rect => ({  
+  //           ...rect, 
+  //         })); 
+     
+//   const adjust = computed(() => {  
+//   return data.value.bigStorageCageDetailsFeedTask[0].filter(rect => rect.slot !== null && rect.slot !== undefined);  
+// }); 
+if(data.bigStorageCageInfo!=null){
   tableData.value = data.bigStorageCageInfo[0]
+}
+if(data.temperingGlassInfoList!=null){
   tableDatab.value = data.temperingGlassInfoList[0]
+}
+if(data.bigStorageCageUsage!=null){
   tableDatae.value = data.bigStorageCageUsage[0]
-  // adjustedRects.value = data.bigStorageCageInfo1[0]
-  window.localStorage.setItem('length', data.bigStorageCageInfo1[0].length)
+}
+if(data.carPostion!=null){
+  carPosition.value = data.carPostion[0]
+}
+  
+  
+  if(data.bigStorageCageInfos!=null){
+    window.localStorage.setItem('length', data.bigStorageCageInfos[0][1].length)
   let length = window.localStorage.getItem('length')
-  adjustedRects.value = data.bigStorageCageInfo1[0].map(rect => ({  
+  adjustedRects.value = data.bigStorageCageInfos[0][1].map(rect => ({  
             ...rect, 
             height: 20/length,
             top: 29/length
           })); 
-    let small = data.bigStorageCageInfo1[0]
-    console.log(small[0].bigStorageCageDetails);
-adjustedRectsa.value = data.bigStorageCageInfo2[0].map(rect => ({  
+adjustedRectsa.value = data.bigStorageCageInfos[0][2].map(rect => ({  
             ...rect, 
             height: 20/length,
             top: 29/length
           })); 
-adjustedRectsb.value = data.bigStorageCageInfo3[0].map(rect => ({  
+adjustedRectsb.value = data.bigStorageCageInfos[0][3].map(rect => ({  
             ...rect, 
             height: 20/length,
             top: 29/length
           })); 
-adjustedRectsc.value = data.bigStorageCageInfo4[0].map(rect => ({  
+adjustedRectsc.value = data.bigStorageCageInfos[0][4].map(rect => ({  
             ...rect, 
             height: 20/length,
             top: 29/length
           })); 
-adjustedRectsd.value = data.bigStorageCageInfo5[0].map(rect => ({  
+adjustedRectsd.value = data.bigStorageCageInfos[0][5].map(rect => ({  
             ...rect, 
             height: 20/length,
             top: 29/length
           })); 
-adjustedRectse.value = data.bigStorageCageInfo6[0].map(rect => ({  
+adjustedRectse.value = data.bigStorageCageInfos[0][6].map(rect => ({  
             ...rect, 
             height: 20/length,
             top: 29/length
           })); 
-adjustedRectsf.value = data.bigStorageCageInfo7[0].map(rect => ({  
+adjustedRectsf.value = data.bigStorageCageInfos[0][7].map(rect => ({  
             ...rect, 
             height: 20/length,
             top: 29/length
           })); 
-adjustedRectsg.value = data.bigStorageCageInfo8[0].map(rect => ({  
+adjustedRectsg.value = data.bigStorageCageInfos[0][8].map(rect => ({  
             ...rect, 
             height: 20/length,
             top: 29/length
           })); 
+adjustedRectsh.value = data.bigStorageCageInfos[0][9].map(rect => ({  
+            ...rect, 
+            height: 20/length,
+            top: 29/length
+          })); 
+  }
+ 
+  
 };
 // 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
 onMounted(() => {
   // fetchFlowCardId();
   initializeWebSocket(socketUrl, handleMessage);
-
+ 
 });
 function getStatusType(enableState: number) {  
   switch (enableState) {  
@@ -585,9 +619,9 @@
     <el-button style="margin-top: 5px;margin-left: 10px;"   id="searchButton" type="success" @click="dialogFormVisibleb = true">{{ $t('searchOrder.productionqueue') }}</el-button>
     <el-card style="flex: 1;margin-left: 10px;margin-top: 5px;" v-loading="loading">
       <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 100px;">
-        <el-table height="100%" ref="table" 
+        <el-table height="100px" ref="table" 
         :data="tableDatac" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
-          <el-table-column prop="bigStorageCageOutTask.glassId" align="center" :label="$t('searchOrder.outputglassID')" min-width="100" />
+          <el-table-column prop="bigStorageCageOutTask.glassId" align="center" :label="$t('searchOrder.outputglassID')" min-width="120" />
           <el-table-column prop="bigStorageCageOutTask.startSlot" align="center" :label="$t('searchOrder.startposition')" min-width="120" />
           <el-table-column prop="bigStorageCageOutTask.endSlot" align="center" :label="$t('searchOrder.targetlocation')" min-width="120" />
           <el-table-column prop="bigStorageCageOutTask.trainNumber" align="center" :label="$t('searchOrder.trips')" min-width="120" />
@@ -600,9 +634,9 @@
           <el-table-column prop="id" align="center" :label="$t('searchOrder.tabid')" min-width="150"/>
           <el-table-column prop="deviceId" align="center" :label="$t('searchOrder.tid')" min-width="100"/>
           <el-table-column prop="slot" align="center" :label="$t('searchOrder.gridnumber')" min-width="100"/>
-          <el-table-column prop="glassId" align="center" :label="$t('searchOrder.glassID')" min-width="100"/>
+          <el-table-column prop="glassId" align="center" :label="$t('searchOrder.glassID')" min-width="120"/>
           <el-table-column prop="sequence" align="center" :label="$t('searchOrder.pieceingrid')" min-width="150"/>
-          <el-table-column prop="flowCardId" align="center" :label="$t('searchOrder.cardnumber')" min-width="100"/>
+          <el-table-column prop="flowCardId" align="center" :label="$t('searchOrder.cardnumber')" min-width="140"/>
           <el-table-column prop="glassType" align="center" :label="$t('searchOrder.typeglass')" min-width="100"/>
           <el-table-column prop="width" align="center" :label="$t('searchOrder.width')" min-width="100"/>
           <el-table-column prop="height" align="center" :label="$t('searchOrder.height')" min-width="100"/>
@@ -620,10 +654,10 @@
     </el-card>
     <el-card style="flex: 1;margin-left: 10px;margin-top: 3px;" v-loading="loading">
       <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 100px;">
-        <el-table height="100%" ref="table" 
+        <el-table height="100px" ref="table" 
         @selection-change="handleSelectionChange"
         :data="tableDatad" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
-          <el-table-column prop="bigStorageCageFeedTask.glassId" align="center" :label="$t('searchOrder.intoglassid')" min-width="100" />
+          <el-table-column prop="bigStorageCageFeedTask.glassId" align="center" :label="$t('searchOrder.intoglassid')" min-width="120" />
           <el-table-column prop="bigStorageCageFeedTask.targetSlot" align="center" :label="$t('searchOrder.targetlocation')" min-width="120" />
           <!-- <el-table-column prop="task_type" align="center" label="浠诲姟绫诲瀷" min-width="120" />娌℃湁杩斿洖瀛楁 -->
           <el-table-column prop="bigStorageCageFeedTask.taskState" align="center" :label="$t('searchOrder.taskstatus')" min-width="120">
@@ -635,9 +669,9 @@
           <el-table-column prop="id" align="center" :label="$t('searchOrder.tabid')" min-width="150"/>
           <el-table-column prop="deviceId" align="center" :label="$t('searchOrder.tid')" min-width="100"/>
           <el-table-column prop="slot" align="center" :label="$t('searchOrder.gridnumber')" min-width="100"/>
-          <el-table-column prop="glassId" align="center" :label="$t('searchOrder.glassID')" min-width="100"/>
+          <el-table-column prop="glassId" align="center" :label="$t('searchOrder.glassID')" min-width="120"/>
           <el-table-column prop="sequence" align="center" :label="$t('searchOrder.pieceingrid')" min-width="150"/>
-          <el-table-column prop="flowCardId" align="center" :label="$t('searchOrder.cardnumber')" min-width="100"/>
+          <el-table-column prop="flowCardId" align="center" :label="$t('searchOrder.cardnumber')" min-width="140"/>
           <el-table-column prop="glassType" align="center" :label="$t('searchOrder.typeglass')" min-width="100"/>
           <el-table-column prop="width" align="center" :label="$t('searchOrder.width')" min-width="100"/>
           <el-table-column prop="height" align="center" :label="$t('searchOrder.height')" min-width="100"/>
@@ -653,7 +687,7 @@
         </el-table>
       </div>
     </el-card>
-    <div style="padding: 10px;display: flex;height:110px;">
+    <div style="padding: 10px;display: flex;height:130px;">
             <div v-for="(item, index) in tableDatae" :key="index" id="occupy">  
                <el-col style="text-align:left;font-weight: bold;">#{{ item.device_id }}</el-col>  
                <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">  
@@ -667,24 +701,39 @@
     </div>
 <!-- // 鐖剁骇妗� -->
 <div class="img-dlpl" >
-    <div class="img-car1" :style="'z-index:999;left:247px;top:' + carposition1 + 'px;position:absolute;'">
-      <div v-show="cellshow1" style="margin-top:10px;width:200px;height:5px;background-color:#409EFF;"></div>
+    <div class="img-car1" :style="'z-index:999;left:270px;top:' + 350*carPosition[0] + 'px;position:absolute;'">
+      <div  
+      v-for="(rect, index) in adjusta"  
+      :key="rect.id"  
+      :style="{
+       width: '30px',
+       height: '5px',
+       backgroundColor: '#409EFF',
+       marginLeft: 5+ `px`,
+       top: '10px',
+       }"  
+    >
     </div>
-    <div v-show="c1" class="img-car2" :style="'z-index:999;left:704px;top:' + carposition2 + 'px;position:absolute;'">
-      <div v-show="cellshow2" style="margin-top:10px;width:200px;height:5px;background-color:#409EFF;"></div>
     </div>
-    
-    <div v-show="c2" class="img-car3" :style="'z-index:999;left:247px;top:' + carposition3 + 'px;position:absolute;'">
-      <div v-show="cellshow3" style="margin-top:10px;width:220px;height:5px;background-color:#409EFF;"></div>
+    <div class="img-car4" :style="'z-index:999;left:740px;top:' + 350*carPosition[1] + 'px;position:absolute;'">
+      <div  
+      v-for="(rect, index) in adjust"  
+      :key="rect.id"  
+      :style="{
+       width: '30px',
+       height: '5px',
+       backgroundColor: '#409EFF',
+       marginLeft: 5+ `px`,
+       top: '10px',
+       }"  
+    >
     </div>
-    <div class="img-car4" :style="'z-index:999;left:704px;top:' + carposition4 + 'px;position:absolute;'">
-      <div v-show="cellshow4" style="margin-top:10px;width:200px;height:5px;background-color:#409EFF;"></div>
     </div>
     <div style="position: relative;">
-    <div v-show="cell1" style="width: 227px;height: 29px;position: relative;top:55px;left: 465px;">
+    <div v-show="cell1" style="width: 227px;height: 29px;position: relative;top:50px;left: 495px;">
       <div  
       v-for="(rect, index) in adjustedRects"  
-      :key="rect.id"  
+      :key="rect"  
       :style="{
         
         // display:'flex',
@@ -712,7 +761,7 @@
       </div>
     </div>
     </div>
- <div v-show="cell2" style="width: 227px;height: 29px;position: relative;top:56px;left: 465px;">
+ <div v-show="cell2" style="width: 227px;height: 29px;position: relative;top:51px;left: 495px;">
   <div  
       v-for="(rect, index) in adjustedRectsa"  
       :key="rect.id"  
@@ -743,7 +792,7 @@
       </div>
     </div>
     </div>
-  <div v-show="cell3" style="width: 227px;height: 29px;position: absolute;top:117px;left: 465px;">
+  <div v-show="cell3" style="width: 227px;height: 29px;position: absolute;top:110px;left: 495px;">
     <div  
       v-for="(rect, index) in adjustedRectsb"  
       :key="rect.id"  
@@ -773,7 +822,7 @@
       </div>
     </div>
     </div>
-  <div v-show="cell4" style="width: 227px;height: 29px;position: absolute;top:148px;left: 465px;">
+  <div v-show="cell4" style="width: 227px;height: 29px;position: absolute;top:140px;left: 495px;">
     <div  
       v-for="(rect, index) in adjustedRectsc"  
       :key="rect.id"  
@@ -804,7 +853,7 @@
       </div>
     </div>
     </div>
-  <div v-show="cell5" style="width: 227px;height: 29px;position: absolute;top:208px;left: 465px;">
+  <div v-show="cell5" style="width: 227px;height: 29px;position: absolute;top:170px;left: 495px;">
     <div  
       v-for="(rect, index) in adjustedRectsd"  
       :key="rect.id"  
@@ -835,7 +884,7 @@
       </div>
     </div>
     </div>
-  <div v-show="cell6" style="width: 227px;height: 29px;position: absolute;top:238px;left: 465px;">
+  <div v-show="cell6" style="width: 227px;height: 29px;position: absolute;top:241px;left: 495px;">
     <div  
       v-for="(rect, index) in adjustedRectse"  
       :key="rect.id"  
@@ -866,7 +915,7 @@
       </div>
     </div>
     </div>
-  <div v-show="cell7" style="width: 227px;height: 29px;position: absolute;top:269px;left: 465px;">
+  <div v-show="cell7" style="width: 227px;height: 29px;position: absolute;top:271px;left: 495px;">
     <div  
       v-for="(rect, index) in adjustedRectsf"  
       :key="rect.id"  
@@ -897,9 +946,40 @@
       </div>
     </div>
     </div>
-  <div v-show="cell8" style="width: 227px;height: 29px;position: absolute;top:300px;left: 465px;">
+  <div v-show="cell8" style="width: 227px;height: 29px;position: absolute;top:301px;left: 495px;">
     <div  
       v-for="(rect, index) in adjustedRectsg"  
+      :key="rect.id"  
+      :style="{
+        
+        // display:'flex',
+       position: 'absolute',
+       width: '227px',
+      //  backgroundColor: 'red',
+       left: '0px',
+       top: index*rect.top+`px`,
+       height: `${rect.height}px`,
+       }"  
+    >
+    <div  
+      v-for="(rects, index) in rect.bigStorageCageDetails"  
+      :key="rects"  
+      :style="{
+        float:'left',
+       width: '18px',
+       height: `${rect.height}px`,
+       backgroundColor: '#911005',
+      // border:'1px solid black',
+       top: '0px',
+       marginRight: rects.gap/5000*227+'px'
+       }"  
+    >
+      </div>
+    </div>
+    </div>
+  <div v-show="cell9" style="width: 227px;height: 29px;position: absolute;top:332px;left: 495px;">
+    <div  
+      v-for="(rect, index) in adjustedRectsh"  
       :key="rect.id"  
       :style="{
         
@@ -959,8 +1039,8 @@
           </el-input>
           <el-button type="primary" plain style="margin-left: 10px;" @click="searchout">{{ $t('searchOrder.search') }}</el-button>
     </div>
-
-    <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 500px;">
+ 
+    <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 200px;">
         <el-table height="100%" ref="table"
         :data="tableDataf" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
           <el-table-column prop="glassId" align="center" :label="$t('searchOrder.glassID')" min-width="120" />
@@ -996,7 +1076,7 @@
         </el-table>
       </div>
   </el-dialog>
-<el-dialog v-model="dialogFormVisiblea" top="5vh" width="97%" :title="$t('searchOrder.cageinformation')">
+<el-dialog v-model="dialogFormVisiblea" top="2vh" width="97%" :title="$t('searchOrder.cageinformation')">
     <el-table  
           :data="paginatedUsers" 
           @row-click="handleRowClick" 
@@ -1017,9 +1097,9 @@
                   :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}" 
                 >  
           <!-- <el-table-column prop="menuName" label="浜岀骇鑿滃崟鏍�" align="center" min-width="140" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"/>   -->
-          <el-table-column prop="glassId" :label="$t('searchOrder.glassID')" align="center" min-width="90"/>  
-          <el-table-column prop="sequence" align="center" :label="$t('searchOrder.pieceingrid')" min-width="110" />
-          <el-table-column prop="flowCardId" align="center" :label="$t('searchOrder.cardnumber')" min-width="120" />
+          <el-table-column prop="glassId" :label="$t('searchOrder.glassID')" align="center" min-width="130"/>  
+          <el-table-column prop="sequence" align="center" :label="$t('searchOrder.pieceingrid')" min-width="130" />
+          <el-table-column prop="flowCardId" align="center" :label="$t('searchOrder.cardnumber')" min-width="130" />
           <el-table-column prop="glassType" align="center" :label="$t('searchOrder.typeglass')" min-width="80" />
           <el-table-column prop="width" align="center" :label="$t('searchOrder.width')" min-width="80" />
           <el-table-column prop="height" align="center" :label="$t('searchOrder.height')" min-width="80" />
@@ -1086,7 +1166,16 @@
     <div style="margin-top: 20px; text-align: center;">
       <!-- 涓婁竴椤垫寜閽� -->
       <el-button @click="prevPage" :disabled="currentPage === 1">{{ $t('searchOrder.up') }}</el-button>
-      
+      <div style="display: inline-block; margin: 0 20px;">  
+    <el-button  
+      v-for="page in totalPages"  
+      :key="page"  
+      :class="{ 'is-active': currentPage === page }"  
+      @click="jumpToPage(page)"  
+    >  
+      {{ page }}  
+    </el-button>  
+  </div> 
       <!-- 涓嬩竴椤垫寜閽� -->
       <el-button @click="nextPage" :disabled="currentPage >= totalPages">{{ $t('searchOrder.down') }}</el-button>
       
@@ -1251,8 +1340,9 @@
 }
  
 .img-dlpl{
-  margin-left: 80px;
-  background-image:url('../../assets/dlpl.png');
+  margin-left: 20px;
+  margin-top: 20px;
+  background-image:url('../../assets/dlpl9.png');
   background-repeat: no-repeat;
     background-attachment: local;
     min-height: 400px;
@@ -1263,31 +1353,8 @@
     position:relative
 }
 .img-car1{
-  background-image:url('../../assets/lp.png');
-  position: absolute;
-  background-repeat: no-repeat;
-    background-attachment: local;
-    min-height: 200px;
-    width: 200px;
-    max-width: 100%;
-    background-size: 200px 70px;
-    overflow: hidden;
-    position:relative
-}
-.img-car2{
-  background-image:url('../../assets/lpa.png');
-  position: absolute;
-  background-repeat: no-repeat;
-    background-attachment: local;
-    min-height: 200px;
-    width: 200px;
-    max-width: 100%;
-    background-size: 200px 70px;
-    overflow: hidden;
-    position:relative
-}
-.img-car3{
-  background-image:url('../../assets/lp.png');
+  display: flex;
+  background-image:url('../../assets/lp9.png');
   position: absolute;
   background-repeat: no-repeat;
     background-attachment: local;
@@ -1299,7 +1366,8 @@
     position:relative
 }
 .img-car4{
-  background-image:url('../../assets/lpa.png');
+  display: flex;
+  background-image:url('../../assets/lpa9.png');
   position: absolute;
   background-repeat: no-repeat;
     background-attachment: local;
diff --git a/UI-Project/src/views/UnLoadGlass/Landingindication.vue b/UI-Project/src/views/UnLoadGlass/Landingindication.vue
index 41a6a45..36af612 100644
--- a/UI-Project/src/views/UnLoadGlass/Landingindication.vue
+++ b/UI-Project/src/views/UnLoadGlass/Landingindication.vue
@@ -1,7 +1,7 @@
 <template>
   <div class="glass-rack">
     <div >
-      <svg width="500" height="500" xmlns="http://www.w3.org/2000/svg">
+      <svg width="500" height="370" xmlns="http://www.w3.org/2000/svg">
         <g stroke="null" id="Layer_1">
           <!-- 浣跨敤 v-for 寰幆娓叉煋鏁版嵁 -->
           <g v-for="(rack, index) in racks" :key="index"   :data="tableData">
@@ -46,7 +46,7 @@
  
   { x: 280, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: 'NG12345678',downGlassInfoList:"" } },
  
-  { x: 140, y: 320, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 20, width: 100, fillColor: 'yellow', content: 'NG1234561454' ,downGlassInfoList:""} }
+  { x: 140, y: 280, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 20, width: 100, fillColor: 'yellow', content: 'NG1234561454' ,downGlassInfoList:""} }
   
 ]);
 
@@ -171,7 +171,7 @@
 
   Swal.fire({
     // title: '鐜荤拑淇℃伅',
-    title: "$t('reportWork.glassinformation')",
+    title: t('reportWork.glassinformation'),
     html: tableContent,
     customClass: {
       popup: 'format-pre'
@@ -198,7 +198,7 @@
 
 <style scoped>
 .glass-rack {
-  margin-left: 20px;
+  /* margin-left: 10px; */
   width: 500px;
   margin-top: 5px;
 }
diff --git a/UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue b/UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue
index c7fa71e..c42fbe5 100644
--- a/UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue
+++ b/UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue
@@ -1,7 +1,7 @@
 <template>
   <div class="glass-rack">
     <div >
-      <svg width="500" height="500" xmlns="http://www.w3.org/2000/svg">
+      <svg width="500" height="370" xmlns="http://www.w3.org/2000/svg">
         <g stroke="null" id="Layer_1">
           <!-- 浣跨敤 v-for 寰幆娓叉煋鏁版嵁 -->
           <g v-for="(rack, index) in racks" :key="index">
@@ -46,7 +46,7 @@
  
   { x: 280, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: 'NG12345678' } },
  
-  { x: 140, y: 320, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 20, width: 100, fillColor: 'yellow', content: 'NG1234561454' } }
+  { x: 140, y: 280, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 20, width: 100, fillColor: 'yellow', content: 'NG1234561454' } }
   
 ]);
 
@@ -167,7 +167,7 @@
   tableContent += '</table>';
 
   Swal.fire({
-    title: "$t('reportWork.glassinformation')",
+    title: t('reportWork.glassinformation'),
     // title: '鐜荤拑淇℃伅',
     html: tableContent,
     customClass: {
@@ -193,9 +193,9 @@
 
 <style scoped>
 .glass-rack {
-  margin-left: 20px;
+  /* margin-left: 20px; */
   width: 500px;
-  margin-top: 10px;
+  margin-top: 5px;
 }
 .rack-rect:hover {
   cursor: pointer;
diff --git a/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue b/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
index b41ed1c..640d82f 100644
--- a/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
+++ b/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
@@ -1,10 +1,8 @@
 <script setup>
 import {Search} from "@element-plus/icons-vue";
 import {reactive, onMounted, onBeforeUnmount} from "vue";
-
 import {useRouter} from "vue-router"
 const router = useRouter()
-
 import { useI18n } from 'vue-i18n'
   const { t } = useI18n()
   let language = ref(localStorage.getItem('lang') || 'zh')
@@ -16,16 +14,14 @@
 import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService';
 import { WebSocketHost ,host} from '@/utils/constants'
 const dialogFormVisiblea = ref(false)
-
 const dialogFormVisiblea2 = ref(false)
-
 // 鏁版嵁
 const loading = ref(false);
-
 // 寮规鏄剧ず鎺у埗
 const dialogFormVisible = ref(false);
 // 琛ㄥ崟鏁版嵁
 const workstationId = ref('');
+const selectedProjectNoa = ref(null); // 褰撳墠閫変腑鐨勮鑹� 
 const flowCardId = ref('');
 const flowCardOptions = ref('[]');
 const tableData = reactive([]);
@@ -33,14 +29,14 @@
 const handleSelectionChange = () => {
   // 澶勭悊琛ㄦ牸琛岄�夋嫨浜嬩欢
 };
-
 const handleBindRack = (row) => {
   workstationId.value = row.workstationId; // 鍋囪rackNumber鏄灦鍙峰瓧娈电殑灞炴�у悕
+  console.log(row.flowCardId);
+  flowCardId.value = row.flowCardId;
   // 鍙戣捣鎺ュ彛璇锋眰鑾峰彇娴佺▼鍗″彿
     fetchFlowCardId(); 
   dialogFormVisiblea.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
 };
-
 //鑾峰彇娴佺▼鍗″彿
 const fetchFlowCardId = async () => {
   try {
@@ -62,11 +58,13 @@
 //纭
 const handleConfirm = async () => {
   try {
+    const firstPart = flowCardId.value.split('|')[0].trim(); // 
+const twoPart = flowCardId.value.split('|')[1].trim(); // 
     const response = await request.post('unLoadGlass/downWorkStation/updateFlowCardId', {
       workstationId: workstationId.value,
-      flowCardId: flowCardId.value
+      flowCardId: firstPart,
+      layer:twoPart
     }); 
-
     console.log(response)
     if (response.code == 200) {
       // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
@@ -84,16 +82,12 @@
     console.error(error);
   }
 };
-
-
 const updatePageData = () => {
   // 鍋囪浣犵殑椤甸潰涓婃湁涓�涓悕涓� tableData 鐨� Vue 缁勪欢
   // 浣犲彲浠ョ洿鎺ユ洿鏂� tableData 鐨勬暟鎹�
   fetchTableData()
   // 浣跨敤 $forceUpdate() 寮哄埗鏇存柊缁勪欢
-
 };
-
 const handleBindRack2 = (row) => {
   workstationId.value = row.workstationId; // 鍋囪rackNumber鏄灦鍙峰瓧娈电殑灞炴�у悕
   dialogFormVisiblea2.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
@@ -125,8 +119,6 @@
             dialogFormVisiblea2.value = false;
     }
 };
-
-
 // 鍙戦�佽幏鍙栬〃鏍兼暟鎹殑璇锋眰
 const fetchTableData = async () => {
   try {
@@ -147,54 +139,43 @@
     ElMessage.error('鑾峰彇琛ㄦ牸鏁版嵁澶辫触锛岃閲嶈瘯');
   }
 };
-
-
 const socketUrl = `ws://${WebSocketHost}:${host}/api/unLoadGlass/api/talk/unloadglass`;
 // 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
 const handleMessage = (data) => {
-
   // 鏇存柊 tableData 鐨勬暟鎹�
-
   tableData.splice(0, tableData.length, ...data.params[0]);
 //  console.log("鏇存柊鍚庢暟鎹�", data.params[0]);
-
 };
-
 // 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
-
 onMounted(() => {
   fetchFlowCardId();
   fetchTableData(); // 鑾峰彇鏁版嵁
   initializeWebSocket(socketUrl, handleMessage);
 });
-
 onBeforeUnmount(() => {
   console.log("鍏抽棴浜�")
   closeWebSocket();
 });
-
 // beforeUnmount(() => {
 //   closeWebSocket();
 // });
-
-
 // setInterval(fetchTableData, 2000)
-
-
 </script>
-
 <template>
   <div>
-    <el-card style="flex: 1;margin-left: 10px;margin-top: 5px;" v-loading="loading">
-      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 200px;">
-        <el-table height="100%" ref="table" 
+    <el-card style="flex: 1;" v-loading="loading">
+      <el-card style="flex: 1;margin-left: 4px;margin-top: 1px;" v-loading="loading">
+      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
+        <el-table height="200px" ref="table" 
         @selection-change="handleSelectionChange"
         :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
           <el-table-column prop="workstationId" align="center" :label="$t('reportWork.lowerbit')" min-width="80" />
           <el-table-column prop="workstationId" align="center" :label="$t('reportWork.shelfnumber')" min-width="120" />
-          <el-table-column prop="flowCardId" align="center" :label="$t('reportWork.cardnumber')" min-width="120" />
+          <el-table-column prop="flowCardId" align="center" :label="$t('reportWork.cardnumber')" min-width="150" />
           <el-table-column prop="totalquantity" align="center" :label="$t('reportWork.totalquantity')" min-width="120" />
           <el-table-column prop="racksnumber" align="center" :label="$t('reportWork.beendropped')" min-width="120" />
+          <el-table-column prop="layer" align="center" label="灞傛暟" min-width="120" />
+          <el-table-column prop="artificialnumber" align="center" label="浜哄伐涓嬬墖鏁�" min-width="120" />
           <el-table-column prop="work_state" align="center" :label="$t('reportWork.state')" min-width="120" />
           <el-table-column prop="deviceId" align="center" :label="$t('reportWork.devicenumber')" min-width="120" />
           <el-table-column
@@ -216,7 +197,22 @@
         </el-table>
       </div>
     </el-card>
-
+    <!-- workstationId: '1',
+    workstationId: '1005',
+    flowCardId: '183.6',
+    totalquantity: '1991',
+    racksnumber:"1",
+    work_state: '寰呰瘑鍒�', -->
+  <div style="display: flex;" class="awatch">
+  <div id="main-body">
+      <Landingindication></Landingindication>
+    </div>
+  <div id="main-bodya">
+    <Landingindicationtwo></Landingindicationtwo>
+    </div>
+    </div>
+    </el-card>
+  </div>
 
     <el-dialog v-model="dialogFormVisiblea" top="21vh" width="40%" :title="$t('reportWork.bindingshelves')">
     <div style="margin-left: 50px;margin-top: 10px;margin-bottom: 10px;">
@@ -242,12 +238,7 @@
       </div>
     </template>
   </el-dialog>
-
-
-
-
   <el-dialog v-model="dialogFormVisiblea2" top="21vh" width="30%" :title="$t('reportWork.clearglass')">
-
     <template #footer>
       <div id="dialog-footer">
         <el-button type="primary" @click="handleclear">
@@ -257,26 +248,8 @@
       </div>
     </template>
   </el-dialog>
-
-
-    <!-- workstationId: '1',
-    workstationId: '1005',
-    flowCardId: '183.6',
-    totalquantity: '1991',
-    racksnumber:"1",
-    work_state: '寰呰瘑鍒�', -->
-  </div>
-  <div style="display: flex;">
-  <div id="main-body">
-      <Landingindication></Landingindication>
-    </div>
-  <div id="main-bodya">
-    <Landingindicationtwo></Landingindicationtwo>
-    </div></div>
 </template>
-
 <style scoped>
-
 #dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
 #dta { display:block; float:left;line-height: 20px;margin-left: 80%;}
 #dialog-footer{
@@ -292,15 +265,15 @@
    background-color: #337ecc;
    margin-left: 28%;
 }
-#awatch{
-  height: 450px;
+.awatch{
+  max-width: 100%;
 }
 #main-body{
-  margin-top: -20px;
-  margin-left: 200px;
+  margin-top: -40px;
+  margin-left: 150px;
 }
 #main-bodya{
-  margin-top: -10px;
+  margin-top: -40px;
   margin-left: 100px;
 }
 </style>
\ No newline at end of file
diff --git a/UI-Project/src/views/User/permissions.vue b/UI-Project/src/views/User/permissions.vue
index 740afff..b2f373d 100644
--- a/UI-Project/src/views/User/permissions.vue
+++ b/UI-Project/src/views/User/permissions.vue
@@ -75,6 +75,30 @@
   // window.localStorage.setItem('slot', row.slot)
   addb.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
 };
+function closeDialog(row) {
+     add.value = false;
+       menuName.value = '';
+       listSort.value = '';
+       url.value = '';
+}
+function closeDialoga(row) {
+     adda.value = false;
+       menuName.value = '';
+       listSort.value = '';
+       url.value = '';
+}
+function closeDialogb(row) {
+     addb.value = false;
+       menuName.value = '';
+       listSort.value = '';
+       url.value = '';
+}
+function closeDialogc(row) {
+     addc.value = false;
+       menuName.value = '';
+       listSort.value = '';
+       url.value = '';
+}
 // 娣诲姞涓�绾ц彍鍗�
 const getTableRow = async () => {
   try {
@@ -319,7 +343,7 @@
         <el-button type="primary" @click="getTableRow">
           {{ $t('customer.sure') }}
         </el-button>
-        <el-button @click="add = false">{{ $t('customer.cancel') }}</el-button>
+        <el-button @click="closeDialog">{{ $t('customer.cancel') }}</el-button>
       </div>
     </template>
   </el-dialog> 
@@ -376,7 +400,7 @@
         <el-button type="primary" @click="getTableRowb">
           {{ $t('customer.sure') }}
         </el-button>
-        <el-button @click="addb = false">{{ $t('customer.cancel') }}</el-button>
+        <el-button @click="closeDialogb">{{ $t('customer.cancel') }}</el-button>
       </div>
     </template>
   </el-dialog> 
@@ -419,7 +443,7 @@
         <el-button type="primary" @click="getTableRowa">
           {{ $t('customer.sure') }}
         </el-button>
-        <el-button @click="adda = false">{{ $t('customer.cancel') }}</el-button>
+        <el-button @click="closeDialoga">{{ $t('customer.cancel') }}</el-button>
       </div>
     </template>
   </el-dialog> 
@@ -462,7 +486,7 @@
         <el-button type="primary" @click="getTableRowac">
           {{ $t('customer.sure') }}
         </el-button>
-        <el-button @click="addc = false">{{ $t('customer.cancel') }}</el-button>
+        <el-button @click="closeDialogc">{{ $t('customer.cancel') }}</el-button>
       </div>
     </template>
   </el-dialog> 
diff --git a/UI-Project/src/views/User/rolelist.vue b/UI-Project/src/views/User/rolelist.vue
index 5dcbb0b..78dfa0f 100644
--- a/UI-Project/src/views/User/rolelist.vue
+++ b/UI-Project/src/views/User/rolelist.vue
@@ -13,7 +13,7 @@
 // import { ref } from 'vue'
 import { ElMessage, ElMessageBox } from 'element-plus'
 //  import LanguageMixin from './lang/LanguageMixin'
-const selectedProjectNoa = ref(''); // 褰撳墠閫変腑鐨勮鑹� 
+const selectedProjectNoa = ref(null); // 褰撳墠閫変腑鐨勮鑹� 
 // const options = ref<any[]>([]); // 涓嬫媺閫夐」鍒楄〃  
   const name = ref('');
 const tableData = ref([])
@@ -53,26 +53,34 @@
     console.error('Error fetching options:', error);  
   }  
 }; 
-// 娣诲姞 
+// 娣诲姞
 const getTableRow = async () => {
   try {  
     let menuList = [];
-    selectedOptions.value.forEach(array => {
-      if (array.length >= 2) {
-        let id = array[0];
-        let parentId = array[1];
-        menuList.push({  
-          id: id,  
-          parentId: 0,  
-          children: [
-        {
-          id: parentId,
-          parentId: id,
-        }
-      ],
-        });  
+     let parentIdMap = {}; // 鐢ㄤ簬瀛樺偍宸茬粡娣诲姞鐨勭埗椤�  
+    selectedOptions.value.forEach(array => {  
+      if (array.length >= 2) {  
+        let id = array[0];  
+        let parentId = array[1];  
+        // 濡傛灉id杩樻湭浣滀负鐖堕」娣诲姞锛屽垯娣诲姞瀹�  
+        if (!parentIdMap[id]) {  
+          menuList.push({  
+            id: id,  
+            parentId: 0, // 閫氬父锛岄《绾ч」鐨刾arentId鍙兘鏄痭ull鎴栫壒瀹氱殑鏍笽D锛岃繖閲岃涓�0鍙兘鏄釜鐗规畩鐢ㄩ��  
+            children: []  
+          });  
+          parentIdMap[id] = menuList[menuList.length - 1]; // 鏇存柊鏄犲皠  
+        }  
+        // 鍚戝搴旂殑鐖堕」娣诲姞瀛愰」  
+        if (!parentIdMap[id].children.some(child => child.id === parentId)) {  
+          // 妫�鏌ユ槸鍚﹀凡瀛樺湪鐩稿悓鐨勫瓙椤癸紙鍩轰簬id锛夛紝閬垮厤閲嶅娣诲姞  
+          parentIdMap[id].children.push({  
+            id: parentId,  
+            parentId: id  
+          });  
+        }  
       }  
-    });
+    });  
     const dataToSend = {  
       name: name.value,
       menuList: menuList
@@ -91,64 +99,124 @@
     console.error(error);
   }
 };
-// 澶勭悊缂栬緫鎸夐挳鐐瑰嚮  
 function handleEdit(row) {  
-  name.value = row.name; 
-  selectedOptions.value = row.selectedOptions
-//  options.value = res.data.tree
- adda.value = true; // 鏄剧ず瀵硅瘽妗�  
-  window.localStorage.setItem('id', row.id)
+  name.value = row.name;  
+  adda.value = true;
+  window.localStorage.setItem('ids', row.id);
+  const parentIdMap = {};  
+  const menuItemsById = {}; // 蹇�熸煡鎵捐彍鍗曢」  
+  let topLevelItems = []; // 瀛樺偍椤剁骇鑿滃崟椤� 
+  row.menuList.forEach(item => {  
+    const parentId = item.parentId === 0 ? null : item.parentId;
+    const menuItem = {  
+      id: item.id,  
+      parentId: parentId,  
+      menuName: item.menuName,  
+      children: []  
+    };  
+    menuItemsById[item.id] = menuItem;  
+    // 鍒濆鍖栨垨鏇存柊parentIdMap涓殑鏁扮粍  
+    if (!parentIdMap[parentId]) {  
+      parentIdMap[parentId] = [];  
+    }  
+    if (parentId === null) {  
+      // 椤剁骇鑿滃崟椤圭洿鎺ユ坊鍔犲埌topLevelItems  
+      topLevelItems.push(menuItem);  
+    } else {  
+      // 闈為《绾ц彍鍗曢」娣诲姞鍒皃arentIdMap涓�  
+      parentIdMap[parentId].push(menuItem);  
+    }  
+  });  
+  for (const parentId in parentIdMap) {  
+    if (parentId !== 'null') { // 璺宠繃椤剁骇鑿滃崟椤�  
+      parentIdMap[parentId].forEach(child => {  
+        // 鏌ユ壘鐖堕」骞舵坊鍔犲瓙椤�  
+        if (menuItemsById[parentId]) {  
+          menuItemsById[parentId].children.push(child);  
+        }  
+      });  
+    }  
+  }  
+  if (selectedOptions.value !== topLevelItems) {  
+    selectedOptions.value = topLevelItems;  
+  }  
+  console.log(topLevelItems);
+  // selectedOptions.value = topLevelItems;
+const topLevelItemsWithChildren = topLevelItems; // 鍖呭惈椤剁骇鑿滃崟椤瑰強鍏跺瓙鑿滃崟椤圭殑鏁扮粍 聽
+ let selectedPath = [];
+// 寰幆閬嶅巻 topLevelItemsWithChildren 鏁扮粍
+for (let i = 0; i < topLevelItemsWithChildren.length; i++) {
+ // 娣诲姞椤剁骇鑿滃崟椤圭殑 id
+ selectedPath.push(topLevelItemsWithChildren[i].id);
+ // 濡傛灉鏈夊瓙鑿滃崟椤癸紝娣诲姞绗竴涓瓙鑿滃崟椤圭殑 id
+ if (topLevelItemsWithChildren[i].children && topLevelItemsWithChildren[i].children.length > 0) {
+  for (let j = 0; j < topLevelItemsWithChildren[i].children.length; j++) {  
+            // 灏嗘瘡涓瓙鑿滃崟椤圭殑 id 娣诲姞鍒� selectedPath 涓�  
+            selectedPath.push(topLevelItemsWithChildren[i].children[j].id);  
+        }  
+    }  
+}
+ console.log(selectedPath);
+selectedOptions.value = selectedPath;
 }
 // 缂栬緫
 const getTableRowa = async () => {
-  let id = window.localStorage.getItem('id')
+  let ids = window.localStorage.getItem('ids')
   try {  
     let menuList = [];
-    selectedOptions.value.forEach(array => {
-      if (array.length >= 2) {
-        let id = array[0];
-        let parentId = array[1];
-        menuList.push({  
-          id: id,  
-          parentId: 0,  
-          children: [
-        {
-          id: parentId,
-          parentId: id,
-        }
-      ],
-        });  
+     let parentIdMap = {}; // 鐢ㄤ簬瀛樺偍宸茬粡娣诲姞鐨勭埗椤�  
+    selectedOptions.value.forEach(array => {  
+      if (array.length >= 2) {  
+        let id = array[0];  
+        let parentId = array[1];  
+        // 濡傛灉id杩樻湭浣滀负鐖堕」娣诲姞锛屽垯娣诲姞瀹�  
+        if (!parentIdMap[id]) {  
+          menuList.push({  
+            id: id,  
+            parentId: 0, // 閫氬父锛岄《绾ч」鐨刾arentId鍙兘鏄痭ull鎴栫壒瀹氱殑鏍笽D锛岃繖閲岃涓�0鍙兘鏄釜鐗规畩鐢ㄩ��  
+            children: []  
+          });  
+          parentIdMap[id] = menuList[menuList.length - 1]; // 鏇存柊鏄犲皠  
+        }  
+        // 鍚戝搴旂殑鐖堕」娣诲姞瀛愰」  
+        if (!parentIdMap[id].children.some(child => child.id === parentId)) {  
+          // 妫�鏌ユ槸鍚﹀凡瀛樺湪鐩稿悓鐨勫瓙椤癸紙鍩轰簬id锛夛紝閬垮厤閲嶅娣诲姞  
+          parentIdMap[id].children.push({  
+            id: parentId,  
+            parentId: id  
+          });  
+        }  
       }  
-    });
+    });  
     const dataToSend = {  
-      id:id,
+      id:ids,
       name: name.value,
       menuList: menuList
     };  
     const response = await request.post('/loadGlass/sys/role/updateRole', dataToSend);
-  // try {
-  //   const response = await request.post('/loadGlass/sys/role/updateRole', {
-  //     id: id,
-  //     name: name.value,
-  //   }); 
- 
     if (response.code == 200) {
-      // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
       ElMessage.success(response.message);
       adda.value = false;
       name.value = '';
-       selectedOptions.value = '';
-      fetchOptionsa()
-      tableData.value = response.data;
+      selectedOptions.value = '';
+      fetchOptionsa();
     } else {
-      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
       ElMessage.error(response.message);
     }
   } catch (error) {
-    // 澶勭悊閿欒
     console.error(error);
   }
 };
+function closeDialog(row) {
+     add.value = false;
+      name.value = '';
+      selectedOptions.value = '';
+}
+function closeDialoga(row) {
+     adda.value = false;
+      name.value = '';
+      selectedOptions.value = '';
+}
 // 鍒犻櫎 
  const opena = async(row) => {  
   try {
@@ -244,7 +312,7 @@
         <el-button type="primary" @click="getTableRow">
           {{ $t('delivery.sure') }}
         </el-button>
-        <el-button @click="add = false"> {{ $t('delivery.cancel') }}</el-button>
+        <el-button @click="closeDialog"> {{ $t('delivery.cancel') }}</el-button>
       </div>
     </template>
   </el-dialog> 
@@ -284,7 +352,7 @@
         <el-button type="primary" @click="getTableRowa">
           {{ $t('delivery.sure') }}
         </el-button>
-        <el-button @click="adda = false">{{ $t('delivery.cancel') }}</el-button>
+        <el-button @click="closeDialoga">{{ $t('delivery.cancel') }}</el-button>
       </div>
     </template>
   </el-dialog> 
diff --git a/UI-Project/src/views/User/userlist.vue b/UI-Project/src/views/User/userlist.vue
index 8e97491..5d79a7b 100644
--- a/UI-Project/src/views/User/userlist.vue
+++ b/UI-Project/src/views/User/userlist.vue
@@ -13,7 +13,7 @@
   const { t } = useI18n()
   let language = ref(localStorage.getItem('lang') || 'zh')
 //  import LanguageMixin from './lang/LanguageMixin'
-const selectedProjectNoa = ref(''); // 褰撳墠閫変腑鐨勮鑹� 
+const selectedProjectNoa = ref(null); // 褰撳墠閫変腑鐨勮鑹� 
 // const options = ref<any[]>([]); // 涓嬫媺閫夐」鍒楄〃  
   const userName = ref('');
   const password = ref('');
@@ -98,11 +98,29 @@
 }; 
 // 澶勭悊缂栬緫鎸夐挳鐐瑰嚮  
 function handleEdit(row) {  
-  userName.value = row.userName; 
+  userName.value = row.userName;
+  if (row.roleList && row.roleList.length > 0) {  
+    const firstRole = row.roleList[0];  
+    selectedProjectNoa.value = firstRole.id; // 璁剧疆涓篒D锛岃�屼笉鏄痭ame  
+  }  
   adda.value = true; // 鏄剧ず瀵硅瘽妗�  
   window.localStorage.setItem('id', row.id)
 
 } 
+
+function closeDialog(row) {
+     add.value = false;
+     userName.value = '';
+     nickName.value = '';
+     password.value = '';
+     selectedProjectNoa.value = '';
+}
+function closeDialoga(row) {
+     adda.value = false;
+     userName.value = '';
+     nickName.value = '';
+     password.value = '';
+}
 // 娣诲姞 
 const getTableRow = async () => {
   try {
@@ -127,7 +145,7 @@
      tableData.value = response.data;
     } else {
       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
-      ElMessage.error(response.msg);
+      ElMessage.error(response.message);
     }
   } catch (error) {
     // 澶勭悊閿欒
@@ -277,7 +295,7 @@
         <el-button type="primary" @click="getTableRow">
           {{ $t('productStock.sure') }}
         </el-button>
-        <el-button @click="add = false">{{ $t('productStock.cancel') }}</el-button>
+        <el-button @click="closeDialog">{{ $t('productStock.cancel') }}</el-button>
       </div>
     </template>
   </el-dialog> 
@@ -324,7 +342,7 @@
         <el-button type="primary" @click="getTableRowa">
           {{ $t('productStock.sure') }}
         </el-button>
-        <el-button @click="adda = false">{{ $t('productStock.cancel') }}</el-button>
+        <el-button @click="closeDialoga">{{ $t('productStock.cancel') }}</el-button>
       </div>
     </template>
   </el-dialog> 
diff --git a/UI-Project/src/views/largescreen/largescreen.vue b/UI-Project/src/views/largescreen/largescreen.vue
new file mode 100644
index 0000000..7c3603a
--- /dev/null
+++ b/UI-Project/src/views/largescreen/largescreen.vue
@@ -0,0 +1,268 @@
+<template>  
+  <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;" v-loading="loading">
+    <el-scrollbar height="600px">
+<div id="top" style="height: 150px;display: flex;">  
+  <div class="echarts-container">
+  <div v-for="(processData, index) in processesData" :key="index" class="echarts-item">
+    <div :id="'pieChart_' + index" class="pie-chart"></div>
+  </div>
+</div>
+</div> 
+<div style="display: flex;">
+<div id="centerleft" style="margin-top: 10px;height: 240px;width: 340px;background-color: #911005;">
+  <el-table height="240" ref="table" width="340px"
+      @selection-change="handleSelectionChange"
+      :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
+        <el-table-column fixed prop="orderId" align="center" :label="$t('large.number')" min-width="110" />
+        <el-table-column prop="project" align="center" :label="$t('large.projectname')" min-width="100" />
+        <el-table-column prop="responsibleProcess" align="center" :label="$t('large.responsibleprocess')" min-width="100" />
+        <el-table-column prop="breakageQuantity" align="center" :label="$t('large.numberfractions')" min-width="110" />
+        <el-table-column prop="patchProcesses" align="center" :label="$t('large.process')" min-width="100" />
+        <el-table-column fixed="right" :label="$t('large.operate')" align="center" width="100">
+          <template #default="scope">
+            <el-button size="mini" type="text" plain @click="handleBinda">{{ $t('large.mes') }}</el-button>
+          </template>
+      </el-table-column>
+      </el-table>
+</div> 
+<div id="center" style="margin-top: 10px;margin-left: 10px; height: 240px;width: 750px;">
+  <img src="../../assets/d1a.png" alt="" style="margin-left: -10px; width: 100%;height: 100%;position: relative;"> 
+</div>
+<div id="centerright" style="margin-top: 10px;margin-left: 10px; height: 240px;width: 240px;background-color: #911005;">
+  <el-table height="240" ref="table" width="340px"
+      @selection-change="handleSelectionChange"
+      :data="tableDatab" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
+        <el-table-column prop="projectNo" align="center" :label="$t('large.projectnumber')" min-width="50" />
+        <el-table-column prop="projectName" align="center" :label="$t('large.projectname')" min-width="50" />
+      </el-table>
+</div> 
+</div>
+<div id="bottom" style="margin-top: 10px;height: 190px;background-color: #911005;">
+<el-table height="190" ref="table"
+      @selection-change="handleSelectionChange"
+      :data="tableDatac" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
+        <el-table-column prop="orderId" align="center" :label="$t('large.orderId')" min-width="50" />
+        <el-table-column prop="customerName" align="center" :show-overflow-tooltip="true" :label="$t('large.customerName')" min-width="90" />
+        <el-table-column prop="project" align="center" :label="$t('large.project')" min-width="50" />
+        <el-table-column prop="area" align="center" :label="$t('large.are')" min-width="50" />
+        <el-table-column prop="quantity" align="center" :label="$t('large.quantity')" min-width="50" />
+        <el-table-column
+          align="center"
+          :label="$t('large.warehousing')"
+          min-width="50"
+          prop="warehousing"
+        >
+        <template #default="scope">  
+      <el-tag :type="getStatusType(scope.row.warehousing)">  
+        {{ getStatusText(scope.row.warehousing) }}  
+      </el-tag>  
+    </template> 
+        </el-table-column>
+        <el-table-column prop="deliveryDate" align="center" :label="$t('large.deliveryDate')" min-width="50" />
+      </el-table>
+</div>
+</el-scrollbar>
+</el-card>
+<el-dialog v-model="blinda" top="5vh" width="80%" :title="$t('large.brokeno')">
+  <el-table height="400" ref="table" 
+      @selection-change="handleSelectionChange"
+      :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
+        <el-table-column prop="reportingWorkTime" fixed align="center" :label="$t('large.time')" min-width="110" />
+        <el-table-column prop="orderId" fixed align="center" :label="$t('large.number')" min-width="110" />
+        <el-table-column prop="reportingWorkId" align="center" :label="$t('large.jobnumber')" min-width="120" />
+        <el-table-column prop="productionId" align="center" :label="$t('large.productionnumber')" min-width="130" />
+        <el-table-column prop="processId" align="center" :label="$t('large.cardnumber')" min-width="140" />
+        <el-table-column prop="project" align="center" :label="$t('large.projectname')" min-width="110" />
+        <el-table-column prop="batch" align="center" :label="$t('large.batch')" min-width="110" />
+        <el-table-column prop="reviewer" align="center" :label="$t('large.detailID')" min-width="110" />
+        <el-table-column prop="orderSort" align="center" :label="$t('large.serialnumber')" min-width="110" />
+        <el-table-column prop="productName" align="center" :label="$t('large.productname')" :show-overflow-tooltip="true" min-width="220" />
+        <el-table-column prop="technologyNumber" align="center" :label="$t('large.serial')" min-width="110" />
+        <el-table-column prop="glassAddress" align="center" :label="$t('large.slicemarker')" min-width="130" />
+        <el-table-column prop="patchNum" align="center" :label="$t('large.numberpatches')" min-width="110" />
+        <el-table-column prop="width" align="center" :label="$t('large.width')" min-width="110" />
+        <el-table-column prop="height" align="center" :label="$t('large.height')" min-width="110" />
+        <el-table-column prop="shape" align="center" :label="$t('large.shape')" min-width="110" />
+        <el-table-column prop="responsibleProcess" align="center" :label="$t('large.responsibleprocess')" min-width="110" />
+        <el-table-column prop="patchProcesses" align="center" :label="$t('large.process')" min-width="110" />
+        <el-table-column prop="breakageQuantity" align="center" :label="$t('large.numberfractions')" min-width="110" />
+        <el-table-column prop="patchReason" align="center" :label="$t('large.breakreason')" min-width="110" />
+        <el-table-column prop="patchType" align="center" :label="$t('large.breaktype')" min-width="110" />
+        <el-table-column prop="responsiblePersonnel" align="center" :label="$t('large.responsiblepersonnel')" min-width="110" />
+        <el-table-column prop="responsibleEquipment" align="center" :label="$t('large.responsiblequipment')" min-width="110" />
+        <el-table-column prop="responsibleTeam" align="center" :label="$t('large.responsibleteam')" min-width="110" />
+        <el-table-column prop="patchArea" align="center" :label="$t('large.area')" min-width="110" />
+        <el-table-column prop="qualityInspector" align="center" :label="$t('large.inspector')" min-width="110" />
+      </el-table>
+  <template #footer>
+    <div id="dialog-footer" style="text-align: center;">
+      <el-button @click="blinda = false">{{ $t('large.close') }}</el-button>
+    </div>
+  </template>
+</el-dialog>
+</template>  
+<script setup>  
+import { Delete, Upload } from '@element-plus/icons-vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+import { ref, onMounted , onBeforeUnmount, reactive, computed, shallowRef, onUnmounted, watchEffect } from "vue";
+import request from "@/utils/request"
+import { WebSocketHost ,host} from '@/utils/constants'
+import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService';
+import { useI18n } from 'vue-i18n'
+const { t } = useI18n()
+import * as echarts from 'echarts';
+const tableData = ref([])
+const tableDatab = ref([])
+const tableDatac = ref([])
+const adjustedRects = ref([]);  
+const chartRefs = ref([]);  
+const thisProcess = ref(); // 鐢ㄤ簬瀛樺偍process_id鐨勫搷搴斿紡寮曠敤 
+// 瀹氫箟涓�涓搷搴斿紡寮曠敤鏉ュ瓨鍌ㄥ浘琛ㄥ疄渚�    
+const chartDom = ref(null);  
+let chartInstance = null;  
+const blinda = ref(false)
+const handleBinda = (row) => {
+blinda.value = true;
+};
+const processesData = ref([
+
+]);
+function getStatusType(warehousing) {  
+switch (warehousing) {  
+  case 0:  
+    return 'info';  
+  case 1:  
+    return 'warning';  
+  case 2:  
+    return 'success';  
+}  
+}  
+function getStatusText(warehousing) {  
+switch (warehousing) {
+  case 0:  
+    return t('large.notstocked');
+  case 1:  
+    return t('large.inboundstatus');
+  case 2:  
+  return t('large.allstatus');
+}  
+}  
+const socketUrl = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/screen`;
+const handleMessage = (data) => {
+tableData.value = data.awaitingRepairs[0]
+tableDatab.value = data.DoingTask[0]
+tableDatac.value = data.orders[0]
+// adjustedRects.value = data.device[0].map(rect => ({  
+//       ...rect, 
+//       completed: rect.completedQuantity,
+//       breakage: rect.breakageQuantity,
+//       thisProcess: rect.thisProcess,
+//     })); 
+};
+let socket;
+// 璁剧疆鍥捐〃 DOM 寮曠敤  
+function setChartDom(index, el) {  
+if (!chartRefs.value[index]) {  
+  chartRefs.value[index] = { dom: el, chart: null };  
+} else {  
+  chartRefs.value[index].dom = el;  
+}  
+} 
+onMounted(() => {  
+socket = new WebSocket(socketUrl);  
+socket.onmessage = (event) => {  
+  const data = JSON.parse(event.data);  
+  processesData.value = data.device[0].map(rect => ({  
+    ...rect,  
+    completedQuantity: rect.completedQuantity,  
+    breakageQuantity: rect.breakageQuantity,  
+    thisProcess: rect.thisProcess,  
+  }));  
+  renderPieCharts();
+  console.log(processesData.value);
+  // updateCharts();
+};
+  
+// };  
+});  
+const renderPieCharts = () => {
+processesData.value.forEach((data, index) => {
+  const chart = echarts.init(document.getElementById('pieChart_' + index));
+  const options = {
+    title: {
+        text: `${data.thisProcess} `,
+        left: 'center',
+      },
+    tooltip: {
+      trigger: 'item',
+    },
+    series: [
+      {
+        name: `${data.thisProcess} `,
+        type: 'pie',
+        radius: ['40%', '70%'],
+        avoidLabelOverlap: false,
+        data: [
+          { value: data.completedQuantity, name: t('large.completedquantity') },
+          { value: data.breakageQuantity, name: t('large.scrapquantity') }
+        ],
+        emphasis: {
+          itemStyle: {
+            shadowBlur: 10,
+            shadowOffsetX: 0,
+            shadowColor: 'rgba(0, 0, 0, 0.5)'
+          }
+        },
+        label: {
+          show: false,
+          position: 'center',
+        },
+      labelLine: {
+        show: false
+      },
+      }
+    ]
+  };
+
+  chart.setOption(options);
+});
+};
+
+
+onUnmounted(() => {  
+socket.close();  
+});  
+
+onMounted(() => {
+// fetchFlowCardId();
+// fetchTableData(); // 鑾峰彇鏁版嵁
+initializeWebSocket(socketUrl, handleMessage);
+
+});
+onBeforeUnmount(() => {
+console.log("鍏抽棴浜�")
+closeWebSocket();
+});
+</script>  
+
+<style scoped>  
+
+
+
+.echarts-container {
+display: flex;
+flex-wrap: wrap;
+gap: 20px;
+}
+
+.echarts-item {
+width: 150px;
+height: 150px;
+margin: 20px;
+}
+
+.pie-chart {
+width: 100%;
+height: 100%;
+}
+</style>
\ 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 252da8f..5423c6e 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
@@ -29,8 +29,7 @@
      * A09鍑虹墖鐩爣浣嶇疆  d02鍗ц浆绔� 閽㈠寲鍑虹墖    3001
      * A10鍑虹墖鐩爣浣嶇疆  d05鍗ц浆绔� 浜哄伐鍑虹墖    3002
      */
-    //todo:涓存椂灏嗛挗鍖栧嚭鐗囩嚎璺敼涓轰汉宸ュ嚭鐗�
-    public static final Integer TEMPERING_OUT_TARGET_POSITION = 3002;
+    public static final Integer TEMPERING_OUT_TARGET_POSITION = 3001;
     public static final Integer ARTIFICIAL_OUT_TARGET_POSITION = 3002;
 
     /**
@@ -90,21 +89,29 @@
      * 2 鍗ц浆绔嬭繘鐗囧畬鎴�
      * 3 澶ц溅杩涚墖瀹屾垚
      * 4 澶х悊鐗囩杩涚墖瀹屾垚
+     * 5 澶х悊鐗囩杩涚墖澶辫触
+     * 6 澶х悊鐗囩杩涚墖鐮存崯
      */
     public static final Integer BIG_STORAGE_IN_NEW = 1;
     public static final Integer BIG_STORAGE_IN_UP = 2;
     public static final Integer BIG_STORAGE_IN_CAR = 3;
     public static final Integer BIG_STORAGE_IN_SLOT = 4;
+    public static final Integer BIG_STORAGE_IN_ERROR = 5;
+    public static final Integer BIG_STORAGE_IN_DAMAGE = 6;
     public static final List<Integer> BIG_STORAGE_IN_UP_ALL = Arrays.asList(1, 2);
     /**
      * 鍗ц浆绔嬪嚭鐗囪姹�
      * 1 浠诲姟鐢熸垚
      * 2 鐜荤拑杩涘ぇ杞﹀畬鎴�
      * 3 澶ц溅鍑虹墖瀹屾垚
+     * 4 澶х悊鐗囩杩涚墖澶辫触
+     * 5 澶х悊鐗囩杩涚墖鐮存崯
      */
     public static final Integer BIG_STORAGE_OUT_NEW = 1;
     public static final Integer BIG_STORAGE_OUT_CAR = 2;
     public static final Integer BIG_STORAGE_OUT_SUCCESS = 3;
+    public static final Integer BIG_STORAGE_OUT_ERROR = 4;
+    public static final Integer BIG_STORAGE_OUT_DAMAGE = 5;
 
     /**
      * 鍗ц浆绔嬪嚭鐗囪姹�
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java
index b821404..9cd2ca4 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java
@@ -5,14 +5,14 @@
 import com.mes.damage.entity.Damage;
 import com.mes.damage.service.DamageService;
 import com.mes.utils.Result;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 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.*;
 
-import org.springframework.web.bind.annotation.RestController;
-
+import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -22,6 +22,7 @@
  * @author wu
  * @since 2024-06-25
  */
+@Api(description = "鎶ュ伐淇℃伅")
 @RestController
 @RequestMapping("/damage")
 public class DamageController {
@@ -29,20 +30,27 @@
     @Autowired
     private DamageService damageService;
     @ApiOperation("鎶ュ伐鏁版嵁鏌ヨ")
-    @GetMapping("/selectDamage")
-    public Result selectDamage(DateTime startTime , DateTime endTime,int type,int status,int workingProcedureId) {
-        return Result.build(200,"鏌ヨ鎴愬姛",damageService.selectDamage(startTime,endTime,type,status,workingProcedureId));
+    @ResponseBody
+    @PostMapping("/selectDamage")
+    public Result selectDamage(@RequestBody Map map) {
+        String startTime=map.get("startTime").toString();
+        String endTime=map.get("endTime").toString();
+        int type =Integer.parseInt(map.get("type").toString());
+        int status =Integer.parseInt(map.get("status").toString());
+        int workingProcedure =Integer.parseInt(map.get("workingProcedure").toString());
+//        String startTime , String endTime, int type, int status, int workingProcedure
+        return Result.build(200,"鏌ヨ鎴愬姛",damageService.selectDamage(startTime,endTime,type,status,workingProcedure));
     }
 
     @ApiOperation("鎶ュ伐")
-    @GetMapping("/submitDamage")
+    @PostMapping("/submitDamage")
     public Result submitDamage(DateTime startTime , DateTime endTime,int type,int status,int workingProcedureId) {
         damageService.submitDamage(startTime,endTime,type,status,workingProcedureId);
         return Result.build(200,"鎶ュ伐鎴愬姛",1);
     }
 
     @ApiOperation("鎶ュ伐鏁版嵁淇敼")
-    @GetMapping("/updateDamage")
+    @PostMapping("/updateDamage")
     public Result updateDamage(List<Damage> damageList) {
         damageService.updateBatchById(damageList);
         return Result.build(200,"淇敼鎴愬姛",1);
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/entity/Damage.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/entity/Damage.java
index 8eb6426..52b355e 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/entity/Damage.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/entity/Damage.java
@@ -2,8 +2,9 @@
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
-import java.time.LocalDateTime;
 import java.io.Serializable;
+import java.sql.Timestamp;
+
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -32,7 +33,7 @@
     /**
      * 宸ュ簭
      */
-    private Integer workingProcedure;
+    private String workingProcedure;
 
     /**
      * 鐜荤拑id
@@ -52,7 +53,7 @@
     /**
      * 鐢熶骇鏃堕棿
      */
-    private LocalDateTime damageTime;
+    private Timestamp damageTime;
 
     /**
      * 澶囨敞
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java
index 43d1142..e5acd8b 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java
@@ -4,6 +4,7 @@
 import com.mes.damage.entity.Damage;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -16,7 +17,7 @@
  */
 public interface DamageService extends IService<Damage> {
 
-    List<Damage> selectDamage(DateTime startTime, DateTime endTime, int type, int status, int workingProcedureId);
+    List<Damage> selectDamage(String startTime, String endTime, int type, int status, int workingProcedureId);
 
     void submitDamage(DateTime startTime, DateTime endTime, int type, int status, int workingProcedureId);
 
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java
index 8d32fb0..d3aa888 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java
@@ -3,7 +3,6 @@
 import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.mes.damage.entity.Damage;
 import com.mes.damage.mapper.DamageMapper;
 import com.mes.damage.service.DamageService;
@@ -12,9 +11,11 @@
 import com.mes.glassinfo.mapper.GlassInfoMapper;
 import com.mes.work_assignment.entity.WorkAssignment;
 import com.mes.work_assignment.mapper.WorkAssignmentMapper;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.sql.Timestamp;
 import java.time.LocalDateTime;
 import java.util.List;
 
@@ -38,7 +39,7 @@
      * 鏌ヨ鎶ュ伐淇℃伅
      */
     @Override
-    public List<Damage> selectDamage(DateTime startTime, DateTime endTime, int type, int status, int workingProcedureId){
+    public List<Damage> selectDamage(String startTime, String endTime, int type, int status, int workingProcedure){
         LambdaQueryWrapper<Damage> damageSelectWrapper =new LambdaQueryWrapper<>();
         damageSelectWrapper.between(Damage::getDamageTime,startTime,endTime);
         if (type!=0){
@@ -47,8 +48,8 @@
         if (status!=0){
             damageSelectWrapper.eq(Damage::getStatus,status);
         }
-        if(workingProcedureId!=0){
-            damageSelectWrapper.eq(Damage::getWorkingProcedure,workingProcedureId);
+        if(workingProcedure!=0){
+            damageSelectWrapper.eq(Damage::getWorkingProcedure,workingProcedure);
         }
         return baseMapper.selectList(damageSelectWrapper);
     }
@@ -82,21 +83,21 @@
         LambdaQueryWrapper<GlassInfo> glassInfoSelectWrapper=new LambdaQueryWrapper<>();
         glassInfoSelectWrapper.eq(GlassInfo::getGlassId,damage.getGlassId());
         GlassInfo glassInfo=glassInfoMapper.selectOne(glassInfoSelectWrapper);
+        BeanUtils.copyProperties(glassInfo, damage);
 
         LambdaQueryWrapper<WorkAssignment> workAssignmentSelectWrapper=new LambdaQueryWrapper<>();
         workAssignmentSelectWrapper
                 .eq(WorkAssignment::getLine,damage.getLine())
                 .eq(WorkAssignment::getWorkProcesses,damage.getWorkingProcedure());
         WorkAssignment workAssignment=workAssignmentMapper.selectOne(workAssignmentSelectWrapper);
+
         damage.setTeamsGroupsName(workAssignment.getTeamsGroupsName());
         damage.setDeviceName(workAssignment.getDeviceName());
-
-        damage.setEngineerId(glassInfo.getEngineerId());
-        damage.setTemperingLayoutId(glassInfo.getTemperingLayoutId());
         damage.setProcessId(glassInfo.getFlowCardId());
         damage.setOrderNumber(glassInfo.getGlassType());
         damage.setTechnologyNumber(glassInfo.getLayer());
-        damage.setDamageTime(LocalDateTime.now());
+        damage.setDamageTime(Timestamp.valueOf(LocalDateTime.now()));
+        damage.setType(2);
         baseMapper.insert(damage);
     }
 }
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 6d78c74..b2a6af1 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/GlassInfoService.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/GlassInfoService.java
@@ -1,7 +1,8 @@
 package com.mes.glassinfo.service;
 
-import com.mes.glassinfo.entity.GlassInfo;
 import com.github.yulichang.base.MPJBaseService;
+import com.mes.glassinfo.entity.GlassInfo;
+
 import java.util.List;
 import java.util.Map;
 
@@ -24,16 +25,15 @@
        */
       void saveGlassInfo(List<GlassInfo> glassinfo);
 
-      /**
-       * @param flowCardId
-       * @return 鏍规嵁娴佺▼鍗″彿鏌ヨ鐜荤拑淇℃伅
-       */
-      int getGlassInfoCountByFlowCardId(String flowCardId);
+      int getGlassInfoCountByFlowCardId(String flowCardId, int layer);
 
       /**
-       * @return
-       * 鏌ヨ鎵�鏈夊伐绋嬬姸鎬佷笉涓�300涓嶅悓娴佺▼鍗″彿
+       * @return 鏌ヨ鎵�鏈夊伐绋嬬姸鎬佷笉涓�300涓嶅悓娴佺▼鍗″彿
        */
       List<Map<String, Object>> getFlowCardId();
+
+
+
+
 }
 
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
index 6e35509..10ab730 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
@@ -11,9 +11,9 @@
 import com.mes.pp.entity.OptimizeProject;
 import com.mes.pp.mapper.OptimizeProjectMapper;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -31,7 +31,7 @@
 @Service
 @Slf4j
 public class GlassInfoServiceImpl extends MPJBaseServiceImpl<GlassInfoMapper, GlassInfo> implements GlassInfoService {
-    @Autowired
+    @Resource
     OptimizeProjectMapper optimizeProjectMapper;
 
     @Override
@@ -42,7 +42,7 @@
             optimizeGlassinfos = optimizeProjectMapper.selectJoinList(OptimizeGlassinfo.class, new MPJQueryWrapper<OptimizeProject>()
                     .select("b.process_id,t.glass_type,b.o_width,b.o_height,t.glass_thickness,b.order_sort,b.p_width,b.p_height,b.layer, b.total_layer, b.stock_id,b.heat_layout_id,b.heat_layout_sort,c.x_axis,c.y_axis,b.project_no,b.glass_id,c.rotate_angle")
                     .leftJoin("optimize_detail b on t.project_no=b.project_no")
-                                    .leftJoin("optimize_heat_detail c on c.project_no=t.project_no and b.heat_layout_id=c.layout_id and b.heat_layout_sort=c.sort")
+                    .leftJoin("optimize_heat_detail c on c.project_no=t.project_no and b.heat_layout_id=c.layout_id and b.heat_layout_sort=c.sort")
                     //.eq("t.state",100)
                     .eq("t.project_no", engineeringId));
         }
@@ -89,9 +89,11 @@
 
 
     @Override
-    public int getGlassInfoCountByFlowCardId(String flowCardId) {
+    public int getGlassInfoCountByFlowCardId(String flowCardId, int layer) {
         return baseMapper.selectCount(new QueryWrapper<GlassInfo>().lambda()
-                .eq(GlassInfo::getFlowCardId, flowCardId));
+                .eq(GlassInfo::getFlowCardId, flowCardId)
+                .eq(GlassInfo::getLayer, layer));
+
     }
 
 
@@ -112,20 +114,24 @@
                 new QueryWrapper<GlassInfo>()
                         .in("engineer_id", engineerIds)
                         .groupBy("flow_card_id")
+                        .groupBy("layer")
         );
 
         // 杞崲涓� List<Map<String, Object>>
         List<Map<String, Object>> result = glassInfos.stream()
                 .map(glassInfo -> {
                     Map<String, Object> map = new HashMap<>();
-                    map.put("flow_card_id", glassInfo.getFlowCardId());
+                    map.put("flow_card_id", glassInfo.getFlowCardId() + " | " + glassInfo.getLayer());
                     // 濡傛灉杩樻湁鍏朵粬瀛楁闇�瑕佹坊鍔犲埌 map 涓紝鍦ㄨ繖閲岀户缁坊鍔�
                     return map;
                 })
                 .collect(Collectors.toList());
-        log.info("result: {}", result);
+        log.info("result666: {}", result);
         return result;
     }
 
 
+
+
+
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeDetailMapper.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeDetailMapper.java
index 59ed7a3..0f6b968 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeDetailMapper.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeDetailMapper.java
@@ -1,10 +1,8 @@
 package com.mes.pp.mapper;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.pp.entity.OptimizeDetail;
-import org.apache.ibatis.annotations.Mapper;
 
 /**
  * <p>
@@ -15,7 +13,6 @@
  * @since 2024-04-16
  */
 @DS("pp")
-@Mapper
 public interface OptimizeDetailMapper extends MPJBaseMapper<OptimizeDetail> {
 
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeLayoutMapper.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeLayoutMapper.java
new file mode 100644
index 0000000..20f9c71
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeLayoutMapper.java
@@ -0,0 +1,18 @@
+package com.mes.pp.mapper;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.pp.entity.OptimizeLayout;
+
+/**
+ * <p>
+ * Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-16
+ */
+@DS("pp")
+public interface OptimizeLayoutMapper extends MPJBaseMapper<OptimizeLayout> {
+
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeProjectMapper.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeProjectMapper.java
index 08c1911..2449b5f 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeProjectMapper.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeProjectMapper.java
@@ -1,11 +1,9 @@
 package com.mes.pp.mapper;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.pp.entity.OptimizeProject;
 import com.mes.pp.entity.request.OptimizeRequest;
-import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
 
@@ -17,7 +15,6 @@
  * @author zhoush
  * @since 2024-04-16
  */
-@Mapper
 @DS("pp")
 public interface OptimizeProjectMapper extends MPJBaseMapper<OptimizeProject> {
     List<OptimizeProject> saveProject(OptimizeRequest optimizeRequest);
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeLayoutService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeLayoutService.java
new file mode 100644
index 0000000..a4f81b7
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeLayoutService.java
@@ -0,0 +1,16 @@
+package com.mes.pp.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.mes.pp.entity.OptimizeLayout;
+
+/**
+ * <p>
+ * 鏈嶅姟绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-16
+ */
+public interface OptimizeLayoutService extends MPJBaseService<OptimizeLayout> {
+
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeLayoutServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeLayoutServiceImpl.java
new file mode 100644
index 0000000..b4c2ce7
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeLayoutServiceImpl.java
@@ -0,0 +1,22 @@
+package com.mes.pp.service.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.mes.pp.entity.OptimizeLayout;
+import com.mes.pp.mapper.OptimizeLayoutMapper;
+import com.mes.pp.service.OptimizeLayoutService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-16
+ */
+@Service
+@DS("pp")
+public class OptimizeLayoutServiceImpl extends MPJBaseServiceImpl<OptimizeLayoutMapper, OptimizeLayout> implements OptimizeLayoutService {
+
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/mapper/TemperingGlassInfoMapper.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/mapper/TemperingGlassInfoMapper.java
index ef514ec..65122ab 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/mapper/TemperingGlassInfoMapper.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/mapper/TemperingGlassInfoMapper.java
@@ -15,7 +15,7 @@
  * @author zhoush
  * @since 2024-04-07
  */
-@DS("salve_hangzhoumes_1")
+@DS("salve_hangzhoumes")
 public interface TemperingGlassInfoMapper extends MPJBaseMapper<TemperingGlassInfo> {
 
     boolean saveBatch(@Param(value = "list") List<TemperingGlassInfo> list);
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java
index 11ce5dd..a67c8f2 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java
@@ -43,6 +43,8 @@
     public void onOpen(Session session, @PathParam("username") String username) {
         this.username = username;
         this.session = session;
+        this.session.setMaxTextMessageBufferSize(12*1024*1024);
+        this.session.setMaxBinaryMessageBufferSize(12*1024*1024);
         List<WebSocketServer> webSocketServers = sessionMap.get(username);
         if (webSocketServers == null) {
             ArrayList<WebSocketServer> arrayListwebserver = new ArrayList<WebSocketServer>();
@@ -96,7 +98,7 @@
      *
      * @param message 瀹㈡埛绔彂閫佽繃鏉ョ殑娑堟伅
      */
-    @OnMessage
+    @OnMessage(maxMessageSize = 5242880)
     public void onMessage(String message, Session session, @PathParam("username") String username) {
         log.info("鏈嶅姟绔敹鍒扮敤鎴穟sername={}鐨勬秷鎭�:{}", username, message);
         JSONObject obj = JSONUtil.parseObj(message);
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/controller/WorkAssignmentController.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/controller/WorkAssignmentController.java
index 9836cf1..9b35277 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/controller/WorkAssignmentController.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/controller/WorkAssignmentController.java
@@ -5,9 +5,11 @@
 import com.mes.damage.service.DamageService;
 import com.mes.utils.Result;
 import com.mes.work_assignment.service.WorkAssignmentService;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 import org.springframework.web.bind.annotation.RestController;
@@ -20,15 +22,16 @@
  * @author wu
  * @since 2024-07-01
  */
+@Api(description = "鍊肩彮淇℃伅")
 @RestController
-@RequestMapping("/work_assignment/work-assignment")
+@RequestMapping("/work_assignment")
 public class WorkAssignmentController {
 
     @Autowired
     private WorkAssignmentService workAssignmentService;
-    @ApiOperation("鎶ュ伐鏁版嵁鏌ヨ")
-    @GetMapping("/selectWorkAssignment")
-    public Result selectDamage(int line,String workingProcedure) {
+    @ApiOperation("鍊肩彮鏁版嵁鏌ヨ")
+    @PostMapping("/selectWorkAssignment")
+    public Result selectWorkAssignment(int line,String workingProcedure) {
         return Result.build(200,"鏌ヨ鎴愬姛",workAssignmentService.selectWorkAssignment(line,workingProcedure));
     }
 
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/mapper/SysMenuMapper.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/mapper/SysMenuMapper.java
index b1ef2d6..ae06d40 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/mapper/SysMenuMapper.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/mapper/SysMenuMapper.java
@@ -2,7 +2,6 @@
 
 import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.menu.entity.SysMenu;
-import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
 
@@ -14,7 +13,7 @@
  * @author zhoush
  * @since 2024-04-11
  */
-@Mapper
+
 public interface SysMenuMapper extends MPJBaseMapper<SysMenu> {
 
     List<String> selectPermsByUserId(long parseLong);
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMapper.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMapper.java
index d9251c1..bf1bf6d 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMapper.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMapper.java
@@ -2,7 +2,6 @@
 
 import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.role.entity.SysRole;
-import org.apache.ibatis.annotations.Mapper;
 
 /**
  * <p>
@@ -12,7 +11,6 @@
  * @author zhoush
  * @since 2024-04-11
  */
-@Mapper
 public interface SysRoleMapper extends MPJBaseMapper<SysRole> {
 
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMenuMapper.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMenuMapper.java
index 451d7fe..0cfc7df 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMenuMapper.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/mapper/SysRoleMenuMapper.java
@@ -2,7 +2,6 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.mes.role.entity.SysRoleMenu;
-import org.apache.ibatis.annotations.Mapper;
 
 /**
  * <p>
@@ -12,7 +11,7 @@
  * @author zhoush
  * @since 2024-04-11
  */
-@Mapper
+
 public interface SysRoleMenuMapper extends BaseMapper<SysRoleMenu> {
 
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserMapper.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserMapper.java
index f3e2f25..68d34de 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserMapper.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserMapper.java
@@ -2,7 +2,6 @@
 
 import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.userinfo.entity.SysUser;
-import org.apache.ibatis.annotations.Mapper;
 
 /**
  * <p>
@@ -12,7 +11,7 @@
  * @author zhoush
  * @since 2024-04-11
  */
-@Mapper
+
 public interface SysUserMapper extends MPJBaseMapper<SysUser> {
 
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserRoleMapper.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserRoleMapper.java
index cfd9a6f..697ca74 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserRoleMapper.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserRoleMapper.java
@@ -2,7 +2,6 @@
 
 import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.userinfo.entity.SysUserRole;
-import org.apache.ibatis.annotations.Mapper;
 
 /**
  * <p>
@@ -12,7 +11,7 @@
  * @author zhoush
  * @since 2024-04-11
  */
-@Mapper
+
 public interface SysUserRoleMapper extends MPJBaseMapper<SysUserRole> {
 
 }
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
index 810e146..1d660e3 100644
--- 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
@@ -4,6 +4,7 @@
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * <p>
@@ -31,7 +32,8 @@
 
     private Integer status;
 
+    private Integer line;
 
-
+    private Date time;
 
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java
index c4c802d..289db38 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java
@@ -55,16 +55,16 @@
     @PostMapping("/updateEdgStorageCage")
     @ResponseBody
     public Result updateEdgStorageCage(@RequestBody EdgStorageCage edgStorageCage) {
-        boolean isSucess=edgStorageCageService.updateEdgStorageCage(edgStorageCage);
-        return Result.build(200,"銆愬惎鐢�/绂佺敤銆戞垚鍔�",1);
+        String isSucess=edgStorageCageService.updateEdgStorageCage(edgStorageCage)?"鎴愬姛":"澶辫触";
+        return Result.build(200,"銆愬惎鐢�/绂佺敤銆�"+isSucess,1);
     }
 
     @ApiOperation("纾ㄨ竟缂撳瓨鐞嗙墖绗间俊鎭�   鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑杩涜銆愭竻闄�/鏇存崲/缁戝畾銆� EdgStorageCage鏍煎瓙淇℃伅,EdgStorageCageDetails 鐜荤拑淇℃伅 ")
     @PostMapping("/edgStorageCageGlass")
     @ResponseBody
     public Result edgStorageCageGlass(@RequestBody EdgStorageCageDetails edgStorageCageDetails,int edgStorageCageId) {
-        boolean isSucess=edgStorageCageService.updateEdgStorageCageDetails(edgStorageCageId,edgStorageCageDetails);
-        return Result.build(200,"銆愭竻闄�/鏇存崲/缁戝畾銆戞垚鍔�",1);
+        String isSucess=edgStorageCageService.updateEdgStorageCageDetails(edgStorageCageId,edgStorageCageDetails)?"鎴愬姛":"澶辫触";
+        return Result.build(200,"銆愭竻闄�/鏇存崲/缁戝畾銆�"+isSucess,1);
     }
 
     @ApiOperation("纾ㄨ竟妯″潡姹囨姤鐜荤拑鐘舵��   鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑杩涜銆愮牬鎹�/鎷胯蛋銆�  ")
@@ -73,8 +73,8 @@
     public Result edgReportStatus(@RequestBody Map<String, String> arguments) {
         String edgStorageCageDetailsId=arguments.get("glassId");
         int controlsId=Integer.valueOf(arguments.get("controlsId"));
-        boolean isSucess=edgStorageCageDetailsService.identWorn(edgStorageCageDetailsId,controlsId);
-        return Result.build(200,"銆愮牬鎹�/鎷胯蛋銆戞垚鍔�",1);
+        String isSucess=edgStorageCageDetailsService.identWorn(edgStorageCageDetailsId,controlsId)?"鎴愬姛":"澶辫触";
+        return Result.build(200,"銆愮牬鎹�/鎷胯蛋銆�"+isSucess,1);
     }
 
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCage.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCage.java
index 2ab45f6..57b807d 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCage.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCage.java
@@ -1,6 +1,7 @@
 package com.mes.edgstoragecage.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java
index f52662f..cd22d48 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java
@@ -25,11 +25,6 @@
      */
     EdgStorageCage selectNearestEmpty(int currentSlot, boolean flag);
 
-    /**
-     * 鏌ヨ绗煎唴绌烘牸
-     * @return
-     */
-    List<EdgStorageCage> selectCacheEmpty();
 
     /**
      * 鏌ヨ绗煎唴鍑虹墖椤哄簭璇︽儏
@@ -45,11 +40,19 @@
 
     /**
      * 淇敼鐞嗙墖绗间俊鎭�
+     *
      * @param edgStorageCage
      * @return
      */
     boolean updateEdgStorageCage(EdgStorageCage edgStorageCage);
 
+    /**
+     * 鏇存柊鐞嗙墖绗艰鎯呬俊鎭�
+     *
+     * @param edgStorageCageId
+     * @param edgStorageCageDetails
+     * @return
+     */
     boolean updateEdgStorageCageDetails(int edgStorageCageId, EdgStorageCageDetails edgStorageCageDetails);
 
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java
index 923a28b..481483a 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java
@@ -7,6 +7,7 @@
 import com.github.yulichang.query.MPJLambdaQueryWrapper;
 import com.github.yulichang.toolkit.JoinWrappers;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.mes.common.config.Const;
 import com.mes.edgstoragecage.entity.EdgStorageCage;
 import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
 import com.mes.edgstoragecage.mapper.EdgStorageCageDetailsMapper;
@@ -24,6 +25,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.print.attribute.standard.MediaSize;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -90,7 +92,8 @@
     public List<Map<String, Object>> selectCutTerritory() {
         List<UpPattenUsage> upPattenUsage = upPattenUsageMapper.selectList(new MPJLambdaWrapper<UpPattenUsage>()
                 .selectAll(UpPattenUsage.class)
-                .eq(UpPattenUsage::getState, 1).or().eq(UpPattenUsage::getState, 0).orderByDesc(UpPattenUsage::getState));
+                .orderByDesc(UpPattenUsage::getState)
+                .orderByDesc(UpPattenUsage::getId));
         if (!upPattenUsage.isEmpty()) {
             UpPattenUsage upPattenUsage1 = upPattenUsage.get(0);
             List<Map<String, Object>> cutTerritorys=optimizeDetailMapper.selectJoinMaps(JoinWrappers.lambda(OptimizeDetail.class)
@@ -107,7 +110,8 @@
             for (Map<String, Object> cutTerritory : cutTerritorys) {
                 EdgStorageCageDetails edgStorageCageDetails=baseMapper.selectOne(new MPJLambdaQueryWrapper<EdgStorageCageDetails>()
                         .selectAll(EdgStorageCageDetails.class)
-                        .eq(EdgStorageCageDetails::getGlassId, cutTerritory.get("glass_id")));
+                        .eq(EdgStorageCageDetails::getGlassId, cutTerritory.get("glass_id"))
+                        .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN));
 //                log.info("鍐呭锛歿}-------{}",cutTerritory,edgStorageCageDetails);
                 if(edgStorageCageDetails!=null){
                     cutTerritory.put("glass_state",edgStorageCageDetails.getState());
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 01d94b9..f7600e6 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
@@ -13,9 +13,9 @@
 import com.mes.uppattenusage.entity.UpPattenUsage;
 import com.mes.uppattenusage.mapper.UpPattenUsageMapper;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.util.List;
 import java.util.Map;
 
@@ -31,9 +31,9 @@
 @Service
 public class EdgStorageCageServiceImpl extends MPJBaseServiceImpl<EdgStorageCageMapper, EdgStorageCage> implements EdgStorageCageService {
 
-    @Autowired
+    @Resource
     EdgStorageCageDetailsMapper edgStorageCageDetailsMapper;
-    @Autowired
+    @Resource
     UpPattenUsageMapper upPattenUsageMapper;
 
     @Override
@@ -44,6 +44,7 @@
                         .eq(EdgStorageCageDetails::getSlot, EdgStorageCage::getSlot)
                         .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN))
                 .isNull(EdgStorageCageDetails::getSlot)
+                .eq(EdgStorageCage::getEnableState, Const.SLOT_ON)
                 .last("order by abs(t.slot - " + currentSlot + ")  asc limit 2")
         );
         if (flag && CollectionUtil.isNotEmpty(emptyList)) {
@@ -53,23 +54,6 @@
             return null;
         }
         return emptyList.get(0);
-    }
-
-    /**
-     * 鏌ヨ绗煎唴绌烘牸
-     *
-     * @return
-     */
-    @Override
-    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"))
-                .isNull(EdgStorageCageDetails::getSlot)
-                .last("order by abs(t.slot - 4)  asc")
-        );
     }
 
     /**
@@ -122,9 +106,14 @@
     @Override
     public boolean updateEdgStorageCage(EdgStorageCage edgStorageCage) {
         EdgStorageCage edgItem = baseMapper.selectById(edgStorageCage.getId());
-        edgItem.setEnableState(edgStorageCage.getEnableState());
-        baseMapper.updateById(edgItem);
-        return true;
+        if(edgItem!=null){
+            edgItem.setEnableState(edgStorageCage.getEnableState());
+            baseMapper.updateById(edgItem);
+            log.info("鍗у缂撳瓨锛氥�愬惎鐢�/绂佺敤銆� 鍙傛暟:{} 缁撴灉:鎴愬姛",edgStorageCage);
+            return true;
+        }
+        log.info("鍗у缂撳瓨锛氥�愬惎鐢�/绂佺敤銆� 鍙傛暟:{} 缁撴灉:澶辫触",edgStorageCage);
+        return false;
     }
 
     /**
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 926922a..98206a6 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
@@ -6,6 +6,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.yulichang.query.MPJQueryWrapper;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.mes.common.S7object;
 import com.mes.common.config.Const;
 import com.mes.device.PlcParameterObject;
@@ -66,14 +67,22 @@
     @Value("${mes.sequence.order}")
     private boolean sequenceOrder;
 
-    @Value("${mes.firstLength}")
+    @Value("${mes.max.firstLength}")
     private String firstLength;
 
-    @Value("${mes.secondLength}")
+    @Value("${mes.max.secondLength}")
     private String secondLength;
+
+    @Value("${mes.min.firstLength}")
+    private String minFirstLength;
+
+    @Value("${mes.min.secondLength}")
+    private String minSecondLength;
 
     @Scheduled(fixedDelay = 1000)
     public void plcHomeEdgTask() {
+        Date startDate = new Date();
+        log.info("鏈浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate);
         PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
         String taskRequestTypeValue = plcParameterObject.getPlcParameter("A06_request_word").getValue();
         String glassIdeValue = plcParameterObject.getPlcParameter("A05_scanning_ID").getValue();
@@ -118,27 +127,8 @@
                 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();
-//                    }
-//                }
-//
-//            }
-//        }
+        Date endDate = new Date();
+        log.info("鏈浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms", endDate, endDate.getTime() - startDate.getTime());
     }
 
     /**
@@ -235,7 +225,7 @@
 //        1.2.3銆佹寜鐓у嚭鐗囦俊鎭幓璇︽儏琛ㄦ煡璇㈡牸瀛愬湪绗煎瓙閲岄潰鍓╀綑鐩稿悓灏哄鐨勭幓鐠冩暟鎹笖浠ョ増鍥緄d銆佺増搴忓崌搴忔帓搴�  鍙栫涓�鍧楃幓鐠冨嚭鐗�
 //        2銆佸鏋滄病鏈夊巻鍙插嚭鐗囦换鍔�
 //        2.1銆佸嚭褰撳墠鐗堝浘id鏈�灏忕増搴忔渶灏忕殑鐜荤拑锛堥棶棰橈細涓ゆ潯绾块兘娌℃湁鍘嗗彶浠诲姟锛屽嚭鐗囨椂涓ゆ潯绾跨殑鐜荤拑灏哄鐩稿悓锛屾槸鍚︽壘灏哄涓嶅悓鐨勶級
-        if (out08Glassstate == 2 && out10Glassstate == 2) {
+        if ((out08Glassstate == 2 && out10Glassstate == 2) || (out08Glassstate == 0 && out10Glassstate == 0)) {
             log.info("A09銆丄10涓簕},{}闈炶嚜鍔ㄧ姸鎬侊紝鏃犳硶鍑虹墖");
             return Boolean.FALSE;
         }
@@ -257,21 +247,26 @@
             EdgStorageCageDetails a10EdgGlass = queryGlassByTaskCache(Const.A10_OUT_TARGET_POSITION, Const.GLASS_CACHE_TYPE_OUT_ALL);
             endcell = queryLineByGlassInfo(a09EdgGlass, a10EdgGlass, glassInfo, out08Glassstate, out10Glassstate);
         } else {
-            //鍒ゆ柇涓ゆ潯绾挎槸鍚﹂兘绌洪棽
-            endcell = out10Glassstate == 2 ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION;
+            //鎸夌収鐘舵�佸垽鏂袱鏉$嚎璧伴偅鏉$嚎
+            endcell = computerLineByState(out08Glassstate, out10Glassstate);
 
-            if ((out08Glassstate == 0 && out10Glassstate == 0) || (out08Glassstate == 1 && out10Glassstate == 1)) {
+            if (out08Glassstate == 1 && out10Glassstate == 1) {
                 EdgStorageCageDetails a09EdgGlass = queryGlassByTaskCache(Const.A09_OUT_TARGET_POSITION, Const.GLASS_CACHE_TYPE_OUT_ALL);
                 EdgStorageCageDetails a10EdgGlass = queryGlassByTaskCache(Const.A10_OUT_TARGET_POSITION, Const.GLASS_CACHE_TYPE_OUT_ALL);
                 if (a09EdgGlass == null && a10EdgGlass == null) {
                     MPJQueryWrapper<EdgStorageCageDetails> wrapper = new MPJQueryWrapper<>();
                     wrapper.select("count(t.glass_id), t.width, t.height")
                             .eq("t.state", Const.GLASS_STATE_IN)
+                            .inSql("t.slot", "select slot from edg_storage_cage where enable_state = " + Const.SLOT_ON)
                             .groupBy("t.width, t.height");
                     if (endcell == Const.A10_OUT_TARGET_POSITION) {
                         wrapper.innerJoin("(select glass_id, case when height <= width then width else height end as first_length, " +
                                 "case when width < height then width else height end as second_length from edg_storage_cage_details) t1 " +
                                 "on t.glass_id = t1.glass_id and (t1.first_length <=" + firstLength + " and t1.second_length<=" + secondLength + ") ");
+                    } else {
+                        wrapper.innerJoin("(select glass_id, case when height <= width then width else height end as first_length, " +
+                                "case when width < height then width else height end as second_length from edg_storage_cage_details) t1 " +
+                                "on t.glass_id = t1.glass_id and (t1.first_length >=" + minFirstLength + " and t1.second_length>=" + minSecondLength + ") ");
                     }
                     wrapper.last("order by count(t.glass_id) desc  limit 2");
                     List<EdgStorageCageDetails> list = edgStorageCageDetailsService.list(wrapper);
@@ -280,9 +275,13 @@
                                 .selectAll(GlassInfo.class).eq("t.glass_id", glassId);
 //                                .inSql("t.engineer_id", "select engineer_id from engineering where state = 1");
                         if (endcell == Const.A10_OUT_TARGET_POSITION) {
-                            queryWrapper.innerJoin("(select glass_id, case when height <= width then width else height end as first_length, " +
-                                    "case when width < height then width else height end as second_length from glass_info) t1 " +
+                            wrapper.innerJoin("(select glass_id, case when height <= width then width else height end as first_length, " +
+                                    "case when width < height then width else height end as second_length from edg_storage_cage_details) t1 " +
                                     "on t.glass_id = t1.glass_id and (t1.first_length <=" + firstLength + " and t1.second_length<=" + secondLength + ") ");
+                        } else {
+                            wrapper.innerJoin("(select glass_id, case when height <= width then width else height end as first_length, " +
+                                    "case when width < height then width else height end as second_length from edg_storage_cage_details) t1 " +
+                                    "on t.glass_id = t1.glass_id and (t1.first_length >=" + minFirstLength + " and t1.second_length>=" + minSecondLength + ") ");
                         }
                         GlassInfo one = glassInfoService.getOne(queryWrapper);
                         if (one != null) {
@@ -354,8 +353,9 @@
             glassList.add(resultDetails);
         }
         //鑾峰彇绗煎唴鐜荤拑
-        List<EdgStorageCageDetails> details = edgStorageCageDetailsService.list(new LambdaQueryWrapper<EdgStorageCageDetails>()
-                .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN));
+        List<EdgStorageCageDetails> details = edgStorageCageDetailsService.selectJoinList(EdgStorageCageDetails.class, new MPJLambdaWrapper<EdgStorageCageDetails>().selectAll(EdgStorageCageDetails.class)
+                .leftJoin(EdgStorageCage.class, on -> on.eq(EdgStorageCage::getSlot, EdgStorageCageDetails::getSlot).eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN))
+                .eq(EdgStorageCage::getEnableState, Const.SLOT_ON));
         glassList.addAll(details);
         return glassList;
 
@@ -366,19 +366,20 @@
      *
      * @return
      */
-    private boolean queryMaxMinDiff(int threshold) {
+    public boolean queryMaxMinDiff(int threshold) {
         //鑾峰彇绗煎瓙鍐呮渶澶х増鍥緄d鍜屾渶灏忕増鍥緄d鎻掑�硷紝鍒ゆ柇鏄惁澶т簬闃堝�硷紝澶т簬闃堝�肩洿鎺ュ嚭鏈�灏忕増鍥剧幓鐠�
         QueryWrapper<EdgStorageCageDetails> queryWrapper = new QueryWrapper<>();
         queryWrapper.select("max(tempering_layout_id)-min(tempering_layout_id) as diff")
-                .eq("state", Const.GLASS_STATE_IN);
+                .eq("state", Const.GLASS_STATE_IN)
+                .inSql("slot", "select slot from edg_storage_cage where enable_state = " + Const.SLOT_ON);
         List<Object> list = edgStorageCageDetailsService.listObjs(queryWrapper);
+        //鑾峰彇绗煎唴鐜荤拑鐗堝浘宸�兼槸鍚﹀ぇ浜庨槇鍊�
         if (CollectionUtil.isNotEmpty(list)) {
-            Long diff = (Long) list.get(0);
+            int diff = (int) list.get(0);
             return diff > threshold;
         } else {
             return Boolean.FALSE;
         }
-
     }
 
     /**
@@ -393,6 +394,7 @@
                 .eq(EdgStorageCageDetails::getState, 100)
                 .eq(width != 0, EdgStorageCageDetails::getWidth, width)
                 .eq(height != 0, EdgStorageCageDetails::getHeight, height)
+                .inSql(EdgStorageCageDetails::getSlot, "select slot from edg_storage_cage where enable_state = " + Const.SLOT_ON)
                 .orderByAsc(EdgStorageCageDetails::getTemperingLayoutId)
                 .orderBy(Boolean.TRUE, sequenceOrder, EdgStorageCageDetails::getTemperingFeedSequence)
                 .last("limit 1"));
@@ -428,6 +430,7 @@
                 .eq("t.glass_id", taskCache.getGlassId())
                 .ne("t1.glass_id", taskCache.getGlassId())
                 .eq("t1.state", Const.GLASS_STATE_IN)
+                .inSql("t1.slot", "select slot from edg_storage_cage where enable_state = " + Const.SLOT_ON)
                 .orderByAsc("t1.tempering_layout_id")
                 .orderBy(Boolean.TRUE, sequenceOrder, "t1.tempering_feed_sequence");
         List<EdgStorageCageDetails> details = edgStorageCageDetailsService.selectJoinList(EdgStorageCageDetails.class, mpjLambdaWrapper);
@@ -451,7 +454,7 @@
             return null;
         }
         return edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>().eq(EdgStorageCageDetails::getGlassId, taskCache.getGlassId())
-//                .inSql(EdgStorageCageDetails::getEngineerId, "select engineer_id from engineering where state = 1")
+                .inSql(EdgStorageCageDetails::getSlot, "select slot from edg_storage_cage where enable_state = " + Const.SLOT_ON)
                 .last(" limit 1 "));
     }
 
@@ -467,18 +470,20 @@
      */
     private Integer queryLineByGlassInfo(EdgStorageCageDetails a08EdgStorageCageDetails, EdgStorageCageDetails a10EdgStorageCageDetails,
                                          EdgStorageCageDetails glassInfo, int out08Glassstate, int out10Glassstate) {
-        boolean b08 = a08EdgStorageCageDetails != null && a08EdgStorageCageDetails.getHeight() == glassInfo.getHeight()
-                && a08EdgStorageCageDetails.getWidth() == glassInfo.getWidth();
-        boolean b10 = a10EdgStorageCageDetails != null && a10EdgStorageCageDetails.getHeight() == glassInfo.getHeight()
-                && a10EdgStorageCageDetails.getWidth() == glassInfo.getWidth();
         //瀛樺湪鍑虹墖浠诲姟 07涓虹┖
-        if (b10) {
-            return out10Glassstate == 2 ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION;
+        if (out08Glassstate == 1 && out10Glassstate == 1) {
+            boolean b08 = a08EdgStorageCageDetails != null && a08EdgStorageCageDetails.getHeight() == glassInfo.getHeight()
+                    && a08EdgStorageCageDetails.getWidth() == glassInfo.getWidth();
+            boolean b10 = a10EdgStorageCageDetails != null && a10EdgStorageCageDetails.getHeight() == glassInfo.getHeight()
+                    && a10EdgStorageCageDetails.getWidth() == glassInfo.getWidth();
+            if (b08) {
+                return Const.A09_OUT_TARGET_POSITION;
+            }
+            if (b10) {
+                return Const.A10_OUT_TARGET_POSITION;
+            }
         }
-        if (b08) {
-            return out08Glassstate == 2 ? Const.A10_OUT_TARGET_POSITION : Const.A09_OUT_TARGET_POSITION;
-        }
-        return out10Glassstate == 2 ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION;
+        return computerLineByState(out08Glassstate, out10Glassstate);
     }
 
     /**
@@ -493,11 +498,16 @@
         MPJQueryWrapper<EdgStorageCageDetails> wrapper = new MPJQueryWrapper<>();
         wrapper.select("count(t.glass_id) as count, t.width, t.height")
                 .eq("t.state", Const.GLASS_STATE_IN)
+                .inSql("t.slot", "select slot from edg_storage_cage where enable_state = " + Const.SLOT_ON)
                 .groupBy("t.width, t.height");
-        if (endcell == Const.A09_OUT_TARGET_POSITION) {
+        if (endcell == Const.A10_OUT_TARGET_POSITION) {
             wrapper.innerJoin("(select glass_id, case when height <= width then width else height end as first_length, " +
                     "case when width < height then width else height end as second_length from edg_storage_cage_details) t1 " +
                     "on t.glass_id = t1.glass_id and (t1.first_length <=" + firstLength + " and t1.second_length<=" + secondLength + ") ");
+        } else {
+            wrapper.innerJoin("(select glass_id, case when height <= width then width else height end as first_length, " +
+                    "case when width < height then width else height end as second_length from edg_storage_cage_details) t1 " +
+                    "on t.glass_id = t1.glass_id and (t1.first_length >=" + minFirstLength + " and t1.second_length>=" + minSecondLength + ") ");
         }
         wrapper.last("order by count(t.glass_id) desc  limit 2");
         List<EdgStorageCageDetails> list = edgStorageCageDetailsService.list(wrapper);
@@ -587,7 +597,7 @@
                 boolean taskCacheStatus = saveTaskCache(glassInfo.getGlassId(), glassInfo.getSlot(), endcell, Const.GLASS_CACHE_TYPE_OUT);
                 log.info("6銆佹坊鍔犲嚭鐗囦换鍔℃槸鍚﹀畬鎴愶細{}", taskCacheStatus);
             }
-            boolean glassSizeStatus = saveGlassSize(glassInfo);
+            boolean glassSizeStatus = saveGlassSize(glassInfo, endcell);
             log.info("7銆佹坊鍔犲嚭鐗囩幓鐠冨昂瀵镐俊鎭埌纾ㄨ竟鍓嶇幓鐠冭〃鏄惁瀹屾垚锛歿}", glassSizeStatus);
             S7object.getinstance().plccontrol.writeWord(confirmationWrodAddress, 1);
             log.info("8銆佸彂閫佺‘璁ゅ瓧宸插畬鎴�");
@@ -620,87 +630,59 @@
      * 娣诲姞鐞嗙墖绗间换鍔�
      *
      * @param glassInfo
+     * @param endcell
      * @return
      */
-    private boolean saveGlassSize(EdgStorageCageDetails glassInfo) {
+    private boolean saveGlassSize(EdgStorageCageDetails glassInfo, int endcell) {
         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);
+        edgGlassTaskInfo.setLine(endcell);
+        edgGlassTaskInfo.setTime(new Date());
         return edgGlassTaskInfoService.save(edgGlassTaskInfo);
     }
 
     /**
-     * 褰撳墠鍒囧壊鐗堝浘淇℃伅
+     * 璁$畻鍑虹墖绾胯矾
+     * 宸叉帓闄ら兘涓�2  閮戒负0 鐨勬儏鍐�
      *
-     * @param
+     * @param out08Glassstate
+     * @param out10Glassstate
      * @return
      */
-    @Scheduled(fixedDelay = 1000)
-    public void currentCutTerritory() {
-        JSONObject jsonObject = new JSONObject();
-        List<Map<String, Object>> currentCutTerritorys = edgStorageCageDetailsService.selectCutTerritory();
-        jsonObject.append("currentCutTerritory", currentCutTerritorys);
-        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("cacheGlass");
-        if (sendwServer != null) {
-            for (WebSocketServer webserver : sendwServer) {
-                if (webserver != null) {
-                    webserver.sendMessage(jsonObject.toString());
-                    List<String> messages = webserver.getMessages();
-                    if (!messages.isEmpty()) {
-                        // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
-                        webserver.clearMessages();
-                    }
-                } else {
-                    log.info("Home is closed");
-                }
+    private int computerLineByState(int out08Glassstate, int out10Glassstate) {
+        if (out08Glassstate == 0) {
+            if (out10Glassstate == 2) {
+                return Const.A09_OUT_TARGET_POSITION;
+            } else {
+                return Const.A10_OUT_TARGET_POSITION;
             }
+        } else if (out08Glassstate == 1) {
+            return Const.A09_OUT_TARGET_POSITION;
+        } else {
+            return Const.A10_OUT_TARGET_POSITION;
         }
     }
 
-    /**
-     * 纾ㄨ竟浠诲姟
-     *
-     * @param
-     * @return
-     */
     @Scheduled(fixedDelay = 1000)
-    public void selectEdgTask() {
+    public void CacheGlassTasks() {
         JSONObject jsonObject = new JSONObject();
+        //璇嗗埆鎽嗙墖
+        List<Map<String, Object>> currentCutTerritorys = edgStorageCageDetailsService.selectCutTerritory();
+        jsonObject.append("currentCutTerritory", currentCutTerritorys);
+        //纾ㄨ竟淇℃伅
         List<Map<String, Object>> EdgTasks1 = taskCacheService.selectEdgInfo("2001");
         List<Map<String, Object>> EdgTasks2 = taskCacheService.selectEdgInfo("2002");
         jsonObject.append("EdgTasks1", EdgTasks1);
         jsonObject.append("EdgTasks2", EdgTasks2);
-        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("cacheGlass");
-        if (sendwServer != null) {
-            for (WebSocketServer webserver : sendwServer) {
-                if (webserver != null) {
-                    webserver.sendMessage(jsonObject.toString());
-                    List<String> messages = webserver.getMessages();
-                    if (!messages.isEmpty()) {
-                        // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
-                        webserver.clearMessages();
-                    }
-                } else {
-                    log.info("Home is closed");
-                }
-            }
-        }
-    }
 
-    /**
-     * 纾ㄨ竟鍓� 缂撳瓨鍐呬俊鎭�
-     *
-     * @param
-     * @return
-     */
-    @Scheduled(fixedDelay = 1000)
-    public void selectEdgStorageCage() {
-        JSONObject jsonObject = new JSONObject();
+        //鍗у缂撳瓨绗煎唴淇℃伅
         List<Map<String, Object>> EdgStorageCageinfos = edgStorageCageService.selectEdgStorageCages();
         jsonObject.append("EdgStorageCageinfos", EdgStorageCageinfos);
+
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("cacheGlass");
         if (sendwServer != null) {
             for (WebSocketServer webserver : sendwServer) {
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
index 39fd32a..1abe8aa 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
@@ -3,7 +3,7 @@
 
 spring:
   profiles:
-    active: cz
+    active: prod
   application:
     name: cacheGlass
 mybatis-plus:
@@ -13,8 +13,12 @@
 mes:
   threshold: 3
   ratio: 10
-  firstLength: 3500
-  secondLength: 2500
+  max:
+    firstLength: 3500
+    secondLength: 2500
+  min:
+    firstLength: 600
+    secondLength: 350
   sequence:
     order: false
 
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
index bca9539..deed23a 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
@@ -41,14 +41,14 @@
     @PostMapping("/insertBigStorageCageDetails")
     public Result insertBigStorageCageDetails(@RequestBody BigStorageCageDetails bigStorageCageDetails) {
         bigStorageCageDetailsService.insertBigStorageCageDetails(bigStorageCageDetails);
-        return Result.build(200,"娣诲姞鎴愬姛",bigStorageCageService.querybigStorageCageDetail(0));
+        return Result.build(200,"娣诲姞鎴愬姛",bigStorageCageService.querybigStorageCageDetail());
     }
 
     @ApiOperation("鐞嗙墖绗艰鎯呭垹闄�")
     @PostMapping("/deleteBigStorageCageDetails")
     public Result deleteBigStorageCageDetails(@RequestBody BigStorageCageDetails bigStorageCageDetails) {
         bigStorageCageDetailsService.deleteBigStorageCageDetails(bigStorageCageDetails);
-        return Result.build(200,"鍒犻櫎鎴愬姛",bigStorageCageService.querybigStorageCageDetail(0));
+        return Result.build(200,"鍒犻櫎鎴愬姛",bigStorageCageService.querybigStorageCageDetail());
     }
 
     @ApiOperation("鐞嗙墖绗间换鍔$牬鎹�0/鎷胯蛋1")
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCage.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCage.java
index 9b6ecc4..5a79a88 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCage.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCage.java
@@ -46,15 +46,26 @@
     private Integer slot;
 
     /**
+     * 鏍呮牸鍙�
+     */
+    @ApiModelProperty(value = "鏈�灏忓帤搴�", position = 5)
+    private Integer minThickness;
+    /**
+     * 鏍呮牸鍙�
+     */
+    @ApiModelProperty(value = "鏈�澶у帤搴�", position = 6)
+    private Integer maxThickness;
+
+    /**
      * 鍚敤鐘舵��
      */
-    @ApiModelProperty(value = "鍚敤鐘舵��", position = 5)
+    @ApiModelProperty(value = "鍚敤鐘舵��", position = 7)
     private Integer enableState;
 
     /**
      * 鍓╀綑瀹藉害
      */
-    @ApiModelProperty(value = "鍓╀綑瀹藉害", position = 6)
+    @ApiModelProperty(value = "鍓╀綑瀹藉害", position = 8)
     private Integer remainWidth;
 
     @ApiModelProperty(hidden = true)
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java
index da14719..495b06a 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java
@@ -24,7 +24,7 @@
      *
      * @return
      */
-    TemperingLayoutDTO temperingIsAll();
+    List<TemperingLayoutDTO> temperingIsAll();
 
     /**
      * 鑾峰彇姣忎釜閽㈠寲鐗堝浘鍗犵敤鐨勬牸瀛愭暟閲�
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
index 83d86fe..5fbc212 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
@@ -47,7 +47,7 @@
      *
      * @return
      */
-    TemperingLayoutDTO temperingIsAll();
+    List<TemperingLayoutDTO> temperingIsAll();
 
     /**
      * 鑾峰彇姣忎釜閽㈠寲鐗堝浘鍗犵敤鐨勬牸瀛愭暟閲�
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageService.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageService.java
index 3d204b7..ab90c99 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageService.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageService.java
@@ -24,9 +24,11 @@
 
     boolean outGlass();
 
-    List<BigStorageCage> querybigStorageCageDetail(int deviceId);
+    List<BigStorageCage> querybigStorageCageDetailAll();
+
+    Map<Integer, List<BigStorageCage>> querybigStorageCageDetail();
 
     List<Map<String, Object>> selectBigStorageCageUsage();
 
-    void updateStorageCageDisabled(int slot,int enableState);
+    void updateStorageCageDisabled(int slot, int enableState);
 }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
index aa3f45e..96d4e3b 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -27,6 +27,7 @@
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -59,51 +60,80 @@
     @Value("${mes.slotWidth}")
     private Integer slotWidth;
 
-    @Value("${mes.galssGap}")
-    private Integer galssGap;
+    @Value("${mes.glassGap}")
+    private Integer glassGap;
 
     /**
      * 鏌ヨ杩�/鍑虹墖浠诲姟
      */
     @Override
     public List<BigStorageCageDetails> selectTask(int taskType) {
-        return null;
-//        if (taskType == 1) {
-//            //杩涚墖浠诲姟鏁版嵁
-//            LambdaQueryWrapper<BigStorageCageDetails> feedWrapper = new LambdaQueryWrapper<>();
-//            feedWrapper.eq(BigStorageCageDetails::getState, Const.BIG_STORAGE_IN);
-//            List<BigStorageCageDetails> bigStorageCageDetailsList = baseMapper.selectList(feedWrapper);
-//
-//            LambdaQueryWrapper<BigStorageCageFeedTask> feedTaskWrapper = new LambdaQueryWrapper<>();
-//            feedTaskWrapper.lt(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT);
-//            List<BigStorageCageFeedTask> bigStorageCageFeedTaskList = bigStorageCageFeedTaskMapper.selectList(feedTaskWrapper);
-//
-//            Map<String, BigStorageCageFeedTask> listMap = bigStorageCageFeedTaskList.stream()
-//                    .collect(Collectors.toMap(BigStorageCageFeedTask::getGlassId, task -> task));
-//
-//            for (BigStorageCageDetails bigStorageCageDetails : bigStorageCageDetailsList) {
-//                BigStorageCageFeedTask bigStorageCageFeedTask = listMap.get(bigStorageCageDetails.getGlassId());
-//                bigStorageCageDetails.setBigStorageCageFeedTask(bigStorageCageFeedTask);
-//            }
-//            return bigStorageCageDetailsList;
-//        } else {
-//            //鍑虹墖浠诲姟鏁版嵁
-//            LambdaQueryWrapper<BigStorageCageDetails> outWrapper = new LambdaQueryWrapper<>();
-//            outWrapper.eq(BigStorageCageDetails::getState, Const.BIG_STORAGE_OUT);
-//            List<BigStorageCageDetails> bigStorageCageDetailsList = baseMapper.selectList(outWrapper);
-//
-//            LambdaQueryWrapper<BigStorageCageOutTask> outTaskWrapper = new LambdaQueryWrapper<>();
-//            outTaskWrapper.lt(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_SUCCESS);
-//            List<BigStorageCageOutTask> bigStorageCageOutTaskList = bigStorageCageOutTaskMapper.selectList(outTaskWrapper);
-//
-//            Map<String, BigStorageCageOutTask> listMap = bigStorageCageOutTaskList.stream()
-//                    .collect(Collectors.toMap(BigStorageCageOutTask::getGlassId, task -> task));
-//            for (BigStorageCageDetails bigStorageCageDetails : bigStorageCageDetailsList) {
-//                BigStorageCageOutTask bigStorageCageOutTask = listMap.get(bigStorageCageDetails.getGlassId());
-//                bigStorageCageDetails.setBigStorageCageOutTask(bigStorageCageOutTask);
-//            }
-//            return bigStorageCageDetailsList;
-//        }
+        if (taskType == 1) {
+            //杩涚墖浠诲姟鏁版嵁
+            LambdaQueryWrapper<BigStorageCageDetails> feedWrapper = new LambdaQueryWrapper<>();
+            feedWrapper.eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN);
+            List<BigStorageCageDetails> bigStorageCageDetailsList = baseMapper.selectList(feedWrapper);
+
+            LambdaQueryWrapper<BigStorageCageFeedTask> feedTaskWrapper = new LambdaQueryWrapper<>();
+            feedTaskWrapper
+                    .lt(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT)
+                    .isNotNull(BigStorageCageFeedTask::getTargetSlot);
+            List<BigStorageCageFeedTask> bigStorageCageFeedTaskList = bigStorageCageFeedTaskMapper.selectList(feedTaskWrapper);
+
+            Map<String, BigStorageCageFeedTask> listMap = bigStorageCageFeedTaskList.stream()
+                    .collect(Collectors.toMap(BigStorageCageFeedTask::getGlassId, task -> task));
+            Iterator<BigStorageCageDetails> iterator = bigStorageCageDetailsList.iterator();
+            while (iterator.hasNext()) {
+                BigStorageCageDetails bigStorageCageDetails = iterator.next();
+                BigStorageCageFeedTask bigStorageCageFeedTask = listMap.get(bigStorageCageDetails.getGlassId());
+                bigStorageCageDetails.setBigStorageCageFeedTask(bigStorageCageFeedTask);
+                if (bigStorageCageDetails.getBigStorageCageFeedTask() == null) {
+                    iterator.remove();
+                }
+            }
+            LambdaQueryWrapper<BigStorageCageFeedTask> feedTaskNoTargetWrapper = new LambdaQueryWrapper<>();
+            feedTaskNoTargetWrapper
+                    .lt(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT)
+                    .isNull(BigStorageCageFeedTask::getTargetSlot);
+            List<BigStorageCageFeedTask> bigStorageCageFeedTaskNoTargetList = bigStorageCageFeedTaskMapper.selectList(feedTaskNoTargetWrapper);
+            for (BigStorageCageFeedTask bigStorageCageFeedTask : bigStorageCageFeedTaskNoTargetList
+            ) {
+                BigStorageCageDetails bigStorageCageDetails = new BigStorageCageDetails();
+                LambdaQueryWrapper<GlassInfo> glassInfoWrapper = new LambdaQueryWrapper<>();
+                glassInfoWrapper.eq(GlassInfo::getGlassId, bigStorageCageFeedTask.getGlassId());
+                GlassInfo glassInfo = glassInfoMapper.selectOne(glassInfoWrapper);
+                BeanUtils.copyProperties(glassInfo, bigStorageCageDetails);
+                bigStorageCageDetails.setBigStorageCageFeedTask(bigStorageCageFeedTask);
+                bigStorageCageDetailsList.add(bigStorageCageDetails);
+            }
+            return bigStorageCageDetailsList;
+        } else {
+            //鍑虹墖浠诲姟鏁版嵁
+            LambdaQueryWrapper<BigStorageCageDetails> outWrapper = new LambdaQueryWrapper<>();
+            outWrapper.eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN);
+            List<BigStorageCageDetails> bigStorageCageDetailsList = baseMapper.selectList(outWrapper);
+
+            LambdaQueryWrapper<BigStorageCageOutTask> outTaskWrapper = new LambdaQueryWrapper<>();
+            outTaskWrapper.lt(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_SUCCESS);
+            List<BigStorageCageOutTask> bigStorageCageOutTaskList = bigStorageCageOutTaskMapper.selectList(outTaskWrapper);
+
+            Map<String, BigStorageCageOutTask> listMap = bigStorageCageOutTaskList.stream()
+                    .collect(Collectors.toMap(BigStorageCageOutTask::getGlassId, task -> task));
+            for (BigStorageCageDetails bigStorageCageDetails : bigStorageCageDetailsList) {
+                BigStorageCageOutTask bigStorageCageOutTask = listMap.get(bigStorageCageDetails.getGlassId());
+                bigStorageCageDetails.setBigStorageCageOutTask(bigStorageCageOutTask);
+            }
+            Iterator<BigStorageCageDetails> iterator = bigStorageCageDetailsList.iterator();
+            while (iterator.hasNext()) {
+                BigStorageCageDetails bigStorageCageDetails = iterator.next();
+                BigStorageCageOutTask bigStorageCageOutTask = listMap.get(bigStorageCageDetails.getGlassId());
+                bigStorageCageDetails.setBigStorageCageOutTask(bigStorageCageOutTask);
+                if (bigStorageCageDetails.getBigStorageCageOutTask() == null) {
+                    iterator.remove();
+                }
+            }
+            return bigStorageCageDetailsList;
+        }
     }
 
     /**
@@ -131,7 +161,7 @@
         for (BigStorageCageDetails bigStorageCageDetails : bigStorageCageDetailsList
         ) {
             if (bigStorageCageDetails.getBigStorageCageFeedTask().getTaskState() == 0) {
-                carWidth = carWidth - bigStorageCageDetails.getWidth() - galssGap;
+                carWidth = carWidth - bigStorageCageDetails.getWidth() - glassGap;
             }
         }
         return carWidth;
@@ -187,7 +217,7 @@
         if (glassInfo != null) {
             BeanUtils.copyProperties(glassInfo, bigStorageCageDetails);
             bigStorageCageDetails.setState(1);
-            bigStorageCageDetails.setGap(galssGap);
+            bigStorageCageDetails.setGap(glassGap);
         }
         List<BigStorageCageDetails> bigStorageCageDetailsList = new ArrayList<>();
         bigStorageCageDetailsList.add(bigStorageCageDetails);
@@ -256,9 +286,12 @@
             bigStorageDTO.setSlot(bigStorageCage.getSlot());
             return bigStorageDTO;
         }
+        //todo:鑾峰彇鐜荤拑鐨勫帤搴︼細閲嶆柊閫夌瀛愰渶瑕佹寜鐓х瀛愬彲鏀剧幓鐠冨帤搴﹁繘琛岄�夋嫨
         bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
                 .eq(BigStorageCage::getRemainWidth, slotWidth)
                 .eq(BigStorageCage::getEnableState, Const.SLOT_ON)
+                .gt(BigStorageCage::getMaxThickness, glassInfo.getThickness())
+                .orderByAsc(BigStorageCage::getDeviceId)
                 .last("limit 1"));
         Assert.isTrue(null != bigStorageCage, "娌℃湁绌轰綑鐨勭瀛愬瓨鏀剧幓鐠�");
         bigStorageDTO = new BigStorageDTO();
@@ -268,7 +301,7 @@
     }
 
     @Override
-    public TemperingLayoutDTO temperingIsAll() {
+    public List<TemperingLayoutDTO> temperingIsAll() {
         return baseMapper.temperingIsAll();
     }
 
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java
index db3ca3a..baa9974 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java
@@ -4,7 +4,6 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.mes.bigstorage.entity.BigStorageCage;
@@ -18,13 +17,10 @@
 import com.mes.temperingglass.entity.TemperingGlassInfo;
 import com.mes.temperingglass.service.TemperingGlassInfoService;
 import lombok.extern.slf4j.Slf4j;
-import com.mes.glassinfo.entity.GlassInfo;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -58,9 +54,9 @@
     public BigStorageCageDetails feedGlass(GlassInfo glassInfo, BigStorageCageDetails bigStorageCageDetails) {
         BeanUtils.copyProperties(glassInfo, bigStorageCageDetails);
         //鐜荤拑涓嶉挗鍖栨椂
-        if(glassInfo.getTemperingLayoutId()==null){
+        if (glassInfo.getTemperingLayoutId() == null) {
 
-            BigStorageCage bigStorageCage=baseMapper.selectJoinOne(BigStorageCage.class, new MPJLambdaWrapper<BigStorageCage>()
+            BigStorageCage bigStorageCage = baseMapper.selectJoinOne(BigStorageCage.class, new MPJLambdaWrapper<BigStorageCage>()
                     .selectAll(BigStorageCage.class)
                     .leftJoin(BigStorageCageDetails.class, on -> on
                             .eq(BigStorageCage::getDeviceId, BigStorageCageDetails::getDeviceId)
@@ -71,15 +67,15 @@
                     .last("limit 1")
             );
 
-            if(bigStorageCage.getSlot()!=null){
+            if (bigStorageCage.getSlot() != null) {
                 bigStorageCageDetails.setSlot(bigStorageCage.getSlot());
                 bigStorageCageDetails.setDeviceId(bigStorageCage.getDeviceId());
             }
-        }else{
+        } else {
             //鐜荤拑閽㈠寲鏃�
-            BigStorageCage bigStorageCage=new BigStorageCage();
+            BigStorageCage bigStorageCage = new BigStorageCage();
 
-            bigStorageCage=baseMapper.selectJoinOne(BigStorageCage.class, new MPJLambdaWrapper<BigStorageCage>()
+            bigStorageCage = baseMapper.selectJoinOne(BigStorageCage.class, new MPJLambdaWrapper<BigStorageCage>()
                     .selectAll(BigStorageCage.class)
                     .leftJoin(BigStorageCageDetails.class, on -> on
                             .eq(BigStorageCage::getDeviceId, BigStorageCageDetails::getDeviceId)
@@ -88,16 +84,16 @@
                     .eq(BigStorageCageDetails::getTemperingFeedSequence, glassInfo.getTemperingFeedSequence() - 1)
                     .gt(BigStorageCage::getRemainWidth, glassInfo.getWidth())
             );
-            log.info("1銆佹煡璇㈢悊鐗囩鍐呯墖搴�-1绛変簬褰撳墠鐜荤拑鐗囧簭鐨勭幓鐠�"+bigStorageCage);
+            log.info("1銆佹煡璇㈢悊鐗囩鍐呯墖搴�-1绛変簬褰撳墠鐜荤拑鐗囧簭鐨勭幓鐠�" + bigStorageCage);
 
-            log.info("2銆佹煡璇㈢悊鐗囩鍐呯墖搴�-1绛変簬褰撳墠鐜荤拑鐗囧簭鐨勭幓鐠冪殑缁撴灉涓嶄负绌烘椂"+bigStorageCage.getSlot());
+            log.info("2銆佹煡璇㈢悊鐗囩鍐呯墖搴�-1绛変簬褰撳墠鐜荤拑鐗囧簭鐨勭幓鐠冪殑缁撴灉涓嶄负绌烘椂" + bigStorageCage.getSlot());
             if (bigStorageCage.getSlot() != null) {
                 bigStorageCageDetails.setSlot(bigStorageCage.getSlot());
                 bigStorageCageDetails.setDeviceId(bigStorageCage.getDeviceId());
             } else {
                 log.info("3銆佹煡璇㈢悊鐗囩鍐呯墖搴�-1绛変簬褰撳墠鐜荤拑鐗囧簭鐨勭幓鐠冪殑缁撴灉涓虹┖鏃惰幏鍙栧綋鍓嶇幓鐠冪増鍥緄d鏄惁瀛樺湪鐞嗙墖绗煎唴");
 
-                bigStorageCage=baseMapper.selectJoinOne(BigStorageCage.class, new MPJLambdaWrapper<BigStorageCage>()
+                bigStorageCage = baseMapper.selectJoinOne(BigStorageCage.class, new MPJLambdaWrapper<BigStorageCage>()
                         .selectAll(BigStorageCage.class)
                         .leftJoin(BigStorageCageDetails.class, on -> on
                                 .eq(BigStorageCage::getDeviceId, BigStorageCageDetails::getDeviceId)
@@ -106,12 +102,12 @@
                         .gt(BigStorageCage::getRemainWidth, glassInfo.getWidth())
                 );
 
-                if(bigStorageCage != null){
+                if (bigStorageCage != null) {
                     log.info("4銆佽幏鍙栫瀛愬唴閫傚悎鐨勬牸瀛�");
-                    BigStorageCage bigStorageCages=bigStorageCageSlot(bigStorageCage.getDeviceId());
+                    BigStorageCage bigStorageCages = bigStorageCageSlot(bigStorageCage.getDeviceId());
                     bigStorageCageDetails.setSlot(bigStorageCages.getSlot());
                     bigStorageCageDetails.setDeviceId(bigStorageCages.getDeviceId());
-                }else{
+                } else {
                     log.info("5銆佽幏鍙栨瘡涓瀛愮増鍥緄d鐨勪釜鏁�");
                     QueryWrapper<BigStorageCageDetails> queryWrapper = new QueryWrapper<>();
                     queryWrapper.select("a.device_id", "COUNT(DISTINCT b.tempering_layout_id) AS layoutCount")
@@ -119,22 +115,22 @@
                             .apply("LEFT JOIN (SELECT device_id, tempering_layout_id FROM big_storage_cage_details) b ON a.device_id = b.device_id AND a.slot = b.slot")
                             .orderByAsc("layoutCount")
                             .orderByAsc("a.device_id");
-                    List<Map<String, Object>> bigStorageCageDetailsCount= bigStorageCageDetailsMapper.selectMaps(queryWrapper);
+                    List<Map<String, Object>> bigStorageCageDetailsCount = bigStorageCageDetailsMapper.selectMaps(queryWrapper);
 
                     log.info("5銆佹煡璇㈢瀛愬唴鏄惁鏈夊悎閫傜殑鏍煎瓙");
-                    boolean found=false;
+                    boolean found = false;
                     for (Map<String, Object> map : bigStorageCageDetailsCount) {
                         for (Map.Entry<String, Object> entry : map.entrySet()) {
                             int deviceId = Integer.parseInt(entry.getKey());
-                            BigStorageCage bigStorageCages=bigStorageCageSlot(deviceId);
-                            if(bigStorageCage!=null){
+                            BigStorageCage bigStorageCages = bigStorageCageSlot(deviceId);
+                            if (bigStorageCage != null) {
                                 bigStorageCageDetails.setSlot(bigStorageCages.getSlot());
                                 bigStorageCageDetails.setDeviceId(deviceId);
-                                found=true;
+                                found = true;
                                 break;
                             }
                         }
-                        if(found){
+                        if (found) {
                             break;
                         }
                     }
@@ -143,40 +139,39 @@
         }
 
 
-
         if (bigStorageCageDetails.getSlot() != null) {
             log.info("6銆佸綋鎵惧埌鍚堥�傜殑鏍煎瓙鏃舵坊鍔犵幓鐠冨埌绗煎瓙琛�");
             bigStorageCageDetails.setState(0);
             bigStorageCageDetailsMapper.insert(bigStorageCageDetails);
-            updateRemainWidth(bigStorageCageDetails.getSlot()) ;
+            updateRemainWidth(bigStorageCageDetails.getSlot());
         }
         return bigStorageCageDetails;
     }
 
     //鑾峰彇绗煎瓙鍐呯殑绌烘牸瀛�
     private BigStorageCage bigStorageCageSlot(Integer deviceId) {
-        LambdaQueryWrapper<BigStorageCage> bigStorageCageWrapper=new LambdaQueryWrapper<>();
-                bigStorageCageWrapper
-                        .eq(BigStorageCage::getRemainWidth,"5000")
-                        .eq(BigStorageCage::getEnableState,"0")
-                        .eq(BigStorageCage::getDeviceId,deviceId)
-                        .orderByAsc(BigStorageCage::getSlot)
-                        .last("LIMIT 1");
-                return bigStorageCageMapper.selectOne(bigStorageCageWrapper);
+        LambdaQueryWrapper<BigStorageCage> bigStorageCageWrapper = new LambdaQueryWrapper<>();
+        bigStorageCageWrapper
+                .eq(BigStorageCage::getRemainWidth, "5000")
+                .eq(BigStorageCage::getEnableState, "0")
+                .eq(BigStorageCage::getDeviceId, deviceId)
+                .orderByAsc(BigStorageCage::getSlot)
+                .last("LIMIT 1");
+        return bigStorageCageMapper.selectOne(bigStorageCageWrapper);
     }
 
     //鍑虹墖閫昏緫
     @Override
     public boolean outGlass() {
-        LambdaQueryWrapper<TemperingGlassInfo> temperingGlassInfoWrapper=new LambdaQueryWrapper<>();
-        temperingGlassInfoWrapper.eq(TemperingGlassInfo::getState,-1);
+        LambdaQueryWrapper<TemperingGlassInfo> temperingGlassInfoWrapper = new LambdaQueryWrapper<>();
+        temperingGlassInfoWrapper.eq(TemperingGlassInfo::getState, -1);
         List<TemperingGlassInfo> temperingGlassInfoList = temperingGlassInfoService.list(temperingGlassInfoWrapper);
-        log.info("1銆佹煡璇㈤挗鍖栧皬鐗囦换鍔¤〃鏄惁鏈夊緟鍑虹幓鐠�"+temperingGlassInfoList.size());
-        if(temperingGlassInfoList.size()>0){
+        log.info("1銆佹煡璇㈤挗鍖栧皬鐗囦换鍔¤〃鏄惁鏈夊緟鍑虹幓鐠�" + temperingGlassInfoList.size());
+        if (temperingGlassInfoList.size() > 0) {
             temperingGlassInfoService.addOutTask(temperingGlassInfoList);
             log.info("2銆佹坊鍔犱换鍔″埌浠诲姟琛�");
             return true;
-        }else{
+        } else {
             log.info("3銆佹病鏈夊彲鍑虹殑鐜荤拑鏃惰幏鍙栨槸鍚︽湁灏忕墖鍒伴綈鐨勭増鍥�");
 
             QueryWrapper<BigStorageCageDetails> wrapper = Wrappers.query();
@@ -184,28 +179,28 @@
                     .groupBy("tempering_layout_id");
             List<Map<String, Object>> temperingLayoutIdList = bigStorageCageDetailsMapper.selectMaps(wrapper);
 
-            boolean key=false;
+            boolean key = false;
             for (Map<String, Object> row : temperingLayoutIdList) {
                 for (Map.Entry<String, Object> entry : row.entrySet()) {
                     String temperingId = entry.getKey();
                     Object temperingNo = entry.getValue();
 
-                        LambdaQueryWrapper<GlassInfo> glassInfoWrapper=new LambdaQueryWrapper<>();
-                        glassInfoWrapper.eq(GlassInfo::getTemperingLayoutId,temperingId)
-                                .orderByDesc(GlassInfo::getTemperingFeedSequence);
-                        List<GlassInfo> glassInfoList= glassInfoService.list(glassInfoWrapper);
-                        if(glassInfoList.size()==Integer.parseInt(temperingNo.toString())){
-                            for (GlassInfo glassInfo:glassInfoList
-                            ) {
+                    LambdaQueryWrapper<GlassInfo> glassInfoWrapper = new LambdaQueryWrapper<>();
+                    glassInfoWrapper.eq(GlassInfo::getTemperingLayoutId, temperingId)
+                            .orderByDesc(GlassInfo::getTemperingFeedSequence);
+                    List<GlassInfo> glassInfoList = glassInfoService.list(glassInfoWrapper);
+                    if (glassInfoList.size() == Integer.parseInt(temperingNo.toString())) {
+                        for (GlassInfo glassInfo : glassInfoList
+                        ) {
 
-                                TemperingGlassInfo temperingGlassInfo=new TemperingGlassInfo();
-                                BeanUtils.copyProperties(glassInfo, temperingGlassInfo);
-                                temperingGlassInfoService.save(temperingGlassInfo);
+                            TemperingGlassInfo temperingGlassInfo = new TemperingGlassInfo();
+                            BeanUtils.copyProperties(glassInfo, temperingGlassInfo);
+                            temperingGlassInfoService.save(temperingGlassInfo);
 
-                            }
-                            key=true;
                         }
-                    if(key){
+                        key = true;
+                    }
+                    if (key) {
                         return false;
                     }
                 }
@@ -219,22 +214,22 @@
     public void updateRemainWidth(int slot) {
         log.info("鑾峰彇璇ユ牸瀛愬唴鐜荤拑淇℃伅锛岃绠楁牸瀛愬墿浣欏搴�");
         double width = 5000;
-        LambdaQueryWrapper<BigStorageCageDetails> bigStorageCageDetailsWrapper=new LambdaQueryWrapper();
+        LambdaQueryWrapper<BigStorageCageDetails> bigStorageCageDetailsWrapper = new LambdaQueryWrapper();
         bigStorageCageDetailsWrapper
-                .eq(BigStorageCageDetails::getSlot,slot)
-                .eq(BigStorageCageDetails::getState,Const.GLASS_STATE_IN)
-                .eq(BigStorageCageDetails::getState,Const.GLASS_STATE_ARTIFICIAL);
+                .eq(BigStorageCageDetails::getSlot, slot)
+                .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)
+                .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_ARTIFICIAL);
 
         List<BigStorageCageDetails> bigStorageCageDetailsList = bigStorageCageDetailsMapper.selectList(bigStorageCageDetailsWrapper);
         for (BigStorageCageDetails bigStorageCageDetails : bigStorageCageDetailsList
         ) {
-            double widths=bigStorageCageDetails.getWidth();
-            double gap=bigStorageCageDetails.getGap();
-            width -= widths+gap;
+            double widths = bigStorageCageDetails.getWidth();
+            double gap = bigStorageCageDetails.getGap();
+            width -= widths + gap;
         }
         //淇敼鏍煎瓙鍓╀綑瀹藉害
         BigStorageCage bigStorageCage = new BigStorageCage();
-        bigStorageCage.setRemainWidth((int)width);
+        bigStorageCage.setRemainWidth((int) width);
         UpdateWrapper<BigStorageCage> bigStorageCageWrapper = new UpdateWrapper<>();
         bigStorageCageWrapper.eq("slot", slot);
         bigStorageCageMapper.update(bigStorageCage, bigStorageCageWrapper);
@@ -242,50 +237,48 @@
 
     //鏌ヨ澶х悊鐗囦俊鎭紝鍓嶇灞曠ず鐢�
     @Override
-    public List<BigStorageCage> querybigStorageCageDetail(int deviceId) {
-        LambdaQueryWrapper<BigStorageCage> bigStorageCageWrapper =new LambdaQueryWrapper<>();
-        LambdaQueryWrapper<BigStorageCageDetails> bigStorageCageDetailsWrapper =new LambdaQueryWrapper<>();
-        bigStorageCageDetailsWrapper
-                .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)
-                .or()
-                .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_ARTIFICIAL);
-        if(deviceId!=0){
-            bigStorageCageWrapper.eq(BigStorageCage::getDeviceId,deviceId);
-            bigStorageCageDetailsWrapper.eq(BigStorageCageDetails::getDeviceId,deviceId);
-        }
+    public List<BigStorageCage> querybigStorageCageDetailAll() {
+        MPJLambdaWrapper<BigStorageCage> wrapper = new MPJLambdaWrapper<>();
+        wrapper.selectAll(BigStorageCage.class).selectCollection(BigStorageCageDetails.class, BigStorageCage::getBigStorageCageDetails)
+                .leftJoin(BigStorageCageDetails.class, on -> on.eq(BigStorageCageDetails::getSlot, BigStorageCage::getSlot)
+                        .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN, Const.GLASS_STATE_ARTIFICIAL))
+                        .orderByAsc(BigStorageCage::getDeviceId)
+                        .orderByAsc(BigStorageCage::getSlot);
+        return bigStorageCageMapper.selectJoinList(BigStorageCage.class, wrapper);
+    }
 
-        List<BigStorageCage> bigStorageCages = bigStorageCageMapper.selectList(bigStorageCageWrapper);
-        log.info("1銆佽幏鍙栧ぇ鐞嗙墖绗间俊鎭畬鎴愶紝鑾峰彇鍒扮殑鏁版嵁{}", bigStorageCages.size());
+    //鏌ヨ澶х悊鐗囦俊鎭紝鍓嶇灞曠ず鐢�
+    @Override
+    public Map<Integer, List<BigStorageCage>> querybigStorageCageDetail() {
 
-        List<BigStorageCageDetails> bigStorageCageDetailsList = bigStorageCageDetailsMapper.selectList(bigStorageCageDetailsWrapper);
-
-        Map<Integer, List<BigStorageCageDetails>> listMap = bigStorageCageDetailsList.stream().collect(Collectors.groupingBy(BigStorageCageDetails::getSlot));
-        for (BigStorageCage bigStorageCage : bigStorageCages) {
-            List<BigStorageCageDetails> bigStorageCageDetails = listMap.get(bigStorageCage.getSlot());
-            bigStorageCage.setBigStorageCageDetails(bigStorageCageDetails);
-        }
-        return bigStorageCages;
+        MPJLambdaWrapper<BigStorageCage> wrapper = new MPJLambdaWrapper<>();
+        wrapper.selectAll(BigStorageCage.class).selectCollection(BigStorageCageDetails.class, BigStorageCage::getBigStorageCageDetails)
+                .leftJoin(BigStorageCageDetails.class, on -> on.eq(BigStorageCageDetails::getSlot, BigStorageCage::getSlot)
+                        .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN, Const.GLASS_STATE_ARTIFICIAL));
+        List<BigStorageCage> bigStorageCages = bigStorageCageMapper.selectJoinList(BigStorageCage.class, wrapper);
+        Map<Integer, List<BigStorageCage>> listMap = bigStorageCages.stream().collect(Collectors.groupingBy(item -> item.getDeviceId()));
+        return listMap;
     }
 
     //绗煎瓙浣跨敤鎯呭喌锛岀晫闈㈠睍绀虹敤
     @Override
     public List<Map<String, Object>> selectBigStorageCageUsage() {
         QueryWrapper<BigStorageCage> wrapper = new QueryWrapper<>();
-        wrapper.select("device_id,ROUND(1 - SUM(CASE WHEN remain_width = 5000 THEN 1 ELSE 0 END) / COUNT(device_id), 2) AS percentage,COUNT(device_id) - SUM(CASE WHEN remain_width = 5000 THEN 1 ELSE 0 END) AS count")
+        wrapper.select("device_id,ROUND(1 - SUM(CASE WHEN remain_width = 5000 THEN 1 ELSE 0 END) / COUNT(device_id), 2) AS percentage,SUM(CASE WHEN remain_width = 5000 THEN 1 ELSE 0 END) AS count")
 
                 .groupBy("device_id");
-        List<Map<String, Object>> bigStorageCageUsages=baseMapper.selectMaps(wrapper);
+        List<Map<String, Object>> bigStorageCageUsages = baseMapper.selectMaps(wrapper);
 
         return bigStorageCageUsages;
     }
 
     //绗煎瓙鐨勫惎鐢�/绂佺敤
     @Override
-    public void updateStorageCageDisabled(int slot,int enableState){
-        BigStorageCage bigStorageCage=new BigStorageCage();
+    public void updateStorageCageDisabled(int slot, int enableState) {
+        BigStorageCage bigStorageCage = new BigStorageCage();
         bigStorageCage.setEnableState(enableState);
         LambdaQueryWrapper<BigStorageCage> bigStorageCageWrapper = new LambdaQueryWrapper<>();
-        bigStorageCageWrapper.eq(BigStorageCage::getSlot,slot);
-        baseMapper.update(bigStorageCage,bigStorageCageWrapper);
+        bigStorageCageWrapper.eq(BigStorageCage::getSlot, slot);
+        baseMapper.update(bigStorageCage, bigStorageCageWrapper);
     }
 }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/mapper/BigStorageCageFeedTaskMapper.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/mapper/BigStorageCageFeedTaskMapper.java
index 7c57951..0256f9e 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/mapper/BigStorageCageFeedTaskMapper.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/mapper/BigStorageCageFeedTaskMapper.java
@@ -10,16 +10,16 @@
 
 /**
  * <p>
- *  Mapper 鎺ュ彛
+ * Mapper 鎺ュ彛
  * </p>
  *
  * @author zhoush
  * @since 2024-04-16
  */
-@DS("salve_hangzhoumes_1")
+@DS("salve_hangzhoumes")
 public interface BigStorageCageFeedTaskMapper extends MPJBaseMapper<BigStorageCageFeedTask> {
 
     List<Integer> querySitToUpGlass();
 
-    BigStorageDTO querySitToUpRemainWidth(@Param(value = "line") Integer line);
+    BigStorageDTO querySitToUpRemainWidth(@Param(value = "line") Integer line, @Param(value = "glassGap") Integer glassGap);
 }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/mapper/BigStorageCageOutTaskMapper.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/mapper/BigStorageCageOutTaskMapper.java
index 8e53da7..5fa29d3 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/mapper/BigStorageCageOutTaskMapper.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/mapper/BigStorageCageOutTaskMapper.java
@@ -15,7 +15,7 @@
  * @author zhoush
  * @since 2024-04-16
  */
-@DS("salve_hangzhoumes_1")
+@DS("salve_hangzhoumes")
 public interface BigStorageCageOutTaskMapper extends BaseMapper<BigStorageCageOutTask> {
 
     boolean saveBatch(@Param(value = "list") List<BigStorageCageOutTask> list);
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/impl/BigStorageCageFeedTaskServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/impl/BigStorageCageFeedTaskServiceImpl.java
index 03110f0..262cc3f 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/impl/BigStorageCageFeedTaskServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/impl/BigStorageCageFeedTaskServiceImpl.java
@@ -7,13 +7,14 @@
 import com.mes.bigstoragetask.entity.BigStorageCageFeedTask;
 import com.mes.bigstoragetask.mapper.BigStorageCageFeedTaskMapper;
 import com.mes.bigstoragetask.service.BigStorageCageFeedTaskService;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
 
 /**
  * <p>
- *  鏈嶅姟瀹炵幇绫�
+ * 鏈嶅姟瀹炵幇绫�
  * </p>
  *
  * @author zhoush
@@ -22,9 +23,12 @@
 @Service
 public class BigStorageCageFeedTaskServiceImpl extends ServiceImpl<BigStorageCageFeedTaskMapper, BigStorageCageFeedTask> implements BigStorageCageFeedTaskService {
 
+    @Value("${mes.glassGap}")
+    private Integer glassGap;
+
     @Override
-    public void addFeedTask(BigStorageCageDetails slotInfo, Integer plcFeedReqLine, int taskType){
-        BigStorageCageFeedTask bigStorageCageFeedTask=new BigStorageCageFeedTask();
+    public void addFeedTask(BigStorageCageDetails slotInfo, Integer plcFeedReqLine, int taskType) {
+        BigStorageCageFeedTask bigStorageCageFeedTask = new BigStorageCageFeedTask();
         bigStorageCageFeedTask.setId(slotInfo.getId());
         bigStorageCageFeedTask.setTaskState(0);
         bigStorageCageFeedTask.setLine(plcFeedReqLine);
@@ -41,7 +45,7 @@
 
     @Override
     public BigStorageDTO querySitToUpRemainWidth(Integer line) {
-        return baseMapper.querySitToUpRemainWidth(line);
+        return baseMapper.querySitToUpRemainWidth(line, glassGap);
     }
 
     @Override
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 68312bf..85cf462 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
@@ -4,6 +4,9 @@
 import com.mes.device.PlcParameterObject;
 import com.mes.tools.InitUtil;
 import com.mes.tools.S7control;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.Date;
 
 
 /**
@@ -11,6 +14,7 @@
  * @Date: 2024/4/9 15:13
  * @Description:
  */
+@Slf4j
 public class S7object extends Thread {
     public S7control plccontrol; // PLC閫氳绫诲疄渚�
     private EPlcType plcType = EPlcType.S1200; // 瑗块棬瀛怭LC绫诲瀷
@@ -52,8 +56,11 @@
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }
-
+            Date startDate = new Date();
+            log.info("澶х悊鐗囩璇诲彇plc鏁版嵁寮�濮嬫椂闂达細{}", startDate);
             byte[] getplcvlues = plccontrol.readByte(PlcMesObject.getPlcAddressBegin(), PlcMesObject.getPlcAddressLength());
+            Date endDate = new Date();
+            log.info("澶х悊鐗囩璇诲彇plc鏁版嵁缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
             if (getplcvlues != null) {
                 PlcMesObject.setPlcParameterList(getplcvlues);
             }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java
index aa06134..95616b3 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java
@@ -32,49 +32,59 @@
     @Resource
     private TemperingGlassInfoService temperingGlassInfoService;
 
+    private JSONObject jsonObject = new JSONObject();
+    private JSONObject jsonObject1 = new JSONObject();
+    public void queryDataSource1() throws InterruptedException {
+        List<Double> carPostion=new ArrayList<>();
+        carPostion.add(0.25);
+        carPostion.add(0.5);
+        jsonObject.append("carPostion",carPostion);
+        //鐣岄潰灞曠ず绗煎瓙淇℃伅
+        jsonObject1.append("bigStorageCageInfos", bigStorageCageService.querybigStorageCageDetail());
+
+        //杩涚墖浠诲姟鏁版嵁
+        List<BigStorageCageDetails> bigStorageCageDetailsFeedTask=bigStorageCageDetailsService.selectTask(1);
+        jsonObject.append("bigStorageCageDetailsFeedTask", bigStorageCageDetailsFeedTask);
+
+        //鍑虹墖浠诲姟鏁版嵁
+        List<BigStorageCageDetails> bigStorageCageDetailsOutTask=bigStorageCageDetailsService.selectTask(2);
+        jsonObject.append("bigStorageCageDetailsOutTask", bigStorageCageDetailsOutTask);
+
+        //鐞嗙墖绗间娇鐢ㄦ儏鍐�
+        List<Map<String, Object>> bigStorageCageUsage=bigStorageCageService.selectBigStorageCageUsage();
+        jsonObject.append("bigStorageCageUsage", bigStorageCageUsage);
+
+        //鐞嗙墖绗艰〃鏍间俊鎭�
+        jsonObject.append("bigStorageCageInfo", bigStorageCageService.querybigStorageCageDetailAll());
+
+    }
+
+    public void queryDataSource2() throws InterruptedException {
+        //鍑虹墖闃熷垪
+        List<TemperingGlassInfo> temperingGlassInfoList= temperingGlassInfoService.list();
+        jsonObject.append("temperingGlassInfoList", temperingGlassInfoList);
+
+    }
     /**
      * fixedRate : 涓婁竴涓皟鐢ㄥ紑濮嬪悗鍐嶆璋冪敤鐨勫欢鏃讹紙涓嶇敤绛夊緟涓婁竴娆¤皟鐢ㄥ畬鎴愶級
      * fixedDelay : 涓婁竴涓皟鐢ㄧ粨鏉熷悗鍐嶆璋冪敤鐨勫欢鏃�
      */
     @Scheduled(fixedDelay = 1000)
     public void plcStorageCageTask() throws InterruptedException {
-        JSONObject jsonObject = new JSONObject();
+        jsonObject = new JSONObject();
+        jsonObject1 = new JSONObject();
         try {
-            //鐣岄潰灞曠ず绗煎瓙淇℃伅
-            jsonObject.append("bigStorageCageInfo1", bigStorageCageService.querybigStorageCageDetail(1));
-            jsonObject.append("bigStorageCageInfo2", bigStorageCageService.querybigStorageCageDetail(2));
-            jsonObject.append("bigStorageCageInfo3", bigStorageCageService.querybigStorageCageDetail(3));
-            jsonObject.append("bigStorageCageInfo4", bigStorageCageService.querybigStorageCageDetail(4));
-            jsonObject.append("bigStorageCageInfo5", bigStorageCageService.querybigStorageCageDetail(5));
-            jsonObject.append("bigStorageCageInfo6", bigStorageCageService.querybigStorageCageDetail(6));
-            jsonObject.append("bigStorageCageInfo7", bigStorageCageService.querybigStorageCageDetail(7));
-            jsonObject.append("bigStorageCageInfo8", bigStorageCageService.querybigStorageCageDetail(8));
-
-            //杩涚墖浠诲姟鏁版嵁
-            List<BigStorageCageDetails> bigStorageCageDetailsFeedTask=bigStorageCageDetailsService.selectTask(1);
-            jsonObject.append("bigStorageCageDetailsFeedTask", bigStorageCageDetailsFeedTask);
-
-            //鍑虹墖浠诲姟鏁版嵁
-            List<BigStorageCageDetails> bigStorageCageDetailsOutTask=bigStorageCageDetailsService.selectTask(2);
-            jsonObject.append("bigStorageCageDetailsOutTask", bigStorageCageDetailsOutTask);
-
-            //鐞嗙墖绗间娇鐢ㄦ儏鍐�
-            List<Map<String, Object>> bigStorageCageUsage=bigStorageCageService.selectBigStorageCageUsage();
-            jsonObject.append("bigStorageCageUsage", bigStorageCageUsage);
-
-            //鍑虹墖闃熷垪
-            List<TemperingGlassInfo> temperingGlassInfoList= temperingGlassInfoService.list();
-            jsonObject.append("temperingGlassInfoList", temperingGlassInfoList);
-
-            //鐞嗙墖绗艰〃鏍间俊鎭�
-            jsonObject.append("bigStorageCageInfo", bigStorageCageService.querybigStorageCageDetail(0));
-
+            //鏌ヨ浣跨敤鏁版嵁婧�1鏌ヨ鏁版嵁
+            queryDataSource1();
+            //鏌ヨ浣跨敤鏁版嵁婧�2鏌ヨ鏁版嵁
+            queryDataSource2();
 
             ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("slicecage");
             if (sendwServer != null) {
                 for (WebSocketServer webserver : sendwServer) {
                     if (webserver != null) {
                         webserver.sendMessage(jsonObject.toString());
+                        webserver.sendMessage(jsonObject1.toString());
                         List<String> messages = webserver.getMessages();
                         if (!messages.isEmpty()) {
                             // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
index 4d4ec63..5430e36 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -20,6 +20,8 @@
 import com.mes.bigstoragetask.service.BigStorageCageOutTaskService;
 import com.mes.common.S7object;
 import com.mes.common.config.Const;
+import com.mes.damage.entity.Damage;
+import com.mes.damage.service.DamageService;
 import com.mes.device.PlcParameterObject;
 import com.mes.edgglasstask.entity.EdgGlassTaskInfo;
 import com.mes.edgglasstask.service.EdgGlassTaskInfoService;
@@ -60,6 +62,8 @@
     private EdgGlassTaskInfoService edgGlassTaskInfoService;
     @Resource
     private TemperingGlassInfoService temperingGlassInfoService;
+    @Resource
+    private DamageService damageService;
 
     private static final String REQUEST_WORD = "1";
 
@@ -78,11 +82,13 @@
     @Value("${mes.outCarMaxSize}")
     private Integer outCarMaxSize;
 
-    @Value("${mes.galssGap}")
-    private Integer galssGap;
+    @Value("${mes.glassGap}")
+    private Integer glassGap;
 
     @Scheduled(fixedDelay = 300)
     public void plcToHomeEdgScan() {
+        Date startDate = new Date();
+        log.info("澶х悊鐗囩鎵爜浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate);
         PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
         String d01Id = plcParameterObject.getPlcParameter("D01ID").getValue();
         String d04Id = plcParameterObject.getPlcParameter("D04ID").getValue();
@@ -90,16 +96,15 @@
         String d02State = plcParameterObject.getPlcParameter("D02ID").getValue();
         String d03State = plcParameterObject.getPlcParameter("D03State").getValue();
         String d05State = plcParameterObject.getPlcParameter("D05State").getValue();
+        String mesD01Value = plcParameterObject.getPlcParameter("MESToD01").getValue();
+        String mesD04Value = plcParameterObject.getPlcParameter("MESToD04").getValue();
         String mesD01Address = plcParameterObject.getPlcParameter("MESToD01").getAddress();
         String mesD04Address = plcParameterObject.getPlcParameter("MESToD04").getAddress();
         String d01ToMES = plcParameterObject.getPlcParameter("D01ToMES").getValue();
-        if (!REQUEST_WORD.equals(d01ToMES)) {
-            log.info("璇锋眰瀛椾负{}锛岀粨鏉熸湰娆℃壂鎻忚繘鍗ц浆绔嬩换鍔�", d01ToMES);
-            return;
-        }
+        String d04ToMES = plcParameterObject.getPlcParameter("D04ToMES").getValue();
 
-        log.info("1銆佽幏鍙杁01Id鎵弿ID涓猴細{};鑾峰彇d04Id鎵弿ID涓猴細{};", d01Id, d04Id);
-        if (StringUtils.isBlank(d01Id) && StringUtils.isBlank(d04Id)) {
+        log.info("1銆佽幏鍙杁01Id鎵弿ID涓猴細{}锛岃姹傚瓧涓簕};鑾峰彇d04Id鎵弿ID涓猴細{}锛岃姹傚瓧涓簕};", d01Id, d01ToMES, d04Id, d04ToMES);
+        if (StringUtils.isBlank(d01ToMES) && StringUtils.isBlank(d04ToMES)) {
             log.info("涓ゆ潯绾挎湭鏀跺埌杩涚墖浠诲姟锛岀粨鏉熸湰娆℃壂鎻忚繘鍗ц浆绔嬩换鍔�");
             return;
         }
@@ -107,43 +112,35 @@
             log.info("涓ゆ潯绾垮崸杞珛鍧囧湪鎵ц浠诲姟锛岀粨鏉熸湰娆℃壂鎻忚繘鍗ц浆绔嬩换鍔�");
             return;
         }
-//        Boolean flag01 = Boolean.FALSE;
-//        Boolean flag04 = Boolean.FALSE;
-        //鎸夌収绾胯矾鍙婄幓鐠僫d鑾峰彇鐩搁偦涓ゅ潡鐜荤拑 鍗ц浆绔嬩笂鐨勭幓鐠�
-        if (StringUtils.isNotBlank(d01Id) && (StringUtils.isBlank(d02State) || !REQUEST_WORD.equals(d03State))) {
+        //鎸夌収绾胯矾鍙婄幓鐠僫d鑾峰彇鐩搁偦涓ゅ潡鐜荤拑 鍗ц浆绔嬩笂鐨勭幓鐠�:  鐘舵�佷负0涓嶆搷浣滐紙D01閫佺墖锛�0涓嶆搷浣滐紝1鍏佽閫佺墖锛夛紝璇锋眰瀛椾负1锛� 锛�02鐜荤拑id涓虹┖鎴栬�呭崸杞珛鏈惎鍔級
+        if (!REQUEST_WORD.equals(mesD01Value) && REQUEST_WORD.equals(d01ToMES) && (StringUtils.isBlank(d02State) || !REQUEST_WORD.equals(d03State))) {
             judgeGlassTypeStatus(d01Id, Const.A09_OUT_TARGET_POSITION, mesD01Address);
         }
-        if (StringUtils.isNotBlank(d04Id) && !REQUEST_WORD.equals(d05State)) {
+//        鐘舵�佷负0涓嶆搷浣滐紙D01閫佺墖锛�0涓嶆搷浣滐紝1鍏佽閫佺墖锛夛紝璇锋眰瀛椾负1锛� 鍗ц浆绔嬫湭鍚姩
+        if (!REQUEST_WORD.equals(mesD04Value) && REQUEST_WORD.equals(d04ToMES) && !REQUEST_WORD.equals(d05State)) {
             judgeGlassTypeStatus(d04Id, Const.A10_OUT_TARGET_POSITION, mesD04Address);
         }
-        log.info("缁撴潫鎵爜浠诲姟");
-//        if (flag01 && flag04) {
-//            //姣旇緝鏈�鏃╀竴鐗囦换鍔$殑鐗堝浘id鍙婄増搴� 姹傚嚭鍗ц浆绔嬬殑绾胯矾
-//            Integer startLine = getStartLine();
-//            //璁$畻鐩爣鏍煎瓙锛屽彂閫佸惎鍔ㄤ换鍔�
-//            computeTargetByLine(startLine);
-//        } else if (flag01 || flag04) {
-//            Integer startLine = flag01.equals(Boolean.TRUE) ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION;
-//            //璁$畻鐩爣鏍煎瓙锛屽彂閫佸惎鍔ㄤ换鍔�
-//            computeTargetByLine(startLine);
-//        } else {
-//            log.info("涓ゆ潯绾挎湭鏀跺埌杩涚墖浠诲姟锛岀粨鏉熸湰娆℃壂鎻忚繘鍗ц浆绔嬩换鍔�");
-//        }
+        Date endDate = new Date();
+        log.info("澶х悊鐗囩鎵爜浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
     }
 
     @Scheduled(fixedDelay = 300)
     public void plcToHomeEdgFreeCarTask() {
+        Date startDate = new Date();
+        log.info("澶х悊鐗囩绌鸿溅杩涚墖浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate);
         PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
         String e01Status = plcParameterObject.getPlcParameter("E01State").getValue();
         String d03ToMES = plcParameterObject.getPlcParameter("D03ToMES").getValue();
         String d05ToMES = plcParameterObject.getPlcParameter("D05ToMES").getValue();
         log.info("鎵ц绌鸿溅閫佺墖浠诲姟锛岃幏鍙栧埌鐨勫ぇ杞︾姸鎬佷负{}锛屽崸杞珛鐘舵�佸垎鍒负d03:{}锛宒05:{}", e01Status, d03ToMES, d05ToMES);
         if (REQUEST_WORD.equals(e01Status)) {
-            log.info("杩涚墖澶ц溅闈炵┖闂诧紝缁撴潫閫佺墖浠诲姟");
+            Date endDate = new Date();
+            log.info("杩涚墖澶ц溅闈炵┖闂诧紝缁撴潫閫佺墖浠诲姟锛屼换鍔$粨鏉熸椂闂达細{}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
             return;
         }
         if (!REQUEST_WORD.equals(d03ToMES) && !REQUEST_WORD.equals(d05ToMES)) {
-            log.info("鍗ц浆绔嬫病鏈夐�佺墖璇锋眰锛岀粨鏉熼�佺墖浠诲姟");
+            Date endDate = new Date();
+            log.info("鍗ц浆绔嬫病鏈夐�佺墖璇锋眰锛岀粨鏉熼�佺墖浠诲姟锛屼换鍔$粨鏉熸椂闂达細{}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
             return;
         }
         LambdaQueryWrapper<BigStorageCageFeedTask> wrapper = new LambdaQueryWrapper<BigStorageCageFeedTask>()
@@ -154,14 +151,15 @@
         if (CollectionUtils.isNotEmpty(feedTaskList)) {
             if (feedTaskList.size() == 1) {
                 computeTargetByLine(feedTaskList.get(0).getLine());
-                return;
             } else {
                 //姣旇緝鏈�鏃╀竴鐗囦换鍔$殑鐗堝浘id鍙婄増搴� 姹傚嚭鍗ц浆绔嬬殑绾胯矾
                 Integer startLine = getStartLine();
 //            //璁$畻鐩爣鏍煎瓙锛屽彂閫佸惎鍔ㄤ换鍔�
                 computeTargetByLine(startLine);
-                return;
             }
+            Date endDate = new Date();
+            log.info("澶х悊鐗囩绌鸿溅杩涚墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
+            return;
         }
         String d01Id = plcParameterObject.getPlcParameter("D01ID").getValue();
         String d04Id = plcParameterObject.getPlcParameter("D04ID").getValue();
@@ -174,7 +172,8 @@
         //鑾峰彇涓ゆ潯绾垮崸杞珛鏄惁鏈夌幓鐠冿紝涓斾换鍔$姸鎬侀兘涓�2
         List<Integer> lineList = bigStorageCageFeedTaskService.querySitToUpGlass();
         if (CollectionUtils.isEmpty(lineList)) {
-            log.info("涓ゆ潯绾垮崸杞珛涓虹┖鎴栬�呮湁杩涚墖浠诲姟鏈畬鎴愶紝缁撴潫浠诲姟");
+            Date endDate = new Date();
+            log.info("涓ゆ潯绾垮崸杞珛涓虹┖鎴栬�呮湁杩涚墖浠诲姟鏈畬鎴愶紝缁撴潫浠诲姟锛屽ぇ鐞嗙墖绗肩┖杞﹁繘鐗囦换鍔$粨鏉熸椂闂达細{}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
             return;
         }
         Integer lineFirst = lineList.get(0);
@@ -191,6 +190,8 @@
                     computeTargetByLine(lineFirst);
                 }
             }
+            Date endDate = new Date();
+            log.info("澶х悊鐗囩绌鸿溅杩涚墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
             return;
         }
         //涓ゆ潯鍏堝潎鍙墽琛岃繘鐗囦换鍔★紝鍒ゆ柇涓ゆ潯绾挎槸鍚﹁繘鐗囪姹傛槸鍚﹂兘涓虹┖
@@ -199,6 +200,8 @@
             Integer line = getStartLine();
             //璁$畻浠诲姟琛ㄨ繘鐗囨牸瀛� 鍙戦�佽繘鐗囦换鍔�
             computeTargetByLine(line);
+            Date endDate = new Date();
+            log.info("澶х悊鐗囩绌鸿溅杩涚墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
             return;
         } else if (StringUtils.isNotBlank(d01Id) && StringUtils.isNotBlank(d04Id)) {
 //            todo:涓や釜閮芥湁杩涚墖鐜荤拑
@@ -212,6 +215,8 @@
             } else if (computeIsRun(Const.A10_OUT_TARGET_POSITION, d04Id)) {
                 computeTargetByLine(Const.A10_OUT_TARGET_POSITION);
             } else {
+                Date endDate = new Date();
+                log.info("澶х悊鐗囩绌鸿溅杩涚墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
                 return;
             }
         } else {
@@ -221,12 +226,16 @@
             //鑾峰彇杩涚墖璇锋眰鐜荤拑涓虹┖鐨勶紝璁$畻浠诲姟琛ㄨ繘鐗囨牸瀛� 鍙戦�佽繘鐗囦换鍔�
             computeTargetByLine(outLine);
         }
-
+        Date endDate = new Date();
+        log.info("澶х悊鐗囩绌鸿溅杩涚墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
     }
 
     @Scheduled(fixedDelay = 300)
     public void plcToHomeEdgOutTask() {
-
+        Date startDate = new Date();
+        log.info("澶х悊鐗囩绌鸿溅杩涚墖浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate);
+        PlcParameterObject plcMesObject = S7object.getinstance().PlcMesObject;
+        String mesToPLCAddress = plcMesObject.getPlcParameter("MESToPLC").getAddress();
         List<BigStorageCageOutTask> outingList = bigStorageCageOutTaskService.list(new LambdaQueryWrapper<BigStorageCageOutTask>().eq(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_NEW));
         Assert.isTrue(CollectionUtils.isEmpty(outingList), "鏈夋鍦ㄦ墽琛屽嚭鐗囩殑浠诲姟锛岀粨鏉熷綋鍓嶅嚭鐗囩嚎绋�");
 
@@ -239,32 +248,42 @@
                 .orderBy(Boolean.TRUE, sequenceOrder, TemperingGlassInfo::getTemperingFeedSequence));
         if (CollectionUtils.isNotEmpty(temperingGlassInfoList)) {
             log.info("鏈夋鍦ㄥ嚭鐗囩殑閽㈠寲浠诲姟");
-            computeOutGlassInfo(temperingGlassInfoList, Boolean.TRUE);
+            computeOutGlassInfo(temperingGlassInfoList, Boolean.TRUE, mesToPLCAddress);
+            Date endDate = new Date();
+            log.info("澶х悊鐗囩鍑虹墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
             return;
         }
         //鏄惁鏈変汉宸ヤ笅鐗囦换鍔�   鏈夌洿鎺ュ嚭
         List<BigStorageCageDetails> artificialList = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>()
                 .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_ARTIFICIAL).orderByDesc(BigStorageCageDetails::getWidth));
         if (CollectionUtils.isNotEmpty(artificialList)) {
-            computeOutGlassInfo(temperingGlassInfoList, Boolean.FALSE);
+            computeOutGlassInfo(artificialList, Boolean.FALSE, mesToPLCAddress);
+            Date endDate = new Date();
+            log.info("澶х悊鐗囩鍑虹墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
             return;
         }
         //閽㈠寲浼樺厛锛氳幏鍙栫悊鐗囩  鐜荤拑灏忕墖  鐮存崯琛� 鏁伴噺   鍒ゆ柇绗煎唴鐗堝浘鏄惁鍒伴綈
-        TemperingLayoutDTO temperingLayoutDTO = bigStorageCageDetailsService.temperingIsAll();
-        if (null != temperingLayoutDTO) {
-            //鐜荤拑鍒伴綈
+        List<TemperingLayoutDTO> temperingLayoutDTOList = bigStorageCageDetailsService.temperingIsAll();
+        if (CollectionUtils.isNotEmpty(temperingLayoutDTOList)) {
+            //鐜荤拑鍒伴綈鍖呮嫭宸插嚭鐗囩殑
             //鍒伴綈锛屽皢鐜荤拑灏忕墖鏁版嵁瀛樺叆閽㈠寲灏忕墖琛紝閫昏緫鐢熸垚鍑虹墖浠诲姟  缁撴潫
-            List<TemperingGlassInfo> temperingGlassInfos = glassInfoService.selectJoinList(TemperingGlassInfo.class, JoinWrappers.lambda(GlassInfo.class)
-                    .selectAll(GlassInfo.class)
-                    .select("-1 as state")
-                    .selectAs(BigStorageCageDetails::getSlot, TemperingGlassInfo::getSlot)
-                    .innerJoin(BigStorageCageDetails.class, BigStorageCageDetails::getGlassId, GlassInfo::getGlassId)
-                    .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)
-                    .eq(GlassInfo::getTemperingLayoutId, temperingLayoutDTO.getTemperingLayoutId())
-                    .eq(GlassInfo::getEngineerId, temperingLayoutDTO.getEngineerId()));
-            temperingGlassInfoService.saveBatch(temperingGlassInfos);
-            computeOutGlassInfo(temperingGlassInfoList, Boolean.TRUE);
-            return;
+            for (TemperingLayoutDTO item : temperingLayoutDTOList) {
+                List<TemperingGlassInfo> temperingGlassInfos = glassInfoService.selectJoinList(TemperingGlassInfo.class, JoinWrappers.lambda(GlassInfo.class)
+                        .selectAll(GlassInfo.class)
+                        .select("-1 as state")
+                        .selectAs(BigStorageCageDetails::getSlot, TemperingGlassInfo::getSlot)
+                        .innerJoin(BigStorageCageDetails.class, BigStorageCageDetails::getGlassId, GlassInfo::getGlassId)
+                        .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)
+                        .eq(GlassInfo::getTemperingLayoutId, item.getTemperingLayoutId())
+                        .eq(GlassInfo::getEngineerId, item.getEngineerId()));
+                if (CollectionUtils.isNotEmpty(temperingGlassInfos)) {
+                    temperingGlassInfoService.saveBatch(temperingGlassInfos);
+                    computeOutGlassInfo(temperingGlassInfoList, Boolean.TRUE, mesToPLCAddress);
+                    Date endDate = new Date();
+                    log.info("澶х悊鐗囩鍑虹墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
+                    return;
+                }
+            }
         }
         //鏈埌榻� 鎵ц鍐呴儴璋冨害浠诲姟
         TemperingLayoutDTO temperingOccupySlot = bigStorageCageDetailsService.queryTemperingOccupySlot();
@@ -273,7 +292,7 @@
             for (int i = 0; i < slotSequenceList.size() - 1; i++) {
                 SlotSequenceDTO first = slotSequenceList.get(i);
                 SlotSequenceDTO second = slotSequenceList.get(i + 1);
-                int slotWidth = carWidth - first.getRemainWidth() - galssGap;
+                int slotWidth = carWidth - first.getRemainWidth() - glassGap;
                 if (first.getMinSequence() == second.getMaxSequence() + 1
                         && second.getRemainWidth() > slotWidth) {
                     List<BigStorageCageDetails> list = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>()
@@ -281,12 +300,61 @@
                     List<BigStorageCageOutTask> outTasks = list.stream().map(e -> new BigStorageCageOutTask(e.getGlassId(), first.getSlot(), second.getSlot(),
                             slotWidth, 0, 0, 1)).collect(Collectors.toList());
                     bigStorageCageOutTaskService.saveBatch(outTasks);
+                    S7object.getinstance().plccontrol.writeWord(mesToPLCAddress, 1);
+                    log.info("宸插悜plc鍙戦�佸嚭鐗囦换鍔$‘璁わ紝鍦板潃涓猴細{}", mesToPLCAddress);
+                    Date endDate = new Date();
+                    log.info("澶х悊鐗囩鍑虹墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
                     return;
                 }
             }
         }
     }
 
+    /**
+     * 澶勭悊鐮存崯琛ㄤ换鍔�
+     */
+    @Scheduled(fixedDelay = 300)
+    public void dealDamageTask() {
+        Date startDate = new Date();
+        log.info("澶х悊鐗囩鐮存崯鐜荤拑娓呴櫎浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate);
+        //鑾峰彇杩涚墖浠诲姟琛ㄤ腑鐘舵�佷负鐮存崯鐨勬暟鎹�
+        List<BigStorageCageFeedTask> inDamageTaskInfoList = bigStorageCageFeedTaskService.list(new LambdaQueryWrapper<BigStorageCageFeedTask>()
+                .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_DAMAGE));
+        if (CollectionUtils.isNotEmpty(inDamageTaskInfoList)) {
+            bigStorageCageFeedTaskService.remove(new LambdaQueryWrapper<BigStorageCageFeedTask>().eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_DAMAGE));
+            //灏嗙牬鎹熶俊鎭柊澧炲叆鐮存崯琛�
+            for (BigStorageCageFeedTask bigStorageCageFeedTask : inDamageTaskInfoList) {
+                Damage damage = new Damage();
+                damage.setGlassId(bigStorageCageFeedTask.getGlassId());
+                damage.setLine(bigStorageCageFeedTask.getLine());
+                damage.setWorkingProcedure("鍐峰姞宸�");
+                damage.setRemark("杩涚鍓嶅崸杞珛");
+                damage.setStatus(2);
+                damageService.insertDamage(damage);
+            }
+        }
+        //鑾峰彇鍑虹墖浠诲姟琛ㄤ腑鐘舵�佷负鐮存崯鐨勬暟鎹�
+        List<BigStorageCageOutTask> outDamageTaskInfoList = bigStorageCageOutTaskService.list(new LambdaQueryWrapper<BigStorageCageOutTask>()
+                .eq(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_DAMAGE));
+        if (CollectionUtils.isNotEmpty(outDamageTaskInfoList)) {
+            bigStorageCageOutTaskService.remove(new LambdaQueryWrapper<BigStorageCageOutTask>().eq(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_IN_DAMAGE));
+            List<String> glassIdList = outDamageTaskInfoList.stream().map(BigStorageCageOutTask::getGlassId).collect(Collectors.toList());
+            temperingGlassInfoService.remove(new LambdaQueryWrapper<TemperingGlassInfo>().in(TemperingGlassInfo::getGlassId, glassIdList));
+            //灏嗙牬鎹熶俊鎭柊澧炲叆鐮存崯琛�
+            for (BigStorageCageOutTask bigStorageCageOutTask : outDamageTaskInfoList) {
+                Damage damage = new Damage();
+                damage.setGlassId(bigStorageCageOutTask.getGlassId());
+                damage.setLine(bigStorageCageOutTask.getEndSlot());
+                damage.setWorkingProcedure("鍐峰姞宸�");
+                damage.setRemark("鍑虹墖鍚庡崸杞珛");
+                damage.setStatus(2);
+                damageService.insertDamage(damage);
+            }
+        }
+        Date endDate = new Date();
+        log.info("澶х悊鐗囩鐮存崯鐜荤拑娓呴櫎浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
+        return;
+    }
 
     /**
      * 鎸夌収鐜荤拑id鍒ゆ柇鐜荤拑鐘舵�佸強鍗ц浆绔嬫槸鍚﹀彲鐩存帴鍚姩
@@ -312,28 +380,30 @@
 
         Boolean flag = Boolean.TRUE;
         //2銆佽幏鍙栧崸杞珛
-        Integer widthFirst = edgGlassTaskInfoList.get(0).getWidth();
+        Integer widthFirst = Math.max(edgGlassTaskInfoList.get(0).getWidth() / 10, edgGlassTaskInfoList.get(0).getHeight() / 10);
+        Integer heightFirst = Math.min(edgGlassTaskInfoList.get(0).getWidth() / 10, edgGlassTaskInfoList.get(0).getHeight() / 10);
         if (edgGlassTaskInfoList.size() == 1) {
             if (remainWidth >= widthFirst) {
-                if (glassCount <= 5) {
-                    addFeedTask(glassId, line, Const.BIG_STORAGE_IN_WAIT, widthFirst);
+                if (glassCount < inCarMaxSize) {
+                    addFeedTask(glassId, line, Const.BIG_STORAGE_IN_WAIT, widthFirst, heightFirst);
                 } else {
-                    addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst);
+                    addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst, heightFirst);
                 }
             } else {
                 flag = Boolean.FALSE;
             }
         } else {
-            Integer widthSecond = edgGlassTaskInfoList.get(1).getWidth();
+            Integer widthSecond = Math.max(edgGlassTaskInfoList.get(1).getWidth() / 10, edgGlassTaskInfoList.get(1).getHeight() / 10);
+            Integer heightSecond = Math.min(edgGlassTaskInfoList.get(1).getWidth() / 10, edgGlassTaskInfoList.get(1).getHeight() / 10);
             if (remainWidth >= widthFirst) {
-                if (remainWidth - widthFirst - galssGap >= widthSecond) {
-                    if (glassCount <= inCarMaxSize - 1) {
-                        addFeedTask(glassId, line, Const.BIG_STORAGE_IN_WAIT, widthFirst);
+                if (remainWidth - widthFirst - glassGap >= widthSecond) {
+                    if (glassCount < inCarMaxSize) {
+                        addFeedTask(glassId, line, Const.BIG_STORAGE_IN_WAIT, widthFirst, heightSecond);
                     } else {
-                        addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst);
+                        addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst, heightSecond);
                     }
                 } else {
-                    addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst);
+                    addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst, heightSecond);
                 }
             } else {
                 flag = Boolean.FALSE;
@@ -350,13 +420,14 @@
     /**
      * 娣诲姞浠诲姟淇℃伅
      */
-    private Boolean addFeedTask(String glassId, Integer line, Integer taskType, Integer width) {
+    private Boolean addFeedTask(String glassId, Integer line, Integer taskType, Integer width, Integer height) {
         BigStorageCageFeedTask bigStorageCageFeedTask = new BigStorageCageFeedTask();
         bigStorageCageFeedTask.setGlassId(glassId);
         bigStorageCageFeedTask.setTaskState(Const.BIG_STORAGE_IN_NEW);
         bigStorageCageFeedTask.setLine(line);
         bigStorageCageFeedTask.setTaskType(taskType);
         bigStorageCageFeedTask.setWidth(width);
+        bigStorageCageFeedTask.setHeight(height);
         bigStorageCageFeedTask.setCreateTime(new Date());
         return bigStorageCageFeedTaskService.save(bigStorageCageFeedTask);
     }
@@ -433,6 +504,7 @@
     }
 
     private void sendTaskListToPLC(List<BigStorageCageFeedTask> taskList, Integer line) {
+        log.info("閫佺墖浠诲姟鍙戦�佽繘鐗囩幓鐠冧俊鎭�");
         S7control s7control = S7object.getinstance().plccontrol;
         PlcParameterObject plcMesObject = S7object.getinstance().PlcMesObject;
         String mesD03Address = plcMesObject.getPlcParameter("MESToD03").getAddress();
@@ -443,10 +515,10 @@
             s7control.writeWord(plcMesObject.getPlcParameter("TargetAddToImport" + i).getAddress(), taskList.get(i - 1).getTargetSlot());
         }
         s7control.writeWord(outLine, 2);
-        log.info("閫佺墖浠诲姟宸插彂閫佸畬鎴愶紝浠诲姟绾胯矾涓猴細{}锛屽惎鍔ㄥ湴鍧�涓簕}", line, outLine);
+        log.info("閫佺墖浠诲姟宸插彂閫佸畬鎴愶紝浠诲姟绾胯矾涓猴細{}锛屽惎鍔ㄥ湴鍧�涓簕},纭瀛椾负{}", line, outLine, 2);
     }
 
-    private <T extends BigStorageCageBaseInfo> Boolean computeOutGlassInfo(List<T> list, Boolean isTempering) {
+    private <T extends BigStorageCageBaseInfo> Boolean computeOutGlassInfo(List<T> list, Boolean isTempering, String mesToPLCAddress) {
         //浠诲姟鏁版嵁  鑾峰彇杞﹀瓙瀛樻斁鐜荤拑鏈�澶ф暟閲�  鐜荤拑闂撮殧
         List<BigStorageCageOutTask> bigStorageCageOutTaskList = new ArrayList<>();
         //鎵撹溅鍓╀綑灏哄
@@ -455,7 +527,7 @@
             if (bigStorageCageOutTaskList.size() > outCarMaxSize || e.getWidth() > remainWidth) {
                 break;
             }
-            remainWidth = remainWidth - (int) e.getWidth() - galssGap;
+            remainWidth = remainWidth - (int) e.getWidth() - glassGap;
             if (isTempering) {
                 bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.TEMPERING_OUT_TARGET_POSITION,
                         (int) e.getWidth() * 10, 0, 0, 1));
@@ -475,6 +547,8 @@
                 .in(BigStorageCageDetails::getGlassId, glassIds));
         //鏇存柊绗煎瓙鍐呮牸瀛愮殑鍓╀綑灏哄
         updateSlotRemain(list, glassIds);
+        S7object.getinstance().plccontrol.writeWord(mesToPLCAddress, 1);
+        log.info("宸插悜plc鍙戦�佸嚭鐗囦换鍔$‘璁わ紝鍦板潃涓猴細{}", mesToPLCAddress);
         return Boolean.TRUE;
     }
 
@@ -490,7 +564,7 @@
         List<Integer> slotList = list.stream().map(T::getSlot).distinct().collect(Collectors.toList());
         //鑾峰彇寰呭嚭鍘荤殑鐜荤拑淇℃伅锛堢瓑涓嬭溅鍑哄幓鐨勭幓鐠冿級
         Map<Integer, Double> slotRemainMap = list.stream().filter(e -> !taskGlassIds.contains(e.getGlassId()))
-                .collect(Collectors.groupingBy(T::getSlot, Collectors.summingDouble(item -> item.getWidth() + galssGap)));
+                .collect(Collectors.groupingBy(T::getSlot, Collectors.summingDouble(item -> item.getWidth() + glassGap)));
         if (CollectionUtils.isNotEmpty(slotRemainMap)) {
             //鎸夌収鏍煎瓙鍙锋洿鏂板墿浣欏昂瀵�
             slotRemainMap.forEach((e, v) -> {
@@ -509,6 +583,9 @@
     public Boolean computeIsRun(int line, String glassId) {
         //鑾峰彇鍗ц浆绔嬪墿浣欏搴�
         BigStorageDTO sitToUpRemainWidth = bigStorageCageFeedTaskService.querySitToUpRemainWidth(line);
+        if (sitToUpRemainWidth.getGlassCount() == 0) {
+            return Boolean.FALSE;
+        }
         //鑾峰彇鐜荤拑淇℃伅
         GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId));
         return sitToUpRemainWidth.getWidth() < glassInfo.getWidth();
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java
index 82d885e..5468375 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java
@@ -61,6 +61,7 @@
 
     @Override
     public boolean saveBatch(List<TemperingGlassInfo> list) {
+        log.info("闇�瑕侀挗鍖栫殑鐜荤拑涓猴細{}", list);
         return baseMapper.saveBatch(list);
     }
 
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-cz.yml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-cz.yml
index 608a2ca..6dc9dfd 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-cz.yml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-cz.yml
@@ -14,10 +14,6 @@
           username: sa
           password: beibo.123/
           driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-        salve_hangzhoumes_1:
-          url: jdbc:sqlserver://192.168.20.24:1433;databasename=hangzhoumes
-          username: sa
-          password: beibo.123/
   cloud:
     nacos:
       discovery:
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-dev.yml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-dev.yml
index 23a3bb3..b4d7552 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-dev.yml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-dev.yml
@@ -14,10 +14,6 @@
           username: sa
           password: beibo.123/
           driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-        salve_hangzhoumes_1:
-          url: jdbc:sqlserver://127.0.0.1:1433;databasename=hangzhoumes
-          username: sa
-          password: beibo.123/
   cloud:
     nacos:
       discovery:
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-prod.yml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-prod.yml
index 3bac93d..25593bb 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-prod.yml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-prod.yml
@@ -14,11 +14,6 @@
           username: sa
           password: beibo.123/
           driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-        salve_hangzhoumes_1:
-          url: jdbc:sqlserver://10.153.19.150:1433;databasename=hangzhoumes
-          username: sa
-          password: beibo.123/
-          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
   cloud:
     nacos:
       discovery:
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
index 9fc2464..d4281e8 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
@@ -18,4 +18,4 @@
   slotWidth: 5000   #澶ц溅瀹藉害
   inCarMaxSize: 6     #杩涚墖澶ц溅鏈�澶у瓨鏀剧幓鐠冩暟閲�
   outCarMaxSize: 1     #鍑虹墖澶ц溅鏈�澶у瓨鏀剧幓鐠冩暟閲�
-  galssGap: 300      #鐜荤拑闂磋窛
\ No newline at end of file
+  glassGap: 300      #鐜荤拑闂磋窛
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
index a0f23bf..8306c6f 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
@@ -40,7 +40,7 @@
                              WHERE STATE in (100, 101, 102)
                              GROUP BY ENGINEER_ID, TEMPERING_LAYOUT_ID) T3 ON T2.ENGINEER_ID = T3.ENGINEER_ID
             AND T2.TEMPERING_LAYOUT_ID = T3.TEMPERING_LAYOUT_ID
-            AND T2.COUNT = T3.COUNT LIMIT 1
+            AND T2.COUNT = T3.COUNT
     </select>
 
     <select id="queryTemperingOccupySlot" resultMap="temperingLayoutDTO">
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageFeedTaskMapper.xml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageFeedTaskMapper.xml
index a0a5902..0a32e28 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageFeedTaskMapper.xml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageFeedTaskMapper.xml
@@ -21,11 +21,21 @@
         where t.total_count = t.real_count
     </select>
     <select id="querySitToUpRemainWidth" resultMap="bigStorageDTO">
-        SELECT cast(5000 - sum(width + 20) as INT) as REMAIN_WIDTH,
-               count(glass_id)                     as GLASS_COUNT
-        FROM big_storage_cage_feed_task
-        WHERE line = #{line}
-          AND task_state in (1, 2)
+        SELECT CAST
+                   (5000 - SUM(MAX_LENGTH + #{glassGap}) AS INT) AS REMAIN_WIDTH,
+               COUNT(GLASS_ID)                                   AS GLASS_COUNT
+        FROM (
+                 SELECT GLASS_ID,
+                        CASE
+
+                            WHEN WIDTH >= HEIGHT THEN
+                                WIDTH
+                            ELSE HEIGHT
+                            END MAX_LENGTH
+                 FROM BIG_STORAGE_CAGE_FEED_TASK
+                 WHERE LINE = #{line}
+                   AND TASK_STATE IN (1, 2)
+             ) T
     </select>
 
 </mapper>
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
index f9deff8..6e45b69 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
@@ -1,8 +1,12 @@
 package com.mes;
 
+import com.mes.bigstorage.entity.BigStorageCage;
 import com.mes.bigstorage.service.BigStorageCageDetailsService;
 import com.mes.bigstorage.service.BigStorageCageService;
+import com.mes.bigstoragetask.mapper.BigStorageCageFeedTaskMapper;
 import com.mes.common.config.Const;
+import com.mes.damage.entity.Damage;
+import com.mes.damage.service.DamageService;
 import com.mes.job.PlcStorageCageTask;
 import lombok.extern.slf4j.Slf4j;
 import org.junit.Test;
@@ -11,7 +15,9 @@
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.List;
 
 /**
  * @Author : zhoush
@@ -29,6 +35,69 @@
     PlcStorageCageTask plcStorageCageTask;
     @Autowired
     BigStorageCageDetailsService bigStorageCageDetailsService;
+    @Autowired
+    DamageService damageService;
+
+    @Autowired
+    BigStorageCageFeedTaskMapper bigStorageCageFeedTaskMapper;
+
+    @Test
+    public void testInsertSlot() {
+        List<BigStorageCage> list = new ArrayList();
+        for (int j = 1; j <= 5; j++) {
+            for (int i = 1 + (55 * (j - 1)); i <= 55 * j; i++) {
+                BigStorageCage cage = new BigStorageCage();
+                cage.setDeviceId(j);
+                cage.setSlot(i);
+                cage.setMinThickness(4);
+                cage.setMaxThickness(6);
+                cage.setEnableState(1);
+                cage.setRemainWidth(5000);
+                list.add(cage);
+            }
+        }
+        for (int i = 276; i <= 300; i++) {
+            BigStorageCage cage = new BigStorageCage();
+            cage.setDeviceId(6);
+            cage.setSlot(i);
+            cage.setMinThickness(8);
+            cage.setMaxThickness(12);
+            cage.setEnableState(1);
+            cage.setRemainWidth(5000);
+            list.add(cage);
+        }
+        for (int i = 301; i <= 330; i++) {
+            BigStorageCage cage = new BigStorageCage();
+            cage.setDeviceId(7);
+            cage.setSlot(i);
+            cage.setMinThickness(8);
+            cage.setMaxThickness(12);
+            cage.setEnableState(1);
+            cage.setRemainWidth(5000);
+            list.add(cage);
+        }
+        for (int i = 331; i <= 355; i++) {
+            BigStorageCage cage = new BigStorageCage();
+            cage.setDeviceId(8);
+            cage.setSlot(i);
+            cage.setMinThickness(8);
+            cage.setMaxThickness(12);
+            cage.setEnableState(1);
+            cage.setRemainWidth(5000);
+            list.add(cage);
+        }
+        for (int i = 356; i <= 380; i++) {
+            BigStorageCage cage = new BigStorageCage();
+            cage.setDeviceId(9);
+            cage.setSlot(i);
+            cage.setMinThickness(15);
+            cage.setMaxThickness(19);
+            cage.setEnableState(1);
+            cage.setRemainWidth(5000);
+            list.add(cage);
+        }
+        bigStorageCageService.saveBatch(list);
+    }
 
     @Test
     public void testFindPath() {
@@ -82,4 +151,14 @@
         log.info("鑾峰彇澶х悊鐗囩淇℃伅锛歿}", bigStorageCageDetailsService.selectBigStorageCageDetails("P24060403|3|6"));
     }
 
+    @Test
+    public void insertDamage() {
+        Damage damage=new Damage();
+        damage.setGlassId("P24060403|3|6");
+        damage.setLine(2001);
+        damage.setWorkingProcedure("鍐峰姞宸�");
+        damage.setRemark("");
+        damage.setStatus(2);
+        damageService.insertDamage(damage);
+    }
 }
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/pom.xml b/hangzhoumesParent/moduleService/GlassStorageModule/pom.xml
new file mode 100644
index 0000000..3b4c457
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/pom.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>moduleService</artifactId>
+        <groupId>com.mes</groupId>
+        <version>1.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>glassStorage</artifactId>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>5.2.4</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+            <version>2.8.9</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+
+</project>
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/GlassStorageApplication.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/GlassStorageApplication.java
new file mode 100644
index 0000000..1ac53de
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/GlassStorageApplication.java
@@ -0,0 +1,28 @@
+package com.mes;
+
+import lombok.extern.slf4j.Slf4j;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/4/7 14:36RRRR
+ * @Description:
+ */
+@Slf4j
+@SpringBootApplication
+@EnableSwagger2
+@EnableDiscoveryClient
+@MapperScan(basePackages = "com.mes.*.mapper")
+@EnableScheduling
+public class GlassStorageApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(GlassStorageApplication.class, args);
+    }
+
+}
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/controller/LoadPositionController.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/controller/LoadPositionController.java
new file mode 100644
index 0000000..ce8fea2
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/controller/LoadPositionController.java
@@ -0,0 +1,99 @@
+package com.mes.loadposition.controller;
+
+import com.mes.loadposition.entity.LoadPosition;
+import com.mes.loadposition.service.LoadPositionService;
+import com.mes.utils.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ *  
+ *
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+@RestController
+@RequestMapping("/api/loadPosition")
+@Api(tags = " 鎺у埗鍣�")
+public class LoadPositionController {
+
+    @Autowired
+    private LoadPositionService loadPositionService;
+
+    /**
+     * 鍒楄〃鏌ヨ
+     *
+     * @param params
+     * @return
+     */
+    @ApiOperation(value = "鍒楄〃鏌ヨ",notes = "鍒楄〃鏌ヨ",produces = "application/json")
+    @ApiResponses({@ApiResponse(code = 200, message = "鏌ヨ鎴愬姛")})
+    @PostMapping("/findList")
+    public Result findList(@RequestBody LoadPosition params) {
+        List<LoadPosition> result = loadPositionService.findList(params);
+        return Result.success(result);
+    }
+
+    /**
+     * 鏌ヨ
+     *
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "鏌ヨ", notes = "鏌ヨ璇︽儏")
+    @ApiResponses({@ApiResponse(code = 200, message = "鏌ヨ鎴愬姛")})
+    @GetMapping("/{id}")
+    public Result findById(@PathVariable("id") Long id) {
+        LoadPosition loadPosition = loadPositionService.getBaseMapper().selectById(id);
+        return Result.success(loadPosition);
+    }
+
+    /**
+     * 鏂板
+     *
+     * @param loadPosition
+     * @return
+     */
+    @ApiOperation(value = "鏂板", notes = "鏂板鏁版嵁")
+    @ApiResponses({@ApiResponse(code = 200, message = "鎿嶄綔鎴愬姛")})
+    @PostMapping
+    public Result insert( @RequestBody LoadPosition loadPosition) {
+        boolean result = loadPositionService.save(loadPosition);
+        return Result.success(result);
+    }
+
+    /**
+     * 淇敼
+     *
+     * @param loadPosition
+     * @return
+     */
+    @ApiOperation(value = "淇敼", notes = "淇敼鏁版嵁")
+    @ApiResponses({@ApiResponse(code = 200, message = "鎿嶄綔鎴愬姛")})
+    @PutMapping
+    public Result update( @RequestBody LoadPosition loadPosition) {
+        boolean result = loadPositionService.updateById(loadPosition);
+        return Result.success(result);
+    }
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "鍒犻櫎", notes = "鍒犻櫎鏁版嵁")
+    @DeleteMapping("/{id}")
+    public Result delete(@PathVariable("id") Long id) {
+        int result = loadPositionService.getBaseMapper().deleteById(id);
+        return Result.success(result);
+    }
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/entity/LoadPosition.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/entity/LoadPosition.java
new file mode 100644
index 0000000..494c66f
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/entity/LoadPosition.java
@@ -0,0 +1,77 @@
+package com.mes.loadposition.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.stereotype.Component;
+
+import java.io.Serializable;
+
+/**
+ *  
+ *
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+@Data
+@Component
+@EqualsAndHashCode(callSuper = false)
+@TableName("load_position")
+@ApiModel(value = "LoadPosition", description = " ")
+public class LoadPosition implements Serializable{
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     *   
+     */
+    @ApiModelProperty(" ")
+    private Long id;
+
+    /**
+     *  鏋跺瓙缂栧彿
+     */
+    @ApiModelProperty("鏋跺瓙缂栧彿")
+    private String number;
+
+    /**
+     *  鏈哄櫒缂栧彿
+     */
+    @ApiModelProperty("鏈哄櫒缂栧彿")
+    private Long machineId;
+
+    /**
+     *  鍚敤鏍囪
+     */
+    @ApiModelProperty("鍚敤鏍囪")
+    private String flag;
+
+    /**
+     *  宸ヤ綔鐘舵��
+     */
+    @ApiModelProperty("宸ヤ綔鐘舵��")
+    private String state;
+
+    /**
+     *  浠撳偍浠诲姟缂栧彿
+     */
+    @ApiModelProperty("浠撳偍浠诲姟缂栧彿")
+    private Long storageTaskId;
+
+    /**
+     *  涓婄墖浣嶇被鍨�
+     */
+    @ApiModelProperty("涓婄墖浣嶇被鍨�")
+    private Integer typeFlag;
+
+    /**
+     *  绾胯矾
+     */
+    @ApiModelProperty("绾胯矾")
+    private Integer routeGroup;
+
+
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.java
new file mode 100644
index 0000000..ab8c084
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.java
@@ -0,0 +1,16 @@
+package com.mes.loadposition.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mes.loadposition.entity.LoadPosition;
+
+/**
+ *  
+ *
+ * @author system
+ * @since 2024-07-09 14:51:27
+ *
+ */
+
+public interface LoadPositionMapper extends BaseMapper<LoadPosition> {
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.xml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.xml
new file mode 100644
index 0000000..5c46518
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/mapper/LoadPositionMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mes.mapper.LoadPositionMapper">
+
+</mapper>
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/service/LoadPositionService.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/service/LoadPositionService.java
new file mode 100644
index 0000000..a1df98c
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/service/LoadPositionService.java
@@ -0,0 +1,19 @@
+package com.mes.loadposition.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mes.loadposition.entity.LoadPosition;
+
+
+import java.util.List;
+
+/**
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+public interface LoadPositionService extends IService<LoadPosition> {
+
+    List<LoadPosition> findList(LoadPosition params);
+
+
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/service/impl/LoadPositionServiceImpl.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/service/impl/LoadPositionServiceImpl.java
new file mode 100644
index 0000000..92bae55
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/loadposition/service/impl/LoadPositionServiceImpl.java
@@ -0,0 +1,32 @@
+package com.mes.loadposition.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mes.loadposition.entity.LoadPosition;
+
+import com.mes.loadposition.service.LoadPositionService;
+import com.mes.loadposition.mapper.LoadPositionMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+@Service
+public class LoadPositionServiceImpl extends ServiceImpl<LoadPositionMapper, LoadPosition> implements LoadPositionService {
+
+    @Autowired
+    private LoadPositionMapper loadPositionMapper;
+
+    @Override
+    public List<LoadPosition> findList(LoadPosition params){
+        LambdaQueryWrapper<LoadPosition> query = Wrappers.lambdaQuery(LoadPosition.class);
+        return loadPositionMapper.selectList(query);
+    }
+
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/controller/RawUsageController.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/controller/RawUsageController.java
new file mode 100644
index 0000000..9f95757
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/controller/RawUsageController.java
@@ -0,0 +1,102 @@
+package com.mes.rawusage.controller;
+
+import com.mes.utils.Result;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.springframework.web.bind.annotation.*;
+import com.mes.rawusage.entity.RawUsage;
+import com.mes.rawusage.service.RawUsageService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import java.util.List;
+
+/**
+ *  
+ *
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+@RestController
+@RequestMapping("/api/rawUsage")
+@Api(tags = " 鎺у埗鍣�")
+public class RawUsageController {
+
+    @Autowired
+    private RawUsageService rawUsageService;
+
+    /**
+     * 鍒楄〃鏌ヨ
+     *
+     * @param params
+     * @return
+     */
+    @ApiOperation(value = "鍒楄〃鏌ヨ",notes = "鍒楄〃鏌ヨ",produces = "application/json")
+    @ApiResponses({@ApiResponse(code = 200, message = "鏌ヨ鎴愬姛")})
+    @PostMapping("/findList")
+    public Result findList(@RequestBody RawUsage params) {
+        List<RawUsage> result = rawUsageService.findList(params);
+        return Result.success(result);
+    }
+
+    /**
+     * 鏌ヨ
+     *
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "鏌ヨ", notes = "鏌ヨ璇︽儏")
+    @ApiResponses({@ApiResponse(code = 200, message = "鏌ヨ鎴愬姛")})
+    @GetMapping("/{id}")
+    public Result findById(@PathVariable("id") Long id) {
+        RawUsage rawUsage = rawUsageService.getById(id);
+        return Result.success(rawUsage);
+    }
+
+    /**
+     * 鏂板
+     *
+     * @param rawUsage
+     * @return
+     */
+    @ApiOperation(value = "鏂板", notes = "鏂板鏁版嵁")
+    @ApiResponses({@ApiResponse(code = 200, message = "鎿嶄綔鎴愬姛")})
+    @PostMapping
+    public Result insert( @RequestBody RawUsage rawUsage) {
+        boolean result = rawUsageService.save(rawUsage);
+        return Result.success(result);
+    }
+
+    /**
+     * 淇敼
+     *
+     * @param rawUsage
+     * @return
+     */
+    @ApiOperation(value = "淇敼", notes = "淇敼鏁版嵁")
+    @ApiResponses({@ApiResponse(code = 200, message = "鎿嶄綔鎴愬姛")})
+    @PutMapping
+    public Result update( @RequestBody RawUsage rawUsage) {
+        boolean result = rawUsageService.updateById(rawUsage);
+        return Result.success(result);
+    }
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "鍒犻櫎", notes = "鍒犻櫎鏁版嵁")
+    @DeleteMapping("/{id}")
+    public Result delete(@PathVariable("id") Long id) {
+        int result = rawUsageService.getBaseMapper().deleteById(id);
+        return Result.success(result);
+    }
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/entity/RawUsage.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/entity/RawUsage.java
new file mode 100644
index 0000000..4715716
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/entity/RawUsage.java
@@ -0,0 +1,107 @@
+package com.mes.rawusage.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.stereotype.Component;
+
+/**
+ *  
+ *
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+@Data
+@Component
+@EqualsAndHashCode(callSuper = false)
+@TableName("raw_usage")
+@ApiModel(value = "RawUsage", description = " ")
+public class RawUsage implements Serializable{
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     *   
+     */
+    @ApiModelProperty(" ")
+    private Long id;
+
+    /**
+     *  鐜荤拑绫诲瀷
+     */
+    @ApiModelProperty("鐜荤拑绫诲瀷")
+    private String rawType;
+
+    /**
+     *  瀹藉害
+     */
+    @ApiModelProperty("瀹藉害")
+    private Float rawWidth;
+
+    /**
+     *  楂樺害
+     */
+    @ApiModelProperty("楂樺害")
+    private Float rawHeight;
+
+    /**
+     *  鍘氬害
+     */
+    @ApiModelProperty("鍘氬害")
+    private Float rawThickness;
+
+    /**
+     *  鐘舵��
+     */
+    @ApiModelProperty("鐘舵��")
+    private String state;
+
+    /**
+     *  棰滆壊
+     */
+    @ApiModelProperty("棰滆壊")
+    private String color;
+
+    /**
+     *  鎬绘暟閲�
+     */
+    @ApiModelProperty("鎬绘暟閲�")
+    private Integer pieces;
+
+    /**
+     *  鍓╀綑鏁伴噺
+     */
+    @ApiModelProperty("鍓╀綑鏁伴噺")
+    private Integer leftPieces;
+
+    /**
+     *  鐗╂枡缂栫爜
+     */
+    @ApiModelProperty("鐗╂枡缂栫爜")
+    private String qrcode;
+
+    /**
+     *  鍒涘缓鏃堕棿
+     */
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    private Date createTime;
+
+    /**
+     *  鐢熶骇鏃ユ湡
+     */
+    @ApiModelProperty("鐢熶骇鏃ユ湡")
+    private Date productionTime;
+
+    /**
+     *  鎵规鍙�
+     */
+    @ApiModelProperty("鎵规鍙�")
+    private String batchId;
+
+
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.java
new file mode 100644
index 0000000..5eb15ee
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.java
@@ -0,0 +1,15 @@
+package com.mes.rawusage.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mes.rawusage.entity.RawUsage;
+/**
+ *  
+ *
+ * @author system
+ * @since 2024-07-09 14:51:27
+ *
+ */
+
+public interface RawUsageMapper extends BaseMapper<RawUsage> {
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.xml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.xml
new file mode 100644
index 0000000..e276227
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/mapper/RawUsageMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mes.rawusage.mapper.RawUsageMapper">
+
+</mapper>
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/service/RawUsageService.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/service/RawUsageService.java
new file mode 100644
index 0000000..dea687f
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/service/RawUsageService.java
@@ -0,0 +1,17 @@
+package com.mes.rawusage.service;
+
+import com.mes.rawusage.entity.RawUsage;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+/**
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+public interface RawUsageService extends IService<RawUsage> {
+
+    List<RawUsage> findList(RawUsage params);
+
+
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/service/impl/RawUsageServiceImpl.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/service/impl/RawUsageServiceImpl.java
new file mode 100644
index 0000000..108908d
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawusage/service/impl/RawUsageServiceImpl.java
@@ -0,0 +1,31 @@
+package com.mes.rawusage.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mes.rawusage.mapper.RawUsageMapper;
+import com.mes.rawusage.entity.RawUsage;
+import com.mes.rawusage.service.RawUsageService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.util.List;
+
+/**
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+@Service
+public class RawUsageServiceImpl extends ServiceImpl<RawUsageMapper, RawUsage> implements RawUsageService {
+
+    @Autowired
+    private RawUsageMapper rawUsageMapper;
+
+    @Override
+    public List<RawUsage> findList(RawUsage params){
+        LambdaQueryWrapper<RawUsage> query = Wrappers.lambdaQuery(RawUsage.class);
+        return rawUsageMapper.selectList(query);
+    }
+
+
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/controller/ShelfRackController.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/controller/ShelfRackController.java
new file mode 100644
index 0000000..f1bda86
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/controller/ShelfRackController.java
@@ -0,0 +1,102 @@
+package com.mes.shelfrack.controller;
+
+import com.mes.utils.Result;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.springframework.web.bind.annotation.*;
+import com.mes.shelfrack.entity.ShelfRack;
+import com.mes.shelfrack.service.ShelfRackService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import java.util.List;
+
+/**
+ *  
+ *
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+@RestController
+@RequestMapping("/api/shelfRack")
+@Api(tags = " 鎺у埗鍣�")
+public class ShelfRackController {
+
+    @Autowired
+    private ShelfRackService shelfRackService;
+
+    /**
+     * 鍒楄〃鏌ヨ
+     *
+     * @param params
+     * @return
+     */
+    @ApiOperation(value = "鍒楄〃鏌ヨ",notes = "鍒楄〃鏌ヨ",produces = "application/json")
+    @ApiResponses({@ApiResponse(code = 200, message = "鏌ヨ鎴愬姛")})
+    @PostMapping("/findList")
+    public Result findList(@RequestBody ShelfRack params) {
+        List<ShelfRack> result = shelfRackService.findList(params);
+        return Result.success(result);
+    }
+
+    /**
+     * 鏌ヨ
+     *
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "鏌ヨ", notes = "鏌ヨ璇︽儏")
+    @ApiResponses({@ApiResponse(code = 200, message = "鏌ヨ鎴愬姛")})
+    @GetMapping("/{id}")
+    public Result findById(@PathVariable("id") Long id) {
+        ShelfRack shelfRack = shelfRackService.getBaseMapper().selectById(id);
+        return Result.success(shelfRack);
+    }
+
+    /**
+     * 鏂板
+     *
+     * @param shelfRack
+     * @return
+     */
+    @ApiOperation(value = "鏂板", notes = "鏂板鏁版嵁")
+    @ApiResponses({@ApiResponse(code = 200, message = "鎿嶄綔鎴愬姛")})
+    @PostMapping
+    public Result insert( @RequestBody ShelfRack shelfRack) {
+        boolean result = shelfRackService.save(shelfRack);
+        return Result.success(result);
+    }
+
+    /**
+     * 淇敼
+     *
+     * @param shelfRack
+     * @return
+     */
+    @ApiOperation(value = "淇敼", notes = "淇敼鏁版嵁")
+    @ApiResponses({@ApiResponse(code = 200, message = "鎿嶄綔鎴愬姛")})
+    @PutMapping
+    public Result update( @RequestBody ShelfRack shelfRack) {
+        boolean result = shelfRackService.updateById(shelfRack);
+        return Result.success(result);
+    }
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "鍒犻櫎", notes = "鍒犻櫎鏁版嵁")
+    @DeleteMapping("/{id}")
+    public Result delete(@PathVariable("id") Long id) {
+        int result = shelfRackService.getBaseMapper().deleteById(id);
+        return Result.success(result);
+    }
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/entity/ShelfRack.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/entity/ShelfRack.java
new file mode 100644
index 0000000..b980e3f
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/entity/ShelfRack.java
@@ -0,0 +1,65 @@
+package com.mes.shelfrack.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.stereotype.Component;
+
+/**
+ *  
+ *
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+@Data
+@Component
+@EqualsAndHashCode(callSuper = false)
+@TableName("shelf_rack")
+@ApiModel(value = "ShelfRack", description = " ")
+public class ShelfRack implements Serializable{
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     *   
+     */
+    @ApiModelProperty(" ")
+    private Long id;
+
+    /**
+     *  鏋跺瓙缂栧彿
+     */
+    @ApiModelProperty("鏋跺瓙缂栧彿")
+    private String number;
+
+    /**
+     *  宸ヤ綔鐘舵��
+     */
+    @ApiModelProperty("宸ヤ綔鐘舵��")
+    private String state;
+
+    /**
+     *  鍖呭彿缂栧彿
+     */
+    @ApiModelProperty("鍖呭彿缂栧彿")
+    private Long rawPackageId;
+
+    /**
+     *  淇敼鏃堕棿
+     */
+    @ApiModelProperty("淇敼鏃堕棿")
+    private Date modTime;
+
+    /**
+     *  鍚敤鐘舵��
+     */
+    @ApiModelProperty("鍚敤鐘舵��")
+    private String enableState;
+
+
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.java
new file mode 100644
index 0000000..fc31d55
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.java
@@ -0,0 +1,15 @@
+package com.mes.shelfrack.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mes.shelfrack.entity.ShelfRack;
+/**
+ *  
+ *
+ * @author system
+ * @since 2024-07-09 14:51:27
+ *
+ */
+
+public interface ShelfRackMapper extends BaseMapper<ShelfRack> {
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.xml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.xml
new file mode 100644
index 0000000..719ef59
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/mapper/ShelfRackMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mes.shelfrack.mapper.ShelfRackMapper">
+
+</mapper>
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/ShelfRackService.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/ShelfRackService.java
new file mode 100644
index 0000000..d66b35e
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/ShelfRackService.java
@@ -0,0 +1,17 @@
+package com.mes.shelfrack.service;
+
+import com.mes.shelfrack.entity.ShelfRack;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+/**
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+public interface ShelfRackService extends IService<ShelfRack> {
+
+    List<ShelfRack> findList(ShelfRack params);
+
+
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/impl/ShelfRackServiceImpl.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/impl/ShelfRackServiceImpl.java
new file mode 100644
index 0000000..6c134c8
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/shelfrack/service/impl/ShelfRackServiceImpl.java
@@ -0,0 +1,31 @@
+package com.mes.shelfrack.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mes.shelfrack.mapper.ShelfRackMapper;
+import com.mes.shelfrack.entity.ShelfRack;
+import com.mes.shelfrack.service.ShelfRackService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.util.List;
+
+/**
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+@Service
+public class ShelfRackServiceImpl extends ServiceImpl<ShelfRackMapper, ShelfRack> implements ShelfRackService {
+
+    @Autowired
+    private ShelfRackMapper shelfRackMapper;
+
+    @Override
+    public List<ShelfRack> findList(ShelfRack params){
+        LambdaQueryWrapper<ShelfRack> query = Wrappers.lambdaQuery(ShelfRack.class);
+        return shelfRackMapper.selectList(query);
+    }
+
+
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/controller/StorageTaskController.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/controller/StorageTaskController.java
new file mode 100644
index 0000000..88b1494
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/controller/StorageTaskController.java
@@ -0,0 +1,102 @@
+package com.mes.storagetask.controller;
+
+import com.mes.utils.Result;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.springframework.web.bind.annotation.*;
+import com.mes.storagetask.entity.StorageTask;
+import com.mes.storagetask.service.StorageTaskService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import java.util.List;
+
+/**
+ *  
+ *
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+@RestController
+@RequestMapping("/api/storageTask")
+@Api(tags = " 鎺у埗鍣�")
+public class StorageTaskController {
+
+    @Autowired
+    private StorageTaskService storageTaskService;
+
+    /**
+     * 鍒楄〃鏌ヨ
+     *
+     * @param params
+     * @return
+     */
+    @ApiOperation(value = "鍒楄〃鏌ヨ",notes = "鍒楄〃鏌ヨ",produces = "application/json")
+    @ApiResponses({@ApiResponse(code = 200, message = "鏌ヨ鎴愬姛")})
+    @PostMapping("/findList")
+    public Result findList(@RequestBody StorageTask params) {
+        List<StorageTask> result = storageTaskService.findList(params);
+        return Result.success(result);
+    }
+
+    /**
+     * 鏌ヨ
+     *
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "鏌ヨ", notes = "鏌ヨ璇︽儏")
+    @ApiResponses({@ApiResponse(code = 200, message = "鏌ヨ鎴愬姛")})
+    @GetMapping("/{id}")
+    public Result findById(@PathVariable("id") Long id) {
+        StorageTask storageTask = storageTaskService.getBaseMapper().selectById(id);
+        return Result.success(storageTask);
+    }
+
+    /**
+     * 鏂板
+     *
+     * @param storageTask
+     * @return
+     */
+    @ApiOperation(value = "鏂板", notes = "鏂板鏁版嵁")
+    @ApiResponses({@ApiResponse(code = 200, message = "鎿嶄綔鎴愬姛")})
+    @PostMapping
+    public Result insert( @RequestBody StorageTask storageTask) {
+        boolean result = storageTaskService.save(storageTask);
+        return Result.success(result);
+    }
+
+    /**
+     * 淇敼
+     *
+     * @param storageTask
+     * @return
+     */
+    @ApiOperation(value = "淇敼", notes = "淇敼鏁版嵁")
+    @ApiResponses({@ApiResponse(code = 200, message = "鎿嶄綔鎴愬姛")})
+    @PutMapping
+    public Result update( @RequestBody StorageTask storageTask) {
+        boolean result = storageTaskService.updateById(storageTask);
+        return Result.success(result);
+    }
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "鍒犻櫎", notes = "鍒犻櫎鏁版嵁")
+    @DeleteMapping("/{id}")
+    public Result delete(@PathVariable("id") Long id) {
+        int result = storageTaskService.getBaseMapper().deleteById(id);
+        return Result.success(result);
+    }
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/entity/StorageTask.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/entity/StorageTask.java
new file mode 100644
index 0000000..612f8e3
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/entity/StorageTask.java
@@ -0,0 +1,77 @@
+package com.mes.storagetask.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.stereotype.Component;
+
+/**
+ *  
+ *
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+@Data
+@Component
+@EqualsAndHashCode(callSuper = false)
+@TableName("storage_task")
+@ApiModel(value = "StorageTask", description = " ")
+public class StorageTask implements Serializable{
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     *   
+     */
+    @ApiModelProperty(" ")
+    private Long id;
+
+    /**
+     *  浠诲姟绫诲瀷
+     */
+    @ApiModelProperty("浠诲姟绫诲瀷")
+    private String taskType;
+
+    /**
+     *  宸ヤ綔鐘舵��
+     */
+    @ApiModelProperty("宸ヤ綔鐘舵��")
+    private String taskState;
+
+    /**
+     *  浠撳偍鏋跺彿
+     */
+    @ApiModelProperty("浠撳偍鏋跺彿")
+    private String shelfRack;
+
+    /**
+     *  涓婄墖浣嶇紪鍙�
+     */
+    @ApiModelProperty("涓婄墖浣嶇紪鍙�")
+    private String loadRack;
+
+    /**
+     *  绾胯矾
+     */
+    @ApiModelProperty("绾胯矾")
+    private Integer routeGroup;
+
+    /**
+     *  鍒涘缓鏃堕棿
+     */
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    private Date startTime;
+
+    /**
+     *  瀹屾垚鏃堕棿
+     */
+    @ApiModelProperty("瀹屾垚鏃堕棿")
+    private Date finishTime;
+
+
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.java
new file mode 100644
index 0000000..4d99c52
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.java
@@ -0,0 +1,15 @@
+package com.mes.storagetask.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mes.storagetask.entity.StorageTask;
+/**
+ *  
+ *
+ * @author system
+ * @since 2024-07-09 14:51:27
+ *
+ */
+
+public interface StorageTaskMapper extends BaseMapper<StorageTask> {
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.xml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.xml
new file mode 100644
index 0000000..69ad537
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/mapper/StorageTaskMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mes.storagetask.mapper.StorageTaskMapper">
+
+</mapper>
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/StorageTaskService.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/StorageTaskService.java
new file mode 100644
index 0000000..e774319
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/StorageTaskService.java
@@ -0,0 +1,16 @@
+package com.mes.storagetask.service;
+
+import com.mes.storagetask.entity.StorageTask;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+/**
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+public interface StorageTaskService extends IService<StorageTask> {
+
+    List<StorageTask> findList(StorageTask params);
+
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/impl/StorageTaskServiceImpl.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/impl/StorageTaskServiceImpl.java
new file mode 100644
index 0000000..8709da5
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/storagetask/service/impl/StorageTaskServiceImpl.java
@@ -0,0 +1,31 @@
+package com.mes.storagetask.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mes.storagetask.mapper.StorageTaskMapper;
+import com.mes.storagetask.entity.StorageTask;
+import com.mes.storagetask.service.StorageTaskService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.util.List;
+
+/**
+ * @author system
+ * @since 2024-07-09 14:51:27
+ */
+@Service
+public class StorageTaskServiceImpl extends ServiceImpl<StorageTaskMapper, StorageTask> implements StorageTaskService {
+
+    @Autowired
+    private StorageTaskMapper storageTaskMapper;
+
+    @Override
+    public List<StorageTask> findList(StorageTask params){
+        LambdaQueryWrapper<StorageTask> query = Wrappers.lambdaQuery(StorageTask.class);
+        return storageTaskMapper.selectList(query);
+    }
+
+
+
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-dev.yml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..3097382
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-dev.yml
@@ -0,0 +1,25 @@
+spring:
+  datasource:
+    dynamic:
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
+      datasource:
+        hangzhoumes:
+          url: jdbc:mysql://127.0.0.1:3306/hangzhoumes?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        salve_hangzhoumes:
+          url: jdbc:sqlserver://127.0.0.1:1433;databasename=hangzhoumes
+          username: sa
+          password: beibo.123/
+          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 127.0.0.1:8848
+  redis:
+    database: 0
+    host: 127.0.0.1
+    port: 6379
+    password: 123456
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-prod.yml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-prod.yml
new file mode 100644
index 0000000..0c3ff07
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-prod.yml
@@ -0,0 +1,30 @@
+spring:
+  datasource:
+    dynamic:
+      primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
+      datasource:
+        hangzhoumes:
+          url: jdbc:mysql://127.0.0.1:3306/hangzhoumes?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        salve_hangzhoumes:
+          url: jdbc:sqlserver://10.153.19.150:1433;databasename=hangzhoumes
+          username: sa
+          password: beibo.123/
+          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+        pp:
+          url: jdbc:mysql://10.153.19.150:3306/pp?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 10.153.19.150:8848
+  redis:
+    database: 0
+    host: 10.153.19.150
+    port: 6379
+    password: 123456
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application.yml
new file mode 100644
index 0000000..5a26257
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application.yml
@@ -0,0 +1,16 @@
+server:
+  port: 8086
+
+spring:
+  profiles:
+    active: prod
+  application:
+    name: glassStorage
+
+
+mybatis-plus:
+  mapper-locations: classpath*:mapper/*.xml
+  configuration:
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+
+
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-cz.yml b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-cz.yml
index 1d19003..a3fcabe 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-cz.yml
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-cz.yml
@@ -15,10 +15,10 @@
           password: beibo.123/
           driver-class-name: com.mysql.cj.jdbc.Driver
         sd:
-            url: jdbc:mysql://192.168.1.199:3306/sd?serverTimezone=GMT%2b8
-            username: root
-            password: beibo.123/
-            driver-class-name: com.mysql.cj.jdbc.Driver
+          url: jdbc:mysql://192.168.1.199:3306/sd?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
   cloud:
     nacos:
       discovery:
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-prod.yml b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-prod.yml
index a218f03..c5a981e 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-prod.yml
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-prod.yml
@@ -15,10 +15,10 @@
           password: beibo.123/
           driver-class-name: com.mysql.cj.jdbc.Driver
         sd:
-            url: jdbc:mysql://10.153.19.150:3306/sd?serverTimezone=GMT%2b8
-            username: root
-            password: beibo.123/
-            driver-class-name: com.mysql.cj.jdbc.Driver
+          url: jdbc:mysql://10.153.19.150:3306/sd?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
   cloud:
     nacos:
       discovery:
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-cz.yml b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-cz.yml
index 870e2c8..34f72c9 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-cz.yml
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-cz.yml
@@ -14,6 +14,16 @@
           username: sa
           password: beibo.123/
           driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+        pp:
+          url: jdbc:mysql://192.168.1.199:3306/pp?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        sd:
+          url: jdbc:mysql://192.168.1.199:3306/sd?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
   cloud:
     nacos:
       discovery:
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-dev.yml b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-dev.yml
index 7a1a916..18d4c7e 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-dev.yml
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-dev.yml
@@ -4,23 +4,13 @@
       primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
       strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
       datasource:
-#        hangzhoumes:
-#          url: jdbc:mysql://127.0.0.1:3306/hangzhoumes?serverTimezone=GMT%2b8
-#          username: root
-#          password: beibo.123/
-#          driver-class-name: com.mysql.cj.jdbc.Driver
-#        salve_hangzhoumes:
-#          url: jdbc:sqlserver://127.0.0.1:1433;databasename=hangzhoumes
-#          username: sa
-#          password: beibo.123/
-#          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
         hangzhoumes:
-          url: jdbc:mysql:10.153.19.150:3306/hangzhoumes?serverTimezone=GMT%2b8
+          url: jdbc:mysql://127.0.0.1:3306/hangzhoumes?serverTimezone=GMT%2b8
           username: root
           password: beibo.123/
           driver-class-name: com.mysql.cj.jdbc.Driver
         salve_hangzhoumes:
-          url: jdbc:sqlserver://10.153.19.150:1433;databasename=hangzhoumes
+          url: jdbc:sqlserver://127.0.0.1:1433;databasename=hangzhoumes
           username: sa
           password: beibo.123/
           driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-prod.yml b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-prod.yml
index d00e665..3fc6fbb 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-prod.yml
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-prod.yml
@@ -9,7 +9,6 @@
           username: root
           password: beibo.123/
           driver-class-name: com.mysql.cj.jdbc.Driver
-
         salve_hangzhoumes:
             url: jdbc:sqlserver://10.153.19.150:1433;databasename=hangzhoumes
             username: sa
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
index 670d12c..dd753b9 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/S7object.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/S7object.java
@@ -52,7 +52,9 @@
             }
 
             byte[] getplcvlues = plccontrol.readByte(PlcMesObject.getPlcAddressBegin(), PlcMesObject.getPlcAddressLength());
-            PlcMesObject.setPlcParameterList(getplcvlues);
+            if (getplcvlues != null) {
+                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 d14ded1..e2da1a1 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
@@ -47,7 +47,7 @@
     /**
      * 浠诲姟绫诲瀷 1:杩�   2锛氬嚭
      */
-    private String taskType;
+    private Integer taskType;
 
     /**
      * 瀹�
@@ -81,7 +81,7 @@
     /**
      * 浠诲姟鐘舵�� 0 鏈紑濮�  1姝e湪杩涜   2瀹屾垚
      */
-    private Integer taskStauts;
+    private Integer taskStatus;
 
     /**
      * 鍒涘缓鏃堕棿
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java
index fac40d1..1a6ba68 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java
@@ -10,11 +10,28 @@
 
 @Repository
 public interface DownGlassInfoMapper extends BaseMapper<DownGlassInfo> {
-
-
+    /**
+     * 鎸夋祦绋嬪崱鏌ヨ钀芥灦鏁伴噺鏈�澶氱殑娴佺▼鍗″強灞傛暟
+     *
+     * @param flowCardId
+     * @return
+     */
     DownGlassInfoDTO queryDownGlassMaxLayer(@Param(value = "flowCardId") String flowCardId);
 
+    /**
+     * 鏌ヨ娴佺▼鍗℃寚瀹氬眰鏁伴渶瑕佽惤鏋剁殑娆″簭
+     *
+     * @param flowCardId
+     * @param layer
+     * @return
+     */
     Integer queryMaxSequence(@Param(value = "flowCardId") String flowCardId, @Param(value = "layer") int layer);
 
+    /**
+     * 鑾峰彇钀芥灦鐜荤拑淇℃伅锛屽寘鎷凡缁戝畾娴佺▼鍗°�佸眰鏁版湭钀芥灦鐨勭幓鐠冧俊鎭�
+     *
+     * @param isDownload 鏄惁鑾峰彇鏈惤鏋剁幓鐠冧俊鎭�  True 宸茶惤鏋�  false 鏈惤鏋�
+     * @return
+     */
     List<DownGlassInfoDTO> queryWorkStationIsIn(@Param(value = "isDownload") Boolean isDownload);
 }
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 c66855e..17f9ba1 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
@@ -7,16 +7,15 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.mes.downglassinfo.entity.DownGlassInfo;
 import com.mes.downglassinfo.entity.DownGlassTask;
-import com.mes.downglassinfo.mapper.DownGlassInfoMapper;
 import com.mes.downglassinfo.mapper.DownGlassTaskMapper;
 import com.mes.downglassinfo.service.DownGlassInfoService;
 import com.mes.downglassinfo.service.DownGlassTaskService;
-import com.mes.downworkstation.entity.DownWorkstation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -36,7 +35,7 @@
     @Autowired
     private DownGlassInfoService downGlassInfoService; // MySQL Mapper
 
-    @Autowired
+    @Resource
     private DownGlassTaskMapper downGlassTaskMapper; // SQL Server Mapper
 
     @Override
@@ -47,7 +46,7 @@
 
         // Step 2: 浠� SQL Server 涓繃婊ゆ帀杩欎簺鐜荤拑 ID 骞舵煡璇换鍔�
         QueryWrapper<DownGlassTask> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("task_stauts", 1)
+        queryWrapper.eq("task_status", 1)
                 .and(qw -> qw.eq("task_type", 2).or().eq("task_type", 3));
 
         List<DownGlassInfo> excludedGlassIds = downGlassInfoService.list();
@@ -63,7 +62,7 @@
     @Override
     public void updateTaskState(String id) {
         UpdateWrapper<DownGlassTask> updateWrapper = new UpdateWrapper<>();
-        updateWrapper.set("task_stauts", 2).eq("id", id);
+        updateWrapper.set("task_status", 2).eq("id", id);
         baseMapper.update(new DownGlassTask(), updateWrapper);
     }
 
@@ -99,7 +98,7 @@
         // 濡傛灉涓婚敭鍊间笉瀛樺湪锛屽垯杩涜鎻掑叆鎿嶄綔
         DownGlassTask newDownGlassTask = new DownGlassTask();
         BeanUtils.copyProperties(downGlassTask, newDownGlassTask);
-        newDownGlassTask.setTaskStauts(1); // 榛樿浠诲姟鐘舵�佷负1
+        newDownGlassTask.setTaskStatus(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/mapper/DownStorageCageDetailsMapper.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java
index 327b48e..50991e4 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java
@@ -2,7 +2,6 @@
 
 import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.downstorage.entity.DownStorageCageDetails;
-import org.apache.ibatis.annotations.Mapper;
 
 /**
  * <p>
@@ -12,7 +11,7 @@
  * @author zhoush
  * @since 2024-03-27
  */
-@Mapper
+
 public interface DownStorageCageDetailsMapper extends MPJBaseMapper<DownStorageCageDetails> {
 
     DownStorageCageDetails getGlassInfoMaxCount();
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 29c215b..a5a3a3c 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
@@ -71,7 +71,7 @@
      */
     boolean DirectConnection(GlassInfo glassInfo);
 
-    DownStorageCageDetails getGlassInfoMaxCount();
+    String getGlassInfoMaxCount(String glassId);
 
     /**
      * @param glassId
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 0332552..5281217 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
@@ -19,9 +19,9 @@
  */
 public interface DownStorageCageService extends MPJBaseService<DownStorageCage> {
 
-    DownGlassTask createDownGlassTask(GlassInfo glassInfo, Integer startCell, Integer endCell, String taskType);
+    DownGlassTask createDownGlassTask(GlassInfo glassInfo, Integer startCell, Integer endCell, Integer taskType);
 
-    DownGlassTask createDownGlassTask(DownStorageCageDetails glassInfo, Integer startCell, Integer endCell, String taskType);
+    DownGlassTask createDownGlassTask(DownStorageCageDetails glassInfo, Integer startCell, Integer endCell, Integer taskType);
     //    List<Map<String, Object>> selectCacheLeisure();
 
 
@@ -52,12 +52,7 @@
      */
     List<Map<String, Object>> selectDownStorageCages();
 
-
-    /**
-     * @return 鏌ヨ缂撳瓨涓渶澶氱殑娴佺▼鍗�
-     */
     List<DownStorageCageDetails> selectCacheMax();
-
 }
 
 
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 1b3d559..027a0a0 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
@@ -3,19 +3,14 @@
 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.MPJLambdaQueryWrapper;
-import com.github.yulichang.query.MPJQueryWrapper;
-
-
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-
+import com.github.yulichang.query.MPJLambdaQueryWrapper;
 import com.github.yulichang.toolkit.JoinWrappers;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.mes.common.config.Const;
 import com.mes.downstorage.entity.DownStorageCage;
 import com.mes.downstorage.entity.DownStorageCageDetails;
 import com.mes.downstorage.mapper.DownStorageCageDetailsMapper;
-
 import com.mes.downstorage.mapper.DownStorageCageMapper;
 import com.mes.downstorage.service.DownStorageCageDetailsService;
 import com.mes.downworkstation.entity.DownWorkstation;
@@ -198,8 +193,9 @@
     }
 
     @Override
-    public DownStorageCageDetails getGlassInfoMaxCount() {
-        return baseMapper.getGlassInfoMaxCount();
+    public String getGlassInfoMaxCount(String glassId) {
+        DownStorageCageDetails glassInfoMaxCount = baseMapper.getGlassInfoMaxCount();
+        return null == glassInfoMaxCount ? glassId : glassInfoMaxCount.getGlassId();
     }
 
 
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 07dbd63..18e1259 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
@@ -48,7 +48,7 @@
     private DownStorageCageDetailsMapper downStorageCageDetailsMapper;
 
     @Override
-    public DownGlassTask createDownGlassTask(GlassInfo glassInfo, Integer startCell, Integer endCell, String taskType) {
+    public DownGlassTask createDownGlassTask(GlassInfo glassInfo, Integer startCell, Integer endCell, Integer taskType) {
         DownGlassTask downGlassTask = new DownGlassTask();
 
         BeanUtils.copyProperties(glassInfo, downGlassTask);
@@ -60,7 +60,7 @@
     }
 
     @Override
-    public DownGlassTask createDownGlassTask(DownStorageCageDetails glassInfo, Integer startCell, Integer endCell, String taskType) {
+    public DownGlassTask createDownGlassTask(DownStorageCageDetails glassInfo, Integer startCell, Integer endCell, Integer taskType) {
         DownGlassTask downGlassTask = new DownGlassTask();
 
         BeanUtils.copyProperties(glassInfo, downGlassTask);
@@ -95,6 +95,7 @@
                                 .eq(DownStorageCageDetails::getSlot, DownStorageCage::getSlot)
                                 .eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN))
                         .isNull(DownStorageCageDetails::getSlot)
+                        .eq(DownStorageCage::getEnableState, Const.SLOT_ON)
                         .last("order by abs(t.slot - " + currentSlot + ")  asc limit 2")
         );
         if (flag && CollectionUtil.isNotEmpty(emptyList)) {
@@ -105,6 +106,7 @@
         }
         return emptyList.get(0);
     }
+
 
     @Override
     public List<DownStorageCageDetails> selectCacheMax() {
@@ -124,6 +126,7 @@
 
         );
     }
+
 
 
     @Override
@@ -149,11 +152,20 @@
     @Override
     public boolean updateDownStorageCage(DownStorageCage downStorageCage) {
         DownStorageCage downItem = baseMapper.selectById(downStorageCage.getId());
-        downItem.setEnableState(downStorageCage.getEnableState());
-        baseMapper.updateById(downItem);
-        return true;
+        if (downItem != null) {
+            downItem.setEnableState(downStorageCage.getEnableState());
+            int rowsAffected = baseMapper.updateById(downItem);
+            if (rowsAffected > 0) {
+                return true;
+            } else {
+                return false;
+            }
+        } else {
+            return false;
+        }
     }
 
+
     /**
      * 淇敼鐞嗙墖绗间俊鎭� 鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑 銆愭坊鍔�/鍒犻櫎/鏇存崲銆�
      *
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 40f9793..2c15c6c 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
@@ -2,22 +2,21 @@
 
 
 import com.mes.downworkstation.entity.DownWorkstation;
+import com.mes.downworkstation.entity.request.DownWorkRequest;
 import com.mes.downworkstation.service.DownWorkstationService;
 import com.mes.glassinfo.service.GlassInfoService;
+import com.mes.utils.Result;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 /**
  * <p>
- *  鍓嶇鎺у埗鍣�
+ * 鍓嶇鎺у埗鍣�
  * </p>
  *
  * @author zhoush
@@ -33,73 +32,48 @@
     private DownWorkstationService downWorkstationService;
     @Autowired
     private GlassInfoService glassInfoService;
+
     @ApiOperation("鑾峰彇宸ヤ綅淇℃伅")
     @GetMapping("/getone")
-    public ResponseEntity<?> getOneDownWorkstations() {
+    public Result getOneDownWorkstations() {
         try {
-            List<DownWorkstation> data = downWorkstationService.getoneDownWorkstations(1,6);
+            List<DownWorkstation> data = downWorkstationService.getoneDownWorkstations(1, 6);
             // 鏋勫缓绗﹀悎棰勬湡鏍煎紡鐨勫搷搴旀暟鎹�
-            Map<String, Object> responseData = new HashMap<>();
-            responseData.put("code", 200);
-            responseData.put("msg", "鎴愬姛");
-            responseData.put("data", data);
-            // 杩斿洖 ResponseEntity 瀵硅薄锛屽寘鍚搷搴旀暟鎹拰鐘舵�佺爜
-            return ResponseEntity.ok(responseData);
+            return Result.build(200, "鑾峰彇宸ヤ綅淇℃伅鎴愬姛", data);
         } catch (Exception e) {
             e.printStackTrace();
             // 濡傛灉鍑虹幇寮傚父锛岃繑鍥為敊璇俊鎭�
-            Map<String, Object> errorResponse = new HashMap<>();
-            errorResponse.put("code", 500);
-            errorResponse.put("msg", "鏈嶅姟鍣ㄥ唴閮ㄩ敊璇�");
-            return ResponseEntity.status(500).body(errorResponse);
+            return Result.build(500, "鑾峰彇宸ヤ綅淇℃伅澶辫触", 1);
         }
     }
 
     @ApiOperation("鑾峰彇娴佺▼鍗″彿")
     @GetMapping("/getflowCardId")
-    public ResponseEntity<Map<String, Object>> getflowCardId() {
-        Map<String, Object> responseData = new HashMap<>();
+    public Result getflowCardId() {
+
         try {
             List<Map<String, Object>> data = glassInfoService.getFlowCardId();
-            responseData.put("code", 200);
-            responseData.put("msg", "鎴愬姛");
-            responseData.put("data", data);
-            return ResponseEntity.ok(responseData);
+            return Result.build(200, "鑾峰彇娴佺▼鍗″彿鎴愬姛", data);
         } catch (Exception e) {
-            responseData.put("code", 500);
-            responseData.put("msg", "澶辫触");
-            responseData.put("data", null);
-            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(responseData);
+            return Result.build(500, "鑾峰彇娴佺▼鍗″彿澶辫触", 1);
         }
     }
 
 
-
-//缁戝畾鏋跺瓙
-@ApiOperation("缁戝畾鏋跺瓙")
+    //缁戝畾鏋跺瓙
+    @ApiOperation("缁戝畾鏋跺瓙")
     @PostMapping("/updateFlowCardId")
-    public ResponseEntity<Map<String, Object>> updateFlowCardId(@RequestBody Map<String, Object> requestData) {
-        // 浠� requestData 涓幏鍙栦紶鍏ョ殑 flowCardId
-        String flowCardId = (String) requestData.get("flowCardId");
-        int workstationId = (int) requestData.get("workstationId");
+    public Result updateFlowCardId(@RequestBody DownWorkRequest request) {
 
-        // 鏌ヨ瀵瑰簲 flowCardId 鐨勭幓鐠冧俊鎭�绘暟閲�
-        int glassInfoCount = glassInfoService.getGlassInfoCountByFlowCardId(flowCardId);
+        // 缁戝畾鏋跺瓙
+        downWorkstationService.updateFlowCardIdAndCount(request.getFlowCardId(), request.getWorkstationId(), request.getLayer());
 
-        // 鏇存柊 down_workstation 琛ㄤ腑鐨勬�绘暟閲�
-        downWorkstationService.updateFlowCardIdAndCount(flowCardId, glassInfoCount, workstationId);
-
-        // 鏋勫缓鍝嶅簲鏁版嵁
-        Map<String, Object> responseData = new HashMap<>();
-        responseData.put("message", "updated successfully");
-        responseData.put("code", 200);
-        // 杩斿洖澶勭悊缁撴灉
-        return ResponseEntity.ok(responseData);
+        return Result.build(200, "缁戝畾鏋跺瓙鎴愬姛", 1);
     }
 
     @ApiOperation("娓呴櫎宸ヤ綅淇℃伅")
     @PostMapping("/clear")
-    public ResponseEntity<Map<String, Object>> clearWorkstationInfo(@RequestBody Map<String, Object> requestData) {
+    public Result clearWorkstationInfo(@RequestBody Map<String, Object> requestData) {
         // 璋冪敤 DownWorkstationService 涓殑鏂规硶娓呴櫎鎸囧畾宸ヤ綅ID鐨勪俊鎭�
         int workstationId = (int) requestData.get("workstationId");
 
@@ -109,18 +83,10 @@
 
         if (downWorkstations == totalWorkstations) {
             downWorkstationService.clearFlowCardId(workstationId);
-            Map<String, Object> responseData = new HashMap<>();
-            responseData.put("message", "cleared successfully");
-            responseData.put("code", 200);
-            // 杩斿洖澶勭悊缁撴灉
-            return ResponseEntity.ok(responseData);
-        }
-        else {
+            return Result.build(200, "娓呴櫎宸ヤ綅淇℃伅鎴愬姛", 1);
+        } else {
             // 濡傛灉鎬绘暟閲忓拰钀芥灦鏁伴噺涓嶄竴鑷达紝杩斿洖閿欒鍝嶅簲
-            Map<String, Object> errorResponse = new HashMap<>();
-            errorResponse.put("message", "Total workstations count does not match down workstations count.");
-            errorResponse.put("code", 400);
-            return ResponseEntity.badRequest().body(errorResponse);
+            return Result.build(500, "娓呴櫎宸ヤ綅淇℃伅澶辫触", 1);
         }
 
 
@@ -129,46 +95,38 @@
     }
 
 
-
-
     @ApiOperation("鑾峰彇宸ヤ綅鏄剧ず鍥�1")
     @GetMapping("/getwo")
-    public ResponseEntity<Map<String, Object>> getwo() {
-        Map<String, Object> responseData = new HashMap<>();
+    public Result getwo() {
+
         try {
-            List<Map<String, Object>> data = downWorkstationService.getTotalGlassDimensionsByWorkstation(1,3);
-            responseData.put("code", 200);
-            responseData.put("msg", "鎴愬姛");
-            responseData.put("data", data);
-            return ResponseEntity.ok(responseData);
+            List<Map<String, Object>> data = downWorkstationService.getTotalGlassDimensionsByWorkstation(1, 3);
+            return Result.build(200, "鑾峰彇宸ヤ綅鏄剧ず鍥�1鎴愬姛", data);
         } catch (Exception e) {
-            responseData.put("code", 500);
-            responseData.put("msg", "澶辫触");
-            responseData.put("data", null);
-            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(responseData);
+            return Result.build(200, "鑾峰彇宸ヤ綅鏄剧ず鍥�1澶辫触", 1);
         }
     }
 
     @ApiOperation("鑾峰彇宸ヤ綅鏄剧ず鍥�2")
     @GetMapping("/getwo2")
-    public ResponseEntity<Map<String, Object>> getw2o() {
-        Map<String, Object> responseData = new HashMap<>();
+    public Result getwo2() {
+
         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);
+            List<Map<String, Object>> data = downWorkstationService.getTotalGlassDimensionsByWorkstation(4, 6);
+            return Result.build(200, "鑾峰彇宸ヤ綅鏄剧ず鍥�2鎴愬姛", data);
         } catch (Exception e) {
-            responseData.put("code", 500);
-            responseData.put("msg", "澶辫触");
-            responseData.put("data", null);
-            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(responseData);
+            return Result.build(200, "鑾峰彇宸ヤ綅鏄剧ず鍥�2澶辫触", 1);
+
         }
     }
 
-
-
+    @ApiOperation("  鍔熻兘锛氬宸ヤ綅杩涜銆愬惎鐢�/绂佺敤銆�")
+    @PostMapping("/updateDownWorkstation")
+    @ResponseBody
+    public Result updateDownWorkstation(@RequestBody DownWorkstation downWorkstation) {
+        boolean isSucess = downWorkstationService.updateDownWorkstationstate(downWorkstation);
+        return Result.build(200, "鏇存崲鎴愬姛", isSucess);
+    }
 
 
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstation.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstation.java
index 7afc44a..896ac12 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstation.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstation.java
@@ -1,7 +1,6 @@
 package com.mes.downworkstation.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -62,14 +61,16 @@
     /**
      * 鎬绘暟閲�
      */
-    @TableField("total_quantity")
-    private Integer totalquantity;
+    private Integer totalQuantity;
 
     /**
      * 钀芥灦鏁伴噺
      */
-    @TableField("racks_number")
-    private Integer Racksnumber;
+    private Integer racksNumber;
+    /**
+     * 浜哄伐涓嬬墖鏁伴噺
+     */
+    private Integer otherNumber;
 
 
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstionAndDownGlassinfo.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstionAndDownGlassinfo.java
index 1229f98..c79112f 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstionAndDownGlassinfo.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstionAndDownGlassinfo.java
@@ -1,7 +1,6 @@
 package com.mes.downworkstation.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -17,8 +16,7 @@
 @Data
 @EqualsAndHashCode(callSuper = false)
 
-public class DownWorkstionAndDownGlassinfo
-{
+public class DownWorkstionAndDownGlassinfo {
     /**
      * 涓嬬墖宸ヤ綅琛╥d
      */
@@ -51,14 +49,9 @@
     private Integer workState;
 
 
-    @TableField("total_quantity")
-    private Integer totalquantity;
+    private Integer totalQuantity;
 
-    @TableField("racks_number")
-    private Integer Racksnumber;
-
-
-
+    private Integer racksNumber;
 
     /**
      * 椤哄簭
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/dto/DownGlassInfoDTO.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/dto/DownGlassInfoDTO.java
index dc3fe51..7d9a7c0 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/dto/DownGlassInfoDTO.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/dto/DownGlassInfoDTO.java
@@ -21,11 +21,16 @@
      */
     private Integer layer;
     /**
-     * 钀芥灦鏁伴噺
+     * 宸插嚭鐗囨暟閲�
      */
     private Integer count;
 
     /**
+     * 钀芥灦鏁伴噺
+     */
+    private Integer racksNumber;
+
+    /**
      * 娴佺▼鍗℃湭杩涚墖鐨勭幓鐠冧俊鎭�
      */
     private List<GlassInfo> glassInfoList;
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/request/DownWorkRequest.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/request/DownWorkRequest.java
new file mode 100644
index 0000000..9a72eae
--- /dev/null
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/request/DownWorkRequest.java
@@ -0,0 +1,28 @@
+package com.mes.downworkstation.entity.request;
+
+import lombok.Data;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/7/10 14:10
+ * @Description:
+ */
+@Data
+public class DownWorkRequest {
+
+
+    /**
+     * 娴佺▼鍗″彿
+     */
+    private String flowCardId;
+
+    /**
+     * 宸ヤ綅id
+     */
+    private int workstationId;
+
+    /**
+     * 灞傛暟
+     */
+    private int layer;
+}
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationMapper.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationMapper.java
index 75bcc83..2c548c5 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationMapper.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationMapper.java
@@ -2,14 +2,9 @@
 
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.downworkstation.entity.DownWorkstation;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Select;
 import org.springframework.stereotype.Repository;
-
-import java.util.List;
 
 /**
  * <p>
@@ -19,7 +14,7 @@
  * @author zhoush
  * @since 2024-03-27
  */
-@Mapper
+
 
 @Repository
 @InterceptorIgnore(tenantLine = "true")
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationTaskMapper.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationTaskMapper.java
index b9b2df0..0098390 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationTaskMapper.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationTaskMapper.java
@@ -4,7 +4,6 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.mes.downworkstation.entity.DownWorkstation;
 import com.mes.downworkstation.entity.DownWorkstationTask;
-import org.mapstruct.Mapper;
 
 import java.util.List;
 
@@ -18,7 +17,7 @@
  */
 
 @DS("salve_hangzhoumes")
-@Mapper
+
 public interface DownWorkstationTaskMapper extends BaseMapper<DownWorkstationTask> {
 
     List<DownWorkstationTask> selectList();
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java
index 8a4ba9d..a101328 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
@@ -49,11 +49,11 @@
 
     /**
      * @param flowCardId
-     * @param glassInfoCount
+     *
      * @param workstationId
      * @return 鏇存柊鏋跺瓙鍜屾暟閲�
      */
-    int updateFlowCardIdAndCount(String flowCardId, int glassInfoCount, int workstationId);
+    void updateFlowCardIdAndCount(String flowCardId, int workstationId,int layer);
 
 
 
@@ -70,4 +70,11 @@
      * @return
      */
     DownWorkstation selectByFlowCardId(String flowcardid);
+
+
+    /**
+     * @param downWorkstation
+     * @returnq 鍚敤绂佺敤
+     */
+    boolean updateDownWorkstationstate(DownWorkstation downWorkstation);
 }
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 a602f88..cbcb1ff 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
@@ -4,8 +4,9 @@
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.yulichang.query.MPJQueryWrapper;
+import com.mes.damage.entity.Damage;
+import com.mes.damage.service.DamageService;
 import com.mes.downglassinfo.entity.DownGlassInfo;
-import com.mes.downglassinfo.entity.DownGlassTask;
 import com.mes.downglassinfo.mapper.DownGlassInfoMapper;
 import com.mes.downglassinfo.service.DownGlassInfoService;
 import com.mes.downglassinfo.service.DownGlassTaskService;
@@ -16,6 +17,7 @@
 import com.mes.downworkstation.mapper.DownWorkstationTaskMapper;
 import com.mes.downworkstation.service.DownWorkstationService;
 import com.mes.downworkstation.service.DownWorkstationTaskService;
+import com.mes.glassinfo.service.GlassInfoService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -32,7 +34,7 @@
 
     @Autowired
     private DownWorkstationMapper downWorkstationMapper;
-    @Autowired(required=false)
+    @Autowired(required = false)
     private DownWorkstationTaskMapper downWorkstationTaskMapper;
     @Autowired
     private DownGlassInfoService downGlassInfoService;
@@ -40,7 +42,10 @@
     private DownGlassInfoMapper downGlassInfoMapper;
     @Autowired
     private DownGlassTaskService downGlassTaskService;
-
+    @Autowired
+    private GlassInfoService glassInfoService;
+    @Autowired
+    private DamageService damageservice;
 
     @Autowired
     private DownWorkstationTaskService downWorkstationTaskService;
@@ -53,16 +58,16 @@
     @Override
     public int getTotalQuantity(int workstationId) {
         DownWorkstation result = baseMapper.selectOne(new QueryWrapper<DownWorkstation>().lambda()
-                .select(DownWorkstation::getTotalquantity)
+                .select(DownWorkstation::getTotalQuantity)
                 .eq(DownWorkstation::getWorkstationId, workstationId));
 
-        return result != null ? result.getTotalquantity() : 0;
+        return result != null ? result.getTotalQuantity() : 0;
     }
 
 
     //宸ヤ綅鏄剧ず
     @Override
-    public List<Map<String, Object>> getTotalGlassDimensionsByWorkstation(int start,int end) {
+    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")
@@ -71,8 +76,8 @@
 
         ;
 
-    List<DownWorkstionAndDownGlassinfo> workstationList = downWorkstationMapper.selectJoinList(DownWorkstionAndDownGlassinfo.class, queryWrapper);
-       // List<DownWorkstionAndDownGlassinfo> workstationList = null;
+        List<DownWorkstionAndDownGlassinfo> workstationList = downWorkstationMapper.selectJoinList(DownWorkstionAndDownGlassinfo.class, queryWrapper);
+        // List<DownWorkstionAndDownGlassinfo> workstationList = null;
         List<Map<String, Object>> result = new ArrayList<>();
         for (DownWorkstionAndDownGlassinfo downWorkstionAndDownGlassinfo : workstationList) {
             Map<String, Object> rack = new HashMap<>();
@@ -89,7 +94,7 @@
             List<DownGlassInfo> downGlassInfoList = downGlassInfoMapper.selectList(glassInfoQueryWrapper);
 
 
-         if (!downGlassInfoList.isEmpty()) {
+            if (!downGlassInfoList.isEmpty()) {
 
                 item.put("downGlassInfoList", downGlassInfoList);
 
@@ -98,7 +103,7 @@
             rack.put("item", item);
             result.add(rack);
         }
-        log.info("result"+(result));
+        log.info("result" + (result));
         return result; // 杩斿洖鏈�缁堢粨鏋�
     }
 
@@ -111,7 +116,7 @@
                 .eq("workstation_id", workstationId);
 
         DownWorkstation result = baseMapper.selectOne(queryWrapper);
-        return result != null ? result.getRacksnumber() : 0;
+        return result != null ? result.getRacksNumber() : 0;
     }
 
     //鏍规嵁鏉′欢鑾峰彇宸ヤ綅鐜荤拑淇℃伅
@@ -136,13 +141,22 @@
 
 
     @Override
-    public int updateFlowCardIdAndCount(String flowCardId, int glassInfoCount, int workstationId) {
+    public void updateFlowCardIdAndCount(String flowCardId, int workstationId, int layer) {
+        int glassInfoCount = glassInfoService.getGlassInfoCountByFlowCardId(flowCardId, layer);
+        QueryWrapper<Damage> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("process_id", flowCardId);
+        queryWrapper.eq("technology_number", layer);
+
+        int otherNumber = damageservice.count(queryWrapper);
         UpdateWrapper<DownWorkstation> updateWrapper = new UpdateWrapper<>();
         updateWrapper.set("total_quantity", glassInfoCount)
                 .set("flow_card_id", flowCardId)
+                .set("layer", layer)
+                .set("other_number", otherNumber)
                 .eq("workstation_id", workstationId);
 
-        return baseMapper.update(new DownWorkstation(), updateWrapper);
+        this.update(updateWrapper);
+
     }
 
     @Override
@@ -155,9 +169,6 @@
 
         baseMapper.update(new DownWorkstation(), updateWrapper);
     }
-
-
-
 
 
     @Override
@@ -180,6 +191,23 @@
     }
 
 
+    @Override
+    public boolean updateDownWorkstationstate(DownWorkstation downWorkstation) {
+
+        DownWorkstation downWork = baseMapper.selectById(downWorkstation.getId());
+
+        if (downWork != null) {
+
+            downWork.setEnableState(downWorkstation.getEnableState());
+
+            baseMapper.updateById(downWork);
+
+            return true;
+        } else {
+
+            return false;
+        }
+    }
 
 
 }
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
deleted file mode 100644
index 45eab78..0000000
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownCacheGlassTask.java
+++ /dev/null
@@ -1,311 +0,0 @@
-package com.mes.job;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.mes.common.config.Const;
-import com.mes.downglassinfo.entity.DownGlassInfo;
-import com.mes.downglassinfo.entity.DownGlassTask;
-import com.mes.downglassinfo.service.DownGlassInfoService;
-import com.mes.downglassinfo.service.DownGlassTaskService;
-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.service.DownWorkstationService;
-import com.mes.downworkstation.service.DownWorkstationTaskService;
-import com.mes.glassinfo.entity.GlassInfo;
-import com.mes.glassinfo.service.GlassInfoService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-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 autoBindRack() {
-        log.info("鏍规嵁缂撳瓨涓凡缁忚繘鐗囩殑鐜荤拑绉嶆暟閲忔渶澶氱殑娴佺▼鍗″彿鑷姩缁戝畾涓�涓惎鐢ㄧ姸鎬佺殑绌烘灦瀛�");
-
-        List<DownStorageCageDetails> Details = downStorageCageService.selectCacheMax();
-        if (Details.size() > 0) {
-            DownStorageCageDetails downStorageCageDetails = Details.get(0);
-            String flowCardId = downStorageCageDetails.getFlowCardId();
-            int glassInfoCount = glassInfoService.getGlassInfoCountByFlowCardId(flowCardId);
-            DownWorkstation downWorkstation = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>().eq(DownWorkstation::getFlowCardId, null));
-            List<DownWorkstation> downWorkstations = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>()
-                    .eq(DownWorkstation::getEnableState, 1));
-
-            if (!downWorkstations.stream().anyMatch(workstation -> workstation.getFlowCardId().equals(flowCardId))) {
-                downWorkstationService.updateFlowCardIdAndCount(flowCardId, glassInfoCount, downWorkstation.getWorkstationId());
-            }
-
-
-        }
-    }
-
-
-    // @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 MESSendingWord = plcParameterObject.getPlcParameter("MES_confirmation_word").getAddress();
-        // String G06RobotTaskRequestWord = plcParameterObject.getPlcParameter("G06RobotTaskRequestWord").getAddress();
-
-
-        String taskRequestTypeValue = "0";
-        String glassIdeValue = "NG24041101C002-2-6-1-6";
-        String confirmationWrodValue = "1";
-        String outGlassstate = "1";
-        String MESSendingWord = "1";
-        String G11RobotTaskRequestWord = "0";
-        String G06RobotTaskRequestWord = "0";
-        String G13RobotTaskRequestWord = "0";
-
-        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(MESSendingWord, 0);
-//            return;
-//        }
-//        if (!"0".equals(confirmationWrodValue)) {
-//            log.info("2銆佽幏鍙栧埌鐨勮姹傚瓧涓嶄负0锛屽皢纭瀛楁敼涓�0");
-//            S7object.getinstance().plccontrol.WriteWord(MESSendingWord, 0);
-//            return;
-//        }
-
-        if ("1".equals(taskRequestTypeValue)) {
-            log.info("3銆佽繘鐗囪姹傦紝涓旂‘璁ゅ瓧涓�0锛屾墽琛岃繘鐗囦换鍔�");
-            inTo(glassIdeValue, MESSendingWord);
-        } else if ("2".equals(taskRequestTypeValue)) {
-
-            log.info("3銆佸嚭鐗囪姹傦紝涓旂‘璁ゅ瓧涓�0锛屾墽琛岃繘鐗囦换鍔�");
-            outTo(MESSendingWord);
-
-        } else if ("3".equals(taskRequestTypeValue)) {
-            log.info("3銆佽繘鐗囧拰鍑虹墖閮界┖闂诧紝鎵ц鍑虹墖浠诲姟");
-            if (outTo(MESSendingWord)) {
-                inTo(glassIdeValue, MESSendingWord);
-
-
-            }
-        }
-
-        if (("0".equals(G11RobotTaskRequestWord) || "0".equals(G06RobotTaskRequestWord)) || "0".equals(G13RobotTaskRequestWord)) {
-            log.info("4銆佹湁涓嬬墖瀹屾垚淇″彿鏇存柊钀芥灦鏁伴噺");
-            insertdownglassinfo();
-        }
-
-
-    }
-
-    /**
-     * 杩涚墖浠诲姟
-     *
-     * @param glassId
-     * @param MESSendingWord
-     * @param
-     */
-    private void inTo(String glassId, String MESSendingWord) {
-        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 (downStorageCageDetailsService.DirectConnection(glassInfo)) {
-            //鐩撮��
-            //log.info("3銆佸鏋滃綋鍓嶇幓鐠冨睘浜庣増鍥緄d鍜岀墖搴忕殑椤哄簭鍒欑洿閫氾紝鎵ц涓嬬墖浠诲姟");
-            log.info("3銆佸鏋滃綋鍓嶇幓鐠冨睘浜庢祦绋嬪崱涓殑鐗囧簭鐨勯『搴忓垯鐩撮�氾紝鎵ц涓嬬墖浠诲姟");
-            DownWorkstation downWorkstation = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>().eq(DownWorkstation::getFlowCardId, glassInfo.getFlowCardId()));
-            int WorkstationId = downWorkstation.getWorkstationId();
-            DownGlassTask downGlassTask = downStorageCageService.createDownGlassTask(glassInfo, 0, WorkstationId, "3");
-            downGlassTaskService.insertCacheTask(downGlassTask);
-
-        } else {
-
-            // log.info("4銆佸鏋滀笉灞炰簬鐗堝浘id鍜岀墖搴忕殑椤哄簭鎵ц杩涚墖浠诲姟");
-            log.info("4銆佸鏋滀笉灞炰簬娴佺▼鍗′腑鐨勭墖搴忕殑椤哄簭鎵ц杩涚墖浠诲姟");
-
-            //娣诲姞杩涚墖浠诲姟  鏌ユ壘绌烘牸
-            List<DownStorageCageDetails> list = downStorageCageService.selectCacheEmpty();
-            if (list.size() > 0) {
-                DownStorageCageDetails item = list.get(0);
-
-
-                log.info("5銆佹煡璇㈠崸寮忕悊鐗囩閲岄潰鐨勭┖鏍�:{}", list);
-                log.info("6銆佸皢鐜荤拑淇℃伅鎻掑叆鍗у紡鐞嗙墖绗�,褰撳墠鐜荤拑淇℃伅:{}", glassInfo);
-                DownStorageCageDetails details = new DownStorageCageDetails();
-                BeanUtils.copyProperties(glassInfo, details);
-                details.setState(Const.GLASS_STATE_IN);
-                details.setGlassId(glassInfo.getGlassId());
-                details.setSlot(item.getSlot());
-                details.setDeviceId(item.getDeviceId());
-                downStorageCageDetailsService.save(details);
-                log.info("7銆佺幓鐠冧俊鎭凡瀛樺叆鐞嗙墖绗艰鎯呰〃锛岀幓鐠冧俊鎭负{}", details);
-
-                DownGlassTask downGlassTask = downStorageCageService.createDownGlassTask(glassInfo, 0, item.getSlot(), "1");
-                //娣诲姞杩涚墖浠诲姟
-                log.info("8銆佺敓鎴愯繘鐗囦换鍔′俊鎭瓨鍏ヤ换鍔¤〃{}", downGlassTask);
-                downGlassTaskService.insertCacheTask(downGlassTask);
-            }
-
-
-        }
-        log.info("9銆佸彂閫佺‘璁ゅ瓧瀹屾垚");
-        //S7object.getinstance().plccontrol.WriteWord(MESSendingWord, 1);
-    }
-
-    /**
-     * 鍑虹墖浠诲姟
-     *
-     * @param MESSendingWord
-     */
-    private Boolean outTo(String MESSendingWord) {
-        // log.info("鍗曠墖鎯呭喌鏍规嵁浼犲叆鐨勬枡鏋跺彿 鏌ヨ绗﹀悎鎸夌収鐗堝浘id鍜岀墖搴忓嚭鐗�,骞朵笖浼樺厛鍑烘弧鏋剁殑灏忕墖");
-        log.info("鍗曠墖鎯呭喌鏍规嵁浼犲叆鐨勬枡鏋跺彿 鏌ヨ绗﹀悎鎸夌収娴佺▼鍗′腑椤哄簭鍑虹墖,骞朵笖浼樺厛鍑烘弧鏋剁殑灏忕墖");
-
-//        List<DownStorageCageDetails> list1to3 = downStorageCageDetailsService.CacheOut1(1, 3);
-//        List<DownStorageCageDetails> list4to6 = downStorageCageDetailsService.CacheOut1(4, 6);
-        List<DownStorageCageDetails> list1to6 = downStorageCageDetailsService.CacheOut2(1, 6);
-
-        DownStorageCageDetails selectedItem = null;
-
-        Integer endCell = null;
-
-        // 浼樺厛 瓒呭嚭灏哄浼樺厛浜哄伐鍑虹墖 浜哄伐澶勭悊
-        if (!list1to6.isEmpty()) {
-            DownStorageCageDetails item3 = list1to6.get(0);
-            //鍚庢湡鏈夌敓浜ц鍒�
-            if (item3.getHeight() >= 2500 && item3.getWidth() >= 2660) {
-                log.info("浜哄伐澶勭悊");
-                selectedItem = item3;
-
-            } else if (!!list1to6.isEmpty()) {
-                log.info("鍓嶅悗绔兘绌洪棽浼樺厛婊℃灦");
-                selectedItem = list1to6.get(0);
-            }
-        }
-
-        // 鎸夌収鐗堝浘id鍜岀墖搴忕鍚堝墠绔嚭鐗�
-//        if (selectedItem == null && !list1to3.isEmpty()) {
-//            log.info("鍓嶇鍑虹墖");
-//            selectedItem = list1to3.get(0);
-//        }
-//
-//        // 鎸夌収鐗堝浘id鍜岀墖搴忕鍚堝悗绔嚭鐗�
-//        if (selectedItem == null && !list4to6.isEmpty()) {
-//            log.info("鍚庣鍑虹墖");
-//            selectedItem = list4to6.get(0);
-//        }
-
-        if (selectedItem != null) {
-            DownWorkstation downWorkstation = downWorkstationService.getOne(
-                    new LambdaQueryWrapper<DownWorkstation>()
-                            .eq(DownWorkstation::getFlowCardId, selectedItem.getFlowCardId())
-            );
-            endCell = downWorkstation.getWorkstationId();
-            if (endCell == null) {
-                endCell = 7;
-            }
-            DownGlassTask downGlassTask = downStorageCageService.createDownGlassTask(selectedItem, 9, endCell, "2");
-            downGlassTaskService.insertCacheTask(downGlassTask);
-            LambdaQueryWrapper<DownStorageCageDetails> wrapper = new LambdaQueryWrapper<>();
-            wrapper.eq(DownStorageCageDetails::getGlassId, selectedItem.getGlassId());
-            DownStorageCageDetails updateDetail = new DownStorageCageDetails();
-            updateDetail.setState(Const.GLASS_STATE_OUT);
-            downStorageCageDetailsService.update(updateDetail, wrapper);
-            log.info("鏇存柊鍑虹墖鐜荤拑鐨勭姸鎬佷负{}", Const.GLASS_STATE_OUT);
-            // S7object.getinstance().plccontrol.WriteWord(MESSendingWord, 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(), downGlassInfo.getLayer());
-                    // 鍒濆鍖栭『搴忓瓧娈靛��
-                    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("鏇存柊钀芥灦鏁伴噺");
-//                    LambdaQueryWrapper<DownGlassTask> wrapper = new LambdaQueryWrapper<>();
-//                    wrapper.eq(DownGlassTask::getGlassId, newdownGlassInfo.getGlassId());
-//                    DownGlassTask updateDetail = new DownGlassTask();
-//                    updateDetail.setTaskStauts(2);
-//                    downGlassTaskService.update(updateDetail, wrapper);
-                    sequence++; // 閫掑椤哄簭瀛楁鍊�
-
-
-                }
-            }
-        } catch (Exception e) {
-            // 鎵撳嵃寮傚父淇℃伅
-            e.printStackTrace();
-            // 鎴栬�呭彲浠ヨ繘琛屽叾浠栧紓甯稿鐞嗭紝姣斿璁板綍鏃ュ織鎴栬�呰繑鍥炵壒瀹氱殑閿欒淇℃伅
-        }
-
-
-    }
-
-
-}
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
index e9503b4..8b40827 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
@@ -4,6 +4,7 @@
 import cn.smallbun.screw.core.util.CollectionUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.mes.common.S7object;
 import com.mes.common.config.Const;
 import com.mes.device.PlcParameterObject;
@@ -29,10 +30,7 @@
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -72,8 +70,14 @@
     @Value("${mes.maxHeight}")
     private Integer maxHeight;
 
+    @Value("${mes.minWidth}")
+    private Integer minWidth;
 
-    @Scheduled(fixedDelay = 1000)
+    @Value("${mes.minHeight}")
+    private Integer minHeight;
+
+
+    @Scheduled(fixedDelay = 3000)
     public void plcHomeEdgTask() {
         PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
         String requestWord = plcParameterObject.getPlcParameter("requestWord").getValue();
@@ -86,6 +90,7 @@
         String confirmationWrodValue = plcParameterObject.getPlcParameter("confirmationWord").getValue();
         String confirmationWrodAddress = plcParameterObject.getPlcParameter("confirmationWord").getAddress();
         String currentSlot = plcParameterObject.getPlcParameter("currentCell").getValue();
+
 
         log.info("1銆佽幏鍙栧埌鐨勮姹傚瓧涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{}锛岃幏鍙栧埌鐨勭‘璁ゅ瓧涓猴細{}锛岃幏鍙栧埌鐨勫嚭鐗囩姸鎬佸垎鍒负锛歡06:{}銆乬08:{}銆乬11:{}銆乬13:{},褰撳墠鏍煎瓙鍙蜂负锛歿}",
                 requestWord, glassIdeValue, confirmationWrodValue, out06Glassstate, out08Glassstate, out11Glassstate, out13Glassstate, currentSlot);
@@ -108,7 +113,7 @@
             inTo(glassIdeValue, requestWord, currentSlot);
         } else if ("2".equals(requestWord)) {
             //09绌洪棽 锛�1      10绌洪棽 锛�2        閮界┖闂诧細3    鍏朵粬0
-            log.info("2銆佸嚭鐗囪姹傦紝涓旂‘璁ゅ瓧涓�0锛屾墽琛岃繘鐗囦换鍔�");
+            log.info("2銆佸嚭鐗囪姹傦紝涓旂‘璁ゅ瓧涓�0锛屾墽琛屽嚭鐗囦换鍔�");
             outTo(out06Glassstate, out08Glassstate, out11Glassstate, out13Glassstate, glassIdeValue, currentSlot);
         } else if ("3".equals(requestWord)) {
             log.info("2銆佽繘鐗囧拰鍑虹墖閮界┖闂诧紝鎵ц鍑虹墖浠诲姟");
@@ -135,8 +140,8 @@
         }
         Boolean checkFlag = Boolean.FALSE;
         //鐜荤拑灏哄鏄惁璧颁汉宸ヤ笅鐗�
-        if (glassInfo.getWidth() > maxWidth || glassInfo.getHeight() > maxHeight) {
-            log.info("璇ョ幓鐠冨昂瀵歌蛋浜哄伐涓嬬墖,鐩存帴杩涚墖");
+        if (glassInfo.getWidth() > maxWidth || glassInfo.getHeight() > maxHeight || glassInfo.getWidth() < minWidth || glassInfo.getHeight() < minHeight) {
+            log.info("璇ョ幓鐠冨昂瀵镐笉绗﹀悎瑕佹眰锛岄渶瑕佽蛋浜哄伐涓嬬墖鐩存帴杩涚墖");
         } else {
             log.info("璇ョ幓鐠冨昂瀵搁潪浜哄伐涓嬬墖");
             //鑾峰彇璇ョ幓鐠冪殑娴佺▼鍗℃槸鍚﹀凡缁戝畾鏋跺瓙
@@ -152,14 +157,11 @@
             if (!checkFlag && !isBind) {
                 log.info("璇ョ幓鐠冪殑娴佺▼鍗℃湭缁戝畾鏋跺瓙锛岃幏鍙栨槸鍚︽湁绌烘灦瀛�");
                 List<DownWorkstation> list = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>()
-                        .isNull(DownWorkstation::getFlowCardId));
+                        .isNull(DownWorkstation::getFlowCardId).orderByDesc(DownWorkstation::getWorkstationId));
                 if (CollectionUtils.isNotEmpty(list)) {
                     log.info("鏈夌┖鏋跺瓙,灏嗘祦绋嬪崱涓庢灦瀛愬ソ缁戝畾锛屾墽琛岃繘鐗囦换鍔� 缁撴潫");
                     //缁戝畾娴佺▼鍗�
-                    downWorkstationService.update(new LambdaUpdateWrapper<DownWorkstation>()
-                            .set(DownWorkstation::getFlowCardId, glassInfo.getFlowCardId())
-                            .set(DownWorkstation::getLayer, glassInfo.getLayer())
-                            .eq(DownWorkstation::getWorkstationId, list.get(0).getWorkstationId()));
+                    downWorkstationService.updateFlowCardIdAndCount(glassInfo.getFlowCardId(), glassInfo.getLayer(), list.get(0).getWorkstationId());
                     checkFlag = Boolean.TRUE;
                 }
             }
@@ -174,27 +176,28 @@
                     endLoop:
                     for (DownGlassInfoDTO e : downGlassInfoDTOList) {
                         List<GlassInfo> glassInfoList = e.getGlassInfoList();
-                        for (GlassInfo item : glassInfoList) {
-                            if (item.getWidth() == glassInfo.getWidth() && item.getHeight() == glassInfo.getHeight()
-                                    && item.getThickness() == glassInfo.getThickness() && item.getFilmsid().equals(glassInfo.getFilmsid())) {
-                                //鐜荤拑鏄惁涓哄灞�
-                                checkFlag = multilayerCheck(item, Boolean.FALSE);
-                                if (checkFlag) {
-                                    //鐜荤拑鏇挎崲 浠呮浛鎹㈡祦绋嬪崱id鍙婂眰鏁�
-                                    String tempFlowCardId = item.getFlowCardId();
-                                    Integer tempLayer = item.getLayer();
-                                    String flowCardId = glassInfo.getFlowCardId();
-                                    Integer layer = glassInfo.getLayer();
-                                    log.info("鏇挎崲娴佺▼鍗′俊鎭�,褰撳墠鐜荤拑淇℃伅:{}鐨勬祦绋嬪崱鍙穥}鍙婂眰鏁皗},鏇挎崲鍚庣幓鐠冧俊鎭�:{}鐨勬祦绋嬪崱鍙穥}鍙婂眰鏁皗}",
-                                            item, glassInfo, flowCardId, layer, tempFlowCardId, tempLayer);
-                                    glassInfo.setFlowCardId(tempFlowCardId);
-                                    glassInfo.setLayer(tempLayer);
-                                    glassInfoService.updateById(glassInfo);
-                                    item.setFlowCardId(flowCardId);
-                                    item.setLayer(layer);
-                                    glassInfoService.updateById(item);
-                                    break endLoop;
-                                }
+                        Optional<GlassInfo> glassInfoTempOptional = glassInfoList.stream().filter(item -> item.getWidth() == glassInfo.getWidth() && item.getHeight() == glassInfo.getHeight()
+                                && item.getThickness() == glassInfo.getThickness() && item.getFilmsid().equals(glassInfo.getFilmsid()))
+                                .findFirst();
+                        if (glassInfoTempOptional.isPresent()) {
+                            GlassInfo item = glassInfoTempOptional.get();
+                            //鐜荤拑鏄惁涓哄灞�
+                            checkFlag = multilayerCheck(item, Boolean.FALSE);
+                            if (checkFlag) {
+                                //鐜荤拑鏇挎崲 浠呮浛鎹㈡祦绋嬪崱id鍙婂眰鏁�
+                                String tempFlowCardId = item.getFlowCardId();
+                                Integer tempLayer = item.getLayer();
+                                String flowCardId = glassInfo.getFlowCardId();
+                                Integer layer = glassInfo.getLayer();
+                                log.info("鏇挎崲娴佺▼鍗′俊鎭�,褰撳墠鐜荤拑淇℃伅:{}鐨勬祦绋嬪崱鍙穥}鍙婂眰鏁皗},鏇挎崲鍚庣幓鐠冧俊鎭�:{}鐨勬祦绋嬪崱鍙穥}鍙婂眰鏁皗}",
+                                        item, glassInfo, flowCardId, layer, tempFlowCardId, tempLayer);
+                                glassInfo.setFlowCardId(tempFlowCardId);
+                                glassInfo.setLayer(tempLayer);
+                                glassInfoService.updateById(glassInfo);
+                                item.setFlowCardId(flowCardId);
+                                item.setLayer(layer);
+                                glassInfoService.updateById(item);
+                                break endLoop;
                             }
                         }
                     }
@@ -207,11 +210,13 @@
         downStorageCageDetails.setState(Const.GLASS_STATE_IN);
         downStorageCageDetails.setSlot(nearestEmpty.getSlot());
         downStorageCageDetailsService.save(downStorageCageDetails);
-//        鐢熸垚杩涚墖浠诲姟
+
+        //        鐢熸垚杩涚墖浠诲姟
         initDownGlassTask(glassInfo, 0, nearestEmpty.getSlot(), Const.GLASS_CACHE_TYPE_IN);
     }
 
-    public Boolean outTo(String glassStatus06, String out08Glassstate, String glassStatus11, String glassStatus13, String glassId, String currentSlot) {
+    public Boolean outTo(String glassStatus06, String out08Glassstate, String glassStatus11, String
+            glassStatus13, String glassId, String currentSlot) {
         if ("2".equals(glassStatus06) && "2".equals(glassStatus11) && "2".equals(glassStatus13)) {
             log.info("G06銆丟11銆丟13鍒嗗埆涓簕},{}銆亄}闈炶嚜鍔ㄧ姸鎬侊紝鏃犳硶鍑虹墖", glassStatus06, glassStatus11, glassStatus13);
             return Boolean.FALSE;
@@ -236,8 +241,8 @@
             return Boolean.FALSE;
         }
         Boolean flag08 = "1".equals(out08Glassstate) ? Boolean.TRUE : Boolean.FALSE;
-        if (!generateTaskByShelf(glassStatus11, flag08, glassStatus13, tempList, cageDetails)) {
-            return generateTaskByShelf(glassStatus11, !flag08, glassStatus13, tempList, cageDetails);
+        if (!generateTaskByShelf(glassStatus06, glassStatus11, flag08, glassStatus13, tempList, cageDetails, glassId)) {
+            return generateTaskByShelf(glassStatus06, glassStatus11, !flag08, glassStatus13, tempList, cageDetails, glassId);
         }
         return Boolean.TRUE;
     }
@@ -279,16 +284,17 @@
         }
     }
 
-    private Boolean generateTaskByShelf(String glassStatus, Boolean flag08, String glassStatus13, List<DownStorageCageDetails> tempList, DownStorageCageDetails cageDetails) {
+    private Boolean generateTaskByShelf(String glassStatus06, String glassStatus11, Boolean flag08, String
+            glassStatus13, List<DownStorageCageDetails> tempList, DownStorageCageDetails cageDetails, String glassId) {
         //鑾峰彇2涓満姊拌噦鑼冨洿鍐呯殑鏋跺瓙缁戝畾鐨勬祦绋嬪崱淇℃伅
         List<Integer> workList = new ArrayList();
 
         if (flag08) {
-            if (!"2".equals(glassStatus)) {
+            if (!"2".equals(glassStatus11)) {
                 workList.addAll(Const.G11_WORK_STATION);
             }
         } else {
-            if (!"2".equals(glassStatus)) {
+            if (!"2".equals(glassStatus06)) {
                 workList.addAll(Const.G06_WORK_STATION);
             }
         }
@@ -297,8 +303,8 @@
         //瀵圭鍐呯幓鐠冭繘琛岃繃婊わ紝浠呭嚭绗﹀悎閫昏緫鐨勭幓鐠�
         if (CollectionUtils.isNotEmpty(workList)) {
             List<DownWorkstation> downWorkstationList = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>()
-                    .eq(DownWorkstation::getEnableState, 0).in(DownWorkstation::getWorkstationId, workList));
-            log.info("鏋跺瓙琚鐢紝鏃犳硶鍑虹墖钀芥灦");
+                    .eq(DownWorkstation::getEnableState, Const.SLOT_ON).in(DownWorkstation::getWorkstationId, workList));
+//            log.info("鏋跺瓙琚鐢紝鏃犳硶鍑虹墖钀芥灦");
             if (CollectionUtils.isEmpty(downWorkstationList)) {
                 log.info("绗煎瓙琚鐢紝鏃犳硶璧版満姊拌噦涓嬬墖");
                 //璧颁汉宸ヤ笅鐗�
@@ -348,10 +354,8 @@
             List<DownGlassInfoDTO> downGlassInfoDTOList = downGlassInfoService.queryWorkStationIsIn(Boolean.TRUE);
             List<String> downGlassFlowList = downGlassInfoDTOList.stream().map(item -> item.getFlowCardId() + ":" + item.getLayer()).collect(Collectors.toList());
             if (CollectionUtils.isEmpty(downGlassFlowList)) {
-                //鏋跺瓙閮芥湭缁戝畾娴佺▼鍗★紝鍑虹鍐呭瓙鏁伴噺鏈�澶氬昂瀵告渶澶х殑鐜荤拑
-                DownStorageCageDetails downStorageCageDetails = downStorageCageDetailsService.getGlassInfoMaxCount();
-                //缁戝畾娴佺▼鍗★紝鏇存柊鐜荤拑鐘舵�侊紝鐢熸垚鍑虹墖浠诲姟锛�
-                tempGlassId = downStorageCageDetails.getGlassId();
+                //鏋跺瓙閮芥湭缁戝畾娴佺▼鍗★紝鍑虹鍐呭瓙鏁伴噺鏈�澶氬昂瀵告渶澶х殑鐜荤拑id,鏃�  鍒欒繑鍥炴壂鎻忔壂鍒扮殑鐜荤拑id杩涜鍑虹墖
+                tempGlassId = downStorageCageDetailsService.getGlassInfoMaxCount(glassId);
                 isBind = Boolean.TRUE;
                 break loop;
             }
@@ -362,9 +366,8 @@
 //                List<DownWorkstation> emptyShelfList = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>()
 //                        .isNull(DownWorkstation::getFlowCardId));
                 if (isEmptyShelf) {
-                    DownStorageCageDetails downStorageCageDetails = downStorageCageDetailsService.getGlassInfoMaxCount();
-                    //缁戝畾娴佺▼鍗★紝鏇存柊鐜荤拑鐘舵�侊紝鐢熸垚鍑虹墖浠诲姟
-                    tempGlassId = downStorageCageDetails.getGlassId();
+                    //鏋跺瓙閮芥湭缁戝畾娴佺▼鍗★紝鍑虹鍐呭瓙鏁伴噺鏈�澶氬昂瀵告渶澶х殑鐜荤拑id,鏃�  鍒欒繑鍥炴壂鎻忔壂鍒扮殑鐜荤拑id杩涜鍑虹墖
+                    tempGlassId = downStorageCageDetailsService.getGlassInfoMaxCount(glassId);
                     isBind = Boolean.TRUE;
                     break loop;
                 }
@@ -435,7 +438,8 @@
         }
     }
 
-    public Boolean generateDownGlassOutTask(String glassId, Integer taskType, Boolean isBind, DownStorageCageDetails cageDetails) {
+    public Boolean generateDownGlassOutTask(String glassId, Integer taskType, Boolean
+            isBind, DownStorageCageDetails cageDetails) {
         //鎸夌幓鐠僫d鑾峰彇鐜荤拑淇℃伅
         DownStorageCageDetails downStorageCageDetails = null;
         if (glassId.equals(cageDetails.getGlassId())) {
@@ -443,19 +447,17 @@
             taskType = 3;
         } else {
             downStorageCageDetails = downStorageCageDetailsService.getOne(new LambdaQueryWrapper<DownStorageCageDetails>()
-                    .eq(DownStorageCageDetails::getGlassId, glassId));
+                    .eq(DownStorageCageDetails::getGlassId, glassId).eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN));
         }
 
         Integer endCell = null;
-        if (isBind) {
+        if (!isBind) {
             //鑾峰彇绌烘灦瀛愪俊鎭紝灏嗙┖鏋跺瓙淇℃伅缁戝畾娴佺▼鍗�
             DownWorkstation emptyDownWorkstation = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>()
                     .isNull(DownWorkstation::getFlowCardId).orderByDesc(DownWorkstation::getWorkstationId).last("limit 1"));
             if (null != emptyDownWorkstation) {
                 log.info("鑾峰彇鍒扮┖鏋跺瓙淇℃伅锛岀粦瀹氭祦绋嬪崱");
-                emptyDownWorkstation.setFlowCardId(downStorageCageDetails.getFlowCardId());
-                emptyDownWorkstation.setLayer(downStorageCageDetails.getLayer());
-                downWorkstationService.updateById(emptyDownWorkstation);
+                downWorkstationService.updateFlowCardIdAndCount(downStorageCageDetails.getFlowCardId(), downStorageCageDetails.getLayer(), emptyDownWorkstation.getWorkstationId());
                 endCell = emptyDownWorkstation.getWorkstationId();
             } else {
                 log.info("娌℃湁绌烘灦瀛愪俊鎭紝鏃犳硶缁戝畾娴佺▼鍗�");
@@ -475,10 +477,18 @@
             return Boolean.FALSE;
         }
         //鏇存柊钀芥灦鐜荤拑鏁伴噺
+        if (endCell == 7) {
+            downWorkstationService.update(new UpdateWrapper<DownWorkstation>().eq("flow_card_id", downStorageCageDetails.getFlowCardId())
+                    .eq("layer", downStorageCageDetails.getLayer()).setSql("other_number = other_number +1"));
+        } else {
+            downWorkstationService.update(new UpdateWrapper<DownWorkstation>().eq("flow_card_id", downStorageCageDetails.getFlowCardId())
+                    .eq("layer", downStorageCageDetails.getLayer()).setSql("racks_number = racks_number +1"));
+        }
 
         //鐢熸垚浠诲姟淇℃伅
         DownGlassInfo downGlassInfo = new DownGlassInfo();
         BeanUtils.copyProperties(downStorageCageDetails, downGlassInfo);
+        //todo锛氳惤鏋剁墖搴�
         downGlassInfoService.save(downGlassInfo);
         //鐢熸垚浠诲姟淇℃伅
         GlassInfo glassInfo = new GlassInfo();
@@ -492,12 +502,12 @@
         downGlassTask.setStartCell(startCell);
         downGlassTask.setGlassId(glassInfo.getGlassId());
         downGlassTask.setEndCell(endCell);
-        downGlassTask.setTaskType(taskType + "");
+        downGlassTask.setTaskType(taskType);
         downGlassTask.setWidth((int) glassInfo.getWidth());
         downGlassTask.setHeight((int) glassInfo.getHeight());
         downGlassTask.setFlowCardId(glassInfo.getFlowCardId());
         downGlassTask.setLayer(glassInfo.getLayer());
-        downGlassTask.setTaskStauts(0);
+        downGlassTask.setTaskStatus(0);
         downGlassTask.setCreateTime(new Date());
         downGlassTaskService.save(downGlassTask);
         //鍚憄lc鍙戦�佸懡浠�
@@ -505,7 +515,8 @@
                 startCell, endCell, taskType);
     }
 
-    private Boolean sendMessageToPlc(int width, int height, int thickness, int startCell, int endCell, int taskType) {
+    private Boolean sendMessageToPlc(int width, int height, int thickness, int startCell, int endCell,
+                                     int taskType) {
         S7control s7control = S7object.getinstance().plccontrol;
         PlcParameterObject plcMesObject = S7object.getinstance().PlcMesObject;
         s7control.writeWord(plcMesObject.getPlcParameter("Glass_width").getAddress(), width);
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.json b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.json
index ac8379f..de826b1 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.json
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.json
@@ -12,7 +12,7 @@
 		{
 			"codeId": "requestID",
 			"addressIndex": "2",
-			"addressLenght": "30"
+			"addressLenght": "20"
 		},
 		{
 			"codeId": "currentCell",
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-cz.yml b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-cz.yml
index 3149cc6..c4c456e 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-cz.yml
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-cz.yml
@@ -10,7 +10,7 @@
           password: beibo.123/
           driver-class-name: com.mysql.cj.jdbc.Driver
         salve_hangzhoumes:
-          url: jdbc:sqlserver://192.168.30.101:1433;databasename=hangzhoumes
+          url: jdbc:sqlserver://192.168.10.2:1433;databasename=hangzhoumes
           username: sa
           password: beibo.123/
           driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-dev.yml b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-dev.yml
index 3097382..f89522e 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-dev.yml
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-dev.yml
@@ -14,6 +14,11 @@
           username: sa
           password: beibo.123/
           driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+        pp:
+          url: jdbc:mysql://127.0.0.1:3306/pp?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
   cloud:
     nacos:
       discovery:
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
index b13162f..8df8e09 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
@@ -3,7 +3,7 @@
 
 spring:
   profiles:
-    active: dev
+    active: cz
   application:
     name: unLoadGlass
 
@@ -14,8 +14,10 @@
     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
 
 mes:
-  maxWidth: 1000    #涓嬬墖鐨勬渶澶у搴�
-  maxHeight: 1000   #涓嬬墖鐨勬渶澶ч珮搴�
+  maxWidth: 2500    #涓嬬墖鐨勬渶澶у搴�
+  maxHeight: 2000   #涓嬬墖鐨勬渶澶ч珮搴�
+  minWidth: 400    #涓嬬墖鐨勬渶灏忓搴�
+  minHeight: 400   #涓嬬墖鐨勬渶灏忛珮搴�
   throughWidth: 3000
-  throughHeight: 3000
+  throughHeight: 2500
   threshold: 5      #涓嬬墖鐨勬渶澶ч槇鍊�
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml
index 76a9216..1930840 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml
@@ -10,7 +10,7 @@
     <resultMap id="downGlassInfo" type="com.mes.downworkstation.entity.dto.DownGlassInfoDTO">
         <result column="flow_card_id" property="flowCardId"/>
         <result column="layer" property="layer"/>
-        <result column="count" property="count"/>
+        <result column="racks_number" property="racksNumber"/>
         <collection property="glassInfoList" ofType="com.mes.glassinfo.entity.GlassInfo">
             <id column="id" property="id"/>
             <result column="flow_card_id" property="flowCardId"/>
@@ -45,31 +45,29 @@
     </select>
 
     <select id="queryWorkStationIsIn" resultMap="downGlassInfo">
-        SELECT T.*
+        SELECT
+        T.FLOW_CARD_ID,
+        T.LAYER,
+        T.RACKS_NUMBER
         <if test="!isDownload">
             ,T1.*
         </if>
-        FROM (
-        SELECT T.FLOW_CARD_ID,
-        T.LAYER,
-        COUNT(T.LAYER) AS COUNT
         FROM
         DOWN_WORKSTATION T
-        LEFT JOIN DOWN_GLASS_INFO T1 ON T.FLOW_CARD_ID = T1.FLOW_CARD_ID
-        GROUP BY T.FLOW_CARD_ID,LAYER
-        HAVING T.FLOW_CARD_ID IS NOT NULL
-        ) T
         INNER JOIN GLASS_INFO T1 ON T.FLOW_CARD_ID = T1.FLOW_CARD_ID
         AND T.LAYER = T1.LAYER
         LEFT JOIN DOWN_GLASS_INFO T2 ON T1.GLASS_ID = T2.GLASS_ID
         <where>
-            <if test="isDownload">
+            <if test="!isDownload">
                 AND T2.GLASS_ID IS NULL
             </if>
-            <if test="!isDownload">
+            <if test="isDownload">
                 AND T2.GLASS_ID IS not NULL
             </if>
         </where>
-        order by t.count desc
+        ORDER BY
+        T.RACKS_NUMBER DESC,
+        T1.TEMPERING_LAYOUT_ID,
+        T1.TEMPERING_FEED_SEQUENCE DESC
     </select>
 </mapper>
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java
index 7283d26..4029a6e 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java
@@ -12,9 +12,11 @@
 import com.mes.downstorage.service.impl.DownStorageCageDetailsServiceImpl;
 import com.mes.downstorage.service.impl.DownStorageCageServiceImpl;
 
+import com.mes.downworkstation.entity.DownWorkstation;
 import com.mes.downworkstation.service.DownWorkstationService;
 import com.mes.downworkstation.service.impl.DownWorkstationServiceImpl;
 import com.mes.glassinfo.service.impl.GlassInfoServiceImpl;
+import com.mes.job.DownLoadCacheGlassTask;
 import com.mes.utils.Result;
 import lombok.extern.slf4j.Slf4j;
 import org.junit.Test;
@@ -97,14 +99,14 @@
     @Test
     public void testupdateFlowCardIdAndCount() {
         log.info("缁戝畾娴佺▼鍗″彿鍜屾暟閲�");
-        downWorkstationServiceImpl.updateFlowCardIdAndCount("1", 1, 1);
+        downWorkstationServiceImpl.updateFlowCardIdAndCount("NG24060401A020", 1, 2);
 
     }
 
     @Test
     public void testplc() {
         log.info("娴嬭瘯");
-        glassInfoServiceImpl.getGlassInfoCountByFlowCardId("NG24030702A01");
+        glassInfoServiceImpl.getGlassInfoCountByFlowCardId("NG24030702A01",1);
 
     }
 
@@ -190,15 +192,41 @@
     }
 
     @Test
+    public void updateDownWorkstationstate() {
+
+        DownWorkstation downWorkstation=  new DownWorkstation();
+
+        downWorkstation.setId(1);
+        downWorkstation.setEnableState(0);
+        downWorkstationServiceImpl.updateDownWorkstationstate(downWorkstation);
+    }
+
+
+    @Test
+    public void updateDownstate() {
+
+        DownStorageCage downStorageCage=  new DownStorageCage();
+
+        downStorageCage.setId(1);
+        downStorageCage.setEnableState(0);
+        downStorageCageServiceImpl.updateDownStorageCage(downStorageCage);
+    }
+
+
+ /*   @Test
     public void updateDownStorageCage() {
 
 
         DownStorageCage downStorageCage=  new DownStorageCage();
-        downStorageCage.setEnableState("0");
+        downStorageCage.setEnableState(0);
         downStorageCage.setId(1);
         downStorageCageService.updateDownStorageCage(downStorageCage);
 
-    }
+    }*/
+
+
+
+
 
 
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/pom.xml b/hangzhoumesParent/moduleService/pom.xml
index 005b896..55ea5f6 100644
--- a/hangzhoumesParent/moduleService/pom.xml
+++ b/hangzhoumesParent/moduleService/pom.xml
@@ -18,6 +18,7 @@
         <module>LoadGlassModule</module>
         <module>TemperingGlassModule</module>
         <module>UnLoadGlassModule</module>
+        <module>GlassStorageModule</module>
     </modules>
 
     <properties>

--
Gitblit v1.8.0