From 40bfddca7ce650a636b016e8690db9623649b200 Mon Sep 17 00:00:00 2001
From: 严智鑫 <test>
Date: 星期四, 25 七月 2024 14:30:42 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes

---
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java      |    4 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownStorageCageDetailsMapper.xml                                 |   25 ++-
 UI-Project/config.js                                                                                                                         |    8 
 UI-Project/src/views/StockBasicData/stockBasicData.vue                                                                                       |    8 
 UI-Project/src/views/Returns/returns.vue                                                                                                     |    8 
 UI-Project/src/views/Identify/identify.vue                                                                                                   |   32 ++--
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java                                      |   67 ++++----
 UI-Project/src/views/StockBasicData/stockBasicDatatwo.vue                                                                                    |    8 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java |    1 
 UI-Project/src/utils/constants.js                                                                                                            |    4 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java                                    |   14 +
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java                                              |   40 +++--
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java                                   |   93 ++++++++++---
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java                 |    5 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java                    |   25 ++-
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java               |    2 
 UI-Project/src/utils/WebSocketService.js                                                                                                     |    3 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java                                                          |    5 
 UI-Project/src/views/PurchaseReturn/purchaseReturn.vue                                                                                       |   50 +++++-
 19 files changed, 261 insertions(+), 141 deletions(-)

diff --git a/UI-Project/config.js b/UI-Project/config.js
index b15a1a5..7df122b 100644
--- a/UI-Project/config.js
+++ b/UI-Project/config.js
@@ -1,7 +1,7 @@
 export default {
- serverUrl: "10.153.19.150:88/api",
-//  serverUrl: "192.168.1.199:88/api",
-  serverUrl2: "10.153.19.150:88"
-  // serverUrl2: "192.168.1.199:88"
+//  serverUrl: "10.153.19.150:88/api",
+ serverUrl: "192.168.1.199:88/api",
+  // serverUrl2: "10.153.19.150:88"
+  serverUrl2: "192.168.1.199:88"
   //serverUrl:"res.abeim.cn"
 }
\ No newline at end of file
diff --git a/UI-Project/src/utils/WebSocketService.js b/UI-Project/src/utils/WebSocketService.js
index 4ad03b7..f74df0a 100644
--- a/UI-Project/src/utils/WebSocketService.js
+++ b/UI-Project/src/utils/WebSocketService.js
@@ -1,7 +1,7 @@
 // WebSocketService.js
 
 let socket = null;
-let messages = '';
+let messages='' ;
 export const initializeWebSocket = (socketUrl, messageHandler) => {
     if (typeof WebSocket === "undefined") {
       console.log("Your browser does not support WebSocket");
@@ -18,7 +18,6 @@
       if (!msg.data) {
         return;
       }
-      
       const isLastChunk = msg.data.endsWith('<END>');
       //鏄惁涓烘渶鍚庝竴鍧楁秷鎭�
       messages += msg.data;
diff --git a/UI-Project/src/utils/constants.js b/UI-Project/src/utils/constants.js
index 67d36d2..9a2423c 100644
--- a/UI-Project/src/utils/constants.js
+++ b/UI-Project/src/utils/constants.js
@@ -1,3 +1,3 @@
-// export const WebSocketHost = "192.168.1.199";
-export const WebSocketHost = "10.153.19.150";
+export const WebSocketHost = "192.168.1.199";
+// export const WebSocketHost = "10.153.19.150";
 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 74f05a1..64df621 100644
--- a/UI-Project/src/views/Identify/identify.vue
+++ b/UI-Project/src/views/Identify/identify.vue
@@ -103,13 +103,15 @@
 // 鐮存崯
 const handleDamage = async () => {
   try  {
-    var url="/cacheGlass/taskCache/identControls?identId="+currentGlassId.value+'&controlsId='+201;
-      console.log(url);
-      const response = await request.post(url)
-  // const response = await request.post('/cacheGlass/taskCache/identControls', {
-  //   identId: currentGlassId.value,
-  //   controlsId: 201,
-  //   })
+    // var url="/cacheGlass/taskCache/identControls?identId="+currentGlassId.value+'&controlsId='+201;
+    //   console.log(url);
+    //   const response = await request.post(url)
+  const response = await request.post('/cacheGlass/taskCache/identControls', {
+    identId: currentGlassId.value,
+    controlsId: 201,
+    line: 1001,
+    machine: '璇嗗埆',
+    })
     if (response.code == 200) {
       ElMessage.success(response.message);
       // window.location.reload() 
@@ -128,13 +130,15 @@
  // 浜哄伐鎷胯蛋
 const handleManualTake = async () => {
   try  {
-    var url="/cacheGlass/taskCache/identControls?identId="+currentGlassId.value+'&controlsId='+200;
-      console.log(url);
-      const response = await request.post(url)
-  // const response = await request.post('/cacheGlass/taskCache/identControls', {
-  //   identId: currentGlassId.value,
-  //   controlsId: 200,
-  //   })
+    // var url="/cacheGlass/taskCache/identControls?identId="+currentGlassId.value+'&controlsId='+200;
+    //   console.log(url);
+    //   const response = await request.post(url)
+  const response = await request.post('/cacheGlass/taskCache/identControls', {
+    identId: currentGlassId.value,
+    controlsId: 200,
+    line: 1001,
+    machine: '璇嗗埆',
+    })
     if (response.code == 200) {
       // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
       ElMessage.success(response.message);
diff --git a/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
index ee5825e..2d6988b 100644
--- a/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
+++ b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
@@ -16,7 +16,7 @@
 const blind = ref(false)
 const width = ref();
 const height = ref();
-const adjustedRects = ref([]);
+const adjustedRects1 = ref([]);
 const adjustedRects2 = ref([]);
 const adjustedRectsa = ref([]);
 const adjustedRectsb = ref([]);
@@ -26,7 +26,8 @@
 const handleMessage = (data) => {
 // 杩涚倝涓�
   if(data.intoGlass!=null){
-    adjustedRects.value =  data.intoGlass[0].map(rect => {  
+    adjustedRects1.value =  data.intoGlass[0].map(rect => {  
+      console.log( adjustedRects1.value);
         let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta;
         let newX = rect.yCoordinate; 
   if (rect.angle === 0) {  
@@ -52,10 +53,13 @@
         heighta: adjustedHeighta,
       };  
       });
+      }else{
+        adjustedRects1.value = ''
       }
   if(data.intoGlass2!=null){
     adjustedRects2.value =  data.intoGlass2[0].map(rect => {  
-        let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta;
+      console.log( adjustedRects2.value);
+      let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta;
       let newX = rect.yCoordinate; 
       if (rect.angle === 0) {  
           adjustedWidth = rect.height * 0.12;  
@@ -80,6 +84,8 @@
         heighta: adjustedHeighta,
       };  
       });
+      }else{
+        adjustedRects2.value = ''
       }
   // 杩涚倝鍓�
   if(data.waitingGlass!=null){
@@ -109,7 +115,9 @@
     heighta: adjustedHeighta,
   };  
 });
-  }
+  }else{
+        adjustedRectsa.value = ''
+      }
     // 宸插嚭鐐�
   if(data.outGlass!=null){
     adjustedRectsb.value = data.outGlass[0].map(rect => {  
@@ -138,7 +146,9 @@
         heighta: adjustedHeighta,
   };  
 });
-  }
+  }else{
+        adjustedRectsb.value = ''
+      }
 };
 onMounted(() => {
   initializeWebSocket(socketUrl, handleMessage);
@@ -172,6 +182,18 @@
       return '#911005';  
   }  
 }
+// if (adjustedRectsb[0].engineerId != null) {
+//     engineerIdDisplayb = adjustedRectsb[0].engineerId
+//   }
+//   if (adjustedRectsa[0].engineerId != null) {
+//     engineerIdDisplaya = adjustedRectsa[0].engineerId
+//   }
+//   if (adjustedRects2[0].engineerId != null) {
+//     engineerIdDisplay2 = adjustedRects2[0].engineerId
+//   }
+//   if (adjustedRects[0].engineerId != null) {
+//     engineerIdDisplay = adjustedRects[0].engineerId
+//   }
 function showDialog(rect) {  
   currentGlassId.value = rect.glassId;  
   currenttemperingFeedSequence.value = rect.temperingFeedSequence;  
@@ -214,12 +236,13 @@
 <div v-if="dialogFormVisible" >
     <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;height: 600px;" v-loading="loading">
 <div style="width: 49%;float: left;background-color: #f4f4f5;height: 550px;">
-    <div v-if="adjustedRects.length > 0">
-      <div style="text-align: center;">鐐夊彿锛歿{ adjustedRects[0].engineerId }}-{{ adjustedRects[0].temperingLayoutId }}</div>  
+    <div v-if="adjustedRects1.length > 0">
+      <!-- <div style="text-align: center;">鐐夊彿锛歿{ engineerIdDisplay }}-{{ adjustedRects[0].temperingLayoutId }}</div>   -->
+    <div style="text-align: center;"> 鐐夊彿锛歿{ adjustedRects1[0].engineerId }}-{{ adjustedRects1[0].temperingLayoutId }} </div>
     <el-scrollbar height="550px" style="background-color: #e9e9eb;">
     <div  style="position: relative;max-width: 1400px;">  
       <div  
-      v-for="(rect, index) in adjustedRects"
+      v-for="(rect, index) in adjustedRects1"
       :key="index"  
       @click="showDialog(rect)"  
       class="rect"
@@ -242,12 +265,13 @@
   </div>
 <div style="width: 49%;float: right;background-color: #f4f4f5;height: 550px;">
     <div v-if="adjustedRects2.length > 0">
-      <div style="text-align: center;">鐐夊彿锛歿{ adjustedRects[0].engineerId }}-{{ adjustedRects[0].temperingLayoutId }}</div>  
+    <div style="text-align: center;"> 鐐夊彿锛歿{ adjustedRects2[0].engineerId }}-{{ adjustedRects2[0].temperingLayoutId }} </div>
+    <!-- <div style="text-align: center;">鐐夊彿锛歿{ engineerIdDisplay2 }}-{{ adjustedRects[0].temperingLayoutId }}</div>   -->
     <el-scrollbar height="550px" style="background-color: #e9e9eb;">
     <div  style="position: relative;max-width: 1400px;">  
       <div  
       v-for="(rect, index) in adjustedRects2"
