From a52b87449e493d4312cc81c33a4169eb6be3c144 Mon Sep 17 00:00:00 2001
From: ZengTao <2773468879@qq.com>
Date: 星期二, 01 四月 2025 09:14:19 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10105/r/YiWuProject

---
 UI-Project/src/views/GlassStorage/rawfilmstorage.vue                                                                                                     |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java                      |    7 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java                           |    8 
 UI-Project/src/views/Caching/cachingbefore.vue                                                                                                           |    2 
 UI-Project/src/views/hollow/hollowequipment.vue                                                                                                          |   17 +
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowGlassRelationInfoMapper.java                                 |   10 +
 UI-Project/src/views/Caching/cachingun.vue                                                                                                               |    2 
 UI-Project/src/views/hollow/hollowequipmenthree.vue                                                                                                      |   17 +
 UI-Project/src/views/hollow/hollowslicecage.vue                                                                                                          |    2 
 UI-Project/src/views/Returns/upreturns2.vue                                                                                                              |    2 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/opctask/entity/EdgStorageDeviceTaskHistory.java                                   |   14 +
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java                                                        |   27 ---
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/opctask/service/impl/EdgStorageDeviceTaskServiceImpl.java                         |   52 +++---
 UI-Project/src/views/hollow/hollowequipmenttwo.vue                                                                                                       |   17 +
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollowtask/service/impl/HollowBigStorageCageHistoryTaskServiceImpl.java          |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java                              |    7 
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassRelationInfoServiceImpl.java                      |   14 +
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java                                                      |   38 +++-
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/OpcLoadGlassTask.java                                                          |   10 
 UI-Project/src/views/StockBasicData/stockBasicData.vue                                                                                                   |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml                                       |   21 +-
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/service/impl/BigStorageCageHistoryTaskServiceImpl.java |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java                    |    1 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java             |    7 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/base/entity/BigStorageCageBaseInfo.java                                                       |    6 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java                |   11 +
 UI-Project/src/views/Returns/upreturns.vue                                                                                                               |    2 
 UI-Project/src/views/Slicecage/slicecage.vue                                                                                                             |    2 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java                                                          |   88 +++-------
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java                                         |   33 ++-
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java                                             |   26 ++
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java                                                 |    6 
 UI-Project/src/views/Caching/cachingunhistory.vue                                                                                                        |    8 
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/dto/FlowCardGlassInfoDTO.java                                      |    4 
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml                                            |   10 +
 35 files changed, 274 insertions(+), 205 deletions(-)

diff --git a/UI-Project/src/views/Caching/cachingbefore.vue b/UI-Project/src/views/Caching/cachingbefore.vue
index e6130a3..3ec1940 100644
--- a/UI-Project/src/views/Caching/cachingbefore.vue
+++ b/UI-Project/src/views/Caching/cachingbefore.vue
@@ -438,7 +438,7 @@
 </div>
 </div>
 <!-- 鍘嗗彶浠诲姟 -->
-<el-dialog v-model="blindb" top="5vh" width="95%">
+<el-dialog v-model="blindb" top="5vh" width="95%" @close="iframeUrl=''">
      <iframe 
      :src="iframeUrl" 
      marginwidth="2000px"
diff --git a/UI-Project/src/views/Caching/cachingun.vue b/UI-Project/src/views/Caching/cachingun.vue
index 0e3010a..3a5b1ed 100644
--- a/UI-Project/src/views/Caching/cachingun.vue
+++ b/UI-Project/src/views/Caching/cachingun.vue
@@ -415,7 +415,7 @@
 </div>
 </div>
 <!-- 鍘嗗彶浠诲姟 -->
-<el-dialog v-model="blindb" top="5vh" width="95%">
+<el-dialog v-model="blindb" top="5vh" width="95%" @close="iframeUrl=''">
      <iframe 
      :src="iframeUrl" 
      marginwidth="2000px"
diff --git a/UI-Project/src/views/Caching/cachingunhistory.vue b/UI-Project/src/views/Caching/cachingunhistory.vue
index 0548fb6..0f6606b 100644
--- a/UI-Project/src/views/Caching/cachingunhistory.vue
+++ b/UI-Project/src/views/Caching/cachingunhistory.vue
@@ -38,14 +38,14 @@
           <el-col :span="4">
               <div id="dt" style="font-size: 15px;">
               <el-form-item :label="$t('hellow.countOutTwo')"  style="width: 14vw">
-                {{ countOutTwo }}
+                {{ countOutOne }}
               </el-form-item>
               </div>
           </el-col>
           <el-col :span="5">
             <div id="dta" style="font-size: 15px;">
           <el-form-item :label="$t('hellow.totalAreaOutTwo')" style="width: 14vw">
-                {{ totalAreaOutTwo }}
+                {{ totalAreaOutOne }}
               </el-form-item>
               </div>
           </el-col>
@@ -117,8 +117,8 @@
 const tableDatax = ref([])
 const currentPage2 = ref(1)
 const totalRecords = ref(0)
-const countOutTwo = ref(0)
-const totalAreaOutTwo = ref(0)
+const countOutOne = ref(0)
+const totalAreaOutOne = ref(0)
 const glassId = ref('');
 const startSlot = ref('');
 const targetSlot = ref('');
diff --git a/UI-Project/src/views/GlassStorage/rawfilmstorage.vue b/UI-Project/src/views/GlassStorage/rawfilmstorage.vue
index acd1d7d..f875465 100644
--- a/UI-Project/src/views/GlassStorage/rawfilmstorage.vue
+++ b/UI-Project/src/views/GlassStorage/rawfilmstorage.vue
@@ -702,7 +702,7 @@
         </el-table>
 </el-dialog>
 <!-- 鍘嗗彶浠诲姟 -->
-<el-dialog v-model="blindb" top="5vh" width="95%">
+<el-dialog v-model="blindb" top="5vh" width="95%" @close="iframeUrl=''">
      <iframe 
      :src="iframeUrl" 
      marginwidth="2000px"
diff --git a/UI-Project/src/views/Returns/upreturns.vue b/UI-Project/src/views/Returns/upreturns.vue
index c0d5889..16a3edc 100644
--- a/UI-Project/src/views/Returns/upreturns.vue
+++ b/UI-Project/src/views/Returns/upreturns.vue
@@ -583,7 +583,7 @@
       </template>
     </el-dialog>
     <!-- 鍘嗗彶浠诲姟 -->
-    <el-dialog v-model="blindbd" top="5vh" width="95%">
+    <el-dialog v-model="blindbd" top="5vh" width="95%" @close="iframeUrl=''">
       <iframe :src="iframeUrl" marginwidth="2000px" marginheight="2000px" width="100%" height="750px"
         frameborder="0"></iframe>
     </el-dialog>
diff --git a/UI-Project/src/views/Returns/upreturns2.vue b/UI-Project/src/views/Returns/upreturns2.vue
index 868a296..fff5ebb 100644
--- a/UI-Project/src/views/Returns/upreturns2.vue
+++ b/UI-Project/src/views/Returns/upreturns2.vue
@@ -500,7 +500,7 @@
   </div>
 </div>
    <!-- 鍘嗗彶浠诲姟 -->
-   <el-dialog v-model="blindbd" top="5vh" width="95%">
+   <el-dialog v-model="blindbd" top="5vh" width="95%" @close="iframeUrl=''">
      <iframe 
      :src="iframeUrl" 
      marginwidth="2000px"
diff --git a/UI-Project/src/views/Slicecage/slicecage.vue b/UI-Project/src/views/Slicecage/slicecage.vue
index 6b1190f..70f6a20 100644
--- a/UI-Project/src/views/Slicecage/slicecage.vue
+++ b/UI-Project/src/views/Slicecage/slicecage.vue
@@ -1379,7 +1379,7 @@
   </div>
   </el-dialog>
 <!-- 鍘嗗彶浠诲姟 -->
-<el-dialog v-model="blindb" top="5vh" width="95%">
+<el-dialog v-model="blindb" top="5vh" width="95%" @close="iframeUrl=''">
      <iframe 
      :src="iframeUrl" 
      marginwidth="2000px"
diff --git a/UI-Project/src/views/StockBasicData/stockBasicData.vue b/UI-Project/src/views/StockBasicData/stockBasicData.vue
index 182644c..2747e44 100644
--- a/UI-Project/src/views/StockBasicData/stockBasicData.vue
+++ b/UI-Project/src/views/StockBasicData/stockBasicData.vue
@@ -225,7 +225,7 @@
       </el-card>
     </div>
   <!-- 鍘嗗彶浠诲姟 -->
