From ee04d1ab881479ae30c8d5600d29ac56b70f751e Mon Sep 17 00:00:00 2001
From: wuyouming666 <2265557248@qq.com>
Date: 星期三, 24 四月 2024 15:46:16 +0800
Subject: [PATCH] 增加工位显示方法

---
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java |   29 +
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java             |    3 
 UI-Project/config.js                                                                                                                    |    2 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java                                     |    2 
 UI-Project/src/views/UnLoadGlass/Landingindication.vue                                                                                  |  113 ++++-----
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java                               |   35 ++
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/Plchome.java                                             |   32 +-
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java                 |    3 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java        |  150 +++++------
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationMapper.java               |    3 
 UI-Project/src/views/UnLoadGlass/loadmachinerack.vue                                                                                    |    4 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java        |   14 +
 /dev/null                                                                                                                               |    9 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java    |   41 +++
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/entity/GlassInfo.java                                 |    6 
 UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue                                                                               |  113 ++++----
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java                 |    8 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java            |    3 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java       |   18 +
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java          |    2 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java                |    2 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstionAndDownGlassinfo.java       |   89 +++++++
 UI-Project/vite.config.js                                                                                                               |    2 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/DownStorageCageDetails.java                  |    2 
 24 files changed, 440 insertions(+), 245 deletions(-)

diff --git a/UI-Project/config.js b/UI-Project/config.js
index 788923e..2ac98ef 100644
--- a/UI-Project/config.js
+++ b/UI-Project/config.js
@@ -1,5 +1,5 @@
 export default {
-  serverUrl: "10.153.19.150:88/api",
+  serverUrl: "localhost:88/api",
   //serverUrl: "localhost:88/api/",
   serverUrl2: "10.153.19.150:88"
   //serverUrl:"res.abeim.cn"
diff --git a/UI-Project/src/views/UnLoadGlass/Landingindication.vue b/UI-Project/src/views/UnLoadGlass/Landingindication.vue
index 1c572a5..72b46a9 100644
--- a/UI-Project/src/views/UnLoadGlass/Landingindication.vue
+++ b/UI-Project/src/views/UnLoadGlass/Landingindication.vue
@@ -11,9 +11,9 @@
               :width="rack.width" 
               :height="rack.height" 
               :fill="rack.fillColor"
-          :data-index="index" 
-          class="rack-rect" 
-          @click="showRectInfo(rack)"
+              :data-index="index" 
+              class="rack-rect" 
+              @click="showRectInfo(rack)"
             />
             <rect 
               :x="calculateItemXPosition(rack, rack.item, index)" 
@@ -31,66 +31,59 @@
   </div>
 </template>
 
-<script>
+<script setup>
 import Swal from 'sweetalert2'
-export default {
-  data() {
-    return {
-      racks: [
-        { x: 50, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: 'NG123456' } },
-        { x: 50, y: 270, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 20, width: 10, fillColor: 'yellow', content: 'NG1234567' } },
-        { x: 280, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 30, width: 20, fillColor: 'yellow', content: 'NG12345678' } },
-        { x: 280, y: 270, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 35, width: 23, fillColor: 'yellow', content: 'NG123456910' } },
-        { x: 140, y: 420, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 30, width: 100, fillColor: 'yellow', content: 'NG1234561454' } }
-      ]
-    };
-  },
-  methods: {
-    // 璁$畻鍐呴儴鐗╁搧鐨� x 鍧愭爣浣嶇疆
-    calculateItemXPosition(rack, item, index) {
-      if (index === 0 || index === 1) {  // 濡傛灉鏄涓�鎴栫浜屼釜鐗╁搧
-        return rack.x;  // 杩斿洖宸﹁竟鐣� x 鍧愭爣
-      } else if (index === 2 || index === 3) {  // 濡傛灉鏄涓夋垨绗洓涓墿鍝�
-        return rack.x + rack.width - item.width;  // 杩斿洖鍙宠竟鐣� x 鍧愭爣
-      } else {
-        return rack.x + (rack.width - item.width) / 2;  // 杩斿洖姘村钩灞呬腑鐨� x 鍧愭爣
-      }
-    },
-    // 璁$畻鍐呴儴鐗╁搧鐨� y 鍧愭爣浣嶇疆
-    calculateItemYPosition(rack, item, index) {
-      if (index === 0 || index === 1) {  // 濡傛灉鏄涓�鎴栫浜屼釜鐗╁搧
-        return rack.y + (rack.height - item.height) / 2;  // 杩斿洖鍨傜洿灞呬腑鐨� y 鍧愭爣
-      } else if (index === 2 || index === 3) {  // 濡傛灉鏄涓夋垨绗洓涓墿鍝�
-        return rack.y + (rack.height - item.height) / 2;  // 杩斿洖鍨傜洿灞呬腑鐨� y 鍧愭爣
-      } else {
-        return rack.y + rack.height - item.height;  // 杩斿洖搴曢儴瀵归綈鐨� y 鍧愭爣
-      }
-    },
-    showCustomAlert(content) {
-      var str="鏋跺彿   :      111\n" +
-        "闀�     :      111\n" +
-        "瀹�     :      111\n" +
-        "鍘�     :      111\n"+
-        "鐜荤拑ID :      111\n"+
-        "鑶滅郴   :      111\n";
 
-Swal.fire({
-  title: '鐜荤拑淇℃伅',
-  html: '<pre>' + str + '</pre>',
-  customClass: {
-    popup: 'format-pre'
-  }
-});
+const racks = [
+  { x: 50, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: 'NG123456' } },
+  { x: 50, y: 270, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 20, width: 10, fillColor: 'yellow', content: 'NG1234567' } },
+  { x: 280, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 30, width: 20, fillColor: 'yellow', content: 'NG12345678' } },
+  { x: 280, y: 270, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 35, width: 23, fillColor: 'yellow', content: 'NG123456910' } },
+  { x: 140, y: 420, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 30, width: 100, fillColor: 'yellow', content: 'NG1234561454' } }
+];
 