-      :key="index"  
+      :key="index"
       @click="showDialog(rect)"  
       class="rect"
       :style="{ position: 'absolute', 
@@ -273,7 +297,8 @@
   <!-- 杩涚倝鍓� -->
   <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;height: 600px;" v-loading="loading">
     <div v-if="adjustedRectsa.length > 0">
-      <div style="text-align: center;">鐐夊彿锛歿{ adjustedRects[0].engineerId }}-{{ adjustedRects[0].temperingLayoutId }}</div>  
+    <div style="text-align: center;"> 鐐夊彿锛歿{ adjustedRectsa[0].engineerId }}-{{ adjustedRectsa[0].temperingLayoutId }} </div>
+    <!-- <div style="text-align: center;">鐐夊彿锛歿{ engineerIdDisplaya }}-{{ adjustedRects[0].temperingLayoutId }}</div>   -->
       <el-scrollbar height="550px" style="background-color: #e9e9eb;">
     <div  style="position: relative;max-width: 1400px;">  
       <div  
@@ -299,7 +324,8 @@
   <!-- 宸插嚭鐐� -->
   <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;height: 600px;" v-loading="loading">
       <div v-if="adjustedRectsb.length > 0">
-      <div style="text-align: center;">鐐夊彿锛歿{ adjustedRects[0].engineerId }}-{{ adjustedRects[0].temperingLayoutId }}</div>  
+    <div style="text-align: center;"> 鐐夊彿锛歿{ adjustedRectsb[0].engineerId }}-{{ adjustedRectsb[0].temperingLayoutId }} </div>
+    <!-- <div style="text-align: center;">鐐夊彿锛歿{ engineerIdDisplayb }}-{{ adjustedRects[0].temperingLayoutId }}</div>   -->
       <el-scrollbar height="550px" style="background-color: #e9e9eb;">
     <div  style="position: relative;max-width: 1400px;">  
       <div  
diff --git a/UI-Project/src/views/Returns/returns.vue b/UI-Project/src/views/Returns/returns.vue
index 85ae736..26b1c91 100644
--- a/UI-Project/src/views/Returns/returns.vue
+++ b/UI-Project/src/views/Returns/returns.vue
@@ -594,11 +594,11 @@
     console.error('WebSocket杩炴帴寮傚父鍏抽棴');  
   }  
 };  