-<el-dialog v-model="blindb" top="10vh" width="95%">
+<el-dialog v-model="blindb" top="10vh" width="95%" @close="iframeUrl=''">
      <iframe 
      :src="iframeUrl" 
      marginwidth="2000px"
diff --git a/UI-Project/src/views/hollow/hollowequipment.vue b/UI-Project/src/views/hollow/hollowequipment.vue
index b312e36..d69481d 100644
--- a/UI-Project/src/views/hollow/hollowequipment.vue
+++ b/UI-Project/src/views/hollow/hollowequipment.vue
@@ -117,6 +117,7 @@
       </template>
     </el-table-column>
     <el-table-column prop="projectNumber" fixed align="center" :label="$t('hellow.cardnumber')" min-width="20"/>
+    <el-table-column prop="productname" fixed align="center" :label="$t('large.productname')" min-width="20"/>
     <el-table-column fixed="right" :label="$t('hellow.operate')" align="center" width="270">
         <template #default="scope">
           <el-button type="text" plain @click="handletake(scope.row)">{{ $t('hellow.claimquest') }}</el-button>
@@ -946,7 +947,7 @@
     </template>
 </el-dialog>
  <!-- 鍘嗗彶浠诲姟 -->
- <el-dialog v-model="blindb" top="5vh" width="95%">
+ <el-dialog v-model="blindb" top="5vh" width="95%" @close="iframeUrl=''">
      <iframe 
      :src="iframeUrl" 
      marginwidth="2000px"
