From 14901b7b990ae38fa4f2e4d57324b6d5e1189c63 Mon Sep 17 00:00:00 2001
From: ZengTao <2773468879@qq.com>
Date: 星期四, 08 八月 2024 14:50:48 +0800
Subject: [PATCH] Merge branch 'master' of http://bore.pub:10439/r/HangZhouMes

---
 UI-Project/src/layout/MainErpView.vue                                                                                                        |    2 
 UI-Project/src/views/Identify/identify.vue                                                                                                   |  234 +++++++---------
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java                                      |   18 +
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassInfoController.java                |   10 
 UI-Project/src/views/LoginView.vue                                                                                                           |    4 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml                                          |   20 +
 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                      |   21 +
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java                                   |   12 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingglass/controller/TemperingGlassInfoController.java       |    5 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java             |   48 ++
 UI-Project/src/views/largescreen/largescreen.vue                                                                                             |  256 +++++++++++++++--
 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                                                                                                                         |    8 
 UI-Project/src/views/StockBasicData/stockBasicData.vue                                                                                       |    4 
 UI-Project/src/views/StockBasicData/stockBasicDatatwo.vue                                                                                    |    4 
 UI-Project/src/lang/zh.js                                                                                                                    |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java |    4 
 UI-Project/src/utils/constants.js                                                                                                            |    6 
 UI-Project/src/views/Slicecage/slicecage.vue                                                                                                 |   48 ++
 UI-Project/src/views/PurchaseReturn/purchaseStorage.vue                                                                                      |    8 
 JsonFile/PlcdownGlass.json                                                                                                                   |    7 
 UI-Project/src/assets/dpxsa.png                                                                                                              |    0 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java                                              |   16 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java            |    7 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java                    |    2 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java               |    9 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java                                                          |   32 +-
 UI-Project/src/views/PurchaseReturn/purchaseReturn.vue                                                                                       |   17 
 31 files changed, 570 insertions(+), 258 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 8801d0c..9a4f798 100644
--- a/UI-Project/config.js
+++ b/UI-Project/config.js
@@ -1,10 +1,10 @@
 export default {
-//  serverUrl: "10.153.19.150:88/api",
+ 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"
+//  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"
+    // serverUrl2: "127.0.0.1:88"
 
   //serverUrl:"res.abeim.cn"
 }
\ No newline at end of file
diff --git a/UI-Project/src/assets/dpxsa.png b/UI-Project/src/assets/dpxsa.png
new file mode 100644
index 0000000..c444062
--- /dev/null
+++ b/UI-Project/src/assets/dpxsa.png
Binary files differ
diff --git a/UI-Project/src/lang/zh.js b/UI-Project/src/lang/zh.js
index edceed9..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',
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/constants.js b/UI-Project/src/utils/constants.js
index 7e57f58..b551cfb 100644
--- a/UI-Project/src/utils/constants.js
+++ b/UI-Project/src/utils/constants.js
@@ -1,4 +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 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/Identify/identify.vue b/UI-Project/src/views/Identify/identify.vue
index 59982e5..58b7421 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  {
@@ -122,7 +85,7 @@
     //   const response = await request.post(url)
   const response = await request.post('/cacheGlass/taskCache/identControls', {
     identId: currentGlassId.value,
-    controlsId: 201,
+    controlsId: 8,
     line: 1001,
     machine: '璇嗗埆',
     })
@@ -130,7 +93,7 @@
       ElMessage.success(response.message);
       // window.location.reload() 
       blind.value = false;
-      updateRectStatus(currentGlassId.value, 201); 
+      updateRectStatus(currentGlassId.value, 8); 
     } else {
       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
       ElMessage.error(response.msg);
@@ -149,7 +112,7 @@
     //   const response = await request.post(url)
   const response = await request.post('/cacheGlass/taskCache/identControls', {
     identId: currentGlassId.value,
-    controlsId: 200,
+    controlsId: 9,
     line: 1001,
     machine: '璇嗗埆',
     })
@@ -158,7 +121,7 @@
       ElMessage.success(response.message);
       // window.location.reload() 
       blind.value = false;
-      updateRectStatus(currentGlassId.value, 200); 
+      updateRectStatus(currentGlassId.value, 9); 
     } else {
       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
       ElMessage.error(response.msg);
@@ -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:  
@@ -215,12 +188,12 @@
       return '#b3e19d';  
     case 120:  
       return '#f89898';  
-    case 200: 
-      return 'lightblue';  
-    case 201:  
+    case 8: 
+      return '#911005';  
+    case 9:  
       return '#f3d19e';  
-    default:  
-      return '#911005'; // 榛樿棰滆壊  
+    // default:  
+    //   return '#911005'; // 榛樿棰滆壊  
   }  
 } 
 // 鏇存柊鐭╁舰鐘舵��  