-  
 // 鐩戝惉WebSocket鐨勬秷鎭簨浠�  
 ws.onmessage = (event) => {  
   try {  
-    const data = JSON.parse(event.data); // 瑙f瀽娑堟伅涓篔SON  
+    
+    const data = JSON.parse(event.data.replace('<END>', '')); // 瑙f瀽娑堟伅涓篔SON  
   
     if (data && Array.isArray(data.InkageStatus) && data.InkageStatus.length > 0) {  
 if(data.InkageStatus!=null){
@@ -610,10 +610,10 @@
 }
     } else {  
       // 澶勭悊閿欒鎯呭喌鎴栨棤鏁堟暟鎹�  
-      console.error('鎺ユ敹鍒扮殑鏁版嵁鏃犳晥', data);  
+      // console.error('鎺ユ敹鍒扮殑鏁版嵁鏃犳晥', data);  
     }  
   } catch (error) {  
-    console.error('瑙f瀽WebSocket娑堟伅鏃跺彂鐢熼敊璇�', error);  
+    // console.error('瑙f瀽WebSocket娑堟伅鏃跺彂鐢熼敊璇�', error);  
   }  
 };  
 const confirmCutting = async () => {  
diff --git a/UI-Project/src/views/StockBasicData/stockBasicData.vue b/UI-Project/src/views/StockBasicData/stockBasicData.vue
index d20f65a..8b0da31 100644
--- a/UI-Project/src/views/StockBasicData/stockBasicData.vue
+++ b/UI-Project/src/views/StockBasicData/stockBasicData.vue
@@ -50,7 +50,9 @@
       // 鐢ㄦ埛鐐瑰嚮浜嗏�滄槸鈥濓紝鐜板湪璋冪敤鍒犻櫎鎺ュ彛  
       const response = await request.post("/cacheGlass/edgStorageCage/edgReportStatus", {
         glassId: row.GlassId,
-        controlsId: 300
+        controlsId: 300,
+        line: 2001,
+        machine: '鍐峰姞宸�',
     })
     if (response.code === 200) {
       ElMessage.success(response.message);
@@ -81,7 +83,9 @@
       // 鐢ㄦ埛鐐瑰嚮浜嗏�滄槸鈥濓紝鐜板湪璋冪敤鍒犻櫎鎺ュ彛  
       const response = await request.post("/cacheGlass/edgStorageCage/edgReportStatus", {
         glassId: row.GlassId,
-        controlsId: 301
+        controlsId: 301,
+        line: 2001,
+        machine: '鍐峰姞宸�',
     })
     if (response.code === 200) {
       ElMessage.success(response.message);
diff --git a/UI-Project/src/views/StockBasicData/stockBasicDatatwo.vue b/UI-Project/src/views/StockBasicData/stockBasicDatatwo.vue
index 583b2ba..8775761 100644
--- a/UI-Project/src/views/StockBasicData/stockBasicDatatwo.vue
+++ b/UI-Project/src/views/StockBasicData/stockBasicDatatwo.vue
@@ -50,7 +50,9 @@
       // 鐢ㄦ埛鐐瑰嚮浜嗏�滄槸鈥濓紝鐜板湪璋冪敤鍒犻櫎鎺ュ彛  
       const response = await request.post("/cacheGlass/edgStorageCage/edgReportStatus", {
         glassId: row.GlassId,
-        controlsId: 300
+        controlsId: 300,
+        line: 2002,
+        machine: '鍐峰姞宸�',
     })
     if (response.code === 200) {
       ElMessage.success(response.message);
@@ -81,7 +83,9 @@
       // 鐢ㄦ埛鐐瑰嚮浜嗏�滄槸鈥濓紝鐜板湪璋冪敤鍒犻櫎鎺ュ彛  
       const response = await request.post("/cacheGlass/edgStorageCage/edgReportStatus", {
         glassId: row.GlassId,
-        controlsId: 301
+        controlsId: 301,
+        line: 2002,
+        machine: '鍐峰姞宸�',
     })
     if (response.code === 200) {
       ElMessage.success(response.message);
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 fe5c038..5a0bd8a 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
@@ -35,19 +35,22 @@
 
     /**
      * 鍗у紡鐞嗙墖绗艰鎯呰〃鐜荤拑鐘舵��
-     * 璇嗗埆鍚庢垚鍔熺姸鎬�100
+     * 璇嗗埆鍚庢垚鍔熺姸鎬�0
+     * 璇嗗埆鍚庢垚鍔熻繘绗肩殑鐘舵��100
      * 鍑虹墖浠诲姟101
      * 浜哄伐涓嬬墖102
      * 鍑虹墖涓�103
      * 鎷胯蛋200
      * 鐮存崯201
      */
+    public static final Integer GLASS_STATE_NEW = 0;
     public static final Integer GLASS_STATE_IN = 100;
     public static final Integer GLASS_STATE_OUT = 101;
     public static final Integer GLASS_STATE_ARTIFICIAL = 102;
     public static final Integer GLASS_STATE_OUT_ING = 103;
     public static final Integer GLASS_STATE_TAKE = 200;
     public static final Integer GLASS_STATE_DAMAGE = 201;
+    public static final List<Integer> GLASS_STATE_IN_ALL = Arrays.asList(100, 102, 103);
 
     /**
      * 鍗у紡鐞嗙墖绗艰鎯呰〃鐜荤拑鐘舵��
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 a7da6ff..d06778e 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
@@ -32,10 +32,14 @@
         QueryWrapper<TemperingGlassInfo> wrapper = new QueryWrapper<>();
         wrapper.select("Top 1 *").eq("state",1);
         TemperingGlassInfo glass=temperingMapper.selectOne(wrapper);
-        QueryWrapper<TemperingGlassInfo> glassinfo = new QueryWrapper<>();
-        glassinfo.eq("engineer_id",glass.getEngineerId())
-                .eq("tempering_layout_id", glass.getTemperingLayoutId());
-        return temperingMapper.selectList(glassinfo);
+        if(glass!=null) {
+            QueryWrapper<TemperingGlassInfo> glassinfo = new QueryWrapper<>();
+            glassinfo.eq("engineer_id", glass.getEngineerId())
+                    .eq("tempering_layout_id", glass.getTemperingLayoutId());
+            return temperingMapper.selectList(glassinfo);
+        }else {
+            return null;
+        }
     }
 
     @Override
@@ -55,11 +59,14 @@
         wrap.select("Top 1 *").eq("state",3);
         TemperingGlassInfo glass=temperingMapper.selectOne(wrap);
         //鏍规嵁宸ョ▼鍙峰拰鐗堝浘鑾峰彇鏁版嵁
-        QueryWrapper<TemperingGlassInfo> wapper = new QueryWrapper<>();
-        wapper.eq("engineer_id",glass.getEngineerId())
-                .eq("tempering_layout_id", glass.getTemperingLayoutId())
-                .orderByAsc("tempering_layout_id","tempering_feed_sequence");
-        return temperingMapper.selectList(wapper);
+        if(glass != null) {
+            QueryWrapper<TemperingGlassInfo> wapper = new QueryWrapper<>();
+            wapper.eq("engineer_id", glass.getEngineerId())
+                    .eq("tempering_layout_id", glass.getTemperingLayoutId())
+                    .orderByAsc("tempering_layout_id", "tempering_feed_sequence");
+            return temperingMapper.selectList(wapper);
+        }
+            return  null;
     }
 
     @Override
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 01b49c4..8de5698 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
@@ -388,6 +388,7 @@
     public List<Map<String, Object>> selectTemperingGlass(){
         QueryWrapper<BigStorageCageDetails> wrapper = new QueryWrapper<>();
         wrapper.select("engineer_id,tempering_layout_id,count(*) as count")
+                .in("state",Const.GLASS_STATE_IN,Const.GLASS_STATE_ARTIFICIAL)
                 .groupBy("engineer_id,tempering_layout_id");
         List<Map<String, Object>> TemperingGlass = baseMapper.selectMaps(wrapper);
         return TemperingGlass;
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
index 1254d27..6952bac 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
@@ -294,7 +294,8 @@
                         .innerJoin(BigStorageCageDetails.class, BigStorageCageDetails::getGlassId, GlassInfo::getGlassId)
                         .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)
                         .eq(GlassInfo::getTemperingLayoutId, item.getTemperingLayoutId())
-                        .eq(GlassInfo::getEngineerId, item.getEngineerId()));
+                        .eq(GlassInfo::getEngineerId, item.getEngineerId())
+                        .orderBy(Boolean.TRUE, sequenceOrder, GlassInfo::getTemperingFeedSequence));
                 if (CollectionUtils.isNotEmpty(temperingGlassInfos)) {
                     temperingGlassInfoService.saveBatch(temperingGlassInfos);
                     computeOutGlassInfo(temperingGlassInfoList, Boolean.TRUE, mesToPLCAddress);
@@ -338,6 +339,37 @@
     }
 
     @Scheduled(fixedDelay = 300)
+    public void updateInGlassStateTask() {
+        Date startDate = new Date();
+        log.info("1銆佸ぇ鐞嗙墖绗艰繘鐗囧畬鎴愬悗鏇存柊澶х悊鐗囩鏁版嵁浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate);
+        //鍥犱负澶х悊鐗囩鍜屽嚭鐗囦换鍔℃槸涓や釜搴撶殑鏁版嵁锛屾墍浠ヨ鍒嗗紑鏌ユ壘
+        List<Object> list = bigStorageCageDetailsService.listObjs(new LambdaQueryWrapper<BigStorageCageDetails>()
+                .select(BigStorageCageDetails::getGlassId).eq(BigStorageCageDetails::getState, Const.GLASS_STATE_NEW));
+        if (CollectionUtils.isNotEmpty(list)) {
+            log.info("2銆佽幏鍙栨墍鏈夋鍦ㄨ繘鐗囩殑鐜荤拑淇℃伅id:{}", list);
+            List<String> glassIds = list.stream().map(String::valueOf).collect(Collectors.toList());
+            List<Object> inSuccessGlassIdsObj = bigStorageCageFeedTaskService.listObjs(new LambdaQueryWrapper<BigStorageCageFeedTask>()
+                    .select(BigStorageCageFeedTask::getGlassId).in(BigStorageCageFeedTask::getGlassId, glassIds)
+                    .in(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT));
+            List<String> inSuccessGlassIds = inSuccessGlassIdsObj.stream().map(String::valueOf).collect(Collectors.toList());
+            if (CollectionUtils.isNotEmpty(inSuccessGlassIds)) {
+                log.info("3銆佽幏鍙栬繘鐗囧凡瀹屾垚鐨勭幓鐠冧俊鎭痠d:{}", inSuccessGlassIds);
+                bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>()
+                        .set(BigStorageCageDetails::getState, Const.GLASS_STATE_IN).in(BigStorageCageDetails::getGlassId, inSuccessGlassIds));
+                log.info("4銆佸ぇ鐞嗙墖绗艰繘鐗囩姸鎬佸凡瀹屾垚宸插畬鎴愮殑鐜荤拑淇℃伅id:{}", inSuccessGlassIds);
+                //鏇存柊鐞嗙墖绗肩幓鐠冨昂瀵�
+                updateSlotRemain(inSuccessGlassIds, Boolean.TRUE);
+                log.info("5銆佸ぇ鐞嗙墖绗艰繘鐗囩洰鏍囨牸瀛愬昂瀵告洿鏂板畬鎴�");
+            }
+
+        }
+        Date endDate = new Date();
+        log.info("end:澶х悊鐗囩杩涚墖瀹屾垚鍚庢洿鏂板ぇ鐞嗙墖绗兼暟鎹换鍔$粨鏉熸椂闂达細{}锛屽叡鑰楁椂锛歿}ms,缁撴潫浠诲姟", endDate, endDate.getTime() - startDate.getTime());
+        return;
+
+    }
+
+    @Scheduled(fixedDelay = 300)
     public void updateOutGlassStateTask() {
         Date startDate = new Date();
         log.info("1銆佸ぇ鐞嗙墖绗煎嚭鐗囧畬鎴愬悗鏇存柊澶х悊鐗囩鏁版嵁浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate);
@@ -355,6 +387,9 @@
                 bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>()
                         .set(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT).in(BigStorageCageDetails::getGlassId, outSuccessGlassIds));
                 log.info("4銆佸ぇ鐞嗙墖绗煎嚭鐗囩姸鎬佸凡瀹屾垚宸插畬鎴愮殑鐜荤拑淇℃伅id:{}", outSuccessGlassIdsObj);
+                //鏇存柊鐞嗙墖绗肩幓鐠冨昂瀵�
+                updateSlotRemain(outSuccessGlassIds, Boolean.FALSE);
+                log.info("5銆佸ぇ鐞嗙墖绗艰繘鐗囩洰鏍囨牸瀛愬昂瀵告洿鏂板畬鎴�");
             }
         }
         Date endDate = new Date();
@@ -561,17 +596,16 @@
             BeanUtils.copyProperties(info, cageDetails);
             //2銆佽幏鍙栫洰鏍囨牸瀛愪俊鎭�
             BigStorageDTO bigStorageDTO = bigStorageCageDetailsService.queryTargetSlotByTempering(info);
-            //3銆佹洿鏂板ぇ鐞嗙墖绗艰〃鍓╀綑瀹藉害
-            bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>().set(BigStorageCage::getRemainWidth, bigStorageDTO.getWidth() - info.getWidth() - glassGap)
-                    .eq(BigStorageCage::getSlot, bigStorageDTO.getSlot()));
+            //3銆佹洿鏂板ぇ鐞嗙墖绗艰〃鍓╀綑瀹藉害锛堟洿鏂板ぇ鐞嗙墖绗煎墿浣欏昂瀵哥Щ鍒拌繘绗煎畬鎴愬悗鎵ц锛�
+//            bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>().set(BigStorageCage::getRemainWidth, bigStorageDTO.getWidth() - info.getWidth() - glassGap)
+//                    .eq(BigStorageCage::getSlot, bigStorageDTO.getSlot()));
             //4銆佹洿鏂拌繘鐗囦换鍔¤〃锛岀洰鏍囨牸瀛愬強鐘舵�侊紙鐘舵�佹敼涓�2 鐢垫皵鎵埌鑷澶勭悊锛�  閬囧埌闂锛氭棤娉曟壒閲忔洿鏂帮紝鎵归噺鏇存柊鏃犳硶璧版寚瀹氫粠搴�
             e.setTargetSlot(bigStorageDTO.getSlot());
-//            e.setTaskType(Const.BIG_STORAGE_IN_RUN);
             bigStorageCageFeedTaskService.updateById(e);
 
             //5銆佸皢杩涚墖淇℃伅瀛樺叆澶х悊鐗囩璇︽儏琛�
             cageDetails.setSlot(bigStorageDTO.getSlot());
-            cageDetails.setState(Const.GLASS_STATE_IN);
+            cageDetails.setState(Const.GLASS_STATE_NEW);
             cageDetails.setDeviceId(bigStorageDTO.getDeviceId());
             cageDetails.setGap(glassGap);
             bigStorageCageDetailsService.save(cageDetails);
@@ -635,8 +669,8 @@
         bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>()
                 .set(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT_ING)
                 .in(BigStorageCageDetails::getGlassId, glassIds));
-        //鏇存柊绗煎瓙鍐呮牸瀛愮殑鍓╀綑灏哄
-        updateSlotRemain(list, glassIds);
+        //鏇存柊绗煎瓙鍐呮牸瀛愮殑鍓╀綑灏哄(绉昏嚦鍑虹墖浠诲姟瀹屾垚鍚�)
+//        updateSlotRemain(list, glassIds);
 
         int returnData = 0;
         int count = 1;
@@ -651,29 +685,44 @@
     /**
      * 鏇存柊绗煎瓙鍐呮牸瀛愮殑鍓╀綑灏哄
      *
-     * @param list         绗煎唴鍙互鍑虹鐨勭幓鐠冧俊鎭�
      * @param taskGlassIds 鏈浠诲姟鍑哄幓鐨勭幓鐠僫ds
-     * @param <T>
+     * @param flag         鏄惁杩涘嚭鐗� true 杩涚墖  false 鍑虹墖
      */
-    public <T extends BigStorageCageBaseInfo> void updateSlotRemain(List<T> list, List<String> taskGlassIds) {
-        //鑾峰彇闇�瑕佸嚭鍘伙紙鍖呮嫭寰呭嚭鍘荤殑锛夌殑鎵�鏈夌幓鐠冩牸瀛愬彿
-        List<Integer> slotList = list.stream().map(T::getSlot).distinct().collect(Collectors.toList());
-        //鑾峰彇寰呭嚭鍘荤殑鐜荤拑淇℃伅锛堢瓑寰呮湰娆′换鍔$粨鏉熷悗涓嬭溅鍑哄幓鐨勭幓鐠冿級
-        Map<Integer, Double> slotRemainMap = list.stream().filter(e -> !taskGlassIds.contains(e.getGlassId()))
-                .collect(Collectors.groupingBy(T::getSlot, Collectors.summingDouble(item -> item.getWidth() + glassGap)));
+    public void updateSlotRemain(List<String> taskGlassIds, Boolean flag) {
+        //鎸夌収鐜荤拑id鑾峰彇鐜荤拑淇℃伅鍙婄幓鐠冪殑鏍煎瓙鍙�
+        List<BigStorageCageDetails> glassList = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>()
+                .in(BigStorageCageDetails::getGlassId, taskGlassIds));
+        //鑾峰彇闇�瑕佸嚭鍘�/杩涚锛堝寘鎷緟鍑哄幓鐨勶級鐨勬墍鏈夌幓鐠冩牸瀛愬彿
+        List<Integer> slotList = glassList.stream().map(BigStorageCageDetails::getSlot).distinct().collect(Collectors.toList());
+        //鑾峰彇鏍煎瓙鍐呮墍鏈夌殑鐜荤拑淇℃伅
+        List<BigStorageCageDetails> inSlotGlassList = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>()
+                .in(BigStorageCageDetails::getSlot, slotList).in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL));
+        //鑾峰彇寰呰繘鐗�/鍑哄幓鐨勭幓鐠冧俊鎭�
+        Map<Integer, Double> slotRemainMap = null;
+        if (flag) {
+            slotRemainMap = inSlotGlassList.stream().filter(e -> taskGlassIds.contains(e.getGlassId()))
+                    .collect(Collectors.groupingBy(BigStorageCageDetails::getSlot, Collectors.summingDouble(item -> item.getWidth() + glassGap)));
+        } else {
+            slotRemainMap = inSlotGlassList.stream().filter(e -> !taskGlassIds.contains(e.getGlassId()))
+                    .collect(Collectors.groupingBy(BigStorageCageDetails::getSlot, Collectors.summingDouble(item -> item.getWidth() + glassGap)));
+        }
+        //鏍煎瓙鍐呮湁鐜荤拑鐨勶紝璁$畻涓猴細 鏍煎瓙鐨勫搴� - 锛堢粰瀛愬唴鐜荤拑鐨勫昂瀵�+闂磋窛锛�
         if (CollectionUtils.isNotEmpty(slotRemainMap)) {
-            //鎸夌収鏍煎瓙鍙锋洿鏂板墿浣欏昂瀵�
             slotRemainMap.forEach((e, v) -> {
                 bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>().set(BigStorageCage::getRemainWidth, slotWidth - v)
                         .eq(BigStorageCage::getSlot, e));
             });
         }
-        Set<Integer> remainSlotList = slotRemainMap.keySet();
-        slotList.removeAll(remainSlotList);
-        if (CollectionUtils.isNotEmpty(slotList)) {
-            bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>().set(BigStorageCage::getRemainWidth, slotWidth)
-                    .in(BigStorageCage::getSlot, slotList));
+        //鍙洿鏂拌繘绗煎畬鎴愮殑鐘舵�侊紝濡傛灉杩涚瀹屾垚锛屾牸瀛愬唴蹇呭畾鏈夌幓鐠冿紝涓嶅瓨鍦ㄥ嚭鐗囧悗鏍煎瓙鍐呮病鏈夌幓鐠冪殑鎯呭喌锛屾墍鏈夋牸瀛愬昂瀵搁噸缃紝鍙兘瀛樺湪浜庡嚭鐗囦换鍔�
+        if (!flag) {
+            Set<Integer> remainSlotList = slotRemainMap.keySet();
+            slotList.removeAll(remainSlotList);
+            if (CollectionUtils.isNotEmpty(slotList)) {
+                bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>().set(BigStorageCage::getRemainWidth, slotWidth)
+                        .in(BigStorageCage::getSlot, slotList));
+            }
         }
+
     }
 
     public Boolean computeIsRun(int line, String glassId) {
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 8c66de2..5e73260 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
@@ -47,12 +47,12 @@
     public void plcLoadGlassTask() throws InterruptedException {
         try {
             //鑾峰彇鑱旀満鐘舵��
-            String inkageStatus =plcParameterObject.getPlcParameter("MesToPlc").getValue();
+            String inkageStatus = plcParameterObject.getPlcParameter("InkageStatus").getValue();
             //鑾峰彇鏄惁鏈変笂鐗囪姹�
             String loadRequest = plcParameterObject.getPlcParameter("loadRequest").getValue();
             //mes鐘舵��
             String mesToPlc = plcParameterObject.getPlcParameter("MesToPlc").getValue();
-            if("1".equals(inkageStatus)&&"1".equals(loadRequest)) {
+            if ("1".equals(inkageStatus) && "1".equals(loadRequest)) {
                 //鍒ゆ柇寮�濮嬩笂鐗囩殑宸ョ▼鍙�
                 Engineering engineering = engineeringService.selectInitiate(1);
                 if (engineering != null) {
@@ -65,10 +65,10 @@
                         int workId = upwork.getWorkstationId();//宸ヤ綅id
                         double width = upwork.getPatternWidth();//瀹藉害
                         double height = upwork.getPatternHeight();//楂樺害
-                        S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("WorkId").getAddress(), workId);
-                        S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("GlassWidth").getAddress(), (long) width);
-                        S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("GlassHeight").getAddress(), (long) height);
-                        S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlc").getAddress(), 1);
+                        S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("WorkId").getAddress(), workId);
+                        S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("GlassWidth").getAddress(), (int) width);
+                        S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("GlassHeight").getAddress(), (int) height);
+                        S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("MesToPlc").getAddress(), 1);
                         //鏇存敼涓婄墖琛ㄧ姸鎬�
                         upPattenUsageService.updateUpPattenUsageState(upPattenUsage, workId);
 