@@ -1636,10 +1637,16 @@
   }
 };
 const parseData = (rawData) => {
-  return Object.keys(rawData).map(projectNumber => ({
-    projectNumber,
-    records: rawData[projectNumber]
-  }));
+  return Object.entries(rawData).map(([compositeKey, records]) => {
+    const [projectNumber, productName] = compositeKey.split(':');
+    return {
+      projectNumber,
+      productname: productName,
+      records: records.map(record => ({
+        ...record,
+      }))
+    };
+  });
 };
 const fetchFlowBind = async (flowCardId, layer, page) => {
   try {
diff --git a/UI-Project/src/views/hollow/hollowequipmenthree.vue b/UI-Project/src/views/hollow/hollowequipmenthree.vue
index 1ba6c37..ae7ebe9 100644
--- a/UI-Project/src/views/hollow/hollowequipmenthree.vue
+++ b/UI-Project/src/views/hollow/hollowequipmenthree.vue
@@ -91,6 +91,7 @@
       </template>
     </el-table-column>
     <el-table-column prop="projectNumber" fixed align="center" :label="$t('hellow.cardnumber')" min-width="20"/>
+    <el-table-column prop="productname" fixed align="center" :label="$t('large.productname')" min-width="20"/>
     <el-table-column fixed="right" :label="$t('hellow.operate')" align="center" width="270">
         <template #default="scope">
           <el-button type="text" plain @click="handletake(scope.row)">{{ $t('hellow.claimquest') }}</el-button>
@@ -478,7 +479,7 @@
     </template>
 </el-dialog>
  <!-- 鍘嗗彶浠诲姟 -->
- <el-dialog v-model="blindb" top="5vh" width="95%">
+ <el-dialog v-model="blindb" top="5vh" width="95%" @close="iframeUrl=''">
      <iframe 
      :src="iframeUrl" 
      marginwidth="2000px"
@@ -857,10 +858,16 @@
   }
 };
 const parseData = (rawData) => {
-  return Object.keys(rawData).map(projectNumber => ({
-    projectNumber,
-    records: rawData[projectNumber]
-  }));
+  return Object.entries(rawData).map(([compositeKey, records]) => {
+    const [projectNumber, productName] = compositeKey.split(':');
+    return {
+      projectNumber,
+      productname: productName,
+      records: records.map(record => ({
+        ...record,
+      }))
+    };
+  });
 };
 const fetchFlowBind = async (flowCardId, layer, page) => {
   try {
diff --git a/UI-Project/src/views/hollow/hollowequipmenttwo.vue b/UI-Project/src/views/hollow/hollowequipmenttwo.vue
index ebaa490..b232214 100644
--- a/UI-Project/src/views/hollow/hollowequipmenttwo.vue
+++ b/UI-Project/src/views/hollow/hollowequipmenttwo.vue
@@ -91,6 +91,7 @@
       </template>
     </el-table-column>
     <el-table-column prop="projectNumber" fixed align="center" :label="$t('hellow.cardnumber')" min-width="20"/>
+    <el-table-column prop="productname" fixed align="center" :label="$t('large.productname')" min-width="20"/>
     <el-table-column fixed="right" :label="$t('hellow.operate')" align="center" width="270">
         <template #default="scope">
           <el-button type="text" plain @click="handletake(scope.row)">{{ $t('hellow.claimquest') }}</el-button>
@@ -478,7 +479,7 @@
     </template>
 </el-dialog>
  <!-- 鍘嗗彶浠诲姟 -->
- <el-dialog v-model="blindb" top="5vh" width="95%">
+ <el-dialog v-model="blindb" top="5vh" width="95%" @close="iframeUrl=''">
      <iframe 
      :src="iframeUrl" 
      marginwidth="2000px"
@@ -859,10 +860,16 @@
   }
 };
 const parseData = (rawData) => {
-  return Object.keys(rawData).map(projectNumber => ({
-    projectNumber,
-    records: rawData[projectNumber]
-  }));
+  return Object.entries(rawData).map(([compositeKey, records]) => {
+    const [projectNumber, productName] = compositeKey.split(':');
+    return {
+      projectNumber,
+      productname: productName,
+      records: records.map(record => ({
+        ...record,
+      }))
+    };
+  });
 };
 const fetchFlowBind = async (flowCardId, layer, page) => {
   try {
diff --git a/UI-Project/src/views/hollow/hollowslicecage.vue b/UI-Project/src/views/hollow/hollowslicecage.vue
index 458ad48..fbb0c9a 100644
--- a/UI-Project/src/views/hollow/hollowslicecage.vue
+++ b/UI-Project/src/views/hollow/hollowslicecage.vue
@@ -982,7 +982,7 @@
   </div>
   </el-dialog>
   <!-- 鍘嗗彶浠诲姟 -->
-<el-dialog v-model="blindb" top="5vh" width="95%">
+<el-dialog v-model="blindb" top="5vh" width="95%" @close="iframeUrl=''">
      <iframe 
      :src="iframeUrl" 
      marginwidth="2000px"
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/base/entity/BigStorageCageBaseInfo.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/base/entity/BigStorageCageBaseInfo.java
index 47e0fd3..0d3d370 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/base/entity/BigStorageCageBaseInfo.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/base/entity/BigStorageCageBaseInfo.java
@@ -43,6 +43,12 @@
      */
     @ApiModelProperty(value = "楂�")
     private double height;
+
+    /**
+     * 鍘氬害
+     */
+    @ApiModelProperty(value = "鍘氬害")
+    private double thickness;
     /**
      * 鑶滅郴
      */
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java
index 7a5431d..4b22d1a 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java
@@ -46,12 +46,6 @@
     private Integer glassType;
 
     /**
-     * 鍘氬害
-     */
-    @ApiModelProperty(value = "鍘氬害", position = 8)
-    private double thickness;
-
-    /**
      * 閽㈠寲鏄惁鎺ュ彈妯斁
      */
     @ApiModelProperty(value = "閽㈠寲鏄惁鎺ュ彈妯斁", position = 10)
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java
index 8b0232b..2ed246d 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java
@@ -51,20 +51,10 @@
     @Autowired(required = false)
     MiloService miloService;
 
-
-//    @Resource(name = "cacheGlassStartCallback")
-//    SubscriptionCallback cacheGlassStartCallback;
-//
-//    @Resource(name = "cacheGlassTestCallback")
-//    SubscriptionCallback cacheGlassTestCallback;
-
     @Resource
     EdgStorageDeviceTaskService edgStorageDeviceTaskService;
-    //    @Resource
-//    EdgGlassTaskQueueInfoService edgGlassTaskQueueInfoService;
     @Autowired
     EdgGlassTaskInfoService edgGlassTaskInfoService;
-
     @Resource
     GlassInfoService glassInfoService;
     @Resource
@@ -101,16 +91,6 @@
     private String glassInIdTwo = "";
     private String glassIdOne = "";
     private String glassIdTwo = "";
-
-    //    @Scheduled(fixedDelay = Long.MAX_VALUE)
-//    public void startOneOpcTask() throws Exception {
-//        miloService.subscriptionFromOpcUa(Arrays.asList("mes.WL1.edg_storage_device_one_task[1].task_state"), cacheGlassStartCallback);
-//    }
-//
-//    @Scheduled(fixedDelay = Long.MAX_VALUE)
-//    public void startTwoOpcTask() throws Exception {
-//        miloService.subscriptionFromOpcUa(Arrays.asList("mes.WL2.edg_storage_device_two_task[1].task_state"), cacheGlassStartCallback);
-//    }
 
     @Scheduled(fixedDelay = 1000)
     public void startOneOpcTask() {
@@ -707,10 +687,9 @@
             if (2 == taskHistory.getTaskType()) {
                 remainWidth = 0;
             } else {
-                EdgStorageCage storageCage = edgStorageCageService.getOne(new LambdaQueryWrapper<EdgStorageCage>()
-                        .eq(EdgStorageCage::getDeviceId, device).eq(EdgStorageCage::getSlot, slot));
-                EdgStorageCageDetails bigDetails = list.stream().filter(e -> e.getGlassId().equals(taskHistory.getGlassIdIn())).findFirst().orElse(null);
-                remainWidth = storageCage.getRemainWidth() - glassGap - (int) Math.max(bigDetails.getWidth(), bigDetails.getHeight());
+                for (EdgStorageCageDetails item : list) {
+                    remainWidth = remainWidth - glassGap - (int) Math.max(item.getWidth(), item.getHeight());
+                }
                 if (remainWidth <= 0) {
                     remainWidth = 0;
                 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/opctask/entity/EdgStorageDeviceTaskHistory.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/opctask/entity/EdgStorageDeviceTaskHistory.java
index 5bc1011..a35c5f7 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/opctask/entity/EdgStorageDeviceTaskHistory.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/opctask/entity/EdgStorageDeviceTaskHistory.java
@@ -4,6 +4,8 @@
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
@@ -15,51 +17,62 @@
  * @author makejava
  * @since 2024-10-27 21:04:33
  */
+@ApiModel(description = "(EdgStorageDeviceTaskHistory)琛ㄥ疄浣撶被")
 @SuppressWarnings("serial")
 @Data
 public class EdgStorageDeviceTaskHistory extends Model<EdgStorageDeviceTaskHistory> {
     /**
      * 宸ョ▼琛╥d
      */
+    @ApiModelProperty(value = "宸ョ▼琛╥d", position = 1)
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
     /**
      * 杩涚墖鐜荤拑id
      */
+    @ApiModelProperty(value = "杩涚墖鐜荤拑id", position = 2)
     private String glassIdIn;
     /**
      * 鍑虹墖鐜荤拑id
      */
+    @ApiModelProperty(value = "鍑虹墖鐜荤拑id", position = 3)
     private String glassIdOut;
     /**
      * 褰撳墠灞傚彿
      */
+    @ApiModelProperty(value = "褰撳墠灞傚彿", position = 4)
     private Integer currentCell;
     /**
      * 灞傚彿
      */
+    @ApiModelProperty(value = "鐩爣灞傚彿", position = 5)
     private Integer startCell;
     /**
      * 棰勭暀灞傚彿
      */
+    @ApiModelProperty(value = "棰勭暀灞傚彿", position = 6)
     private Integer endCell;
     /**
      * 浠诲姟鐘舵�� 0榛樿绌轰换鍔� 1 杩涚墖 2鍑虹墖 3 鐩撮�� 4鎵ц涓� 5缁撴潫浠诲姟 6鍏朵粬
      */
+    @ApiModelProperty(value = "浠诲姟鐘舵�� 0榛樿绌轰换鍔� 1 杩涚墖 2鍑虹墖 3 鐩撮�� 4鎵ц涓� 5缁撴潫浠诲姟 6鍏朵粬", position = 7)
     private Integer taskState;
     /**
      * 浠诲姟鐘舵�� 0榛樿绌轰换鍔� 1 杩涚墖 2鍑虹墖 3 鐩撮�� 4鎵ц涓� 5缁撴潫浠诲姟 6鍏朵粬
      */
+    @ApiModelProperty(value = "浠诲姟鐘舵�� 0榛樿绌轰换鍔� 1 杩涚墖 2鍑虹墖 3 鐩撮�� 4鎵ц涓� 5缁撴潫浠诲姟 6鍏朵粬", position = 8)
     private Integer taskType;
     /**
      * 鍒涘缓鏃堕棿
      */
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿", position = 9)
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date createTime;
     /**
      * 鏇存柊鏃堕棿
      */
+    @ApiModelProperty(value = "鏇存柊鏃堕棿", position = 10)
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date updateTime;
@@ -67,6 +80,7 @@
     /**
      * 璁惧淇℃伅
      */
+    @ApiModelProperty(value = "璁惧淇℃伅", position = 11)
     private Integer deviceId;
 
 
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/opctask/service/impl/EdgStorageDeviceTaskServiceImpl.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/opctask/service/impl/EdgStorageDeviceTaskServiceImpl.java
index d4d3e3f..d41a4cd 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/opctask/service/impl/EdgStorageDeviceTaskServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/opctask/service/impl/EdgStorageDeviceTaskServiceImpl.java
@@ -9,7 +9,6 @@
 import com.mes.edgstoragecage.entity.vo.EdgSlotRemainVO;
 import com.mes.edgstoragecage.service.EdgStorageCageDetailsService;
 import com.mes.edgstoragecage.service.EdgStorageCageService;
-import com.mes.job.OpcCacheGlassTask;
 import com.mes.opctask.entity.EdgStorageDeviceTask;
 import com.mes.opctask.entity.EdgStorageDeviceTaskHistory;
 import com.mes.opctask.mapper.EdgStorageDeviceTaskMapper;
@@ -66,33 +65,32 @@
                 .eq(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_NEW)
                 .eq(EdgStorageDeviceTaskHistory::getDeviceId, deviceId)
                 .orderByDesc(EdgStorageDeviceTaskHistory::getCreateTime).last("limit 1"));
-        if (taskHistory == null) {
-            return Boolean.FALSE;
-        }
-        Integer cell = taskHistory.getStartCell();
-        Integer taskType = taskHistory.getTaskType();
-        if (Const.GLASS_CACHE_TYPE_IN_ALL.contains(taskType)) {
-            String glassId = taskHistory.getGlassIdIn();
-            edgStorageCageDetailsService.remove(new LambdaQueryWrapper<EdgStorageCageDetails>()
-                    .eq(EdgStorageCageDetails::getDeviceId, deviceId)
-                    .eq(EdgStorageCageDetails::getSlot, cell)
-                    .eq(EdgStorageCageDetails::getGlassId, glassId));
-        } else {
-            String glassId = taskHistory.getGlassIdOut();
-            edgStorageCageDetailsService.update(new LambdaUpdateWrapper<EdgStorageCageDetails>()
-                    .set(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN)
-                    .eq(EdgStorageCageDetails::getDeviceId, deviceId)
-                    .eq(EdgStorageCageDetails::getSlot, cell)
-                    .eq(EdgStorageCageDetails::getGlassId, glassId));
-        }
+        if (taskHistory != null) {
+            Integer cell = taskHistory.getStartCell();
+            Integer taskType = taskHistory.getTaskType();
+            if (Const.GLASS_CACHE_TYPE_IN_ALL.contains(taskType)) {
+                String glassId = taskHistory.getGlassIdIn();
+                edgStorageCageDetailsService.remove(new LambdaQueryWrapper<EdgStorageCageDetails>()
+                        .eq(EdgStorageCageDetails::getDeviceId, deviceId)
+                        .eq(EdgStorageCageDetails::getSlot, cell)
+                        .eq(EdgStorageCageDetails::getGlassId, glassId));
+            } else {
+                String glassId = taskHistory.getGlassIdOut();
+                edgStorageCageDetailsService.update(new LambdaUpdateWrapper<EdgStorageCageDetails>()
+                        .set(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN)
+                        .eq(EdgStorageCageDetails::getDeviceId, deviceId)
+                        .eq(EdgStorageCageDetails::getSlot, cell)
+                        .eq(EdgStorageCageDetails::getGlassId, glassId));
+            }
 
-        edgStorageDeviceTaskHistoryService.update(new LambdaUpdateWrapper<EdgStorageDeviceTaskHistory>()
-                .eq(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_NEW)
-                .eq(EdgStorageDeviceTaskHistory::getDeviceId, deviceId)
-                .set(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_FAILURE)
-        );
-        //璁$畻姣忎釜鍚勮嚜鐨勫墿浣欏昂瀵镐俊鎭�
-        resetSlotRemainWidth();
+            edgStorageDeviceTaskHistoryService.update(new LambdaUpdateWrapper<EdgStorageDeviceTaskHistory>()
+                    .eq(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_NEW)
+                    .eq(EdgStorageDeviceTaskHistory::getDeviceId, deviceId)
+                    .set(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_FAILURE)
+            );
+            //璁$畻姣忎釜鍚勮嚜鐨勫墿浣欏昂瀵镐俊鎭�
+            resetSlotRemainWidth();
+        }
         //鏈�鍚庢洿鏂颁换鍔★紝淇濊瘉浠诲姟鍓嶇殑鍔ㄤ綔閮藉仛瀹�
         EdgStorageDeviceTask task = new EdgStorageDeviceTask();
         task.setTaskRunning(Const.GLASS_CACHE_TYPE_EMPTY);
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
index ee87a6f..c8661f6 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
@@ -114,6 +114,17 @@
         }
     }
 
+    @ApiOperation("鍙栨秷褰撳墠閽㈠寲")
+    @PostMapping("/cancelTemperingTask")
+    public Result<Boolean> cancelTemperingTask() {
+        boolean result = bigStorageCageDetailsService.cancelTemperingTask();
+        if (result == true) {
+            return Result.build(200, "鎸囧畾閽㈠寲鎴愬姛", result);
+        } else {
+            return Result.build(200, "宸插瓨鍦ㄩ挗鍖栦换鍔★紝璇风瓑寰呴挗鍖栧畬鎴愬啀鎸囧畾閽㈠寲", result);
+        }
+    }
+
     @ApiOperation("閽㈠寲/闈為挗鍖栨煡璇細0 闈為挗鍖�  1锛氶挗鍖�")
     @PostMapping("/selectTemperingGlass")
     public Result<List<TemperingGlassCountDTO>> selectTemperingGlass(int isTempering) {
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java
index 1f49bde..0cf7da5 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java
@@ -61,13 +61,6 @@
     @ApiModelProperty(value = "鐜荤拑绫诲瀷", position = 8)
     private Integer glassType;
 
-
-    /**
-     * 鍘氬害
-     */
-    @ApiModelProperty(value = "鍘氬害", position = 11)
-    private double thickness;
-
     @ApiModelProperty(value = "鏃嬭浆瑙掑害", position = 12)
     private Integer angle;
 
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
index 06aa8cb..098362d 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
@@ -109,4 +109,11 @@
     List<BigStorageCageDetails> queryRealGlassInfo(BigStorageQueryVO bigStorageQueryVO);
 
     Map<Integer, List<BigStorageVO>> querybigStorageCageDetail();
+
+    /**
+     * 鍙栨秷閽㈠寲浠诲姟
+     *
+     * @return
+     */
+    boolean cancelTemperingTask();
 }
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 ae517cd..353c9d1 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
@@ -452,11 +452,16 @@
 
     @Override
     public Map<Integer, List<BigStorageVO>> querybigStorageCageDetail() {
-        List<BigStorageVO> bigStorageCages= baseMapper.querybigStorageCageDetail();
+        List<BigStorageVO> bigStorageCages = baseMapper.querybigStorageCageDetail();
         return bigStorageCages.stream().collect(Collectors.groupingBy(item -> item.getDeviceId()));
     }
 
     @Override
+    public boolean cancelTemperingTask() {
+        return false;
+    }
+
+    @Override
     public String temperingSwitch(Boolean flag) {
         redisUtil.setCacheObject("temperingSwitch", flag);
         return "success";
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java
index edf645e..dea422e 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java
@@ -286,6 +286,7 @@
     public List<Map<String, Object>> selectBigStorageCageUsage() {
         QueryWrapper<BigStorageCage> wrapper = new QueryWrapper<>();
         wrapper.select("device_id,ROUND(1 - SUM(CASE WHEN remain_width = " + slotWidth + " THEN 1 ELSE 0 END) / COUNT(device_id), 2)*100 AS percentage,SUM(CASE WHEN remain_width = " + slotWidth + " THEN 1 ELSE 0 END) AS count")
+                .eq("enable_state", Const.SLOT_ON)
                 .groupBy("device_id");
         List<Map<String, Object>> bigStorageCageUsages = baseMapper.selectMaps(wrapper);
 
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/service/impl/BigStorageCageHistoryTaskServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/service/impl/BigStorageCageHistoryTaskServiceImpl.java
index d031143..992eb0a 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/service/impl/BigStorageCageHistoryTaskServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragecagetask/service/impl/BigStorageCageHistoryTaskServiceImpl.java
@@ -39,7 +39,7 @@
                 .in(CollectionUtil.isNotEmpty(request.getTaskStateList()), BigStorageCageHistoryTask::getTaskState, request.getTaskStateList())
                 .in(CollectionUtil.isNotEmpty(request.getTaskTypeList()), BigStorageCageHistoryTask::getTaskType, request.getTaskTypeList())
                 .between(BigStorageCageHistoryTask::getCreateTime, request.getBeginDate(), request.getEndDate())
-                .orderByDesc(BigStorageCageHistoryTask::getCreateTime);
+                .orderByAsc(BigStorageCageHistoryTask::getId);
         return this.page(page, wrapper);
     }
 
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java
index 63861e5..e3556a7 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java
@@ -144,13 +144,16 @@
         ReadWriteEntity countEntity = miloService.readFromOpcUa("DLP1A.DLP1A.glassCount");
         if (null == countEntity.getValue() || Integer.parseInt(countEntity.getValue() + "") != glassIdList.size()) {
             log.info("褰撳墠澶ц溅杩涚墖鐜荤拑鏁伴噺{}涓巑es璇诲彇鍒扮殑鏁伴噺{}涓嶅尮閰嶏紝缁撴潫杩涚墖浠诲姟", countEntity.getValue(), glassIdList.size());
+            //鍚憄lc鍙戦�佹姤璀�:褰撳墠澶ц溅杩涚墖鐜荤拑鏁伴噺涓巑es璇诲彇鍒扮殑鏁伴噺涓嶅尮閰�
+            miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 1));
             return;
         }
         Map<String, Long> glassCountMap = glassIdList.stream().collect(Collectors.groupingBy(e -> e, Collectors.counting()));
         for (Map.Entry<String, Long> entry : glassCountMap.entrySet()) {
             if (entry.getValue() > 1) {
                 log.info("杩涚墖鐜荤拑{}瀛樺湪鐩稿悓锛岀粨鏉熸湰娆′换鍔�", entry.getKey());
-                //todo:鍚憄lc鍙戦�佹姤璀�
+                //鍚憄lc鍙戦�佹姤璀�:鍚屼竴杞﹁繘鐗囩幓鐠冨瓨鍦ㄧ浉鍚�
+                miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 2));
                 return;
             }
         }