@@ -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/PurchaseReturn/purchaseReturn.vue b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
index f0b25de..5a991d4 100644
--- a/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
+++ b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
@@ -216,9 +216,14 @@
 function updateRectColors() {  
   adjustedRectsa.value.forEach(rect => {  
     if (rect.glassId === glassId) {  
-      rect.state = 5;
+      rect.state = 8;
     }
   });  
+  adjustedRectsb.value.forEach(rect => {  
+    if (rect.glassId === glassId) {  
+      rect.state = 8;
+    }
+  });
 }  
 function getRectColora(state) {  
   switch (state) {  
@@ -228,7 +233,7 @@
       return '#95d475';
     case -1:  
       return '#CDAF95';  
-    case 5:  
+    case 8:  
       return '#911005';  
   }
 }
@@ -238,7 +243,7 @@
       return '#eebe77';  
     case 4:  
       return '#CD6090';
-    case 5:  
+    case 8:  
       return '#911005';  
   }  
 }
@@ -266,7 +271,7 @@
     glassId: currentGlassId.value,
     // temperingFeedSequence: currenttemperingFeedSequence.value,
     line: 4001,
-    status: 2,
+    status: 8,
     workingProcedure: '閽㈠寲',
     })
     if (response.code == 200) {
@@ -311,7 +316,7 @@
        left: `${rect.xcoordinate}px`,
         width: `${rect.width}px`, 
         height: `${rect.height}px`,
-        backgroundColor: rect.state === 5 ? '#911005' : 'lightblue' }"
+        backgroundColor: rect.state === 8 ? '#911005' : 'lightblue' }"
     >
      <div  class="centered-text">
     <div >{{ rect.glassId }}</div>  
@@ -339,7 +344,7 @@
        left: `${rect.xcoordinate}px`, 
        width: `${rect.width}px`, 
        height: `${rect.height}px`,
-       backgroundColor: rect.state === 5 ? '#911005' : 'lightblue' }"
+       backgroundColor: rect.state === 8 ? '#911005' : 'lightblue' }"
        >
      <div  class="centered-text">
     <div >{{ rect.glassId }}</div>  
diff --git a/UI-Project/src/views/PurchaseReturn/purchaseStorage.vue b/UI-Project/src/views/PurchaseReturn/purchaseStorage.vue
index 5164c6a..166ed4a 100644
--- a/UI-Project/src/views/PurchaseReturn/purchaseStorage.vue
+++ b/UI-Project/src/views/PurchaseReturn/purchaseStorage.vue
@@ -71,9 +71,9 @@
   }
 };
 function updateRectColors() {  
-  adjustedRectsa.value.forEach(rect => {  
+  adjustedRects.value.forEach(rect => {  
     if (rect.glassId === glassId) {  
-      rect.state = 5;
+      rect.state = 8;
     }
   });  
 }  
@@ -83,7 +83,7 @@
       return '#eebe77';  
     case 4:  
       return '#CD6090';
-    case 5:  
+    case 8:  
       return '#911005';  
   }  
 }
@@ -99,7 +99,7 @@
     glassId: currentGlassId.value,
     // temperingFeedSequence: currenttemperingFeedSequence.value,
     line: 4001,