-  },
-    showRectInfo( rectInfo) {
-  const content = rectInfo.item.content;
-  this.$nextTick(() => {
-    this.showCustomAlert(content);
-  });
-},
+const calculateItemXPosition = (rack, item, index) => {
+  if (index === 0 || index === 1) {
+    return rack.x;
+  } else if (index === 2 || index === 3) {
+    return rack.x + rack.width - item.width;
+  } else {
+    return rack.x + (rack.width - item.width) / 2;
   }
 };
+
+const calculateItemYPosition = (rack, item, index) => {
+  if (index === 0 || index === 1) {
+    return rack.y + (rack.height - item.height) / 2;
+  } else if (index === 2 || index === 3) {
+    return rack.y + (rack.height - item.height) / 2;
+  } else {
+    return rack.y + rack.height - item.height;
+  }
+};
+
+const showCustomAlert = (content) => {
+  var str="鏋跺彿   :      111\n" +
+    "闀�     :      111\n" +
+    "瀹�     :      111\n" +
+    "鍘�     :      111\n"+
+    "鐜荤拑ID :      111\n"+
+    "鑶滅郴   :      111\n";
+
+  Swal.fire({
+    title: '鐜荤拑淇℃伅',
+    html: '<pre>' + str + '</pre>',
+    customClass: {
+      popup: 'format-pre'
+    }
+  });
+};
+
+const showRectInfo = (rectInfo) => {
+  const content = rectInfo.item.content;
+  showCustomAlert(content);
+};
+
 </script>
 
 <style scoped>
@@ -98,7 +91,6 @@
   margin-left: 20px;
   width: 500px;
   margin-top: 10px;
-  /* background-color: antiquewhite; */
 }
 .rack-rect:hover {
   cursor: pointer;
@@ -114,5 +106,4 @@
   padding: 10px;
   font-size: 14px;
 }
-
-</style>
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue b/UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue
index 1c43b71..b340c83 100644
--- a/UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue
+++ b/UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue
@@ -1,6 +1,6 @@
 <template>
   <div class="glass-rack">
-    <div>
+    <div >
       <svg width="500" height="500" xmlns="http://www.w3.org/2000/svg">
         <g stroke="null" id="Layer_1">
           <!-- 浣跨敤 v-for 寰幆娓叉煋鏁版嵁 -->
@@ -11,9 +11,9 @@
               :width="rack.width" 
               :height="rack.height" 
               :fill="rack.fillColor"
-          :data-index="index" 
-          class="rack-rect" 
-          @click="showRectInfo(rack)"
+              :data-index="index" 
+              class="rack-rect" 
+              @click="showRectInfo(rack)"
             />
             <rect 
               :x="calculateItemXPosition(rack, rack.item, index)" 
@@ -31,70 +31,66 @@
   </div>
 </template>
 
-<script>
+<script setup>
 import Swal from 'sweetalert2'
-export default {
-  data() {
-    return {
-      racks: [
-        { x: 50, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: 'NG123456' } },
-        { x: 50, y: 270, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 20, width: 10, fillColor: 'yellow', content: 'NG1234567' } },
-        { x: 280, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 30, width: 20, fillColor: 'yellow', content: 'NG12345678' } },
-        { x: 280, y: 270, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 35, width: 23, fillColor: 'yellow', content: 'NG123456910' } },
-        { x: 140, y: 420, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 30, width: 100, fillColor: 'yellow', content: 'NG1234561454' } }
-      ]
-    };
-  },
-  methods: {
-    calculateItemXPosition(rack, item, index) {
-      if (index === 0 || index === 1) {
-        return rack.x;
-      } else if (index === 2 || index === 3) {
-        return rack.x + rack.width - item.width;
-      } else {
-        return rack.x + (rack.width - item.width) / 2;
-      }
-    },
-    calculateItemYPosition(rack, item, index) {
-      if (index === 0 || index === 1) {
-        return rack.y + (rack.height - item.height) / 2;
-      } else if (index === 2 || index === 3) {
-        return rack.y + (rack.height - item.height) / 2;
-      } else {
-        return rack.y + rack.height - item.height;
-      }
-    },
-    showCustomAlert(content) {
-      var str="鏋跺彿   :      111\n" +
-        "闀�     :      111\n" +
-        "瀹�     :      111\n" +
-        "鍘�     :      111\n"+
-        "鐜荤拑ID :      111\n"+
-        "鑶滅郴   :      111\n";
 
-Swal.fire({
-  title: '鐜荤拑淇℃伅',
-  html: '<pre>' + str + '</pre>',
-  customClass: {
-    popup: 'format-pre'
-  }
-});
+const racks = [
+  { x: 50, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: 'NG123456' } },
+  { x: 50, y: 270, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 20, width: 10, fillColor: 'yellow', content: 'NG1234567' } },
+  { x: 280, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 30, width: 20, fillColor: 'yellow', content: 'NG12345678' } },
+  { x: 280, y: 270, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 35, width: 23, fillColor: 'yellow', content: 'NG123456910' } },
+  { x: 140, y: 420, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 30, width: 100, fillColor: 'yellow', content: 'NG1234561454' } }
+];
 
