From c531149478942c18ccf99c2533b7b5fd8edc91b9 Mon Sep 17 00:00:00 2001
From: wuyouming666 <2265557248@qq.com>
Date: 星期三, 24 七月 2024 12:36:33 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes

---
 UI-Project/src/views/Returns/returns.vue                                                                                                     |  191 +++++--
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java          |    5 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java               |    4 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/controller/TemperingRecordController.java         |    2 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/service/impl/TemperingRecordServiceImpl.java      |    8 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/mapper/DamageMapper.java                                                   |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java                                         |    5 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/entity/TemperingRecord.java                       |    6 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageDTO.java                          |    5 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/controller/WorkAssignmentController.java                          |   15 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java                                   |  140 ++++
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java                  |    5 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java        |   14 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java    |   23 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java                                                 |    4 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/mapper/GlassInfoMapper.java                                             |    2 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java                                           |   24 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java                                        |   10 
 UI-Project/src/views/PurchaseReturn/purchaseStorage.vue                                                                                      |   61 +
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java                                              |    8 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java                                     |   24 
 UI-Project/src/assets/shangpian.png                                                                                                          |    0 
 UI-Project/src/utils/WebSocketService.js                                                                                                     |   19 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcScreenTask.java                                            |   41 -
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageFeedTaskMapper.xml                          |    1 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java                                      |   63 +
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java                                                        |   26 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/TemperingTask.java                                            |   53 ++
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-cz.yml                                                   |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageOutTask.java              |   14 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/controller/TemperingGlassInfoController.java       |   28 
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserMapper.java                                             |    3 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/service/TemperingRecordService.java               |    4 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java                                               |    9 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml                           |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java                  |   10 
 UI-Project/src/lang/zh.js                                                                                                                    |    6 
 UI-Project/src/views/ReportWork/reportWork.vue                                                                                               |   63 +-
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java |   95 +++
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/base/entity/BigStorageCageBaseInfo.java                                           |   17 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml                                                  |    9 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/TemperingGlassInfoService.java                             |    5 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/mapper/TemperingRecordMapper.java                 |    4 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/mapper/xml/TemperingRecordMapper.xml              |    0 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java                                    |   34 +
 UI-Project/src/views/Slicecage/slicecage.vue                                                                                                 |   56 ++
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/S7control.java                                                              |    1 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/common/S7object.java                                          |    9 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/json/PlcTemperingGlass.json                                          |  132 +++++
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/mapper/WorkAssignmentMapper.java                                  |    2 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java                    |   43 +
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java                                                          |    4 
 UI-Project/src/views/PurchaseReturn/purchaseReturn.vue                                                                                       |  240 ++++++--
 53 files changed, 1,182 insertions(+), 371 deletions(-)

diff --git a/UI-Project/src/assets/shangpian.png b/UI-Project/src/assets/shangpian.png
new file mode 100644
index 0000000..71152cc
--- /dev/null
+++ b/UI-Project/src/assets/shangpian.png
Binary files differ
diff --git a/UI-Project/src/lang/zh.js b/UI-Project/src/lang/zh.js
index 3a9af7a..0117165 100644
--- a/UI-Project/src/lang/zh.js
+++ b/UI-Project/src/lang/zh.js
@@ -205,6 +205,12 @@
         down:'涓嬩竴椤�',
         now:'褰撳墠椤垫樉绀�',
         tit:'鏉℃暟鎹�',
+        temperingqueries:'閽㈠寲鏌ヨ',
+        specifytempering:'鎸囧畾閽㈠寲',
+        projectnumber:'宸ョ▼鍙�',
+        layoutnumber:'閽㈠寲鐗堝浘鍙�',
+        numberglasses:'鐜荤拑鏁伴噺',
+        specifytemperinga:'鏄惁鎸囧畾閽㈠寲璇ユ潯淇℃伅锛�',
     },
     workOrder:{
         glassID:'鐜荤拑ID',
diff --git a/UI-Project/src/utils/WebSocketService.js b/UI-Project/src/utils/WebSocketService.js
index 432bd9c..310d4c8 100644
--- a/UI-Project/src/utils/WebSocketService.js
+++ b/UI-Project/src/utils/WebSocketService.js
@@ -1,7 +1,7 @@
 // WebSocketService.js
 
 let socket = null;
-
+let messages = '';
 export const initializeWebSocket = (socketUrl, messageHandler) => {
     if (typeof WebSocket === "undefined") {
       console.log("Your browser does not support WebSocket");
@@ -18,13 +18,24 @@
       if (!msg.data) {
         return;
       }
-  
-      const obj = JSON.parse(msg.data);
-  
+      messages += msg.data;
+      const isLastChunk = msg.data.endsWith('<END>');
+      //鏄惁涓烘渶鍚庝竴鍧楁秷鎭�
+      if(isLastChunk) {
+        messages= messages.replace('<END>', '');
+        const obj = JSON.parse(messages);
+        
       // 璋冪敤娑堟伅澶勭悊鍑芥暟锛屽皢鏁版嵁浼犻�掔粰 Vue 缁勪欢
       if (messageHandler) {
         messageHandler(obj);
       }
+        messages='';
+      }
+      
+      
+
+  
+      
     };
   
     return socket;
diff --git a/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
index 14920eb..42ec676 100644
--- a/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
+++ b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
@@ -9,9 +9,10 @@
   import { useI18n } from 'vue-i18n'
   const { t } = useI18n()
   let language = ref(localStorage.getItem('lang') || 'zh')
-const dialogFormVisible = ref(true)
-const dialogFormVisiblea = ref(false)
+const dialogFormVisible = ref(false)
+const dialogFormVisiblea = ref(true)
 const dialogFormVisibleb = ref(false)
+const blind = ref(false)
 const width = ref();
 const height = ref();
 const adjustedRects = ref([]);
@@ -21,51 +22,137 @@
 const socketUrl = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/temperingGlass`;
 const handleMessage = (data) => {
 // 杩涚倝涓�
-  adjustedRects.value =  data.intoGlass[0].map(rect => ({  
+  if(data.intoGlass!=null){
+    adjustedRects.value =  data.intoGlass[0].map(rect => {  
+        let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta;
+        let newX = rect.yCoordinate; 
+  if (rect.angle === 0) {  
+          adjustedWidth = rect.height * 0.12;  
+          adjustedHeight = rect.width * 0.1;  
+          adjustedWidtha = rect.height;  
+          adjustedHeighta = rect.width;  
+          newX = 5087 - (rect.xCoordinate + rect.height); 
+        } else {  
+          adjustedWidth = rect.width * 0.12;  
+          adjustedHeight = rect.height * 0.1;  
+          adjustedWidtha = rect.width;  
+          adjustedHeighta = rect.height;  
+          newX = 5087 - (rect.xCoordinate + rect.width); 
+        }  
+        return {  
         ...rect, 
-        xcoordinate: rect.xCoordinate * 0.3,
-        ycoordinate: rect.ycoordinate * 0.3,
-        width: rect.width * 0.2,
-        height: rect.height * 0.2,
-        widtha: rect.width,
-        heighta: rect.height,
-      })); 
-  adjustedRects2.value =  data.intoGlass2[0].map(rect => ({  
+        xcoordinate: newX * 0.12,
+        ycoordinate: rect.yCoordinate * 0.1,
+        width: adjustedWidth,  
+        height: adjustedHeight,  
+        widtha: adjustedWidtha, 
+        heighta: adjustedHeighta,
+      };  
+      });
+      }
+  if(data.intoGlass2!=null){
+    adjustedRects2.value =  data.intoGlass2[0].map(rect => {  
+        let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta;
+      let newX = rect.yCoordinate; 
+      if (rect.angle === 0) {  
+          adjustedWidth = rect.height * 0.12;  
+          adjustedHeight = rect.width * 0.1;  
+          adjustedWidtha = rect.height;  
+          adjustedHeighta = rect.width;  
+          newX = 5087 - (rect.xCoordinate + rect.height); 
+  } else {  
+          adjustedWidth = rect.width * 0.12;  
+          adjustedHeight = rect.height * 0.1;  
+          adjustedWidtha = rect.width;  
+          adjustedHeighta = rect.height;  
+          newX = 5087 - (rect.xCoordinate + rect.width); 
+  }  
+        return {  
         ...rect, 
-        xcoordinate: rect.xCoordinate * 0.3,
-        ycoordinate: rect.ycoordinate * 0.3,
-        width: rect.width * 0.2,
-        height: rect.height * 0.2,
-        widtha: rect.width,
-        heighta: rect.height,
-      })); 
-      console.log(data.intoGlass[0]);
+        xcoordinate: newX * 0.12,
+        ycoordinate: rect.yCoordinate * 0.1,
+        width: adjustedWidth,  
+        height: adjustedHeight,  
+        widtha: adjustedWidtha, 
+        heighta: adjustedHeighta,
+      };  
+      });
+      }
   // 杩涚倝鍓�
-      adjustedRectsa.value = data.waitingGlass[0].map(rect => ({  
-        ...rect, // 澶嶅埗鍘熷瀵硅薄鐨勫叾浠栧睘鎬�  
-        xcoordinate: rect.xCoordinate * 0.5,
-        ycoordinate: rect.ycoordinate * 0.5,
-        width: rect.width * 0.4,
-        height: rect.height * 0.4,
-        widtha: rect.width,
-        heighta: rect.height,
-        state: rect.state
-      }));
+  if(data.waitingGlass!=null){
+    adjustedRectsa.value = data.waitingGlass[0].map(rect => {  
+  let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta; 
+  let newX = rect.yCoordinate; 
+  if (rect.angle === 0) {  
+    adjustedWidth = rect.width * 0.24;  
+    adjustedHeight = rect.height * 0.16;
+    adjustedWidtha = rect.width;  
+    adjustedHeighta = rect.height;  
+    newX = 5190 - (rect.yCoordinate + rect.width); 
+    } else {  
+    adjustedWidth = rect.height * 0.24;  
+    adjustedHeight = rect.width * 0.16;  
+    adjustedWidtha = rect.height;  
+    adjustedHeighta = rect.width;  
+    newX = 5190 - (rect.yCoordinate + rect.height);  
+  }  
+  return {  
+    ...rect, 
+    x: newX * 0.24,  
+    y: rect.xCoordinate * 0.16,  
+    width: adjustedWidth,  
+    height: adjustedHeight,  
+    widtha: adjustedWidtha, 
+    heighta: adjustedHeighta,
+  };  
+});
+  }
     // 宸插嚭鐐�
-      adjustedRectsb.value = data.outGlass[0].map(rect => ({  
+  if(data.outGlass!=null){
+    adjustedRectsb.value = data.outGlass[0].map(rect => {  
+  let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta;
+  let newX = rect.yCoordinate; 
+  if (rect.angle === 0) {  
+    adjustedWidth = rect.width * 0.24;  
+    adjustedHeight = rect.height * 0.16;  
+    adjustedWidtha = rect.width;  
+    adjustedHeighta = rect.height;  
+    newX = 5190 - (rect.yCoordinate + rect.width); 
+  } else {  
+    adjustedWidth = rect.height * 0.24;  
+    adjustedHeight = rect.width * 0.16;  
+    adjustedWidtha = rect.height;  
+    adjustedHeighta = rect.width;  
+    newX = 5190 - (rect.yCoordinate + rect.height);  
+  }  
+  return {  
         ...rect, // 澶嶅埗鍘熷瀵硅薄鐨勫叾浠栧睘鎬�  
-        xcoordinate: rect.xCoordinate * 0.5,
-        ycoordinate: rect.ycoordinate * 0.5,
-        width: rect.width * 0.4,
-        height: rect.height * 0.4,
-        widtha: rect.width,
-        heighta: rect.height,
-        state: rect.state
-      }));  
+        x: newX * 0.24,
+        y: rect.xCoordinate * 0.16,
+        width: adjustedWidth,  
+        height: adjustedHeight,  
+        widtha: adjustedWidtha, 
+        heighta: adjustedHeighta,
+  };  
+});
+  }
 };
 onMounted(() => {
   initializeWebSocket(socketUrl, handleMessage);
 });
+function getRectColor(state) {  
+  switch (state) {  
+    case 0:  
+      return '#f8e3c5';  
+    case 1:  
+      return '#d1edc4';
+    case -1:  
+      return '#dedfe0';  
+  }  
+} 
+function showDialog(row) {  
+  blind.value = true;  
+}  
 onBeforeUnmount(() => {
   console.log("鍏抽棴浜�")
   closeWebSocket();
@@ -73,14 +160,16 @@
 </script>
 <template>
   <div style="margin-top: 10px;">
-     <el-button style="margin-left: 15px;"   id="searchButton" type="primary" @click="dialogFormVisible = true;dialogFormVisiblea = false;dialogFormVisibleb = false;">{{ $t('processCard.intofurnace') }}</el-button>
-     <el-button style="margin-left: 15px;"   id="searchButton" type="primary" @click="dialogFormVisiblea = true;dialogFormVisible = false;dialogFormVisibleb = false;" >{{ $t('processCard.beforefurnace') }}</el-button>
+     <el-button style="margin-left: 15px;" id="searchButton" type="primary" @click="dialogFormVisiblea = true;dialogFormVisible = false;dialogFormVisibleb = false;" >{{ $t('processCard.beforefurnace') }}</el-button>
+     <el-button style="margin-left: 15px;" id="searchButton" type="primary" @click="dialogFormVisible = true;dialogFormVisiblea = false;dialogFormVisibleb = false;">{{ $t('processCard.intofurnace') }}</el-button>
     <el-button  id="searchButton" type="success" @click="dialogFormVisibleb = true;dialogFormVisible = false;dialogFormVisiblea = false">{{ $t('processCard.outfurnace') }}</el-button>
 <div v-if="dialogFormVisible" >
     <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;height: 600px;" v-loading="loading">
 <div style="width: 49%;float: left;background-color: #f4f4f5;height: 550px;">
-  <el-scrollbar height="630px">
-    <div  style="position: relative;width: 1400px;">  
+    <div v-if="adjustedRects.length > 0">
+      <div style="text-align: center;">鐐夊彿锛歿{ adjustedRects[0].engineerId }}-{{ adjustedRects[0].temperingLayoutId }}</div>  
+    <el-scrollbar height="550px" style="background-color: #e9e9eb;">
+    <div  style="position: relative;max-width: 1400px;">  
       <div  
       v-for="(rect, index) in adjustedRects"
       :key="index"  
@@ -88,16 +177,20 @@
       :style="{ position: 'absolute',  top: `${rect.ycoordinate}px`, left: `${rect.xcoordinate}px`, width: `${rect.width}px`, height: `${rect.height}px`  }"  
     >
      <div  class="centered-text">
-    <div >{{ rect.flowcardId }}</div>  
-    <div style="text-align: center;">{{ rect.widtha }}*{{ rect.heighta }}</div>  
+    <div >{{ rect.glassId }}</div>  
+    <div >{{ rect.flowCardId }}</div>  
+    <div>{{ rect.widtha }}*{{ rect.heighta }}</div>  
   </div>
   </div>
    </div>
    </el-scrollbar>
+   </div>
   </div>
 <div style="width: 49%;float: right;background-color: #f4f4f5;height: 550px;">
-  <el-scrollbar height="550px">
-    <div  style="position: relative;width: 1400px;">  
+    <div v-if="adjustedRects2.length > 0">
+      <div style="text-align: center;">鐐夊彿锛歿{ adjustedRects[0].engineerId }}-{{ adjustedRects[0].temperingLayoutId }}</div>  
+    <el-scrollbar height="550px" style="background-color: #e9e9eb;">
+    <div  style="position: relative;max-width: 1400px;">  
       <div  
       v-for="(rect, index) in adjustedRects2"
       :key="index"  
@@ -105,57 +198,75 @@
       :style="{ position: 'absolute',  top: `${rect.ycoordinate}px`, left: `${rect.xcoordinate}px`, width: `${rect.width}px`, height: `${rect.height}px`  }"  
     >
      <div  class="centered-text">
-    <div >{{ rect.flowcardId }}</div>  
-    <div style="text-align: center;">{{ rect.widtha }}*{{ rect.heighta }}</div>  
+    <div >{{ rect.glassId }}</div>  
+    <div >{{ rect.flowCardId }}</div>  
+    <div>{{ rect.widtha }}*{{ rect.heighta }}</div>  
   </div>
   </div>
    </div>
    </el-scrollbar>
+   </div>
 </div>
    </el-card>
     </div>
 <div v-if="dialogFormVisiblea">
   <!-- 杩涚倝鍓� -->
-  <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;" v-loading="loading">
-      <el-scrollbar height="550px">
-    <div  style="position: relative;width: 1400px;">  
+  <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;height: 600px;" v-loading="loading">
+    <div v-if="adjustedRectsa.length > 0">
+      <div style="text-align: center;">鐐夊彿锛歿{ adjustedRects[0].engineerId }}-{{ adjustedRects[0].temperingLayoutId }}</div>  
+      <!-- <div style="text-align: center;">娴佺▼鍗�: {{ adjustedRectsa[0].flowCardId }}</div>   -->
+      <el-scrollbar height="550px" style="background-color: #e9e9eb;">
+    <div  style="position: relative;max-width: 1400px;">  
       <div  
       v-for="(rect, index) in adjustedRectsa"  
       :key="index"  
+      @click="showDialog"  
       class="rect"  
-      :style="{ position: 'absolute',  top: `${rect.ycoordinate}px`, left: `${rect.xcoordinate}px`,
+      :style="{ position: 'absolute',  top: `${rect.y}px`, left: `${rect.x}px`,
        width: `${rect.width}px`, height: `${rect.height}px`,
-       backgroundColor: rect.state === 0 ? '#dedfe0' : '#d1edc4' }">
-     <div  class="centered-text">
-    <div >{{ rect.flowcardId }}</div>  
-    <div style="text-align: center;">{{ rect.widtha }}*{{ rect.heighta }}</div>  
+      backgroundColor: getRectColor(rect.state) }">
+    <div  class="centered-text">
+    <div>{{ rect.glassId }}</div>  
+    <div >{{ rect.flowCardId }}</div>  
+    <div>{{ rect.widtha }}*{{ rect.heighta }}</div>  
   </div>
   </div> 
    </div>
    </el-scrollbar>
+   </div>
    </el-card>
 </div>
 <div v-if="dialogFormVisibleb">
   <!-- 宸插嚭鐐� -->
-  <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;" v-loading="loading">
-      <el-scrollbar height="550px">
-    <div  style="position: relative;width: 1400px;">  
+  <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;height: 600px;" v-loading="loading">
+      <div v-if="adjustedRectsb.length > 0">
+      <div style="text-align: center;">鐐夊彿锛歿{ adjustedRects[0].engineerId }}-{{ adjustedRects[0].temperingLayoutId }}</div>  
+      <el-scrollbar height="550px" style="background-color: #e9e9eb;">
+    <div  style="position: relative;max-width: 1400px;">  
       <div  
       v-for="(rect, index) in adjustedRectsb"  
       :key="index"  
       class="rect"  
-      :style="{ position: 'absolute',  top: `${rect.ycoordinate}px`, left: `${rect.xcoordinate}px`,
+      :style="{ position: 'absolute',  top: `${rect.y}px`, left: `${rect.x}px`,
        width: `${rect.width}px`, height: `${rect.height}px`,
        backgroundColor: rect.state === 4 ? '#911005' : '#f8e3c5' }">
      <div  class="centered-text">
-    <div >{{ rect.flowcardId }}</div>  
-    <div style="text-align: center;">{{ rect.widtha }}*{{ rect.heighta }}</div>  
+    <div >{{ rect.glassId }}</div>  
+    <div >{{ rect.flowCardId }}</div>  
+    <div>{{ rect.widtha }}*{{ rect.heighta }}</div>  
   </div>
   </div> 
    </div>
    </el-scrollbar>
+   </div>
    </el-card>
 </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-dialog> 
   </div>
 </template>
 <style scoped>
@@ -233,9 +344,10 @@
 }  
 .centered-text {
   /* 璁剧疆鏂囧瓧灞呬腑鏍峰紡 */  
-  display: flex;  
+  /* display: flex; */
   justify-content: center;  
-  align-items: center;  
+  align-items: center; 
   height: 100%; /* 纭繚div鍗犳嵁鏁翠釜鐭╁舰鐨勯珮搴� */  
+  font-size: small;
 } 
 </style>
\ No newline at end of file
diff --git a/UI-Project/src/views/PurchaseReturn/purchaseStorage.vue b/UI-Project/src/views/PurchaseReturn/purchaseStorage.vue
index 5c0133f..4e372e6 100644
--- a/UI-Project/src/views/PurchaseReturn/purchaseStorage.vue
+++ b/UI-Project/src/views/PurchaseReturn/purchaseStorage.vue
@@ -25,20 +25,38 @@
   }
 }
 
-const socketUrl = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/temperingGlass`;
+const socketUrl = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/temperingGlass`; 
 // 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
 const handleMessage = (data) => {
   // 鏇存柊 tableData 鐨勬暟鎹�
-  adjustedRects.value =  data.overGlass[0].map(rect => ({  
-        ...rect, // 澶嶅埗鍘熷瀵硅薄鐨勫叾浠栧睘鎬�  
-        xcoordinate: rect.xCoordinate * 0.5, // 灏唜鍊奸櫎浠�3  
-        ycoordinate: rect.ycoordinate * 0.5,
-        width: rect.width * 0.4,
-        height: rect.height * 0.4,
-        widtha: rect.width,
-        heighta: rect.height,
-      })); 
-      console.log(adjustedRects.value);
+  if(data.overGlass!=null){
+    adjustedRects.value =  data.overGlass[0].map(rect => {  
+  let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta;
+      let newX = rect.yCoordinate; 
+      if (rect.angle === 0) {  
+    adjustedWidth = rect.width * 0.24;  
+    adjustedHeight = rect.height * 0.16;  
+    adjustedWidtha = rect.width;  
+    adjustedHeighta = rect.height;  
+    newX = 5190 - (rect.yCoordinate + rect.width);
+  } else {  
+    adjustedWidth = rect.height * 0.24;  
+    adjustedHeight = rect.width * 0.16;  
+    adjustedWidtha = rect.height;  
+    adjustedHeighta = rect.width;  
+    newX = 5190 - (rect.yCoordinate + rect.height);
+  }  
+  return {  
+    ...rect, 
+    xcoordinate: newX * 0.24, 
+    ycoordinate: rect.xCoordinate * 0.16,
+    width: adjustedWidth,  
+    height: adjustedHeight,  
+    widtha: adjustedWidtha, 
+    heighta: adjustedHeighta,
+  };  
+});
+  }
 };
 onMounted(() => {
   // fetchFlowCardId();
@@ -55,9 +73,12 @@
 <template>
   <div style="margin-top: 10px;">
 <div>
-    <el-card style="margin-left: 10px;margin-top: 10px;margin-right: 10px;" v-loading="loading">
-    <el-scrollbar height="600px">
-    <div  style="position: relative;width: 1400px;">  
+    <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;height: 600px;" v-loading="loading">
+      <!-- <el-card style="margin-left: 10px;margin-top: 10px;margin-right: 10px;" v-loading="loading"> -->
+      <div v-if="adjustedRects.length > 0">
+      <div style="text-align: center;">鐐夊彿锛歿{ adjustedRects[0].engineerId }}-{{ adjustedRects[0].temperingLayoutId }}</div>  
+    <el-scrollbar height="550px" width="1200px" style="background-color: #e9e9eb;">
+    <div  style="position: relative;">  
       <div  
       v-for="(rect, index) in adjustedRects"
       :key="index"  
@@ -66,12 +87,15 @@
        width: `${rect.width}px`, height: `${rect.height}px`,
        backgroundColor: rect.state === 4 ? '#d1edc4' : '#f8e3c5' }">
      <div  class="centered-text">
-    <div >{{ rect.flowcardId }}</div>  
-    <div style="text-align: center;">{{ rect.widtha }}*{{ rect.heighta }}</div>  
+    <div >{{ rect.glassId }}</div>  
+    <div >{{ rect.flowCardId }}</div>  
+    <div>{{ rect.widtha }}*{{ rect.heighta }}</div>  
+    <!-- <div style="margin-top: 25px;margin-left: -60px;">{{ rect.widtha }}*{{ rect.heighta }}</div>   -->
   </div>
   </div> 
    </div>
    </el-scrollbar>
+   </div>
     </el-card>
     </div>
   </div>
@@ -94,9 +118,10 @@
 } 
 .centered-text {
   /* 璁剧疆鏂囧瓧灞呬腑鏍峰紡 */  
-  display: flex;  
+  /* display: flex; */
   justify-content: center;  
-  align-items: center;  
+  align-items: center; 
   height: 100%; /* 纭繚div鍗犳嵁鏁翠釜鐭╁舰鐨勯珮搴� */  
+  font-size: small;
 } 
 </style>
\ No newline at end of file
diff --git a/UI-Project/src/views/ReportWork/reportWork.vue b/UI-Project/src/views/ReportWork/reportWork.vue
index cd22ee2..f28dac1 100644
--- a/UI-Project/src/views/ReportWork/reportWork.vue
+++ b/UI-Project/src/views/ReportWork/reportWork.vue
@@ -15,7 +15,7 @@
       <el-option label="寰呮姤宸�" value="2"></el-option>
       <el-option label="宸叉姤宸�" value="3"></el-option>
     </el-select>
-    <el-select v-model="report.workProcedure" placeholder="娓呴�夋嫨宸ュ簭">
+    <el-select v-model="report.workingProcedure" placeholder="娓呴�夋嫨宸ュ簭">
       <el-option label="鍏ㄩ儴" value="0"></el-option>
       <el-option label="鍒囧壊" value="1"></el-option>
       <el-option label="纾ㄨ竟" value="2"></el-option>
@@ -25,26 +25,26 @@
     <el-button type="success">鎶ュ伐</el-button>
     <el-table height="100%" ref="table" :data="reportData"
       :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }">
-      <el-table-column prop="reportData.line" align="center" label="绾胯矾" min-width="120" />
-      <el-table-column prop="reportData.line" align="center" label="宸ュ簭" min-width="120" />
-      <el-table-column prop="reportData.line" align="center" label="鐜荤拑id" min-width="120" />
-      <el-table-column prop="reportData.line" align="center" label="宸ョ▼鍙�" min-width="120" />
-      <el-table-column prop="reportData.line" align="center" label="閽㈠寲鐗堝浘id" min-width="120" />
-      <el-table-column prop="reportData.line" align="center" label="鐢熶骇鏃堕棿" min-width="120" />
-      <el-table-column prop="reportData.line" align="center" label="澶囨敞" min-width="120" />
-      <el-table-column prop="reportData.line" align="center" label="绫诲瀷" min-width="120" />
-      <el-table-column prop="reportData.line" align="center" label="鐘舵��" min-width="120" />
-      <el-table-column prop="reportData.line" align="center" label="娴佺▼鍗�" min-width="120" />
-      <el-table-column prop="reportData.line" align="center" label="搴忓彿" min-width="120" />
-      <el-table-column prop="reportData.line" align="center" label="灞�" min-width="120" />
-      <el-table-column prop="reportData.line" align="center" label="鐮存崯绫诲瀷" min-width="120" />
-      <el-table-column prop="reportData.line" align="center" label="鐮存崯鍘熷洜" min-width="120" />
-      <el-table-column prop="reportData.line" align="center" label="璐d换宸ュ簭" min-width="120" />
-      <el-table-column prop="reportData.line" align="center" label="璐d换浜哄憳" min-width="120" />
-      <el-table-column prop="reportData.line" align="center" label="璐d换鐝粍" min-width="120" />
-      <el-table-column prop="reportData.line" align="center" label="璐d换璁惧" min-width="120" />
-      <el-table-column prop="reportData.line" align="center" label="鎶ュ伐鐝粍" min-width="120" />
-      <el-table-column prop="reportData.line" align="center" label="鎶ュ伐璁惧" min-width="120" />
+      <el-table-column prop="teamsGroupsName" align="center" label="鎶ュ伐鐝粍" min-width="120" />
+      <el-table-column prop="deviceName" align="center" label="鎶ュ伐璁惧" min-width="120" />
+      <el-table-column prop="line" align="center" label="绾胯矾" min-width="120" />
+      <el-table-column prop="workingProcedure" align="center" label="宸ュ簭" min-width="120" />
+      <el-table-column prop="glassId" align="center" label="鐜荤拑id" min-width="120" />
+      <el-table-column prop="engineerId" align="center" label="宸ョ▼鍙�" min-width="120" />
+      <el-table-column prop="temperingLayoutId" align="center" label="閽㈠寲鐗堝浘id" min-width="120" />
+      <el-table-column prop="damageTime" align="center" label="鐢熶骇鏃堕棿" min-width="120" />
+      <el-table-column prop="type" align="center" label="绫诲瀷" min-width="120" />
+      <el-table-column prop="status" align="center" label="鐘舵��" min-width="120" />
+      <el-table-column prop="processId" align="center" label="娴佺▼鍗�" min-width="120" />
+      <el-table-column prop="orderNumber" align="center" label="搴忓彿" min-width="120" />
+      <el-table-column prop="technologyNumber" align="center" label="灞�" min-width="120" />
+      <el-table-column prop="breakageType" align="center" label="鐮存崯绫诲瀷" min-width="120" />
+      <el-table-column prop="breakageReason" align="center" label="鐮存崯鍘熷洜" min-width="120" />
+      <el-table-column prop="responsibleProcess" align="center" label="璐d换宸ュ簭" min-width="120" />
+      <el-table-column prop="responsiblePersonnel" align="center" label="璐d换浜哄憳" min-width="120" />
+      <el-table-column prop="responsibleTeam" align="center" label="璐d换鐝粍" min-width="120" />
+      <el-table-column prop="responsibleEquipment" align="center" label="璐d换璁惧" min-width="120" />
+      <el-table-column prop="remark" align="center" label="澶囨敞" min-width="120" />
     </el-table>
   </div>
 </template>
@@ -58,23 +58,22 @@
 import { useI18n } from 'vue-i18n'
 const { t } = useI18n()
 const report = ref({
-  type: '',
-  status: '',
-  workProcedure: '',
+  type: '0',
+  status: '0',
+  workingProcedure: '0',
 });
 const reportData = ref([])
-const timeRange = ref([new Date(2000, 10, 10), new Date(2200, 10, 11)])
+const timeRange = ref(["2022-01-01", "2022-01-01"])
 
 
 // 鏌ヨ鏁版嵁
 const selectReportData = async () => {
-  console.log(timeRange.value[0])
-  const response = await request.post("/loadGlass/damage/selectDamage", {
+  const response = await request.post("/cacheVerticalGlass/damage/selectDamage", {
     startTime: timeRange.value[0],
     endTime: timeRange.value[1],
     type: report.value.type,
     status: report.value.status,
-    workProcedure: report.value.workProcedure,
+    workingProcedure: report.value.workingProcedure
   })
   if (response.code === 200) {
     reportData.value = response.data;
@@ -82,6 +81,14 @@
   } else {
     ElMessage.error(response.message);
   }
+
+  const responses = await request.post("/cacheVerticalGlass/damage/insertDamage", {
+    glassId:"P24060403|3|6",
+    line:"2001",
+    workingProcedure:"鍐峰姞宸�",
+    remark:"",
+    status:"2"
+  })
 };
 
 const socketUrl = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/screen`;
diff --git a/UI-Project/src/views/Returns/returns.vue b/UI-Project/src/views/Returns/returns.vue
index 42dd369..55a5f37 100644
--- a/UI-Project/src/views/Returns/returns.vue
+++ b/UI-Project/src/views/Returns/returns.vue
@@ -15,6 +15,8 @@
 const adda = ref(false)
 const flake = ref(false)
 const flakea = ref(false)
+const flakeb = ref(false)
+const flakec = ref(false)
 import { WebSocketHost ,host} from '@/utils/constants'
 import request from "@/utils/request"
 const ida = ref(null); 
@@ -78,26 +80,62 @@
     // ElMessage.error('鑾峰彇琛ㄦ牸鏁版嵁澶辫触锛岃閲嶈瘯');
   }
 };
