From dd60bcc7b38c2a19c02a20550a393987fc5a5a27 Mon Sep 17 00:00:00 2001
From: wu <731351411@qq.com>
Date: 星期三, 07 八月 2024 16:26:04 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 UI-Project/src/layout/MainErpView.vue                                                                                                        |    2 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/request/DownGlassInfoRequest.java               |   48 +++
 UI-Project/src/views/Identify/identify.vue                                                                                                   |  216 ++++++-------
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java                                      |   18 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassInfo.java                              |    6 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassInfoController.java                |   13 
 UI-Project/src/views/LoginView.vue                                                                                                           |    4 
 UI-Project/src/views/UnLoadGlass/loadmachinerack.vue                                                                                         |   34 ++
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml                                          |   20 +
 UI-Project/src/views/Caching/cachingun.vue                                                                                                   |    5 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java         |    9 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassInfoService.java                      |   25 +
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/EdgGlassTaskInfoService.java                     |    6 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java                                   |   12 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java             |   59 +++
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml                                                          |    6 
 UI-Project/src/views/largescreen/largescreen.vue                                                                                             |   59 +++
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java                        |   10 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java                  |    2 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownStorageCageDetailsMapper.xml                                 |    3 
 UI-Project/config.js                                                                                                                         |    3 
 UI-Project/src/views/StockBasicData/stockBasicData.vue                                                                                       |   38 +-
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java                                               |   36 +
 UI-Project/src/views/StockBasicData/stockBasicDatatwo.vue                                                                                    |   38 +-
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/impl/EdgGlassTaskInfoServiceImpl.java            |   15 
 UI-Project/src/lang/zh.js                                                                                                                    |    3 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java |    4 
 UI-Project/src/utils/constants.js                                                                                                            |    1 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java                                                    |   31 +
 UI-Project/src/views/Slicecage/slicecage.vue                                                                                                 |   30 +
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java                      |   88 +++--
 JsonFile/PlcdownGlass.json                                                                                                                   |    7 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java            |    7 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java               |    9 
 UI-Project/src/utils/WebSocketService.js                                                                                                     |   13 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java                                                          |   33 +-
 36 files changed, 651 insertions(+), 262 deletions(-)

diff --git a/JsonFile/PlcdownGlass.json b/JsonFile/PlcdownGlass.json
index 98366a9..a5698c2 100644
--- a/JsonFile/PlcdownGlass.json
+++ b/JsonFile/PlcdownGlass.json
@@ -1,6 +1,6 @@
 {
 	"plcAddressBegin": "DB11.0",
-	"plcAddressLenght": "92",
+	"plcAddressLenght": "94",
 	"dataType": "word",
 	"parameteInfor": [
 
@@ -138,6 +138,11 @@
 			"codeId": "task_type",
 			"addressIndex": "90",
 			"addressLenght": "2"
+		},
+		{
+			"codeId": "alarm_signal",
+			"addressIndex": "92",
+			"addressLenght": "2"
 		}
 
 	]
diff --git a/UI-Project/config.js b/UI-Project/config.js
index b15a1a5..9a4f798 100644
--- a/UI-Project/config.js
+++ b/UI-Project/config.js
@@ -1,7 +1,10 @@
 export default {
  serverUrl: "10.153.19.150:88/api",
 //  serverUrl: "192.168.1.199:88/api",
+//  serverUrl: "127.0.0.1:88/api",
   serverUrl2: "10.153.19.150:88"
   // serverUrl2: "192.168.1.199:88"
+    // serverUrl2: "127.0.0.1:88"
+
   //serverUrl:"res.abeim.cn"
 }
\ No newline at end of file
diff --git a/UI-Project/src/lang/zh.js b/UI-Project/src/lang/zh.js
index d2c352b..ef28802 100644
--- a/UI-Project/src/lang/zh.js
+++ b/UI-Project/src/lang/zh.js
@@ -220,6 +220,8 @@
         basic:'璁惧',
         add:'纭淇濆瓨',
         cancel:'鍙栨秷',
+        temperingtotal:'閽㈠寲鐐夋暟锛�',
+        glasstotal:'鐜荤拑鎬绘暟锛�',
     },
     workOrder:{
         glassID:'鐜荤拑ID',
@@ -237,6 +239,7 @@
         takemessage:'鏄惁鎷胯蛋璇ユ潯淇℃伅锛�',
         breakage:'鐮存崯',
         takeout:'鎷胯蛋',
+        glasstype:'鐜荤拑绫诲瀷',
     },
     processCard:{
         intofurnace:'杩涚倝涓�',
diff --git a/UI-Project/src/layout/MainErpView.vue b/UI-Project/src/layout/MainErpView.vue
index 88c07a1..5f91bf3 100644
--- a/UI-Project/src/layout/MainErpView.vue
+++ b/UI-Project/src/layout/MainErpView.vue
@@ -14,7 +14,7 @@
 // const { $i18n } = useI18n(); // 鑾峰彇 i18n 瀹炰緥  
 const router = useRouter()
 const userStore = useUserInfoStore()
-const user = userStore.user.userName
+// const user = userStore.user.userName
 
 let userInfoStr = window.localStorage.getItem('userInfo')
 console.log(userInfoStr);
diff --git a/UI-Project/src/utils/WebSocketService.js b/UI-Project/src/utils/WebSocketService.js
index 0c2d76f..695f679 100644
--- a/UI-Project/src/utils/WebSocketService.js
+++ b/UI-Project/src/utils/WebSocketService.js
@@ -1,4 +1,5 @@
 // WebSocketService.js
+
 let socket = null;
 export const initializeWebSocket = (socketUrl, messageHandler) => {
   let messages='' ;
@@ -6,10 +7,13 @@
       console.log("Your browser does not support WebSocket");
       return null;
     }
+  
     const socket = new WebSocket(socketUrl);
+  
     socket.onopen = function () {
       console.log("WebSocket is now open");
     };
+  
     socket.onmessage = (msg) => {
       if (!msg.data) {
         return;
@@ -21,14 +25,23 @@
         messages= messages.replace('<END>', '');
         const obj = JSON.parse(messages);
         messages='';
+        
       // 璋冪敤娑堟伅澶勭悊鍑芥暟锛屽皢鏁版嵁浼犻�掔粰 Vue 缁勪欢
       if (messageHandler) {
         messageHandler(obj);
       }
       }
+      
+      
+
+  
+      
     };
+  
     return socket;
   };