-  },
-    showRectInfo( rectInfo) {
-  const content = rectInfo.item.content;
-  this.$nextTick(() => {
-    this.showCustomAlert(content);
-  });
-},
+const calculateItemXPosition = (rack, item, index) => {
+  if (index === 0 || index === 1) {
+    return rack.x;
+  } else if (index === 2 || index === 3) {
+    return rack.x + rack.width - item.width;
+  } else {
+    return rack.x + (rack.width - item.width) / 2;
   }
 };
+
+const calculateItemYPosition = (rack, item, index) => {
+  if (index === 0 || index === 1) {
+    return rack.y + (rack.height - item.height) / 2;
+  } else if (index === 2 || index === 3) {
+    return rack.y + (rack.height - item.height) / 2;
+  } else {
+    return rack.y + rack.height - item.height;
+  }
+};
+
+const showCustomAlert = (content) => {
+  var str="鏋跺彿   :      111\n" +
+    "闀�     :      111\n" +
+    "瀹�     :      111\n" +
+    "鍘�     :      111\n"+
+    "鐜荤拑ID :      111\n"+
+    "鑶滅郴   :      111\n";
+
+  Swal.fire({
+    title: '鐜荤拑淇℃伅',
+    html: '<pre>' + str + '</pre>',
+    customClass: {
+      popup: 'format-pre'
+    }
+  });
+};
+
+const showRectInfo = (rectInfo) => {
+  const content = rectInfo.item.content;
+  showCustomAlert(content);
+};
+
 </script>
 
 <style scoped>
 .glass-rack {
   margin-left: 20px;
   width: 500px;
+  margin-top: 10px;
 }
 .rack-rect:hover {
   cursor: pointer;
@@ -110,5 +106,4 @@
   padding: 10px;
   font-size: 14px;
 }