-    status: 2,
+    status: 8,
     workingProcedure: '閽㈠寲',
     })
     if (response.code == 200) {
diff --git a/UI-Project/src/views/Slicecage/slicecage.vue b/UI-Project/src/views/Slicecage/slicecage.vue
index 9837905..7d1dc30 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(() => {
@@ -271,7 +271,7 @@
       } 
     ); 
     if (confirmResult === 'confirm') {  
-      const response = await request.post("/cacheVerticalGlass/bigStorageCageDetails/damageBigStorageCageDetails?status="+0, row)
+      const response = await request.post("/cacheVerticalGlass/bigStorageCageDetails/damageBigStorageCageDetails?status="+8, row)
     if (response.code === 200) {
      tableData.value = response.data;
      ElMessage.success(response.message);
@@ -296,7 +296,7 @@
       } 
     ); 
     if (confirmResult === 'confirm') {  
-      const response = await request.post("/cacheVerticalGlass/bigStorageCageDetails/damageBigStorageCageDetails?status="+1, row)
+      const response = await request.post("/cacheVerticalGlass/bigStorageCageDetails/damageBigStorageCageDetails?status="+9, row)
     if (response.code === 200) {
      tableData.value = response.data;
      ElMessage.success(response.message);
@@ -346,7 +346,7 @@
       } 
     ); 
     if (confirmResult === 'confirm') {  
-      const response = await request.post("/cacheVerticalGlass/temperingGlassInfo/damageTemperingGlassInfo?status="+0, row)
+      const response = await request.post("/cacheVerticalGlass/temperingGlassInfo/damageTemperingGlassInfo?status="+8, row)
     if (response.code === 200) {
       ElMessage.success(response.message);
       } else {  
@@ -397,7 +397,7 @@
       } 
     ); 
     if (confirmResult === 'confirm') {  
-      const response = await request.post("/cacheVerticalGlass/temperingGlassInfo/damageTemperingGlassInfo?status="+1, row)
+      const response = await request.post("/cacheVerticalGlass/temperingGlassInfo/damageTemperingGlassInfo?status="+9, row)
     if (response.code === 200) {
       ElMessage.success(response.message);
       } else {  
@@ -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);
     }
@@ -595,6 +601,8 @@
   if(data.bigStorageCageDetailsOutTask!=null){
     tableDatac.value = data.bigStorageCageDetailsOutTask[0]
     adjusta.value = data.bigStorageCageDetailsOutTask[0].filter(rect => rect.slot !== null && rect.slot !== undefined);
+    console.log(data.bigStorageCageDetailsOutTask[0]);
+    
   } else {
     tableDatac.value = '',
     adjusta.value = ''
@@ -770,7 +778,7 @@
       <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 100px;">
         <el-table height="100px" ref="table" 
         :data="tableDatac" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
-          <el-table-column prop="bigStorageCageOutTask.glassId" align="center" :label="$t('searchOrder.outputglassID')" min-width="120" />
+          <el-table-column prop="bigStorageCageOutTask.glassId" align="center" :label="$t('searchOrder.outputglassID')" min-width="140" />
           <el-table-column prop="bigStorageCageOutTask.startSlot" align="center" :label="$t('searchOrder.startposition')" min-width="120" />
           <el-table-column prop="bigStorageCageOutTask.endSlot" align="center" :label="$t('searchOrder.targetlocation')" min-width="120" />
           <el-table-column prop="bigStorageCageOutTask.trainNumber" align="center" :label="$t('searchOrder.trips')" min-width="120" />
@@ -783,7 +791,7 @@
           <el-table-column prop="id" align="center" :label="$t('searchOrder.tabid')" min-width="150"/>
           <el-table-column prop="deviceId" align="center" :label="$t('searchOrder.tid')" min-width="100"/>
           <el-table-column prop="slot" align="center" :label="$t('searchOrder.gridnumber')" min-width="100"/>
-          <el-table-column prop="glassId" align="center" :label="$t('searchOrder.glassID')" min-width="120"/>
+          <el-table-column prop="glassId" align="center" :label="$t('searchOrder.glassID')" min-width="140"/>
           <el-table-column prop="sequence" align="center" :label="$t('searchOrder.pieceingrid')" min-width="150"/>
           <el-table-column prop="flowCardId" align="center" :label="$t('searchOrder.cardnumber')" min-width="140"/>
           <el-table-column prop="glassType" align="center" :label="$t('searchOrder.typeglass')" min-width="100"/>
@@ -806,7 +814,7 @@
         <el-table height="100px" ref="table" 
         @selection-change="handleSelectionChange"
         :data="tableDatad" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
-          <el-table-column prop="bigStorageCageFeedTask.glassId" align="center" :label="$t('searchOrder.intoglassid')" min-width="120" />
+          <el-table-column prop="bigStorageCageFeedTask.glassId" align="center" :label="$t('searchOrder.intoglassid')" min-width="140" />
           <el-table-column prop="bigStorageCageFeedTask.targetSlot" align="center" :label="$t('searchOrder.targetlocation')" min-width="120" />
           <!-- <el-table-column prop="task_type" align="center" label="浠诲姟绫诲瀷" min-width="120" />娌℃湁杩斿洖瀛楁 -->
           <el-table-column prop="bigStorageCageFeedTask.taskState" align="center" :label="$t('searchOrder.taskstatus')" min-width="120">
@@ -818,7 +826,7 @@
           <el-table-column prop="id" align="center" :label="$t('searchOrder.tabid')" min-width="150"/>
           <el-table-column prop="deviceId" align="center" :label="$t('searchOrder.tid')" min-width="100"/>
           <el-table-column prop="slot" align="center" :label="$t('searchOrder.gridnumber')" min-width="100"/>
-          <el-table-column prop="glassId" align="center" :label="$t('searchOrder.glassID')" min-width="120"/>
+          <el-table-column prop="glassId" align="center" :label="$t('searchOrder.glassID')" min-width="140"/>
           <el-table-column prop="sequence" align="center" :label="$t('searchOrder.pieceingrid')" min-width="150"/>
           <el-table-column prop="flowCardId" align="center" :label="$t('searchOrder.cardnumber')" min-width="140"/>
           <el-table-column prop="glassType" align="center" :label="$t('searchOrder.typeglass')" min-width="100"/>
@@ -1389,6 +1397,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 3292ded..abd2af9 100644
--- a/UI-Project/src/views/StockBasicData/stockBasicData.vue
+++ b/UI-Project/src/views/StockBasicData/stockBasicData.vue
@@ -50,7 +50,7 @@
       // 鐢ㄦ埛鐐瑰嚮浜嗏�滄槸鈥濓紝鐜板湪璋冪敤鍒犻櫎鎺ュ彛  
       const response = await request.post("/cacheGlass/edgStorageCage/edgReportStatus", {
         glassId: row.glass_id,
-        controlsId: 300,
+        controlsId: 8,
         line: 2001,
         machine: '鍐峰姞宸�',
     })
@@ -83,7 +83,7 @@
       // 鐢ㄦ埛鐐瑰嚮浜嗏�滄槸鈥濓紝鐜板湪璋冪敤鍒犻櫎鎺ュ彛  
       const response = await request.post("/cacheGlass/edgStorageCage/edgReportStatus", {
         glassId: row.glass_id,
-        controlsId: 301,
+        controlsId: 9,
         line: 2001,
         machine: '鍐峰姞宸�',
     })
diff --git a/UI-Project/src/views/StockBasicData/stockBasicDatatwo.vue b/UI-Project/src/views/StockBasicData/stockBasicDatatwo.vue
index 3b1ac08..aef4c24 100644
--- a/UI-Project/src/views/StockBasicData/stockBasicDatatwo.vue
+++ b/UI-Project/src/views/StockBasicData/stockBasicDatatwo.vue
@@ -50,7 +50,7 @@
       // 鐢ㄦ埛鐐瑰嚮浜嗏�滄槸鈥濓紝鐜板湪璋冪敤鍒犻櫎鎺ュ彛  
       const response = await request.post("/cacheGlass/edgStorageCage/edgReportStatus", {
         glassId: row.glass_id,
-        controlsId: 300,
+        controlsId: 8,
         line: 2002,
         machine: '鍐峰姞宸�',
     })
@@ -83,7 +83,7 @@
       // 鐢ㄦ埛鐐瑰嚮浜嗏�滄槸鈥濓紝鐜板湪璋冪敤鍒犻櫎鎺ュ彛  
       const response = await request.post("/cacheGlass/edgStorageCage/edgReportStatus", {
         glassId: row.glass_id,
-        controlsId: 301,
+        controlsId: 9,
         line: 2002,
         machine: '鍐峰姞宸�',
     })
diff --git a/UI-Project/src/views/largescreen/largescreen.vue b/UI-Project/src/views/largescreen/largescreen.vue
index fb2ab1a..bd641d5 100644
--- a/UI-Project/src/views/largescreen/largescreen.vue
+++ b/UI-Project/src/views/largescreen/largescreen.vue
@@ -25,8 +25,19 @@
       </el-table-column>
       </el-table>
 </div> 
-<div id="center" style="margin-top: 10px;margin-left: 10px; height: 240px;width: 750px;">
-  <img src="../../assets/d1a.png" alt="" style="margin-left: -10px; width: 100%;height: 100%;position: relative;"> 
+<div id="parent" style="margin-top: 10px;margin-left: 10px; height: 240px;width: 750px;">
+  <img src="../../assets/dpxsa.png" alt="" style="margin-left: -10px; width: 100%;height: 100%;position: relative;"> 
+  <div id="lipiana" v-show="woshia"></div>
+  <div id="lipianb" v-show="woshia"></div>
+  <div id="lipianc" v-show="woshic"></div>
+  <div id="lipiand" v-show="woshic"></div>
+  <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 id="longa" v-show="dalipiana"></div>
+  <div id="longb" v-show="dalipianb"></div>
+  <div id="shangpianji" v-show="shangpian"></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 +127,16 @@
 const tableDatac = ref([])
 const adjustedRects = ref([]);  
 const chartRefs = ref([]);  
+const flake = ref(false)
+const flakeb = ref(false)
+const flakec = ref(false)
+const flaked = ref(false)
+const woshia = ref(false)
+const woshic = ref(false)
+const dalipiana = ref(false)
+const dalipianb = ref(false)
+const shangpian = ref(false)
+
 const thisProcess = ref(); // 鐢ㄤ簬瀛樺偍process_id鐨勫搷搴斿紡寮曠敤 
 // 瀹氫箟涓�涓搷搴斿紡寮曠敤鏉ュ瓨鍌ㄥ浘琛ㄥ疄渚�    
 const chartDom = ref(null);  
@@ -124,9 +145,7 @@
 const handleBinda = (row) => {
 blinda.value = true;
 };
-const processesData = ref([
-
-]);
+const processesData = ref([]);
 function getStatusType(warehousing) {  
 switch (warehousing) {  
   case 0:  
@@ -148,30 +167,16 @@
 }  
 }  
 let socket = null;
+let socket2 = null;
+let socket3 = null;
+let socket4 = null;
+let socket5 = null;
 const socketUrl = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/screen`;
 const handleMessage = (data) => {
 tableData.value = data.awaitingRepairs[0]
 tableDatab.value = data.DoingTask[0]
 tableDatac.value = data.orders[0]
-// adjustedRects.value = data.device[0].map(rect => ({  
-//       ...rect, 
-//       completed: rect.completedQuantity,
-//       breakage: rect.breakageQuantity,
-//       thisProcess: rect.thisProcess,
-//     })); 
-};
-// let socket;
-// 璁剧疆鍥捐〃 DOM 寮曠敤  
-function setChartDom(index, el) {  
-if (!chartRefs.value[index]) {  
-  chartRefs.value[index] = { dom: el, chart: null };  
-} else {  
-  chartRefs.value[index].dom = el;  
-}  
-} 
-onMounted(() => {  
-socket = new WebSocket(socketUrl);  
-socket.onmessage = (event) => {  
+  socket.onmessage = (event) => {  
   const data = JSON.parse(event.data);  
   processesData.value = data.device[0].map(rect => ({  
     ...rect,  
@@ -180,12 +185,47 @@
     thisProcess: rect.thisProcess,  
   }));  
   renderPieCharts();
-  console.log(processesData.value);
-  // updateCharts();
+}
 };
-  
-// };  
-});  
+function setChartDom(index, el) {  
+if (!chartRefs.value[index]) {  
+  chartRefs.value[index] = { dom: el, chart: null };  
+} else {  
+  chartRefs.value[index].dom = el;  
+}  
+} 
+const socketUrl2 = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/temperingIsRun`;
+const handleMessage2 = (data) => {
+  const tasks = data.temperingTaskType[0];  
+  if (tasks && tasks.length >= 4) {  
+    flake.value = tasks[0].state === 1;  
+    flakeb.value = tasks[1].state === 2;  
+    flakec.value = tasks[2].state === 3;  
+    flaked.value = tasks[3].state === 4;  
+  }
+};
+// 鍗у紡鐞嗙墖
+const socketUrl3 = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/cacheGlassIsRun`;
+const handleMessage3 = (data) => {
+  const tasks = data.taskCaches[0];  
+  woshia.value = tasks.some(task => task.endCell == 2001 && task.glassId == 0);  
+  woshic.value = tasks.some(task => task.endCell == 2002 && task.glassId == 0);  
+};
+// 澶х悊鐗囩
+const socketUrl4 = `ws://${WebSocketHost}:${host}/api/cacheVerticalGlass/api/talk/isRun`;
+const handleMessage4 = (data) => {
+  const tasks = data.bigStorageCageDetailsOutTask[0];  
+  const taskss = data.bigStorageCageDetailsFeedTask[0];  
+    dalipiana.value = tasks.some(task => task.slot !== null && task.slot !== undefined);  
+dalipianb.value = taskss.some(task => task.slot !== null && task.slot !== undefined);  
+};
+// 涓婄墖
+const socketUrl5 = `ws://${WebSocketHost}:${host}/api/loadGlass/api/talk/loadGlassIsRun`;
+const handleMessage5 = (data) => {
+  if(data.engineering.length !==0 ){
+    shangpian.value = true;
+}
+};
 const renderPieCharts = () => {
 processesData.value.forEach((data, index) => {
   const chart = echarts.init(document.getElementById('pieChart_' + index));
@@ -230,41 +270,183 @@
 };
 
 
-onUnmounted(() => {  
-socket.close();  
-});  
+// onUnmounted(() => {  
+// socket.close();  
+// socket2.close();  
+// }); 
+// onMounted(() => {
+//   socket = initializeWebSocket(socketUrl, handleMessage);
+//   // socket = new WebSocket(socketUrl);
+// socket.onmessage = (event) => {  
+//   const data = JSON.parse(event.data);  
+//   processesData.value = data.device[0].map(rect => ({  
+//     ...rect,  
+//     completedQuantity: rect.completedQuantity,  
+//     breakageQuantity: rect.breakageQuantity,  
+//     thisProcess: rect.thisProcess,  
+//   }));  
+//   renderPieCharts();
+//   console.log(processesData.value);
+//   // updateCharts();
+//   socket2 = initializeWebSocket(socketUrl2, handleMessage2);
+//   // socket2 = new WebSocket(socketUrl2);  
+//   // socket2.onmessage = (event) => {  
+//   //   const data = JSON.parse(event.data);  
+//   //   handleMessage2(data);  
+//   // };  
+// };
+// }); 
 onMounted(() => {
   socket = initializeWebSocket(socketUrl, handleMessage);
+  socket2 = initializeWebSocket(socketUrl2, handleMessage2);
+  socket3 = initializeWebSocket(socketUrl3, handleMessage3);
+  socket4 = initializeWebSocket(socketUrl4, handleMessage4);
+  socket5 = initializeWebSocket(socketUrl5, handleMessage5);
 });
   onUnmounted(() => {
     if (socket) {
     closeWebSocket(socket);
     }
+    if (socket2) {
+    closeWebSocket2(socket2);
+    }
+    if (socket3) {
+    closeWebSocket3(socket3);
+    }
+    if (socket4) {
+    closeWebSocket4(socket4);
+    }
+    if (socket5) {
+    closeWebSocket5(socket5);
+    }
     });
 onBeforeUnmount(() => {
 console.log("鍏抽棴浜�")
 closeWebSocket();
+closeWebSocket2();
+closeWebSocket3();
+closeWebSocket4();
+closeWebSocket5();
 });
 </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: 29px;
+  height: 10px;
+  background-color: #529b2e;
+  margin-top: -34px;
+  margin-left: -8px;
+}
+#overlayb{
+  position: absolute;
+  z-index: 1;
+  width: 15px;
+  height: 115px;
+  background-color: #529b2e;
+  margin-top: -197px;
+  margin-left: -3px;
+}
+#overlayc{
+  position: absolute;
+  z-index: 1;
+  width: 14px;
+  height: 16px;
+  background-color: #529b2e;
+  margin-top: -243px;
+  margin-left: -2px;
+}
+#overlayd{
+  position: absolute;
+  z-index: 1;
+  width: 28px;
+  height: 11px;
+  background-color: #529b2e;
+  margin-top: -239px;
+  margin-left: 40px;
+}
+#lipiana{
+  position: absolute;
+  z-index: 1;
+  width: 65px;
+  height: 10px;
+  background-color: #529b2e;
+  margin-top: -57px;
+  margin-left: 240px;
+}
+#lipianb{
+  position: absolute;
+  z-index: 1;
+  width: 16px;
+  height: 10px;
+  background-color: #529b2e;
+  margin-top: -72px;
+  margin-left: 323px;
+}
+#lipianc{
+  position: absolute;
+  z-index: 1;
+  width: 65px;
+  height: 10px;
+  background-color: #529b2e;
+  margin-top: -32px;
+  margin-left: 270px;
+}
+#lipiand{
+  position: absolute;
+  z-index: 1;
+  width: 21px;
+  height: 10px;
+  background-color: #529b2e;
+  margin-top: -48px;
+  margin-left: 354px;
+}
+#longa{
+  position: absolute;
+  z-index: 1;
+  width: 29px;
+  height: 5px;
+  background-color: #529b2e;
+  margin-top: -20px;
+  margin-left: 80px;
+}
+#longb{
+  position: absolute;
+  z-index: 1;
+  width: 29px;
+  height: 5px;
+  background-color: #529b2e;
+  margin-top: -20px;
+  margin-left: 150px;
+}
+#shangpianji{
+  position: absolute;
+  z-index: 1;
+  width: 29px;
+  height: 10px;
+  background-color: #529b2e;
+  margin-top: -90px;
+  margin-left: 568px;
+}
 </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 2c2763a..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;
 
     /**
      * 涓嬬墖
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 9944d58..c400f4e 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
@@ -108,7 +108,7 @@
     public Integer updateTemperingState(TemperingGlassInfo temperingGlassInfo) {
         UpdateWrapper<TemperingGlassInfo> wrapper = new UpdateWrapper<>();
         wrapper.eq("glass_id",temperingGlassInfo.getGlassId())
-                .lt("state",5)
+                .lt("state",6)
                 .set("state", temperingGlassInfo.getState());;
         if (temperingMapper.update(null,wrapper) > 0) {
             return 200;
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/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java
index 0a371fb..0118321 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 = 30000)
+    @Scheduled(fixedDelay = 300)
     public void plcLoadGlassTask() throws InterruptedException {
         try {
             //鑾峰彇鑱旀満鐘舵��
@@ -87,7 +87,7 @@
         }
     }
 
-    @Scheduled(fixedDelay = 30000)
+    @Scheduled(fixedDelay = 300)
     public void plcLoadGlassReport() {
         //鑾峰彇鏄惁鏈夋眹鎶�
         String loadStatus = plcParameterObject.getPlcParameter("PlcStatus").getValue();
@@ -152,8 +152,8 @@
     public void loadGlassStatus() {
         JSONObject jsonObject = new JSONObject();
         //姝e湪杩涜鐨勪换鍔�
-//        String inkageStatus =plcParameterObject.getPlcParameter("InkageStatus").getValue();
-        String inkageStatus ="1";
+        String inkageStatus =plcParameterObject.getPlcParameter("InkageStatus").getValue();
+//        String inkageStatus ="1";
         jsonObject.append("InkageStatus", inkageStatus);
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("loadGlass");
         if (sendwServer != null) {
@@ -169,12 +169,12 @@
     @Scheduled(fixedDelay = 1000)
     public void loadGlassIsRun() {
         JSONObject jsonObject = new JSONObject();
+        //鏄惁寮�濮嬪伐绋�
         Engineering engineering = engineeringService.selectInitiate(1);
-        if (engineering != null){
             jsonObject.append("engineering", engineering);
-        }else {
-            jsonObject.append("engineering", "0");
-        }
+        //宸ヤ綅淇℃伅
+        List<UpWorkstation> upWorkstations = upWorkstationService.list();
+        jsonObject.append("list", upWorkstations);
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("loadGlassIsRun");
         if (sendwServer != null) {
             for (WebSocketServer webserver : sendwServer) {
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 73cc34b..4d0abc8 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
@@ -53,10 +53,7 @@
     public Result <Integer> updateTemperingState(@RequestBody  Damage damage) {
         damageService.insertDamage(damage);
         TemperingGlassInfo temperingGlassInfo=new TemperingGlassInfo();
-        if(damage.getStatus()==2){
-            temperingGlassInfo.setState(5);
-
-        }
+        temperingGlassInfo.setState(damage.getStatus());
         temperingGlassInfo.setGlassId(damage.getGlassId());
         int result=temperingGlassInfoService.updateTemperingState(temperingGlassInfo);
         return Result.build(200, "鐮存崯鎴愬姛", result);
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 991d778..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,6 +1,5 @@
 package com.mes.downglassinfo.controller;
 
-import com.mes.downglassinfo.entity.DownGlassInfo;
 import com.mes.downglassinfo.entity.request.DownGlassInfoRequest;
 import com.mes.downglassinfo.service.DownGlassInfoService;
 import com.mes.utils.Result;
@@ -18,13 +17,8 @@
     DownGlassInfoService downGlassInfoService;
 
     @PostMapping("/selectDownGlassInfo")
-    public Result setDownGlassInfoRequest(@RequestBody DownGlassInfoRequest request) {
-        downGlassInfoService.setDownGlassInfoRequest(request);
-        return Result.build(200,"鏌ヨ鎴愬姛",1);
+    public Result<String> setDownGlassInfoRequest(@RequestBody DownGlassInfoRequest request) {
+        return Result.success(downGlassInfoService.setDownGlassInfoRequest(request));
     }
 
-    @PostMapping("/downGlassPrint")
-    public Result downGlassPrint(@RequestBody DownGlassInfo downGlassInfo) {
-        return Result.build(200,"鏌ヨ鎴愬姛",downGlassInfoService.downGlassPrint(downGlassInfo));
-    }
 }
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 7bee99b..6e9c45d 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
@@ -3,6 +3,7 @@
 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;
@@ -33,7 +34,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);
 
     /**
      * 鐢熸垚鍑虹墖浠诲姟
@@ -43,7 +52,17 @@
      */
     boolean generateOutGlassTask(String glassId);
 
