From a745fd53a1c8840a886c826c6a6bf0b8b226cd25 Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期四, 20 六月 2024 22:07:05 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java                                  |   36 +
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java      |    6 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java          |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java        |   18 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java |   68 +--
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/BigStorageCageFeedTaskService.java     |    3 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java    |    6 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/controller/TemperingGlassInfoController.java   |   53 +++
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-prod.yml                                                     |    5 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-prod.yml                                                    |    5 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/WebSocketConfig.java                                                |    8 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/mapper/BigStorageCageFeedTaskMapper.java       |    3 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java                                         |    3 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownCacheGlassTask.java                                          |   43 +-
 UI-Project/src/views/GlassStorage/MaterialRackManagement.vue                                                                                 |  405 +++++++++++++++++++++++++++
 UI-Project/src/router/index.js                                                                                                               |   13 
 UI-Project/package-lock.json                                                                                                                 |  193 ++++++++++++
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java                                                          |   14 
 UI-Project/package.json                                                                                                                      |    4 
 19 files changed, 801 insertions(+), 87 deletions(-)

diff --git a/UI-Project/package-lock.json b/UI-Project/package-lock.json
index ba2dc0c..d94acf9 100644
--- a/UI-Project/package-lock.json
+++ b/UI-Project/package-lock.json
@@ -11,6 +11,8 @@
         "@element-plus/icons-vue": "^2.1.0",
         "@vue-macros/reactivity-transform": "^0.3.23",
         "axios": "^1.6.8",
+        "chart.js": "^4.4.3",
+        "echarts": "^5.5.0",
         "element-plus": "^2.4.0",
         "moment": "^2.30.1",
         "pinia": "^2.1.6",
@@ -18,6 +20,7 @@
         "sortablejs": "^1.15.1",
         "sweetalert2": "^11.10.7",
         "vue": "^3.3.4",
+        "vue-echarts": "^6.7.3",
         "vue-i18n": "^9.13.1",
         "vue-router": "^4.2.4",
         "vxe-table": "^4.5.15",
@@ -28,6 +31,7 @@
         "@types/sortablejs": "^1.15.7",
         "@vitejs/plugin-vue": "^4.3.4",
         "http-proxy-middleware": "^3.0.0",
+        "sass": "^1.77.6",
         "vite": "^4.4.9"
       }
     },
@@ -498,6 +502,11 @@
       "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
       "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
     },
+    "node_modules/@kurkle/color": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmmirror.com/@kurkle/color/-/color-0.3.2.tgz",
+      "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw=="
+    },
     "node_modules/@popperjs/core": {
       "name": "@sxzz/popperjs-es",
       "version": "2.11.7",
@@ -917,6 +926,17 @@
         "node": ">=0.8"
       }
     },
+    "node_modules/chart.js": {
+      "version": "4.4.3",
+      "resolved": "https://registry.npmmirror.com/chart.js/-/chart.js-4.4.3.tgz",
+      "integrity": "sha512-qK1gkGSRYcJzqrrzdR6a+I0vQ4/R+SoODXyAjscQ/4mzuNzySaMCd+hyVxitSY1+L2fjPD1Gbn+ibNqRmwQeLw==",
+      "dependencies": {
+        "@kurkle/color": "^0.3.0"
+      },
+      "engines": {
+        "pnpm": ">=8"
+      }
+    },
     "node_modules/chokidar": {
       "version": "3.5.3",
       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
@@ -1012,6 +1032,15 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/dom-zindex/-/dom-zindex-1.0.1.tgz",
       "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==",
+      "dependencies": {
+        "tslib": "2.3.0",
+        "zrender": "5.5.0"
+      }
     },
     "node_modules/element-plus": {
       "version": "2.4.0",
@@ -1190,6 +1219,12 @@
       "engines": {
         "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
+    },
+    "node_modules/immutable": {
+      "version": "4.3.6",
+      "resolved": "https://registry.npmmirror.com/immutable/-/immutable-4.3.6.tgz",
+      "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==",
+      "dev": true
     },
     "node_modules/is-binary-path": {
       "version": "2.1.0",
@@ -1500,6 +1535,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/rollup": {
       "version": "3.29.4",
       "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
@@ -1514,6 +1554,23 @@
       },
       "optionalDependencies": {
         "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/sass": {
+      "version": "1.77.6",
+      "resolved": "https://registry.npmmirror.com/sass/-/sass-1.77.6.tgz",
+      "integrity": "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==",
+      "dev": true,
+      "dependencies": {
+        "chokidar": ">=3.0.0 <4.0.0",
+        "immutable": "^4.0.0",
+        "source-map-js": ">=0.6.2 <2.0.0"
+      },
+      "bin": {
+        "sass": "sass.js"
+      },
+      "engines": {
+        "node": ">=14.0.0"
       }
     },
     "node_modules/sortablejs": {
@@ -1563,6 +1620,11 @@
       "engines": {
         "node": ">=8.0"
       }
+    },
+    "node_modules/tslib": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
+      "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
     },
     "node_modules/undici-types": {
       "version": "5.26.5",
@@ -1646,6 +1708,55 @@
         "@vue/runtime-dom": "3.3.4",
         "@vue/server-renderer": "3.3.4",
         "@vue/shared": "3.3.4"
+      }
+    },
+    "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": {
@@ -1743,6 +1854,14 @@
       },
       "engines": {
         "node": ">=0.8"
+      }
+    },
+    "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==",
+      "dependencies": {
+        "tslib": "2.3.0"
       }
     }
   },
@@ -1986,6 +2105,11 @@
       "version": "1.4.15",
       "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
       "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+    },