-
-</style>
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue b/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
index ed2d9fb..717290e 100644
--- a/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
+++ b/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
@@ -29,7 +29,7 @@
 if (typeof WebSocket === "undefined") {
   console.log("鎮ㄧ殑娴忚鍣ㄤ笉鏀寔WebSocket");
 } else {
-  let socketUrl = "ws://" + "localhost"+":88" + "/api/unLoadGlass/api/talk/" + viewname;
+  let socketUrl = "ws://" + "localhost"+":88" + "/api/talk/" + viewname;
   if (socket != null) {
     socket.close();
     socket = null;
@@ -49,8 +49,6 @@
 if (!msg.data) {
 return; // 濡傛灉鏀跺埌绌烘暟鎹紝鍒欑洿鎺ヨ繑鍥烇紝涓嶆墽琛屽悗缁�昏緫
 }
-
-
 
     let obj = JSON.parse(msg.data);
 
diff --git a/UI-Project/vite.config.js b/UI-Project/vite.config.js
index e0a49a0..a8c2934 100644
--- a/UI-Project/vite.config.js
+++ b/UI-Project/vite.config.js
@@ -22,7 +22,7 @@
     https: false,
     proxy: {
       '/api': {
-        target: 'http://10.153.19.150:88/',
+        target: 'localhost:88/',
         changeOrigin: true,
         rewrite: (path) => path.replace(/^\/api/, '/'),
       },
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/Plchome.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/Plchome.java
index feb80b2..4969337 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/Plchome.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/Plchome.java
@@ -2,18 +2,24 @@
 
 import cn.hutool.json.JSONObject;
 
+import com.mes.downworkstation.service.DownWorkstationService;
 import com.mes.tools.WebSocketServer;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
 import java.util.function.Supplier;
 
 @Component
 public class Plchome extends Thread {
     private int i = 1;
     private static final Logger log = LogManager.getLogger(Plchome.class);
+    @Autowired
+    private  DownWorkstationService downWorkstationService;
 
    // private final Supplier<DownGlassLogic> plcServiceSupplier;
 
@@ -27,8 +33,19 @@
         while (!Thread.currentThread().isInterrupted()) {
             try {
                 i++;
-                Thread.sleep(100);
-
+                Thread.sleep(1000);
+                JSONObject jsonObject = new JSONObject();
+                System.out.println(77);
+                downWorkstationService = WebSocketServer.applicationContext.getBean(DownWorkstationService.class);
+                List<Map<String, Object>>  yy= downWorkstationService.getTotalGlassDimensionsByWorkstation();
+                jsonObject.append("data", yy);
+                ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("unloadglass");
+                if (sendwServer != null) {
+                    for (WebSocketServer webserver : sendwServer) {
+                        webserver.sendMessage(jsonObject.toString());
+                        log.info("鍑嗗鍚� WebSocket 鏈嶅姟鍣ㄥ彂閫佹秷鎭�: {}", jsonObject.toString());
+                    }
+                }
 
 
             } catch (InterruptedException e) {
@@ -36,16 +53,7 @@
                 e.printStackTrace();
             }
 
-            JSONObject jsonObject = new JSONObject();
-            // System.out.println(arraylist6);
-            jsonObject.append("data", 1);
-            ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("unloadglass");
-            if (sendwServer != null) {
-                for (WebSocketServer webserver : sendwServer) {
-                    webserver.sendMessage(jsonObject.toString());
-                    log.info("鍑嗗鍚� WebSocket 鏈嶅姟鍣ㄥ彂閫佹秷鎭�: {}", jsonObject.toString());
-                }
-            }
+
 
         }
     }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java
index d2755ae..c0bf80e 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java
@@ -23,7 +23,7 @@
 
 //       new PLCAutoMes().start();
 //
-//    new Plchome().start();
+// new Plchome().start();
 
     }
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java
index 390db66..cd1141e 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassTaskService.java
@@ -24,4 +24,12 @@
     DownGlassTask selectLastOutCacheInfo(String endCell);
 
     Integer insertCacheTask(DownGlassTask downGlassTask);
+
+    List<DownGlassTask> selectInputTaskCache();
+
+    /**
+     * 鏌ヨ鍑虹墖浠诲姟
+     * @return
+     */
+    List<DownGlassTask> selectOutTaskCache();
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java
index 7c72877..8389edd 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassTaskServiceImpl.java
@@ -78,6 +78,20 @@
 
 
 
+    @Override
+    public List<DownGlassTask> selectInputTaskCache(){
+        return baseMapper.selectList(new QueryWrapper<DownGlassTask>().eq("task_status",0).eq("task_type",1));
+    }
+
+    /**
+     * 鏌ヨ寰呭嚭鐗囦换鍔�
+     * @return
+     */
+    @Override
+    public List<DownGlassTask> selectOutTaskCache(){
+        return baseMapper.selectList(new QueryWrapper<DownGlassTask>().eq("task_status",0).eq("task_type",2));
+    }
+
 
 
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/DownStorageCageDetails.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/DownStorageCageDetails.java
index 4cc400f..c5b11a4 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/DownStorageCageDetails.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/DownStorageCageDetails.java
@@ -40,7 +40,7 @@
     /**
      * 鐜荤拑id
      */
-    private Integer glassId;
+    private String glassId;
 
     /**
      * 灏忕墖鍦ㄦ牸鍐呯殑椤哄簭
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 5f6b04d..49a3bd9 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
@@ -1,6 +1,7 @@
 package com.mes.downstorage.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.downglassinfo.entity.DownGlassTask;
 import com.mes.downstorage.entity.DownStorageCageDetails;
 import com.mes.glassinfo.entity.GlassInfo;
@@ -17,6 +18,6 @@
  * @since 2024-03-27
  */
 @Mapper
-public interface DownStorageCageDetailsMapper extends BaseMapper<DownStorageCageDetails> {
+public interface DownStorageCageDetailsMapper extends MPJBaseMapper<DownStorageCageDetails> {
 
 }
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 f282a63..277a0aa 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
@@ -13,5 +13,5 @@
     //淇敼鐞嗙墖绗煎唴淇℃伅
     boolean updatedownStorageCageDetails(DownStorageCageDetails details);
 
-
+    List<DownStorageCageDetails> CacheOut(int start, int end);
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java
index 6a0dfdc..c3c26cb 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java
@@ -26,8 +26,9 @@
     List<DownStorageCageDetails> getIsExistIntoCacheByLayout(Integer tempering_layout_id, double width);
     List<DownStorageCageDetails> getIsExistIntoCacheByflowcardid(String flowcardid, double width);
     List<DownStorageCageDetails> IsExistIntoCacheByflowcardid(String flowcardid, double width);
-
+    List<Map> selectCacheEmpty();
     boolean processInto(String Number);
     boolean processOut();
 
+
 }
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 f20f903..8a1813a 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
@@ -2,28 +2,29 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.yulichang.query.MPJQueryWrapper;
-import com.github.yulichang.wrapper.MPJAbstractLambdaWrapper;
+
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.github.yulichang.query.MPJQueryWrapper;
-import com.mes.downstorage.entity.DownStorageCage;
+
 import com.mes.downstorage.entity.DownStorageCageDetails;
 import com.mes.downstorage.mapper.DownStorageCageDetailsMapper;
-import com.mes.downstorage.mapper.DownStorageCageMapper;
+
 import com.mes.downstorage.service.DownStorageCageDetailsService;
 import com.mes.glassinfo.entity.GlassInfo;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.util.List;
 import java.util.Map;
-
+@Slf4j
 @Service
 public class DownStorageCageDetailsServiceImpl extends ServiceImpl<DownStorageCageDetailsMapper, DownStorageCageDetails> implements DownStorageCageDetailsService {
 
 
-
+    @Autowired
+    private DownStorageCageDetailsMapper downStorageCageDetailsMapper;
     @Override
     public void addDownStorageCageDetails(DownStorageCageDetails details) {
         this.save(details);
@@ -38,7 +39,21 @@
     }
 
 
-
+    @Override
+    public List<DownStorageCageDetails> CacheOut(int start, int end) {
+        log.info("鍗曠墖鎯呭喌鏍规嵁浼犲叆鐨勫伐浣嶆煡璇㈢鍚堟寜鐓уぇ灏忓嚭鐗囩殑灏忕墖");
+        return downStorageCageDetailsMapper.selectJoinList(
+                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCageDetails>()
+                        .select("t.*")
+                        .leftJoin("(SELECT t1.* FROM down_storage_cage_details t1 "
+                                + "JOIN (SELECT flow_card_id, MAX(width) AS max_width FROM glass_info GROUP BY flow_card_id) t "
+                                + "ON t1.flow_card_id = t.flow_card_id WHERE t1.width = t.max_width) t3"
+                                + " ON t.glass_id = t3.glass_id")
+                        .leftJoin("down_workstation t4 ON t3.flow_card_id = t4.flow_card_id")
+                        .isNull(Boolean.parseBoolean("t.glass_id"), "SELECT glass_id FROM down_glass_info")
+                        .between("t4.workstation_id", start, end)
+        );
+    }
 
 
 
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java
index e91289e..de2da46 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java
@@ -11,6 +11,7 @@
 import com.mes.downstorage.entity.DownStorageCageDetails;
 import com.mes.downstorage.mapper.DownStorageCageDetailsMapper;
 import com.mes.downstorage.mapper.DownStorageCageMapper;
+import com.mes.downstorage.service.DownStorageCageDetailsService;
 import com.mes.downstorage.service.DownStorageCageService;
 import com.mes.glassinfo.entity.GlassInfo;
 import com.mes.glassinfo.service.GlassInfoService;
@@ -38,10 +39,11 @@
 
     @Autowired
     private GlassInfoService glassInfoService;
-    @Autowired
-    private DownStorageCageService downStorageCageService;
+
     @Autowired
     private DownGlassTaskService downGlassTaskService;
+    @Autowired
+    private DownStorageCageDetailsService downStorageCageDetailsService;
     @Override
     public List<Map> gettask(){
         downStorageCageMapper.selectList(null);
@@ -65,20 +67,17 @@
     }
 
 
-//    @Override
-//    public List<Map> getCacheOut(int start, int end) {
-//        log.info(" 鏍规嵁浼犲叆鐨勫伐浣嶆煡璇㈢鍚堟寜鐓ч『搴忓拰澶у皬鍑虹墖鐨勫皬鐗�");
-//        List<Map> map = downStorageCageMapper.selectJoinList(
-//                Map.class, new MPJQueryWrapper<DownStorageCageDetails>()
-//                        .select("escd.*")
-//                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
-//                        .leftJoin("down_workstation dw on escd.flow_card_id = dw.flow_card_id")
-//                        .isNotNull("escd.slot")
-//                        .between("dw.workstation_id", start, end)
-//                        .orderByAsc("escd.tempering_layout_id, escd.tempering_feed_sequence")
-//        );
-//        return map;
-//    }
+    @Override
+    public List<Map> selectCacheEmpty(){
+        return baseMapper.selectJoinList(
+                Map.class,new MPJQueryWrapper<DownStorageCage>().selectAll(DownStorageCage.class)
+                        .select("escd.glass_id","escd.flow_card_id","escd.width","escd.height")
+                        .leftJoin("down_storage_cage_details escd on t.device_id=escd.device_id and t.slot=escd.slot")
+                        .isNull("escd.slot")
+        );
+    }
+
+
 
 
 
@@ -196,22 +195,24 @@
     }
 
 
-//    @Override
-//    public List<DownStorageCageDetails> Out() {
-//        log.info("鍗曠墖鎯呭喌   鏍规嵁浼犲叆鐨勫伐浣嶆煡璇㈢鍚堟寜鐓уぇ灏忓嚭鐗囩殑灏忕墖");
-//
-//
-//        return  downStorageCageMapper.selectJoinList(
-//                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCageDetails>()
-//                        .select("escd.*")
-//                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
-//                        .leftJoin("down_workstation dw on escd.flow_card_id = dw.flow_card_id")
-//                        .isNotNull("escd.slot")
-//
-//                        .orderByDesc("escd.width")
-//                        .orderByDesc("escd.height")
-//        );
-//    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
 
@@ -235,6 +236,21 @@
     }
 
 
+    public DownGlassTask createDownGlassTask(DownStorageCageDetails glassInfo, String startCell, String endCell,String taskType ) {
+        DownGlassTask downGlassTask = new DownGlassTask();
+        downGlassTask.setId(glassInfo.getId());
+        downGlassTask.setStartCell(startCell);
+        downGlassTask.setTaskType(taskType);
+        downGlassTask.setEndCell(endCell);
+        downGlassTask.setWidth(glassInfo.getWidth());
+        downGlassTask.setHeight(glassInfo.getHeight());
+        downGlassTask.setFilmsid(String.valueOf(glassInfo.getFilmsid()));
+        downGlassTask.setThickness(glassInfo.getThickness());
+        downGlassTask.setFlowCardId(glassInfo.getFlowCardId());
+
+        return downGlassTask;
+    }
+
 
     @Override
     public boolean processInto(String Number) {
@@ -246,7 +262,12 @@
         if (GlassInfo != null) {
             //鍚屾壘鍒板悓娴佺▼鍗¢檮杩戠┖鏍�
             List<DownStorageCageDetails> list = getIsExistIntoCacheByflowcardid(GlassInfo.getFlowcardId(),  GlassInfo.getWidth());
-            if (list.size() > 0) {
+
+            List<Map> selectCacheEmpty=selectCacheEmpty();
+
+            //            list<Map> list=selectCacheEmpty();
+//            list<Map> = downStorageCageService.selectCacheEmpty();
+            if (selectCacheEmpty.size() > 0) {
                 //瀛樺湪绌烘牸
                 //1.鐢熸垚浠诲姟锛�  璧峰浣嶇疆0   缁撴潫浣嶇疆this.slot  浠诲姟绫诲瀷 1   锛堣繘鐗囦换鍔★級
                 //2.鍥炲 1杩涚墖
@@ -285,10 +306,11 @@
 
         PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
 
-        List<DownStorageCageDetails> list = getCacheOut(1, 5);
-        List<DownStorageCageDetails> list2 = getCacheOut(6, 10);
-        List<DownStorageCageDetails> list3 = getCacheOut(1, 10);
+        List<DownStorageCageDetails> list = downStorageCageDetailsService.CacheOut(1, 5);
+        List<DownStorageCageDetails> list2 = downStorageCageDetailsService.CacheOut(6, 10);
+        List<DownStorageCageDetails> list3 = downStorageCageDetailsService.CacheOut(1, 10);
         //鑷姩缁戝畾鏋跺瓙
+
 
 
 
@@ -303,16 +325,8 @@
 
 //                selectInfo.insertCacheTask(item3.getGlassId() + "", "0", endcell, "2", item3.getWidth(), item3.getHeight(), item3.getFilmsid(), item3.getThickness(), item3.getFlowCardId());
 
-                DownGlassTask downGlassTask = new DownGlassTask();
-                downGlassTask.setId(item3.getId()); // 璁剧疆鐜荤拑ID
-                downGlassTask.setStartCell("0");
-                downGlassTask.setEndCell(endcell);
-                downGlassTask.setTaskType("2");
-                downGlassTask.setWidth(item3.getWidth()); // 璁剧疆鐜荤拑瀹藉害
-                downGlassTask.setHeight(item3.getHeight()); // 璁剧疆鐜荤拑楂樺害
-                downGlassTask.setFilmsid(item3.getFilmsid()+""); // 璁剧疆鑶淚D
-                downGlassTask.setThickness(item3.getThickness()); // 璁剧疆鐜荤拑鍘氬害
-                downGlassTask.setFlowCardId(item3.getFlowCardId()); // 璁剧疆娴佺▼鍗″彿
+                DownGlassTask downGlassTask =createDownGlassTask(item3,"0",endcell,"2");
+
                 downGlassTaskService.insertCacheTask(downGlassTask);
                 S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), SendEndcell);
                 S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
@@ -321,22 +335,14 @@
         }
 
 
-        //鍚屾椂璇锋眰 浼樺厛鍚庣鍑虹墖
-        else if (!list3.isEmpty()) {
-            DownStorageCageDetails item3 = list3.get(0);
+        //濡傛灉鍚屾椂鍓嶅悗绔兘绌洪棽 浼樺厛鍚庣鍑虹墖骞朵笖浼樺厛婊℃灦
+        else if (!list2.isEmpty()) {
+
+            DownStorageCageDetails item3 = list2.get(0);
             String endcell = "11";
             String SendEndcell = "1";
             // selectInfo.insertCacheTask(item3.getGlassId() + "", "0", endcell, "2", item3.getWidth(), item3.getHeight(), item3.getFilmsid(), item3.getThickness(), item3.getFlowCardId());
-            DownGlassTask downGlassTask = new DownGlassTask();
-            downGlassTask.setId(item3.getId()); // 璁剧疆鐜荤拑ID
-            downGlassTask.setStartCell("0");
-            downGlassTask.setEndCell(endcell);
-            downGlassTask.setTaskType("2");
-            downGlassTask.setWidth(item3.getWidth()); // 璁剧疆鐜荤拑瀹藉害
-            downGlassTask.setHeight(item3.getHeight()); // 璁剧疆鐜荤拑楂樺害
-            downGlassTask.setFilmsid(item3.getFilmsid()+""); // 璁剧疆鑶淚D
-            downGlassTask.setThickness(item3.getThickness()); // 璁剧疆鐜荤拑鍘氬害
-            downGlassTask.setFlowCardId(item3.getFlowCardId()); // 璁剧疆娴佺▼鍗″彿
+            DownGlassTask downGlassTask =createDownGlassTask(item3,"0",endcell,"2");
             downGlassTaskService.insertCacheTask(downGlassTask);
 
             S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), SendEndcell);
@@ -350,37 +356,19 @@
 
             // 鍑哄埌 G06
             //selectInfo.insertCacheTask(item.getGlassId() + "", "0", "06", "2", item.getWidth(), item.getHeight(), item.getFilmsid(), item.getThickness(), item.getFlowCardId());
-            DownGlassTask downGlassTask = new DownGlassTask();
-            downGlassTask.setId(item.getId()); // 璁剧疆鐜荤拑ID
-            downGlassTask.setStartCell("0");
-            downGlassTask.setEndCell("06");
-            downGlassTask.setTaskType("2");
-            downGlassTask.setWidth(item.getWidth()); // 璁剧疆鐜荤拑瀹藉害
-            downGlassTask.setHeight(item.getHeight()); // 璁剧疆鐜荤拑楂樺害
-            downGlassTask.setFilmsid(item.getFilmsid()+""); // 璁剧疆鑶淚D
-            downGlassTask.setThickness(item.getThickness()); // 璁剧疆鐜荤拑鍘氬害
-            downGlassTask.setFlowCardId(item.getFlowCardId()); // 璁剧疆娴佺▼鍗″彿
-            downGlassTaskService.insertCacheTask(downGlassTask);
+
+            DownGlassTask downGlassTask =createDownGlassTask(item,"0","06","2");
             S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), "1");
             S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
             return true;
 