@@ -158,19 +161,21 @@
                 .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL_ZERO));
         if (CollectionUtil.isNotEmpty(detailsList)) {
             log.info("鐞嗙墖绗煎瓨鍦ㄧ浉鍚岀殑杩涚墖鐜荤拑{}锛岀粨鏉熸湰娆′换鍔�", detailsList);
-            //todo:鍚憄lc鍙戦�佹姤璀�
+            //鍚憄lc鍙戦�佹姤璀�:鐞嗙墖绗煎瓨鍦ㄧ浉鍚岀殑杩涚墖鐜荤拑
+            miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 4));
             return;
         }
         List<GlassInfo> glassInfoList = glassInfoService.list(new LambdaQueryWrapper<GlassInfo>().in(GlassInfo::getGlassId, glassIdList));
 
         if (glassInfoList.size() != inTaskList.size()) {
             log.info("杩涚墖浠诲姟鏁伴噺{}涓庣幓鐠冩暟閲弡}涓嶅尮閰嶏紝缁撴潫鏈杩涚墖", inTaskList.size(), glassInfoList.size());
-            //todo:鍚憄lc鍙戦�佹姤璀�
+            //鍚憄lc鍙戦�佹姤璀�:杩涚墖浠诲姟鏁伴噺涓庣郴缁熸煡璇㈠埌鐨勭幓鐠冩暟閲忎笉鍖归厤
+            miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 8));
             return;
         }
         //鎸夌収鐜荤拑鍘氬害鍒嗙粍锛屽垽鏂墿浣欐牸瀛愭槸鍚﹀彲浠ュ瓨鏀�
         Map<Double, Long> thickCountMap = glassInfoList.stream().collect(Collectors.groupingBy(GlassInfo::getThickness, Collectors.counting()));