+    "@kurkle/color": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmmirror.com/@kurkle/color/-/color-0.3.2.tgz",
+      "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw=="
     },
     "@popperjs/core": {
       "version": "npm:@sxzz/popperjs-es@2.11.7",
@@ -2297,6 +2421,14 @@
         "crc-32": "~1.2.0"
       }
     },
+    "chart.js": {
+      "version": "4.4.3",
+      "resolved": "https://registry.npmmirror.com/chart.js/-/chart.js-4.4.3.tgz",
+      "integrity": "sha512-qK1gkGSRYcJzqrrzdR6a+I0vQ4/R+SoODXyAjscQ/4mzuNzySaMCd+hyVxitSY1+L2fjPD1Gbn+ibNqRmwQeLw==",
+      "requires": {
+        "@kurkle/color": "^0.3.0"
+      }
+    },
     "chokidar": {
       "version": "3.5.3",
       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
@@ -2358,6 +2490,15 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/dom-zindex/-/dom-zindex-1.0.1.tgz",
       "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==",
+      "requires": {
+        "tslib": "2.3.0",
+        "zrender": "5.5.0"
+      }
     },
     "element-plus": {
       "version": "2.4.0",
@@ -2493,6 +2634,12 @@
         "is-plain-obj": "^3.0.0",
         "micromatch": "^4.0.5"
       }
+    },
+    "immutable": {
+      "version": "4.3.6",
+      "resolved": "https://registry.npmmirror.com/immutable/-/immutable-4.3.6.tgz",
+      "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==",
+      "dev": true
     },
     "is-binary-path": {
       "version": "2.1.0",
@@ -2684,6 +2831,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=="
+    },
     "rollup": {
       "version": "3.29.4",
       "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
@@ -2691,6 +2843,17 @@
       "devOptional": true,
       "requires": {
         "fsevents": "~2.3.2"
+      }
+    },
+    "sass": {
+      "version": "1.77.6",
+      "resolved": "https://registry.npmmirror.com/sass/-/sass-1.77.6.tgz",
+      "integrity": "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==",
+      "dev": true,
+      "requires": {
+        "chokidar": ">=3.0.0 <4.0.0",
+        "immutable": "^4.0.0",
+        "source-map-js": ">=0.6.2 <2.0.0"
       }
     },
     "sortablejs": {
@@ -2728,6 +2891,11 @@
       "requires": {
         "is-number": "^7.0.0"
       }
+    },
+    "tslib": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
+      "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
     },
     "undici-types": {
       "version": "5.26.5",
@@ -2768,6 +2936,23 @@
         "@vue/runtime-dom": "3.3.4",
         "@vue/server-renderer": "3.3.4",
         "@vue/shared": "3.3.4"
+      }
+    },
+    "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": {
@@ -2835,6 +3020,14 @@
         "wmf": "~1.0.1",
         "word": "~0.3.0"
       }
+    },
+    "zrender": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.5.0.tgz",
+      "integrity": "sha512-O3MilSi/9mwoovx77m6ROZM7sXShR/O/JIanvzTwjN3FORfLSr81PsUGd7jlaYOeds9d8tw82oP44+3YucVo+w==",
+      "requires": {
+        "tslib": "2.3.0"
+      }
     }
   }
 }
diff --git a/UI-Project/package.json b/UI-Project/package.json
index 6cade56..15242fb 100644
--- a/UI-Project/package.json
+++ b/UI-Project/package.json
@@ -11,6 +11,8 @@
     "@element-plus/icons-vue": "^2.1.0",
     "@vue-macros/reactivity-transform": "^0.3.23",
     "axios": "^1.6.8",
+    "chart.js": "^4.4.3",
+    "echarts": "^5.5.0",
     "element-plus": "^2.4.0",
     "moment": "^2.30.1",
     "pinia": "^2.1.6",
@@ -18,6 +20,7 @@
     "sortablejs": "^1.15.1",
     "sweetalert2": "^11.10.7",
     "vue": "^3.3.4",
+    "vue-echarts": "^6.7.3",
     "vue-i18n": "^9.13.1",
     "vue-router": "^4.2.4",
     "vxe-table": "^4.5.15",
@@ -28,6 +31,7 @@
     "@types/sortablejs": "^1.15.7",
     "@vitejs/plugin-vue": "^4.3.4",
     "http-proxy-middleware": "^3.0.0",
+    "sass": "^1.77.6",
     "vite": "^4.4.9"
   }
 }
diff --git a/UI-Project/src/router/index.js b/UI-Project/src/router/index.js
index 33ec397..764db3a 100644
--- a/UI-Project/src/router/index.js
+++ b/UI-Project/src/router/index.js
@@ -187,6 +187,19 @@
           ]
         },
 