-            // 鎸夌収椤哄簭绗﹀悎鍚庣鍑虹墖
+            // 鎸夌収澶у皬绗﹀悎鍚庣鍑虹墖
         } else if (!list2.isEmpty()) {
             DownStorageCageDetails item2 = list2.get(0);
 
             // 鍑哄埌 G11
             // selectInfo.insertCacheTask(item2.getGlassId() + "", "0", "11", "2", item2.getWidth(), item2.getHeight(), item2.getFilmsid(), item2.getThickness(), item2.getFlowCardId());
-            DownGlassTask downGlassTask = new DownGlassTask();
-            downGlassTask.setId(item2.getId()); // 璁剧疆鐜荤拑ID
-            downGlassTask.setStartCell("0");
-            downGlassTask.setEndCell("11");
-            downGlassTask.setTaskType("2");
-            downGlassTask.setWidth(item2.getWidth()); // 璁剧疆鐜荤拑瀹藉害
-            downGlassTask.setHeight(item2.getHeight()); // 璁剧疆鐜荤拑楂樺害
-            downGlassTask.setFilmsid(item2.getFilmsid()+""); // 璁剧疆鑶淚D
-            downGlassTask.setThickness(item2.getThickness()); // 璁剧疆鐜荤拑鍘氬害
-            downGlassTask.setFlowCardId(item2.getFlowCardId()); // 璁剧疆娴佺▼鍗″彿
+            DownGlassTask downGlassTask =createDownGlassTask(item2,"0","11","2");
             downGlassTaskService.insertCacheTask(downGlassTask);
 
             S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), "2");
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java
index e7677f6..eee88eb 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java
@@ -131,6 +131,24 @@
 
 
 