+    /**
+     * 璁剧疆鏋跺瓙瀹氭椂浠诲姟鏌ヨ鏉′欢
+     *
+     * @param request
+     * @return
+     */
     String setDownGlassInfoRequest(DownGlassInfoRequest request);
 
     List<Map<String, List<Map<String, Object>>>> downGlassPrint(DownGlassInfo downGlassInfo);
+
+    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 909c76a..9dba5bc 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,6 +1,7 @@
 package com.mes.downglassinfo.service.impl;
 
-import cn.hutool.json.JSONArray;
+import cn.smallbun.screw.core.util.CollectionUtils;
+import cn.smallbun.screw.core.util.CollectionUtils;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -15,7 +16,9 @@
 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 com.mes.pp.service.FlowCardService;
@@ -24,9 +27,9 @@
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
+import java.util.HashMap;import java.util.Map;
+import java.util.stream.Collectors;
 
 @Service
 public class DownGlassInfoServiceImpl extends ServiceImpl<DownGlassInfoMapper, DownGlassInfo> implements DownGlassInfoService {
@@ -36,6 +39,10 @@
 
     @Autowired
     DownStorageCageDetailsService downStorageCageDetailsService;
+
+
+    @Autowired
+    DownWorkstationService downWorkstationService;
 
     @Autowired
     RedisUtil redisUtil;
@@ -75,8 +82,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
@@ -107,8 +121,29 @@
         }
         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;
+    }@Override
     public List<Map<String, List<Map<String, Object>>>> downGlassPrint(DownGlassInfo downGlassInfo){
         QueryWrapper<DownGlassInfo> queryWrapper = Wrappers.query();
         queryWrapper.eq("flow_card_id", "NG24080012A001")
@@ -154,5 +189,4 @@
         listMap.add(result);
         return listMap;
     }
-
 }
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/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