-request.get("/loadGlass/LoadGlass/list").then((res) => {
-      window.localStorage.setItem('patternWidth', res.data.patternWidth)
-      window.localStorage.setItem('workstationId', res.data.workstationId)
-          if (res.code == 200) {
-          console.log(res.data);
-          tableDataa.value = res.data
-          console.log(res.data.patternWidth);
-          
-      let workstationId = window.localStorage.getItem('workstationId')
-      let patternWidth = window.localStorage.getItem('patternWidth')
-      if (patternWidth !== '' || workstationId == '1') {
-      flake.value = true
-    } else if (patternWidth !== '' || workstationId == '2') {
-      flakea.value = true
-    }
-          } else {
-          ElMessage.warning(res.message)
-          // router.push("/login")
+onMounted(() => {  
+  list('');  
+  fetchOptions('');
+  initializeWebSocket(socketUrl, handleMessage);
+});
+onMounted(() => {  
+}); 
+const list = async () => {  
+  try {  
+    const response = await request.get('/loadGlass/LoadGlass/list');  
+    if (response.code == 200) {  
+      tableDataa.value = response.data
+          if (tableDataa.value.length === 4) {
+          if (tableDataa.value[0].patternHeight > 0) {
+          flake.value = true;
           }
-          });
+         if (tableDataa.value[1].patternHeight > 0) {
+          flakea.value = true;
+          } 
+         if (tableDataa.value[2].patternHeight > 0) {
+          flakeb.value = true;
+          } 
+         if (tableDataa.value[3].patternHeight > 0) {
+          flakec.value = true;
+          } 
+           }
+    } else {  
+      ElMessage.warning(response.data);  
+    }  
+  } catch (error) {  
+    console.error('Error fetching options:', error);  
+  }  
+}; 
+// 鍋囪杩欐槸鎮ㄧ殑鍝嶅簲澶勭悊鍑芥暟 
+// request.get("/loadGlass/LoadGlass/list").then((res) => {
+//       if (res.code == 200) {
+//           tableDataa.value = res.data
+//           if (tableDataa.value.length === 4) {
+//           if (tableDataa.value[0].patternHeight > 0) {
+//           flake.value = true;
+//           }
+//          if (tableDataa.value[1].patternHeight > 0) {
+//           flakea.value = true;
+//           } 
+//          if (tableDataa.value[2].patternHeight > 0) {
+//           flakeb.value = true;
+//           } 
+//          if (tableDataa.value[3].patternHeight > 0) {
+//           flakec.value = true;
+//           } 
+//            }
+//           } else {
+//           ElMessage.warning(res.message)
+//           // router.push("/login")
+//           }
+//           }); 
 //瀹氫箟鎺ユ敹鍔犺浇琛ㄥご涓嬫媺鏁版嵁
 const titleSelectJson = ref({
   processType: [],
@@ -109,10 +147,12 @@
 // 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
 const handleMessage = (data) => {
   // 鏇存柊 tableData 鐨勬暟鎹�
-
+  if(data.prioritylist!=null){
   tableData.splice(0, tableData.length, ...data.prioritylist[0]);
+  }
+  if(data.list!=null){
   tableDataa.value = data.list[0]
- // console.log("鏇存柊鍚庢暟鎹�", tableData);
+  }
 };
 const requestData = {  
   state: 100  
@@ -153,13 +193,7 @@
     options.value = []; // 娓呯┖閫夐」鍒楄〃  
   }  
 };  
-// 鍒濆鍖栧姞杞芥暟鎹紙濡傛灉闇�瑕侊級  
-onMounted(() => {  
-  fetchOptions('');  
-  initializeWebSocket(socketUrl, handleMessage);
-});  
 onBeforeUnmount(() => {
-  console.log("鍏抽棴浜�")
   closeWebSocket();
 });
 const user = ref('');
@@ -175,14 +209,12 @@
 const handleBindRack = (row) => {
   workstationId.value = row.workstationId; // 鍋囪rackNumber鏄灦鍙峰瓧娈电殑灞炴�у悕
   ida.value = row.id;
-  console.log(ida.value);
   add.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
 };
 // 娣诲姞
     const handleConfirm = async () => {
-  console.log(ida.value);
       // console.log('id.value:', id.value);
-  if ((ida.value === 2 || ida.value === 4) && (parseInt(patternHeight.value, 10) >= 2700 )) {  
+  if ((ida.value === 2 || ida.value === 4) && (parseInt(selectedValuea.value, 10) >= 2700 )) {  
     try {
     const response = await request.post('/loadGlass/LoadGlass/updateGlassMessage', {
       id: workstationId.value,
@@ -193,24 +225,31 @@
       patternThickness: selectedValuec.value,
       number: number.value
     }); 
+      window.localStorage.setItem('workstationId', workstationId.value)
+      window.localStorage.setItem('patternHeight', selectedValuea.value)
     if (response.code == 200) {
       // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
       ElMessage.success(response.message);
       // window.location.reload() 
       add.value = false;
      tableDataa.value = response.data;
+      let workstationId = window.localStorage.getItem('workstationId')
+      let patternHeight = window.localStorage.getItem('patternHeight')
+      if (patternHeight !== '' && workstationId === '1') {
+      flake.value = true
+    } else if (patternHeight !== '' && workstationId === '2'){
+      flakea.value = true
+    }else if (patternHeight !== '' && workstationId === '3'){
+      flakeb.value = true
+    }else if (patternHeight !== '' && workstationId === '4'){
+      flakec.value = true
+    }
       selectedValuea.value = '';
       selectedValue.value = '';
       selectedValueb.value = '';
       selectedValuec.value = '';
       number.value = '';
-      window.localStorage.setItem('workstationId', response.data.workstationId)
-      let workstationId = window.localStorage.getItem('workstationId')
-      if (workstationId == '1') {
-      flake.value = true
-    } else if (workstationId == '2'){
-      flakea.value = true
-    }
+        list()
     } else {
       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
       ElMessage.error(response.message);
@@ -232,24 +271,31 @@
       patternThickness: selectedValuec.value,
       number: number.value
     }); 
+      window.localStorage.setItem('workstationId', workstationId.value)
+      window.localStorage.setItem('patternHeight', selectedValuea.value)
     if (response.code == 200) {
       // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
       ElMessage.success(response.message);
       // window.location.reload() 
       add.value = false;
      tableDataa.value = response.data;
+      let workstationId = window.localStorage.getItem('workstationId')
+      let patternHeight = window.localStorage.getItem('patternHeight')
+      if (patternHeight !== '' && workstationId === '1') {
+      flake.value = true
+    } else if (patternHeight !== '' && workstationId === '2'){
+      flakea.value = true
+    }else if (patternHeight !== '' && workstationId === '3'){
+      flakeb.value = true
+    }else if (patternHeight !== '' && workstationId === '4'){
+      flakec.value = true
+    }
       selectedValuea.value = '';
       selectedValue.value = '';
       selectedValueb.value = '';
       selectedValuec.value = '';
       number.value = '';
-      window.localStorage.setItem('workstationId', response.data.workstationId)
-      let workstationId = window.localStorage.getItem('workstationId')
-      if (workstationId == '1') {
-      flake.value = true
-    } else if (workstationId == '2'){
-      flakea.value = true
-    }
+      list()
     } else {
       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
       ElMessage.error(response.message);
@@ -285,14 +331,19 @@
       ElMessage.success(response.message);
       adda.value = false;
      tableDataa.value = response.data;
-      window.localStorage.setItem('workstationId', response.data.workstationId)
-      let workstationId = window.localStorage.getItem('workstationId')
-      if (workstationId == '1') {
+      // window.localStorage.setItem('workstationId', response.data.workstationId)
+      // let workstationId = window.localStorage.getItem('workstationId')
+      if (workstationId.value == '1') {
       flake.value = false
-    } else if (workstationId == '2'){
+    } else if (workstationId.value == '2'){
       flakea.value = false
+    }else if (workstationId.value == '3'){
+      flakeb.value = false
+    }else if (workstationId.value == '4'){
+      flakec.value = false
     }
-    } else {
+        list()
+      } else {
       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
       ElMessage.error(response.message);
     }
@@ -545,11 +596,13 @@
     const data = JSON.parse(event.data); // 瑙f瀽娑堟伅涓篔SON  
   
     if (data && Array.isArray(data.InkageStatus) && data.InkageStatus.length > 0) {  
+if(data.InkageStatus!=null){
       const status = data.InkageStatus[0]; 
       cuttingMachine.value = status; 
             upstatus.value = status === '1' ? t('basicData.machine') : t('basicData.machineaa');
       cuttingMachineStatusColor.value = status === '1' ? 'green' : '#911005';  
       inKageWord.value = status === '1' ? 0 : 1;  
+}
     } else {  
       // 澶勭悊閿欒鎯呭喌鎴栨棤鏁堟暟鎹�  
       console.error('鎺ユ敹鍒扮殑鏁版嵁鏃犳晥', data);  
@@ -673,11 +726,13 @@
     </template>
   </el-dialog> -->
       <div id="parent">
-        <img src="../../assets/shangpianji.png" alt="" style="max-width: 20%;max-height: 20%;margin-top: 20px;margin-left: 500px;">
+        <img src="../../assets/shangpian.png" alt="" style="max-width: 40%;max-height: 40%;margin-top: 20px;margin-left: 340px;">
         <div id="overlay" v-show="flake"></div>
         <div id="overlaya" v-show="flakea"></div>
+        <div id="overlayb" v-show="flakeb"></div>
+        <div id="overlayc" v-show="flakec"></div>
       </div>
-      <div style="margin-top: -350px;margin-left: 650px;">
+      <div style="margin-top: -300px;margin-left: 680px;">
         <el-table :data="tableDataa" border style="width: 85%"
      :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"
         >
@@ -876,20 +931,38 @@
 #overlay{
   position: absolute;
   z-index: 1;
-  width: 212px;
-  height: 15px;
+  width: 228px;
+  height: 16px;
   background-color: #529b2e;
-  margin-top: -404px;
-  margin-left: 542px;
+  margin-top: -303px;
+  margin-left: 355px;
 }
 #overlaya{
   position: absolute;
   z-index: 1;
-  width: 212px;
-  height: 15px;
+  width: 228px;
+  height: 16px;
   background-color: #529b2e;
-  margin-top: -38px;
-  margin-left: 537px;
+  margin-top: -303px;
+  margin-left:703px;
+}
+#overlayb{
+  position: absolute;
+  z-index: 1;
+  width: 228px;
+  height: 16px;
+  background-color: #529b2e;
+  margin-top: -45px;
+  margin-left: 355px;
+}
+#overlayc{
+  position: absolute;
+  z-index: 1;
+  width: 228px;
+  height: 16px;
+  background-color: #529b2e;
+  margin-top: -45px;
+  margin-left: 703px;
 }
  
 </style>
\ No newline at end of file
diff --git a/UI-Project/src/views/Slicecage/slicecage.vue b/UI-Project/src/views/Slicecage/slicecage.vue
index 749d012..5870cad 100644
--- a/UI-Project/src/views/Slicecage/slicecage.vue
+++ b/UI-Project/src/views/Slicecage/slicecage.vue
@@ -14,7 +14,9 @@
 const dialogFormVisible = ref(false)
 const dialogFormVisiblea = ref(false)
 const dialogFormVisibleb = ref(false)
+const dialogFormVisiblec = ref(false)
 const tableData = ref([])
+const tableDatagh = ref([])
 const tableDatab = ref([])
 const tableDatac = ref([])
 const tableDatad = ref([])
@@ -70,7 +72,18 @@
 const cell9=ref(true);
 const selectedRow = ref(null); // 瀛樺偍閫変腑鐨勮鏁版嵁  
  
- 
+onMounted(async () => {  
+  try {  
+    const response = await request.post('/cacheVerticalGlass/bigStorageCageDetails/selectTemperingGlass');
+    if (response.code === 200) {  
+      tableDatagh.value = response.data
+    } else {  
+      ElMessage.warning(response.msg)
+    }  
+  } catch (error) {  
+    // console.error('Error fetching rects :', error);  
+  }  
+}); 
     // 褰撳墠椤电爜鍜屾瘡椤垫樉绀虹殑鏉℃暟
     const currentPage = ref(1);
     const itemsPerPage = computed(() => {
@@ -349,6 +362,33 @@
     console.error('鍙戠敓閿欒:', error);  
   }  
 }; 
+ // 鎸囧畾閽㈠寲
+ const brokee = async(row) => {  
+  try {
+    const confirmResult = await ElMessageBox.confirm(  
+      t('searchOrder.specifytemperinga'), 
+      t('searchOrder.prompt'),  
+      {  
+        confirmButtonText: t('searchOrder.yes'), 
+        cancelButtonText: t('searchOrder.cancel'),
+        type: 'warning',  
+      } 
+    ); 
+    if (confirmResult === 'confirm') {  
+      const response = await request.post("/cacheVerticalGlass/bigStorageCageDetails/TemperingGlass",{
+        engineerId: row.engineer_id,
+        temperingLayoutId: row.tempering_layout_id,
+    });
+    if (response.code === 200) {
+      ElMessage.success(response.message);
+      } else {  
+      ElMessage.error(response.message);
+      }  
+    }  
+  } catch (error) {  
+    console.error('鍙戠敓閿欒:', error);  
+  }  
+}; 
 // 鍑虹墖闃熷垪鎷胯蛋
 const brokeb = async(row) => {  
   try {
@@ -617,6 +657,7 @@
   <div style="height: 600px;">
     <el-button style="margin-top: 5px;margin-left: 10px;"   id="searchButton" type="primary" @click="dialogFormVisiblea = true">{{ $t('searchOrder.cageinformation') }}</el-button>
     <el-button style="margin-top: 5px;margin-left: 10px;"   id="searchButton" type="success" @click="dialogFormVisibleb = true">{{ $t('searchOrder.productionqueue') }}</el-button>
+    <el-button style="margin-top: 5px;margin-left: 10px;"   id="searchButton" type="info" @click="dialogFormVisiblec = true">{{ $t('searchOrder.temperingqueries') }}</el-button>
     <el-card style="flex: 1;margin-left: 10px;margin-top: 5px;" v-loading="loading">
       <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 100px;">
         <el-table height="100px" ref="table" 
@@ -1239,6 +1280,19 @@
         </el-table-column>
         </el-table>
 </el-dialog>
+<el-dialog v-model="dialogFormVisiblec" top="5vh" width="85%" :title="$t('searchOrder.temperingqueries')">
+    <el-table  ref="table" style="margin-top: 20px;height: 500px;"
+        :data="tableDatagh" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
+          <el-table-column prop="engineer_id" fixed align="center" :label="$t('searchOrder.projectnumber')" min-width="150"/>
+          <el-table-column prop="tempering_layout_id" fixed align="center" :label="$t('searchOrder.layoutnumber')" min-width="120" />
+          <el-table-column prop="count" align="center" :label="$t('searchOrder.numberglasses')" min-width="150" />
+          <el-table-column fixed="right" :label="$t('searchOrder.operate')" align="center" width="150">
+            <template #default="scope">
+              <el-button size="mini" type="text" plain @click="brokee(scope.row)">{{ $t('searchOrder.specifytempering') }}</el-button>
+            </template>
+        </el-table-column>
+        </el-table>
+</el-dialog>
  
 </template>
 <style scoped>
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/base/entity/BigStorageCageBaseInfo.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/base/entity/BigStorageCageBaseInfo.java
index 97eba6b..b5c0c8e 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/base/entity/BigStorageCageBaseInfo.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/base/entity/BigStorageCageBaseInfo.java
@@ -22,6 +22,11 @@
      */
     @ApiModelProperty(value = "瀹�")
     private double width;
+    /**
+     * 瀹�
+     */
+    @ApiModelProperty(value = "楂�")
+    private double height;
 
     /**
      * 鏍煎瓙鍙�
@@ -29,4 +34,16 @@
     @ApiModelProperty(value = "鐜荤拑id")
     private Integer slot;
 
+    /**
+     * x鍧愭爣
+     */
+    @ApiModelProperty(value = "x鍧愭爣", position = 13)
+    private Integer xCoordinate;
+
+    /**
+     * y鍧愭爣
+     */
+    @ApiModelProperty(value = "y鍧愭爣", position = 14)
+    private Integer yCoordinate;
+
 }
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 5423c6e..fe5c038 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
@@ -21,6 +21,7 @@
      * A09鍑虹墖鐩爣浣嶇疆  d02鍗ц浆绔�    2001
      * A10鍑虹墖鐩爣浣嶇疆  d05鍗ц浆绔�    2002
      */
+    public static final Integer OUT_TARGET_POSITION_ZERO = 0;
     public static final Integer A09_OUT_TARGET_POSITION = 2001;
     public static final Integer A10_OUT_TARGET_POSITION = 2002;
 
@@ -37,12 +38,14 @@
      * 璇嗗埆鍚庢垚鍔熺姸鎬�100
      * 鍑虹墖浠诲姟101
      * 浜哄伐涓嬬墖102
+     * 鍑虹墖涓�103
      * 鎷胯蛋200
      * 鐮存崯201
      */
     public static final Integer GLASS_STATE_IN = 100;
     public static final Integer GLASS_STATE_OUT = 101;
     public static final Integer GLASS_STATE_ARTIFICIAL = 102;
+    public static final Integer GLASS_STATE_OUT_ING = 103;
     public static final Integer GLASS_STATE_TAKE = 200;
     public static final Integer GLASS_STATE_DAMAGE = 201;
 
@@ -112,6 +115,7 @@
     public static final Integer BIG_STORAGE_OUT_SUCCESS = 3;
     public static final Integer BIG_STORAGE_OUT_ERROR = 4;
     public static final Integer BIG_STORAGE_OUT_DAMAGE = 5;
+    public static final List<Integer> BIG_STORAGE_OUT_ALL = Arrays.asList(2, 3);
 
     /**
      * 鍗ц浆绔嬪嚭鐗囪姹�
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java
index 9cd2ca4..ea9bcb2 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java
@@ -25,35 +25,47 @@
 @Api(description = "鎶ュ伐淇℃伅")
 @RestController
 @RequestMapping("/damage")
+@ResponseBody
 public class DamageController {
 
     @Autowired
     private DamageService damageService;
     @ApiOperation("鎶ュ伐鏁版嵁鏌ヨ")
-    @ResponseBody
     @PostMapping("/selectDamage")
     public Result selectDamage(@RequestBody Map map) {
         String startTime=map.get("startTime").toString();
         String endTime=map.get("endTime").toString();
         int type =Integer.parseInt(map.get("type").toString());
         int status =Integer.parseInt(map.get("status").toString());
-        int workingProcedure =Integer.parseInt(map.get("workingProcedure").toString());
-//        String startTime , String endTime, int type, int status, int workingProcedure
+        String workingProcedure =map.get("workingProcedure").toString();
         return Result.build(200,"鏌ヨ鎴愬姛",damageService.selectDamage(startTime,endTime,type,status,workingProcedure));
     }
 
     @ApiOperation("鎶ュ伐")
     @PostMapping("/submitDamage")
-    public Result submitDamage(DateTime startTime , DateTime endTime,int type,int status,int workingProcedureId) {
-        damageService.submitDamage(startTime,endTime,type,status,workingProcedureId);
+    public Result submitDamage(@RequestBody Map map) {
+        String startTime=map.get("startTime").toString();
+        String endTime=map.get("endTime").toString();
+        int type =Integer.parseInt(map.get("type").toString());
+        int status =Integer.parseInt(map.get("status").toString());
+        String workingProcedure =map.get("workingProcedure").toString();
+        damageService.submitDamage(startTime,endTime,type,status,workingProcedure);
         return Result.build(200,"鎶ュ伐鎴愬姛",1);
     }
 
     @ApiOperation("鎶ュ伐鏁版嵁淇敼")
     @PostMapping("/updateDamage")
-    public Result updateDamage(List<Damage> damageList) {
+    public Result updateDamage(@RequestBody List<Damage> damageList) {
         damageService.updateBatchById(damageList);
         return Result.build(200,"淇敼鎴愬姛",1);
     }
+
+    @ApiOperation("鎶ュ伐鏁版嵁鏂板")
+    @PostMapping("/insertDamage")
+    public Result insertDamage(@RequestBody Damage damage) {
+        damageService.insertDamage(damage);
+        return Result.build(200,"鏂板鎴愬姛",1);
+    }
+
 }
 
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/mapper/DamageMapper.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/mapper/DamageMapper.java
index 2b2bc54..a993bd7 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/mapper/DamageMapper.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/mapper/DamageMapper.java
@@ -1,5 +1,6 @@
 package com.mes.damage.mapper;
 
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.mes.damage.entity.Damage;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
@@ -11,6 +12,7 @@
  * @author wu
  * @since 2024-06-13
  */
+@DS("hangzhoumes")
 public interface DamageMapper extends BaseMapper<Damage> {
 
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java
index e5acd8b..1fba706 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java
@@ -17,9 +17,9 @@
  */
 public interface DamageService extends IService<Damage> {
 
-    List<Damage> selectDamage(String startTime, String endTime, int type, int status, int workingProcedureId);
+    List<Damage> selectDamage(String startTime, String endTime, int type, int status, String workingProcedure);
 
-    void submitDamage(DateTime startTime, DateTime endTime, int type, int status, int workingProcedureId);
+    void submitDamage(String startTime, String endTime, int type, int status, String workingProcedure);
 
     void insertDamage(Damage damage);
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java
index d3aa888..118d12e 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java
@@ -39,7 +39,7 @@
      * 鏌ヨ鎶ュ伐淇℃伅
      */
     @Override
-    public List<Damage> selectDamage(String startTime, String endTime, int type, int status, int workingProcedure){
+    public List<Damage> selectDamage(String startTime, String endTime, int type, int status, String workingProcedure){
         LambdaQueryWrapper<Damage> damageSelectWrapper =new LambdaQueryWrapper<>();
         damageSelectWrapper.between(Damage::getDamageTime,startTime,endTime);
         if (type!=0){
@@ -48,7 +48,7 @@
         if (status!=0){
             damageSelectWrapper.eq(Damage::getStatus,status);
         }
-        if(workingProcedure!=0){
+        if(!"0".equals(workingProcedure)){
             damageSelectWrapper.eq(Damage::getWorkingProcedure,workingProcedure);
         }
         return baseMapper.selectList(damageSelectWrapper);
@@ -58,7 +58,7 @@
      * 鎻愪氦鎶ュ伐
      */
     @Override
-    public void submitDamage(DateTime startTime, DateTime endTime, int type, int status, int workingProcedureId){
+    public void submitDamage(String startTime, String endTime, int type, int status, String workingProcedure){
         LambdaUpdateWrapper<Damage> damageUpdateWrapper=new LambdaUpdateWrapper<>();
         damageUpdateWrapper.between(Damage::getDamageTime,startTime,endTime);
         if (type!=0){
@@ -67,8 +67,8 @@
         if (status!=0){
             damageUpdateWrapper.eq(Damage::getStatus,status);
         }
-        if(workingProcedureId!=0){
-            damageUpdateWrapper.eq(Damage::getWorkingProcedure,workingProcedureId);
+        if(!"0".equals(workingProcedure)){
+            damageUpdateWrapper.eq(Damage::getWorkingProcedure,workingProcedure);
         }
         Damage damage=new Damage();
         damage.setStatus(2);
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/mapper/GlassInfoMapper.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/mapper/GlassInfoMapper.java
index bdfb970..e8b3016 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/mapper/GlassInfoMapper.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/mapper/GlassInfoMapper.java
@@ -1,5 +1,6 @@
 package com.mes.glassinfo.mapper;
 
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.glassinfo.entity.GlassInfo;
 
@@ -11,6 +12,7 @@
  * @author wu
  * @since 2024-04-29
  */
+@DS("hangzhoumes")
 public interface GlassInfoMapper extends MPJBaseMapper<GlassInfo> {
 
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java
index d3d7b75..9a83681 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java
@@ -1,4 +1,5 @@
 package com.mes.temperingglass.entity;
+
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.mes.base.entity.BigStorageCageBaseInfo;
@@ -44,12 +45,6 @@
     private Integer glassType;
 
     /**
-     * 楂�
-     */
-    @ApiModelProperty(value = "楂�", position = 7)
-    private double height;
-
-    /**
      * 鍘氬害
      */
     @ApiModelProperty(value = "鍘氬害", position = 8)
@@ -80,18 +75,6 @@
     private Integer temperingFeedSequence;
 
     /**
-     * x鍧愭爣
-     */
-    @ApiModelProperty(value = "x鍧愭爣", position = 13)
-    private Integer xCoordinate;
-
-    /**
-     * y鍧愭爣
-     */
-    @ApiModelProperty(value = "y鍧愭爣", position = 14)
-    private Integer yCoordinate;
-
-    /**
      * 鏃嬭浆瑙掑害锛堥�嗘椂閽堬級
      */
     @ApiModelProperty(value = "鏃嬭浆瑙掑害锛堥�嗘椂閽堬級", position = 15)
@@ -103,4 +86,9 @@
     @ApiModelProperty(value = "鐘舵��", position = 16)
     private Integer state;
 
+    /**
+     * 宸ョ▼id
+     */
+    @ApiModelProperty(value = "宸ョ▼id", position = 17)
+    private String engineerId;
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/TemperingGlassInfoService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/TemperingGlassInfoService.java
index 9e37b94..6abbb6a 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/TemperingGlassInfoService.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/TemperingGlassInfoService.java
@@ -15,7 +15,7 @@
 
     List<TemperingGlassInfo> selectWaitingGlass();
 
-    List<TemperingGlassInfo> selectIntoGlass(int layoutId);
+    List<TemperingGlassInfo> selectIntoGlass(TemperingGlassInfo temperingGlassInfo);
 
     List<TemperingGlassInfo> selectOutGlass();
 
@@ -24,4 +24,7 @@
     List<TemperingGlassInfo> selectLayoutId();
 
     List<TemperingGlassInfo> selectTaskType();
+
+    Integer updateTemperingState(TemperingGlassInfo temperingGlassInfo);
+
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java
index 806ee21..a7da6ff 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.mes.temperingglass.entity.TemperingGlassInfo;
 import com.mes.temperingglass.mapper.TemperingGlassInfoMapper;
 import com.mes.temperingglass.service.TemperingGlassInfoService;
@@ -29,17 +30,20 @@
     public List<TemperingGlassInfo> selectWaitingGlass() {
         //鑾峰彇绛夊緟杩涚倝涓殑鐜荤拑淇℃伅
         QueryWrapper<TemperingGlassInfo> wrapper = new QueryWrapper<>();
-        //wrapper.eq("state",1);
-        wrapper.in("state",1,0);
-        return temperingMapper.selectList(wrapper);
+        wrapper.select("Top 1 *").eq("state",1);
+        TemperingGlassInfo glass=temperingMapper.selectOne(wrapper);
+        QueryWrapper<TemperingGlassInfo> glassinfo = new QueryWrapper<>();
+        glassinfo.eq("engineer_id",glass.getEngineerId())
+                .eq("tempering_layout_id", glass.getTemperingLayoutId());
+        return temperingMapper.selectList(glassinfo);
     }
 
     @Override
-    public List<TemperingGlassInfo> selectIntoGlass(int layoutId) {
+    public List<TemperingGlassInfo> selectIntoGlass(TemperingGlassInfo temperingGlassInfo) {
         //鑾峰彇杩涚倝涓殑鐜荤拑淇℃伅
         QueryWrapper<TemperingGlassInfo> wrapper = new QueryWrapper<>();
-        wrapper.eq("state",2)
-                .eq("tempering_layout_id", layoutId)
+        wrapper.eq("tempering_layout_id", temperingGlassInfo.getTemperingLayoutId())
+                .eq("engineer_id", temperingGlassInfo.getEngineerId())
                 .orderByAsc("tempering_layout_id","tempering_feed_sequence");
         return temperingMapper.selectList(wrapper);
     }
@@ -47,8 +51,13 @@
     @Override
     public List<TemperingGlassInfo> selectOutGlass() {
         //鑾峰彇鍑虹倝涓殑鐜荤拑淇℃伅
+        QueryWrapper<TemperingGlassInfo> wrap = new QueryWrapper<>();
+        wrap.select("Top 1 *").eq("state",3);
+        TemperingGlassInfo glass=temperingMapper.selectOne(wrap);
+        //鏍规嵁宸ョ▼鍙峰拰鐗堝浘鑾峰彇鏁版嵁
         QueryWrapper<TemperingGlassInfo> wapper = new QueryWrapper<>();
-        wapper.eq("state", 3)
+        wapper.eq("engineer_id",glass.getEngineerId())
+                .eq("tempering_layout_id", glass.getTemperingLayoutId())
                 .orderByAsc("tempering_layout_id","tempering_feed_sequence");
         return temperingMapper.selectList(wapper);
     }
@@ -58,14 +67,15 @@
         //鑾峰彇杩囨棆杞彴鏈�澶х殑閽㈠寲鐗堝浘id
         QueryWrapper<TemperingGlassInfo> wapper = new QueryWrapper<>();
         wapper.select("Top 1 *").eq("state", 4)
-                .orderByDesc("tempering_layout_id");
+                .orderByDesc("tempering_layout_id,engineer_id");
         //鏍规嵁鏈�澶х殑鐗堝浘id鏄剧ず閽㈠寲鍚庣殑鐗堝浘淇℃伅
         TemperingGlassInfo glassinfo= temperingMapper.selectOne(wapper);
         if (glassinfo == null) {
             return null;  // 鐩存帴杩斿洖null锛岃〃绀烘病鏈夋壘鍒扮鍚堟潯浠剁殑璁板綍
         }
         QueryWrapper<TemperingGlassInfo> wrapper = new QueryWrapper<>();
-        wrapper.eq("tempering_layout_id",glassinfo.getTemperingLayoutId());
+        wrapper.eq("tempering_layout_id",glassinfo.getTemperingLayoutId())
+                .eq("engineer_id",glassinfo.getEngineerId());
 
         return  temperingMapper.selectList(wrapper);
     }
@@ -73,7 +83,7 @@
     @Override
     public List<TemperingGlassInfo> selectLayoutId() {
         QueryWrapper<TemperingGlassInfo> wrapper = new QueryWrapper<>();
-        wrapper.select("distinct tempering_layout_id")
+        wrapper.select("distinct tempering_layout_id,engineer_id")
                 .eq("state",2)
                 .orderByAsc("tempering_layout_id");
         return temperingMapper.selectList(wrapper);
@@ -86,4 +96,17 @@
                 .groupBy("state");
         return temperingMapper.selectList(wrapper);
     }
+
+    @Override
+    public Integer updateTemperingState(TemperingGlassInfo temperingGlassInfo) {
+        UpdateWrapper<TemperingGlassInfo> wrapper = new UpdateWrapper<>();
+        wrapper.eq("glass_id",temperingGlassInfo.getGlassId())
+                .lt("state",5)
+                .set("state", temperingGlassInfo.getState());;
+        if (temperingMapper.update(null,wrapper) > 0) {
+            return 200;
+        }else {
+            return 100;
+        }
+    }
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/S7control.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/S7control.java
index 32812b3..45bf01e 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/S7control.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/S7control.java
@@ -66,6 +66,7 @@
                 s7PLC.writeUInt16(address, data);
                 result = true;
             } catch (Exception ex) {
+                System.out.println("鍚憄lc鍐欏懡浠よ繃绋嬩腑鍙戠敓寮傚父锛屽師鍥犱负锛�" + ex.getMessage());
                 reStartS7client();
             } finally {
                 tryCount -= 1;
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java
index a67c8f2..fa81984 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketServer.java
@@ -43,8 +43,6 @@
     public void onOpen(Session session, @PathParam("username") String username) {
         this.username = username;
         this.session = session;
-        this.session.setMaxTextMessageBufferSize(12*1024*1024);
-        this.session.setMaxBinaryMessageBufferSize(12*1024*1024);
         List<WebSocketServer> webSocketServers = sessionMap.get(username);
         if (webSocketServers == null) {
             ArrayList<WebSocketServer> arrayListwebserver = new ArrayList<WebSocketServer>();
@@ -98,7 +96,7 @@
      *
      * @param message 瀹㈡埛绔彂閫佽繃鏉ョ殑娑堟伅
      */
-    @OnMessage(maxMessageSize = 5242880)
+    @OnMessage
     public void onMessage(String message, Session session, @PathParam("username") String username) {
         log.info("鏈嶅姟绔敹鍒扮敤鎴穟sername={}鐨勬秷鎭�:{}", username, message);
         JSONObject obj = JSONUtil.parseObj(message);
@@ -121,9 +119,27 @@
     public void sendMessage(String message) {
         try {
             // log.info("鏈嶅姟绔粰瀹㈡埛绔痆{}]鍙戦�佹秷鎭瘂}", this.session.getId(), message);
-            this.session.getBasicRemote().sendText(message);
+            if(this.session.isOpen()){
+                int maxChunkSize = 50000; // 瀹氫箟鏈�澶х殑鍒嗗潡澶у皬
+                int length = message.length();
+                int chunks = (int) Math.ceil((double) length / maxChunkSize);
+                //鍒嗗潡鍙戦�佹秷鎭�
+                for (int i = 0; i < chunks; i++) {
+                    int startIndex = i * maxChunkSize;
+                    int endIndex = Math.min(startIndex + maxChunkSize, length);
+                    String chunk = message.substring(startIndex, endIndex);
+
+                    // 鍒ゆ柇鏄惁鏄渶鍚庝竴鍧楁秷鎭�
+                    boolean isLastChunk = (i == chunks - 1);
+                    if(isLastChunk==true){
+                        chunk+="<END>";
+                    }
+                    // 鍙戦�佸垎鍧楁秷鎭紝骞朵紶閫掓槸鍚︽槸鏈�鍚庝竴鍧楁秷鎭殑鏍囪瘑
+                    this.session.getBasicRemote().sendText(chunk);
+                }
+            }
         } catch (Exception e) {
-            log.error("鏈嶅姟绔彂閫佹秷鎭粰瀹㈡埛绔け璐�", e);
+            log.error("鍙戦�佹秷鎭粰瀹㈡埛绔け璐ワ細{}", e.getMessage(), e);
         }
     }
 
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/controller/WorkAssignmentController.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/controller/WorkAssignmentController.java
index 9b35277..582dafe 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/controller/WorkAssignmentController.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/controller/WorkAssignmentController.java
@@ -1,18 +1,15 @@
 package com.mes.work_assignment.controller;
 
 
-import cn.hutool.core.date.DateTime;
-import com.mes.damage.service.DamageService;
 import com.mes.utils.Result;
+import com.mes.work_assignment.entity.WorkAssignment;
 import com.mes.work_assignment.service.WorkAssignmentService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.*;
 
-import org.springframework.web.bind.annotation.RestController;
+import java.util.List;
 
 /**
  * <p>
@@ -35,5 +32,11 @@
         return Result.build(200,"鏌ヨ鎴愬姛",workAssignmentService.selectWorkAssignment(line,workingProcedure));
     }
 
+    @ApiOperation("鍊肩彮鏁版嵁淇敼")
+    @PostMapping("/updateWorkAssignment")
+    public Result updateWorkAssignment(@RequestBody List<WorkAssignment> workAssignmentList) {
+        workAssignmentService.saveOrUpdateBatch(workAssignmentList);
+        return Result.build(200,"淇敼鎴愬姛",1);
+    }
 }
 
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/mapper/WorkAssignmentMapper.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/mapper/WorkAssignmentMapper.java
index e713455..c5acc6b 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/mapper/WorkAssignmentMapper.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/work_assignment/mapper/WorkAssignmentMapper.java
@@ -1,5 +1,6 @@
 package com.mes.work_assignment.mapper;
 
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.mes.work_assignment.entity.WorkAssignment;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
@@ -11,6 +12,7 @@
  * @author wu
  * @since 2024-07-01
  */
+@DS("hangzhoumes")
 public interface WorkAssignmentMapper extends BaseMapper<WorkAssignment> {
 
 }
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserMapper.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserMapper.java
index 68d34de..b9c491c 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserMapper.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/mapper/SysUserMapper.java
@@ -1,5 +1,6 @@
 package com.mes.userinfo.mapper;
 
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.userinfo.entity.SysUser;
 
@@ -11,7 +12,7 @@
  * @author zhoush
  * @since 2024-04-11
  */
-
+@DS("hangzhoumes")
 public interface SysUserMapper extends MPJBaseMapper<SysUser> {
 
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
index c48b407..772a88b 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
@@ -5,6 +5,7 @@
 import cn.hutool.json.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.github.yulichang.query.MPJQueryWrapper;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.mes.common.S7object;
@@ -587,11 +588,9 @@
                 log.info("6銆佹坊鍔犲嚭鐗囦换鍔℃槸鍚﹀畬鎴愶細{}", taskCacheStatus);
             } else {
                 log.info("5銆侀潪鐩撮�氫换鍔�,灏嗙幓鐠冧俊鎭彃鍏ュ崸寮忕悊鐗囩,褰撳墠鐜荤拑淇℃伅:{}", glassInfo);
-                LambdaQueryWrapper<EdgStorageCageDetails> wrapper = new LambdaQueryWrapper<>();
-                wrapper.eq(EdgStorageCageDetails::getGlassId, glassInfo.getGlassId());
-                EdgStorageCageDetails updateDetail = new EdgStorageCageDetails();
-                updateDetail.setState(Const.GLASS_STATE_OUT);
-                edgStorageCageDetailsService.update(updateDetail, wrapper);
+                LambdaUpdateWrapper<EdgStorageCageDetails> wrapper = new LambdaUpdateWrapper<>();
+                wrapper.eq(EdgStorageCageDetails::getGlassId, glassInfo.getGlassId()).set(EdgStorageCageDetails::getState, Const.GLASS_STATE_OUT);
+                edgStorageCageDetailsService.update(wrapper);
                 log.info("5銆佹洿鏂板嚭鐗囩幓鐠冪殑鐘舵�佷负{}", Const.GLASS_STATE_OUT);
 
                 boolean taskCacheStatus = saveTaskCache(glassInfo.getGlassId(), glassInfo.getSlot(), endcell, Const.GLASS_CACHE_TYPE_OUT);
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 deed23a..3dd6f8f 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
@@ -34,7 +34,11 @@
     @PostMapping("/selectBigStorageCageDetails")
     public Result selectBigStorageCageDetails(@RequestBody Map map) {
         List<BigStorageCageDetails> bigStorageCageDetails=bigStorageCageDetailsService.selectBigStorageCageDetails(map.get("glassId").toString());
-        return Result.build(200,"鏌ヨ鎴愬姛",bigStorageCageDetails);
+        if (bigStorageCageDetails.size()>0){
+            return Result.build(200,"鏌ヨ鎴愬姛",bigStorageCageDetails);
+        }else{
+            return Result.build(200,"鏌ヨ澶辫触锛屾棤姝ょ幓鐠僫d",bigStorageCageDetails);
+        }
     }
 
     @ApiOperation("鐞嗙墖绗艰鎯呮坊鍔�")
@@ -68,10 +72,25 @@
     @ApiOperation("鐞嗙墖绗间换鍔″嚭鐗�")
     @PostMapping("/outBigStorageCageDetails")
     public Result outBigStorageCageDetails(@RequestBody BigStorageCageDetails bigStorageCageDetails) {
-
         bigStorageCageDetailsService.outBigStorageCageDetails(bigStorageCageDetails);
         return Result.build(200,"鍑虹墖娣诲姞鎴愬姛",1);
     }
 
+    @ApiOperation("鎸囧畾閽㈠寲")
+    @PostMapping("/TemperingGlass")
+    public Result TemperingGlass(@RequestBody BigStorageCageDetails bigStorageCageDetails) {
+        boolean result=bigStorageCageDetailsService.TemperingGlass(bigStorageCageDetails.getTemperingLayoutId().toString(),bigStorageCageDetails.getEngineerId());
+        if(result==true){
+            return Result.build(200,"鎸囧畾閽㈠寲鎴愬姛",1);
+        }else {
+            return Result.build(200, "宸插瓨鍦ㄩ挗鍖栦换鍔★紝璇风瓑寰呴挗鍖栧畬鎴愬啀鎸囧畾閽㈠寲", 1);
+        }
+    }
+
+    @ApiOperation("閽㈠寲鏌ヨ")
+    @PostMapping("/selectTemperingGlass")
+    public Result selectTemperingGlass() {
+        return Result.build(200,"鏌ヨ鎴愬姛",bigStorageCageDetailsService.selectTemperingGlass());
+    }
 }
 
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java
index 33fe7f5..e717b46 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java
@@ -60,11 +60,6 @@
     @ApiModelProperty(value = "鐜荤拑绫诲瀷", position = 8)
     private Integer glassType;
 
-    /**
-     * 楂�
-     */
-    @ApiModelProperty(value = "楂�", position = 10)
-    private double height;
 
     /**
      * 鍘氬害
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageDTO.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageDTO.java
index a2df9ab..465c7a2 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageDTO.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageDTO.java
@@ -22,4 +22,9 @@
      * 鐜荤拑鏁伴噺
      */
     private Integer glassCount;
+
+    /**
+     * 绗煎瓙鍙�
+     */
+    private Integer deviceId;
 }
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 5fbc212..cab1f09 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
@@ -8,6 +8,7 @@
 import com.mes.glassinfo.entity.GlassInfo;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -64,4 +65,8 @@
      * @return
      */
     List<SlotSequenceDTO> queryGlassMaxAndMin(String engineerId, Integer temperingLayoutId);
+
+    boolean TemperingGlass(String temperingLayoutId, String engineerId);
+
+    List<Map<String, Object>> selectTemperingGlass();
 }
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 96d4e3b..01b49c4 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
@@ -2,6 +2,7 @@
 
 import cn.hutool.core.lang.Assert;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.mes.bigstorage.entity.BigStorageCage;
@@ -17,6 +18,8 @@
 import com.mes.bigstoragetask.mapper.BigStorageCageFeedTaskMapper;
 import com.mes.bigstoragetask.mapper.BigStorageCageOutTaskMapper;
 import com.mes.common.config.Const;
+import com.mes.damage.entity.Damage;
+import com.mes.damage.service.DamageService;
 import com.mes.glassinfo.entity.GlassInfo;
 import com.mes.glassinfo.mapper.GlassInfoMapper;
 import com.mes.temperingglass.entity.TemperingGlassInfo;
@@ -53,6 +56,9 @@
     private BigStorageCageService bigStorageCageService;
     @Resource
     private GlassInfoMapper glassInfoMapper;
+
+    @Resource
+    private DamageService damageService;
 
     @Value("${mes.minCount}")
     private int minCount;
@@ -197,14 +203,19 @@
             temperingGlassInfoMapper.updateById(temperingGlassInfo);
         }
         if (status == 0) {
-            bigStorageCageDetails.setState(Const.GLASS_STATE_TAKE);
-        } else {
             bigStorageCageDetails.setState(Const.GLASS_STATE_DAMAGE);
+        } else {
+            bigStorageCageDetails.setState(Const.GLASS_STATE_TAKE);
         }
         baseMapper.updateById(bigStorageCageDetails);
         bigStorageCageService.updateRemainWidth(bigStorageCageDetails.getSlot());
         //todo:鎻掑叆鐮存崯鏁版嵁
-
+        Damage damage = new Damage();
+        damage.setGlassId(bigStorageCageDetails.getGlassId());
+        damage.setWorkingProcedure("鍐峰姞宸�");
+        damage.setRemark("澶х悊鐗囩鐮存崯");
+        damage.setStatus(2);
+        damageService.insertDamage(damage);
     }
 
     //鏌ヨ鐜荤拑淇℃伅
@@ -218,10 +229,13 @@
             BeanUtils.copyProperties(glassInfo, bigStorageCageDetails);
             bigStorageCageDetails.setState(1);
             bigStorageCageDetails.setGap(glassGap);
+            List<BigStorageCageDetails> bigStorageCageDetailsList = new ArrayList<>();
+            bigStorageCageDetailsList.add(bigStorageCageDetails);
+            return bigStorageCageDetailsList;
+        } else {
+            return null;
         }
-        List<BigStorageCageDetails> bigStorageCageDetailsList = new ArrayList<>();
-        bigStorageCageDetailsList.add(bigStorageCageDetails);
-        return bigStorageCageDetailsList;
+
     }
 
     //鐞嗙墖绗艰鎯呮坊鍔�
@@ -260,7 +274,7 @@
                 .leftJoin(BigStorageCageDetails.class, BigStorageCageDetails::getSlot, BigStorageCage::getSlot)
                 .eq(BigStorageCage::getEnableState, Const.SLOT_ON)
                 .eq(BigStorageCageDetails::getTemperingLayoutId, glassInfo.getTemperingLayoutId())
-                .gt(BigStorageCage::getRemainWidth, glassInfo.getWidth())
+                .gt(BigStorageCage::getRemainWidth, Math.max(glassInfo.getWidth(), glassInfo.getHeight()))
                 .last("limit 1");
         if (glassInfo.getTemperingLayoutId() == 0) {
             wrapper.eq(BigStorageCageDetails::getWidth, glassInfo.getWidth()).eq(BigStorageCageDetails::getHeight, glassInfo.getHeight());
@@ -272,6 +286,7 @@
             bigStorageDTO = new BigStorageDTO();
             bigStorageDTO.setWidth(bigStorageCage.getRemainWidth());
             bigStorageDTO.setSlot(bigStorageCage.getSlot());
+            bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId());
             return bigStorageDTO;
         }
         bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
@@ -284,19 +299,37 @@
             bigStorageDTO = new BigStorageDTO();
             bigStorageDTO.setWidth(bigStorageCage.getRemainWidth());
             bigStorageDTO.setSlot(bigStorageCage.getSlot());
+            bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId());
             return bigStorageDTO;
         }
-        //todo:鑾峰彇鐜荤拑鐨勫帤搴︼細閲嶆柊閫夌瀛愰渶瑕佹寜鐓х瀛愬彲鏀剧幓鐠冨帤搴﹁繘琛岄�夋嫨
+
+        //鑾峰彇鐜荤拑鐨勫帤搴︼細閲嶆柊閫夌瀛愰渶瑕佹寜鐓х瀛愬彲鏀剧幓鐠冨帤搴﹁繘琛岄�夋嫨
         bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
                 .eq(BigStorageCage::getRemainWidth, slotWidth)
                 .eq(BigStorageCage::getEnableState, Const.SLOT_ON)
-                .gt(BigStorageCage::getMaxThickness, glassInfo.getThickness())
+                .notInSql(BigStorageCage::getDeviceId,
+                        "select distinct device_id from big_storage_cage_details where state in (100,102,103)")
+                .ge(BigStorageCage::getMaxThickness, glassInfo.getThickness())
+                .orderByAsc(BigStorageCage::getDeviceId)
+                .last("limit 1"));
+        if (null != bigStorageCage) {
+            bigStorageDTO = new BigStorageDTO();
+            bigStorageDTO.setWidth(bigStorageCage.getRemainWidth());
+            bigStorageDTO.setSlot(bigStorageCage.getSlot());
+            bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId());
+            return bigStorageDTO;
+        }
+        bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
+                .eq(BigStorageCage::getRemainWidth, slotWidth)
+                .eq(BigStorageCage::getEnableState, Const.SLOT_ON)
+                .ge(BigStorageCage::getMaxThickness, glassInfo.getThickness())
                 .orderByAsc(BigStorageCage::getDeviceId)
                 .last("limit 1"));
         Assert.isTrue(null != bigStorageCage, "娌℃湁绌轰綑鐨勭瀛愬瓨鏀剧幓鐠�");
         bigStorageDTO = new BigStorageDTO();
         bigStorageDTO.setWidth(bigStorageCage.getRemainWidth());
         bigStorageDTO.setSlot(bigStorageCage.getSlot());
+        bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId());
         return bigStorageDTO;
     }
 
@@ -315,4 +348,48 @@
     public List<SlotSequenceDTO> queryGlassMaxAndMin(String engineerId, Integer temperingLayoutId) {
         return baseMapper.queryGlassMaxAndMin(engineerId, temperingLayoutId);
     }
+
+    @Override
+    public boolean TemperingGlass(String temperingLayoutId, String engineerId) {
+        LambdaQueryWrapper<TemperingGlassInfo> temperingGlassInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        temperingGlassInfoLambdaQueryWrapper
+                .eq(TemperingGlassInfo::getState,Const.TEMPERING_NEW);
+        List<TemperingGlassInfo> temperingGlassInfoList=temperingGlassInfoMapper.selectList(temperingGlassInfoLambdaQueryWrapper);
+
+        if(temperingGlassInfoList.size()==0){
+            LambdaQueryWrapper<BigStorageCageDetails> wrapper =new LambdaQueryWrapper<>();
+            wrapper.eq(BigStorageCageDetails::getTemperingLayoutId,temperingLayoutId)
+                    .eq(BigStorageCageDetails::getEngineerId,engineerId)
+                    .in(BigStorageCageDetails::getState,Const.GLASS_STATE_IN,Const.GLASS_STATE_ARTIFICIAL);
+            List<BigStorageCageDetails> bigStorageCageDetailsList=baseMapper.selectList(wrapper);
+
+            for (BigStorageCageDetails bigStorageCageDetails : bigStorageCageDetailsList
+            ) {
+                TemperingGlassInfo temperingGlassInfo = new TemperingGlassInfo();
+                LambdaQueryWrapper<GlassInfo> glassInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                glassInfoLambdaQueryWrapper.eq(GlassInfo::getGlassId, bigStorageCageDetails.getGlassId());
+                GlassInfo glassInfo = glassInfoMapper.selectOne(glassInfoLambdaQueryWrapper);
+
+                BeanUtils.copyProperties(glassInfo, temperingGlassInfo);
+                temperingGlassInfo.setAngle((int) glassInfo.getAngle());
+                temperingGlassInfo.setState(Const.TEMPERING_NEW);
+                temperingGlassInfo.setSlot(bigStorageCageDetails.getSlot());
+                temperingGlassInfoMapper.insert(temperingGlassInfo);
+            }
+            return true;
+        } else {
+            return false;
+        }
+
+
+    }
+
+    @Override
+    public List<Map<String, Object>> selectTemperingGlass(){
+        QueryWrapper<BigStorageCageDetails> wrapper = new QueryWrapper<>();
+        wrapper.select("engineer_id,tempering_layout_id,count(*) as count")
+                .groupBy("engineer_id,tempering_layout_id");
+        List<Map<String, Object>> TemperingGlass = baseMapper.selectMaps(wrapper);
+        return TemperingGlass;
+    }
 }
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 baa9974..44e8033 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
@@ -18,6 +18,7 @@
 import com.mes.temperingglass.service.TemperingGlassInfoService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -48,6 +49,9 @@
 
     @Resource
     private GlassInfoService glassInfoService;
+
+    @Value("${mes.glassGap}")
+    private Integer glassGap;
 
     //杩涚墖閫昏緫
     @Override
@@ -217,15 +221,13 @@
         LambdaQueryWrapper<BigStorageCageDetails> bigStorageCageDetailsWrapper = new LambdaQueryWrapper();
         bigStorageCageDetailsWrapper
                 .eq(BigStorageCageDetails::getSlot, slot)
-                .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)
-                .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_ARTIFICIAL);
+                .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN, Const.GLASS_STATE_ARTIFICIAL);
 
         List<BigStorageCageDetails> bigStorageCageDetailsList = bigStorageCageDetailsMapper.selectList(bigStorageCageDetailsWrapper);
         for (BigStorageCageDetails bigStorageCageDetails : bigStorageCageDetailsList
         ) {
             double widths = bigStorageCageDetails.getWidth();
-            double gap = bigStorageCageDetails.getGap();
-            width -= widths + gap;
+            width = width - widths - glassGap;
         }
         //淇敼鏍煎瓙鍓╀綑瀹藉害
         BigStorageCage bigStorageCage = new BigStorageCage();
