From bb37f664476c01aefd93dd9b8856851f11d4d3cf Mon Sep 17 00:00:00 2001
From: ZengTao <2773468879@qq.com>
Date: 星期一, 15 七月 2024 08:48:02 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes

---
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java                          |    4 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java                            |    4 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java                              |   76 +-
 UI-Project/src/views/Caching/cachingbefore.vue                                                                                       |    2 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeLayoutServiceImpl.java                            |   22 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeLayoutService.java                                     |   16 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml                                  |   24 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java |   18 
 UI-Project/src/assets/ypccche.png                                                                                                    |    0 
 UI-Project/src/assets/ypcc.png                                                                                                       |    0 
 UI-Project/package.json                                                                                                              |    3 
 UI-Project/src/views/largescreen/largescreen.vue                                                                                     |  482 +++++++++++---------
 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          |    9 
 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 
 UI-Project/src/lang/zh.js                                                                                                            |   57 ++
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java    |   11 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java     |    2 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstation.java                  |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/common/S7object.java                                  |    9 
 /dev/null                                                                                                                            |  311 -------------
 UI-Project/src/views/PurchaseReturn/purchaseStorage.vue                                                                              |    2 
 UI-Project/src/main.js                                                                                                               |    6 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeLayoutMapper.java                                       |   20 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java    |  108 +---
 UI-Project/package-lock.json                                                                                                         |  107 ++++
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java       |   12 
 28 files changed, 640 insertions(+), 696 deletions(-)

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/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..224e10b 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: '鍏ㄩ儴鍏ュ簱鐘舵��',
+
+        
+    }
 }
\ No newline at end of file
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/views/Caching/cachingbefore.vue b/UI-Project/src/views/Caching/cachingbefore.vue
index 04a819f..e58befc 100644
--- a/UI-Project/src/views/Caching/cachingbefore.vue
+++ b/UI-Project/src/views/Caching/cachingbefore.vue
@@ -42,7 +42,7 @@
 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 {  
diff --git a/UI-Project/src/views/PurchaseReturn/purchaseStorage.vue b/UI-Project/src/views/PurchaseReturn/purchaseStorage.vue
index 10bf427..d987eb8 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();
diff --git a/UI-Project/src/views/largescreen/largescreen.vue b/UI-Project/src/views/largescreen/largescreen.vue
index a972dbe..4f2d4ae 100644
--- a/UI-Project/src/views/largescreen/largescreen.vue
+++ b/UI-Project/src/views/largescreen/largescreen.vue
@@ -1,211 +1,291 @@
 <template>  
     <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;" v-loading="loading">
       <el-scrollbar height="600px">
-  <div id="app" style="margin-top: 20px;">  
-    <div  
-      :style="{ width: `${olWidth}px`, height: `${olHeight}px`,position: 'relative' }"  
-    > 
-    <div  
-      v-for="(rect, index) in adjustedRects"  
-      :key="rect.glass_id"  
-      class="rect"  
-      @click="showDialog(rect.glass_id)"  
-      :style="{ position: 'absolute', 
-      top: `${rect.y_axis}px`, left: `${rect.x_axis}px`, width: `${rect.width}px`, height: `${rect.height}px`,
-      backgroundColor: getRectColor(rect.glass_state)
-       }"  
-    >
-     <!-- 绠ご -->  
-     <!-- <div id="arrow"></div>  
-     <div id="line"></div>   -->
-     <!-- <div  class="centered-text" >NG24030401B01</div> -->
-     <div  class="centered-text">
-    <div>{{ rect.process_id }}</div>
-    <div style="margin-top: 50px;margin-left: -85px;">{{ rect.widtha }}*{{ rect.heighta }}</div>  
-  </div>
+  <div id="top" style="height: 150px;display: flex;">  
+    <div v-for="(rect, index) in adjustedRects"
+     :key="index" 
+     :style="{ width: '1000px', height: '100px',margin: '5px',}">
+     <div ref="setChartDom(index, $el)" style="width: 100%; height: 100%;"></div>  
+      <div style="text-align: center;">
+      {{ rect.thisProcess }}</div>
+    </div>  
   </div> 