@@ -78,7 +78,7 @@
             }
             if ("1".equals(mesToPlc) && "0".equals(loadRequest)) {
                 //璇锋眰瀛椾负闆舵椂锛屼换鍔″瓧娓呴浂
-                S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlc").getAddress(), 0);
+                S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("MesToPlc").getAddress(), 0);
             }
             //鎵ц鍚庝紤鐪�300姣
             //Thread.sleep(300);
@@ -88,7 +88,7 @@
     }
 
     @Scheduled(fixedDelay = 300)
-    public void plcLoadGlassReport(){
+    public void plcLoadGlassReport() {
         //鑾峰彇鏄惁鏈夋眹鎶�
         String loadStatus = plcParameterObject.getPlcParameter("PlcStatus").getValue();
         if (loadStatus != null) {
@@ -109,18 +109,21 @@
                     overTask(loadStatus, 0);
                     break;
                 case "0":
-                    S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(), 0);
+                    S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(), 0);
                     break;
             }
         }
     }
 
     @Scheduled(fixedDelay = 1000)
-    public void loadGlassHome(){
+    public void loadGlassHome() {
         JSONObject jsonObject = new JSONObject();
         //姝e湪杩涜鐨勪换鍔�
         List<UpPattenUsage> upPattenUsages = upPattenUsageService.prioritylist();
-        jsonObject.append("prioritylist", upPattenUsages);
+        if(upPattenUsages!=null){
+            jsonObject.append("prioritylist", upPattenUsages);
+        }
+
         //宸ヤ綅淇℃伅
         List<UpWorkstation> upWorkstations = upWorkstationService.list();
         jsonObject.append("list", upWorkstations);
@@ -140,12 +143,13 @@
             }
         }
     }