@@ -241,7 +243,7 @@
         MPJLambdaWrapper<BigStorageCage> wrapper = new MPJLambdaWrapper<>();
         wrapper.selectAll(BigStorageCage.class).selectCollection(BigStorageCageDetails.class, BigStorageCage::getBigStorageCageDetails)
                 .leftJoin(BigStorageCageDetails.class, on -> on.eq(BigStorageCageDetails::getSlot, BigStorageCage::getSlot)
-                        .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN, Const.GLASS_STATE_ARTIFICIAL))
+                        .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN, Const.GLASS_STATE_ARTIFICIAL,Const.GLASS_STATE_OUT_ING))
                         .orderByAsc(BigStorageCage::getDeviceId)
                         .orderByAsc(BigStorageCage::getSlot);
         return bigStorageCageMapper.selectJoinList(BigStorageCage.class, wrapper);
@@ -254,7 +256,7 @@
         MPJLambdaWrapper<BigStorageCage> wrapper = new MPJLambdaWrapper<>();
         wrapper.selectAll(BigStorageCage.class).selectCollection(BigStorageCageDetails.class, BigStorageCage::getBigStorageCageDetails)
                 .leftJoin(BigStorageCageDetails.class, on -> on.eq(BigStorageCageDetails::getSlot, BigStorageCage::getSlot)
-                        .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN, Const.GLASS_STATE_ARTIFICIAL));
+                        .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN, Const.GLASS_STATE_ARTIFICIAL,Const.GLASS_STATE_OUT_ING));
         List<BigStorageCage> bigStorageCages = bigStorageCageMapper.selectJoinList(BigStorageCage.class, wrapper);
         Map<Integer, List<BigStorageCage>> listMap = bigStorageCages.stream().collect(Collectors.groupingBy(item -> item.getDeviceId()));
         return listMap;
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageOutTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageOutTask.java
index b439101..e5279a4 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageOutTask.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageOutTask.java
@@ -27,10 +27,12 @@
     public BigStorageCageOutTask() {
     }
 