+        {
+          path: 'GlassStorage',
+          name: 'GlassStorage',
+          component: () => import('../views/GlassStorage/MaterialRackManagement.vue'),
+          children:[
+            {
+              path: '/GlassStorage/MaterialRackManagement',
+              name: 'MaterialRackManagement',
+              component: () => import('../views/GlassStorage/MaterialRackManagement.vue')
+            }
+          ]
+         },
+
          /*----------- 鍙鍖栫郴缁� ----------------*/
          {
           path: 'Visualization',
diff --git a/UI-Project/src/views/GlassStorage/MaterialRackManagement.vue b/UI-Project/src/views/GlassStorage/MaterialRackManagement.vue
new file mode 100644
index 0000000..2b7b9cc
--- /dev/null
+++ b/UI-Project/src/views/GlassStorage/MaterialRackManagement.vue
@@ -0,0 +1,405 @@
+<template>
+  <div >
+    <el-card style="flex: 1; margin-left: 10px; " :loading="loading">
+      <div slot="header" class="clearfix" style="display: flex; align-items: center;">
+
+<!-- 宸︿晶鎸夐挳缁� -->
+<div >
+  <el-button type="success" size="mini" @click="handleInbound()">鍏ュ簱</el-button>
+  <el-button type="success" size="mini" @click="handleInbound()">鍚婅浣嶅叆搴�</el-button>
+  <el-button type="success" size="mini" @click="handleInbound()">娣诲姞鍘熺墖</el-button>
+</div>
+
+<!-- 鍙充晶閫夋嫨妗� -->
+<el-form-item style="margin-top: 15px; width: 150px;">
+  <el-select v-model="formData2.dzw" placeholder="璇烽�夋嫨鍚婅浣�">
+    <el-option label="鍚婅浣�1" value="鍚婅浣�1"></el-option>
+    <el-option label="鍚婅浣�2" value="鍚婅浣�2"></el-option>
+    <!-- 鏍规嵁瀹為檯鎯呭喌娣诲姞鏇村閫夐」 -->
+  </el-select>
+</el-form-item>
+
+</div>
+
+      <el-table
+        :data="tableData"
+       
+        style="width: 98%; height: 200px"
+        @selection-change="handleSelectionChange"
+        :header-cell-style="{ background: '#F2F3F5', color: '#1D2129' }"
+        ref="table"
+       
+        empty-text="No Data"
+      >
+       
+        <el-table-column prop="location" label="搴撲綅鍙�"></el-table-column>
+        <el-table-column prop="type" label="绫诲瀷"></el-table-column>
+        <el-table-column prop="length" label="闀垮害(mm)"></el-table-column>
+        <el-table-column prop="height" label="楂樺害(mm)"></el-table-column>
+        <el-table-column prop="thickness" label="鍘氬害(mm)"></el-table-column>
+        <el-table-column prop="quantity" label="鏁伴噺"></el-table-column>
+        <el-table-column prop="entry_time" label="鍏ュ簱鏃堕棿"></el-table-column>
+        <el-table-column prop="batchnumber" label="鎵规鍙�"></el-table-column>
+       
+        <el-table-column
+  align="center"
+  label="鏂欐灦鐘舵��"
+  min-width="80"
+  prop="shelf_status"
+>
+  <template #default="scope">
+    <el-tag :type="getTagType(scope.row.shelf_status)">
+      {{ scope.row.shelf_status === 1 ? '鍚敤' : '鏈惎鐢�' }}
+    </el-tag>
+  </template>
+</el-table-column>
+
+        <!-- 鎿嶄綔鍒� -->
+        <el-table-column label="鎿嶄綔" width="300">
+          <template #default="{ row }">
+            <el-button type="primary" size="mini" @click="handleEdit(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>
+           
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <el-table
+    :data="tasktableData"
+    style="width: 98%; height: 150px"
+    @selection-change="handleSelectionChange"
+    :header-cell-style="{ background: '#F2F3F5', color: '#1D2129' }"
+    ref="table"
+    empty-text="No Data"
+  >
+    <el-table-column prop="Glassid" label="Glassid"></el-table-column>
+    <el-table-column prop="taskDescription" label="浠诲姟鎻忚堪" width="250"></el-table-column>
+    <el-table-column prop="taskStatus" label="浠诲姟鐘舵��"></el-table-column>
+    <el-table-column prop="glassThickness" label="鐜荤拑鍘氬害"></el-table-column>
+    <el-table-column prop="glassFilm" label="鐜荤拑鑶滅郴"></el-table-column>
+    <el-table-column prop="creationTime" label="鍒涘缓鏃堕棿"></el-table-column>
+
+    <el-table-column
+      align="center"
+      label="浠诲姟鐘舵��"
+      min-width="80"
+      prop="taskStatus"
+    >
+      <template #default="scope">
+        <el-tag :type="getTagType2(scope.row.taskStatus)">
+          {{ scope.row.taskStatus == 'completed' ? '瀹屾垚' : '杩涜涓�' }}
+        </el-tag>
+      </template>
+    </el-table-column>
+
+    <!-- 鎿嶄綔鍒� -->
+    <el-table-column label="鎿嶄綔" width="350">
+      <template #default="{ row }">
+        <el-button type="primary" size="mini" @click="handleRestart(row)">閲嶆柊寮�濮�</el-button>
+        <el-button type="danger" size="mini" @click="handleDelete(row)">鍒犻櫎浠诲姟</el-button>
+        <el-button type="success" size="mini" @click="handleComplete(row)">浠诲姟瀹屾垚</el-button>
+      </template>
+    </el-table-column>
+  </el-table>
+
+    </el-card>
+
+    <div ref="chart" id="chart" style="width: 100%; height: 250px;"></div>
+ 
+   
+    <!-- 鍏ュ簱瀵硅瘽妗� -->
+    <el-dialog
+      title="鍏ュ簱"
+      v-model="dialogVisible"
+      width="30%"
+      :before-close="handleCloseDialog"
+    >
+      <el-form :model="formData" ref="form" label-width="80px">
+        <el-form-item label="杩涘簱鏂欐灦">
+          <el-select v-model="formData.shelf" placeholder="璇烽�夋嫨杩涘簱鏂欐灦">
+            <el-option label="A1" value="A1"></el-option>
+            <el-option label="B2" value="B2"></el-option>
+            <!-- 鏍规嵁瀹為檯鎯呭喌娣诲姞鏇村閫夐」 -->
+          </el-select>
+        </el-form-item>
+        <el-form-item label="棰滆壊鑶滅郴">
+          <el-select v-model="formData.color" placeholder="璇烽�夋嫨棰滆壊鑶滅郴">
+            <el-option label="Red" value="Red"></el-option>
+            <el-option label="Blue" value="Blue"></el-option>
+            <!-- 鏍规嵁瀹為檯鎯呭喌娣诲姞鏇村閫夐」 -->
+          </el-select>
+        </el-form-item>
+        <el-form-item label="瀹藉害">
+          <el-input v-model.number="formData.width" placeholder="璇疯緭鍏ュ搴�"></el-input>
+        </el-form-item>
+        <el-form-item label="楂樺害">
+          <el-input v-model.number="formData.height" placeholder="璇疯緭鍏ラ珮搴�"></el-input>
+        </el-form-item>
+        <el-form-item label="鍘氬害">
+          <el-input v-model.number="formData.thickness" placeholder="璇疯緭鍏ュ帤搴�"></el-input>
+        </el-form-item>
+        <el-form-item label="鏁伴噺">
+          <el-input v-model.number="formData.quantity" placeholder="璇疯緭鍏ユ暟閲�"></el-input>
+        </el-form-item>
+      </el-form>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="handleConfirmInbound">纭� 瀹�</el-button>
+      </div>
+    </el-dialog>
+    <div ref="chart" id="chart" style="width: 100%; height: 400px;"></div>
+  </div>
+</template>
+
+   
+
+
+<script setup>
+import { ref, onMounted, onBeforeUnmount } from 'vue'; // 瀵煎叆 Vue 3 鐨勬ā鍧�
+import * as echarts from 'echarts';
+
+
+    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',
+        batchnumber:"444",
+        shelf_status: 1
+      },
+      {
+        location: '2',
+        type: 'Type B',
+        length: '120',
+        height: '60',
+        thickness: '12',
+        quantity: '10',
+        entry_time: '2024-06-18',
+        batchnumber:"444",
+        shelf_status: 0
+      },
+      {
+        location: '3',
+        type: 'Type B',
+        length: '120',
+        height: '60',
+        thickness: '12',
+        quantity: '10',
+        entry_time: '2024-06-18',
+        batchnumber:"444",
+        shelf_status: 1
+      },
+      {
+        location: '4',
+        type: 'Type B',
+        length: '120',
+        height: '60',
+        thickness: '12',
+        quantity: '10',
+        entry_time: '2024-06-18',
+        batchnumber:"444",
+        shelf_status: 1
+      },
+      {
+        location: '5',
+        type: 'Type B',
+        length: '120',
+        height: '60',
+        thickness: '12',
+        quantity: '10',
+        entry_time: '2024-06-18',
+        batchnumber:"444",
+        shelf_status: 1
+      }
+      // Add more data as needed
+    ]);
+
+   const getTagType2 =(status) => {
+      switch (status) {
+        case 'completed':
+          return 'success';
+        case 'in-progress':
+          return 'info';
+        case 'warning':
+          return 'warning';
+        case 'danger':
+          return 'danger';
+        default:
+          return '';
+      }
+    }
+
+    const getTagType =(status) => {
+      return status === 1 ? 'success' : 'danger';
+      // 鏍规嵁鐘舵�佸�煎喅瀹氭爣绛剧被鍨嬶紝杩欓噷鍋囪鐘舵�佷负1鏃朵负鎴愬姛锛堢豢鑹诧級锛屽惁鍒欎负澶辫触锛堢孩鑹诧級
+    }
+
+   const tasktableData=ref([
+
+    {
+          Glassid: 'G001',
+          taskDescription: '浠庡悐瑁呬綅銆�99銆戝埌浠撲綅銆�56銆�',
+          taskStatus: 'in-progress',
+          glassThickness: '5mm',
+          glassFilm: '鑶滅郴A',
+          creationTime: '2024-06-19 10:00:00'
+        },
+        {
+          Glassid: 'G002',
+          taskDescription: '浠庡悐瑁呬綅銆�99銆戝埌浠撲綅銆�56銆�',
+          taskStatus: 'completed',
+          glassThickness: '10mm',
+          glassFilm: '鑶滅郴B',
+          creationTime: '2024-06-19 11:00:00'
+        }
+        ]);
+
+    const dialogVisible = ref(false);
+    const formData = ref({
+      shelf: '',
+      color: '',
+      width: '',
+      height: '',
+      thickness: '',
+      quantity: ''
+    });
+
+    const formData2 = ref({
+      dzw: '',
+     
+    });
+
+    const handleEdit = (row) => {
+      // 澶勭悊淇敼鏁伴噺閫昏緫
+      console.log('Edit Quantity:', row);
+    };
+
+    const handleDelete = (row) => {
+      // 澶勭悊鍒犻櫎閫昏緫
+      console.log('Delete:', row);
+    };
+
+    const handleCheckout = (row) => {
+      // 澶勭悊鍑哄簱閫昏緫
+      console.log('Checkout:', row);
+    };
+
+    const handleInbound = () => {
+      // 鎵撳紑鍏ュ簱瀵硅瘽妗�
+      dialogVisible.value = true;
+    };
+
+    const handleCloseDialog = () => {
+      // 鍏抽棴瀵硅瘽妗嗘椂閲嶇疆琛ㄥ崟鏁版嵁
+      formData.value = {
+        shelf: '',
+        color: '',
+        width: '',
+        height: '',
+        thickness: '',
+        quantity: ''
+      };
+      dialogVisible.value = false;
+    };
+
+    const handleConfirmInbound = () => {
+      // 澶勭悊纭鍏ュ簱閫昏緫锛屽彲浠ュ湪杩欓噷鎻愪氦琛ㄥ崟鎴栬�呮墽琛屽叾浠栨搷浣�
+      console.log('Confirm Inbound:', formData.value);
+      // 鍏抽棴瀵硅瘽妗�
+      dialogVisible.value = false;
+    };
+    
+
+
+    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>
+
+<style>
+
+</style>
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 86b915f..87c8225 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
@@ -77,6 +77,20 @@
     public static final String BIG_STORAGE_REQUEST_IN = "1";
 
     /**
+     * 澶х悊鐗囩璇︽儏鐘舵��
+     * 0 澶х悊鐗囩杩涚墖涓�
+     * 1 澶х悊鐗囩鍦ㄧ鍐�
+     * 2 澶х悊鐗囩鍑虹墖涓�
+     * 3 澶х悊鐗囩鍑虹墖瀹屾垚
+     * 4 澶х悊鐗囩鎵嬪姩鍑虹墖
+     */
+    public static final Integer BIG_STORAGE_IN = 0;
+    public static final Integer BIG_STORAGE_INSIDE = 1;
+    public static final Integer BIG_STORAGE_OUT = 2;
+    public static final Integer BIG_STORAGE_OUTSIDE = 3;
+    public static final Integer BIG_STORAGE_MANUAL = 4;
+
+    /**
      * 鍗ц浆绔嬭繘鐗囪姹�
      * 1 浠诲姟鐢熸垚
      * 2 鍗ц浆绔嬭繘鐗囧畬鎴�
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/WebSocketConfig.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/WebSocketConfig.java
index f5d16bf..b200c7b 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/WebSocketConfig.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/WebSocketConfig.java
@@ -13,9 +13,9 @@
      * bean娉ㄥ唽锛氫細鑷姩鎵弿甯︽湁@ServerEndpoint娉ㄨВ澹版槑鐨刉ebsocket Endpoint(绔偣)锛屾敞鍐屾垚涓篧ebsocket bean銆�
      * 瑕佹敞鎰忥紝濡傛灉椤圭洰浣跨敤澶栫疆鐨剆ervlet瀹瑰櫒锛岃�屼笉鏄洿鎺ヤ娇鐢╯pringboot鍐呯疆瀹瑰櫒鐨勮瘽锛屽氨涓嶈娉ㄥ叆ServerEndpointExporter锛屽洜涓哄畠灏嗙敱瀹瑰櫒鑷繁鎻愪緵鍜岀鐞嗐��
      */