+
     @Scheduled(fixedDelay = 5000)
-    public void loadGlassStatus(){
+    public void loadGlassStatus() {
         JSONObject jsonObject = new JSONObject();
         //姝e湪杩涜鐨勪换鍔�
-        String inkageStatus =plcParameterObject.getPlcParameter("MesToPlc").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) {
@@ -159,7 +163,7 @@
         }
     }
 
-    public void overTask(String loadStatus, int state)  {
+    public void overTask(String loadStatus, int state) {
 
         UpPattenUsage upPattenUsage = upPattenUsageService.selectOverTask();
         if (upPattenUsage != null) {
@@ -169,11 +173,11 @@
             //瀹屾垚涓婄墖琛ㄧ姸鎬�
             upPattenUsageService.updateUpPattenUsageState(upPattenUsage, state);
             //鍒ゆ柇鏄惁鏄渶鍚庝竴鍧楃幓鐠�
-            UpPattenUsage sequence=upPattenUsageService.selectSequence(upPattenUsage);
+            UpPattenUsage sequence = upPattenUsageService.selectSequence(upPattenUsage);
             //濡傛灉鏄渶鍚庝竴鍧楁椂瀹屾垚宸ョ▼浠诲姟
-            optimizeProjectService.overTask(sequence,300);
+            optimizeProjectService.overTask(sequence, 300);
         }
-        S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(), 1);
+        S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(), 1);
     }
 
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java
index f7e63e5..e0a91f0 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java
@@ -30,7 +30,10 @@
         JSONObject jsonObject = new JSONObject();
         //姝e湪绛夊緟杩涚墖鐨勭幓鐠�
         List<TemperingGlassInfo> waitingGlass = temperingAgoService.selectWaitingGlass();