-    public BigStorageCageOutTask(String glassId, Integer startSlot, Integer endSlot, Integer width, Integer trainNumber, Integer serialNumber, Integer taskState) {
+    public BigStorageCageOutTask(String glassId, Integer startSlot, Integer endSlot, double width, double height, Integer trainNumber, Integer serialNumber, Integer taskState) {
         this.glassId = glassId;
         this.startSlot = startSlot;
         this.endSlot = endSlot;
+        this.width = width;
+        this.height = height;
         this.trainNumber = trainNumber;
         this.serialNumber = serialNumber;
         this.taskState = taskState;
@@ -60,6 +62,16 @@
      */
     @ApiModelProperty(value = "鐩爣浣嶇疆", position = 5)
     private Integer endSlot;
+    /**
+     * 鐩爣浣嶇疆
+     */
+    @ApiModelProperty(value = "鐩爣浣嶇疆", position = 5)
+    private double width;
+    /**
+     * 鐩爣浣嶇疆
+     */
+    @ApiModelProperty(value = "鐩爣浣嶇疆", position = 5)
+    private double height;
 
     /**
      * 杞︽
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 85cf462..b8361f4 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
@@ -57,12 +57,17 @@
                 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());
+            log.info("澶х悊鐗囩璇诲彇plc鏁版嵁,寮�濮嬫椂闂达細{}锛岀粨鏉熸椂闂达細{}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", startDate, endDate, endDate.getTime() - startDate.getTime());
             if (getplcvlues != null) {
                 PlcMesObject.setPlcParameterList(getplcvlues);
+                log.info("澶х悊鐗囧綋鍓嶈繘鍗ц浆绔嬬‘璁ゅ瓧涓篸01:{},d04:{},杩涚閫佺墖浠诲姟纭瀛椾负锛歞03:{},d05:{},鍑虹墖浠诲姟纭瀛椾负{}",
+                        PlcMesObject.getPlcParameter("MESToD01").getValue(),
+                        PlcMesObject.getPlcParameter("MESToD04").getValue(),
+                        PlcMesObject.getPlcParameter("MESToD03").getValue(),
+                        PlcMesObject.getPlcParameter("MESToD05").getValue(),
+                        PlcMesObject.getPlcParameter("MESToPLC").getValue());
             }
         }
     }
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 95616b3..c013e0a 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
@@ -33,14 +33,13 @@
     private TemperingGlassInfoService temperingGlassInfoService;
 
     private JSONObject jsonObject = new JSONObject();
-    private JSONObject jsonObject1 = new JSONObject();
     public void queryDataSource1() throws InterruptedException {
         List<Double> carPostion=new ArrayList<>();
         carPostion.add(0.25);
         carPostion.add(0.5);
         jsonObject.append("carPostion",carPostion);
         //鐣岄潰灞曠ず绗煎瓙淇℃伅
-        jsonObject1.append("bigStorageCageInfos", bigStorageCageService.querybigStorageCageDetail());
+        jsonObject.append("bigStorageCageInfos", bigStorageCageService.querybigStorageCageDetail());
 
         //杩涚墖浠诲姟鏁版嵁
         List<BigStorageCageDetails> bigStorageCageDetailsFeedTask=bigStorageCageDetailsService.selectTask(1);
@@ -72,7 +71,6 @@
     @Scheduled(fixedDelay = 1000)
     public void plcStorageCageTask() throws InterruptedException {
         jsonObject = new JSONObject();
-        jsonObject1 = new JSONObject();
         try {
             //鏌ヨ浣跨敤鏁版嵁婧�1鏌ヨ鏁版嵁
             queryDataSource1();
@@ -84,7 +82,6 @@
                 for (WebSocketServer webserver : sendwServer) {
                     if (webserver != null) {
                         webserver.sendMessage(jsonObject.toString());
-                        webserver.sendMessage(jsonObject1.toString());
                         List<String> messages = webserver.getMessages();
                         if (!messages.isEmpty()) {
                             // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
index 5430e36..1254d27 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -85,6 +85,13 @@
     @Value("${mes.glassGap}")
     private Integer glassGap;
 
+    @Value("${mes.xMaxSize}")
+    private Integer xMaxSize;
+
+
+    private String d01GlassId = "";
+    private String d04GlassId = "";
+
     @Scheduled(fixedDelay = 300)
     public void plcToHomeEdgScan() {
         Date startDate = new Date();
@@ -114,11 +121,17 @@
         }
         //鎸夌収绾胯矾鍙婄幓鐠僫d鑾峰彇鐩搁偦涓ゅ潡鐜荤拑 鍗ц浆绔嬩笂鐨勭幓鐠�:  鐘舵�佷负0涓嶆搷浣滐紙D01閫佺墖锛�0涓嶆搷浣滐紝1鍏佽閫佺墖锛夛紝璇锋眰瀛椾负1锛� 锛�02鐜荤拑id涓虹┖鎴栬�呭崸杞珛鏈惎鍔級
         if (!REQUEST_WORD.equals(mesD01Value) && REQUEST_WORD.equals(d01ToMES) && (StringUtils.isBlank(d02State) || !REQUEST_WORD.equals(d03State))) {
-            judgeGlassTypeStatus(d01Id, Const.A09_OUT_TARGET_POSITION, mesD01Address);
+            if (!d01GlassId.equals(d01Id)) {
+                judgeGlassTypeStatus(d01Id, Const.A09_OUT_TARGET_POSITION, mesD01Address);
+                d01GlassId = d01Id;
+            }
         }
 //        鐘舵�佷负0涓嶆搷浣滐紙D01閫佺墖锛�0涓嶆搷浣滐紝1鍏佽閫佺墖锛夛紝璇锋眰瀛椾负1锛� 鍗ц浆绔嬫湭鍚姩
         if (!REQUEST_WORD.equals(mesD04Value) && REQUEST_WORD.equals(d04ToMES) && !REQUEST_WORD.equals(d05State)) {
-            judgeGlassTypeStatus(d04Id, Const.A10_OUT_TARGET_POSITION, mesD04Address);
+            if (!d04GlassId.equals(d04Id)) {
+                judgeGlassTypeStatus(d04Id, Const.A10_OUT_TARGET_POSITION, mesD04Address);
+                d04GlassId = d04Id;
+            }
         }
         Date endDate = new Date();
         log.info("澶х悊鐗囩鎵爜浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
@@ -145,6 +158,7 @@
         }
         LambdaQueryWrapper<BigStorageCageFeedTask> wrapper = new LambdaQueryWrapper<BigStorageCageFeedTask>()
                 .eq(BigStorageCageFeedTask::getTaskType, Const.BIG_STORAGE_IN_RUN)
+                .and(e -> e.isNull(BigStorageCageFeedTask::getTargetSlot).or().eq(BigStorageCageFeedTask::getTargetSlot, Const.OUT_TARGET_POSITION_ZERO))
                 .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP);
         //鑾峰彇鍙互鍚姩鍗ц浆绔嬬殑浠诲姟绾胯矾
         List<BigStorageCageFeedTask> feedTaskList = bigStorageCageFeedTaskService.list(wrapper);
@@ -169,7 +183,7 @@
 //            log.info("涓ゆ潯绾块兘瀛樺湪杩涚墖浠诲姟锛岀粨鏉熶换鍔�");
 //            return;
 //        }
-        //鑾峰彇涓ゆ潯绾垮崸杞珛鏄惁鏈夌幓鐠冿紝涓斾换鍔$姸鎬侀兘涓�2
+        //鑾峰彇涓ゆ潯绾垮崸杞珛鏄惁鏈夌幓鐠冿紝涓斾换鍔$姸鎬佷负1/2
         List<Integer> lineList = bigStorageCageFeedTaskService.querySitToUpGlass();
         if (CollectionUtils.isEmpty(lineList)) {
             Date endDate = new Date();
@@ -235,6 +249,11 @@
         Date startDate = new Date();
         log.info("澶х悊鐗囩绌鸿溅杩涚墖浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate);
         PlcParameterObject plcMesObject = S7object.getinstance().PlcMesObject;
+        String e02State = plcMesObject.getPlcParameter("E02State").getAddress();
+        if (REQUEST_WORD.equals(e02State)) {
+            log.info("鍑虹墖蹇欑锛岀粨鏉熷嚭鐗囦换鍔�");
+            return;
+        }
         String mesToPLCAddress = plcMesObject.getPlcParameter("MESToPLC").getAddress();
         List<BigStorageCageOutTask> outingList = bigStorageCageOutTaskService.list(new LambdaQueryWrapper<BigStorageCageOutTask>().eq(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_NEW));
         Assert.isTrue(CollectionUtils.isEmpty(outingList), "鏈夋鍦ㄦ墽琛屽嚭鐗囩殑浠诲姟锛岀粨鏉熷綋鍓嶅嚭鐗囩嚎绋�");
@@ -298,16 +317,50 @@
                     List<BigStorageCageDetails> list = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>()
                             .eq(BigStorageCageDetails::getSlot, first.getSlot()).eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN));
                     List<BigStorageCageOutTask> outTasks = list.stream().map(e -> new BigStorageCageOutTask(e.getGlassId(), first.getSlot(), second.getSlot(),
-                            slotWidth, 0, 0, 1)).collect(Collectors.toList());
+                            e.getWidth() * 10, e.getHeight() * 10, 0, 0, 1)).collect(Collectors.toList());
                     bigStorageCageOutTaskService.saveBatch(outTasks);
-                    S7object.getinstance().plccontrol.writeWord(mesToPLCAddress, 1);
-                    log.info("宸插悜plc鍙戦�佸嚭鐗囦换鍔$‘璁わ紝鍦板潃涓猴細{}", mesToPLCAddress);
+
+                    //鍚憄lc鍐欏叆纭瀛�
+                    int returnData = 0;
+                    int count = 1;
+                    while (returnData == 0) {
+                        log.info("宸插悜plc绗瑊}娆¢�佸崗璁�", count);
+                        S7object.getinstance().plccontrol.writeWord(mesToPLCAddress, 1);
+                        returnData = S7object.getinstance().plccontrol.readWord(mesToPLCAddress, 1).get(0);
+                        log.info("宸插悜plc绗瑊}娆″彂閫佸嚭鐗囦换鍔$‘璁わ紝鍦板潃涓猴細{},鍐欏叆鐨勫唴瀹逛负{}", count++, mesToPLCAddress, returnData);
+                    }
                     Date endDate = new Date();
                     log.info("澶х悊鐗囩鍑虹墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
                     return;
                 }
             }
         }
+    }
+
+    @Scheduled(fixedDelay = 300)
+    public void updateOutGlassStateTask() {
+        Date startDate = new Date();
+        log.info("1銆佸ぇ鐞嗙墖绗煎嚭鐗囧畬鎴愬悗鏇存柊澶х悊鐗囩鏁版嵁浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate);
+        //鍥犱负澶х悊鐗囩鍜屽嚭鐗囦换鍔℃槸涓や釜搴撶殑鏁版嵁锛屾墍浠ヨ鍒嗗紑鏌ユ壘
+        List<Object> list = bigStorageCageDetailsService.listObjs(new LambdaQueryWrapper<BigStorageCageDetails>()
+                .select(BigStorageCageDetails::getGlassId).eq(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT_ING));
+        if (CollectionUtils.isNotEmpty(list)) {
+            log.info("2銆佽幏鍙栨墍鏈夋鍦ㄥ嚭鐗囩殑鐜荤拑淇℃伅id:{}", list);
+            List<String> glassIds = list.stream().map(String::valueOf).collect(Collectors.toList());
+            List<Object> outSuccessGlassIdsObj = bigStorageCageOutTaskService.listObjs(new LambdaQueryWrapper<BigStorageCageOutTask>()
+                    .select(BigStorageCageOutTask::getGlassId).in(BigStorageCageOutTask::getGlassId, glassIds).in(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_ALL));
+            List<String> outSuccessGlassIds = outSuccessGlassIdsObj.stream().map(String::valueOf).collect(Collectors.toList());
+            if (CollectionUtils.isNotEmpty(outSuccessGlassIds)) {
+                log.info("3銆佽幏鍙栧嚭鐗囧凡瀹屾垚鐨勭幓鐠冧俊鎭痠d:{}", outSuccessGlassIdsObj);
+                bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>()
+                        .set(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT).in(BigStorageCageDetails::getGlassId, outSuccessGlassIds));
+                log.info("4銆佸ぇ鐞嗙墖绗煎嚭鐗囩姸鎬佸凡瀹屾垚宸插畬鎴愮殑鐜荤拑淇℃伅id:{}", outSuccessGlassIdsObj);
+            }
+        }
+        Date endDate = new Date();
+        log.info("end:澶х悊鐗囩鍑虹墖瀹屾垚鍚庢洿鏂板ぇ鐞嗙墖绗兼暟鎹换鍔$粨鏉熸椂闂达細{}锛屽叡鑰楁椂锛歿}ms,缁撴潫浠诲姟", endDate, endDate.getTime() - startDate.getTime());
+        return;
+
     }
 
     /**
@@ -321,7 +374,11 @@
         List<BigStorageCageFeedTask> inDamageTaskInfoList = bigStorageCageFeedTaskService.list(new LambdaQueryWrapper<BigStorageCageFeedTask>()
                 .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_DAMAGE));
         if (CollectionUtils.isNotEmpty(inDamageTaskInfoList)) {
+            log.info("鑾峰彇杩涚墖浠诲姟琛ㄤ腑鐮存崯鐨勭幓鐠冧俊鎭瘂}", inDamageTaskInfoList);
             bigStorageCageFeedTaskService.remove(new LambdaQueryWrapper<BigStorageCageFeedTask>().eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_DAMAGE));
+            //鐞嗙墖绗艰鎯呰〃鏁版嵁鐘舵�佹洿鏂�
+            bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>()
+                    .set(BigStorageCageDetails::getState, Const.GLASS_STATE_DAMAGE).in(BigStorageCageDetails::getGlassId, inDamageTaskInfoList.stream().map(BigStorageCageFeedTask::getGlassId).collect(Collectors.toList())));
             //灏嗙牬鎹熶俊鎭柊澧炲叆鐮存崯琛�
             for (BigStorageCageFeedTask bigStorageCageFeedTask : inDamageTaskInfoList) {
                 Damage damage = new Damage();
@@ -332,14 +389,21 @@
                 damage.setStatus(2);
                 damageService.insertDamage(damage);
             }
+            log.info("杩涚墖浠诲姟鎵ц瀹屾垚");
         }
         //鑾峰彇鍑虹墖浠诲姟琛ㄤ腑鐘舵�佷负鐮存崯鐨勬暟鎹�
         List<BigStorageCageOutTask> outDamageTaskInfoList = bigStorageCageOutTaskService.list(new LambdaQueryWrapper<BigStorageCageOutTask>()
                 .eq(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_DAMAGE));
         if (CollectionUtils.isNotEmpty(outDamageTaskInfoList)) {
+            log.info("鑾峰彇鍑虹墖浠诲姟琛ㄤ腑鐮存崯鐨勭幓鐠冧俊鎭瘂}", outDamageTaskInfoList);
             bigStorageCageOutTaskService.remove(new LambdaQueryWrapper<BigStorageCageOutTask>().eq(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_IN_DAMAGE));
             List<String> glassIdList = outDamageTaskInfoList.stream().map(BigStorageCageOutTask::getGlassId).collect(Collectors.toList());
+            //绉婚櫎閽㈠寲涓嬬墖琛ㄦ暟鎹�
             temperingGlassInfoService.remove(new LambdaQueryWrapper<TemperingGlassInfo>().in(TemperingGlassInfo::getGlassId, glassIdList));
+            //鐞嗙墖绗艰鎯呰〃鏁版嵁鐘舵�佹洿鏂�
+            bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>()
+                    .set(BigStorageCageDetails::getState, Const.GLASS_STATE_DAMAGE).in(BigStorageCageDetails::getGlassId, glassIdList));
+
             //灏嗙牬鎹熶俊鎭柊澧炲叆鐮存崯琛�
             for (BigStorageCageOutTask bigStorageCageOutTask : outDamageTaskInfoList) {
                 Damage damage = new Damage();
@@ -350,6 +414,7 @@
                 damage.setStatus(2);
                 damageService.insertDamage(damage);
             }
+            log.info("鍑虹墖浠诲姟鎵ц瀹屾垚");
         }
         Date endDate = new Date();
         log.info("澶х悊鐗囩鐮存崯鐜荤拑娓呴櫎浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
@@ -411,7 +476,15 @@
         }
         //鍚憄lc鍙戦�佽繘鐗囩‘璁�
         if (flag) {
-            S7object.getinstance().plccontrol.writeWord(mesAddress, 1);
+            //鍚憄lc鍐欏叆纭瀛�
+            int returnData = 0;
+            int count = 1;
+            while (returnData == 0) {
+                S7object.getinstance().plccontrol.writeWord(mesAddress, 1);
+                returnData = S7object.getinstance().plccontrol.readWord(mesAddress, 1).get(0);
+                log.info("杩涘崸杞珛绗瑊}娆″彂閫佺‘璁ゅ瓧瀹屾垚锛屽湴鍧�涓猴細{},鍐欏叆鐨勫唴瀹逛负{}", count++, mesAddress, returnData);
+
+            }
         }
         //璁板綍鏃犳硶鏀句笅鐜荤拑锛屽悗缁垽鏂惎鍔�
         return flag;
@@ -439,7 +512,8 @@
      */
     public Integer getStartLine() {
         List<BigStorageCageFeedTask> taskList = bigStorageCageFeedTaskService.list(new LambdaQueryWrapper<BigStorageCageFeedTask>()
-                .inSql(BigStorageCageFeedTask::getId, "select min(id) from big_storage_cage_feed_task where task_state = 2 group by line"));
+                .inSql(BigStorageCageFeedTask::getId, "select min(id) from big_storage_cage_feed_task where task_state = 2" +
+                        "and (target_slot = 0 or target_slot is null) group by line"));
         Assert.isFalse(CollectionUtils.isEmpty(taskList), "鍗ц浆绔嬩袱鏉$嚎閮芥病鏈夌幓鐠冭繘鐗囦换鍔�");
         Map<String, Integer> taskMap = taskList.stream().collect(Collectors.toMap(BigStorageCageFeedTask::getGlassId,
                 BigStorageCageFeedTask::getLine));
@@ -458,6 +532,7 @@
         //1銆佽幏鍙栦换鍔¤〃涓殑鎵�鏈夌幓鐠冿紙鎸囧畾绾胯矾涓斿凡缁忚繘鍗ц浆绔嬪畬鎴愶級
         List<BigStorageCageFeedTask> taskList = bigStorageCageFeedTaskService.list(new LambdaQueryWrapper<BigStorageCageFeedTask>()
                 .eq(BigStorageCageFeedTask::getLine, line)
+                .and(e -> e.isNull(BigStorageCageFeedTask::getTargetSlot).or().eq(BigStorageCageFeedTask::getTargetSlot, Const.OUT_TARGET_POSITION_ZERO))
                 .in(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP_ALL)
                 .orderByAsc(BigStorageCageFeedTask::getId));
         //2銆佸幓绗煎瓙鍐呮煡鎵炬槸鍚﹀彲浠ョ户缁瓨鏀剧殑绗煎瓙
@@ -487,7 +562,7 @@
             //2銆佽幏鍙栫洰鏍囨牸瀛愪俊鎭�
             BigStorageDTO bigStorageDTO = bigStorageCageDetailsService.queryTargetSlotByTempering(info);
             //3銆佹洿鏂板ぇ鐞嗙墖绗艰〃鍓╀綑瀹藉害
-            bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>().set(BigStorageCage::getRemainWidth, bigStorageDTO.getWidth() - info.getWidth())
+            bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>().set(BigStorageCage::getRemainWidth, bigStorageDTO.getWidth() - info.getWidth() - glassGap)
                     .eq(BigStorageCage::getSlot, bigStorageDTO.getSlot()));
             //4銆佹洿鏂拌繘鐗囦换鍔¤〃锛岀洰鏍囨牸瀛愬強鐘舵�侊紙鐘舵�佹敼涓�2 鐢垫皵鎵埌鑷澶勭悊锛�  閬囧埌闂锛氭棤娉曟壒閲忔洿鏂帮紝鎵归噺鏇存柊鏃犳硶璧版寚瀹氫粠搴�
             e.setTargetSlot(bigStorageDTO.getSlot());
@@ -497,6 +572,8 @@
             //5銆佸皢杩涚墖淇℃伅瀛樺叆澶х悊鐗囩璇︽儏琛�
             cageDetails.setSlot(bigStorageDTO.getSlot());
             cageDetails.setState(Const.GLASS_STATE_IN);
+            cageDetails.setDeviceId(bigStorageDTO.getDeviceId());
+            cageDetails.setGap(glassGap);
             bigStorageCageDetailsService.save(cageDetails);
         }
         sendTaskListToPLC(taskList, line);