-        if(glassInfoList.get(0).getThickness() < slotMaxthickness){
+        if (glassInfoList.get(0).getThickness() < slotMaxthickness) {
             for (Map.Entry<Double, Long> entry : thickCountMap.entrySet()) {
                 int count = bigStorageCageService.count(new LambdaQueryWrapper<BigStorageCage>()
                         .eq(BigStorageCage::getEnableState, Const.SLOT_ON).eq(BigStorageCage::getRemainWidth, slotWidth)
@@ -178,19 +183,21 @@
                         .ge(BigStorageCage::getMaxThickness, entry.getKey()));
                 if (count < entry.getValue()) {
                     log.info("绗煎唴鏍煎瓙鍓╀綑鏁伴噺涓嶈冻锛岀粨鏉熸湰娆¤繘鐗�");
-                    //todo:鍚憄lc鍙戦�佹姤璀�
+                    //鍚憄lc鍙戦�佹姤璀�:绗煎唴鏍煎瓙鍓╀綑鏁伴噺涓嶈冻
+                    miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 16));
                     return;
                 }
             }
         }
-        //todo:瓒呭ぇ灏哄
+        //瓒呭ぇ灏哄
         if (slotMaxHeight < Math.min(glassInfoList.get(0).getWidth(), glassInfoList.get(0).getHeight()) || glassInfoList.get(0).getThickness() >= slotMaxthickness) {
             int count = bigStorageCageDetailsService.count(new LambdaQueryWrapper<BigStorageCageDetails>()
                     .eq(BigStorageCageDetails::getSlot, THROUGH_SLOT)
                     .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL));
             if (count > 0) {
                 log.info("鐩撮�氱墖鍙板瓨鍦ㄧ幓鐠冿紝缁撴潫鏈杩涚墖");
-                //todo:鍚憄lc鍙戦�佹姤璀�
+                //鍚憄lc鍙戦�佹姤璀�:鐩撮�氱墖鍙板瓨鍦ㄧ幓鐠冿紝鏃犳硶缁х画鐩撮��
+                miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 64));
                 return;
             }
         }
@@ -696,9 +703,15 @@
         //浠诲姟鏁版嵁:鑾峰彇杞﹀瓙瀛樻斁鐜荤拑鏈�澶ф暟閲�,鐜荤拑闂撮殧
         List<T> outGlassList = list;
         if (!THROUGH_SLOT.equals(list.get(0).getSlot())) {
-            List<String> glassIdList = bigStorageGlassRelationInfoService.queryNeedOutGlassId(
-                    list.get(0).getEngineerId(), list.get(0).getTemperingLayoutId(), list.get(0).getTemperingFeedSequence());
-            outGlassList = list.stream().filter(e -> glassIdList.contains(e.getGlassId())).collect(Collectors.toList());
+            //todo:涓存椂瑙e喅鏂规:鍑虹墖鏃惰�冭檻鐜荤拑纰版挒锛屾敼涓轰竴鐗囦竴鍑�
+            // 鐣岄潰鍏抽棴璋冨害寮�鍏� !Const.BIG_STORAGE_BEFORE_DISPATCH.equals(taskType)
+            if (list.get(0).getThickness() >= 8) {
+                outGlassList = list.subList(0, 1);
+            } else {
+                List<String> glassIdList = bigStorageGlassRelationInfoService.queryNeedOutGlassId(
+                        list.get(0).getEngineerId(), list.get(0).getTemperingLayoutId(), list.get(0).getTemperingFeedSequence());
+                outGlassList = list.stream().filter(e -> glassIdList.contains(e.getGlassId())).collect(Collectors.toList());
+            }
         }
         Assert.isFalse(CollectionUtil.isEmpty(outGlassList), "鏈幏鍙栧嚭鐗囨暟鎹紝缁撴潫鍑虹墖浠诲姟");
         log.info("鑾峰彇鍑虹墖浠诲姟鏁版嵁{}鏉★紝鎵ц淇濆瓨", outGlassList.size());
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
index d4f36fc..40ca6d8 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
@@ -66,14 +66,14 @@
                         T.TEMPERING_LAYOUT_ID,
                         COUNT(T.TEMPERING_FEED_SEQUENCE) AS COUNT
                  FROM GLASS_INFO T
-                     LEFT JOIN DAMAGE T1
-                 ON T.ENGINEER_ID = T1.ENGINEER_ID
-                     AND T.GLASS_ID = T1.GLASS_ID
-                     AND (T1.TYPE = 8
-                     OR T1.TYPE = 9)
+                          LEFT JOIN DAMAGE T1
+                                    ON T.ENGINEER_ID = T1.ENGINEER_ID
+                                        AND T.GLASS_ID = T1.GLASS_ID
+                                        AND (T1.TYPE = 8
+                                            OR T1.TYPE = 9)
                  WHERE T1.GLASS_ID IS NULL
                  GROUP BY T.ENGINEER_ID,
-                     T.TEMPERING_LAYOUT_ID
+                          T.TEMPERING_LAYOUT_ID
              ) T2
                  INNER JOIN (SELECT ENGINEER_ID, TEMPERING_LAYOUT_ID, COUNT(TEMPERING_FEED_SEQUENCE) AS COUNT
                              FROM BIG_STORAGE_CAGE_DETAILS
@@ -174,8 +174,8 @@
         total_count,
         real_count,
         ifnull(damage_count, 0) as damage_count,
-        total_count - real_count - ifnull(damage_count, 0) as lack_count
-
+        case when total_count - real_count - ifnull(damage_count, 0) &lt; 0 then 0 else
+        total_count - real_count - ifnull(damage_count, 0) end as lack_count
         from big_details_temp t
         inner join glass_info_temp t1 on t.engineer_id = t1.engineer_id and
         t.tempering_layout_id = t1.tempering_layout_id
@@ -268,8 +268,9 @@
     </select>
     <select id="querybigStorageCageDetail" resultType="com.mes.base.entity.vo.BigStorageVO">
         select bsc.device_id, bsc.slot, count(bscd.glass_id) as count
-        from big_storage_cage bsc left join big_storage_cage_details bscd
-        on bsc.slot=bscd.slot and bscd.state in (100, 102, 103, 104)
+        from big_storage_cage bsc
+                 left join big_storage_cage_details bscd
+                           on bsc.slot = bscd.slot and bscd.state in (100, 102, 103, 104)
         group by bsc.device_id, bsc.slot
         order by bsc.device_id, bsc.slot
     </select>
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/OpcLoadGlassTask.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/OpcLoadGlassTask.java
index f32b804..a18183a 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/OpcLoadGlassTask.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/OpcLoadGlassTask.java
@@ -69,22 +69,22 @@
     //2銆�1鍙蜂笂鐗囦綅鏄惁鏈夊師鐗囷紝鍘熺墖灏哄鏄惁鍜屼笂鐗囧緟涓婄墖鐨勫昂瀵镐竴鑷�
     //3銆�1鍙锋棤鍘熺墖锛屼笖娌℃湁鏋跺瓙锛�2鍙蜂笂鐗囦綅灏哄鏄惁鍜屽甫涓婄墖灏哄涓�鑷�
     //4銆佷笉涓�鑷村彲鑳藉嚭鐜扮幓鐠冪牬鎹熷鑷寸殑涓婁竴鏋跺師鐗囨暟閲忎笉澶�
-    @Scheduled(fixedDelay = 300)
+    @Scheduled(fixedDelay = 5000)
     public void opcLoadGlassOne() {
         opcLoadGlassChild(LOAD_GLASS_DEVICE_ONE_TASK, LOAD_GLASS_ONE_DEVICE);
     }
 
-    @Scheduled(fixedDelay = 300)
+    @Scheduled(fixedDelay = 5000)
     public void opcLoadGlassTwo() {
         opcLoadGlassChild(LOAD_GLASS_DEVICE_TWO_TASK, LOAD_GLASS_TWO_DEVICE);
     }
 
-    @Scheduled(fixedDelay = 300)
+    @Scheduled(fixedDelay = 5000)
     public void opcLoadGlassOneFinish() {
         opcLoadGlassFinishChid(LOAD_GLASS_DEVICE_ONE_TASK, LOAD_GLASS_ONE_DEVICE);
     }
 
-    @Scheduled(fixedDelay = 300)
+    @Scheduled(fixedDelay = 5000)
     public void opcLoadGlassTwoFinish() {
         opcLoadGlassFinishChid(LOAD_GLASS_DEVICE_TWO_TASK, LOAD_GLASS_TWO_DEVICE);
     }
@@ -92,7 +92,7 @@
     /**
      * 瀹氭椂浠诲姟鎵爜宸插畬鎴愪笂鐗囩殑宸ョ▼锛屽皢宸ョ▼鐘舵�佹敼涓哄凡瀹屾垚锛屽悓姝p琛ㄧ殑宸ョ▼琛紝鐘舵�佹敼涓�300
      */
-    @Scheduled(fixedDelay = 3000)
+    @Scheduled(fixedDelay = 5000)
     public void updateEngineerState() {
         log.info("淇敼宸插畬鎴愬伐绋嬬姸鎬佷换鍔″紑濮嬫墽琛�");
         List<Engineering> engineerings = engineeringMapper.selectList(new LambdaQueryWrapper<Engineering>().eq(Engineering::getState, Const.ENGINEERING_RUNNING));
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 96bbbc5..dfdb024 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
@@ -1,9 +1,8 @@
 package com.mes.job;
 
 import cn.hutool.json.JSONObject;
-import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.mes.common.S7object;
-import com.mes.common.config.Const;
 import com.mes.device.PlcParameterObject;
 import com.mes.engineering.entity.Engineering;
 import com.mes.engineering.service.EngineeringService;
@@ -11,8 +10,6 @@
 import com.mes.opctask.service.LoadGlassDeviceTaskService;
 import com.mes.pp.service.OptimizeProjectService;
 import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
-import com.mes.rawglassdetails.service.RawGlassStorageDetailsService;
-import com.mes.rawglassstation.entity.RawGlassStorageStation;
 import com.mes.rawglassstation.service.RawGlassStorageStationService;
 import com.mes.tools.DateUtil;
 import com.mes.tools.WebSocketServer;
@@ -137,56 +134,48 @@
         }
     }
 