-    @Bean
-    public ServerEndpointExporter serverEndpointExporter() {
-        return new ServerEndpointExporter();
-    }
+//    @Bean
+//    public ServerEndpointExporter serverEndpointExporter() {
+//        return new ServerEndpointExporter();
+//    }
 
 }
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 8ba557f..3b8e098 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
@@ -17,8 +17,10 @@
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -100,14 +102,34 @@
 
     @Override
     public List<Map<String, Object>> getFlowCardId() {
-        return baseMapper.selectJoinMaps(JoinWrappers.lambda(GlassInfo.class)
-                .select(GlassInfo::getFlowCardId)
-                .leftJoin(UpPattenUsage.class, on -> on
-                        .eq(OptimizeProject::getProjectNo, GlassInfo::getEngineerId)
-                        .ne(OptimizeProject::getState, 300)
-                )
-                .groupBy(GlassInfo::getFlowCardId)
+        // 绗簩涓煡璇細鏌ヨ OptimizeProject 琛紝鏍规嵁 GlassInfo 鐨� engineerId 鍜� state 杩涜绛涢��
+        List<OptimizeProject> optimizeProjects = optimizeProjectMapper.selectList(
+                new QueryWrapper<OptimizeProject>()
+                        .ne("state", 300)
         );
+        // 鎻愬彇 engineerId 鍒楄〃
+        List<String> engineerIds = optimizeProjects.stream()
+                .map(OptimizeProject::getProjectNo)
+                .collect(Collectors.toList());
+
+        // 绗竴涓煡璇細鏌ヨ GlassInfo 琛ㄥ苟鎸� flow_card_id 鍒嗙粍锛屽悓鏃剁瓫閫夊嚭鍦� engineerIds 鍒楄〃涓殑璁板綍
+        List<GlassInfo> glassInfos = baseMapper.selectList(
+                new QueryWrapper<GlassInfo>()
+                        .in("engineer_id", engineerIds)
+                        .groupBy("flow_card_id")
+        );
+
+        // 杞崲涓� 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 涓紝鍦ㄨ繖閲岀户缁坊鍔�
+                    return map;
+                })
+                .collect(Collectors.toList());
+log.info("result: {}", result);
+        return result;
     }
 
 
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-prod.yml b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-prod.yml
index 74b6d6c..fe37e51 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-prod.yml
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-prod.yml
@@ -14,6 +14,11 @@
           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
   cloud:
     nacos:
       discovery:
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 a9b6525..0aad429 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
@@ -49,10 +49,10 @@
         return Result.build(200,"鍒犻櫎鎴愬姛",1);
     }
 