+  
+
   export const closeWebSocket = (socket) => {
     if (socket && socket.readyState === WebSocket.OPEN) {
         socket.close();
diff --git a/UI-Project/src/utils/constants.js b/UI-Project/src/utils/constants.js
index 67d36d2..cb4c850 100644
--- a/UI-Project/src/utils/constants.js
+++ b/UI-Project/src/utils/constants.js
@@ -1,3 +1,4 @@
 // export const WebSocketHost = "192.168.1.199";
 export const WebSocketHost = "10.153.19.150";
+// export const WebSocketHost = "127.0.0.1";
 export const host = "88";
\ No newline at end of file
diff --git a/UI-Project/src/views/Caching/cachingun.vue b/UI-Project/src/views/Caching/cachingun.vue
index 7b55968..737c1de 100644
--- a/UI-Project/src/views/Caching/cachingun.vue
+++ b/UI-Project/src/views/Caching/cachingun.vue
@@ -210,11 +210,10 @@
 // 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
 const handleMessage = (data) => {
   // 鏇存柊 tableData 鐨勬暟鎹�
-  tableData.value = data.params2[0]
-  // tableData.splice(0, tableData.length, ...data.params2[0]);
+  tableData.splice(0, tableData.length, ...data.params[0]);
   // tableData.value = data.params[0]
   // adjustedRects.value = data.EdgStorageCageinfos[0]
-  adjustedRects.value = data.params2[0].map(rect => ({  
+  adjustedRects.value = data.params[0].map(rect => ({  
             ...rect, // 澶嶅埗鍘熷瀵硅薄鐨勫叾浠栧睘鎬�  
             width: rect.width * 0.5 ,
             id: rect.id * 10,
diff --git a/UI-Project/src/views/Identify/identify.vue b/UI-Project/src/views/Identify/identify.vue
index 59982e5..bcb4693 100644
--- a/UI-Project/src/views/Identify/identify.vue
+++ b/UI-Project/src/views/Identify/identify.vue
@@ -2,23 +2,18 @@
   <div style="display: flex;">
 <el-input v-model="inputValue" style="margin-left: 15px;margin-top: 10px;width: 240px" placeholder="璇疯緭鍏ュ伐绋嬪彿" @blur="handleBlur"/>
 <el-pagination
-      v-model:current-page="currentPage3"
-      v-model:page-size="pageSize3"
+      v-model:current-page="currentPage"
+      :page-size="pageSize"
       :size="size"
       :disabled="disabled"
-      :background="background"
       layout="prev, pager, next, jumper"
-      :total="1000"
-      @size-change="handleSizeChange"
+      :total="totalPages"
       @current-change="handleCurrentChange"
     />
     </div>
-    <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;" v-loading="loading">
-      <el-scrollbar height="550px" >
-  <div id="app" style="margin-top: 20px;">  
-    <!-- <div  
-      :style="{ width: `${olWidth}px`, height: `${olHeight}px`,position: 'relative',}"
-    >  -->
+    <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;height: 600px;" v-loading="loading">
+      <el-scrollbar height="550px" width="1200px" style="background-color: #e9e9eb;">
+  <div style="position: relative;">  
     <div  
       v-for="(rect, index) in adjustedRects"  
       :key="rect.glass_id"  
@@ -32,13 +27,13 @@
      <!-- 绠ご -->  
      <!-- <div id="arrow"></div>  
      <div id="line"></div>   -->
-     <!-- <div  class="centered-text" >NG24030401B01</div> -->
      <div  class="centered-text">
-    <div>{{ rect.process_id }}</div>
-    <div style="margin-top: 50px;margin-left: -85px;">{{ rect.widtha }}*{{ rect.heighta }}</div>  
+    <div>{{ rect.glass_id }}</div>
+    <div>{{ rect.widtha }}*{{ rect.heighta }}</div>  
   </div>
   </div> 
-  <!-- 鐐瑰嚮寮瑰嚭 -->
+   </div>
+  </el-scrollbar>
   <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') }}
@@ -47,15 +42,12 @@
           <el-icon class="el-icon--right"><Upload /></el-icon>
           {{ $t('order.Takeaway') }}</el-button>
   </el-dialog> 
-   </div>
-  <!-- </div>   -->
-  </el-scrollbar>
   </el-card>
 </template>  
 <script setup lang="ts">  
 import { Delete, Upload } from '@element-plus/icons-vue'
 import { ElMessage, ElMessageBox } from 'element-plus'
-import { ref, onMounted, onBeforeUnmount,onUnmounted,watchEffect } from 'vue';  
+import { ref, onMounted, onBeforeUnmount,onUnmounted, computed  } from 'vue';  
 import request from "@/utils/request"
 import { WebSocketHost ,host} from '@/utils/constants'
 import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService';
@@ -65,11 +57,18 @@
 const blind = ref(false)
 const olWidth = ref(); 
 const olHeight = ref();
-const process_id = ref(); // 鐢ㄤ簬瀛樺偍process_id鐨勫搷搴斿紡寮曠敤 
 const glass_id = ref();
 const inputValue = ref('');
 const currentGlassId = ref(null); // 瀛樺偍褰撳墠鐐瑰嚮鐭╁舰鐨� glass_id  
 const adjustedRects = ref([]);
+const raw = ref([]);
+let webSocket: WebSocket | null = null;  
+const totalPages = ref(0);
+const pageSize = ref(1);
+const currentPage = ref(1);
+const disabled = false;
+const size = 'small';
+const rawData = ref([]); 
 // const handleBind = (row) => {
 //   blind.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
 // };
@@ -78,42 +77,6 @@
   currentGlassId.value = glassId;  
   blind.value = true;  
 }  
-// onMounted(async () => {  
-//   try {  
-//     const response = await request.post('/cacheGlass/taskCache/currentCutTerritory'); // 鏇挎崲涓轰綘鐨凙PI绔偣  
-//     if (response.code === 200) {  
-//       // const process_id = response.data[0].process_id
-//       const rawRects = response.data; // 璁剧疆鐭╁舰鏁版嵁  
-//       console.log(response.data);
-//       const { olWidth: newolWidth, olHeight: newolHeight, process_id: newprocess_id ,glass_id:newglass_id } = response.data; // 鑾峰彇灏哄  
-//       olWidth.value = newolWidth; // 璁剧疆瀹瑰櫒瀹藉害  
-//       olHeight.value = newolHeight; // 璁剧疆瀹瑰櫒楂樺害  
-//       process_id.value = newprocess_id;  
-//       glass_id.value = newglass_id;
-
-//       adjustedRects.value = rawRects.map(rect => ({  
-//         ...rect, // 澶嶅埗鍘熷瀵硅薄鐨勫叾浠栧睘鎬�  
-//         x_axis: (rect.x_axis*100) * 0.003, // 灏唜鍊奸櫎浠�3  
-//         y_axis: (rect.y_axis*100) * 0.003,
-//         width: (rect.width*100) * 0.002 ,
-//         widtha: rect.width ,
-//         heighta: rect.height ,
-//         height:( rect.height*100) * 0.002 ,
-//         glass_state: rect.glass_state
-//       }));  
-//       console.log(adjustedRects.value);
-      
-
-//       //   console.log( (rect.width*100) / 300 );
-//     } else {  
-//       // console.error('Failed to fetch rectangles from API.');  
-//       console.error('Failed to fetch rects from API.'); 
-//     }  
-//   } catch (error) {  
-//     // console.error('Error fetching rectangles :', error);
-//     console.error('Error fetching rects :', error);  
-//   }  
-// }); 
 // 鐮存崯
 const handleDamage = async () => {
   try  {
@@ -170,41 +133,51 @@
   }
 }
 const handleBlur = async () => {  
-  if (inputValue.value !== '') {  
-    try {  
-      var url="/cacheGlass/taskCache/cutTerritory?current="+inputValue.value;
-      const response = await request.post(url)
-      if (response.data && response.data.currentCutTerritory) {  
-        // 鍋囪杩斿洖鐨勬暟鎹渶瑕佽皟鏁村潗鏍囧拰灏哄  
-        adjustedRects.value = response.data.currentCutTerritory.map(rect => ({  
-          ...rect,  
-          x_axis: 1360 - (rect.x_axis + rect.width) * 0.37,  
-          y_axis: (rect.y_axis * 100) * 0.003,  
-          width: (rect.width * 100) * 0.002,  
-          height: (rect.height * 100) * 0.002,  
-          widtha: rect.width ,
-          heighta: rect.height ,
-          glass_state: rect.glass_state  
-        }));
+  if (inputValue.value) {  
+    var url="/cacheGlass/taskCache/cutTerritory?current="+inputValue.value;
+    const response = await request.post(url)
+    if (response.code === 200) {
+      console.log(response.data);
+      
+      const rawRects = response.data[0];
+      rawData.value = response.data;
+      totalPages.value = rawData.value.length;
+      adjustedRects.value = rawRects.map(rect => ({  
+        ...rect,
+        x_axis: (6000 -(rect.x_axis + rect.width)) * 0.2085,
+        y_axis: rect.y_axis * 0.17,
+        width: rect.width * 0.2 ,
+        widtha: rect.width ,
+        heighta: rect.height ,
+        height: rect.height * 0.165 ,
+        glass_state: rect.glass_state
+      }));  
+      // 濡傛灉WebSocket宸茶繛鎺ワ紝鍒欏叧闂�  
+      if (webSocket) {  
+        webSocket.close();  
+        webSocket = null;
       }  
-    } catch (error) {  
-      console.error('璇锋眰鏁版嵁澶辫触:', error);  
+       currentPage.value = 1;  
     }  
-  }  
-};  
-// const handleBlur = async () => {  
-//   if (inputValue.value !=''){
-//     try {  
-//       var url="/cacheGlass/taskCache/cutTerritory?current="+inputValue.value;
-//       const response = await request.post(url)
-//       console.log(response.data.length);  
-//     if (response.code == 200) {
-//       adjustedRects.value = response.data
-//       ElMessage.success(response.message);
-//     } else {
-//       ElMessage.error(response.msg);
-//     }
-// }
+  } else{
+    connectWebSocket();
+  } 
+}; 
+const handleCurrentChange = (val: number) => {  
+  currentPage.value = val;
+  const page = currentPage.value - 1
+      adjustedRects.value = rawData.value[page]?.map(rect => ({  
+      // adjustedRects.value = rawRects.map(rect => ({  
+        ...rect,
+        x_axis: (6000 -(rect.x_axis + rect.width)) * 0.2085,
+        y_axis: rect.y_axis * 0.17,
+        width: rect.width * 0.2 ,
+        widtha: rect.width ,
+        heighta: rect.height ,
+        height: rect.height * 0.165 ,
+        glass_state: rect.glass_state
+      }));  
+};
 function getRectColor(state: number): string {  
   switch (state) {  
     case 0:  
@@ -231,38 +204,44 @@
     }  
   });  
 }
-let socket = null;
+const connectWebSocket = () => {  
+  if (!webSocket) {  
 const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/cacheGlass`;
-const handleMessage = (data) => {
-  // adjustedRects.value = data.currentCutTerritory[0]
-  adjustedRects.value = data.currentCutTerritory[0].map(rect => ({  
+    webSocket = new WebSocket(socketUrl);  
+    webSocket.onmessage = (event) => {  
+      const data = JSON.parse(event.data);   
+        adjustedRects.value = data.currentCutTerritory[0].map(rect => ({  
         ...rect,
-        x_axis: 1360 -(rect.x_axis + rect.width) * 0.37,
-        // x_axis: (rect.x_axis*100) * 0.003,
-        y_axis: (rect.y_axis*100) * 0.003,
-        width: (rect.width*100) * 0.002 ,
+        x_axis: (6000 -(rect.x_axis + rect.width)) * 0.2085,
+        y_axis: rect.y_axis * 0.17,
+        width: rect.width * 0.2 ,
         widtha: rect.width ,
         heighta: rect.height ,
-        height:( rect.height*100) * 0.002 ,
+        height: rect.height * 0.165 ,
         glass_state: rect.glass_state
-      }));  
-};
-onMounted(() => {
-  socket = initializeWebSocket(socketUrl, handleMessage);
-});
-  onUnmounted(() => {
-    if (socket) {
-    closeWebSocket(socket);
-    }
-    });
-  watchEffect(() => {  
-  if (inputValue.value === '') {  
-    handleMessage();  
+      }));
+    };  
+    webSocket.onerror = (error) => {  
+      console.error('WebSocket Error:', error);  
+    };
+    webSocket.onclose = () => {  
+      console.log('WebSocket Connection Closed');  
+      // 鍙互閫夋嫨閲嶆柊杩炴帴  
+    };  
   }  
-}); 
-onBeforeUnmount(() => {
-  console.log("鍏抽棴浜�")
-  closeWebSocket();
+};  
+  
+onMounted(() => {  
+  // 鍒濆鏃讹紝濡傛灉杈撳叆妗嗕负绌猴紝鍒欒繛鎺ebSocket  
+  if (!inputValue.value) {  
+    connectWebSocket();  
+  }  
+});  
+  
+onUnmounted(() => {  
+  if (webSocket) {  
+    webSocket.close();  
+  }  
 });
 </script>  
   
@@ -273,11 +252,12 @@
 } 
 .centered-text {
   /* 璁剧疆鏂囧瓧灞呬腑鏍峰紡 */  
-  display: flex;  
+  /* display: flex; */
   justify-content: center;  
-  align-items: center;  
+  align-items: center; 
   height: 100%; /* 纭繚div鍗犳嵁鏁翠釜鐭╁舰鐨勯珮搴� */  
-} 
+  font-size: small;
+}
 #rect {  
   position: relative; /* 纭繚绠ご鍙互鐩稿浜庣煩褰㈠畾浣� */  
   /* 鍏朵粬鏍峰紡 */  
diff --git a/UI-Project/src/views/LoginView.vue b/UI-Project/src/views/LoginView.vue
index 7f7bb7d..6431f47 100644
--- a/UI-Project/src/views/LoginView.vue
+++ b/UI-Project/src/views/LoginView.vue
@@ -61,12 +61,10 @@
           .then((res) => {
             if (res['code'] == 200) {
               store.$patch({user: res.data})
-              console.log(res.data)
- 
               router.push('/main')
               ElMessage.success(t('login.loginSuccessful'))
             } else {
-              ElMessage.error(res['msg'])
+              // ElMessage.error(res['msg'])
               store.$patch({
               user: null,
               })
diff --git a/UI-Project/src/views/Slicecage/slicecage.vue b/UI-Project/src/views/Slicecage/slicecage.vue
index 9837905..e15909d 100644
--- a/UI-Project/src/views/Slicecage/slicecage.vue
+++ b/UI-Project/src/views/Slicecage/slicecage.vue
@@ -40,7 +40,6 @@
 const adjustedRectsh = ref([]);
 const currentRow = reactive({}); // 褰撳墠琛岀殑鏁版嵁 
 const inputValuesa = reactive({});
-
 const add = ref(false)
 const flowCardId = ref('');
 const gap = ref('');
@@ -76,7 +75,8 @@
 const cell8=ref(true);
 const cell9=ref(true);
 const selectedRow = ref(null); // 瀛樺偍閫変腑鐨勮鏁版嵁  
-
+const temperingtotal = ref(0);
+const glasstotal = ref(0);
     // 褰撳墠椤电爜鍜屾瘡椤垫樉绀虹殑鏉℃暟
     const currentPage = ref(1);
     const itemsPerPage = computed(() => {
@@ -525,6 +525,12 @@
     if (response.code == 200) {
       ElMessage.success(response.message);
       tableDatagh.value = response.data
+      temperingtotal.value = response.data.length
+      let totalCount = 0;  
+      response.data.forEach(item => { 
+        totalCount += item.count || 0;
+      });
+      glasstotal.value = totalCount;
     } else {
       ElMessage.error(response.message);
     }
@@ -1389,6 +1395,26 @@
         </el-table>
 </el-dialog>
 <el-dialog v-model="dialogFormVisiblec" top="5vh" width="85%" :title="$t('searchOrder.temperingqueries')">
+  <div style="margin-bottom: 20px">
+      <el-form>
+        <el-row style="margin-top: -15px;margin-bottom: -2px;">
+          <el-col :span="4">
+              <div id="dt" style="font-size: 15px;">
+              <el-form-item :label="$t('searchOrder.temperingtotal')"  style="width: 14vw">
+                {{ temperingtotal }}
+              </el-form-item>
+              </div>
+          </el-col>
+          <el-col :span="5">
+            <div id="dta" style="font-size: 15px;">
+          <el-form-item :label="$t('searchOrder.glasstotal')" style="width: 14vw">
+                {{ glasstotal }}
+              </el-form-item>
+              </div>
+          </el-col>
+        </el-row>
+      </el-form>
+    </div>
     <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"/>
diff --git a/UI-Project/src/views/StockBasicData/stockBasicData.vue b/UI-Project/src/views/StockBasicData/stockBasicData.vue
index 5135e96..3292ded 100644
--- a/UI-Project/src/views/StockBasicData/stockBasicData.vue
+++ b/UI-Project/src/views/StockBasicData/stockBasicData.vue
@@ -20,20 +20,20 @@
 const requestData = {  
   line: 2001  
 };  
-request.post("/cacheGlass/taskCache/selectEdgTask",{
-  ...requestData,  
+// request.post("/cacheGlass/taskCache/selectEdgTask",{
+//   ...requestData,  
 
-}).then((res) => {
-          if (res.code == 200) {
+// }).then((res) => {
+//           if (res.code == 200) {
             
-          console.log(res.data);
-          tableData.value = res.data
-          console.log(res.data[0].slot);
-          } else {
-          ElMessage.warning(res.msg)
+//           console.log(res.data);
+//           tableData.value = res.data
+//           console.log(res.data[0].slot);
+//           } else {
+//           ElMessage.warning(res.msg)
         
-          }
-          });
+//           }
+//           });
 // 鐮存崯
  const open = async(row) => { 
   try {
@@ -49,7 +49,7 @@
     if (confirmResult === 'confirm') {  
       // 鐢ㄦ埛鐐瑰嚮浜嗏�滄槸鈥濓紝鐜板湪璋冪敤鍒犻櫎鎺ュ彛  
       const response = await request.post("/cacheGlass/edgStorageCage/edgReportStatus", {
-        glassId: row.GlassId,
+        glassId: row.glass_id,
         controlsId: 300,
         line: 2001,
         machine: '鍐峰姞宸�',
@@ -82,7 +82,7 @@
     if (confirmResult === 'confirm') {  
       // 鐢ㄦ埛鐐瑰嚮浜嗏�滄槸鈥濓紝鐜板湪璋冪敤鍒犻櫎鎺ュ彛  
       const response = await request.post("/cacheGlass/edgStorageCage/edgReportStatus", {
-        glassId: row.GlassId,
+        glassId: row.glass_id,
         controlsId: 301,
         line: 2001,
         machine: '鍐峰姞宸�',
@@ -127,13 +127,11 @@
         <el-table height="240" ref="table" 
         @selection-change="handleSelectionChange"
         :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
-          <el-table-column prop="GlassId" align="center" :label="$t('workOrder.glassID')" min-width="180" />
-          <el-table-column prop="Height" align="center" :label="$t('workOrder.height')" min-width="80" />
-          <el-table-column prop="Width" align="center" :label="$t('workOrder.width')" min-width="120" />
-          <el-table-column prop="Thickness" align="center" :label="$t('workOrder.thickness')" min-width="120" />
-          <el-table-column prop="FilmsId" align="center" :label="$t('workOrder.coatingtypes')" min-width="120" />
-          <el-table-column prop="SerialNumber" align="center" :label="$t('workOrder.productionsequence')" min-width="120" />
-          <el-table-column prop="FlowCardId" align="center" :label="$t('workOrder.cardnumber')" min-width="120" />
+        <el-table-column prop="glass_id" align="center" :label="$t('workOrder.glassID')" min-width="180" />
+          <el-table-column prop="width" align="center" :label="$t('workOrder.width')" min-width="120" />
+          <el-table-column prop="height" align="center" :label="$t('workOrder.height')" min-width="80" />
+          <el-table-column prop="thickness" align="center" :label="$t('workOrder.thickness')" min-width="120" />
+          <el-table-column prop="glass_type" align="center" :label="$t('workOrder.glasstype')" min-width="120" />
           <el-table-column fixed="right" :label="$t('workOrder.operate')" align="center" width="200">
             <template #default="scope">
               <el-button size="mini" type="text" plain @click="open(scope.row)">{{ $t('workOrder.breakage') }}</el-button>
diff --git a/UI-Project/src/views/StockBasicData/stockBasicDatatwo.vue b/UI-Project/src/views/StockBasicData/stockBasicDatatwo.vue
index 57e6567..3b1ac08 100644
--- a/UI-Project/src/views/StockBasicData/stockBasicDatatwo.vue
+++ b/UI-Project/src/views/StockBasicData/stockBasicDatatwo.vue
@@ -20,20 +20,20 @@
 const requestData = {  
   line: 2002
 };  
-request.post("/cacheGlass/taskCache/selectEdgTask",{
-  ...requestData,  
+// request.post("/cacheGlass/taskCache/selectEdgTask",{
+//   ...requestData,  
 
-}).then((res) => {
-          if (res.code == 200) {
+// }).then((res) => {
+//           if (res.code == 200) {
             
-          console.log(res.data);
-          tableData.value = res.data
-          console.log(res.data[0].slot);
-          } else {
-          ElMessage.warning(res.msg)
+//           console.log(res.data);
+//           tableData.value = res.data
+//           console.log(res.data[0].slot);
+//           } else {
+//           ElMessage.warning(res.msg)
         
-          }
-          });
+//           }
+//           });
 // 鐮存崯
  const open = async(row) => {  
   try {
@@ -49,7 +49,7 @@
     if (confirmResult === 'confirm') {  
       // 鐢ㄦ埛鐐瑰嚮浜嗏�滄槸鈥濓紝鐜板湪璋冪敤鍒犻櫎鎺ュ彛  
       const response = await request.post("/cacheGlass/edgStorageCage/edgReportStatus", {
-        glassId: row.GlassId,
+        glassId: row.glass_id,
         controlsId: 300,
         line: 2002,
         machine: '鍐峰姞宸�',
@@ -82,7 +82,7 @@
     if (confirmResult === 'confirm') {  
       // 鐢ㄦ埛鐐瑰嚮浜嗏�滄槸鈥濓紝鐜板湪璋冪敤鍒犻櫎鎺ュ彛  
       const response = await request.post("/cacheGlass/edgStorageCage/edgReportStatus", {
-        glassId: row.GlassId,
+        glassId: row.glass_id,
         controlsId: 301,
         line: 2002,
         machine: '鍐峰姞宸�',
@@ -128,13 +128,11 @@
         <el-table height="240" ref="table" 
         @selection-change="handleSelectionChange"
         :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
-          <el-table-column prop="GlassId" align="center" :label="$t('workOrder.glassID')" min-width="180" />
-          <el-table-column prop="Height" align="center" :label="$t('workOrder.height')" min-width="80" />
-          <el-table-column prop="Width" align="center" :label="$t('workOrder.width')" min-width="120" />
-          <el-table-column prop="Thickness" align="center" :label="$t('workOrder.thickness')" min-width="120" />
-          <el-table-column prop="FilmsId" align="center" :label="$t('workOrder.coatingtypes')" min-width="120" />
-          <el-table-column prop="SerialNumber" align="center" :label="$t('workOrder.productionsequence')" min-width="120" />
-          <el-table-column prop="FlowCardId" align="center" :label="$t('workOrder.cardnumber')" min-width="120" />
+          <el-table-column prop="glass_id" align="center" :label="$t('workOrder.glassID')" min-width="180" />
+          <el-table-column prop="width" align="center" :label="$t('workOrder.width')" min-width="120" />
+          <el-table-column prop="height" align="center" :label="$t('workOrder.height')" min-width="80" />
+          <el-table-column prop="thickness" align="center" :label="$t('workOrder.thickness')" min-width="120" />
+          <el-table-column prop="glass_type" align="center" :label="$t('workOrder.glasstype')" min-width="120" />
           <el-table-column fixed="right" :label="$t('workOrder.operate')" align="center" width="200">
             <template #default="scope">
               <el-button size="mini" type="text" plain @click="open(scope.row)">{{ $t('workOrder.breakage') }}</el-button>
diff --git a/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue b/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
index c0fbde6..844a323 100644
--- a/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
+++ b/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
@@ -15,6 +15,7 @@
 import { WebSocketHost ,host} from '@/utils/constants'
 const dialogFormVisiblea = ref(false)
 const dialogFormVisiblea2 = ref(false)
+const dialogFormVisibleaDownGlass = ref(false)
 // 鏁版嵁
 const loading = ref(false);
 // 寮规鏄剧ず鎺у埗
@@ -25,6 +26,7 @@
 const flowCardId = ref('');
 const flowCardOptions = ref('[]');
 const tableData = reactive([]);
+const downGlass= ref([]);
 // 鏂规硶
 const handleSelectionChange = () => {
   // 澶勭悊琛ㄦ牸琛岄�夋嫨浜嬩欢
@@ -144,7 +146,13 @@
 // 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
 const handleMessage = (data) => {
   // 鏇存柊 tableData 鐨勬暟鎹�
-  tableData.splice(0, tableData.length, ...data.params[0]);
+  if(data.sendDownGlass!=null){
+    downGlass.value=data.sendDownGlass[0][1];
+    console.log(downGlass.value);
+    console.log(tableData.value);
+  }
+  // tableData.splice(0, tableData.length, ...data.params[0]);
+
 //  console.log("鏇存柊鍚庢暟鎹�", data.params[0]);
 };
 // 鍒濆鍖� WebSocket锛屽苟浼犻�掓秷鎭鐞嗗嚱鏁�
@@ -208,6 +216,7 @@
 </script>
 <template>
   <div>
+    <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="primary" @click="dialogFormVisibleaDownGlass = true">钀芥灦璇︽儏</el-button>
     <el-card style="flex: 1;" v-loading="loading">
       <el-card style="flex: 1;margin-left: 4px;margin-top: 1px;" v-loading="loading">
       <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
@@ -230,7 +239,6 @@
             prop="enableState"
           >
           <template #default="scope">
-           
             <el-tag :type="getTagType(scope.row.enableState)" @click="toggleStatus(scope.row)">
           {{ scope.row.enableState === 1 ? $t('reportWork.enable') : $t('reportWork.unenable') }}
         </el-tag>
@@ -241,9 +249,29 @@
             <el-button size="mini" type="text" plain v-show="scope.row.enableState !== '宸插惎鐢�' " @click="handleBindRack(scope.row)">{{ $t('reportWork.bindingshelves') }}</el-button>
             <el-button size="mini" type="text" plain  @click="handleBindRack2(scope.row)">{{ $t('reportWork.clear') }}</el-button>
           </template>
+          
         </el-table-column>
         </el-table>
+        
       </div>
+      <el-dialog v-model="dialogFormVisibleaDownGlass" top="2vh" width="97%" :title="$t('searchOrder.cageinformation')">
+        <el-table height="200px" ref="table" 
+        @selection-change="handleSelectionChange"
+        :data="downGlass" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
+        <el-table-column prop="workStationId" align="center" :label="$t('宸ヤ綅鍙�')" min-width="80" />
+        <el-table-column prop="engineerId" align="center" :label="$t('宸ョ▼鍙�')" min-width="80" />
+          <el-table-column prop="flowCardId" align="center" :label="$t('娴佺▼鍗″彿')" min-width="80" />
+          <el-table-column prop="layer" align="center" :label="$t('灞�')" min-width="120" />
+          <el-table-column prop="sequence" align="center" :label="$t('椤哄簭')" min-width="150" />
+          <el-table-column prop="width" align="center" :label="$t('瀹�')" min-width="120" />
+          <el-table-column prop="height" align="center" :label="$t('楂�')" min-width="120" />
+          <el-table-column prop="Filmsid" align="center" :label="$t('鑶滅郴')" min-width="120" />
+          <el-table-column prop="thickness" align="center" label="鍘氬害" min-width="120" />
+          <el-table-column prop="glassId" align="center" :label="$t('鐜荤拑id')" min-width="120" />
+          
+        </el-table>
+      </el-dialog>
+      
     </el-card>
     <!-- workstationId: '1',
     workstationId: '1005',
@@ -260,6 +288,7 @@
     </div>
     </div>
     </el-card>
+    
   </div>
 
     <el-dialog v-model="dialogFormVisiblea" top="21vh" width="40%" :title="$t('reportWork.bindingshelves')">
@@ -279,6 +308,7 @@
     </div>
     <template #footer>
       <div id="dialog-footer">
+
         <el-button type="primary" @click="handleConfirm">
           {{ $t('reportWork.sure') }}
         </el-button>
diff --git a/UI-Project/src/views/largescreen/largescreen.vue b/UI-Project/src/views/largescreen/largescreen.vue
index fb2ab1a..3e133db 100644
--- a/UI-Project/src/views/largescreen/largescreen.vue
+++ b/UI-Project/src/views/largescreen/largescreen.vue
@@ -25,8 +25,12 @@
       </el-table-column>
       </el-table>
 </div> 
-<div id="center" style="margin-top: 10px;margin-left: 10px; height: 240px;width: 750px;">
+<div id="parent" style="margin-top: 10px;margin-left: 10px; height: 240px;width: 750px;">
   <img src="../../assets/d1a.png" alt="" style="margin-left: -10px; width: 100%;height: 100%;position: relative;"> 
+  <div id="overlay" v-show="flake"></div>
+  <div id="overlayb" v-show="flakeb"></div>
+  <div id="overlayc" v-show="flakec"></div>
+  <div id="overlayd" v-show="flaked"></div>
 </div>
 <div id="centerright" style="margin-top: 10px;margin-left: 10px; height: 240px;width: 240px;background-color: #911005;">
   <el-table height="240" ref="table" width="340px"
@@ -116,6 +120,10 @@
 const tableDatac = ref([])
 const adjustedRects = ref([]);  
 const chartRefs = ref([]);  
+const flake = ref(true)
+const flakeb = ref(true)
+const flakec = ref(true)
+const flaked = ref(true)
 const thisProcess = ref(); // 鐢ㄤ簬瀛樺偍process_id鐨勫搷搴斿紡寮曠敤 
 // 瀹氫箟涓�涓搷搴斿紡寮曠敤鏉ュ瓨鍌ㄥ浘琛ㄥ疄渚�    
 const chartDom = ref(null);  
@@ -169,8 +177,11 @@
   chartRefs.value[index].dom = el;  
 }  
 } 
+const socketUrl2 = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/temperingIsRun`;
+
 onMounted(() => {  
 socket = new WebSocket(socketUrl);  
+socket = new WebSocket(socketUrl2);  
 socket.onmessage = (event) => {  
   const data = JSON.parse(event.data);  
   processesData.value = data.device[0].map(rect => ({  
@@ -248,23 +259,59 @@
 </script>  
 
 <style scoped>  
-
-
-
 .echarts-container {
 display: flex;
 flex-wrap: wrap;
 gap: 20px;
 }
-
 .echarts-item {
 width: 150px;
 height: 150px;
 margin: 20px;
 }
-
 .pie-chart {
 width: 100%;
 height: 100%;
 }
+#parent{
+  position: relative;
+  width: 1500px;
+  margin-left: -300px
+}
+#overlay{
+  position: absolute;
+  z-index: 1;
+  width: 30px;
+  height: 10px;
+  background-color: #529b2e;
+  margin-top: -39px;
+  margin-left: 4px;
+}
+#overlayb{
+  position: absolute;
+  z-index: 1;
+  width: 16px;
+  height: 115px;
+  background-color: #529b2e;
+  margin-top: -197px;
+  margin-left: 9px;
+}
+#overlayc{
+  position: absolute;
+  z-index: 1;
+  width: 16px;
+  height: 16px;
+  background-color: #529b2e;
+  margin-top: -238px;
+  margin-left: 9px;
+}
+#overlayd{
+  position: absolute;
+  z-index: 1;
+  width: 28px;
+  height: 11px;
+  background-color: #529b2e;
+  margin-top: -234px;
+  margin-left: 56px;
+}
 </style>
\ No newline at end of file
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
index 2ea5807..e75e9cf 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
@@ -41,8 +41,8 @@
      * 浜哄伐涓嬬墖102
      * 鍑虹墖涓�103
      * 璋冨害涓�104
-     * 鎷胯蛋200
-     * 鐮存崯201
+     * 鐮存崯8
+     * 鎷胯蛋9
      */
     public static final Integer GLASS_STATE_NEW = 0;
     public static final Integer GLASS_STATE_IN = 100;
@@ -50,8 +50,8 @@
     public static final Integer GLASS_STATE_ARTIFICIAL = 102;
     public static final Integer GLASS_STATE_OUT_ING = 103;
     public static final Integer GLASS_STATE_SCHEDULE_ING = 104;
-    public static final Integer GLASS_STATE_TAKE = 200;
-    public static final Integer GLASS_STATE_DAMAGE = 201;
+    public static final Integer GLASS_STATE_DAMAGE = 8;
+    public static final Integer GLASS_STATE_TAKE = 9;
     public static final List<Integer> GLASS_STATE_IN_ALL = Arrays.asList(100, 102, 103, 104);
     public static final List<Integer> GLASS_STATE_IN_ALL_ZERO = Arrays.asList(0, 100, 102, 103, 104);
 
@@ -98,29 +98,29 @@
      * 2 鍗ц浆绔嬭繘鐗囧畬鎴�
      * 3 澶ц溅杩涚墖瀹屾垚
      * 4 澶х悊鐗囩杩涚墖瀹屾垚
-     * 5 澶х悊鐗囩杩涚墖澶辫触
-     * 6 澶х悊鐗囩杩涚墖鐮存崯
+     * 8 澶х悊鐗囩杩涚墖鐮存崯
+     * 9 澶х悊鐗囩杩涚墖鎷胯蛋
      */
     public static final Integer BIG_STORAGE_IN_NEW = 1;
     public static final Integer BIG_STORAGE_IN_UP = 2;
     public static final Integer BIG_STORAGE_IN_CAR = 3;
     public static final Integer BIG_STORAGE_IN_SLOT = 4;
-    public static final Integer BIG_STORAGE_IN_ERROR = 5;
-    public static final Integer BIG_STORAGE_IN_DAMAGE = 6;
+    //    public static final Integer BIG_STORAGE_IN_DAMAGE = 8;
+//    public static final Integer BIG_STORAGE_IN_ERROR = 9;
     public static final List<Integer> BIG_STORAGE_IN_UP_ALL = Arrays.asList(1, 2);
     /**
      * 鍗ц浆绔嬪嚭鐗囪姹�
      * 1 浠诲姟鐢熸垚
      * 2 鐜荤拑杩涘ぇ杞﹀畬鎴�
      * 3 澶ц溅鍑虹墖瀹屾垚
-     * 4 澶х悊鐗囩杩涚墖澶辫触
-     * 5 澶х悊鐗囩杩涚墖鐮存崯
+     * 8 澶х悊鐗囩杩涚墖鐮存崯
+     * 9 澶х悊鐗囩杩涚墖鎷胯蛋
      */
     public static final Integer BIG_STORAGE_OUT_NEW = 1;
     public static final Integer BIG_STORAGE_OUT_CAR = 2;
     public static final Integer BIG_STORAGE_OUT_SUCCESS = 3;
-    public static final Integer BIG_STORAGE_OUT_ERROR = 4;
-    public static final Integer BIG_STORAGE_OUT_DAMAGE = 5;
+    //    public static final Integer BIG_STORAGE_OUT_DAMAGE = 8;
+//    public static final Integer BIG_STORAGE_OUT_ERROR = 9;
     public static final List<Integer> BIG_STORAGE_OUT_ALL = Arrays.asList(2, 3);
 
     /**
@@ -139,8 +139,8 @@
      * 2  杩涚倝瀹屾垚
      * 3  閽㈠寲瀹屾垚
      * 4  鍑虹墖瀹屾垚
-     * 5  鐮存崯
-     * 6  鎷胯蛋
+     * 8  鐮存崯
+     * 9  鎷胯蛋
      */
 
     public static final Integer TEMPERING_NEW = -1;
@@ -149,8 +149,8 @@
     public static final Integer TEMPERING_START = 2;
     public static final Integer TEMPERING_SUCCESS = 3;
     public static final Integer TEMPERING_END = 4;
-    public static final Integer TEMPERING_DAMAGE = 5;
-    public static final Integer TEMPERING_TAKE = 6;
+//    public static final Integer TEMPERING_DAMAGE = 8;
+//    public static final Integer TEMPERING_TAKE = 9;
 
     /**
      * 涓嬬墖
@@ -161,6 +161,7 @@
     public static final List<Integer> G06_WORK_STATION = Arrays.asList(1, 2, 3);
     public static final List<Integer> G11_WORK_STATION = Arrays.asList(4, 5, 6);
     public static final int G13_WORK_STATION = 7;
+    public static final List<Integer> WORK_STATION_ALL = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
 
     /**
      * 鍚敤 1
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/EdgGlassTaskInfoService.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/EdgGlassTaskInfoService.java
index 1589b7d..3443a6f 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/EdgGlassTaskInfoService.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/EdgGlassTaskInfoService.java
@@ -3,9 +3,12 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.mes.edgglasstask.entity.EdgGlassTaskInfo;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * <p>
- *  鏈嶅姟绫�
+ * 鏈嶅姟绫�
  * </p>
  *
  * @author wu
@@ -13,4 +16,5 @@
  */
 public interface EdgGlassTaskInfoService extends IService<EdgGlassTaskInfo> {
 
+    List<Map<String, Object>> selectEdgInfo(String line);
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/impl/EdgGlassTaskInfoServiceImpl.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/impl/EdgGlassTaskInfoServiceImpl.java
index 34a06f4..b88c9c6 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/impl/EdgGlassTaskInfoServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/impl/EdgGlassTaskInfoServiceImpl.java
@@ -1,14 +1,18 @@
 package com.mes.edgglasstask.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.mes.edgglasstask.entity.EdgGlassTaskInfo;
 import com.mes.edgglasstask.mapper.EdgGlassTaskInfoMapper;
 import com.mes.edgglasstask.service.EdgGlassTaskInfoService;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * <p>
- *  鏈嶅姟瀹炵幇绫�
+ * 鏈嶅姟瀹炵幇绫�
  * </p>
  *
  * @author wu
@@ -17,4 +21,13 @@
 @Service
 public class EdgGlassTaskInfoServiceImpl extends ServiceImpl<EdgGlassTaskInfoMapper, EdgGlassTaskInfo> implements EdgGlassTaskInfoService {
 
+    @Override
+    public List<Map<String, Object>> selectEdgInfo(String line) {
+        LambdaQueryWrapper<EdgGlassTaskInfo> edgGlassWrapper = new LambdaQueryWrapper<>();
+        edgGlassWrapper
+                .eq(EdgGlassTaskInfo::getLine, line)
+                .eq(EdgGlassTaskInfo::getStatus, "1")
+                .orderByDesc(EdgGlassTaskInfo::getTime);
+        return baseMapper.selectMaps(edgGlassWrapper);
+    }
 }
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 8577528..48df75a 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
@@ -140,6 +140,23 @@
         log.info("鏈浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms", endDate, endDate.getTime() - startDate.getTime());
     }
 
+    @Scheduled(fixedDelay = 1000)
+    public void temperingIsRun() {
+        JSONObject jsonObject = new JSONObject();
+        //姝e湪杩涜鐨勪换鍔�
+        List<TaskCache> taskCaches = taskCacheService.selectTaskCacheIsRun();
+        jsonObject.append("taskCaches", taskCaches);
+        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");
+                }
+            }
+        }
+    }
 
     /**
      * 杩涚墖浠诲姟
@@ -157,20 +174,23 @@
 
         //鏌ヨ鐜荤拑骞惰繘琛屼氦鎹�
         GlassInfo glassInfo = queryAndChangeGlass(glassId);
-        log.info("3銆佸皢鐜荤拑淇℃伅鎻掑叆鍗у紡鐞嗙墖绗�,褰撳墠鐜荤拑淇℃伅:{}", glassInfo);
+        if (glassInfo == null) {
+            return;
+        }
+        log.info("4銆佸皢鐜荤拑淇℃伅鎻掑叆鍗у紡鐞嗙墖绗�,褰撳墠鐜荤拑淇℃伅:{}", glassInfo);
         EdgStorageCageDetails details = new EdgStorageCageDetails();
         BeanUtils.copyProperties(glassInfo, details);
         details.setState(Const.GLASS_STATE_IN);
         details.setSlot(nearestEmpty.getSlot());
         details.setDeviceId(nearestEmpty.getDeviceId());
         edgStorageCageDetailsService.save(details);
-        log.info("4銆佺幓鐠冧俊鎭凡瀛樺叆鐞嗙墖绗艰鎯呰〃锛岀幓鐠冧俊鎭负{}", details);
+        log.info("5銆佺幓鐠冧俊鎭凡瀛樺叆鐞嗙墖绗艰鎯呰〃锛岀幓鐠冧俊鎭负{}", details);
         //娣诲姞杩涚墖浠诲姟
         boolean taskCache = saveTaskCache(details.getGlassId(), 0, nearestEmpty.getSlot(), Const.GLASS_CACHE_TYPE_IN);
-        log.info("5銆佺敓鎴愯繘鐗囦换鍔′俊鎭瓨鍏ヤ换鍔¤〃鏄惁瀹屾垚锛歿}", taskCache);
+        log.info("6銆佺敓鎴愯繘鐗囦换鍔′俊鎭瓨鍏ヤ换鍔¤〃鏄惁瀹屾垚锛歿}", taskCache);
 
         S7object.getinstance().plccontrol.writeWord(confirmationWrodAddress, 1);
-        log.info("6銆佸彂閫佺‘璁ゅ瓧瀹屾垚");
+        log.info("7銆佸彂閫佺‘璁ゅ瓧瀹屾垚");
 
 
     }
@@ -185,6 +205,10 @@
         GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId));
 //                .inSql(GlassInfo::getEngineerId, "select engineer_id from engineering where state = 1"));
         Assert.isFalse(null == glassInfo, "鐜荤拑淇℃伅涓嶅瓨鍦�");
+        if ((glassInfo.getWidth() < Double.parseDouble(minTwoFirstLength) && glassInfo.getHeight() < Double.parseDouble(minTwoSecondLength)) || (glassInfo.getWidth() < Double.parseDouble(minTwoSecondLength) && glassInfo.getHeight() < Double.parseDouble(minTwoFirstLength))) {
+            log.info("3銆佺幓鐠冧俊鎭笉绗﹀悎杩涘叆鐞嗙墖绗兼渶灏忓昂瀵革紝鐜荤拑淇℃伅涓簕}", glassInfo);
+            return null;
+        }
         //鎸夌収鐜荤拑灏哄
         LambdaQueryWrapper<GlassInfo> queryWrapper = new LambdaQueryWrapper<GlassInfo>()
                 .eq(GlassInfo::getWidth, glassInfo.getWidth())
@@ -694,8 +718,8 @@
         jsonObject.append("currentCutTerritory", currentCutTerritorys);
         //log.info("鏈璇嗗埆鐗堝浘{},++++{}",engineerId,currentCutTerritorys);
         //纾ㄨ竟淇℃伅
-        List<Map<String, Object>> EdgTasks1 = taskCacheService.selectEdgInfo("2001");
-        List<Map<String, Object>> EdgTasks2 = taskCacheService.selectEdgInfo("2002");
+        List<Map<String, Object>> EdgTasks1 = edgGlassTaskInfoService.selectEdgInfo("2001");
+        List<Map<String, Object>> EdgTasks2 = edgGlassTaskInfoService.selectEdgInfo("2002");
         jsonObject.append("EdgTasks1", EdgTasks1);
         jsonObject.append("EdgTasks2", EdgTasks2);
 
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java
index 0e330b0..cf78834 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java
@@ -1,5 +1,6 @@
 package com.mes.taskcache.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.yulichang.base.MPJBaseServiceImpl;
@@ -7,6 +8,7 @@
 import com.mes.common.config.Const;
 import com.mes.damage.entity.Damage;
 import com.mes.damage.service.DamageService;
+import com.mes.edgglasstask.entity.EdgGlassTaskInfo;
 import com.mes.edgstoragecage.entity.EdgStorageCage;
 import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
 import com.mes.edgstoragecage.mapper.EdgStorageCageDetailsMapper;
@@ -23,7 +25,7 @@
 
 /**
  * <p>
- *  鏈嶅姟瀹炵幇绫�
+ * 鏈嶅姟瀹炵幇绫�
  * </p>
  *
  * @author zhoush
@@ -44,57 +46,59 @@
 
     /**
      * 娣诲姞鐞嗙墖绗间换鍔�
+     *
      * @param taskCache
      * @return
      */
     @Override
-    public boolean insertTaskCache(TaskCache taskCache){
+    public boolean insertTaskCache(TaskCache taskCache) {
         baseMapper.insert(taskCache);
         return true;
     }
 
     /**
      * 鏌ヨ纾ㄨ竟浠诲姟
+     *
      * @param line
      * @return
      */
     @Override
-    public List<Map<String,Object>> selectEdgInfo(String line) {
-        List<TaskCache> taskCache=baseMapper.selectList(new MPJLambdaWrapper<TaskCache>()
+    public List<Map<String, Object>> selectEdgInfo(String line) {
+        List<TaskCache> taskCache = baseMapper.selectList(new MPJLambdaWrapper<TaskCache>()
                 .selectAll(TaskCache.class)
                 .eq(TaskCache::getEndCell, line)
-                .eq(TaskCache::getTaskStatus,1)
+                .eq(TaskCache::getTaskStatus, 1)
                 .orderByAsc(TaskCache::getCreateTime));
-        List<Map<String,Object>> result=new ArrayList<>();
-        int serialNumber=1;
-        for(TaskCache taskCache1:taskCache){
-            Map<String,Object> map=new HashMap<>();
+        List<Map<String, Object>> result = new ArrayList<>();
+        int serialNumber = 1;
+        for (TaskCache taskCache1 : taskCache) {
+            Map<String, Object> map = new HashMap<>();
 //            GlassInfo glassInfo=glassInfoMapper.selectOne(new MPJLambdaWrapper<GlassInfo>()
 //                    .selectAll(GlassInfo.class)
 //                    .eq(GlassInfo::getGlassId,taskCache1.getGlassId()));
-            List<GlassInfo> glassInfos=glassInfoMapper.selectJoinList(GlassInfo.class, new MPJLambdaWrapper<GlassInfo>()
+            List<GlassInfo> glassInfos = glassInfoMapper.selectJoinList(GlassInfo.class, new MPJLambdaWrapper<GlassInfo>()
                     .selectAll(GlassInfo.class)
                     .innerJoin(EdgStorageCageDetails.class, on -> on
                             .eq(EdgStorageCageDetails::getGlassId, GlassInfo::getGlassId)
                             .eq(EdgStorageCageDetails::getEngineerId, GlassInfo::getEngineerId))
-                    .eq(GlassInfo::getGlassId,taskCache1.getGlassId())
-                    .eq(EdgStorageCageDetails::getState,Const.GLASS_STATE_OUT)
+                    .eq(GlassInfo::getGlassId, taskCache1.getGlassId())
+                    .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_OUT)
             );
-            if(glassInfos.size()==1){
-                GlassInfo glassInfo=glassInfos.get(0);
-                map.put("Line",line);//绾胯矾   2001  1绾匡紝 2002 2绾�
-                map.put("Width",glassInfo.getWidth());//瀹�
-                map.put("Height",glassInfo.getHeight());//楂�
-                map.put("Thickness",glassInfo.getThickness());//鍘�
-                map.put("GlassId",glassInfo.getGlassId());//鐜荤拑ID
-                map.put("FlowCardId",glassInfo.getFlowCardId());//娴佺▼鍗″彿
-                map.put("TemperingLayoutId",glassInfo.getTemperingLayoutId());// 鏆備笉鏄剧ず  閽㈠寲鐗堝浘ID
-                map.put("TemperingFeedSequence",glassInfo.getTemperingFeedSequence());// 鏆備笉鏄剧ず  閽㈠寲鐗堝浘ID鍐呯殑搴忓彿
-                map.put("FilmsId",glassInfo.getFilmsid());//鑶滅郴
-                map.put("SerialNumber",serialNumber);//鍑虹墖椤哄簭
+            if (glassInfos.size() == 1) {
+                GlassInfo glassInfo = glassInfos.get(0);
+                map.put("Line", line);//绾胯矾   2001  1绾匡紝 2002 2绾�
+                map.put("Width", glassInfo.getWidth());//瀹�
+                map.put("Height", glassInfo.getHeight());//楂�
+                map.put("Thickness", glassInfo.getThickness());//鍘�
+                map.put("GlassId", glassInfo.getGlassId());//鐜荤拑ID
+                map.put("FlowCardId", glassInfo.getFlowCardId());//娴佺▼鍗″彿
+                map.put("TemperingLayoutId", glassInfo.getTemperingLayoutId());// 鏆備笉鏄剧ず  閽㈠寲鐗堝浘ID
+                map.put("TemperingFeedSequence", glassInfo.getTemperingFeedSequence());// 鏆備笉鏄剧ず  閽㈠寲鐗堝浘ID鍐呯殑搴忓彿
+                map.put("FilmsId", glassInfo.getFilmsid());//鑶滅郴
+                map.put("SerialNumber", serialNumber);//鍑虹墖椤哄簭
                 result.add(map);
-            }else if(glassInfos.size()>1){
-                log.info("鏁版嵁涓嶇鍚堥�昏緫--纾ㄨ竟闃熷垪glassId閲嶅:",glassInfos);
+            } else if (glassInfos.size() > 1) {
+                log.info("鏁版嵁涓嶇鍚堥�昏緫--纾ㄨ竟闃熷垪glassId閲嶅:", glassInfos);
                 return new ArrayList<>();
             }
             serialNumber++;
@@ -111,16 +115,18 @@
 
     /**
      * 鏌ヨ寰呯悊鐗囧伐浣滅殑浠诲姟
+     *
      * @return
      */
     @Override
-    public List<TaskCache> selectCacheInfo(){
-        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getTaskStatus,0));
+    public List<TaskCache> selectCacheInfo() {
+        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getTaskStatus, 0));
 //        return baseMapper.selectList(new QueryWrapper<TaskCache>().eq("task_status",0));
     }
 
     /**
      * 鏌ヨ鍏ㄩ儴浠诲姟
+     *
      * @return
      */
     @Override
@@ -130,54 +136,60 @@
 
     /**
      * 鏌ヨ寰呰繘鐗囦换鍔�
+     *
      * @return
      */
     @Override
-    public List<TaskCache> selectInputTaskCache(){
-        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getTaskStatus,0).eq(TaskCache::getTaskType,1));
+    public List<TaskCache> selectInputTaskCache() {
+        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getTaskStatus, 0).eq(TaskCache::getTaskType, 1));
 
 //        return baseMapper.selectList(new QueryWrapper<TaskCache>().eq("task_status",0).eq("task_type",1));
     }
 
     /**
      * 鏌ヨ寰呭嚭鐗囦换鍔�
+     *
      * @return
      */
     @Override
-    public List<TaskCache> selectOutTaskCache(){
-        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getTaskStatus,0).eq(TaskCache::getTaskType,2));
+    public List<TaskCache> selectOutTaskCache() {
+        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getTaskStatus, 0).eq(TaskCache::getTaskType, 2));
 //        return baseMapper.selectList(new QueryWrapper<TaskCache>().eq("task_status",0).eq("task_type",2));
     }
 
     /**
      * 鏌ヨ  A09  鎴� A10 鏈�鏂扮殑涓�鐗� 鍑虹墖浠诲姟
+     *
      * @param line
      * @return
      */
     @Override
-    public List<TaskCache> selectLastOutCacheInfos(int line){
-        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getEndCell,line).eq(TaskCache::getTaskStatus,1).orderByDesc(TaskCache::getCreateTime));
+    public List<TaskCache> selectLastOutCacheInfos(int line) {
+        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getEndCell, line).eq(TaskCache::getTaskStatus, 1).orderByDesc(TaskCache::getCreateTime));
 //        return baseMapper.selectList(new QueryWrapper<TaskCache>().eq("end_cell",line).eq("task_status",1).orderByDesc("ID"));
     }
 
     /**
      * 鏌ヨ  A09  鎴� A10 鏈�鏂扮殑涓�鐗� 鍑虹墖浠诲姟
+     *
      * @param line
      * @return
      */
     @Override
-    public TaskCache selectLastOutCacheInfo(int line){
-        return baseMapper.selectOne(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getEndCell,line).eq(TaskCache::getTaskStatus,1).orderByDesc(TaskCache::getCreateTime));
+    public TaskCache selectLastOutCacheInfo(int line) {
+        return baseMapper.selectOne(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getEndCell, line).eq(TaskCache::getTaskStatus, 1).orderByDesc(TaskCache::getCreateTime));
     }
+
     /**
      * 鏌ヨ鍒ゆ柇纾ㄨ竟绾挎槸鍚︽湁鐜荤拑杩愯
+     *
      * @param
      * @return
      */
     @Override
     public List<TaskCache> selectTaskCacheIsRun() {
-        List<TaskCache> taskCaches=null;
-        taskCaches=taskCacheMapper.selectJoinList(TaskCache.class, new MPJLambdaWrapper<TaskCache>()
+        List<TaskCache> taskCaches = null;
+        taskCaches = taskCacheMapper.selectJoinList(TaskCache.class, new MPJLambdaWrapper<TaskCache>()
                 .select("top 4   t.end_cell,ISNULL(b.glass_id, 0)as glass_id")
                 .leftJoin("big_storage_cage_feed_task as b on t.glass_id=b.glass_id ")
                 .groupBy("t.end_cell,b.glass_id,t.create_time")
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
index 3a702c3..2e190f0 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
@@ -18,11 +18,11 @@
     secondLength: 2500
   min:
     one: #绗竴鏉$(杈圭嚎鐨勬渶灏忓昂瀵镐俊鎭�
-      firstLength: 600
-      secondLength: 350
+      firstLength: 500
+      secondLength: 400
     two: #绗簩鏉$(杈圭嚎鐨勬渶灏忓昂瀵镐俊鎭�
       firstLength: 400
-      secondLength: 300
+      secondLength: 400
   sequence:
     order: false
 
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 7138c20..2093b2c 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
@@ -191,9 +191,9 @@
 
         if (temperingGlassInfo != null) {
             if (status == 0) {
-                temperingGlassInfo.setState(Const.TEMPERING_DAMAGE);
+                temperingGlassInfo.setState(Const.GLASS_STATE_DAMAGE);
             } else {
-                temperingGlassInfo.setState(Const.TEMPERING_TAKE);
+                temperingGlassInfo.setState(Const.GLASS_STATE_TAKE);
             }
             temperingGlassInfoMapper.updateById(temperingGlassInfo);
         }
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 5378df6..b62a0c3 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
@@ -128,6 +128,8 @@
         if (!REQUEST_WORD.equals(mesD01Value) && REQUEST_WORD.equals(d01ToMES) && (StringUtils.isBlank(d02State) || !REQUEST_WORD.equals(d03State))) {
             if (!d01GlassId.equals(d01Id)) {
                 judgeGlassTypeStatus(d01Id, Const.A09_OUT_TARGET_POSITION, mesD01Address);
+                edgGlassTaskInfoService.update(new LambdaUpdateWrapper<EdgGlassTaskInfo>()
+                        .set(EdgGlassTaskInfo::getStatus, Const.EDG_GLASS_SUCCESS).eq(EdgGlassTaskInfo::getGlassId, d01Id));
                 d01GlassId = d01Id;
             }
         }
@@ -135,6 +137,8 @@
         if (!REQUEST_WORD.equals(mesD04Value) && REQUEST_WORD.equals(d04ToMES) && !REQUEST_WORD.equals(d05State)) {
             if (!d04GlassId.equals(d04Id)) {
                 judgeGlassTypeStatus(d04Id, Const.A10_OUT_TARGET_POSITION, mesD04Address);
+                edgGlassTaskInfoService.update(new LambdaUpdateWrapper<EdgGlassTaskInfo>()
+                        .set(EdgGlassTaskInfo::getStatus, Const.EDG_GLASS_SUCCESS).eq(EdgGlassTaskInfo::getGlassId, d04Id));
                 d04GlassId = d04Id;
             }
         }
@@ -476,10 +480,10 @@
         log.info("澶х悊鐗囩鐮存崯鐜荤拑娓呴櫎浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate);
         //鑾峰彇杩涚墖浠诲姟琛ㄤ腑鐘舵�佷负鐮存崯鐨勬暟鎹�
         List<BigStorageCageFeedTask> inDamageTaskInfoList = bigStorageCageFeedTaskService.list(new LambdaQueryWrapper<BigStorageCageFeedTask>()
-                .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_DAMAGE));
+                .eq(BigStorageCageFeedTask::getTaskState, Const.GLASS_STATE_DAMAGE));
         if (CollectionUtils.isNotEmpty(inDamageTaskInfoList)) {
             log.info("鑾峰彇杩涚墖浠诲姟琛ㄤ腑鐮存崯鐨勭幓鐠冧俊鎭瘂}", inDamageTaskInfoList);
-            bigStorageCageFeedTaskService.remove(new LambdaQueryWrapper<BigStorageCageFeedTask>().eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_DAMAGE));
+            bigStorageCageFeedTaskService.remove(new LambdaQueryWrapper<BigStorageCageFeedTask>().eq(BigStorageCageFeedTask::getTaskState, Const.GLASS_STATE_DAMAGE));
             //鐞嗙墖绗艰鎯呰〃鏁版嵁鐘舵�佹洿鏂�
             bigStorageCageDetailsService.remove(new LambdaQueryWrapper<BigStorageCageDetails>()
                     .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_NEW).in(BigStorageCageDetails::getGlassId, inDamageTaskInfoList.stream().map(BigStorageCageFeedTask::getGlassId).collect(Collectors.toList())));
@@ -501,10 +505,10 @@
         }
         //鑾峰彇鍑虹墖浠诲姟琛ㄤ腑鐘舵�佷负鐮存崯鐨勬暟鎹�
         List<BigStorageCageOutTask> outDamageTaskInfoList = bigStorageCageOutTaskService.list(new LambdaQueryWrapper<BigStorageCageOutTask>()
-                .eq(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_DAMAGE));
+                .eq(BigStorageCageOutTask::getTaskState, Const.GLASS_STATE_DAMAGE));
         if (CollectionUtils.isNotEmpty(outDamageTaskInfoList)) {
             log.info("鑾峰彇鍑虹墖浠诲姟琛ㄤ腑鐮存崯鐨勭幓鐠冧俊鎭瘂}", outDamageTaskInfoList);
-            bigStorageCageOutTaskService.remove(new LambdaQueryWrapper<BigStorageCageOutTask>().eq(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_DAMAGE));
+            bigStorageCageOutTaskService.remove(new LambdaQueryWrapper<BigStorageCageOutTask>().eq(BigStorageCageOutTask::getTaskState, Const.GLASS_STATE_DAMAGE));
             List<String> glassIdList = outDamageTaskInfoList.stream().map(BigStorageCageOutTask::getGlassId).collect(Collectors.toList());
             //绉婚櫎閽㈠寲涓嬬墖琛ㄦ暟鎹�
             temperingGlassInfoService.remove(new LambdaQueryWrapper<TemperingGlassInfo>().in(TemperingGlassInfo::getGlassId, glassIdList));
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassInfoController.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassInfoController.java
index c9a17a1..c9f5593 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassInfoController.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassInfoController.java
@@ -1,5 +1,11 @@
 package com.mes.downglassinfo.controller;
 
+import com.mes.downglassinfo.entity.request.DownGlassInfoRequest;
+import com.mes.downglassinfo.service.DownGlassInfoService;
+import com.mes.utils.Result;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -7,5 +13,12 @@
 @RequestMapping("/downGlassInfo")
 public class DownGlassInfoController {
 
+    @Autowired
+    DownGlassInfoService downGlassInfoService;
+
+    @PostMapping("/selectDownGlassInfo")
+    public Result<String> setDownGlassInfoRequest(@RequestBody DownGlassInfoRequest request) {
+        return Result.success(downGlassInfoService.setDownGlassInfoRequest(request));
+    }
 
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassInfo.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassInfo.java
index add927c..c7d5a67 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassInfo.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassInfo.java
@@ -7,6 +7,7 @@
 import org.springframework.stereotype.Component;
 
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * <p>
@@ -79,5 +80,10 @@
      */
     private String glassId;
 
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private Date gmtCreate;
+
 
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/request/DownGlassInfoRequest.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/request/DownGlassInfoRequest.java
new file mode 100644
index 0000000..aa307b9
--- /dev/null
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/request/DownGlassInfoRequest.java
@@ -0,0 +1,48 @@
+package com.mes.downglassinfo.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-03-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class DownGlassInfoRequest implements Serializable {
+
+    /**
+     * 宸ヤ綅id
+     */
+    private Integer workStationId;
+
+    /**
+     * 宸ョ▼id
+     */
+    private String engineerId;
+
+    /**
+     * 寮�濮嬫椂闂�
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date beginDate;
+
+    /**
+     * 缁撴潫鏃堕棿
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endDate;
+
+
+}
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java
index 1a6ba68..da649b8 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java
@@ -33,5 +33,13 @@
      * @param isDownload 鏄惁鑾峰彇鏈惤鏋剁幓鐠冧俊鎭�  True 宸茶惤鏋�  false 鏈惤鏋�
      * @return
      */
-    List<DownGlassInfoDTO> queryWorkStationIsIn(@Param(value = "isDownload") Boolean isDownload);
+    List<DownGlassInfoDTO> queryWorkStationIsIn(@Param(value = "workList") List<Integer> workList, @Param(value = "isDownload") Boolean isDownload);
+
+    /**
+     * 鑾峰彇
+     *
+     * @param workList
+     * @return
+     */
+    List<DownGlassInfoDTO> queryWorkStationFlowCard(@Param(value = "workList") List<Integer> workList);
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassInfoService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassInfoService.java
index 0830e6b..1aa6fbb 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassInfoService.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassInfoService.java
@@ -2,6 +2,8 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.mes.downglassinfo.entity.DownGlassInfo;
+import com.mes.downglassinfo.entity.request.DownGlassInfoRequest;
+import com.mes.downworkstation.entity.DownWorkstation;
 import com.mes.downworkstation.entity.dto.DownGlassInfoDTO;
 
 import java.util.List;
@@ -31,7 +33,15 @@
      * @param isDownload true/false
      * @return
      */
-    List<DownGlassInfoDTO> queryWorkStationIsIn(Boolean isDownload);
+    List<DownGlassInfoDTO> queryWorkStationIsIn(List<Integer> workList, Boolean isDownload);
+
+    /**
+     * 鑾峰彇鎸囧畾鏋跺瓙宸茬粦瀹氭祦绋嬪崱鐨勬灦瀛愭湭钀界幓鐠冪殑鏁版嵁淇℃伅
+     *
+     * @param workList 鎸囧畾鐨勬灦瀛愬彿
+     * @return
+     */
+    List<DownGlassInfoDTO> queryWorkStationFlowCard(List<Integer> workList);
 
     /**
      * 鐢熸垚鍑虹墖浠诲姟
@@ -40,4 +50,17 @@
      * @return
      */
     boolean generateOutGlassTask(String glassId);
+
+    /**
+     * 璁剧疆鏋跺瓙瀹氭椂浠诲姟鏌ヨ鏉′欢
+     *
+     * @param request
+     * @return
+     */
+    String setDownGlassInfoRequest(DownGlassInfoRequest request);
+
+    /**
+     * 鏌ヨ鏋跺瓙涓婄粦瀹氭祦绋嬪崱鐨勭幓鐠冩槸鍚﹀埌榻�
+     */
+    List<DownWorkstation> queryWorkStationIsFull();
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
index b39daf2..c1af805 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
@@ -1,23 +1,30 @@
 package com.mes.downglassinfo.service.impl;
 
+import cn.smallbun.screw.core.util.CollectionUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.mes.common.config.Const;
+import com.mes.common.utils.RedisUtil;
 import com.mes.downglassinfo.entity.DownGlassInfo;
+import com.mes.downglassinfo.entity.request.DownGlassInfoRequest;
 import com.mes.downglassinfo.mapper.DownGlassInfoMapper;
 import com.mes.downglassinfo.service.DownGlassInfoService;
 import com.mes.downstorage.entity.DownStorageCageDetails;
 import com.mes.downstorage.service.DownStorageCageDetailsService;
+import com.mes.downworkstation.entity.DownWorkstation;
 import com.mes.downworkstation.entity.dto.DownGlassInfoDTO;
+import com.mes.downworkstation.service.DownWorkstationService;
 import com.mes.glassinfo.entity.GlassInfo;
 import com.mes.job.DownLoadCacheGlassTask;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Service
 public class DownGlassInfoServiceImpl extends ServiceImpl<DownGlassInfoMapper, DownGlassInfo> implements DownGlassInfoService {
@@ -27,6 +34,13 @@
 
     @Autowired
     DownStorageCageDetailsService downStorageCageDetailsService;
+
+
+    @Autowired
+    DownWorkstationService downWorkstationService;
+
+    @Autowired
+    RedisUtil redisUtil;
 
     /**
      * 鏍规嵁娴佺▼鍗″彿鏌ヨ鏈�澶у簭鍙�
@@ -60,8 +74,15 @@
     }
 
     @Override
-    public List<DownGlassInfoDTO> queryWorkStationIsIn(Boolean isDownload) {
-        return baseMapper.queryWorkStationIsIn(isDownload);
+    public List<DownGlassInfoDTO> queryWorkStationIsIn(List<Integer> workList, Boolean isDownload) {
+        //鎸夌収瑕佹眰鑾峰彇宸茶惤鏋�/鏈惤鏋剁殑鐜荤拑淇℃伅
+        return baseMapper.queryWorkStationIsIn(workList, isDownload);
+    }
+
+    @Override
+    public List<DownGlassInfoDTO> queryWorkStationFlowCard(List<Integer> workList) {
+        //鑾峰彇宸茬粦瀹氭祦绋嬪崱鐨勬灦瀛愭湭钀界幓鐠冪殑鏁版嵁淇℃伅
+        return baseMapper.queryWorkStationFlowCard(workList);
     }
 
     @Override
@@ -82,4 +103,38 @@
         BeanUtils.copyProperties(details, glassInfo);
         return downLoadCacheGlassTask.initDownGlassTask(glassInfo, details.getSlot(), Const.G13_WORK_STATION, 2);
     }
+
+    @Override
+    public String setDownGlassInfoRequest(DownGlassInfoRequest request) {
+        if (request == null) {
+            redisUtil.deleteObject("downGlassRequest");
+        } else {
+            redisUtil.setCacheObject("downGlassRequest", request);
+        }
+        return "success";
+    }
+
+    @Override
+    public List<DownWorkstation> queryWorkStationIsFull() {
+        //鏌ヨ鍙互钀芥灦鐨勭幓鐠冧俊鎭笖宸茬粦瀹氭祦绋嬪崱鐨勫伐浣嶄俊鎭�
+        List<DownWorkstation> list = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>().eq(DownWorkstation::getEnableState, Const.SLOT_ON)
+                .isNotNull(DownWorkstation::getFlowCardId).ne(DownWorkstation::getFlowCardId, ""));
+        List<DownWorkstation> workstationFull = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(list)) {
+            //閮芥湁鐜荤拑鐨勫伐浣嶄俊鎭紙鍖呮嫭缁戝畾娴佺▼鍗★級
+            List<Integer> workstationList = list.stream().map(DownWorkstation::getWorkstationId).collect(Collectors.toList());
+            //鎸夌収绗﹀悎鏉′欢鐨勫伐浣嶈幏鍙栨湭钀芥灦鐨勬祦绋嬪崱鐜荤拑锛屽鏋滆繑鍥炰负绌猴紝鍒欒〃鏄庢墍鏈夐兘宸茶惤鏋跺畬鎴�
+            List<DownGlassInfoDTO> downGlassInfoDTOList = queryWorkStationIsIn(workstationList, Boolean.FALSE);
+            //鑾峰彇宸ヤ綅涓婄殑鏈弧鐨勬祦绋嬪崱鍙婂眰鏁�
+            List<String> flowCardIdList = downGlassInfoDTOList.stream().map(item -> item.getFlowCardId() + ":" + item.getLayer()).collect(Collectors.toList());
+            //鍙互钀芥灦鐨勭幓鐠冧俊鎭笖宸茬粦瀹氭祦绋嬪崱鐨勬墍鏈夌殑宸ヤ綅 - 鐜荤拑鏈弧娴佺▼鍗″強灞傛暟鐨勫伐浣�  =  宸叉弧宸ヤ綅
+            workstationFull = list.stream().filter(item -> !flowCardIdList.contains(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList());
+            //鏄惁闇�瑕佸皢宸叉弧鐨勫伐浣嶇疆涓轰笉鍙惤鏋�
+            List<Integer> workstationIds = workstationFull.stream().map(DownWorkstation::getWorkstationId).collect(Collectors.toList());
+            downWorkstationService.update(new LambdaUpdateWrapper<DownWorkstation>().set(DownWorkstation::getEnableState, Const.SLOT_OFF)
+                    .in(DownWorkstation::getWorkstationId, workstationIds));
+
+        }
+        return workstationFull;
+    }
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java
index 54966ee..5d2a5d5 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java
@@ -71,12 +71,19 @@
      */
     boolean DirectConnection(GlassInfo glassInfo);
 
+    /**
+     * 鑾峰彇褰撳墠闈炴湰鏋跺瓙鍙惤鏋剁殑鐜荤拑淇℃伅
+     *
+     * @param glassId
+     * @param workList G06/G11:浼犲叆G06瀹為檯鑾峰彇鐨勪负鍙惤鏋禛11鐨勭幓鐠� 鍙嶄箣鍚岀悊
+     * @return
+     */
     String getGlassInfoMaxCount(String glassId, List<Integer> workList);
 
     /**
      * @param glassId
      * @param ControlsId
-     * @return  鐮存崯
+     * @return 鐮存崯
      */
     boolean identWorn(String glassId, int ControlsId);
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java
index f6a69e4..2f2a7aa 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java
@@ -120,6 +120,13 @@
         return Result.build(200, "鏇存崲鎴愬姛", isSucess);
     }
 
+    @ApiOperation("鍏抽棴宸ヤ綅宸叉弧璀︽姤")
+    @PostMapping("/closeAlarmSignal")
+    @ResponseBody
+    public Result<String> closeAlarmSignal() {
+        return Result.build(200, "鏇存崲鎴愬姛", downWorkstationService.closeAlarmSignal());
+    }
+
 
 }
 
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java
index a101328..51c1f71 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java
@@ -77,4 +77,6 @@
      * @returnq 鍚敤绂佺敤
      */
     boolean updateDownWorkstationstate(DownWorkstation downWorkstation);
+
+    String closeAlarmSignal();
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
index cbcb1ff..0833609 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
@@ -4,8 +4,10 @@
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.yulichang.query.MPJQueryWrapper;
+import com.mes.common.S7object;
 import com.mes.damage.entity.Damage;
 import com.mes.damage.service.DamageService;
+import com.mes.device.PlcParameterObject;
 import com.mes.downglassinfo.entity.DownGlassInfo;
 import com.mes.downglassinfo.mapper.DownGlassInfoMapper;
 import com.mes.downglassinfo.service.DownGlassInfoService;
@@ -209,5 +211,12 @@
         }
     }
 