+    @ApiOperation("鑾峰彇宸ヤ綅鏄剧ず鍥�")
+    @GetMapping("/getwo")
+    public ResponseEntity<Map<String, Object>> getwo() {
+        Map<String, Object> responseData = new HashMap<>();
+        try {
+            List<Map<String, Object>> data = downWorkstationService.getTotalGlassDimensionsByWorkstation();
+            responseData.put("code", 200);
+            responseData.put("msg", "鎴愬姛");
+            responseData.put("data", data);
+            return ResponseEntity.ok(responseData);
+        } catch (Exception e) {
+            responseData.put("code", 500);
+            responseData.put("msg", "澶辫触");
+            responseData.put("data", null);
+            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(responseData);
+        }
+    }
+
 
 
 
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstionAndDownGlassinfo.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstionAndDownGlassinfo.java
new file mode 100644
index 0000000..0ebb340
--- /dev/null
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstionAndDownGlassinfo.java
@@ -0,0 +1,89 @@
+package com.mes.downworkstation.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-03-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+
+public class DownWorkstionAndDownGlassinfo
+{
+    /**
+     * 涓嬬墖宸ヤ綅琛╥d
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 宸ヤ綅id
+     */
+    private Integer workstationId;
+
+    /**
+     * 娴佺▼鍗″彿
+     */
+    private String flowCardId;
+
+    /**
+     * 璁惧id
+     */
+    private Integer deviceId;
+
+    /**
+     * 鍚敤鐘舵��
+     */
+    private Integer enableState;
+
+    /**
+     * 宸ヤ綔鐘舵��
+     */
+    private Integer workState;
+
+
+    @TableField("total_quantity")
+    private Integer totalquantity;
+
+    @TableField("racks_number")
+    private Integer Racksnumber;
+
+
+
+
+    /**
+     * 椤哄簭
+     */
+    private Integer sequence;
+
+    /**
+     * 瀹�
+     */
+    private Double width;
+
+    /**
+     * 楂�
+     */
+    private Double height;
+    private Double totalwidth;
+
+    private Double totalheight;
+    /**
+     * 鍘氬害
+     */
+    private Double thickness;
+
+
+    private String Filmsid;
+}
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationMapper.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationMapper.java
index e25d9c8..75bcc83 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationMapper.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/mapper/DownWorkstationMapper.java
@@ -3,6 +3,7 @@
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.downworkstation.entity.DownWorkstation;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Select;
@@ -24,7 +25,7 @@
 @InterceptorIgnore(tenantLine = "true")
 @DS("hangzhoumes") // 鎸囧畾浣跨敤 hangzhoumes 鏁版嵁婧�
 