-    @ApiOperation("鐞嗙墖绗间换鍔$牬鎹�")
+    @ApiOperation("鐞嗙墖绗间换鍔$牬鎹�0/鎷胯蛋1")
     @PostMapping("/damageBigStorageCageDetails")
-    public Result damageBigStorageCageDetails(BigStorageCageDetails bigStorageCageDetails) {
-        bigStorageCageDetailsService.damageBigStorageCageDetails(bigStorageCageDetails.getGlassId());
+    public Result damageBigStorageCageDetails(BigStorageCageDetails bigStorageCageDetails,int status) {
+        bigStorageCageDetailsService.damageBigStorageCageDetails(bigStorageCageDetails.getGlassId(),status);
         return Result.build(200,"鐮存崯鎴愬姛",1);
     }
 
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 d0d52d2..29fef8c 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
@@ -25,7 +25,7 @@
 
     void deleteBigStorageCageDetails(BigStorageCageDetails bigStorageCageDetails);
 
-    void damageBigStorageCageDetails(String glassId);
+    void damageBigStorageCageDetails(String glassId,int status);
 
     BigStorageCageDetails selectBigStorageCageDetails(String glassId);
 
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 d85c477..bce5186 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
@@ -26,6 +26,7 @@
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -60,14 +61,16 @@
      */
     @Override
     public List<BigStorageCageDetails> selectTask(int taskType) {
+
         if (taskType == 1) {
             //杩涚墖浠诲姟鏁版嵁
             LambdaQueryWrapper<BigStorageCageDetails> feedWrapper = new LambdaQueryWrapper<>();
-            feedWrapper.eq(BigStorageCageDetails::getState, 1)
-                    .or()
-                    .eq(BigStorageCageDetails::getState, 2);
+            feedWrapper.eq(BigStorageCageDetails::getState, Const.BIG_STORAGE_IN);
             List<BigStorageCageDetails> bigStorageCageDetailsList = baseMapper.selectList(feedWrapper);
-            List<BigStorageCageFeedTask> bigStorageCageFeedTaskList = bigStorageCageFeedTaskMapper.selectList(null);
+
+            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));
@@ -80,11 +83,12 @@
         } else {
             //鍑虹墖浠诲姟鏁版嵁
             LambdaQueryWrapper<BigStorageCageDetails> outWrapper = new LambdaQueryWrapper<>();
-            outWrapper.eq(BigStorageCageDetails::getState, 3)
-                    .or()
-                    .eq(BigStorageCageDetails::getState, 4);
+            outWrapper.eq(BigStorageCageDetails::getState, Const.BIG_STORAGE_OUT);
             List<BigStorageCageDetails> bigStorageCageDetailsList = baseMapper.selectList(outWrapper);
-            List<BigStorageCageOutTask> bigStorageCageOutTaskList = bigStorageCageOutTaskMapper.selectList(null);
+
+            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));
@@ -94,7 +98,6 @@
             }
             return bigStorageCageDetailsList;
         }