@@ -514,8 +591,13 @@
             s7control.writeWord(plcMesObject.getPlcParameter("StartAddToImport" + i).getAddress(), taskList.get(i - 1).getLine());
             s7control.writeWord(plcMesObject.getPlcParameter("TargetAddToImport" + i).getAddress(), taskList.get(i - 1).getTargetSlot());
         }
-        s7control.writeWord(outLine, 2);
-        log.info("閫佺墖浠诲姟宸插彂閫佸畬鎴愶紝浠诲姟绾胯矾涓猴細{}锛屽惎鍔ㄥ湴鍧�涓簕},纭瀛椾负{}", line, outLine, 2);
+        int returnData = 0;
+        int count = 1;
+        while (returnData == 0) {
+            s7control.writeWord(outLine, 2);
+            returnData = s7control.readWord(outLine, 1).get(0);
+            log.info("宸插悜plc绗瑊}娆″彂閫佸嚭鐗囦换鍔$‘璁わ紝鍦板潃涓猴細{},鍐欏叆鐨勫唴瀹逛负{}", count++, outLine, returnData);
+        }
     }
 
     private <T extends BigStorageCageBaseInfo> Boolean computeOutGlassInfo(List<T> list, Boolean isTempering, String mesToPLCAddress) {
@@ -523,17 +605,25 @@
         List<BigStorageCageOutTask> bigStorageCageOutTaskList = new ArrayList<>();
         //鎵撹溅鍓╀綑灏哄
         Integer remainWidth = carWidth;
+        int maxX = 0;
         for (T e : list) {
-            if (bigStorageCageOutTaskList.size() > outCarMaxSize || e.getWidth() > remainWidth) {
+            if (bigStorageCageOutTaskList.size() >= outCarMaxSize || e.getWidth() > remainWidth) {
                 break;
             }
             remainWidth = remainWidth - (int) e.getWidth() - glassGap;
             if (isTempering) {
-                bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.TEMPERING_OUT_TARGET_POSITION,
-                        (int) e.getWidth() * 10, 0, 0, 1));
+                int minLength = Math.min((int) e.getWidth(), (int) e.getHeight());
+                if (maxX + minLength <= xMaxSize) {
+                    bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.TEMPERING_OUT_TARGET_POSITION,
+                            e.getWidth() * 10, e.getHeight() * 10, 0, 0, 1));
+                    maxX = Math.max(maxX, e.getXCoordinate());
+                } else {
+                    break;
+                }
+
             } else {
                 bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.ARTIFICIAL_OUT_TARGET_POSITION,
-                        (int) e.getWidth() * 10, 0, 0, 1));
+                        e.getWidth() * 10, e.getHeight(), 0, 0, 1));
             }
 
         }