-    @Scheduled(fixedDelay = 1000)
-    public void loadGlassHome() {
+    @Scheduled(fixedDelay = 10000)
+    public void loadOneGlass() {
+        loadGlassChild("loadGlassRequestOne", 5, LOAD_GLASS_DEVICE_ONE_TASK, "loadGlassOne");
+    }
+
+    @Scheduled(fixedDelay = 10)
+    public void loadTwoGlass() {
+        loadGlassChild("loadGlassRequestTwo", 6, LOAD_GLASS_DEVICE_TWO_TASK, "loadGlassTwo");
+    }
+
+
+    private void loadGlassChild(String redisRequest, int stationCell, String tableName, String webSocketName) {
         try {
             JSONObject jsonObject = new JSONObject();
-            //姝e湪杩涜鐨勪换鍔�
-            List<UpPattenUsage> upPattenUsages = upPattenUsageService.prioritylist();
-            if (upPattenUsages != null) {
-                jsonObject.append("prioritylist", upPattenUsages);
+            //褰撳墠绾胯矾姝e湪鎵ц鐨勫伐绋�
+            Engineering engineering = engineeringService.getOne(new LambdaQueryWrapper<Engineering>().eq(Engineering::getStationCell, stationCell)
+                    .eq(Engineering::getState, 1).last("limit 1"));
+            if (null != engineering) {
+                jsonObject.append("engineering", engineering);
             }
-            //鏌ヨ1鍙风嚎鐨勪换鍔�
-            Engineering request = redisUtil.getCacheObject("loadGlassRequest");
+            //鑾峰彇褰撳墠绾胯矾姝e湪鎵ц鐨勫伐绋嬪師鐗囦俊鎭�
+            Engineering request = redisUtil.getCacheObject(redisRequest);
             if (request == null) {
                 request = new Engineering();
-                request.setStationCell(5);
+                request.setStationCell(stationCell);
             }
-            List<UpPattenUsage> upPattenUsages1 = upPattenUsageService.selectLoadTask(request);
-            jsonObject.append("loadTask1", upPattenUsages1);
-            //鏌ヨ2鍙风嚎鐨勪换鍔�
-            Engineering request2 = redisUtil.getCacheObject("loadGlassRequest2");
-            if (request2 == null) {
-                request2 = new Engineering();
-                request2.setStationCell(6);
-            }
-            List<UpPattenUsage> upPattenUsages2 = upPattenUsageService.selectLoadTask(request2);
-            jsonObject.append("loadTask2", upPattenUsages2);
-//        鏌ヨ宸ヤ綅浠诲姟
-            //鑱旀満鐘舵��
-            LoadGlassDeviceTask LoadOneState = loadGlassDeviceTaskService.queryTaskMessage(LOAD_GLASS_DEVICE_ONE_TASK);
-            LoadGlassDeviceTask LoadTwoState = loadGlassDeviceTaskService.queryTaskMessage(LOAD_GLASS_DEVICE_TWO_TASK);
-            jsonObject.append("LoadOneState", LoadOneState.getInkageState());
-            jsonObject.append("LoadTwoervice", LoadTwoState.getInkageState());
+            List<UpPattenUsage> upPattenUsages = upPattenUsageService.selectLoadTask(request);
+            jsonObject.append("upPattenUsages", upPattenUsages);
 
+            //鑱旀満鐘舵��
+            LoadGlassDeviceTask LoadTask = loadGlassDeviceTaskService.queryTaskMessage(tableName);
+            jsonObject.append("inkageState", LoadTask.getInkageState());
             //宸ヤ綅淇℃伅
             List<RawGlassStorageDetails> rawGlassStorageDetailList = rawGlassStorageStationService.listRawGlassDetails();
-            List<RawGlassStorageDetails> stationOneList = rawGlassStorageDetailList.stream().filter(item -> item.getDeviceId() == 5).collect(Collectors.toList());
-            List<RawGlassStorageDetails> stationTwoList = rawGlassStorageDetailList.stream().filter(item -> item.getDeviceId() == 6).collect(Collectors.toList());
-            jsonObject.append("stationOne", stationOneList);
-            jsonObject.append("stationTwo", stationTwoList);
-            //鏄惁寮�濮嬪伐绋�
-            Engineering engineering = engineeringService.selectInitiate(1);
-            jsonObject.append("engineering", engineering);
-            //宸ヤ綅淇℃伅
-            List<UpWorkstation> upWorkstations = upWorkstationService.list();
-            jsonObject.append("list", upWorkstations);
-            ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("loadGlass");
+            List<RawGlassStorageDetails> stationList = rawGlassStorageDetailList.stream().filter(item -> item.getDeviceId() == stationCell).collect(Collectors.toList());
+            jsonObject.append("stationList", stationList);
+
+            ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get(webSocketName);
             if (sendwServer != null) {
                 for (WebSocketServer webserver : sendwServer) {
                     if (webserver != null) {
                         webserver.sendMessage(jsonObject.toString());
-//                    }
                     } else {
                         log.info("loadGlass is closed");
                     }
@@ -195,9 +184,9 @@
         } catch (Exception e) {
             e.printStackTrace();
         }
-
     }
 
+ 
     //    @Scheduled(fixedDelay = 5000)
     public void loadGlassStatus() {
         JSONObject jsonObject = new JSONObject();
@@ -218,21 +207,6 @@
         }
     }
 
-//    @Scheduled(fixedDelay = 1000)
-//    public void loadGlassIsRun() {
-//        JSONObject jsonObject = new JSONObject();
-//
-//        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("loadGlassIsRun");
-//        if (sendwServer != null) {
-//            for (WebSocketServer webserver : sendwServer) {
-//                if (webserver != null) {
-//                    webserver.sendMessage(jsonObject.toString());
-//                } else {
-//                    log.info("loadGlassIsRun is closed");
-//                }
-//            }
-//        }
-//    }
 
     public void overTask(String loadStatus, int state) {
 
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java
index 4410f73..2c9f493 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java
@@ -200,9 +200,9 @@
     public String setRawGlassTaskRequest(Engineering request) {
         // 璋冪敤 RedisUtil 淇濆瓨 loadGlass
         if (request == null) {
-            redisUtil.deleteObject("loadGlassRequest");
+            redisUtil.deleteObject("loadGlassRequestOne");
         } else {
-            redisUtil.setCacheObject("loadGlassRequest", request);
+            redisUtil.setCacheObject("loadGlassRequestOne", request);
         }
         return "success";
     }
@@ -211,9 +211,9 @@
     public String setRawGlassTaskRequest2(Engineering request) {
         // 璋冪敤 RedisUtil 淇濆瓨 loadGlass
         if (request == null) {
-            redisUtil.deleteObject("loadGlassRequest2");
+            redisUtil.deleteObject("loadGlassRequestTwo");
         } else {
-            redisUtil.setCacheObject("loadGlassRequest2", request);
+            redisUtil.setCacheObject("loadGlassRequestTwo", request);
         }
         return "success";
     }
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/dto/FlowCardGlassInfoDTO.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/dto/FlowCardGlassInfoDTO.java
index 06f6a89..4c50e7d 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/dto/FlowCardGlassInfoDTO.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/dto/FlowCardGlassInfoDTO.java
@@ -19,6 +19,10 @@
      */
     private String flowCardId;
     /**
+     * 浜у搧鍚嶇О
+     */
+    private String productName;
+    /**
      * 鑶滅郴
      */
     private String filmsId;
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowGlassRelationInfoMapper.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowGlassRelationInfoMapper.java
index b605a85..0367c10 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowGlassRelationInfoMapper.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowGlassRelationInfoMapper.java
@@ -26,6 +26,14 @@
 
     int queryLayerByFlowCardId(@Param("flowCardId") String flowCardId);
 
-    void clearDirtyFlowCardData(@Param("flowCardId")String flowCardId, @Param("layer")int layer);
+    void clearDirtyFlowCardData(@Param("flowCardId") String flowCardId, @Param("layer") int layer);
+
+    /**
+     * 鎸夌収娴佺▼鍗¤幏鍙栦骇鍝佸悕绉�
+     *
+     * @param flowCardId
+     * @return
+     */
+    String queryProductNameByFlowCardId(@Param("flowCardId") String flowCardId);
 }
 
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassRelationInfoServiceImpl.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassRelationInfoServiceImpl.java
index 283a128..c174581 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassRelationInfoServiceImpl.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassRelationInfoServiceImpl.java
@@ -302,7 +302,13 @@
         List<FlowCardGlassInfoDTO> dtos = new ArrayList<>();
         listMap.forEach((e, v) -> {
             HollowBigStorageCageDetails cageDetails = v.get(0);
-            dtos.addAll(hollowBigStorageCageDetailsService.hollowIsAll(e, cageDetails.getTotalLayer(), Boolean.FALSE));
+            //鎸夌収娴佺▼鍗¤幏鍙栧搴旂殑浜у搧鍚嶇О
+            String productName = baseMapper.queryProductNameByFlowCardId(cageDetails.getFlowCardId());
+            List<FlowCardGlassInfoDTO> flowCardInfoList = hollowBigStorageCageDetailsService.hollowIsAll(e, cageDetails.getTotalLayer(), Boolean.FALSE);
+            for (FlowCardGlassInfoDTO item : flowCardInfoList) {
+                item.setProductName(productName);
+                dtos.add(item);
+            }
         });
         Map<String, FlowCardGlassInfoDTO> result = dtos.stream()
                 .collect(Collectors.toMap(
@@ -318,11 +324,11 @@
                         },
                         (dto1, dto2) -> {
                             dto1.setRealCount(dto1.getRealCount() + dto2.getRealCount()); // 绱姞 realCount
-                            dto1.setLayer(Math.max(dto1.getLayer(),dto2.getLayer())); // 绱姞 鏈�澶у眰鏁�
+                            dto1.setLayer(Math.max(dto1.getLayer(), dto2.getLayer())); // 绱姞 鏈�澶у眰鏁�
                             return dto1; // 杩斿洖鍚堝苟鍚庣殑瀵硅薄
                         }
                 ));
-        return dtos.stream().collect(Collectors.groupingBy(FlowCardGlassInfoDTO::getFlowCardId));
+        return dtos.stream().collect(Collectors.groupingBy(e -> e.getFlowCardId() + ":" + e.getProductName()));
     }
 
     @Override
@@ -359,7 +365,7 @@
                         },
                         (dto1, dto2) -> {
                             dto1.setRealCount(dto1.getRealCount() + dto2.getRealCount()); // 绱姞 realCount
-                            dto1.setLayer(Math.max(dto1.getLayer(),dto2.getLayer())); // 绱姞 鏈�澶у眰鏁�
+                            dto1.setLayer(Math.max(dto1.getLayer(), dto2.getLayer())); // 绱姞 鏈�澶у眰鏁�
                             dto1.setSlotCount(dto1.getSlotCount() + dto2.getSlotCount());
                             return dto1; // 杩斿洖鍚堝苟鍚庣殑瀵硅薄
                         }
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollowtask/service/impl/HollowBigStorageCageHistoryTaskServiceImpl.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollowtask/service/impl/HollowBigStorageCageHistoryTaskServiceImpl.java
index 39b6143..a43904e 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollowtask/service/impl/HollowBigStorageCageHistoryTaskServiceImpl.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollowtask/service/impl/HollowBigStorageCageHistoryTaskServiceImpl.java
@@ -38,7 +38,7 @@
                 .in(CollectionUtil.isNotEmpty(request.getTaskStateList()), HollowBigStorageCageHistoryTask::getTaskState, request.getTaskStateList())
                 .in(CollectionUtil.isNotEmpty(request.getTaskTypeList()), HollowBigStorageCageHistoryTask::getTaskType, request.getTaskTypeList())
                 .between(HollowBigStorageCageHistoryTask::getCreateTime, request.getBeginDate(), request.getEndDate())