-
     }
 
     /**
@@ -139,7 +142,8 @@
 
     //鐞嗙墖绗艰鎯呯牬鎹�
     @Override
-    public void damageBigStorageCageDetails(String glassId) {
+    public void damageBigStorageCageDetails(String glassId,int status) {
+
         LambdaQueryWrapper<TemperingGlassInfo> temperingGlassInfoWrapper = new LambdaQueryWrapper<>();
         temperingGlassInfoWrapper.eq(TemperingGlassInfo::getGlassId, glassId);
         TemperingGlassInfo temperingGlassInfo = temperingGlassInfoMapper.selectOne(temperingGlassInfoWrapper);
@@ -148,10 +152,12 @@
         bigStorageCageDetailsWrapper.eq(BigStorageCageDetails::getGlassId, glassId);
         BigStorageCageDetails bigStorageCageDetails = baseMapper.selectOne(bigStorageCageDetailsWrapper);
 
-        if (temperingGlassInfo.getState() == -2) {
-            temperingGlassInfoMapper.deleteById(temperingGlassInfo);
-        } else {
-            temperingGlassInfo.setState(5);
+        if(temperingGlassInfo!=null){
+            if(status==0){
+                temperingGlassInfo.setState(Const.TEMPERING_DAMAGE);
+            }else{
+                temperingGlassInfo.setState(Const.TEMPERING_TAKE);
+            }
             temperingGlassInfoMapper.updateById(temperingGlassInfo);
         }
         baseMapper.deleteById(bigStorageCageDetails.getId());
@@ -169,7 +175,7 @@
         BigStorageCageDetails bigStorageCageDetails = new BigStorageCageDetails();
         BeanUtils.copyProperties(glassInfo, bigStorageCageDetails);
         bigStorageCageDetails.setState(0);
-        bigStorageCageDetails.setGap(20);
+        bigStorageCageDetails.setGap(Const.BIG_STORAGE_GAP);
         return bigStorageCageDetails;
     }
 
@@ -183,39 +189,21 @@
     //鐞嗙墖绗艰鎯呭畬鎴�
     @Override
     public void finishBigStorageCageDetails(BigStorageCageDetails bigStorageCageDetails) {
-        if (bigStorageCageDetails.getState() == 1 || bigStorageCageDetails.getState() == 2) {
-            bigStorageCageDetails.setState(0);
+        if (bigStorageCageDetails.getBigStorageCageFeedTask()!=null) {
+            bigStorageCageDetails.setState(Const.BIG_STORAGE_INSIDE);
             baseMapper.updateById(bigStorageCageDetails);
-            bigStorageCageFeedTaskMapper.deleteById(bigStorageCageDetails.getBigStorageCageFeedTask().getId());
         } else {
-            baseMapper.deleteById(bigStorageCageDetails.getId());
-            bigStorageCageOutTaskMapper.deleteById(bigStorageCageDetails.getBigStorageCageOutTask().getId());
+            bigStorageCageDetails.setState(Const.BIG_STORAGE_OUTSIDE);
+            baseMapper.updateById(bigStorageCageDetails);
+            bigStorageCageService.updateRemainWidth(bigStorageCageDetails.getSlot());
         }
-
     }
 
     //鎵嬪姩鍑虹墖
     @Override
     public void outBigStorageCageDetails(BigStorageCageDetails bigStorageCageDetails) {
-        LambdaQueryWrapper<TemperingGlassInfo> temperingGlassInfoWrapper = new LambdaQueryWrapper<>();
-        temperingGlassInfoWrapper
-                .eq(TemperingGlassInfo::getGlassId, bigStorageCageDetails.getGlassId());
-        TemperingGlassInfo temperingGlassInfo = temperingGlassInfoMapper.selectOne(temperingGlassInfoWrapper);
-        if (temperingGlassInfo.getGlassId() == null) {
-            LambdaQueryWrapper<GlassInfo> glassInfoWrapper = new LambdaQueryWrapper<>();
-            glassInfoWrapper
-                    .eq(GlassInfo::getGlassId, bigStorageCageDetails.getGlassId());
-            GlassInfo glassInfo = glassInfoMapper.selectOne(glassInfoWrapper);
-            TemperingGlassInfo temperingGlassInfo1 = new TemperingGlassInfo();
-            BeanUtils.copyProperties(glassInfo, temperingGlassInfo1);
-
-            if (temperingGlassInfo.getTemperingLayoutId() != null) {
-                temperingGlassInfo1.setState(-1);
-            } else {
-                temperingGlassInfo1.setState(-2);
-            }
-            temperingGlassInfoMapper.insert(temperingGlassInfo1);
-        }
+        bigStorageCageDetails.setState(4);
+        baseMapper.updateById(bigStorageCageDetails);
     }
 
     @Override
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 a9bfa0c..e179fb1 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
@@ -12,6 +12,7 @@
 import com.mes.bigstorage.mapper.BigStorageCageDetailsMapper;
 import com.mes.bigstorage.mapper.BigStorageCageMapper;
 import com.mes.bigstorage.service.BigStorageCageService;
+import com.mes.common.config.Const;
 import com.mes.glassinfo.entity.GlassInfo;
 import com.mes.glassinfo.service.GlassInfoService;
 import com.mes.temperingglass.entity.TemperingGlassInfo;
@@ -217,17 +218,24 @@
     @Override
     public void updateRemainWidth(int slot) {
         log.info("鑾峰彇璇ユ牸瀛愬唴鐜荤拑淇℃伅锛岃绠楁牸瀛愬墿浣欏搴�");
-        Integer width = 5000;
-        List<BigStorageCageDetails> bigStorageCageDetailsList = Collections.singletonList(bigStorageCageDetailsMapper.selectById(slot));
+        double width = 5000;
+        LambdaQueryWrapper<BigStorageCageDetails> bigStorageCageDetailsWrapper=new LambdaQueryWrapper();
+        bigStorageCageDetailsWrapper
+                .eq(BigStorageCageDetails::getSlot,slot)
+                .ne(BigStorageCageDetails::getState,Const.BIG_STORAGE_OUTSIDE);
+
+        List<BigStorageCageDetails> bigStorageCageDetailsList = bigStorageCageDetailsMapper.selectList(bigStorageCageDetailsWrapper);
         for (BigStorageCageDetails bigStorageCageDetails : bigStorageCageDetailsList
         ) {
-            width -= Integer.parseInt(bigStorageCageDetails.getWidth().toString()) + bigStorageCageDetails.getGap();
+            double widths=bigStorageCageDetails.getWidth();
+            double gap=bigStorageCageDetails.getGap();
+            width -= widths+gap;
         }
         //淇敼鏍煎瓙鍓╀綑瀹藉害
         BigStorageCage bigStorageCage = new BigStorageCage();
-        bigStorageCage.setRemainWidth(width);
+        bigStorageCage.setRemainWidth((int)width);
         UpdateWrapper<BigStorageCage> bigStorageCageWrapper = new UpdateWrapper<>();
-        bigStorageCageWrapper.eq("remain_width", width);
+        bigStorageCageWrapper.eq("slot", slot);
         bigStorageCageMapper.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 02a965f..ec83651 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
@@ -3,6 +3,7 @@
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.mes.bigstorage.entity.BigStorageDTO;
+import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.bigstoragetask.entity.BigStorageCageFeedTask;
 import org.apache.ibatis.annotations.Param;
 
@@ -17,7 +18,7 @@
  * @since 2024-04-16
  */
 @DS("salve_hangzhoumes")