@@ -543,26 +633,32 @@
         List<String> glassIds = bigStorageCageOutTaskList.stream().map(BigStorageCageOutTask::getGlassId).collect(Collectors.toList());
         log.info("灏嗗嚭鐗囩幓鐠儃}鐜荤拑鐘舵�佹敼涓哄凡鍑虹墖", glassIds);
         bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>()
-                .set(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT)
+                .set(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT_ING)
                 .in(BigStorageCageDetails::getGlassId, glassIds));
         //鏇存柊绗煎瓙鍐呮牸瀛愮殑鍓╀綑灏哄
         updateSlotRemain(list, glassIds);
-        S7object.getinstance().plccontrol.writeWord(mesToPLCAddress, 1);
-        log.info("宸插悜plc鍙戦�佸嚭鐗囦换鍔$‘璁わ紝鍦板潃涓猴細{}", mesToPLCAddress);
+
+        int returnData = 0;
+        int count = 1;
+        while (returnData == 0) {
+            S7object.getinstance().plccontrol.writeWord(mesToPLCAddress, 1);
+            returnData = S7object.getinstance().plccontrol.readWord(mesToPLCAddress, 1).get(0);
+            log.info("宸插悜plc绗瑊}娆″彂閫佸嚭鐗囦换鍔$‘璁わ紝鍦板潃涓猴細{},鍐欏叆鐨勫唴瀹逛负{}", count++, mesToPLCAddress, returnData);
+        }
         return Boolean.TRUE;
     }
 
     /**
      * 鏇存柊绗煎瓙鍐呮牸瀛愮殑鍓╀綑灏哄
      *
-     * @param list
-     * @param taskGlassIds
+     * @param list         绗煎唴鍙互鍑虹鐨勭幓鐠冧俊鎭�
+     * @param taskGlassIds 鏈浠诲姟鍑哄幓鐨勭幓鐠僫ds
      * @param <T>
      */
     public <T extends BigStorageCageBaseInfo> void updateSlotRemain(List<T> list, List<String> taskGlassIds) {
         //鑾峰彇闇�瑕佸嚭鍘伙紙鍖呮嫭寰呭嚭鍘荤殑锛夌殑鎵�鏈夌幓鐠冩牸瀛愬彿
         List<Integer> slotList = list.stream().map(T::getSlot).distinct().collect(Collectors.toList());
-        //鑾峰彇寰呭嚭鍘荤殑鐜荤拑淇℃伅锛堢瓑涓嬭溅鍑哄幓鐨勭幓鐠冿級
+        //鑾峰彇寰呭嚭鍘荤殑鐜荤拑淇℃伅锛堢瓑寰呮湰娆′换鍔$粨鏉熷悗涓嬭溅鍑哄幓鐨勭幓鐠冿級
         Map<Integer, Double> slotRemainMap = list.stream().filter(e -> !taskGlassIds.contains(e.getGlassId()))
                 .collect(Collectors.groupingBy(T::getSlot, Collectors.summingDouble(item -> item.getWidth() + glassGap)));
         if (CollectionUtils.isNotEmpty(slotRemainMap)) {
@@ -588,7 +684,7 @@
         }
         //鑾峰彇鐜荤拑淇℃伅
         GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId));