-public interface DownWorkstationMapper extends BaseMapper<DownWorkstation> {
+public interface DownWorkstationMapper extends MPJBaseMapper<DownWorkstation> {
 
 
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java
index 900f7c8..3487d4d 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/DownWorkstationService.java
@@ -4,6 +4,7 @@
 import com.mes.downworkstation.entity.DownWorkstation;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -28,5 +29,5 @@
 
     int updateFlowCardIdAndCount(String flowCardId, int glassInfoCount, int workstationId);
     void insertdownglassinfo();
-
+  List<Map<String, Object>> getTotalGlassDimensionsByWorkstation();
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
index d66fe52..afcddd1 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
@@ -3,23 +3,29 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.query.MPJQueryWrapper;
 import com.mes.downglassinfo.entity.DownGlassInfo;
 import com.mes.downglassinfo.entity.DownGlassTask;
+import com.mes.downglassinfo.mapper.DownGlassInfoMapper;
 import com.mes.downglassinfo.service.DownGlassInfoService;
 import com.mes.downglassinfo.service.DownGlassTaskService;
 import com.mes.downworkstation.entity.DownWorkstation;
 import com.mes.downworkstation.entity.DownWorkstationTask;
+import com.mes.downworkstation.entity.DownWorkstionAndDownGlassinfo;
 import com.mes.downworkstation.mapper.DownWorkstationMapper;
 import com.mes.downworkstation.mapper.DownWorkstationTaskMapper;
 import com.mes.downworkstation.service.DownWorkstationService;
 import com.mes.downworkstation.service.DownWorkstationTaskService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-
+@Slf4j
 @Service
 public class DownWorkstationServiceImpl extends ServiceImpl<DownWorkstationMapper, DownWorkstation> implements DownWorkstationService {
 
@@ -29,6 +35,8 @@
     private DownWorkstationTaskMapper downWorkstationTaskMapper;
     @Autowired
     private DownGlassInfoService downGlassInfoService;
+    @Autowired
+    private DownGlassInfoMapper downGlassInfoMapper;
     @Autowired
     private DownGlassTaskService downGlassTaskService;
 
@@ -50,6 +58,37 @@
         DownWorkstation result = baseMapper.selectOne(queryWrapper);
         return result != null ? result.getTotalquantity() : 0;
     }
+//宸ヤ綅鏄剧ず
+    @Override
+    public List<Map<String, Object>> getTotalGlassDimensionsByWorkstation() {
+        MPJQueryWrapper<DownWorkstionAndDownGlassinfo> queryWrapper = new MPJQueryWrapper<>();
+        queryWrapper.select("t.workstation_id", "t.flow_card_id", "COALESCE(SUM(b.width), 0) AS totalwidth", "COALESCE(SUM(b.height), 0) AS totalheight")
+                .leftJoin("down_glass_info b on t.flow_card_id = b.flow_card_id")
+                .groupBy("t.workstation_id", "t.flow_card_id");
+
+        List<DownWorkstionAndDownGlassinfo> workstationList = downWorkstationMapper.selectJoinList(DownWorkstionAndDownGlassinfo.class, queryWrapper);
+
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (DownWorkstionAndDownGlassinfo downWorkstionAndDownGlassinfo : workstationList) {
+            Map<String, Object> rack = new HashMap<>();
+
+            // 鍒涘缓瀛愰」锛坕tem锛夊璞�
+            Map<String, Object> item = new HashMap<>();
+            item.put("height",  downWorkstionAndDownGlassinfo.getTotalheight()); // 璁剧疆瀛愰」楂樺害锛屾牴鎹疄闄呮儏鍐佃缃�
+            item.put("width",  downWorkstionAndDownGlassinfo.getTotalwidth()); // 璁剧疆瀛愰」瀹藉害锛屾牴鎹疄闄呮儏鍐佃缃�
+            item.put("fillColor", "yellow"); // 璁剧疆瀛愰」棰滆壊
+            item.put("content", downWorkstionAndDownGlassinfo.getFlowCardId()); // 浣跨敤娴佺▼鍗″彿浣滀负瀛愰」鍐呭
+
+            rack.put("item", item); // 灏嗗瓙椤瑰璞℃斁鍏ヨ揣鏋跺璞′腑
+
+            result.add(rack); // 灏嗚揣鏋跺璞℃坊鍔犲埌缁撴灉鍒楄〃涓�
+            //log.info("璐ф灦瀵硅薄: {}", rack);
+        }
+
+        return result; // 杩斿洖鏈�缁堢粨鏋�
+    }
+
+
 
 //    @Override
 //    public int getTotalQuantity(int workstationId) {
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/entity/GlassInfo.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/entity/GlassInfo.java
index 9af1d08..46acc64 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/entity/GlassInfo.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/entity/GlassInfo.java
@@ -128,6 +128,8 @@
      * 鐢熶骇瑙勫垯id
      */
     private Integer ruleId;
-
-
+    /**
+     * 鐜荤拑id
+     */
+    private String glassId;
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
index d0ea64c..ef1b9ca 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
@@ -32,7 +32,7 @@
     @Override
     public int getGlassInfoCountByFlowCardId(String flowCardId) {
         QueryWrapper<GlassInfo> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("flowcard_id", flowCardId);
+        queryWrapper.eq("flow_card_id", flowCardId);
 
         return baseMapper.selectCount(queryWrapper);
     }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/com/mes/downworkstation/service/DownWorkstationServiceTest.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/com/mes/downworkstation/service/DownWorkstationServiceTest.java
deleted file mode 100644
index ac7d50d..0000000
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/com/mes/downworkstation/service/DownWorkstationServiceTest.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.mes.downworkstation.service;
-
-import junit.framework.TestCase;
-
-public class DownWorkstationServiceTest extends TestCase {
-
-    public void testUpdateFlowCardIdAndCount() {
-    }
-}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java
index a3074f4..f598dcb 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/test/java/mes/UnloadGlassModuleApplicationTest.java
@@ -2,6 +2,7 @@
 
 import com.mes.UnLoadGlassApplication;
 import com.mes.downstorage.entity.DownStorageCageDetails;
+import com.mes.downstorage.service.DownStorageCageDetailsService;
 import com.mes.downstorage.service.impl.DownStorageCageServiceImpl;
 
 import com.mes.downworkstation.service.DownWorkstationService;
@@ -29,6 +30,8 @@
 
     @Autowired
     DownStorageCageServiceImpl downStorageCageServiceImpl;
+    @Autowired
+    DownStorageCageDetailsService downStorageCageDetailsService;
     @Autowired
     DownWorkstationServiceImpl downWorkstationServiceImpl;
 
@@ -71,4 +74,36 @@
 
     }
 
+    @Test
+    public void testin() {
+        log.info("娴嬭瘯杩涚墖");
+        downStorageCageServiceImpl.getIsExistIntoCacheByflowcardid("NG2023005",500);
+
+    }
+
+
+    @Test
+    public void selectCacheEmpty() {
+        log.info("娴嬭瘯杩涚墖");
+        downStorageCageServiceImpl.selectCacheEmpty();
+
+    }
+
+    @Test
+    public void CacheEmpty() {
+        log.info("娴嬭瘯鍑虹墖");
+        downStorageCageDetailsService.CacheOut(1,5);
+
+    }
+
+
+    @Test
+    public void getTotalGlassDimensionsByWorkstation() {
+        log.info("宸ヤ綅鏄剧ず");
+        downWorkstationServiceImpl.getTotalGlassDimensionsByWorkstation();
+
+    }
+
+
+
 }
\ No newline at end of file

--
Gitblit v1.8.0