-public interface BigStorageCageFeedTaskMapper extends BaseMapper<BigStorageCageFeedTask> {
+public interface BigStorageCageFeedTaskMapper extends MPJBaseMapper<BigStorageCageFeedTask> {
 
     List<Integer> querySitToUpGlass();
 
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/BigStorageCageFeedTaskService.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/BigStorageCageFeedTaskService.java
index 3ddfea3..40e1827 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/BigStorageCageFeedTaskService.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/service/BigStorageCageFeedTaskService.java
@@ -1,6 +1,7 @@
 package com.mes.bigstoragetask.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.yulichang.base.MPJBaseService;
 import com.mes.bigstorage.entity.BigStorageCageDetails;
 import com.mes.bigstorage.entity.BigStorageDTO;
 import com.mes.bigstoragetask.entity.BigStorageCageFeedTask;
@@ -15,7 +16,7 @@
  * @author zhoush
  * @since 2024-04-16
  */
-public interface BigStorageCageFeedTaskService extends IService<BigStorageCageFeedTask> {
+public interface BigStorageCageFeedTaskService extends MPJBaseService<BigStorageCageFeedTask> {
 
     void addFeedTask(BigStorageCageDetails slotInfo, Integer plcFeedReqLine, int taskType);
 
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 bc3d222..389dffe 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
@@ -66,9 +66,6 @@
             List<TemperingGlassInfo> temperingGlassInfoList= temperingGlassInfoService.list();
             jsonObject.append("temperingGlassInfoList", temperingGlassInfoList);
 
-            //鎶ヨ淇℃伅
-            jsonObject.append("bigStorageCageFullAlarm", PlcStorageCageTask.bigStorageCageFullAlarm);
-
             //鐞嗙墖绗艰〃鏍间俊鎭�
             jsonObject.append("bigStorageCageInfo", bigStorageCageService.querybigStorageCageDetail(0));
 
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/controller/TemperingGlassInfoController.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/controller/TemperingGlassInfoController.java
new file mode 100644
index 0000000..eb64e0d
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/controller/TemperingGlassInfoController.java
@@ -0,0 +1,53 @@
+package com.mes.temperingglass.controller;
+
+
+import com.mes.bigstorage.entity.BigStorageCage;
+import com.mes.bigstorage.service.BigStorageCageDetailsService;
+import com.mes.bigstorage.service.BigStorageCageService;
+import com.mes.temperingglass.entity.TemperingGlassInfo;
+import com.mes.temperingglass.service.TemperingGlassInfoService;
+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.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-03-27
+ */
+@Api(description = "閽㈠寲灏忕墖琛ㄤ俊鎭�")
+@RestController
+@RequestMapping("/temperingGlassInfo")
+public class TemperingGlassInfoController {
+
+    @Autowired
+    private TemperingGlassInfoService temperingGlassInfoService;
+    @Autowired
+    private BigStorageCageDetailsService bigStorageCageDetailsService;
+
+    @ApiOperation("鍑虹墖浠诲姟鍒犻櫎")
+    @PostMapping("/deleteTemperingGlassInfo")
+    public Result deleteTemperingGlassInfo(TemperingGlassInfo temperingGlassInfo) {
+        temperingGlassInfoService.removeById(temperingGlassInfo.getId());
+        return Result.build(200,"鍒犻櫎鎴愬姛",1);
+    }
+
+    @ApiOperation("鍑虹墖浠诲姟鐮存崯0/鎷胯蛋1")
+    @PostMapping("/damageTemperingGlassInfo")
+    public Result damageTemperingGlassInfo(TemperingGlassInfo temperingGlassInfo,int status) {
+        bigStorageCageDetailsService.damageBigStorageCageDetails(temperingGlassInfo.getGlassId(),status);
+        return Result.build(200,"鐮存崯鎴愬姛",1);
+    }
+}
+
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 170a2b0..5501c02 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
@@ -188,7 +188,11 @@
     public List<DownStorageCageDetails> CacheOut1(int start, int end) {
 
 
-        List<DownStorageCageDetails> cageDetails = downStorageCageDetailsMapper.selectList(null);
+        // 鍒涘缓涓�涓� LambdaQueryWrapper 瀹炰緥
+        LambdaQueryWrapper<DownStorageCageDetails> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+// 鏉′欢 state=100
+        lambdaQueryWrapper.eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN);
+        List<DownStorageCageDetails> cageDetails = downStorageCageDetailsMapper.selectList(lambdaQueryWrapper);
         // Step 5: 鍒ゆ柇 down_storage_cage_details 缁撴灉鏁伴噺鏄惁涓�9锛屽鏋滄槸锛屽垯鎵ц鍙﹀涓�涓煡璇�
         if (cageDetails.size() == 9) {
             log.info("1銆佺瀛愭弧浜嗙殑鏃跺�欙紝鎸夌収绗煎唴鐗堝浘id 鐗堝浘鐗囧簭鍑�");
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownCacheGlassTask.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownCacheGlassTask.java
index 11c224b..0fd3b0c 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownCacheGlassTask.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownCacheGlassTask.java
@@ -203,8 +203,8 @@
     private Boolean outTo(String MESSendingWord) {
         log.info("鍗曠墖鎯呭喌鏍规嵁浼犲叆鐨勬枡鏋跺彿 鏌ヨ绗﹀悎鎸夌収鐗堝浘id鍜岀墖搴忓嚭鐗�,骞朵笖浼樺厛鍑烘弧鏋剁殑灏忕墖");
 
-        List<DownStorageCageDetails> list1to3 = downStorageCageDetailsService.CacheOut1(1, 3);
-        List<DownStorageCageDetails> list4to6 = downStorageCageDetailsService.CacheOut1(4, 6);
+//        List<DownStorageCageDetails> list1to3 = downStorageCageDetailsService.CacheOut1(1, 3);
+//        List<DownStorageCageDetails> list4to6 = downStorageCageDetailsService.CacheOut1(4, 6);
         List<DownStorageCageDetails> list1to6 = downStorageCageDetailsService.CacheOut1(1, 6);
 
         DownStorageCageDetails selectedItem = null;
@@ -214,27 +214,28 @@
         // 浼樺厛 瓒呭嚭灏哄浼樺厛浜哄伐鍑虹墖 浜哄伐澶勭悊
         if (!list1to6.isEmpty()) {
             DownStorageCageDetails item3 = list1to6.get(0);
+            //鍚庢湡鏈夌敓浜ц鍒�
             if (item3.getHeight() >= 2500 && item3.getWidth() >= 2660) {
                 log.info("浜哄伐澶勭悊");
                 selectedItem = item3;
-                endCell = "7";
-            } else if (!list4to6.isEmpty() && !list1to6.isEmpty()) {
-                log.info("鍓嶅悗绔兘绌洪棽 浼樺厛鍚庣鍑虹墖骞朵笖浼樺厛婊℃灦");
-                selectedItem = list4to6.get(0);
+
+            } 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 && !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(
@@ -286,11 +287,11 @@
                     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);
+//                    LambdaQueryWrapper<DownGlassTask> wrapper = new LambdaQueryWrapper<>();
+//                    wrapper.eq(DownGlassTask::getGlassId, newdownGlassInfo.getGlassId());
+//                    DownGlassTask updateDetail = new DownGlassTask();
+//                    updateDetail.setTaskStauts(2);
+//                    downGlassTaskService.update(updateDetail, wrapper);
                     sequence++; // 閫掑椤哄簭瀛楁鍊�
 
 
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-prod.yml b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-prod.yml
index 2e6a12c..683a519 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-prod.yml
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application-prod.yml
@@ -14,6 +14,11 @@
           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:

--
Gitblit v1.8.0