-        jsonObject.append("waitingGlass", waitingGlass);
+        if(waitingGlass!=null){
+            jsonObject.append("waitingGlass", waitingGlass);
+        }
+
         //鑾峰彇鏁村湪鐐変腑鐨勪袱涓増鍥緄d
         List<TemperingGlassInfo> layoutId = temperingAgoService.selectLayoutId();
         //杩涚倝涓殑鐜荤拑
@@ -45,11 +48,16 @@
         }
         //鍑虹倝鍚庣殑鐜荤拑
         List<TemperingGlassInfo> outGlass = temperingAgoService.selectOutGlass();
-        jsonObject.append("outGlass", outGlass);
+        if(outGlass!=null){
+            jsonObject.append("outGlass", outGlass);
+        }
+
         //杩囨棆杞彴閽㈠寲鍚庣殑鐜荤拑
         List<TemperingGlassInfo> overGlass = temperingAgoService.selectOverGlass();
+        if (outGlass != null) {
+            jsonObject.append("overGlass", overGlass);
+        }
 
-        jsonObject.append("overGlass", overGlass);
 
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("temperingGlass");
         if (sendwServer != null) {
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java
index 50991e4..72b4043 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java
@@ -2,6 +2,9 @@
 
 import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.downstorage.entity.DownStorageCageDetails;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -14,5 +17,5 @@
 
 public interface DownStorageCageDetailsMapper extends MPJBaseMapper<DownStorageCageDetails> {
 
-    DownStorageCageDetails getGlassInfoMaxCount();
+    DownStorageCageDetails getGlassInfoMaxCount(@Param(value = "workList") List<Integer> workList);
 }
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 a5a3a3c..54966ee 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,7 +71,7 @@
      */
     boolean DirectConnection(GlassInfo glassInfo);
 
-    String getGlassInfoMaxCount(String glassId);
+    String getGlassInfoMaxCount(String glassId, List<Integer> workList);
 
     /**
      * @param glassId
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java
index 027a0a0..0ea5be2 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java
@@ -193,8 +193,8 @@
     }
 
     @Override
-    public String getGlassInfoMaxCount(String glassId) {
-        DownStorageCageDetails glassInfoMaxCount = baseMapper.getGlassInfoMaxCount();
+    public String getGlassInfoMaxCount(String glassId, List<Integer> workList) {
+        DownStorageCageDetails glassInfoMaxCount = baseMapper.getGlassInfoMaxCount(workList);
         return null == glassInfoMaxCount ? glassId : glassInfoMaxCount.getGlassId();
     }
 
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 13d4b6e..841570f 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
@@ -303,6 +303,8 @@
                 workList.addAll(Const.G06_WORK_STATION);
             }
         }
+        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();
         Boolean isEmptyShelf = Boolean.FALSE;
         //瀵圭鍐呯幓鐠冭繘琛岃繃婊わ紝浠呭嚭绗﹀悎閫昏緫鐨勭幓鐠�
@@ -329,8 +331,7 @@
                 } else {
                     log.info("瀛樺湪鏈粦瀹氭祦绋嬪崱鏋跺瓙锛岀洿鎺ヨ幏鍙栫鍐呮墍鏈夌幓鐠�,涓旀湭缁戝畾鏋跺瓙鐨勭幓鐠冧俊鎭�");
                     //鑾峰彇绂佺敤鏋跺瓙鐨勬祦绋嬪彿锛屽皢绗煎唴缁戝畾鏋跺瓙涓旀灦瀛愯绂佺敤鐨勬祦绋嬪崱淇℃伅
-                    List<Integer> workStationAll = Arrays.asList(1, 2, 3, 4, 5, 6);
-                    List<Integer> offWorkStationList = workStationAll.stream().filter(e -> !workList.contains(e)).collect(Collectors.toList());
+
                     List<DownWorkstation> downWorkstationOffList = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>()
                             .and(i -> i.in(DownWorkstation::getWorkstationId, offWorkStationList).or().eq(DownWorkstation::getEnableState, Const.SLOT_OFF)));
                     //鑾峰彇琚鐢ㄧ殑娴佺▼鍗′俊鎭�
@@ -369,13 +370,14 @@
             }
         }
         loop:
-        if (tempGlassId == null) {
+        if (StringUtils.isBlank(tempGlassId)) {
             //鑾峰彇姝e湪钀芥灦鐨勭粦瀹氭祦绋嬪崱鐨勪俊鎭�(娴佺▼鍗°�佸眰鏁般�佽惤鏋舵暟閲�)
             List<DownGlassInfoDTO> downGlassInfoDTOList = downGlassInfoService.queryWorkStationIsIn(Boolean.TRUE);
             List<String> downGlassFlowList = downGlassInfoDTOList.stream().map(item -> item.getFlowCardId() + ":" + item.getLayer()).collect(Collectors.toList());
             if (CollectionUtils.isEmpty(downGlassFlowList)) {
                 //鏋跺瓙閮芥湭缁戝畾娴佺▼鍗★紝鍑虹鍐呭瓙鏁伴噺鏈�澶氬昂瀵告渶澶х殑鐜荤拑id,鏃�  鍒欒繑鍥炴壂鎻忔壂鍒扮殑鐜荤拑id杩涜鍑虹墖
-                tempGlassId = downStorageCageDetailsService.getGlassInfoMaxCount(glassId);
+                tempGlassId = downStorageCageDetailsService.getGlassInfoMaxCount(glassId, offWorkStationList);
+
                 isBind = Boolean.TRUE;
                 break loop;
             }
@@ -388,7 +390,7 @@
 //                        .isNull(DownWorkstation::getFlowCardId));
                 if (isEmptyShelf) {
                     //鏋跺瓙閮芥湭缁戝畾娴佺▼鍗★紝鍑虹鍐呭瓙鏁伴噺鏈�澶氬昂瀵告渶澶х殑鐜荤拑id,鏃�  鍒欒繑鍥炴壂鎻忔壂鍒扮殑鐜荤拑id杩涜鍑虹墖
-                    tempGlassId = downStorageCageDetailsService.getGlassInfoMaxCount(glassId);
+                    tempGlassId = downStorageCageDetailsService.getGlassInfoMaxCount(glassId, offWorkStationList);
                     isBind = Boolean.TRUE;
                     break loop;
                 }
@@ -436,7 +438,7 @@
 
             Map<String, List<DownStorageCageDetails>> singleLayerMap = list.stream().filter(item -> item.getTotalLayer() == 1)
                     .collect(Collectors.groupingBy(item -> item.getFlowCardId() + item.getLayer(), Collectors.toList()));
-            if (tempGlassId == null) {
+            if (StringUtils.isBlank(tempGlassId)) {
                 if (CollectionUtils.isNotEmpty(singleLayerMap)) {
                     //鑾峰彇宸茶惤鏋舵祦绋嬪崱淇℃伅锛屾寜钀芥灦鏁伴噺鎺掑簭
                     for (DownGlassInfoDTO e : downGlassInfoDTOList) {
@@ -450,49 +452,29 @@
                 }
             }
         }
-        if (tempGlassId == null) {
+        if (StringUtils.isBlank(tempGlassId)) {
             log.info("娌℃湁鎵惧埌鍙互涓嬬墖鐨勭殑鐜荤拑锛岀粨鏉熶换鍔�");
             return Boolean.FALSE;
         } else {
             //鎸夌収鍑虹墖鐨勭幓鐠僫d鏇存柊绗煎唴鐨勭幓鐠冪姸鎬佷负宸插嚭鐗�
-            return generateDownGlassOutTask(tempGlassId, Const.GLASS_CACHE_TYPE_OUT, isBind, cageDetails);
+            return generateDownGlassOutTask(tempGlassId, Const.GLASS_CACHE_TYPE_OUT, isBind, cageDetails, workList);
         }
     }
 
     public Boolean generateDownGlassOutTask(String glassId, Integer taskType, Boolean
-            isBind, DownStorageCageDetails cageDetails) {
+            isBind, DownStorageCageDetails cageDetails, List<Integer> workList) {
         //鎸夌幓鐠僫d鑾峰彇鐜荤拑淇℃伅
         DownStorageCageDetails downStorageCageDetails = null;
         if (glassId.equals(cageDetails.getGlassId())) {
             downStorageCageDetails = cageDetails;
             taskType = 3;
+            //灏嗕笅鐗囩幓鐠冨瓨鍏ョ瀛愯鎯呬俊鎭〃涓�
+            //灏嗕换鍔℃彃鍏ョ悊鐗囩璇︽儏琛�
+            downStorageCageDetails.setState(Const.GLASS_STATE_OUT);
+            downStorageCageDetailsService.save(downStorageCageDetails);
         } else {
             downStorageCageDetails = downStorageCageDetailsService.getOne(new LambdaQueryWrapper<DownStorageCageDetails>()
                     .eq(DownStorageCageDetails::getGlassId, glassId).eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN));
-        }
-
-        Integer endCell = null;
-        if (isBind) {
-            //鑾峰彇绌烘灦瀛愪俊鎭紝灏嗙┖鏋跺瓙淇℃伅缁戝畾娴佺▼鍗�
-            DownWorkstation emptyDownWorkstation = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>()
-                    .isNull(DownWorkstation::getFlowCardId).orderByDesc(DownWorkstation::getWorkstationId).last("limit 1"));
-            if (null != emptyDownWorkstation) {
-                log.info("鑾峰彇鍒扮┖鏋跺瓙淇℃伅锛岀粦瀹氭祦绋嬪崱");
-                downWorkstationService.updateFlowCardIdAndCount(downStorageCageDetails.getFlowCardId(), emptyDownWorkstation.getWorkstationId(), downStorageCageDetails.getLayer());
-                endCell = emptyDownWorkstation.getWorkstationId();
-                //灏嗕笅鐗囩幓鐠冨瓨鍏ョ瀛愯鎯呬俊鎭〃涓�
-                //灏嗕换鍔℃彃鍏ョ悊鐗囩璇︽儏琛�
-                downStorageCageDetails.setState(Const.GLASS_STATE_OUT);
-                downStorageCageDetailsService.save(downStorageCageDetails);
-            } else {
-                log.info("娌℃湁绌烘灦瀛愪俊鎭紝鏃犳硶缁戝畾娴佺▼鍗�");
-                return Boolean.FALSE;
-            }
-        } else {
-            DownWorkstation workstation = downWorkstationService.getOne(new LambdaUpdateWrapper<DownWorkstation>()
-                    .eq(DownWorkstation::getFlowCardId, downStorageCageDetails.getFlowCardId()).eq(DownWorkstation::getLayer, downStorageCageDetails.getLayer()));
-            endCell = workstation.getWorkstationId();
-
             if (downStorageCageDetailsService.update(new LambdaUpdateWrapper<DownStorageCageDetails>()
                     .set(DownStorageCageDetails::getState, Const.GLASS_STATE_OUT).eq(DownStorageCageDetails::getGlassId, glassId))) {
                 log.info("鏇存柊璇︽儏琛ㄥ唴鐨勭姸鎬佹垚鍔�");
@@ -502,6 +484,25 @@
                 return Boolean.FALSE;
             }
         }
+
+        Integer endCell = null;
+        if (isBind) {
+            //鑾峰彇绌烘灦瀛愪俊鎭紝灏嗙┖鏋跺瓙淇℃伅缁戝畾娴佺▼鍗�
+            DownWorkstation emptyDownWorkstation = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>()
+                    .isNull(DownWorkstation::getFlowCardId).in(DownWorkstation::getWorkstationId, workList).orderByDesc(DownWorkstation::getWorkstationId).last("limit 1"));
+            if (null != emptyDownWorkstation) {
+                log.info("鑾峰彇鍒扮┖鏋跺瓙淇℃伅锛岀粦瀹氭祦绋嬪崱");
+                downWorkstationService.updateFlowCardIdAndCount(downStorageCageDetails.getFlowCardId(), emptyDownWorkstation.getWorkstationId(), downStorageCageDetails.getLayer());
+                endCell = emptyDownWorkstation.getWorkstationId();
+            } else {
+                log.info("娌℃湁绌烘灦瀛愪俊鎭紝鏃犳硶缁戝畾娴佺▼鍗�");
+                return Boolean.FALSE;
+            }
+        } else {
+            DownWorkstation workstation = downWorkstationService.getOne(new LambdaUpdateWrapper<DownWorkstation>()
+                    .eq(DownWorkstation::getFlowCardId, downStorageCageDetails.getFlowCardId()).eq(DownWorkstation::getLayer, downStorageCageDetails.getLayer()));
+            endCell = workstation.getWorkstationId();
+        }
         //鏇存柊钀芥灦鐜荤拑鏁伴噺
         if (endCell == 7) {
             downWorkstationService.update(new UpdateWrapper<DownWorkstation>().eq("flow_card_id", downStorageCageDetails.getFlowCardId())
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownStorageCageDetailsMapper.xml b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownStorageCageDetailsMapper.xml
index c506462..ee9090e 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownStorageCageDetailsMapper.xml
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownStorageCageDetailsMapper.xml
@@ -25,16 +25,23 @@
         SELECT *
         FROM DOWN_STORAGE_CAGE_DETAILS
         WHERE (FLOW_CARD_ID, LAYER) = (SELECT FLOW_CARD_ID, LAYER
-                                       FROM DOWN_STORAGE_CAGE_DETAILS
-                                       WHERE STATE = 100
-                                       GROUP BY FLOW_CARD_ID, LAYER
-                                       ORDER BY COUNT(FLOW_CARD_ID) DESC
-            LIMIT 1 )
-          AND STATE = 100
+        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
+        <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 )
+        AND STATE = 100
         ORDER BY
-            WIDTH DESC,
-            HEIGHT DESC
-            LIMIT 1
+        WIDTH DESC,
+        HEIGHT DESC
+        LIMIT 1
     </select>
 
 

--
Gitblit v1.8.0