-  <!-- 鐐瑰嚮寮瑰嚭 -->
-  <el-dialog v-model="blind" top="30vh" width="15%" style="text-align: center;">
-        <el-button type="warning" plain :icon="Delete" @click="handleDamage(currentGlassId)"  style="width: 140px;margin-left: 10px;">
-          {{ $t('order.dilapidation') }}
-        </el-button>
-        <el-button  type="danger" plain @click="handleManualTake(currentGlassId)" style="width: 140px;margin-top: 10px;">
-          <el-icon class="el-icon--right"><Upload /></el-icon>
-          {{ $t('order.Takeaway') }}</el-button>
-  </el-dialog> 
-   </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/d1.png" alt="" style="margin-left: -30px; width: 110%;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="10vh" width="80%" :title="$t('large.brokeno')">
+    <el-table height="500" 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">
+        <el-button @click="blinda = false">{{ $t('large.close') }}</el-button>
+      </div>
+    </template>
+  </el-dialog>
 </template>  
-<script setup lang="ts">  
+<script setup>  
 import { Delete, Upload } from '@element-plus/icons-vue'
 import { ElMessage, ElMessageBox } from 'element-plus'
-import { ref, onMounted, onBeforeUnmount } from 'vue';  
+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()
-  let language = ref(localStorage.getItem('lang') || 'zh')
-const blind = ref(false)
-const olWidth = ref(); 
-const olHeight = ref();
-const process_id = ref(); // 鐢ㄤ簬瀛樺偍process_id鐨勫搷搴斿紡寮曠敤 
-const glass_id = ref();
-// const rects = ref([]); // 鐢ㄤ簬瀛樺偍鐭╁舰鏁版嵁鐨勫搷搴斿紡寮曠敤  
-const currentGlassId = ref(null); // 瀛樺偍褰撳墠鐐瑰嚮鐭╁舰鐨� glass_id  
-const adjustedRects = ref([]);
-// const handleBind = (row) => {
-//   blind.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
-// };
-// 鏄剧ず瀵硅瘽妗嗗苟璁剧疆褰撳墠 glass_id  
-function showDialog(glassId: number) {  
-  currentGlassId.value = glassId;  
-  blind.value = true;  
-}  
-onMounted(async () => {  
-  try {  
-    const response = await request.post('/cacheGlass/taskCache/currentCutTerritory'); // 鏇挎崲涓轰綘鐨凙PI绔偣  
-    if (response.code === 200) {  
-      // const process_id = response.data[0].process_id
-      const rawRects = response.data; // 璁剧疆鐭╁舰鏁版嵁  
-      console.log(response.data);
-      const { olWidth: newolWidth, olHeight: newolHeight, process_id: newprocess_id ,glass_id:newglass_id } = response.data; // 鑾峰彇灏哄  
-      olWidth.value = newolWidth; // 璁剧疆瀹瑰櫒瀹藉害  
-      olHeight.value = newolHeight; // 璁剧疆瀹瑰櫒楂樺害  
-      process_id.value = newprocess_id;  
-      glass_id.value = newglass_id;
-
-      adjustedRects.value = rawRects.map(rect => ({  
-        ...rect, // 澶嶅埗鍘熷瀵硅薄鐨勫叾浠栧睘鎬�  
-        x_axis: (rect.x_axis*100) * 0.003, // 灏唜鍊奸櫎浠�3  
-        y_axis: (rect.y_axis*100) * 0.003,
-        width: (rect.width*100) * 0.002 ,
-        widtha: rect.width ,
-        heighta: rect.height ,
-        height:( rect.height*100) * 0.002 ,
-        glass_state: rect.glass_state
-      }));  
-      console.log(adjustedRects.value);
-      
-
-      //   console.log( (rect.width*100) / 300 );
-    } else {  
-      // console.error('Failed to fetch rectangles from API.');  
-      console.error('Failed to fetch rects from API.'); 
-    }  
-  } catch (error) {  
-    // console.error('Error fetching rectangles :', error);
-    console.error('Error fetching rects :', error);  
-  }  
-}); 
-// 鐮存崯
-const handleDamage = async () => {
-  try  {
-    var url="/cacheGlass/taskCache/identControls?identId="+currentGlassId.value+'&controlsId='+201;
-      console.log(url);
-      const response = await request.post(url)
-  // const response = await request.post('/cacheGlass/taskCache/identControls', {
-  //   identId: currentGlassId.value,
-  //   controlsId: 201,
-  //   })
-    if (response.code == 200) {
-      // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
-      ElMessage.success(response.message);
-      // window.location.reload() 
-      blind.value = false;
-      updateRectStatus(currentGlassId.value, 201); 
-    } else {
-      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
-      ElMessage.error(response.msg);
-    }
-}
-catch (error) {
-    // 澶勭悊閿欒
-    console.error(error);
-  }
-}
-// // 浜哄伐鎷胯蛋
-const handleManualTake = async () => {
-  try  {
-    var url="/cacheGlass/taskCache/identControls?identId="+currentGlassId.value+'&controlsId='+200;
-      console.log(url);
-      const response = await request.post(url)
-  // const response = await request.post('/cacheGlass/taskCache/identControls', {
-  //   identId: currentGlassId.value,
-  //   controlsId: 200,
-  //   })
-    if (response.code == 200) {
-      // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
-      ElMessage.success(response.message);
-      // window.location.reload() 
-      blind.value = false;
-      updateRectStatus(currentGlassId.value, 200); 
-    } else {
-      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
-      ElMessage.error(response.msg);
-    }
-}
-catch (error) {
-    // 澶勭悊閿欒
-    console.error(error);
-  }
-}
-function getRectColor(state: number): string {  
-  switch (state) {  
+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;
+};
+function getStatusType(warehousing) {  
+  switch (warehousing) {  
     case 0:  
-      return '#e1f3d8';  
-    case 100:  
-      return '#c8c9cc';  
-    case 110:  
-      return '#b3e19d';  
-    case 120:  
-      return '#f89898';  
-    case 200: 
-      return 'lightblue';  
-    case 201:  
-      return '#f3d19e';  
-    default:  
-      return '#911005'; // 榛樿棰滆壊  
+      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;  
   }  
 } 
-// 鏇存柊鐭╁舰鐘舵��  
-function updateRectStatus(glassId: string, status: number) {  
-  adjustedRects.value.forEach(rect => {  
-    if (rect.glass_id === glassId) {  
-      rect.glass_state = status; // 鏇存柊鐭╁舰鐨勭姸鎬�  
-    }  
-  });  
-}
-const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/cacheGlass`;
-// 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
-const handleMessage = (data) => {
-  // 鏇存柊 tableData 鐨勬暟鎹�
+onMounted(() => {  
+  socket = new WebSocket(socketUrl);  
+  socket.onmessage = (event) => {  
+    const data = JSON.parse(event.data);  
+    adjustedRects.value = data.device[0].map(rect => ({  
+      ...rect,  
+      completedQuantity: rect.completedQuantity,  
+      breakageQuantity: rect.breakageQuantity,  
+      thisProcess: rect.thisProcess,  
+    }));  
+    console.log(adjustedRects.value);
+    // updateCharts();
+  };
+    adjustedRects.value.forEach((rect, index) => {  
+      initChart(index, rect);  
+    });  
+  // };  
+});  
   
-  // adjustedRects.value = data.currentCutTerritory[0]
-  adjustedRects.value = data.currentCutTerritory[0].map(rect => ({  
-        ...rect, // 澶嶅埗鍘熷瀵硅薄鐨勫叾浠栧睘鎬�  
-        x_axis: (rect.x_axis*100) * 0.003, // 灏唜鍊奸櫎浠�3  
-        y_axis: (rect.y_axis*100) * 0.003,
-        width: (rect.width*100) * 0.002 ,
-        widtha: rect.width ,
-        heighta: rect.height ,
-        height:( rect.height*100) * 0.002 ,
-        glass_state: rect.glass_state
-      }));  
- // console.log("鏇存柊鍚庢暟鎹�", tableData);
+  
+function initChart(index, rect) {  
+  const { dom } = chartRefs.value[index] || { dom: null };  
+  if (dom) {  
+    const chart = echarts.init(dom);  
+    const option = {   
+    tooltip: {  
+      trigger: 'item'  
+    },  
+    legend: {  
+      orient: 'vertical',  
+      left: 'left',  
+    },  
+    series: [  
+      {  
+        name: '楗肩姸鍥�',  
+        type: 'pie',  
+        radius: ['50%','70%'],  
+        data: [  
+          {value: rect.completedQuantity, name: '鍔犲伐鏁伴噺'},  
+          {value: rect.breakageQuantity, name: '娆$牬鏁伴噺'},  
+        console.log(rect.breakageQuantity)
+        ], 
+        emphasis: {  
+          itemStyle: {  
+            shadowBlur: 10,  
+            shadowOffsetX: 0,  
+            shadowColor:  'rgba(0, 0, 0, 0.5)'  
+          }  
+        }  
+      }  
+    ]  
+  };  
+    chart.setOption(option);  
+    chartRefs.value[index] = { ...chartRefs.value[index], chart };  
 
-};
-
-// 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
+}  
+console.log(chartRefs.value[index]);
+}  
+  
+// 鏇存柊鍥捐〃  
+// function updateCharts() {  
+//   adjustedRects.value.forEach((rect, index) => {  
+//     const { chart } = chartRefs.value[index] || { chart: null };  
+//     if (chart) {  
+//       chart.setOption({  
+//         series: [{  
+//           data: [  
+//             { value: rect.completedQuantity, name: '鍔犲伐鏁伴噺' },  
+//             { value: rect.breakageQuantity, name: '娆$牬鏁伴噺' },  
+//           ],  
+//         }],  
+//       });  
+//     }  
+//   });  
+// }  
+// 鍒濆鍖栧浘琛�  
+// function initChart(index, rect) {  
+//   const chartDom = ref(`chartDom${index}`).value;  
+//   console.log(ref(`chartDom${index}`).value);
+//   const chart = echarts.init(chartDom);  
+//   const option = {   
+//     tooltip: {  
+//       trigger: 'item'  
+//     },  
+//     legend: {  
+//       orient: 'vertical',  
+//       left: 'left',  
+//     },  
+//     series: [  
+//       {  
+//         name: '楗肩姸鍥�',  
+//         type: 'pie',  
+//         radius: ['50%','70%'],  
+//         data: [  
+//           {value: rect.completed, name: '鍔犲伐鏁伴噺'},  
+//           {value: rect.breakage, name: '娆$牬鏁伴噺'},  
+//         ],  
+//         emphasis: {  
+//           itemStyle: {  
+//             shadowBlur: 10,  
+//             shadowOffsetX: 0,  
+//             shadowColor:  'rgba(0, 0, 0, 0.5)'  
+//           }  
+//         }  
+//       }  
+//     ]  
+//   };  
+//   chart.setOption(option);  
+// }  
+// 娓呯悊 WebSocket 杩炴帴  
+onUnmounted(() => {  
+  socket.close();  
+});  
 
 onMounted(() => {
   // fetchFlowCardId();
   // fetchTableData(); // 鑾峰彇鏁版嵁
   initializeWebSocket(socketUrl, handleMessage);
 });
-
 onBeforeUnmount(() => {
   console.log("鍏抽棴浜�")
   closeWebSocket();
@@ -224,32 +304,8 @@
   align-items: center;  
   height: 100%; /* 纭繚div鍗犳嵁鏁翠釜鐭╁舰鐨勯珮搴� */  
 } 
-#rect {  
-  position: relative; /* 纭繚绠ご鍙互鐩稿浜庣煩褰㈠畾浣� */  
-  /* 鍏朵粬鏍峰紡 */  
-}  
-
-#arrow {  
-  position: absolute;  
-  top: 70%; /* 绠ご浣嶄簬鐭╁舰涓棿 */  
-  left: 200px; /* 绠ご鍦ㄧ煩褰㈠乏渚т竴浜涜窛绂� */  
-  transform: translateY(-50%); /* 鍨傜洿灞呬腑 */  
-  width: 0;  
-  height: 0;  
-  border-top: 10px solid transparent; /* 涓婅竟妗� */  
-  border-bottom: 10px solid transparent; /* 涓嬭竟妗� */  
-  border-right: 20px solid #911005; /* 鍙宠竟妗嗭紝褰㈡垚绠ご */  
-  /* 鏍规嵁闇�瑕佽皟鏁磋竟妗嗗ぇ灏忓拰棰滆壊 */  
-}  
-  
-#line {  
-  position: absolute;  
-  top: 70%; /* 鐩寸嚎浣嶄簬鐭╁舰涓棿 */  
-  left: 210px; /* 鐩寸嚎鍦ㄧ澶村彸渚т竴浜涜窛绂� */  
-  transform: translateY(-50%); /* 鍨傜洿灞呬腑 */  
-  height: 2px; /* 鐩寸嚎鐨勯珮搴� */  
-  width: 240px; /* 鐩寸嚎鐨勯暱搴︼紝鏍规嵁闇�瑕佽皟鏁� */  
-  background-color: #911005; /* 鐩寸嚎鐨勯鑹� */  
-}  
-
+#dialog-footer{
+  text-align: center;
+  margin-top: -15px;
+}
 </style>
\ No newline at end of file
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 c143b88..bd43bad 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
@@ -86,7 +86,7 @@
     public void saveGlassInfo(List<GlassInfo> glassinfo) {
         this.saveBatch(glassinfo);
     }
-
+/*
 
     @Override
     public int getGlassInfoCountByFlowCardId(String flowCardId,int layer) {
@@ -128,7 +128,7 @@
                 .collect(Collectors.toList());
         log.info("result666: {}", result);
         return result;
-    }
+    }*/
 
 
 
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..857d2a9
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/OptimizeLayoutMapper.java
@@ -0,0 +1,20 @@
+package com.mes.pp.mapper;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.pp.entity.OptimizeLayout;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-16
+ */
+@DS("pp")
+@Mapper
+public interface OptimizeLayoutMapper extends MPJBaseMapper<OptimizeLayout> {
+
+}
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/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/impl/EdgStorageCageServiceImpl.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java
index 01d94b9..c4b5266 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
@@ -122,9 +122,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/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/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/downstorage/service/impl/DownStorageCageServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java
index bd9433b..39639cb 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
@@ -105,6 +105,7 @@
         }
         return emptyList.get(0);
     }
+/*
 
     @Override
     public List<DownStorageCageDetails> selectCacheMax() {
@@ -124,6 +125,7 @@
 
         );
     }
+*/
 
 
     @Override
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 ddf347d..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
@@ -5,20 +5,18 @@
 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
@@ -34,43 +32,30 @@
     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);
         }
     }
 
@@ -78,22 +63,17 @@
     //缁戝畾鏋跺瓙
     @ApiOperation("缁戝畾鏋跺瓙")
     @PostMapping("/updateFlowCardId")
-    public ResponseEntity<Map<String, Object>> updateFlowCardId(@RequestBody DownWorkRequest request) {
+    public Result updateFlowCardId(@RequestBody DownWorkRequest request) {
 
         // 缁戝畾鏋跺瓙
-        downWorkstationService.updateFlowCardIdAndCount(request.getFlowCardId(),  request.getWorkstationId(), request.getLayer());
+        downWorkstationService.updateFlowCardIdAndCount(request.getFlowCardId(), request.getWorkstationId(), request.getLayer());
 
-        // 鏋勫缓鍝嶅簲鏁版嵁
-        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");
 
@@ -103,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);
         }
 
 
@@ -123,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 d507eb4..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
@@ -70,7 +70,7 @@
     /**
      * 浜哄伐涓嬬墖鏁伴噺
      */
-    private Integer artificialNumber;
+    private Integer otherNumber;
 
 
 }
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/service/DownWorkstationService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java
index 8c133f2..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
@@ -53,7 +53,7 @@
      * @param workstationId
      * @return 鏇存柊鏋跺瓙鍜屾暟閲�
      */
-    int updateFlowCardIdAndCount(String flowCardId, int workstationId,int layer);
+    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 c77fb1d..3d8482d 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
@@ -10,6 +10,7 @@
 import com.mes.downglassinfo.mapper.DownGlassInfoMapper;
 import com.mes.downglassinfo.service.DownGlassInfoService;
 import com.mes.downglassinfo.service.DownGlassTaskService;
+import com.mes.downstorage.entity.DownStorageCage;
 import com.mes.downworkstation.entity.DownWorkstation;
 import com.mes.downworkstation.entity.DownWorkstationTask;
 import com.mes.downworkstation.entity.DownWorkstionAndDownGlassinfo;
@@ -141,21 +142,22 @@
 
 
     @Override
-    public int updateFlowCardIdAndCount(String flowCardId,  int workstationId,int layer) {
+    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 artificialnumber=damageservice.count(queryWrapper);
+       int otherNumber=damageservice.count(queryWrapper);
         UpdateWrapper<DownWorkstation> updateWrapper = new UpdateWrapper<>();
         updateWrapper.set("total_quantity", glassInfoCount)
                 .set("flow_card_id", flowCardId)
                 .set("layer", layer)
-                .set("artificial_number", artificialnumber)
+                .set("other_number", otherNumber)
                 .eq("workstation_id", workstationId);
 
-        return baseMapper.update(new DownWorkstation(), updateWrapper);
+        this.update(updateWrapper);
+
     }
 
     @Override
@@ -193,6 +195,12 @@
     }
 
 
-
+    @Override
+    public boolean updateDownWorkstationstate(DownWorkstation downWorkstation) {
+        DownWorkstation downWork = baseMapper.selectById(downWorkstation.getId());
+        downWork.setEnableState(downWorkstation.getEnableState());
+        baseMapper.updateById(downWork);
+        return true;
+    }
 
 }
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 14e96bf..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,1);
-            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 06df117..686084b 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
@@ -30,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;
 
 /**
@@ -164,10 +161,7 @@
                 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;
                 }
             }
@@ -182,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;
                             }
                         }
                     }
@@ -215,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;
@@ -287,7 +284,8 @@
         }
     }
 
-    private Boolean generateTaskByShelf(String glassStatus06, String glassStatus11, Boolean flag08, String glassStatus13, List<DownStorageCageDetails> tempList, DownStorageCageDetails cageDetails, String glassId) {
+    private Boolean generateTaskByShelf(String glassStatus06, String glassStatus11, Boolean flag08, String
+            glassStatus13, List<DownStorageCageDetails> tempList, DownStorageCageDetails cageDetails, String glassId) {
         //鑾峰彇2涓満姊拌噦鑼冨洿鍐呯殑鏋跺瓙缁戝畾鐨勬祦绋嬪崱淇℃伅
         List<Integer> workList = new ArrayList();
 
@@ -440,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())) {
@@ -448,7 +447,7 @@
             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;
@@ -458,9 +457,7 @@
                     .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("娌℃湁绌烘灦瀛愪俊鎭紝鏃犳硶缁戝畾娴佺▼鍗�");
@@ -482,7 +479,7 @@
         //鏇存柊钀芥灦鐜荤拑鏁伴噺
         if (endCell == 7) {
             downWorkstationService.update(new UpdateWrapper<DownWorkstation>().eq("flow_card_id", downStorageCageDetails.getFlowCardId())
-                    .eq("layer", downStorageCageDetails.getLayer()).setSql("artificial_number = artificial_number +1"));
+                    .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"));
@@ -517,7 +514,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/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 76d153c..395722b 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java
@@ -190,7 +190,7 @@
         //downGlassTaskService.getUnloadingTaskState();
     }
 
-    @Test
+ /*   @Test
     public void updateDownStorageCage() {
 
 
@@ -199,7 +199,7 @@
         downStorageCage.setId(1);
         downStorageCageService.updateDownStorageCage(downStorageCage);
 
-    }
+    }*/
 
 
 

--
Gitblit v1.8.0