-        return sitToUpRemainWidth.getWidth() < glassInfo.getWidth();
+        return sitToUpRemainWidth.getWidth() < Math.max(glassInfo.getWidth(), glassInfo.getHeight());
     }
 
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
index d4281e8..d7124b8 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
@@ -3,7 +3,7 @@
 
 spring:
   profiles:
-    active: prod
+    active: cz
   application:
     name: cacheVerticalGlass
 mybatis-plus:
@@ -16,6 +16,7 @@
   minCount: 5
   carWidth: 5000   #澶ц溅瀹藉害
   slotWidth: 5000   #澶ц溅瀹藉害
-  inCarMaxSize: 6     #杩涚墖澶ц溅鏈�澶у瓨鏀剧幓鐠冩暟閲�
-  outCarMaxSize: 1     #鍑虹墖澶ц溅鏈�澶у瓨鏀剧幓鐠冩暟閲�
-  glassGap: 300      #鐜荤拑闂磋窛
\ No newline at end of file
+  inCarMaxSize: 2     #杩涚墖澶ц溅鏈�澶у瓨鏀剧幓鐠冩暟閲�
+  outCarMaxSize: 3     #鍑虹墖澶ц溅鏈�澶у瓨鏀剧幓鐠冩暟閲�
+  glassGap: 1000      #鐜荤拑闂磋窛
+  xMaxSize: 2850
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
index 8306c6f..b49e679 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
@@ -37,7 +37,7 @@
              ) T2
                  INNER JOIN (SELECT ENGINEER_ID, TEMPERING_LAYOUT_ID, COUNT(TEMPERING_FEED_SEQUENCE) AS COUNT
                              FROM BIG_STORAGE_CAGE_DETAILS
-                             WHERE STATE in (100, 101, 102)
+                             WHERE STATE in (100, 101, 102, 103)
                              GROUP BY ENGINEER_ID, TEMPERING_LAYOUT_ID) T3 ON T2.ENGINEER_ID = T3.ENGINEER_ID
             AND T2.TEMPERING_LAYOUT_ID = T3.TEMPERING_LAYOUT_ID
             AND T2.COUNT = T3.COUNT
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageFeedTaskMapper.xml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageFeedTaskMapper.xml
index 0a32e28..c4affcd 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageFeedTaskMapper.xml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageFeedTaskMapper.xml
@@ -34,6 +34,7 @@
                             END MAX_LENGTH
                  FROM BIG_STORAGE_CAGE_FEED_TASK
                  WHERE LINE = #{line}
+                   AND (target_slot = 0 or target_slot is null)
                    AND TASK_STATE IN (1, 2)
              ) T
     </select>
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
index 6e45b69..d9a451e 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
@@ -38,8 +38,8 @@
     @Autowired
     DamageService damageService;
 
-    @Autowired
-    BigStorageCageFeedTaskMapper bigStorageCageFeedTaskMapper;
+//    @Autowired
+//    BigStorageCageFeedTaskMapper bigStorageCageFeedTaskMapper;
 
     @Test
     public void testInsertSlot() {
@@ -161,4 +161,10 @@
         damage.setStatus(2);
         damageService.insertDamage(damage);
     }
+
+    @Test
+    public void updateOutGlassStateTask() {
+        plcStorageCageTask.updateOutGlassStateTask();
+    }
+
 }
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java
index e57a33f..8c66de2 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java
@@ -43,7 +43,7 @@
      * fixedDelay : 涓婁竴涓皟鐢ㄧ粨鏉熷悗鍐嶆璋冪敤鐨勫欢鏃�
      */
 
-    @Scheduled(fixedDelay = 30000000)
+    @Scheduled(fixedDelay = 300)
     public void plcLoadGlassTask() throws InterruptedException {
         try {
             //鑾峰彇鑱旀満鐘舵��
@@ -87,7 +87,7 @@
         }
     }
 