+    @Override
+    public String closeAlarmSignal() {
+        PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
+        S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("alarm_signal").getAddress(), 0);
+        return "success";
+    }
+
 
 }
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 ab141ce..b99a4a0 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
@@ -126,6 +126,16 @@
         }
     }
 
+    @Scheduled(fixedDelay = 300)
+    public void plcShelfFull() {
+        List<DownWorkstation> list = downGlassInfoService.queryWorkStationIsFull();
+        if (CollectionUtils.isNotEmpty(list)) {
+            S7control s7control = S7object.getinstance().plccontrol;
+            PlcParameterObject plcMesObject = S7object.getinstance().PlcMesObject;
+            s7control.writeWord(plcMesObject.getPlcParameter("alarm_signal").getAddress(), 1);
+        }
+    }
+
     public void inTo(String glassId, String requestWord, String currentSlot) {
         log.info("1銆佹寜鐓х幓鐠僫d:{}鑾峰彇鐜荤拑灏忕墖淇℃伅,褰撳墠鏍煎瓙涓�:{}", glassId, currentSlot);
         //娣诲姞杩涚墖浠诲姟  鏌ユ壘绌烘牸
@@ -170,7 +180,7 @@
             }
             if (!checkFlag) {
                 log.info("鏃犵┖鏋跺瓙,鑾峰彇宸茬粦瀹氭灦瀛愮殑娴佺▼鍗′俊鎭�,鏌ョ湅鐜荤拑淇℃伅鏄惁鍙瀵硅皟");
-                List<DownGlassInfoDTO> downGlassInfoDTOList = downGlassInfoService.queryWorkStationIsIn(Boolean.FALSE);
+                List<DownGlassInfoDTO> downGlassInfoDTOList = downGlassInfoService.queryWorkStationIsIn(Const.WORK_STATION_ALL, Boolean.FALSE);
                 log.info("鑾峰彇鏋跺瓙涓婂凡缁戝畾娴佺▼鍗¤惤鏋剁殑鏁伴噺鍙婃湭钀芥灦鐨勭幓鐠冩暟鎹細{}", downGlassInfoDTOList);
                 if (CollectionUtils.isEmpty(downGlassInfoDTOList)) {
                     log.info("宸茬粦瀹氭祦绋嬪崱鍧囨棤鏈惤鏋剁幓鐠冿紝璇峰強鏃跺鐞嗘灦瀛愪笂鐨勭幓鐠冿紝娓呴櫎娴佺▼鍗�,鎵ц杩涚墖浠诲姟");
@@ -309,6 +319,7 @@
             }
         }
         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<DownStorageCageDetails> list = new ArrayList();
         //鏄惁鏈夌┖鏋跺瓙 true锛氭湁   false:鏃�
@@ -387,12 +398,12 @@
         loop:
         if (StringUtils.isBlank(tempGlassId)) {
             //鑾峰彇姝e湪钀芥灦鐨勭粦瀹氭祦绋嬪崱鐨勪俊鎭�(娴佺▼鍗°�佸眰鏁般�佽惤鏋舵暟閲�)
-            List<DownGlassInfoDTO> downGlassInfoDTOList = downGlassInfoService.queryWorkStationIsIn(Boolean.TRUE);
+            //todo:钀芥灦鐜荤拑鏁颁负0锛屽嵆浣跨粦瀹氫簡娴佺▼鍗★紝涔熸棤娉曟壘鍒板搴旂殑鏋跺瓙淇℃伅锛屽彧鑳介噸鏂扮粦瀹�
+            List<DownGlassInfoDTO> downGlassInfoDTOList = downGlassInfoService.queryWorkStationFlowCard(workList);
             List<String> downGlassFlowList = downGlassInfoDTOList.stream().map(item -> item.getFlowCardId() + ":" + item.getLayer()).collect(Collectors.toList());
             if (CollectionUtils.isEmpty(downGlassFlowList)) {
                 //鏋跺瓙閮芥湭缁戝畾娴佺▼鍗★紝鍑虹鍐呭瓙鏁伴噺鏈�澶氬昂瀵告渶澶х殑鐜荤拑id,鏃�  鍒欒繑鍥炴壂鎻忔壂鍒扮殑鐜荤拑id杩涜鍑虹墖
                 tempGlassId = downStorageCageDetailsService.getGlassInfoMaxCount(glassId, offWorkStationList);
-
                 isNeedBind = Boolean.TRUE;
                 break loop;
             }
@@ -527,6 +538,7 @@
         //钀芥灦鐗囧簭
         downGlassInfo.setSequence(downGlassInfoService.queryMaxSequence(downGlassInfo.getFlowCardId(), downGlassInfo.getLayer()));
         downGlassInfo.setWorkStationId(endCell);
+        downGlassInfo.setGmtCreate(new Date());
         downGlassInfoService.save(downGlassInfo);
         //鐢熸垚浠诲姟淇℃伅
         GlassInfo glassInfo = new GlassInfo();
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java
index 7a84902..2877e21 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java
@@ -2,13 +2,18 @@
 
 import cn.hutool.json.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.mes.common.config.Const;
+import com.mes.common.utils.RedisUtil;
 import com.mes.downglassinfo.entity.DownGlassInfo;
+import com.mes.downglassinfo.entity.request.DownGlassInfoRequest;
 import com.mes.downglassinfo.service.DownGlassInfoService;
 import com.mes.downstorage.service.DownStorageCageService;
 import com.mes.downworkstation.entity.DownWorkstation;
 import com.mes.downworkstation.service.DownWorkstationService;
 import com.mes.tools.WebSocketServer;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
@@ -28,6 +33,9 @@
     private DownStorageCageService downStorageCageService;
     @Autowired
     private DownGlassInfoService downGlassInfoService;
+
+    @Autowired
+    private RedisUtil redisUtil;
 
     @Scheduled(fixedDelay = 2000)
     public void sendDownWorkstations() {
@@ -101,14 +109,27 @@
 
     @Scheduled(fixedDelay = 2000)
     public void sendDownGlassInfo() {
+        DownGlassInfoRequest request = redisUtil.getCacheObject("downGlassRequest");
+        if (null == request) {
+            request = new DownGlassInfoRequest();
+        }
         log.info("鍙戦�佸綋鍓嶆鍦ㄦ墽琛屽伐绋嬪凡钀芥灦鐨勭幓鐠冧俊鎭�");
-        List<DownGlassInfo> downGlassInfos = downGlassInfoService.list(new LambdaQueryWrapper<DownGlassInfo>()
-                .inSql(DownGlassInfo::getEngineerId, "select engineer_id from engineering where state = 1"));
+        LambdaQueryWrapper<DownGlassInfo> wrapper = new LambdaQueryWrapper<DownGlassInfo>()
+                .between(null != request.getBeginDate(), DownGlassInfo::getGmtCreate, request.getBeginDate(), request.getEndDate())
+                .eq(StringUtils.isNotBlank(request.getEngineerId()), DownGlassInfo::getEngineerId, request.getEngineerId());
+        if (null == request.getWorkStationId() || 0 == request.getWorkStationId()) {
+            wrapper.in(DownGlassInfo::getWorkStationId, Const.WORK_STATION_ALL);
+        } else {
+            wrapper.eq(DownGlassInfo::getWorkStationId, request.getWorkStationId());
+        }
+        List<DownGlassInfo> downGlassInfos = downGlassInfoService.list(wrapper);
         Map<Integer, List<DownGlassInfo>> listMap = downGlassInfos.stream().collect(Collectors.groupingBy(DownGlassInfo::getWorkStationId));
+        List<Object> engineerIdListTemp = downGlassInfoService.listObjs(new QueryWrapper<DownGlassInfo>().select("distinct engineer_id"));
+        List<String> engineerIdList = engineerIdListTemp.stream().map(String::valueOf).collect(Collectors.toList());
         JSONObject jsonObject4 = new JSONObject();
-        List<Map<String, Object>> list = downStorageCageService.selectDownStorageCages();
-        jsonObject4.append("params", listMap);
-        ArrayList<WebSocketServer> sendwServer4 = WebSocketServer.sessionMap.get("sendDownGlass");
+        jsonObject4.append("downGlassInfos", listMap);
+        jsonObject4.append("engineerIdList", engineerIdList);
+        ArrayList<WebSocketServer> sendwServer4 = WebSocketServer.sessionMap.get("unloadglass");
         if (sendwServer4 != null) {
             for (WebSocketServer webserver : sendwServer4) {
                 if (webserver != null && webserver.session.isOpen()) {
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml
index f13a7b4..c633e7d 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml
@@ -58,16 +58,36 @@
         AND T.LAYER = T1.LAYER
         LEFT JOIN DOWN_GLASS_INFO T2 ON T1.GLASS_ID = T2.GLASS_ID
         <where>
+            t.workstation_id in
+            <foreach collection="workList" item="item" open='(' close=')' separator=','>
+                #{item}
+            </foreach>
             <if test="!isDownload">
                 AND T2.GLASS_ID IS NULL
             </if>
             <if test="isDownload">
                 AND T2.GLASS_ID IS not NULL
             </if>
+
         </where>
         ORDER BY
         T.RACKS_NUMBER DESC,
         T1.TEMPERING_LAYOUT_ID,
         T1.TEMPERING_FEED_SEQUENCE DESC
     </select>
+    <select id="queryWorkStationFlowCard" resultMap="downGlassInfo">
+        SELECT
+        T.FLOW_CARD_ID,
+        T.LAYER,
+        T.RACKS_NUMBER
+        FROM
+        DOWN_WORKSTATION T
+        where
+        (t.flow_card_id is not null and t.flow_card_id != '')
+        and t.workstation_id in
+        <foreach collection="workList" item="item" open='(' close=')' separator=','>
+            #{item}
+        </foreach>
+        ORDER BY T.RACKS_NUMBER DESC
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownStorageCageDetailsMapper.xml b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownStorageCageDetailsMapper.xml
index ee9090e..5d6f3ef 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownStorageCageDetailsMapper.xml
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownStorageCageDetailsMapper.xml
@@ -28,12 +28,11 @@
         FROM DOWN_STORAGE_CAGE_DETAILS
         WHERE STATE = 100
         and (FLOW_CARD_ID, LAYER) not in (
-        select FLOW_CARD_ID, LAYER from down_workstation where flow_card_id is not null and workstation_id not in
+        select FLOW_CARD_ID, LAYER from down_workstation where flow_card_id is not null and workstation_id in
         <foreach collection="workList" item="item" open='(' close=')' separator=','>
             #{item}
         </foreach>
         )
-
         GROUP BY FLOW_CARD_ID, LAYER
         ORDER BY COUNT(FLOW_CARD_ID) DESC
         LIMIT 1 )

--
Gitblit v1.8.0