-                .orderByDesc(HollowBigStorageCageHistoryTask::getCreateTime);
+                .orderByAsc(HollowBigStorageCageHistoryTask::getId);
         return this.page(page, wrapper);
     }
 
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java
index f469e7c..fa45fe7 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java
@@ -145,7 +145,8 @@
         for (Map.Entry<String, Long> entry : glassCountMap.entrySet()) {
             if (entry.getValue() > 1) {
                 log.info("杩涚墖鐜荤拑{}瀛樺湪鐩稿悓锛岀粨鏉熸湰娆′换鍔�", entry.getKey());
-                //todo:鍚憄lc鍙戦�佹姤璀�
+                //鍚憄lc鍙戦�佹姤璀�:鍚屼竴杞﹁繘鐗囩幓鐠冨瓨鍦ㄧ浉鍚�
+                miloService.writeToOpcWord(generateReadWriteEntity("DLP2A.DLP2A.alarmSignal", 2));
                 return;
             }
         }
@@ -153,14 +154,16 @@
                 .in(HollowBigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL_ZERO));
         if (CollectionUtil.isNotEmpty(detailsList)) {
             log.info("鐞嗙墖绗煎瓨鍦ㄧ浉鍚岀殑杩涚墖鐜荤拑{}锛岀粨鏉熸湰娆′换鍔�", detailsList);
-            //todo:鍚憄lc鍙戦�佹姤璀�
+            //鍚憄lc鍙戦�佹姤璀�:鐞嗙墖绗煎瓨鍦ㄧ浉鍚岀殑杩涚墖鐜荤拑
+            miloService.writeToOpcWord(generateReadWriteEntity("DLP2A.DLP2A.alarmSignal", 4));
             return;
         }
         List<GlassInfo> glassInfoList = glassInfoService.list(new LambdaQueryWrapper<GlassInfo>().in(GlassInfo::getGlassId, glassIdList));
 
         if (glassInfoList.size() != inTaskList.size()) {
             log.info("杩涚墖浠诲姟鏁伴噺{}涓庣幓鐠冩暟閲弡}涓嶅尮閰嶏紝缁撴潫鏈杩涚墖", inTaskList.size(), glassInfoList.size());
-            //todo:鍚憄lc鍙戦�佹姤璀�
+            //鍚憄lc鍙戦�佹姤璀�:杩涚墖浠诲姟鏁伴噺涓庣郴缁熸煡璇㈠埌鐨勭幓鐠冩暟閲忎笉鍖归厤
+            miloService.writeToOpcWord(generateReadWriteEntity("DLP2A.DLP2A.alarmSignal", 8));
             return;
         }
         //鎸夌収鐜荤拑鍘氬害鍒嗙粍锛屽垽鏂墿浣欐牸瀛愭槸鍚﹀彲浠ュ瓨鏀�
@@ -172,18 +175,20 @@
                     .ge(HollowBigStorageCage::getMaxThickness, entry.getKey()));
             if (count < entry.getValue()) {
                 log.info("绗煎唴鏍煎瓙鍓╀綑鏁伴噺涓嶈冻锛岀粨鏉熸湰娆¤繘鐗�");
-                //todo:鍚憄lc鍙戦�佹姤璀�
+                //鍚憄lc鍙戦�佹姤璀�:绗煎唴鏍煎瓙鍓╀綑鏁伴噺涓嶈冻
+                miloService.writeToOpcWord(generateReadWriteEntity("DLP2A.DLP2A.alarmSignal", 16));
                 return;
             }
         }
-        //todo:瓒呭ぇ灏哄
+        //瓒呭ぇ灏哄
         if (slotMaxHeight < Math.min(glassInfoList.get(0).getWidth(), glassInfoList.get(0).getHeight()) || glassInfoList.get(0).getThickness() > slotMaxthickness) {
             int count = hollowBigStorageCageDetailsService.count(new LambdaQueryWrapper<HollowBigStorageCageDetails>()
                     .eq(HollowBigStorageCageDetails::getSlot, THROUGH_SLOT)
                     .in(HollowBigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL));
             if (count > 0) {
                 log.info("鐩撮�氱墖鍙板瓨鍦ㄧ幓鐠冿紝缁撴潫鏈杩涚墖");
-                //todo:鍚憄lc鍙戦�佹姤璀�
+                //鍚憄lc鍙戦�佹姤璀�:鐩撮�氱墖鍙板瓨鍦ㄧ幓鐠冿紝鏃犳硶缁х画鐩撮��
+                miloService.writeToOpcWord(generateReadWriteEntity("DLP2A.DLP2A.alarmSignal", 64));
                 return;
             }
         }
@@ -737,7 +742,7 @@
     }
 
 
-    private <T extends HollowBigStorageCageBaseInfo> Boolean hollowOutGlassByIsPair(List<T> list, int targetSlot, int isPair, int totalLayer, int isForce) {
+    private <T extends HollowBigStorageCageBaseInfo> Boolean hollowOutGlassByIsPair(List<T> list, int targetSlot, int isPair, int totalLayer, int isForce) throws Exception {
         List<T> resultList = new ArrayList<>();
         List<T> tempList = new ArrayList<>();
         int taskType = Const.BIG_STORAGE_AFTER_OUT;
@@ -762,6 +767,13 @@
                         .ge(HollowBigStorageCage::getMaxThickness, list.get(0).getThickness())
                         .eq(HollowBigStorageCage::getRemainWidth, slotWidth)
                         .orderByAsc(HollowBigStorageCage::getMaxThickness).last("limit 1"));
+
+                if (null == storageCage) {
+                    //鍚憄lc鍙戦�佹姤璀�:鐩撮�氱墖鍙板瓨鍦ㄧ幓鐠冿紝鏃犳硶缁х画鐩撮��
+                    miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 16));
+                    Assert.isFalse(storageCage == null, "浠诲姟璋冨害娌℃湁澶氫綑鏍煎瓙锛岀粨鏉熻皟搴︿换鍔�");
+                }
+
                 targetSlot = storageCage.getSlot();
                 hollowBigStorageCageService.update(new LambdaUpdateWrapper<HollowBigStorageCage>()
                         .set(HollowBigStorageCage::getRemainWidth, 0).eq(HollowBigStorageCage::getSlot, targetSlot));
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java
index 0b867e9..3b8520f 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java
@@ -60,31 +60,40 @@
     @Resource
     RedisUtil redisUtil;
 
-    @Scheduled(fixedDelay = 1000)
-    public void hollowGlassTask() {
+    @Scheduled(fixedDelay = 5000)
+    public void hollowGlassTaskOne() {
+        hollowGlassTaskChild(930, "CMJ1.CMJ1.isFree", "HollowGlassOne");
+    }
+
+    @Scheduled(fixedDelay = 5000)
+    public void hollowGlassTaskTwo() {
+        hollowGlassTaskChild(931, "ZKQ2.ZKQ2.isFree", "HollowGlassTwo");
+    }
+
+    @Scheduled(fixedDelay = 5000)
+    public void hollowGlassTaskThree() {
+        //todo:鏆傛棤涓夌嚎鐨勭┖闂茬姸鎬佷俊鍙凤紝涓存椂鏍囩绌洪棽鐘舵��
+        hollowGlassTaskChild(932, "ZKQ3.ZKQ3.isFree", "HollowGlassThree");
+    }
+
+    public void hollowGlassTaskChild(int cell, String isFreeTag, String websocketName) {
         List<HollowGlassOutRelationInfo> taskList = hollowGlassOutRelationInfoService.list(new LambdaQueryWrapper<HollowGlassOutRelationInfo>()
-                .in(HollowGlassOutRelationInfo::getState, Const.HOLLOW_FLOW_CARD_START));
+                .in(HollowGlassOutRelationInfo::getState, Const.HOLLOW_FLOW_CARD_START).eq(HollowGlassOutRelationInfo::getCell, cell));
         JSONObject jsonObject = new JSONObject();
         if (CollectionUtil.isNotEmpty(taskList)) {
             List<Long> taskIdList = taskList.stream().map(HollowGlassOutRelationInfo::getId).collect(Collectors.toList());
             List<HollowGlassQueueInfo> list = hollowGlassQueueInfoService.list(new LambdaQueryWrapper<HollowGlassQueueInfo>().in(HollowGlassQueueInfo::getRelationId, taskIdList));
-            Map<Integer, List<HollowGlassQueueInfo>> listMap = list.stream().collect(Collectors.groupingBy(HollowGlassQueueInfo::getCell));
-            jsonObject.append("930", listMap.get(930));
-            jsonObject.append("931", listMap.get(931));
-            jsonObject.append("932", listMap.get(932));
+            jsonObject.append("queueInfo", list);
         }
         try {
             //930绌洪棽淇″彿
-            ReadWriteEntity freeOneRequestEntity = miloService.readFromOpcUa("CMJ1.CMJ1.isFree");
-            jsonObject.append("freeOneRequestEntity", freeOneRequestEntity.getValue());
-            //931绌洪棽淇″彿
-            ReadWriteEntity freeTwoRequestEntity = miloService.readFromOpcUa("ZKQ2.ZKQ2.isFree");
-            jsonObject.append("freeTwoRequestEntity", freeTwoRequestEntity.getValue());
+            ReadWriteEntity freeOneRequestEntity = miloService.readFromOpcUa(isFreeTag);
+            jsonObject.append("freeRequest", freeOneRequestEntity.getValue());
         } catch (Exception e) {
             log.error("opc瀛樺湪寮傚父", e);
         }
 
-        List<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("HollowGlass");
+        List<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get(websocketName);
         if (CollectionUtil.isNotEmpty(sendwServer)) {
             for (WebSocketServer socketServer : sendwServer) {
                 if (socketServer != null && socketServer.session.isOpen()) {
@@ -181,6 +190,9 @@
             //931绌洪棽淇″彿
             ReadWriteEntity freeTwoRequestEntity = miloService.readFromOpcUa("ZKQ2.ZKQ2.isFree");
             jsonObject.append("freeTwoRequestEntity", freeTwoRequestEntity.getValue());
+            //932绌洪棽淇″彿
+            ReadWriteEntity freeThreeRequestEntity = miloService.readFromOpcUa("ZKQ3.ZKQ3.isFree");
+            jsonObject.append("freeThreeRequestEntity", freeThreeRequestEntity.getValue());
         } catch (Exception e) {
             //todo:涓嶅仛浠诲姟澶勭悊
         }
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml
index 0d655b2..981209f 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml
@@ -129,6 +129,16 @@
         from hollow_glass_relation_info
         where flow_card_id = #{flowCardId}
     </select>
+    <select id="queryProductNameByFlowCardId" resultType="java.lang.String">
+        select product_name
+        from sd.order_detail
+        where (order_id, order_number) = (
+            select min(order_id) as order_id, min(order_number) as order_number
+            from pp.flow_card
+            where process_id = #{flowCardId}
+        )
+        limit 1
+    </select>
 
     <update id="clearDirtyFlowCardData">
         update hollow_glass_relation_info

--
Gitblit v1.8.0