-    @Scheduled(fixedDelay = 30000000)
+    @Scheduled(fixedDelay = 300)
     public void plcLoadGlassReport(){
         //鑾峰彇鏄惁鏈夋眹鎶�
         String loadStatus = plcParameterObject.getPlcParameter("PlcStatus").getValue();
@@ -144,8 +144,8 @@
     public void loadGlassStatus(){
         JSONObject jsonObject = new JSONObject();
         //姝e湪杩涜鐨勪换鍔�
-        //String inkageStatus =plcParameterObject.getPlcParameter("MesToPlc").getValue();
-        String inkageStatus ="1";
+        String inkageStatus =plcParameterObject.getPlcParameter("MesToPlc").getValue();
+        //String inkageStatus ="1";
         jsonObject.append("InkageStatus", inkageStatus);
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("loadGlass");
         if (sendwServer != null) {
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java
index 9d93d35..e8b731f 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java
@@ -66,8 +66,8 @@
         List<OptimizeUpPattenUsage> upPattenUsageList = null;
         if (engineeringId != null) {
             upPattenUsageList = optimizeProjectMapper.selectJoinList(OptimizeUpPattenUsage.class, new MPJQueryWrapper<OptimizeProject>()
-                    .select("t.project_no,t.glass_type,b.o_width as width,b.o_height as height ,REGEXP_REPLACE(t.glass_thickness,'\\D','')as glass_thickness,b.stock_number")
-                    .leftJoin("optimize_detail b on t.project_no=b.project_no")
+                    .select("t.project_no,t.glass_type,b.width,b.height ,REGEXP_REPLACE(t.glass_thickness,'\\D','')as glass_thickness,b.count as stockId")
+                    .leftJoin("optimize_layout b on t.project_no=b.project_no")
                     .eq("b.project_no", engineeringId));
         }
         // 鍒涘缓涓�涓� List 鐢ㄤ簬淇濆瓨鏄犲皠鍚庣殑瀹炰綋瀵硅薄
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcScreenTask.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcScreenTask.java
index d5d59a5..ea60109 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcScreenTask.java
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcScreenTask.java
@@ -25,7 +25,7 @@
     @Autowired
     private ReportingWorkService reportingWorkService;
     @Autowired
-    private  OptimizeProjectService optimizeProjectService;
+    private OptimizeProjectService optimizeProjectService;
     @Autowired
     private OrdersService ordersService;
     /**
@@ -34,45 +34,26 @@
      */
 
     @Scheduled(fixedDelay = 2000)
-    public void screenHome(){
+    public void screenHome() {
         JSONObject jsonObject = new JSONObject();
-        //姝e湪绛夊緟杩涚墖鐨勭幓鐠�
         Reportingdamage reportingdamage = new Reportingdamage();
         reportingdamage.setReportingWorkTime("2024-05-11");
-        //鑾峰彇鍒囧壊淇℃伅
-        reportingdamage.setThisProcess("鍒囧壊");
-        List<Reportingdamage> cutting = reportingWorkService.selectDamage(reportingdamage);
-        jsonObject.append("cutting", cutting);
-        //鑾峰彇纾ㄨ竟淇℃伅
-        reportingdamage.setThisProcess("纾ㄨ竟");
-        List<Reportingdamage> edging = reportingWorkService.selectDamage(reportingdamage);
-        jsonObject.append("edging", edging);
-        //鑾峰彇閽㈠寲淇℃伅
-        reportingdamage.setThisProcess("閽㈠寲");
-        List<Reportingdamage> tempering = reportingWorkService.selectDamage(reportingdamage);
-        jsonObject.append("tempering", tempering);
-        //鑾峰彇澶硅兌淇℃伅
-        reportingdamage.setThisProcess("澶硅兌");
-        List<Reportingdamage> doubling = reportingWorkService.selectDamage(reportingdamage);
-        jsonObject.append("doubling", doubling);
-        //鑾峰彇涓┖淇℃伅
-        reportingdamage.setThisProcess("涓┖");
-        List<Reportingdamage> hollow = reportingWorkService.selectDamage(reportingdamage);
-        jsonObject.append("hollow", hollow);
-        //鑾峰彇鍖呰淇℃伅
-        reportingdamage.setThisProcess("鍖呰");
-        List<Reportingdamage> packaging = reportingWorkService.selectDamage(reportingdamage);
-        jsonObject.append("packaging", packaging);
+        //鎵囧舰鍥惧悇璁惧鐨勫姞宸ョ牬鎹熸暟閲�
+        List<Reportingdamage> device = reportingWorkService.selectDamage(reportingdamage);
+        jsonObject.append("device", device);
         //鑾峰彇娆$牬鏈ˉ淇℃伅
-        List<AwaitingRepair>awaitingRepairs = reportingWorkService.selectAwaitingRepair();
+        List<AwaitingRepair> awaitingRepairs = reportingWorkService.selectAwaitingRepair();
         jsonObject.append("awaitingRepairs", awaitingRepairs);
         //鑾峰彇姝e湪杩涜鐨勫伐绋�
-        List<OptimizeProject>optimizeProjects= optimizeProjectService.getDoingTask();
+        List<OptimizeProject> optimizeProjects = optimizeProjectService.getDoingTask();
         jsonObject.append("DoingTask", optimizeProjects);
         //鑾峰彇褰撳墠璁㈠崟
-        List<Orders>orders=ordersService.selectOrders();
+        List<Orders> orders = ordersService.selectOrders();
         jsonObject.append("orders", orders);
 
+        /*鐜板満瑙勫垝鍥炬樉绀�*/
+
+
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("screen");
         if (sendwServer != null) {
             for (WebSocketServer webserver : sendwServer) {
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java
index 794ee4a..f7e63e5 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java
@@ -25,7 +25,7 @@
      * fixedDelay : 涓婁竴涓皟鐢ㄧ粨鏉熷悗鍐嶆璋冪敤鐨勫欢鏃�
      */
 
-    @Scheduled(fixedDelay = 2000)
+    @Scheduled(fixedDelay = 1000)
     public void temperingGlassHome(){
         JSONObject jsonObject = new JSONObject();
         //姝e湪绛夊緟杩涚墖鐨勭幓鐠�
@@ -34,12 +34,14 @@
         //鑾峰彇鏁村湪鐐変腑鐨勪袱涓増鍥緄d
         List<TemperingGlassInfo> layoutId = temperingAgoService.selectLayoutId();
         //杩涚倝涓殑鐜荤拑
-        List<TemperingGlassInfo> intoGlass = temperingAgoService.selectIntoGlass(layoutId.get(0).getTemperingLayoutId());
-        jsonObject.append("intoGlass", intoGlass);
-        //杩涚倝涓殑绗簩涓増鍥�
-        if (layoutId.size() > 1) {
-            List<TemperingGlassInfo> intoGlass2 = temperingAgoService.selectIntoGlass(layoutId.get(1).getTemperingLayoutId());
-            jsonObject.append("intoGlass2", intoGlass2);
+        if(!layoutId.isEmpty()) {
+            List<TemperingGlassInfo> intoGlass = temperingAgoService.selectIntoGlass(layoutId.get(0));
+            jsonObject.append("intoGlass", intoGlass);
+            //杩涚倝涓殑绗簩涓増鍥�
+            if (layoutId.size() > 1) {
+                List<TemperingGlassInfo> intoGlass2 = temperingAgoService.selectIntoGlass(layoutId.get(1));
+                jsonObject.append("intoGlass2", intoGlass2);
+            }
         }
         //鍑虹倝鍚庣殑鐜荤拑
         List<TemperingGlassInfo> outGlass = temperingAgoService.selectOutGlass();
@@ -60,5 +62,23 @@
             }
         }
     }
+    @Scheduled(fixedDelay = 1000)
+    public void temperingIsRun(){
+        JSONObject jsonObject = new JSONObject();
+        //姝e湪杩涜鐨勪换鍔�
+        List<TemperingGlassInfo>temperingTaskType=temperingAgoService.selectTaskType();
+        jsonObject.append("temperingTaskType", temperingTaskType);
+        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("isRun");
+        if (sendwServer != null) {
+            for (WebSocketServer webserver : sendwServer) {
+                if (webserver != null) {
+                    webserver.sendMessage(jsonObject.toString());
+                } else {
+                    log.info("Home is closed");
+                }
+            }
+        }
+    }
+
 
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/TemperingTask.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/TemperingTask.java
index 6b27ad0..8646b79 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/TemperingTask.java
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/TemperingTask.java
@@ -1,25 +1,76 @@
 package com.mes.job;
 
-import com.mes.tempering_record.service.TemperingRecordService;
+import cn.smallbun.screw.core.util.CollectionUtils;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.mes.common.S7object;
+import com.mes.common.config.Const;
+import com.mes.device.PlcParameterObject;
+import com.mes.temperingglass.entity.TemperingGlassInfo;
+import com.mes.temperingglass.service.TemperingGlassInfoService;
+import com.mes.temperingrecord.entity.TemperingRecord;
+import com.mes.temperingrecord.service.TemperingRecordService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @Author : zhoush
  * @Date: 2024/7/17 12:47
  * @Description:
  */
+@Component
+@Slf4j
 public class TemperingTask {
 
     @Autowired
     private TemperingRecordService temporalRecordService;
 
+    @Autowired
+    private TemperingGlassInfoService temporaryGlassInfoService;
+    private static final String ALONE_STATE = "0";
+
 
     @Scheduled(fixedDelay = 1000)
     public void temperingGlassBefore() {
+        Date startDate = new Date();
+        log.info("鏈浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate);
+        PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
+        String state = plcParameterObject.getPlcParameter("state").getValue();
+//        褰撳墠杩炵嚎鐘舵�佷负
+        if (ALONE_STATE.equals(state)) {
+            log.info("褰撳墠閽㈠寲鐐夎繛绾挎ā寮忎负锛歿},涓嶆墽琛岃浠诲姟", state);
+            return;
+        }
+        //灏嗙‘璁ゅ瓧缃负0
+        S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("confirmationWord").getAddress(), 0);
+
         //todo:鑾峰彇閽㈠寲鐗堝浘涓姸鎬佷负2鐨勶紙杩涚倝瀹屾垚鐨勭幓鐠冧俊鎭級  涓斾笉瀛樺湪閽㈠寲璁板綍琛ㄥ唴鐨�
+        List<Object> temperRecordIdListObj = temporalRecordService.listObjs(new QueryWrapper<TemperingRecord>().select("distinct tempering_layout_id"));
 
+        List<String> temperRecordIdList = temperRecordIdListObj.stream().map(String::valueOf).collect(Collectors.toList());
+        List<TemperingGlassInfo> list = temporaryGlassInfoService.list(new LambdaQueryWrapper<TemperingGlassInfo>()
+                .eq(TemperingGlassInfo::getState, Const.TEMPERING_START).notIn(TemperingGlassInfo::getTemperingLayoutId, temperRecordIdList));
+        if (CollectionUtils.isEmpty(list)) {
+            log.info("褰撳墠绯荤粺娌℃湁闇�瑕侀挗鍖栫殑鐜荤拑淇℃伅");
+            return;
+        }
+        List<Integer> temperingLayoutIdList = list.stream().map(TemperingGlassInfo::getTemperingLayoutId).distinct().collect(Collectors.toList());
+        if (CollectionUtils.isNotEmpty(temperRecordIdList)) {
+            temperingLayoutIdList.removeAll(temperRecordIdList);
+        }
+        if (CollectionUtils.isEmpty(temperingLayoutIdList)) {
+            log.info("褰撳墠鐜荤拑鏈夋鍦ㄩ挗鍖栫殑浠诲姟");
+        }
+//        鑾峰彇閽㈠寲涓嬬墖琛ㄧ姸鎬佷负2鐨勭幓鐠冧俊鎭�
 
+        //瀹屾垚浠诲姟灏嗙‘璁ゅ瓧缃负1
+        S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("confirmationWord").getAddress(), 1);
     }
 
     @Scheduled(fixedDelay = 1000)
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/controller/TemperingGlassInfoController.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/controller/TemperingGlassInfoController.java
index 408199a..73cc34b 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/controller/TemperingGlassInfoController.java
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/controller/TemperingGlassInfoController.java
@@ -1,13 +1,13 @@
 package com.mes.temperingglass.controller;
+import com.mes.damage.entity.Damage;
+import com.mes.damage.service.DamageService;
 import com.mes.temperingglass.service.TemperingGlassInfoService;
 import com.mes.temperingglass.entity.TemperingGlassInfo;
 import com.mes.utils.Result;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
@@ -22,12 +22,14 @@
 public class TemperingGlassInfoController {
 
     @Autowired
-    private TemperingGlassInfoService temperingAgoService;
+    private TemperingGlassInfoService temperingGlassInfoService;
+    @Autowired
+    private DamageService damageService;
 
     @ApiOperation("鏌ヨ閽㈠寲绛夌墖涓殑鐗堝浘淇℃伅,鐘舵�佷负1鐨勪负宸插埌,鐘舵�佷负0鐨勪负绛夊緟涓�")
     @GetMapping("/selectWaitingGlass") // 鏌ヨ閽㈠寲绛夌墖涓殑鐗堝浘淇℃伅,鐘舵�佷负1鐨勪负宸插埌,鐘舵�佷负0鐨勪负绛夊緟涓�
     public Result <List<TemperingGlassInfo>> selectWaitingGlass() {
-        List<TemperingGlassInfo> glass = temperingAgoService.selectWaitingGlass();
+        List<TemperingGlassInfo> glass = temperingGlassInfoService.selectWaitingGlass();
         log.info("绛夊緟涓殑鐜荤拑淇℃伅{}",glass);
         return Result.build(200, "", glass);
     }
@@ -41,10 +43,24 @@
     @ApiOperation("//閽㈠寲鍚庢樉绀哄嚭鐐夌殑鐗堝浘淇℃伅銆�")
     @GetMapping("/selectOutGlass") //閽㈠寲鍚庢樉绀哄嚭鐐夌殑鐗堝浘淇℃伅
     public Result <List<TemperingGlassInfo>> selectOutGlass() {
-        List<TemperingGlassInfo> glass = temperingAgoService.selectOutGlass();
+        List<TemperingGlassInfo> glass = temperingGlassInfoService.selectOutGlass();
         log.info("閽㈠寲鍑虹倝鍚庣殑鐜荤拑淇℃伅{}",glass);
         return Result.build(200, "", glass);
     }
 
+    @ApiOperation("//閽㈠寲鐮存崯")
+    @PostMapping("/updateTemperingState") //閽㈠寲鍚庢樉绀哄嚭鐐夌殑鐗堝浘淇℃伅
+    public Result <Integer> updateTemperingState(@RequestBody  Damage damage) {
+        damageService.insertDamage(damage);
+        TemperingGlassInfo temperingGlassInfo=new TemperingGlassInfo();
+        if(damage.getStatus()==2){
+            temperingGlassInfo.setState(5);
+
+        }
+        temperingGlassInfo.setGlassId(damage.getGlassId());
+        int result=temperingGlassInfoService.updateTemperingState(temperingGlassInfo);
+        return Result.build(200, "鐮存崯鎴愬姛", result);
+    }
+
 
 }
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/tempering_record/controller/TemperingRecordController.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/controller/TemperingRecordController.java
similarity index 87%
rename from hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/tempering_record/controller/TemperingRecordController.java
rename to hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/controller/TemperingRecordController.java
index 774f5ae..ea8b73b 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/tempering_record/controller/TemperingRecordController.java
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/controller/TemperingRecordController.java
@@ -1,4 +1,4 @@
-package com.mes.tempering_record.controller;
+package com.mes.temperingrecord.controller;
 
 
 import org.springframework.web.bind.annotation.RequestMapping;
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/tempering_record/entity/TemperingRecord.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/entity/TemperingRecord.java
similarity index 91%
rename from hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/tempering_record/entity/TemperingRecord.java
rename to hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/entity/TemperingRecord.java
index b11715c..0049269 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/tempering_record/entity/TemperingRecord.java
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/entity/TemperingRecord.java
@@ -1,4 +1,4 @@
-package com.mes.tempering_record.entity;
+package com.mes.temperingrecord.entity;
 
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -20,6 +20,10 @@
     private static final long serialVersionUID = 1L;
 
     /**
+     * 宸ョ▼id
+     */
+    private String engineerId;
+    /**
      * 閽㈠寲鐗堝浘
      */
     private Integer temperingLayoutId;
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/tempering_record/mapper/TemperingRecordMapper.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/mapper/TemperingRecordMapper.java
similarity index 69%
rename from hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/tempering_record/mapper/TemperingRecordMapper.java
rename to hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/mapper/TemperingRecordMapper.java
index c163cb3..d12a20a 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/tempering_record/mapper/TemperingRecordMapper.java
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/mapper/TemperingRecordMapper.java
@@ -1,7 +1,7 @@
-package com.mes.tempering_record.mapper;
+package com.mes.temperingrecord.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.mes.tempering_record.entity.TemperingRecord;
+import com.mes.temperingrecord.entity.TemperingRecord;
 
 /**
  * <p>
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/tempering_record/mapper/xml/TemperingRecordMapper.xml b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/mapper/xml/TemperingRecordMapper.xml
similarity index 100%
rename from hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/tempering_record/mapper/xml/TemperingRecordMapper.xml
rename to hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/mapper/xml/TemperingRecordMapper.xml
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/tempering_record/service/TemperingRecordService.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/service/TemperingRecordService.java
similarity index 69%
rename from hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/tempering_record/service/TemperingRecordService.java
rename to hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/service/TemperingRecordService.java
index 49137c5..daeb9a4 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/tempering_record/service/TemperingRecordService.java
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/service/TemperingRecordService.java
@@ -1,7 +1,7 @@
-package com.mes.tempering_record.service;
+package com.mes.temperingrecord.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.mes.tempering_record.entity.TemperingRecord;
+import com.mes.temperingrecord.entity.TemperingRecord;
 
 /**
  * <p>
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/tempering_record/service/impl/TemperingRecordServiceImpl.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/service/impl/TemperingRecordServiceImpl.java
similarity index 60%
rename from hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/tempering_record/service/impl/TemperingRecordServiceImpl.java
rename to hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/service/impl/TemperingRecordServiceImpl.java
index 1596f57..ea39a21 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/tempering_record/service/impl/TemperingRecordServiceImpl.java
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/service/impl/TemperingRecordServiceImpl.java
@@ -1,9 +1,9 @@
-package com.mes.tempering_record.service.impl;
+package com.mes.temperingrecord.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.mes.tempering_record.entity.TemperingRecord;
-import com.mes.tempering_record.mapper.TemperingRecordMapper;
-import com.mes.tempering_record.service.TemperingRecordService;
+import com.mes.temperingrecord.entity.TemperingRecord;
+import com.mes.temperingrecord.mapper.TemperingRecordMapper;
+import com.mes.temperingrecord.service.TemperingRecordService;
 import org.springframework.stereotype.Service;
 
 /**
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-cz.yml b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-cz.yml
index 34f72c9..2a02763 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-cz.yml
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-cz.yml
@@ -10,7 +10,7 @@
           password: beibo.123/
           driver-class-name: com.mysql.cj.jdbc.Driver
         salve_hangzhoumes:
-          url: jdbc:sqlserver://192.168.20.24:1433;databasename=hangzhoumes
+          url: jdbc:sqlserver://192.168.10.2:1433;databasename=hangzhoumes
           username: sa
           password: beibo.123/
           driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/json/PlcTemperingGlass.json b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/json/PlcTemperingGlass.json
new file mode 100644
index 0000000..3abe9a6
--- /dev/null
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/json/PlcTemperingGlass.json
@@ -0,0 +1,132 @@
+{
+    "plcAddressBegin": "DB88.0",
+    "plcAddressLenght": "58",
+    "dataType": "word",
+    "parameteInfor": [
+        {
+            "codeId": "confirmationWord",
+            "addressIndex": "0",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "temperingLayoutId",
+            "addressIndex": "2",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "filmsid",
+            "addressIndex": "4",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "temperingType",
+            "addressIndex": "6",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "thickness",
+            "addressIndex": "8",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "loadingRate",
+            "addressIndex": "10",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "areaDifference",
+            "addressIndex": "12",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "state",
+            "addressIndex": "22",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "deviceState",
+            "addressIndex": "24",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "resultState",
+            "addressIndex": "26",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "loadSpeed",
+            "addressIndex": "28",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "downSpeed",
+            "addressIndex": "30",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "load1",
+            "addressIndex": "32",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "heat1",
+            "addressIndex": "34",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "heat2",
+            "addressIndex": "36",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "cool1",
+            "addressIndex": "38",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "cool2",
+            "addressIndex": "40",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "downId",
+            "addressIndex": "42",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "productionTime",
+            "addressIndex": "44",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "heatEnergy",
+            "addressIndex": "46",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "coolEnergy",
+            "addressIndex": "48",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "temperatureUp1",
+            "addressIndex": "50",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "temperatureDown1",
+            "addressIndex": "52",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "temperatureUp2",
+            "addressIndex": "54",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "temperatureDown2",
+            "addressIndex": "56",
+            "addressLenght": "2"
+        }
+    ]
+}
\ No newline at end of file
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 63f6a49..13d4b6e 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
@@ -77,7 +77,7 @@
     private Integer minHeight;
 
 
-    @Scheduled(fixedDelay = 3000)
+    @Scheduled(fixedDelay = 300)
     public void plcHomeEdgTask() {
         PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
         String requestWord = plcParameterObject.getPlcParameter("requestWord").getValue();
@@ -90,7 +90,6 @@
         String confirmationWrodValue = plcParameterObject.getPlcParameter("confirmationWord").getValue();
         String confirmationWrodAddress = plcParameterObject.getPlcParameter("confirmationWord").getAddress();
         String currentSlot = plcParameterObject.getPlcParameter("currentCell").getValue();
-
 
 
         log.info("1銆佽幏鍙栧埌鐨勮姹傚瓧涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{}锛岃幏鍙栧埌鐨勭‘璁ゅ瓧涓猴細{}锛岃幏鍙栧埌鐨勫嚭鐗囩姸鎬佸垎鍒负锛歡06:{}銆乬08:{}銆乬11:{}銆乬13:{},褰撳墠鏍煎瓙鍙蜂负锛歿}",
@@ -162,7 +161,7 @@
                 if (CollectionUtils.isNotEmpty(list)) {
                     log.info("鏈夌┖鏋跺瓙,灏嗘祦绋嬪崱涓庢灦瀛愬ソ缁戝畾锛屾墽琛岃繘鐗囦换鍔� 缁撴潫");
                     //缁戝畾娴佺▼鍗�
-                    downWorkstationService.updateFlowCardIdAndCount(glassInfo.getFlowCardId(), glassInfo.getLayer(), list.get(0).getWorkstationId());
+                    downWorkstationService.updateFlowCardIdAndCount(glassInfo.getFlowCardId(), list.get(0).getWorkstationId(), glassInfo.getLayer());
                     checkFlag = Boolean.TRUE;
                 }
             }
@@ -242,9 +241,14 @@
             return Boolean.FALSE;
         }
         Boolean flag08 = "1".equals(out08Glassstate) ? Boolean.TRUE : Boolean.FALSE;
-        if (!generateTaskByShelf(glassStatus06, glassStatus11, flag08, glassStatus13, tempList, cageDetails, glassId)) {
-            return generateTaskByShelf(glassStatus06, glassStatus11, !flag08, glassStatus13, tempList, cageDetails, glassId);
+        if (!flag08) {
+            generateTaskByShelf(glassStatus06, glassStatus11, flag08, glassStatus13, tempList, cageDetails, glassId);
+        } else {
+            if (!generateTaskByShelf(glassStatus06, glassStatus11, flag08, glassStatus13, tempList, cageDetails, glassId)) {
+                return generateTaskByShelf(glassStatus06, glassStatus11, !flag08, glassStatus13, tempList, cageDetails, glassId);
+            }
         }
+
         return Boolean.TRUE;
     }
 
@@ -313,18 +317,33 @@
                     list = tempList.stream().filter(item -> item.getWidth() > maxWidth || item.getHeight() > maxHeight).collect(Collectors.toList());
                 }
             } else {
+                //鑾峰彇鍙惤鏋剁殑鐨勬灦瀛愪俊鎭紙鍖呮嫭绌烘灦瀛愶級
                 List<DownWorkstation> workstationsIsNotBind = downWorkstationList.stream().filter(item -> null == (item.getFlowCardId())).collect(Collectors.toList());
-                Map<String, List<DownWorkstation>> listMap = downWorkstationList.stream().collect(Collectors.groupingBy(item -> item.getFlowCardId() + ":" + item.getLayer()));
+                //灏嗘灦瀛愮殑娴佺▼鍗″彿鍙婂眰鏁颁綔涓簁ey
                 if (CollectionUtils.isEmpty(workstationsIsNotBind)) {
                     log.info("涓嶅瓨鍦ㄦ湭缁戝畾娴佺▼鍗℃灦瀛�");
                     //绛涢�夊嚭瀵瑰簲鏋跺瓙宸茬粦瀹氭祦绋嬪崱鍙笅鐗囩殑鐜荤拑
+                    Map<String, List<DownWorkstation>> listMap = downWorkstationList.stream()
+                            .filter(item -> null != (item.getFlowCardId())).collect(Collectors.groupingBy(item -> item.getFlowCardId() + ":" + item.getLayer()));
                     list = tempList.stream().filter(item -> listMap.containsKey(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList());
                 } else {
-                    log.info("瀛樺湪鏈粦瀹氭祦绋嬪崱鏋跺瓙锛岀洿鎺ヨ幏鍙栫鍐呮墍鏈夌幓鐠�");
+                    log.info("瀛樺湪鏈粦瀹氭祦绋嬪崱鏋跺瓙锛岀洿鎺ヨ幏鍙栫鍐呮墍鏈夌幓鐠�,涓旀湭缁戝畾鏋跺瓙鐨勭幓鐠冧俊鎭�");
+                    //鑾峰彇绂佺敤鏋跺瓙鐨勬祦绋嬪彿锛屽皢绗煎唴缁戝畾鏋跺瓙涓旀灦瀛愯绂佺敤鐨勬祦绋嬪崱淇℃伅
+                    List<Integer> workStationAll = Arrays.asList(1, 2, 3, 4, 5, 6);
+                    List<Integer> offWorkStationList = workStationAll.stream().filter(e -> !workList.contains(e)).collect(Collectors.toList());
+                    List<DownWorkstation> downWorkstationOffList = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>()
+                            .and(i -> i.in(DownWorkstation::getWorkstationId, offWorkStationList).or().eq(DownWorkstation::getEnableState, Const.SLOT_OFF)));
+                    //鑾峰彇琚鐢ㄧ殑娴佺▼鍗′俊鎭�
+                    if (CollectionUtils.isEmpty(downWorkstationOffList)) {
+                        list = tempList;
+                    } else {
+                        Map<String, List<DownWorkstation>> listOffMap = downWorkstationOffList.stream().filter(item -> null != (item.getFlowCardId())).collect(Collectors.groupingBy(item -> item.getFlowCardId() + ":" + item.getLayer()));
+                        list = tempList.stream().filter(item -> !listOffMap.containsKey(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList());
+                    }
                     isEmptyShelf = Boolean.TRUE;
                     //todo:濡傛灉绂佺敤鏋跺瓙宸茬粦瀹氭祦绋嬪崱锛屽洜涓烘椂闂翠笉纭畾锛岀瀛愬唴鐨勭幓鐠冨彲閲嶆柊缁戝畾鏂版灦瀛�
 //                    list = tempList.stream().filter(item -> !listMap.containsKey(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList());
-                    list = tempList;
+
                 }
             }
         } else {
@@ -361,7 +380,8 @@
                 break loop;
             }
             //灏嗙瀛愬唴鐨勭幓鐠冭繘琛岃繃婊わ紝浠呰幏鍙栨棤娉曡惤鏋剁殑娴佺▼鍗$幓鐠�
-            List<DownStorageCageDetails> noDownLoadList = list.stream().filter(item -> !downGlassFlowList.contains(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList());
+            List<DownStorageCageDetails> noDownLoadList = list.stream().filter(item -> !downGlassFlowList.contains(item.getFlowCardId() + ":" + item.getLayer()))
+                    .collect(Collectors.toList());
             if (CollectionUtils.isNotEmpty(noDownLoadList)) {
                 //鏄惁鏈夌┖鏋跺瓙
 //                List<DownWorkstation> emptyShelfList = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>()
@@ -452,14 +472,18 @@
         }
 
         Integer endCell = null;
-        if (!isBind) {
+        if (isBind) {
             //鑾峰彇绌烘灦瀛愪俊鎭紝灏嗙┖鏋跺瓙淇℃伅缁戝畾娴佺▼鍗�
             DownWorkstation emptyDownWorkstation = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>()
                     .isNull(DownWorkstation::getFlowCardId).orderByDesc(DownWorkstation::getWorkstationId).last("limit 1"));
             if (null != emptyDownWorkstation) {
                 log.info("鑾峰彇鍒扮┖鏋跺瓙淇℃伅锛岀粦瀹氭祦绋嬪崱");
-                downWorkstationService.updateFlowCardIdAndCount(downStorageCageDetails.getFlowCardId(), downStorageCageDetails.getLayer(), emptyDownWorkstation.getWorkstationId());
+                downWorkstationService.updateFlowCardIdAndCount(downStorageCageDetails.getFlowCardId(), emptyDownWorkstation.getWorkstationId(), downStorageCageDetails.getLayer());
                 endCell = emptyDownWorkstation.getWorkstationId();
+                //灏嗕笅鐗囩幓鐠冨瓨鍏ョ瀛愯鎯呬俊鎭〃涓�
+                //灏嗕换鍔℃彃鍏ョ悊鐗囩璇︽儏琛�
+                downStorageCageDetails.setState(Const.GLASS_STATE_OUT);
+                downStorageCageDetailsService.save(downStorageCageDetails);
             } else {
                 log.info("娌℃湁绌烘灦瀛愪俊鎭紝鏃犳硶缁戝畾娴佺▼鍗�");
                 return Boolean.FALSE;
@@ -468,14 +492,15 @@
             DownWorkstation workstation = downWorkstationService.getOne(new LambdaUpdateWrapper<DownWorkstation>()
                     .eq(DownWorkstation::getFlowCardId, downStorageCageDetails.getFlowCardId()).eq(DownWorkstation::getLayer, downStorageCageDetails.getLayer()));
             endCell = workstation.getWorkstationId();
-        }
-        //鏇存柊璇︽儏琛ㄥ唴鐨勭姸鎬�
-        if (downStorageCageDetailsService.update(new LambdaUpdateWrapper<DownStorageCageDetails>()
-                .set(DownStorageCageDetails::getState, Const.GLASS_STATE_OUT).eq(DownStorageCageDetails::getGlassId, glassId))) {
-            log.info("鏇存柊璇︽儏琛ㄥ唴鐨勭姸鎬佹垚鍔�");
-        } else {
-            log.info("鏇存柊璇︽儏琛ㄥ唴鐨勭姸鎬佸け璐�");
-            return Boolean.FALSE;
+
+            if (downStorageCageDetailsService.update(new LambdaUpdateWrapper<DownStorageCageDetails>()
+                    .set(DownStorageCageDetails::getState, Const.GLASS_STATE_OUT).eq(DownStorageCageDetails::getGlassId, glassId))) {
+                log.info("鏇存柊璇︽儏琛ㄥ唴鐨勭姸鎬佹垚鍔�");
+//                return Boolean.TRUE;
+            } else {
+                log.info("鏇存柊璇︽儏琛ㄥ唴鐨勭姸鎬佸け璐�");
+                return Boolean.FALSE;
+            }
         }
         //鏇存柊钀芥灦鐜荤拑鏁伴噺
         if (endCell == 7) {

--
Gitblit v1.8.0