From cbec6e3f120344f6f2d69808aaabb447bb52a693 Mon Sep 17 00:00:00 2001
From: wu <731351411@qq.com>
Date: 星期四, 22 八月 2024 09:45:32 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 UI-Project/src/views/UnLoadGlass/PrintCustomLabelSemi1.vue                                                                           |  227 ++++++++
 hangzhoumesParent/gateway/src/main/resources/application.yml                                                                         |    2 
 UI-Project/src/views/Identify/identify.vue                                                                                           |   95 ++
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/request/Reportingdamage.java                                    |    4 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassInfoController.java        |    5 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml                                              |    2 
 hangzhoumesParent/common/servicebase/src/main/resources/mapper/FlowCardMapper.xml                                                    |   32 +
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml                                                   |    2 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/ReportingWorkServiceImpl.java                             |    1 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/mapper/xml/EngineeringMapper.xml                              |    5 
 UI-Project/src/views/UnLoadGlass/loadmachinerack.vue                                                                                 |   85 ++
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/Orderdetail.java                                             |   40 -
 hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java                          |   12 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml                                  |   95 +++
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java |    4 
 UI-Project/src/lang/companyInfo.js                                                                                                   |    4 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/ReportingWorkController.java                                |    5 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassInfoService.java              |   19 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java                           |    2 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/FlowCardServiceImpl.java                                  |    5 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java     |   65 ++
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/Engineering.java                                       |  101 +++
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml                                                  |    2 
 UI-Project/src/views/UnLoadGlass/PrintFlow.vue                                                                                       |  156 ++---
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml                                                 |    4 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java                |   10 
 UI-Project/config.js                                                                                                                 |    8 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/FlowCardService.java                                           |    2 
 hangzhoumesParent/JsonFile/PlcTemperingGlass.json                                                                                    |  132 ++++
 UI-Project/src/utils/constants.js                                                                                                    |    4 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/FlowCardMapper.java                                             |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml                                          |    4 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java                                            |    4 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application.yml                                                |    2 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java                            |   45 +
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/mapper/EngineeringMapper.java                                 |   17 
 UI-Project/src/views/PurchaseReturn/purchaseStorage.vue                                                                              |   88 ++
 hangzhoumesParent/JsonFile/PlcdownGlass.json                                                                                         |  149 +++++
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java                                      |    4 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/OptimizeEngineering.java                               |   78 ++
 UI-Project/src/views/PurchaseReturn/purchaseReturn.vue                                                                               |   98 ++
 41 files changed, 1,383 insertions(+), 238 deletions(-)

diff --git a/UI-Project/config.js b/UI-Project/config.js
index 9a4f798..4fc6899 100644
--- a/UI-Project/config.js
+++ b/UI-Project/config.js
@@ -1,9 +1,9 @@
 export default {
- serverUrl: "10.153.19.150:88/api",
-//  serverUrl: "192.168.1.199:88/api",
+//  serverUrl: "10.153.19.150:88/api",
+ serverUrl: "192.168.1.199:88/api",
 //  serverUrl: "127.0.0.1:88/api",
-  serverUrl2: "10.153.19.150:88"
-  // serverUrl2: "192.168.1.199:88"
+  // serverUrl2: "10.153.19.150:88"
+  serverUrl2: "192.168.1.199:88"
     // serverUrl2: "127.0.0.1:88"
 
   //serverUrl:"res.abeim.cn"
diff --git a/UI-Project/src/lang/companyInfo.js b/UI-Project/src/lang/companyInfo.js
index 1fc09b3..cdbfc7b 100644
--- a/UI-Project/src/lang/companyInfo.js
+++ b/UI-Project/src/lang/companyInfo.js
@@ -42,8 +42,8 @@
             labelType3: '鎴愬搧鏍囩3',
             labelValue3:3,
             printFlowCard: {
-                patch:'姝e搧',
-                lackOf:'娆″搧',
+                patch:'姝�',
+                lackOf:'娆�',
                 processingNote: (itemtextarea) => {
                     return  `${itemtextarea.processing_note}`
                 },
diff --git a/UI-Project/src/utils/constants.js b/UI-Project/src/utils/constants.js
index b551cfb..c104075 100644
--- a/UI-Project/src/utils/constants.js
+++ b/UI-Project/src/utils/constants.js
@@ -1,4 +1,4 @@
-//  export const WebSocketHost = "192.168.1.199";
-export const WebSocketHost = "10.153.19.150";
+ export const WebSocketHost = "192.168.1.199";
+// export const WebSocketHost = "10.153.19.150";
 // export const WebSocketHost = "127.0.0.1";
 export const host = "88";
\ No newline at end of file
diff --git a/UI-Project/src/views/Identify/identify.vue b/UI-Project/src/views/Identify/identify.vue
index d973668..cfac9d0 100644
--- a/UI-Project/src/views/Identify/identify.vue
+++ b/UI-Project/src/views/Identify/identify.vue
@@ -21,7 +21,7 @@
       @click="showDialog(rect.glass_id)"  
       :style="{ position: 'absolute', 
       top: `${rect.y_axis}px`, left: `${rect.x_axis}px`, width: `${rect.width}px`, height: `${rect.height}px`,
-      backgroundColor: getRectColor(rect.glass_state)
+      backgroundColor: rect.isActive ? '#ADFF2F' : getRectColor(rect.glass_state)
        }"  
     >
      <!-- 绠ご -->  
@@ -34,7 +34,7 @@
   </div> 
    </div>
   </el-scrollbar>
-  <el-dialog v-model="blind" top="30vh" width="15%" style="text-align: center;">
+  <el-dialog v-model="blind" top="30vh" width="15%" style="text-align: center;" @close="handleDialogClose">
         <el-button type="warning" plain :icon="Delete" @click="handleDamage(currentGlassId)"  style="width: 140px;margin-left: 10px;">
           {{ $t('order.dilapidation') }}
         </el-button>
@@ -76,7 +76,16 @@
 function showDialog(glassId: number) {  
   currentGlassId.value = glassId;  
   blind.value = true;  
+  adjustedRects.value = adjustedRects.value.map(rect =>  
+    rect.glass_id === glassId ? { ...rect, isActive: true } : rect  
+  ); 
 }  
+const handleDialogClose = () => {  
+  adjustedRects.value = adjustedRects.value.map(rect => ({  
+    ...rect,  
+    isActive: false  
+  }));  
+}
 // 鐮存崯
 const handleDamage = async () => {
   try  {
@@ -206,32 +215,74 @@
     }  
   });  
 }
+// const connectWebSocket = () => {  
+//   if (!webSocket) {  
+// const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/cacheGlass`;
+//     webSocket = new WebSocket(socketUrl);  
+//     webSocket.onmessage = (event) => {  
+//       const data = JSON.parse(event.data);   
+//       const scaleFactor =  1621.78/6000; 
+//         adjustedRects.value = data.currentCutTerritory[0].map(rect => ({  
+//         ...rect,
+//         x_axis: (6000 -(rect.x_axis + rect.width)) * scaleFactor,
+//         y_axis: rect.y_axis * 0.17,
+//         width: rect.width * scaleFactor ,
+//         widtha: rect.width ,
+//         heighta: rect.height ,
+//         height: rect.height * 0.165 ,
+//         glass_state: rect.glass_state,
+//         isActive: false
+//       }));
+//     };  
+//     webSocket.onerror = (error) => {  
+//       console.error('WebSocket Error:', error);  
+//     };
+//     webSocket.onclose = () => {  
+//       console.log('WebSocket Connection Closed');  
+//       // 鍙互閫夋嫨閲嶆柊杩炴帴  
+//     };  
+//   }  
+// };  
 const connectWebSocket = () => {  
   if (!webSocket) {  
 const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/cacheGlass`;
     webSocket = new WebSocket(socketUrl);  
     webSocket.onmessage = (event) => {  
-      const data = JSON.parse(event.data);   
-      const scaleFactor =  1621.78/6000; 
-        adjustedRects.value = data.currentCutTerritory[0].map(rect => ({  
-        ...rect,
-        x_axis: (6000 -(rect.x_axis + rect.width)) * scaleFactor,
-        y_axis: rect.y_axis * 0.17,
-        width: rect.width * scaleFactor ,
-        widtha: rect.width ,
-        heighta: rect.height ,
-        height: rect.height * 0.165 ,
-        glass_state: rect.glass_state
-      }));
+      const data = JSON.parse(event.data);  
+      const scaleFactor = 1621.78 / 6000;  
+      const newRects = data.currentCutTerritory[0].map(rect => {  
+        const existingRect = adjustedRects.value.find(r => r.glass_id === rect.glass_id);  
+        if (existingRect) {  
+          return {  
+            ...existingRect,  
+            x_axis: (6000 - (rect.x_axis + rect.width)) * scaleFactor,  
+            y_axis: rect.y_axis * 0.17,  
+            width: rect.width * scaleFactor,  
+            height: rect.height * 0.165,  
+            widtha: rect.width,  
+            heighta: rect.height,  
+            glass_state: rect.glass_state,  
+            // 淇濇寔 isActive 鐘舵�佷笉鍙�  
+          };  
+        } else {  
+          // 濡傛灉涓嶅瓨鍦紝鍒欐坊鍔犳柊鐭╁舰锛岄粯璁� isActive 涓� false  
+          return {  
+            ...rect,  
+            x_axis: (6000 - (rect.x_axis + rect.width)) * scaleFactor,  
+            y_axis: rect.y_axis * 0.17,  
+            width: rect.width * scaleFactor,  
+            height: rect.height * 0.165,  
+            widtha: rect.width,  
+            heighta: rect.height,  
+            glass_state: rect.glass_state,  
+            isActive: false,  
+            glass_id: rect.glass_id,
+          };  
+        }
+      });
+      adjustedRects.value = newRects;  
     };  
-    webSocket.onerror = (error) => {  
-      console.error('WebSocket Error:', error);  
-    };
-    webSocket.onclose = () => {  
-      console.log('WebSocket Connection Closed');  
-      // 鍙互閫夋嫨閲嶆柊杩炴帴  
-    };  
-  }  
+  }
 };  
   
 onMounted(() => {  
diff --git a/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
index 1b332f2..3d790cf 100644
--- a/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
+++ b/UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
@@ -25,9 +25,10 @@
 const socketUrl = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/temperingGlass`;
 const handleMessage = (data) => {
 // 杩涚倝涓�
-  if(data.intoGlass!=null){
-    adjustedRects1.value =  data.intoGlass[0].map(rect => {  
-      const scaleFactor =  794.67/5087; 
+  if(data.intoGlass2!=null){
+    adjustedRects2.value =  data.intoGlass2[0].map(rect => {  
+        isActive: false
+        const scaleFactor =  794.67/5087; 
         let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta,widtha,heighta;;
         let newX = rect.yCoordinate; 
       if (rect.width < rect.height) {
@@ -63,9 +64,10 @@
       }else{
         adjustedRects1.value = ''
       }
-  if(data.intoGlass2!=null){
-    adjustedRects2.value =  data.intoGlass2[0].map(rect => {  
-      const scaleFactor =  794.67/5087; 
+  if(data.intoGlass!=null){
+      adjustedRects1.value =  data.intoGlass[0].map(rect => {  
+        isActive: false
+        const scaleFactor =  794.67/5087; 
       let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta,widtha,heighta;;
       let newX = rect.yCoordinate; 
       if (rect.width < rect.height) {
@@ -104,7 +106,8 @@
   // 杩涚倝鍓�
   if(data.waitingGlass!=null){
     adjustedRectsa.value = data.waitingGlass[0].map(rect => {  
-      const scaleFactor =  1621.78/5190; 
+        isActive: false
+        const scaleFactor =  1621.78/5190; 
   let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta,widtha,heighta;; 
   let newX = rect.yCoordinate; 
       if (rect.width < rect.height) {
@@ -143,8 +146,10 @@
     // 宸插嚭鐐�
   if(data.outGlass!=null){
     adjustedRectsb.value = data.outGlass[0].map(rect => {  
-      const scaleFactor =  1621.78/5190; 
-      let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta,widtha,heighta;;
+        isActive: false
+        const scaleFactor =  1621.78/5190; 
+      const scaleFactory =  550/2800; 
+      let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta,widtha,heighta,newY;
   let newX = rect.yCoordinate; 
       if (rect.width < rect.height) {
         widtha = rect.height;
@@ -155,21 +160,23 @@
       }
   if (rect.angle === 0) {  
     adjustedWidth = widtha * scaleFactor;  
-    adjustedHeight = heighta * 0.16;  
+    adjustedHeight = heighta * scaleFactory;  
     // adjustedWidtha = widtha;  
     // adjustedHeighta = heighta;  
     // newX = 5190 - (rect.yCoordinate + widtha); 
+    newY = 2800 - (rect.xCoordinate + heighta); 
   } else {  
     adjustedWidth = heighta * scaleFactor;  
-    adjustedHeight = widtha * 0.16;  
+    adjustedHeight = widtha * scaleFactory;  
     // adjustedWidtha = heighta;  
     // adjustedHeighta = widtha;  
     // newX = 5190 - (rect.yCoordinate + heighta);  
+    newY = 2800 - (rect.xCoordinate + widtha); 
   }  
   return {  
         ...rect, // 澶嶅埗鍘熷瀵硅薄鐨勫叾浠栧睘鎬�  
         x: newX * scaleFactor,
-        y: rect.xCoordinate * 0.16,
+        y: newY * scaleFactory,
         width: adjustedWidth,  
         height: adjustedHeight,  
         widtha: rect.width, 
@@ -224,11 +231,56 @@
 //   if (adjustedRects[0].engineerId != null) {
 //     engineerIdDisplay = adjustedRects[0].engineerId
 //   }
-function showDialog(rect) {  
+function showDialog1(rect) {  
   currentGlassId.value = rect.glassId;  
   currenttemperingFeedSequence.value = rect.temperingFeedSequence;  
   blind.value = true;  
-}  
+  adjustedRects1.value = adjustedRects1.value.map(rect =>  
+    rect.glass_id === glassId ? { ...rect, isActive: true } : rect  
+  ); 
+} 
+function showDialog2(rect) {  
+  currentGlassId.value = rect.glassId;  
+  currenttemperingFeedSequence.value = rect.temperingFeedSequence;  
+  blind.value = true;  
+  adjustedRects2.value = adjustedRects2.value.map(rect =>  
+    rect.glass_id === glassId ? { ...rect, isActive: true } : rect  
+  ); 
+} 
+function showDialoga(rect) {  
+  currentGlassId.value = rect.glassId;  
+  currenttemperingFeedSequence.value = rect.temperingFeedSequence;  
+  blind.value = true;  
+  adjustedRectsa.value = adjustedRectsa.value.map(rect =>  
+    rect.glass_id === glassId ? { ...rect, isActive: true } : rect  
+  ); 
+} 
+function showDialogb(rect) {  
+  currentGlassId.value = rect.glassId;  
+  currenttemperingFeedSequence.value = rect.temperingFeedSequence;  
+  blind.value = true;  
+  adjustedRectsb.value = adjustedRectsb.value.map(rect =>  
+    rect.glass_id === glassId ? { ...rect, isActive: true } : rect  
+  ); 
+} 
+const handleDialogClose = () => {  
+  adjustedRects1.value = adjustedRects1.value.map(rect => ({  
+    ...rect,  
+    isActive: false  
+  }));  
+  // adjustedRects2.value = adjustedRects2.value.map(rect => ({  
+  //   ...rect,  
+  //   isActive: false  
+  // }));  
+  // adjustedRectsa.value = adjustedRectsa.value.map(rect => ({  
+  //   ...rect,  
+  //   isActive: false  
+  // }));  
+  adjustedRectsb.value = adjustedRectsb.value.map(rect => ({  
+    ...rect,  
+    isActive: false  
+  }));  
+} 
 // 鐮存崯
 const handleDamage = async () => {
   try  {
@@ -274,14 +326,14 @@
       <div  
       v-for="(rect, index) in adjustedRects1"
       :key="index"  
-      @click="showDialog(rect)"  
+      @click="showDialog1(rect)"  
       class="rect"
       :style="{ position: 'absolute', 
        top: `${rect.ycoordinate}px`, 
        left: `${rect.xcoordinate}px`,
         width: `${rect.width}px`, 
         height: `${rect.height}px`,
-        backgroundColor: rect.state === 5 ? '#911005' : 'lightblue' }"
+        backgroundColor: rect.isActive ? '#ADFF2F' : rect.state === 5 ? '#911005' : 'lightblue' }"
     >
      <div  class="centered-text">
     <div >{{ rect.glassId }}</div>  
@@ -302,14 +354,14 @@
       <div  
       v-for="(rect, index) in adjustedRects2"
       :key="index"
-      @click="showDialog(rect)"  
+      @click="showDialog2(rect)"  
       class="rect"
       :style="{ position: 'absolute', 
        top: `${rect.ycoordinate}px`, 
        left: `${rect.xcoordinate}px`, 
        width: `${rect.width}px`, 
        height: `${rect.height}px`,
-       backgroundColor: rect.state === 5 ? '#911005' : 'lightblue' }"
+       backgroundColor: rect.isActive ? '#ADFF2F' : rect.state === 5 ? '#911005' : 'lightblue' }"
        >
      <div  class="centered-text">
     <div >{{ rect.glassId }}</div>  
@@ -334,11 +386,11 @@
       <div  
       v-for="(rect, index) in adjustedRectsa"  
       :key="index"  
-      @click="showDialog(rect)"  
+      @click="showDialoga(rect)"  
       class="rect"  
       :style="{ position: 'absolute',  top: `${rect.y}px`, left: `${rect.x}px`,
        width: `${rect.width}px`, height: `${rect.height}px`,
-      backgroundColor: getRectColora(rect.state) }">
+      backgroundColor: rect.isActive ? '#ADFF2F' : getRectColora(rect.state) }">
     <div  class="centered-text">
     <div>{{ rect.glassId }}</div>  
     <div >{{ rect.flowCardId }}</div>  
@@ -361,11 +413,11 @@
       <div  
       v-for="(rect, index) in adjustedRectsb"  
       :key="index"  
-      @click="showDialog(rect)"  
+      @click="showDialogb(rect)"  
       class="rect"  
       :style="{ position: 'absolute',  top: `${rect.y}px`, left: `${rect.x}px`,
        width: `${rect.width}px`, height: `${rect.height}px`,
-      backgroundColor: getRectColorb(rect.state) }">
+      backgroundColor: rect.isActive ? '#ADFF2F' : getRectColorb(rect.state) }">
        <!-- backgroundColor: rect.state === 4 ? '#911005' : '#f8e3c5' }"> -->
      <div  class="centered-text">
     <div >{{ rect.glassId }}</div>  
@@ -379,7 +431,7 @@
    </el-card>
 </div>
  
-<el-dialog v-model="blind" top="30vh" width="15%" style="text-align: center;">
+<el-dialog v-model="blind" top="30vh" width="15%" style="text-align: center;" @close="handleDialogClose">
         <el-button type="warning" plain :icon="Delete" @click="handleDamage"  style="width: 140px;margin-left: 10px;">
           {{ $t('order.dilapidation') }}
         </el-button>
diff --git a/UI-Project/src/views/PurchaseReturn/purchaseStorage.vue b/UI-Project/src/views/PurchaseReturn/purchaseStorage.vue
index 8f28ec9..7f51276 100644
--- a/UI-Project/src/views/PurchaseReturn/purchaseStorage.vue
+++ b/UI-Project/src/views/PurchaseReturn/purchaseStorage.vue
@@ -4,18 +4,18 @@
 import {useRouter} from "vue-router"
 import { ElMessage, ElMessageBox } from 'element-plus'
 import request from "@/utils/request"
-
+ 
 import { ref, onMounted, onBeforeUnmount,onUnmounted } from 'vue';  
 import { WebSocketHost ,host} from '@/utils/constants'
 import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService';
 const adjustedRects = ref([]);
 const currentGlassId = ref(null);
 const currenttemperingFeedSequence = ref(null);
-
+ 
 const dialogFormVisible = ref(true)
 const dialogFormVisiblea = ref(false)
 const blind = ref(false)
-
+ 
 const getTableRow = (row,type) =>{
   switch (type) {
     case 'edit' :{
@@ -39,6 +39,7 @@
       const scaleFactor =  1621.78/5190; 
       let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta,widtha,heighta;
       let newX = rect.yCoordinate; 
+      
       if (rect.width < rect.height) {
         widtha = rect.height;
         heighta = rect.width;
@@ -67,17 +68,79 @@
     height: adjustedHeight,  
     widtha: rect.width, 
     heighta: rect.height,
+    // isActive: false,
   };  
 });
   }
 };
+// const handleMessage = (data) => {  
+//   // 鍋囪 data.overGlass[0] 鏄煩褰㈡暟缁�  
+//   const newRects = data.overGlass[0].map(newRect => ({  
+//     ...newRect, 
+//     const scaleFactor = 1621.78 / 5190;  
+//     let widtha, heighta, adjustedWidth, adjustedHeight;  
+  
+//     // 浜ゆ崲瀹藉害鍜岄珮搴︼紙濡傛灉鐭╁舰鏄�滄í鍚戔�濈殑锛�  
+//     if (rect.width < rect.height) {  
+//       widtha = rect.height;  
+//       heighta = rect.width;  
+//     } else {  
+//       widtha = rect.width;  
+//       heighta = rect.height;  
+//     }  
+  
+//     // 鏍规嵁瑙掑害璋冩暣瀹藉害鍜岄珮搴�  
+//     if (rect.angle === 0) {  
+//       adjustedWidth = widtha * scaleFactor;  
+//       adjustedHeight = heighta * 0.16;  
+//     } else {  
+//       adjustedWidth = heighta * scaleFactor;  
+//       adjustedHeight = widtha * 0.16;  
+//     }  
+  
+//     // 娉ㄦ剰锛氳繖閲屽彲鑳介渶瑕侀噸鏂拌�冭檻 newX 鐨勮绠楁柟寮�  
+//     // 鏆傛椂淇濈暀涓哄師濮� yCoordinate 鐨勫鐞嗭紝浣嗛�氬父 x 鍧愭爣涓嶅簲鏉ヨ嚜 y 鍧愭爣  
+//     let newX = rect.yCoordinate; // 鍙兘鏄釜閿欒锛岄櫎闈炴湁鐗瑰畾鐢ㄩ��  
+  
+//     // 杩斿洖鏂扮殑鐭╁舰瀵硅薄  
+//     return {  
+//       ...rect, // 澶嶅埗鍘熷鐭╁舰鐨勬墍鏈夊睘鎬�  
+//       xcoordinate: newX * scaleFactor, // 娉ㄦ剰锛氳繖閲岀殑 newX 鍙兘闇�瑕佽皟鏁�  
+//       ycoordinate: rect.xCoordinate * 0.16,  
+//       width: adjustedWidth,  
+//       height: adjustedHeight,  
+//       widtha,  
+//       heighta,  
+//       isActive: false, // 榛樿涓洪潪婵�娲荤姸鎬�  
+//       // 鍙互娣诲姞鍏朵粬闇�瑕佺殑灞炴��  
+//     }
+//   }));  
+  
+  // 浣跨敤鏂版暟鎹洿鏂� adjustedRects  
+  // 娉ㄦ剰锛氳繖閲屾垜浠亣璁� adjustedRects.value 涓殑鐭╁舰涔熸湁 id 灞炴��  
+//   adjustedRects.value = adjustedRects.value.map(oldRect => {  
+//     const updatedRect = newRects.find(newRect => newRect.id === oldRect.id);  
+//     if (updatedRect) {  
+//       // 濡傛灉鎵惧埌浜嗗搴旂殑鐭╁舰锛屽垯鍚堝苟灞炴�у拰淇濈暀鍘熷婵�娲荤姸鎬侊紙濡傛灉闇�瑕佺殑璇濓級  
+//       // 浣嗗湪杩欎釜渚嬪瓙涓紝鎴戜滑鎬绘槸灏� isActive 璁剧疆涓� false  
+//       return {  
+//         ...oldRect,  
+//         ...updatedRect, // 鍚堝苟鏂扮煩褰㈢殑灞炴�э紝浣嗕細瑕嗙洊 isActive  
+//         isActive: false, // 鎬绘槸璁剧疆涓� false锛岄櫎闈炴偍鏈夋洿澶嶆潅鐨勯�昏緫  
+//       };  
+//     }  
+//     // 濡傛灉娌℃湁鎵惧埌瀵瑰簲鐨勭煩褰紝鍒欎繚鐣欏師鏍�  
+//     return oldRect;  
+//   }).concat(newRects.filter(newRect => !adjustedRects.value.some(oldRect => oldRect.id === newRect.id)));  
+//   // concat 鐢ㄤ簬娣诲姞閭d簺鍦� adjustedRects.value 涓笉瀛樺湪鐨勬柊鐭╁舰  
+// };
 function updateRectColors() {  
   adjustedRects.value.forEach(rect => {  
     if (rect.glassId === glassId) {  
       rect.state = 8;
     }
   });  
-}  
+} 
 function getRectColora(state) {  
   switch (state) { 
     case 3:  
@@ -89,10 +152,16 @@
   }  
 }
 function showDialog(rect) {  
+  rect.isActive = true; 
   currentGlassId.value = rect.glassId;  
   currenttemperingFeedSequence.value = rect.temperingFeedSequence;  
   blind.value = true;  
 }  
+const handleDialogClose = () => {  
+  adjustedRects.value.forEach(rect => {  
+    rect.isActive = false; // 鍏抽棴瀵硅瘽妗嗘椂閲嶇疆鎵�鏈夌煩褰㈢殑 isActive 鐘舵��  
+  });  
+}; 
 // 鐮存崯
 const handleDamage = async () => {
   try  {
@@ -130,7 +199,7 @@
   closeWebSocket();
 });
 </script>
-
+ 
 <template>
   <div style="margin-top: 10px;">
 <div>
@@ -147,7 +216,8 @@
       class="rect"  
       :style="{ position: 'absolute',  top: `${rect.ycoordinate}px`, left: `${rect.xcoordinate}px`,
        width: `${rect.width}px`, height: `${rect.height}px`,
-      backgroundColor: getRectColora(rect.state) }">
+      backgroundColor: rect.isActive ? '#ADFF2F' : getRectColora(rect.state) 
+      }">
      <div  class="centered-text">
     <div >{{ rect.glassId }}</div>  
     <div >{{ rect.flowCardId }}</div>  
@@ -160,15 +230,15 @@
    </div>
     </el-card>
     </div>
-    <el-dialog v-model="blind" top="30vh" width="15%" style="text-align: center;">
+    <el-dialog v-model="blind" top="30vh" width="15%" style="text-align: center;" @close="handleDialogClose">
         <el-button type="warning" plain :icon="Delete" @click="handleDamage"  style="width: 140px;margin-left: 10px;">
           {{ $t('order.dilapidation') }}
         </el-button>
   </el-dialog> 
   </div>
-
+ 
 </template>
-
+ 
 <style scoped>
 #boxa{
   border: 1px solid rgb(119, 116, 116);
diff --git a/UI-Project/src/views/UnLoadGlass/PrintCustomLabelSemi1.vue b/UI-Project/src/views/UnLoadGlass/PrintCustomLabelSemi1.vue
new file mode 100644
index 0000000..2927b8f
--- /dev/null
+++ b/UI-Project/src/views/UnLoadGlass/PrintCustomLabelSemi1.vue
@@ -0,0 +1,227 @@
+<script setup>
+import request from "@/utils/request"
+import {ElDatePicker, ElMessage} from "element-plus"
+import {nextTick, onMounted, onUnmounted, reactive, ref, watch} from "vue"
+import {Search} from "@element-plus/icons-vue"
+// import {useRouter} from 'vue-router'
+// import {changeFilterEvent, filterChanged} from "@/hook"
+// import {useI18n} from 'vue-i18n'
+// import deepClone from "@/utils/deepClone";
+import companyInfo from "@/lang/companyInfo"
+
+const company = companyInfo()
+//璇█鑾峰彇
+const {t} = useI18n()
+// let router = useRouter()
+let produceList = ref([])
+let labelList = ref([])
+let titleList = ref([])
+let dataList = ref([])
+let list = ref([])
+let lastList=ref([])
+
+let filterData = ref({})
+
+const data = ref({
+  printList: []
+})
+
+
+// const {currentRoute} = useRouter()
+// const route = currentRoute.value
+// data.value.printList = JSON.parse(route.query.printList)
+// const type = route.query.type
+// const faceOrientation = route.query.faceOrientation
+// const lableType = route.query.lableType
+let props = defineProps({
+  printFlowCardId: null,
+  printLayer: null,
+})
+
+onMounted(async () => {
+  console.log(props.printFlowCardId,props.printLayer)
+  const response = await request.post('/unLoadGlass/downGlassInfo/downGlassLabelPrint',{
+        flowCardId:props.printFlowCardId,
+        layer:props.printLayer
+    });
+        if (response.code == 200) {
+          console.log("lastList.value",response.data)
+          lastList.value=response.data;
+          
+        } else {
+          ElMessage.error(response.message);
+        }
+
+    }
+
+)
+
+
+// // 鎵撳嵃鏂规硶
+// const printFlowCard = () => {
+//   // 闇�瑕佹墦鍗扮殑灞�閮ㄥ尯鍩熻祴浜�"print-wrap"鐨刬d
+//   let el = document.getElementById("printFlowCard");
+//   let doc = document;
+//   let body = doc.body || doc.getElementsByTagName("body")[0];
+//   let printId = "print-" + Date.now();
+
+//   // 鍒涘缓鏃犲壇浣滅敤鐨勬墦鍗板鍣�(鍥犱笉纭畾椤甸潰鐨勬墦鍗板厓绱犳湁鏃犲叾瀹冩牱寮�)
+//   let content = doc.createElement("div");
+//   content.id = printId;
+
+//   // 鏍峰紡鎺у埗涓庢墦鍗版棤鍏崇殑鍏冪礌闅愯棌
+//   let style = doc.createElement("style");
+//   style.innerHTML =
+//       "body>#" +
+//       printId +
+//       "{display:none}@media print{" +
+//       "@page {" +
+//       "    size: auto; " +
+//       "    margin: 2mm 2mm 2mm 2mm;  " +
+//       "  }body>:not(#" +
+//       printId +
+//       "){display:none !important}body>#" +
+//       printId +
+//       "{display:block;padding-top:1px}}";
+//   //
+//   content.innerHTML = el.outerHTML;
+//   // // console.log("el.outerHTML", el.outerHTML);
+//   body.appendChild(style);
+
+//   // 涓巗tyle鍏冪礌璁剧疆鐨勬牱寮忕浉閰嶅悎
+//   // 鎶婃墦鍗板唴瀹圭殑鍏冪礌娣诲姞鍒癰ody(浣滀负body鐨勫瓙鍏冪礌锛屽彲鐢╞ody鐨勫瓙閫夋嫨鍣� '>' 鎺у埗鎵撳嵃鏍峰紡)
+//   body.appendChild(content);
+//   setTimeout(() => {
+//     window.print();
+//     body.removeChild(content);
+//     body.removeChild(style);
+//   }, 20);
+// }
+</script>
+
+<template>
+  <!-- <el-button id="printButton" @click="printFlowCard();">鎵撳嵃</el-button> -->
+  <div id="printFlowCard" >
+    <template v-for="(item,index) in lastList">
+    <div id="entirety" >
+     
+      <div class="row1">
+        <div style="position: absolute;font-weight: bold;margin-left: 5px;" v-if="item.tempering_layout_id!=null">{{ item.tempering_layout_id }}/{{ item.tempering_feed_sequence }}</div>
+        <span>{{ item.customer_name }}</span>&nbsp;
+        <span>{{ item.order_id }}</span>
+        <span v-if="item.process.includes('澶硅兌')">鑳剁墖</span>
+        <span v-else-if="item.process.includes('涓┖')">涓┖</span>
+<span v-else-if="item.process.includes('鐧惧彾')">鐧惧彾</span>
+<span v-else></span>
+        <div style="position: absolute;font-weight: bold;margin-left: 210px;margin-top: -26px;" >{{ index+1 }}</div>
+      </div>
+      <div  class="row2">
+        <span>{{ item.project }}</span>&nbsp;
+        <span>{{ item.building_number }}</span>
+      </div>
+      <div class="row3" v-if="item.other_columns!=null&&(JSON.parse(item.other_columns).S02!=null)">{{JSON.parse(item.other_columns).S02}}={{item.quantity}}</div>
+      <div class="row3" v-else>{{Math.round(item.width)}}x{{Math.round(item.height)}}={{item.quantity}}</div>
+      <div class="row5">
+        <span>{{item.glass_child }}</span>&nbsp;
+        <span>{{ item.processing_note }}</span>
+      </div>
+    </div>
+    <div style="width: 20px" v-if="index%2===0"></div>
+    <div class="print-page" v-else></div>
+    </template>
+  </div>
+
+</template>
+
+<style scoped>
+* {
+  margin: 0;
+  padding: 0;
+}
+
+#printButton {
+  /*margin-top: -20px;*/
+  width: 100px;
+}
+
+#printFlowCard {
+  display: flex;
+  justify-content: left;
+  flex-wrap: wrap;
+  width: 500px;
+}
+
+#entirety{
+  text-align: center;
+  width: 46%;
+  height: 170px;
+  border: black 1px;
+  word-wrap: break-word;
+  margin-left: 10px;
+}
+
+.row1 {
+  font-size: 12pt;
+  font-weight: bold;
+  height: 35px;
+}
+.row1 span {
+  font-size: 12pt;
+}
+
+.row2 {
+  font-size: 14pt;
+  font-weight: bold;
+  height: 35px;
+}
+.row2 span {
+  font-size: 12pt;
+}
+span {
+  font-size: 12pt;
+  font-weight: bold;
+}
+
+.row3 {
+  margin-top: -5px;
+  height: 35px;
+  font-size: 22pt;
+  font-weight: bolder;
+  line-height: 35px;
+}
+
+.row5 {
+  height: 50px;
+  font-weight: bold;
+  font-size: 12pt;
+  /* margin-left: 20px; */
+}
+.row5 span {
+  font-size: 12pt;
+}
+
+.row6 {
+  height: 15px;
+  font-weight: bold;
+  font-size: 8pt;
+}
+
+
+
+
+
+@media print {
+  .print-page {
+    page-break-after: always; /* 娣诲姞鍒嗛〉绗︼紝鍦ㄦ瘡涓猵rint-page div涔嬪悗鍒嗛〉 */
+  }
+  div {
+    page-break-inside: avoid;
+  }
+  @page {
+    size: auto;  /* auto is the initial value */
+    margin: 2mm 2mm 2mm 2mm;  /* this affects the margin in the printer settings */
+
+  }
+}
+
+</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/UnLoadGlass/PrintFlow.vue b/UI-Project/src/views/UnLoadGlass/PrintFlow.vue
index 235e147..709f477 100644
--- a/UI-Project/src/views/UnLoadGlass/PrintFlow.vue
+++ b/UI-Project/src/views/UnLoadGlass/PrintFlow.vue
@@ -69,45 +69,6 @@
 }
 
 
-// const printFlowCard = () => {
-//   // 闇�瑕佹墦鍗扮殑灞�閮ㄥ尯鍩熻祴浜�"print-wrap"鐨刬d
-//   let el = document.getElementById("printFlowCard");
-//   let doc = document;
-//   let body = doc.body || doc.getElementsByTagName("body")[0];
-//   let printId = "print-" + Date.now();
-
-//   // 鍒涘缓鏃犲壇浣滅敤鐨勬墦鍗板鍣�(鍥犱笉纭畾椤甸潰鐨勬墦鍗板厓绱犳湁鏃犲叾瀹冩牱寮�)
-//   let content = doc.createElement("div");
-//   content.id = printId;
-
-//   // 鏍峰紡鎺у埗涓庢墦鍗版棤鍏崇殑鍏冪礌闅愯棌
-//   let style = doc.createElement("style");
-//   style.innerHTML =
-//       "body>#" +
-//       printId +
-//       "{display:none}@media print{" +
-//       "@page {" +
-//       "    size: auto; " +
-//       "    margin: 5mm 5mm 5mm 5mm; " +
-//       "  }body>:not(#" +
-//       printId +
-//       "){display:none !important}body>#" +
-//       printId +
-//       "{display:block;padding-top:1px}}";
-//   //
-//   content.innerHTML = el.outerHTML;
-//   // // console.log("el.outerHTML", el.outerHTML);
-//   body.appendChild(style);
-
-//   // 涓巗tyle鍏冪礌璁剧疆鐨勬牱寮忕浉閰嶅悎
-//   // 鎶婃墦鍗板唴瀹圭殑鍏冪礌娣诲姞鍒癰ody(浣滀负body鐨勫瓙鍏冪礌锛屽彲鐢╞ody鐨勫瓙閫夋嫨鍣� '>' 鎺у埗鎵撳嵃鏍峰紡)
-//   body.appendChild(content);
-//   setTimeout(() => {
-//     window.print();
-//     body.removeChild(content);
-//     body.removeChild(style);
-//   }, 20);
-// }
 
 onMounted(async () => {
   console.log(props.printFlowCardId,props.printLayer)
@@ -162,30 +123,20 @@
     <table v-for="(item,id) in produceList" id="contentTable" :key="id">
       <thead>
       <tr v-for="(itemFlow,index) in item.detail" :key="index">
-        <td  v-if="like='1'"  colspan="26">
+        <td  colspan="29">
           <div style="float: left;"><input style="border: none;font-size: 28px;width: 70px;margin: 5px  "/></div>
           <div id="bj" style="float: right;font-size: 28px">{{ id + 1 }}</div>
           <div>{{ company.companyName }}</div>
           <div>鐢熶骇娴佺▼鍗�</div>
-          <div v-if="itemFlow.technologyNumber!=''" style="text-align: right;font-weight: bolder">娴佺▼鍗″彿锛� {{
+          <div v-if="itemFlow.technologyNumberMerge!=''" style="text-align: right;font-weight: bolder">
+            {{itemFlow.otherRemarks}}&nbsp;&nbsp;
+            娴佺▼鍗″彿锛� {{
               itemFlow.process_id
-            }}/{{ itemFlow.technologyNumber }} 
+            }}/{{ itemFlow.technologyNumberMerge }} 鍏� {{ flowCardCount }} 鏋�
           </div>
-          <div v-else style="text-align: right;font-weight: bolder">娴佺▼鍗″彿锛� {{
-              itemFlow.process_id
-            }}/{{ itemFlow.technologyNumber }} 
-          </div>
-        </td>
-        <td v-else colspan="24">
-          <div style="float: left;"><input style="border: none;font-size: 28px;width: 70px  "/></div>
-          <div id="bj" style="float: right;font-size: 28px">{{ id + 1 }}</div>
-          <div>{{ company.companyName }}</div>
-          <div>鐢熶骇娴佺▼鍗�</div>
-          <div v-if="itemFlow.technologyNumber!=''" style="text-align: right;font-weight: bolder">娴佺▼鍗″彿锛� {{
-              itemFlow.process_id
-            }}/{{ itemFlow.technologyNumber }} 鍏� {{ flowCardCount }} 鏋�
-          </div>
-          <div v-else style="text-align: right;font-weight: bolder">娴佺▼鍗″彿锛� {{
+          <div v-else style="text-align: right;font-weight: bolder">
+            {{itemFlow.otherRemarks}}&nbsp;&nbsp;
+            娴佺▼鍗″彿锛� {{
               itemFlow.process_id
             }}/{{ itemFlow.technologyNumber }} 鍏� {{ flowCardCount }} 鏋�
           </div>
@@ -197,8 +148,7 @@
         <td class="tdNowrap">椤圭洰鍚嶇О锛�</td>
         <td colspan="2">{{ items.project }}</td>
         <td class="tdNowrap">宸ヨ壓娴佺▼锛�</td>
-        <td colspan="19" v-if="like='1'" style="width: 500px">{{ items.process }}</td>
-        <td colspan="17" v-else style="width: 500px">{{ items.process }}</td>
+        <td colspan="22"  style="width: 500px">{{ items.process }}</td>
       </tr>
       <tr v-for="(itemTr,index) in item.detail" :key="index">
         <td class="tdNowrap">纾ㄨ竟绫诲瀷锛�</td>
@@ -206,15 +156,13 @@
         <td class="tdNowrap">鍗曠墖鍚嶇О锛�</td>
         <td colspan="2">{{ itemTr.glass_child }}</td>
         <td class="tdNowrap">浜у搧鍚嶇О锛�</td>
-        <td v-if="like=='1'" colspan="19">{{ itemTr.product_name }}</td>
-        <td v-else colspan="17">{{ itemTr.product_name }}</td>
+        <td colspan="22">{{ itemTr.product_name }}</td>
       </tr>
       <tr>
         <td rowspan='2'>搴忓彿</td>
         <td rowspan='2'>缂栧彿</td>
-        <td v-if="like!=null" rowspan="2">灏忕墖椤哄簭</td>
-        <td v-else style="display: none;" rowspan="2">灏忕墖椤哄簭</td>
-        <td rowspan='2'>瀹�*楂�</td>
+        <td rowspan="2">灏忕墖椤哄簭</td>
+        <td rowspan='2' style="width: 90px">瀹�*楂�</td>
         <td rowspan='2'>鏁伴噺</td>
         <td rowspan='2'>闈㈢Н</td>
         <td rowspan='2'>鍛ㄩ暱</td>
@@ -240,6 +188,10 @@
         <td>{{ company.printLabel.printFlowCard.lackOf }}</td>
         <td>{{ company.printLabel.printFlowCard.patch }}</td>
         <td>{{ company.printLabel.printFlowCard.lackOf }}</td>
+        <td>{{ company.printLabel.printFlowCard.patch }}</td>
+        <td>{{ company.printLabel.printFlowCard.lackOf }}</td>
+        <td>{{ company.printLabel.printFlowCard.patch }}</td>
+        <td>{{ company.printLabel.printFlowCard.lackOf }}</td>
       </tr>
       </thead>
       <tbody>
@@ -247,16 +199,11 @@
       <tr v-for="(itemDatile,index) in item.detailList" :key="index">
         <td>{{ itemDatile.order_number }}</td>
         <td>{{ itemDatile.s01Value }}</td>
-        <td v-if="like=='1'">{{ itemDatile.technology_number }}</td>
-        <td v-else style="display: none"></td>
+        <td>{{ itemDatile.technology_number }}</td>
         <td>{{ itemDatile.child_width }}</td>
         <td class="item" style="width: 5%;height: 100%;">
-          <!-- <el-input v-model="itemDatile.quantity" style="border: none" @keyup="handleSummary()"></el-input> -->
-          {{ itemDatile.quantity }}
+          <input v-model="itemDatile.quantity" style="width: 100%;height: 100%"  @keyup="handleSummary()"/>
         </td>
-        <!-- <td class="item" style="width: 5%;height: 100%;">
-          {{ itemDatile.quantity1 }}
-        </td> -->
         <td>{{ itemDatile.total_area }}</td>
         <td>{{ itemDatile.perimeter }}</td>
         <td>{{ itemDatile.bend_radius }}</td>
@@ -277,11 +224,15 @@
         <td></td>
         <td></td>
         <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
       </tr>
       </tbody>
       <tfoot>
       <tr style="height: 14px">
-        <td v-for="(itemsum,index) in item.detail" :key="index" colspan="26">
+        <td v-for="(itemsum,index) in item.detail" :key="index" colspan="29">
           鏁伴噺锛�
           <label>{{ itemsum.quantity }}</label>
           闈㈢Н锛�
@@ -291,17 +242,12 @@
         </td>
       </tr>
       <tr v-for="(itemtextarea,index) in item.detail" :key="index">
-        <td v-if="like='1'" colspan="4" rowspan="6" style="width: 480px;height: 100px ">
-          <div style="width: 100%;height: 100%;"><textarea style="height: 99%;width: 99%;border: none;;font-size: 11px">{{itemtextarea.otherRemarks}}</textarea>
-          </div>
-        </td>
-        <td v-else colspan="6" rowspan="2" style="width: 480px;height: 100px ">
-          <!--          <div style="width: 100%;height: 100%"><textarea style="height: 99%;width: 99%;font-size: 11px">{{ itemtextarea.processing_note }}</textarea>-->
-          <!--          </div>-->
-           <div style="width: 100%;height: 100%;"><textarea style="height: 99%;width: 99%;border: none;;font-size: 11px">{{itemtextarea.otherRemarks}}</textarea>
-           </div>
-        </td>
-        <td colspan="2">瀹屽伐绛惧悕</td>
+
+        <td>瀹屽伐绛惧悕</td>
+        <td colspan="2"></td>
+        <td colspan="2"></td>
+        <td colspan="2"></td>
+        <td colspan="2"></td>
         <td colspan="2"></td>
         <td colspan="2"></td>
         <td colspan="2"></td>
@@ -314,7 +260,11 @@
         <td colspan="2"></td>
       </tr>
       <tr>
-        <td colspan="2">鐢熶骇鏃ユ湡</td>
+        <td>鐢熶骇鏃ユ湡</td>
+        <td colspan="2"></td>
+        <td colspan="2"></td>
+        <td colspan="2"></td>
+        <td colspan="2"></td>
         <td colspan="2"></td>
         <td colspan="2"></td>
         <td colspan="2"></td>
@@ -327,7 +277,9 @@
         <td colspan="2"></td>
       </tr>
       <tr>
-        <td colspan="2">璐ㄦ绛惧悕</td>
+        <td>璐ㄦ绛惧悕</td>
+        <td colspan="2"></td>
+        <td colspan="2">鐢熶骇绛惧悕</td>
         <td colspan="2"></td>
         <td colspan="2"></td>
         <td colspan="2"></td>
@@ -338,9 +290,15 @@
         <td colspan="2"></td>
         <td colspan="2"></td>
         <td colspan="2"></td>
+        <td colspan="2"></td>
+        <td colspan="2"></td>
+      </tr>
+      <tr>
+        <td>鍘熺墖绠卞彿</td>
+        <td colspan="28"></td>
       </tr>
       <tr v-for="(qrCodeItem,index) in item.detail" :key="index">
-        <td colspan="23">
+        <td colspan="29">
           <span style="display: flex;">
             <span v-for="(qrCodeItems,index) in qrCodeItem.qrcodeList" :key="index" style="display: flex;width: 35%">
             <div class='qrCode' style="width: 80px;height: 80px;">
@@ -353,6 +311,12 @@
           </span>
         </td>
 
+      </tr>
+      <tr v-for="(itemtextareas,index) in item.detail" :key="index">
+        <td  colspan="29" rowspan="6" style="width: 480px;height: 150px ">
+          <div style="width: 100%;height: 100%;"><textarea style="height: 99%;width: 99%;border: none;;font-size: 12px;overflow: hidden;">{{itemtextareas.processing_note}}</textarea>
+          </div>
+        </td>
       </tr>
       </tfoot>
     </table>
@@ -368,8 +332,7 @@
 
 #printFlowCard {
   text-align: center;
-font-weight: bolder;
- height: 600px;
+//font-weight: bolder; height: 600px;
 }
 
 #contentTable {
@@ -395,12 +358,10 @@
 }
 
 #contentTable tbody {
-  white-space: nowrap;
 
 }
 
 .tdNowrap {
-  white-space: nowrap;
 
 }
 
@@ -410,17 +371,20 @@
 }
 
 input{
-  font-weight: bolder;
+  border: none;
+  background: none;
 }
 
 
-@page {
-  size: auto;  /* auto is the initial value */
-  margin: 10mm 2mm 10mm 1mm;  /* this affects the margin in the printer settings */
 
-}
 
 @media print {
+  @page {
+    size: auto;  
+    margin: 4mm 5mm 5mm 5mm  
+
+  }
+
   table {
     page-break-before: always;
     page-break-inside: auto;
@@ -441,4 +405,6 @@
   height: 100%;
 }
 
+
+
 </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 7b035df..a0ecc55 100644
--- a/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
+++ b/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
@@ -9,6 +9,7 @@
 import PrintFlow from "@/views/UnLoadGlass/PrintFlow.vue";
 import Landingindication from "./Landingindication.vue";
 import Landingindicationtwo from "./Landingindicationtwo.vue";
+import PrintLabel from "@/views/UnLoadGlass/PrintCustomLabelSemi1.vue";
 
 const router = useRouter()
 const {t} = useI18n()
@@ -36,6 +37,7 @@
 const selectValuesa = reactive({});
 const selectOptionsa = ref([]);
 const dialogTableVisible = ref(false)
+const dialogTableVisible1 = ref(false)
 const printFlowCardId = ref('')
 const printLayer = ref('')
 const now = new Date();
@@ -107,7 +109,6 @@
       flowCardId: firstPart,
       layer: twoPart
     });
-    console.log(response)
     if (response.code == 200) {
       // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
       console.log('缁戝畾鎴愬姛');
@@ -191,7 +192,7 @@
 
   // 鏇存柊 tableData 鐨勬暟鎹�
   if (data.downGlassInfos != null) {
-    downGlass.value = data.downGlassInfos[0][1];
+    downGlass.value = data.downGlassInfos[0];
   }
   if (data.engineerIdList != null) {
     selectOptionsa.value = data.engineerIdList[0]
@@ -294,15 +295,68 @@
   dialogTableVisible.value = true;
   setTimeout(() => {
     printFlowCard(); // 鏇挎崲鎴愪綘瑕佹墽琛岀殑鍑芥暟鍚�
-    dialogTableVisible.value = false;
+    //dialogTableVisible.value = false;
   }, 1000);
-  ;
+}
+const open1 = async (row) => {
 
+printFlowCardId.value = row.flowCardId;
+printLayer.value = row.layer
+dialogTableVisible1.value = true;
+setTimeout(() => {
+  printFlowCard1(); // 鏇挎崲鎴愪綘瑕佹墽琛岀殑鍑芥暟鍚�
+  //dialogTableVisible1.value = false;
+}, 1000);
 }
 
 const printFlowCard = () => {
   // 闇�瑕佹墦鍗扮殑灞�閮ㄥ尯鍩熻祴浜�"print-wrap"鐨刬d
   let el = document.getElementById("child");
+  let doc = document;
+  let body = doc.body || doc.getElementsByTagName("body")[0];
+  let printId = "print-" + Date.now();
+
+  // 鍒涘缓鏃犲壇浣滅敤鐨勬墦鍗板鍣�(鍥犱笉纭畾椤甸潰鐨勬墦鍗板厓绱犳湁鏃犲叾瀹冩牱寮�)
+  let content = doc.createElement("div");
+  content.id = printId;
+
+  alert(/Chrome/.test(userAgent) && !/Edge/.test(userAgent));
+
+  // 鏍峰紡鎺у埗涓庢墦鍗版棤鍏崇殑鍏冪礌闅愯棌
+  let style = doc.createElement("style");
+  console.log("style1:"+style.innerHTML)
+  style.innerHTML =
+      "body>#" +
+      printId +
+      "{display:none;}@media print{" +
+      "@page {" +
+      "    size: auto; " +
+      "    margin: 10mm 5mm 10mm 5mm; " +
+      "  }body>:not(#" +
+      printId +
+      "){display:none !important;}body>#" +
+      printId +
+      "{display:block;}#" +
+      printId +
+      "{display: block; padding: 0; margin: 0;  width: 100%;  position: absolute; top: 0; left: 0; height: 100vh;  box-sizing: border-box;}} ";
+      
+  content.innerHTML = el.outerHTML;
+  // // console.log("el.outerHTML", el.outerHTML);
+  body.appendChild(style);
+
+  // 涓巗tyle鍏冪礌璁剧疆鐨勬牱寮忕浉閰嶅悎
+  // 鎶婃墦鍗板唴瀹圭殑鍏冪礌娣诲姞鍒癰ody(浣滀负body鐨勫瓙鍏冪礌锛屽彲鐢╞ody鐨勫瓙閫夋嫨鍣� '>' 鎺у埗鎵撳嵃鏍峰紡)
+  body.appendChild(content);
+  setTimeout(() => {
+    window.print();
+    body.removeChild(content);
+    body.removeChild(style);
+  }, 20);
+}
+
+const printFlowCard1 = () => {
+  // 闇�瑕佹墦鍗扮殑灞�閮ㄥ尯鍩熻祴浜�"print-wrap"鐨刬d
+  let el = document.getElementById("printFlowCard");
   let doc = document;
   let body = doc.body || doc.getElementsByTagName("body")[0];
   let printId = "print-" + Date.now();
@@ -319,7 +373,7 @@
       "{display:none}@media print{" +
       "@page {" +
       "    size: auto; " +
-      "    margin: 10mm 2mm 10mm 1mm; " +
+      "    margin: 2mm 2mm 2mm 2mm;  " +
       "  }body>:not(#" +
       printId +
       "){display:none !important}body>#" +
@@ -341,6 +395,8 @@
 }
 
 
+
+
 // beforeUnmount(() => {
 //   closeWebSocket();
 // });
@@ -356,7 +412,7 @@
     <el-card style="flex: 1;" v-loading="loading">
       <el-card style="flex: 1;margin-left: 4px;margin-top: 1px;" v-loading="loading">
         <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;">
-          <el-table height="200px" ref="table" @selection-change="handleSelectionChange" :data="tableData"
+          <el-table height="350px" ref="table" @selection-change="handleSelectionChange" :data="tableData"
                     :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }">
             <el-table-column prop="workstationId" align="center" :label="$t('reportWork.lowerbit')" min-width="80"/>
             <el-table-column prop="workstationId" align="center" :label="$t('reportWork.shelfnumber')"
@@ -376,14 +432,15 @@
                 </el-tag>
               </template>
             </el-table-column>
-            <el-table-column fixed="right" :label="$t('reportWork.operate')" align="center" width="200">
+            <el-table-column fixed="right" :label="$t('reportWork.operate')" align="center" width="400">
               <template #default="scope">
                 <el-button size="mini" type="text" plain v-show="scope.row.enableState !== '宸插惎鐢�'"
                            @click="handleBindRack(scope.row)">{{ $t('reportWork.bindingshelves') }}
                 </el-button>
                 <el-button size="mini" type="text" plain @click="handleBindRack2(scope.row)">{{ $t('reportWork.clear')
                   }}</el-button>
-                <el-button @click="open(scope.row)" :disabled="scope.row.flowCardId == null">鎵撳嵃</el-button>
+                <el-button @click="open(scope.row)" :disabled="scope.row.flowCardId == null">鎵撳嵃娴佺▼鍗�</el-button>
+                <el-button @click="open1(scope.row)" :disabled="scope.row.flowCardId == null">鎵撳嵃鏍囩</el-button>
               </template>
 
             </el-table-column>
@@ -401,9 +458,6 @@
             <el-option label="5" value="5"></el-option>
             <el-option label="6" value="6"></el-option>
             <el-option label="7" value="7"></el-option>
-            <el-option label="8" value="8"></el-option>
-            <el-option label="9" value="9"></el-option>
-            <el-option label="10" value="10"></el-option>
           </el-select>
 
           <el-select v-model="selectValuesa[1]" filterable :placeholder="$t('basicData.plselectproject')" clearable
@@ -492,13 +546,14 @@
     </template>
   </el-dialog>
 
-  <el-dialog id="sizePrintCalrd" v-model="dialogTableVisible" destroy-on-close style="width: 75%;height:75% ">
-    <!-- <template #header="{ close, titleId, titleClass }">
-        <el-button  @click="printFlowCard" >鎵撳嵃</el-button>
-      </template> -->
+  <el-dialog id="sizePrintCalrd" v-model="dialogTableVisible" destroy-on-close >
     <print-flow id="child" :printFlowCardId="printFlowCardId" :printLayer="printLayer"
                 style="width: 100%;height: 100%"/>
   </el-dialog>
+  <el-dialog id="sizePrintCalrd1" v-model="dialogTableVisible1" destroy-on-close >
+    <print-label id="printFlowCard" :printFlowCardId="printFlowCardId" :printLayer="printLayer"
+                style=""/>
+  </el-dialog>
 
 </template>
 <style scoped>
diff --git a/hangzhoumesParent/JsonFile/PlcTemperingGlass.json b/hangzhoumesParent/JsonFile/PlcTemperingGlass.json
new file mode 100644
index 0000000..3abe9a6
--- /dev/null
+++ b/hangzhoumesParent/JsonFile/PlcTemperingGlass.json
@@ -0,0 +1,132 @@
+{
+    "plcAddressBegin": "DB88.0",
+    "plcAddressLenght": "58",
+    "dataType": "word",
+    "parameteInfor": [
+        {
+            "codeId": "confirmationWord",
+            "addressIndex": "0",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "temperingLayoutId",
+            "addressIndex": "2",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "filmsid",
+            "addressIndex": "4",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "temperingType",
+            "addressIndex": "6",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "thickness",
+            "addressIndex": "8",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "loadingRate",
+            "addressIndex": "10",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "areaDifference",
+            "addressIndex": "12",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "state",
+            "addressIndex": "22",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "deviceState",
+            "addressIndex": "24",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "resultState",
+            "addressIndex": "26",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "loadSpeed",
+            "addressIndex": "28",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "downSpeed",
+            "addressIndex": "30",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "load1",
+            "addressIndex": "32",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "heat1",
+            "addressIndex": "34",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "heat2",
+            "addressIndex": "36",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "cool1",
+            "addressIndex": "38",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "cool2",
+            "addressIndex": "40",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "downId",
+            "addressIndex": "42",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "productionTime",
+            "addressIndex": "44",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "heatEnergy",
+            "addressIndex": "46",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "coolEnergy",
+            "addressIndex": "48",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "temperatureUp1",
+            "addressIndex": "50",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "temperatureDown1",
+            "addressIndex": "52",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "temperatureUp2",
+            "addressIndex": "54",
+            "addressLenght": "2"
+        },
+        {
+            "codeId": "temperatureDown2",
+            "addressIndex": "56",
+            "addressLenght": "2"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/JsonFile/PlcdownGlass.json b/hangzhoumesParent/JsonFile/PlcdownGlass.json
new file mode 100644
index 0000000..a5698c2
--- /dev/null
+++ b/hangzhoumesParent/JsonFile/PlcdownGlass.json
@@ -0,0 +1,149 @@
+{
+	"plcAddressBegin": "DB11.0",
+	"plcAddressLenght": "94",
+	"dataType": "word",
+	"parameteInfor": [
+
+		{
+			"codeId": "requestWord",
+			"addressIndex": "0",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "requestID",
+			"addressIndex": "2",
+			"addressLenght": "30"
+		},
+		{
+			"codeId": "currentCell",
+			"addressIndex": "32",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "glassStatus08",
+			"addressIndex": "36",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "glassStatus06",
+			"addressIndex": "40",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "glassStatus11",
+			"addressIndex": "42",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "glassStatus13",
+			"addressIndex": "44",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G04_error_status",
+			"addressIndex": "48",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G05_error_status",
+			"addressIndex": "50",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G06_error_status",
+			"addressIndex": "52",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "robot_error_status",
+			"addressIndex": "54",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G08_error_status",
+			"addressIndex": "56",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G09_error_status",
+			"addressIndex": "58",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G10_error_status",
+			"addressIndex": "60",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G11_error_status",
+			"addressIndex": "62",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "robot_error_status",
+			"addressIndex": "64",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G13_error_status",
+			"addressIndex": "66",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "confirmationWord",
+			"addressIndex": "72",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G06_prohibit_film_production",
+			"addressIndex": "74",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G11_prohibit_film_production",
+			"addressIndex": "76",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G13_prohibit_film_production",
+			"addressIndex": "78",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "Glass_width",
+			"addressIndex": "80",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "Glass_height",
+			"addressIndex": "82",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "Glass_thickness",
+			"addressIndex": "84",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "Start_cell",
+			"addressIndex": "86",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "End_cell",
+			"addressIndex": "88",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "task_type",
+			"addressIndex": "90",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "alarm_signal",
+			"addressIndex": "92",
+			"addressLenght": "2"
+		}
+
+	]
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/Engineering.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/Engineering.java
new file mode 100644
index 0000000..c9321fa
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/Engineering.java
@@ -0,0 +1,101 @@
+package com.mes.engineering.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author wu
+ * @since 2024-04-22
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class Engineering implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 宸ョ▼琛╥d
+     */
+      @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 宸ョ▼鍙�
+     */
+    private String  engineerId;
+
+    /**
+     * 宸ョ▼鍚嶇О
+     */
+    private String engineerName;
+
+    /**
+     * 骞冲潎鍒╃敤鐜�
+     */
+    private double avgAvailability;
+
+    /**
+     * 鏈夋晥鍒╃敤鐜�
+     */
+    private double validAvailability;
+
+    /**
+     * 灏剧墖鍒╃敤鐜�
+     */
+    private double lastAvailability;
+
+    /**
+     * 鐘舵��
+     */
+    private Integer state;
+
+    /**
+     * 灏忕墖鎬绘暟
+     */
+    private Integer glassTotal;
+
+    /**
+     * 灏忕墖鎬婚潰绉�
+     */
+    private double glassTotalArea;
+
+    /**
+     * 璁″垝鍘熺墖鎬绘暟
+     */
+    private Integer planPatternTotal;
+
+    /**
+     * 璁″垝鍘熺墖鎬婚潰绉�
+     */
+    private double planPatternTotalArea;
+
+    /**
+     * 瀹為檯鍘熺墖鎬绘暟
+     */
+    private Integer realityPatternTotal;
+
+    /**
+     * 瀹為檯鍘熺墖鎬婚潰绉�
+     */
+    private double realityPatternTotalArea;
+
+    /**
+     * 鑶滅郴id
+     */
+    private String filmsId;
+
+    /**
+     * 澶囨敞
+     */
+    private String notes;
+
+
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/OptimizeEngineering.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/OptimizeEngineering.java
new file mode 100644
index 0000000..5b214f1
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/OptimizeEngineering.java
@@ -0,0 +1,78 @@
+package com.mes.engineering.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author SNG-010
+ */
+@Setter
+@Getter
+public class OptimizeEngineering {
+
+    // Getter methods
+    // Setter methods
+    /**
+     * 宸ョ▼鍙�
+     */
+    private String projectNo;
+
+    /**
+     * 宸ョ▼鍚�
+     */
+    private String projectName;
+
+    /**
+     * 骞冲潎鍒╃敤鐜�
+     */
+    private double avgCutPct;
+
+    /**
+     * 鏈夋晥鍒╃敤鐜�
+     */
+    private double validCutPct;
+
+    /**
+     * 灏剧墖鍒╃敤鐜�
+     */
+    private double lastCutPct;
+
+    /**
+     * 鐘舵��
+     */
+    private Integer state;
+
+    /**
+     * 灏忕墖鎬绘暟
+     */
+    private Integer glassTotal;
+    /**
+     * 灏忕墖鎬婚潰绉�
+     */
+    private double glassTotalArea;
+    /**
+     * 璁″垝鍘熺墖鎬绘暟
+     */
+    private Integer rawStockQty;
+    /**
+     * 璁″垝鍘熺墖鎬婚潰绉�
+     */
+    private double rawStockArea;
+    /**
+     * 瀹為檯鍘熺墖鎬绘暟
+     */
+    private Integer actualStockQty;
+    /**
+     * 瀹為檯鍘熺墖鎬婚潰绉�
+     */
+    private double actualStockArea;
+    /**
+     * 鑶滅郴
+     */
+    private String glassType;
+    /**
+     * 澶囨敞
+     */
+    private  String remark;
+
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/mapper/EngineeringMapper.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/mapper/EngineeringMapper.java
new file mode 100644
index 0000000..d92eae7
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/mapper/EngineeringMapper.java
@@ -0,0 +1,17 @@
+package com.mes.engineering.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.engineering.entity.Engineering;
+
+/**
+ * <p>
+ *  Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author wu
+ * @since 2024-04-22
+ */
+public interface EngineeringMapper extends MPJBaseMapper<Engineering> {
+
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/mapper/xml/EngineeringMapper.xml b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/mapper/xml/EngineeringMapper.xml
new file mode 100644
index 0000000..bff1839
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/mapper/xml/EngineeringMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mes.engineering.mapper.EngineeringMapper">
+
+</mapper>
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/Orderdetail.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/Orderdetail.java
index b0b4078..01258d3 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/Orderdetail.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/Orderdetail.java
@@ -28,14 +28,6 @@
     private String project;
 
     /**
-     * 娴佺▼鍗″彿
-     */
-    private String processId;
-    /**
-     * 璁㈠崟搴忓彿
-     */
-    private String orderNumber;
-    /**
      * 浜у搧鍚嶇О
      */
     private String productName;
@@ -43,40 +35,30 @@
     /**
      * 瀹�
      */
-    private double width;
+    private String width;
     /**
      * 楂�
      */
-    private double height;
+    private String height;
 
     /**
      * 闈㈢Н
      */
     private double area;
-    /**
-     * 鏁伴噺
-     */
-    private Integer quantity;
-    /**
-     * 琛ョ墖鏁伴噺
-     */
-    private Integer numberPatches;
-    /**
-     * 宸插叆鏁伴噺
-     */
-    private Integer receivedQuantity;
-    /**
-     * 鐢熶骇鐘舵��
-     */
-    private Integer terminationStatus;
+
+
     /**
      * 鍖呰鏂瑰紡
      */
-    private String packType;
+    private Integer quantity;
     /**
-     * 宸ョ▼鍙�
+     * 鐘舵��
      */
-    private String projectNo;
+    private String processingNote;
+    /**
+     * 閫佽揣鏃堕棿
+     */
+    private String deliveryDate;
 
 
 
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/ReportingWorkController.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/ReportingWorkController.java
index 853e007..375cbc7 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/ReportingWorkController.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/ReportingWorkController.java
@@ -27,15 +27,14 @@
     @Autowired
     private ReportingWorkService reportingWorkService;
 
-    @ApiOperation("鏄剧ず澶у睆鏄剧ず鎵囧舰鍥句俊鎭�")
+    @ApiOperation("鏄剧ず宸ョ▼閫夋嫨淇℃伅")
     @PostMapping("/selectDamage") //鏄剧ず宸ョ▼閫夋嫨淇℃伅
     @ResponseBody
     public Result<List<Reportingdamage>> selectDamage(@RequestBody Reportingdamage reportingdamage) {
         log.info("灏嗚姹傚弬鏁板皝瑁呭湪璇锋眰绫婚噷闈�");
         List<Reportingdamage> glass = reportingWorkService.selectDamage(reportingdamage);
-        log.info("鏄剧ず澶у睆鏄剧ず鎵囧舰鍥句俊鎭�:{}", glass);
+        log.info("鏄剧ず宸ョ▼閫夋嫨淇℃伅:{}", glass);
         return Result.build(200, "", glass);
     }
-
 }
 
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/request/Reportingdamage.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/request/Reportingdamage.java
index 130ce69..cd88ede 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/request/Reportingdamage.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/request/Reportingdamage.java
@@ -31,10 +31,6 @@
      * 娆$牬鏃堕棿
      */
     private String reportingWorkTime;
-    /**
-     * 娆$牬鏃堕棿2
-     */
-    private String reportingWorkTime2;
 
 
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/FlowCardMapper.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/FlowCardMapper.java
index bd8d21d..865ca5c 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/FlowCardMapper.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/FlowCardMapper.java
@@ -22,4 +22,6 @@
     List<Map<String, Object>> selectProject(@Param("processId") String processId,@Param("technologyNumber") Integer technologyNumber);
 
     List<Map<String, Object>> selectFlowCard(@Param("processId") String processId,@Param("technologyNumber") Integer technologyNumber);
+
+    List<Map<String, Object>> selectLabel(@Param("processId") String processId,@Param("technologyNumber") Integer technologyNumber);
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/FlowCardService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/FlowCardService.java
index d03a88c..7120afb 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/FlowCardService.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/FlowCardService.java
@@ -19,4 +19,6 @@
     List<Map<String, Object>> selectProject(String processId, Integer technologyNumber);
 
     List<Map<String, Object>> selectFlowCard(String processId, Integer technologyNumber);
+
+    List<Map<String, Object>> selectLabel(String processId, Integer technologyNumber);
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/FlowCardServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/FlowCardServiceImpl.java
index c7aa409..3fed7cc 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/FlowCardServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/FlowCardServiceImpl.java
@@ -29,4 +29,9 @@
     public List<Map<String, Object>> selectFlowCard(String processId, Integer technologyNumber){
         return baseMapper.selectFlowCard(processId, technologyNumber);
     }
+
+    @Override
+    public List<Map<String, Object>> selectLabel(String processId, Integer technologyNumber){
+        return baseMapper.selectLabel(processId, technologyNumber);
+    }
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/ReportingWorkServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/ReportingWorkServiceImpl.java
index 92d51e5..47f829c 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/ReportingWorkServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/ReportingWorkServiceImpl.java
@@ -42,7 +42,6 @@
                 //.eq("this_process", reportingdamage.getThisProcess())
                 //.eq("device_name",reportingdamage.getDeviceName())
                 .ge("reporting_work_time", reportingdamage.getReportingWorkTime())
-                .le("reporting_work_time",reportingdamage.getReportingWorkTime2())
                 .groupBy("this_process");
         return reportingDamageMapper.selectList(queryWrapper);
     }
diff --git a/hangzhoumesParent/common/servicebase/src/main/resources/mapper/FlowCardMapper.xml b/hangzhoumesParent/common/servicebase/src/main/resources/mapper/FlowCardMapper.xml
index e24679f..1af4682 100644
--- a/hangzhoumesParent/common/servicebase/src/main/resources/mapper/FlowCardMapper.xml
+++ b/hangzhoumesParent/common/servicebase/src/main/resources/mapper/FlowCardMapper.xml
@@ -68,6 +68,38 @@
         group by fc.process_id
     </select>
 
+    <select id="selectLabel" resultType="java.util.Map">
+        select fc.process_id,
+               o.order_id,
+               o.project,
+               o.customer_id,
+               ogd.child_width                as width,
+               ogd.child_height               as height,
+               od.quantity,
+               od.order_number                as orderNumber,
+               fc.technology_number           as technologyNumber,
+               ogd.glass_child,
+               ogd.process,
+               c.customer_abbreviation        as customer_name,
+               ifnull(od.processing_note, '') as processing_note,
+               bgt.type_name,
+               od.other_columns,
+               od.building_number,
+               od.bend_radius
+        from sd.order as o
+                 left join sd.order_detail as od on o.order_id = od.order_id
+                 left join sd.order_glass_detail as ogd
+                           on ogd.order_id = od.order_id and ogd.order_number = od.order_number
+                 left join pp.flow_card as fc on o.order_id = fc.order_id and
+                                                 od.order_number = fc.order_number and
+                                                 fc.technology_number = ogd.technology_number
+                 left join sd.product pt on pt.id = od.product_id
+                 left join sd.customer c on c.id = o.customer_id
+                 left join sd.basic_glass_type bgt on bgt.type_id = pt.type_id
+        where fc.process_id = #{processId}
+          and fc.technology_number = #{technologyNumber}
+        group by od.order_number, od.width, od.height
+    </select>
 
 
 </mapper>
\ No newline at end of file
diff --git a/hangzhoumesParent/gateway/src/main/resources/application.yml b/hangzhoumesParent/gateway/src/main/resources/application.yml
index 93b9826..a369150 100644
--- a/hangzhoumesParent/gateway/src/main/resources/application.yml
+++ b/hangzhoumesParent/gateway/src/main/resources/application.yml
@@ -6,7 +6,7 @@
   cloud:
     nacos:
       discovery:
-        server-addr: 10.153.19.150:8848
+        server-addr: 127.0.0.1:8848
     gateway:
       discovery:
         locator:
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
index 2e190f0..8ab9ab1 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
@@ -3,7 +3,7 @@
 
 spring:
   profiles:
-    active: prod
+    active: dev
   application:
     name: cacheGlass
 mybatis-plus:
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java
index 8907e28..233e6f1 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java
@@ -144,12 +144,12 @@
 
     @Test
     public void testidentWorn() {
-        Map<String, String> arguments=new HashMap<>();
-        arguments.put("glassId","P24060403|3|6");//鐜荤拑ID
-        arguments.put("controlsId","300");        //鎷胯蛋锛�200/鐮存崯锛�201
-        arguments.put("line","2001");             //绾胯矾锛�
-        arguments.put("machine","鍐峰姞宸�");           //璁惧鍚嶇О锛�
-//        edgStorageCageDetailsService.identWorn(arguments);
+        Map<String, Object> arguments=new HashMap<>();
+        arguments.put("glassId","NG24051802A002-1-4-2-4");//鐜荤拑ID
+        arguments.put("state","8");        //鎷胯蛋锛�200/鐮存崯锛�201
+        arguments.put("line","1001");             //绾胯矾锛�
+        arguments.put("workingProcedure","璇嗗埆");           //璁惧鍚嶇О锛�
+        edgStorageCageDetailsService.identWorn(arguments);
         log.info("璇嗗埆鍙般�愮牬鎹�/鎷胯蛋銆戯細{}", 1);
     }
 
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
index db4f8c6..93bf20e 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -544,7 +544,7 @@
         //1銆佽幏鍙栦换鍔¤〃涓浉閭荤幓鐠�
         List<EdgGlassTaskInfo> edgGlassTaskInfoList = edgGlassTaskInfoService.list(new LambdaQueryWrapper<EdgGlassTaskInfo>()
                 .eq(EdgGlassTaskInfo::getLine, line)
-                .apply("time >= (select time from edg_glass_task_info where glass_id = '" + glassId + "' and deleted = 0)")
+                .apply("time >= (select time from edg_glass_task_info where line='" + line + "' and glass_id = '" + glassId + "' and deleted = 0)")
                 .orderByAsc(EdgGlassTaskInfo::getTime));
         Assert.isFalse(CollectionUtils.isEmpty(edgGlassTaskInfoList), "璇嗗埆鐜荤拑淇℃伅鏈嚭鐜板湪灏哄琛ㄤ腑,鑾峰彇鐩搁偦涓ゅ潡鐜荤拑澶辫触");
         //2銆佽幏鍙栧崸杞珛鍓╀綑瀹藉害
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
index 7d8c5da..0d72c28 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
@@ -3,7 +3,7 @@
 
 spring:
   profiles:
-    active: cz
+    active: dev
   application:
     name: cacheVerticalGlass
 mybatis-plus:
@@ -17,6 +17,6 @@
   carWidth: 5000   #澶ц溅瀹藉害
   slotWidth: 5000   #澶ц溅瀹藉害
   inCarMaxSize: 3     #杩涚墖澶ц溅鏈�澶у瓨鏀剧幓鐠冩暟閲�
-  outCarMaxSize: 3     #鍑虹墖澶ц溅鏈�澶у瓨鏀剧幓鐠冩暟閲�
+  outCarMaxSize: 2     #鍑虹墖澶ц溅鏈�澶у瓨鏀剧幓鐠冩暟閲�
   glassGap: 350  #鐜荤拑闂磋窛
   xMaxSize: 2850
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application.yml
index 5a26257..6fc80c0a 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application.yml
@@ -3,7 +3,7 @@
 
 spring:
   profiles:
-    active: prod
+    active: dev
   application:
     name: glassStorage
 
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 94b3a59..0118321 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java
@@ -166,12 +166,12 @@
             }
         }
     }
-    @Scheduled(fixedDelay = 10000)
+    @Scheduled(fixedDelay = 1000)
     public void loadGlassIsRun() {
         JSONObject jsonObject = new JSONObject();
         //鏄惁寮�濮嬪伐绋�
         Engineering engineering = engineeringService.selectInitiate(1);
-        jsonObject.append("engineering", engineering);
+            jsonObject.append("engineering", engineering);
         //宸ヤ綅淇℃伅
         List<UpWorkstation> upWorkstations = upWorkstationService.list();
         jsonObject.append("list", upWorkstations);
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml
index 3920d3c..ee801d2 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml
@@ -2,7 +2,7 @@
   port: 8083
 spring:
   profiles:
-    active: cz
+    active: dev
   application:
     name: loadGlass
 mybatis-plus:
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java
index 4a9356e..acd2fcf 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java
@@ -1,5 +1,10 @@
 package com.mes.job;
+
 import cn.hutool.json.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.mes.common.config.Const;
+import com.mes.damage.entity.Damage;
+import com.mes.damage.service.DamageService;
 import com.mes.temperingglass.service.TemperingGlassInfoService;
 import com.mes.temperingglass.entity.TemperingGlassInfo;
 import com.mes.tools.WebSocketServer;
@@ -10,6 +15,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author SNG-010
@@ -20,24 +26,27 @@
 
     @Autowired
     private TemperingGlassInfoService temperingAgoService;
+    @Autowired
+    private DamageService damageService;
+
     /**
      * fixedRate : 涓婁竴涓皟鐢ㄥ紑濮嬪悗鍐嶆璋冪敤鐨勫欢鏃讹紙涓嶇敤绛夊緟涓婁竴娆¤皟鐢ㄥ畬鎴愶級
      * fixedDelay : 涓婁竴涓皟鐢ㄧ粨鏉熷悗鍐嶆璋冪敤鐨勫欢鏃�
      */
 
     @Scheduled(fixedDelay = 1000)
-    public void temperingGlassHome(){
+    public void temperingGlassHome() {
         JSONObject jsonObject = new JSONObject();
         //姝e湪绛夊緟杩涚墖鐨勭幓鐠�
         List<TemperingGlassInfo> waitingGlass = temperingAgoService.selectWaitingGlass();
-        if(waitingGlass!=null){
+        if (waitingGlass != null) {
             jsonObject.append("waitingGlass", waitingGlass);
         }
 
         //鑾峰彇鏁村湪鐐変腑鐨勪袱涓増鍥緄d
         List<TemperingGlassInfo> layoutId = temperingAgoService.selectLayoutId();
         //杩涚倝涓殑鐜荤拑
-        if(!layoutId.isEmpty()) {
+        if (!layoutId.isEmpty()) {
             List<TemperingGlassInfo> intoGlass = temperingAgoService.selectIntoGlass(layoutId.get(0));
             jsonObject.append("intoGlass", intoGlass);
             //杩涚倝涓殑绗簩涓増鍥�
@@ -48,7 +57,7 @@
         }
         //鍑虹倝鍚庣殑鐜荤拑
         List<TemperingGlassInfo> outGlass = temperingAgoService.selectOutGlass();
-        if(outGlass!=null){
+        if (outGlass != null) {
             jsonObject.append("outGlass", outGlass);
         }
 
@@ -57,7 +66,27 @@
         if (outGlass != null) {
             jsonObject.append("overGlass", overGlass);
         }
+        //褰撳墠閽㈠寲宸ョ▼鐨勬嬁璧版暟鎹�
+        LambdaQueryWrapper<TemperingGlassInfo> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.select(TemperingGlassInfo::getEngineerId)
+                .lt(TemperingGlassInfo::getState, Const.TEMPERING_END)
+                .groupBy(TemperingGlassInfo::getEngineerId);
 
+        List<String> engineerIds = temperingAgoService.list(queryWrapper)
+                .stream()
+                .map(TemperingGlassInfo::getEngineerId)
+                .distinct()
+                .collect(Collectors.toList());
+
+        List<Damage> temperingTakeGlassInfos = damageService.list(
+                new LambdaQueryWrapper<Damage>()
+                        .in(Damage::getEngineerId, engineerIds)
+                        .eq(Damage::getType, Const.GLASS_STATE_TAKE)
+                        .orderByAsc(Damage::getId)
+        );
+
+
+        jsonObject.append("temperingTakeGlassInfos", temperingTakeGlassInfos);
 
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("temperingGlass");
         if (sendwServer != null) {
@@ -70,12 +99,15 @@
             }
         }
     }
+
     @Scheduled(fixedDelay = 1000)
-    public void temperingIsRun(){
+    public void temperingIsRun() {
         JSONObject jsonObject = new JSONObject();
         //姝e湪杩涜鐨勪换鍔�
-        List<TemperingGlassInfo>temperingTaskType=temperingAgoService.selectTaskType();
+        List<TemperingGlassInfo> temperingTaskType = temperingAgoService.selectTaskType();
         jsonObject.append("temperingTaskType", temperingTaskType);
+
+
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("temperingIsRun");
         if (sendwServer != null) {
             for (WebSocketServer webserver : sendwServer) {
@@ -86,6 +118,7 @@
                 }
             }
         }
+
     }
 
 
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml
index e9fcc1e..12e113b 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml
@@ -2,7 +2,7 @@
   port: 8084
 spring:
   profiles:
-    active: prod
+    active: dev
   application:
     name: temperingGlass
 mybatis-plus:
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassInfoController.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassInfoController.java
index d3a8e05..fcf4eb3 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassInfoController.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassInfoController.java
@@ -37,4 +37,9 @@
         return Result.build(200, "鏌ヨ鎴愬姛", downGlassInfoService.downGlassPrint(downGlassInfo));
     }
 
+    @PostMapping("/downGlassLabelPrint")
+    public Result downGlassLabelPrint(@RequestBody DownGlassInfo downGlassInfo) {
+        return Result.build(200, "鏌ヨ鎴愬姛", downGlassInfoService.downGlassLabelPrint(downGlassInfo));
+    }
+
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java
index da649b8..c0cacb7 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java
@@ -7,6 +7,7 @@
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
+import java.util.Map;
 
 @Repository
 public interface DownGlassInfoMapper extends BaseMapper<DownGlassInfo> {
@@ -42,4 +43,13 @@
      * @return
      */
     List<DownGlassInfoDTO> queryWorkStationFlowCard(@Param(value = "workList") List<Integer> workList);
+
+    /**
+     * 鑾峰彇涓嬬墖淇℃伅
+     *
+     * @param processId,technologyNumber
+     * @return
+     */
+    List<Map<String, Object>> downGlassLabelPrint(@Param("processId") String processId, @Param("technologyNumber") Integer technologyNumber);
+
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassInfoService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassInfoService.java
index 6e9c45d..e921817 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassInfoService.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassInfoService.java
@@ -60,9 +60,26 @@
      */
     String setDownGlassInfoRequest(DownGlassInfoRequest request);
 
+    /**
+     * 娴佺▼鍗℃墦鍗版煡璇�
+     *
+     * @param downGlassInfo
+     * @return
+     */
     List<Map<String, List<Map<String, Object>>>> downGlassPrint(DownGlassInfo downGlassInfo);
 
+    /**
+     * 宸ヤ綅鏄惁婊℃灦鏌ヨ
+     *
+     * @return
+     */
     List<DownWorkstation> queryWorkStationIsFull();
 
-
+    /**
+     * 鏍囩鎵撳嵃鏌ヨ
+     *
+     * @param downGlassInfo
+     * @return
+     */
+    List<Map<String, Object>> downGlassLabelPrint(DownGlassInfo downGlassInfo);
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
index 6cd6519..7f18616 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
@@ -158,9 +158,10 @@
         queryWrapper.eq("flow_card_id", downGlassInfo.getFlowCardId())
                 .eq("layer", downGlassInfo.getLayer())
                 .select("flow_card_id", "layer", "width", "height", "filmsid", "thickness", "glass_type", "COUNT(*) AS quantity")
-                .groupBy("flow_card_id", "layer", "width", "height", "filmsid", "thickness", "glass_type","id")
+                .groupBy("flow_card_id", "layer", "width", "height", "filmsid", "thickness", "glass_type", "id")
                 .orderByAsc("id");
         List<Map<String, Object>> resultList = baseMapper.selectMaps(queryWrapper);
+
         log.info("MES钀芥灦鏁版嵁:{}", resultList);
 
         List<Map<String, Object>> projectInfo = flowCardService.selectProject(downGlassInfo.getFlowCardId(), downGlassInfo.getLayer());
@@ -220,4 +221,66 @@
         listMap.add(result);
         return listMap;
     }
+
+
+    @Override
+    public List<Map<String, Object>> downGlassLabelPrint(DownGlassInfo downGlassInfo) {
+        //鑾峰彇涓嬬墖鐜荤拑鐨勯『搴�
+//        QueryWrapper<DownGlassInfo> queryWrapper = Wrappers.query();
+//        queryWrapper
+//                .eq("flow_card_id", downGlassInfo.getFlowCardId())
+//                .eq("layer", downGlassInfo.getLayer())
+//                .select("flow_card_id", "layer", "width", "height", "filmsid", "thickness", "glass_type", "COUNT(*) AS quantity")
+//                .groupBy("flow_card_id", "layer", "width", "height", "filmsid", "thickness", "glass_type", "id")
+//                .orderByAsc("id");
+//        List<Map<String, Object>> resultList = baseMapper.selectMaps(queryWrapper);
+        List<Map<String, Object>> resultList = baseMapper.downGlassLabelPrint(downGlassInfo.getFlowCardId(), downGlassInfo.getLayer());
+        log.info("MES钀芥灦鏁版嵁:{}", resultList);
+        //鑾峰彇ERP鏍囩鎵�闇�鐨勪俊鎭�
+        List<Map<String, Object>> labelInfo = flowCardService.selectLabel(downGlassInfo.getFlowCardId(), downGlassInfo.getLayer());
+        log.info("鏍囩鏁版嵁:{}", labelInfo);
+
+        for (Map<String, Object> row : resultList) {
+            int glass_type = (int) row.get("glass_type");
+            int layer = (int) row.get("layer");
+            for (Map<String, Object> row1 : labelInfo) {
+                int orderNumber = (int) row1.get("orderNumber");
+                int technologyNumber = (int) row1.get("technologyNumber");
+                if (orderNumber == glass_type && technologyNumber == layer) {
+
+                    String order_id = (String) row1.get("order_id");
+                    String project = (String) row1.get("project");
+                    Long customer_id = (Long) row1.get("customer_id");
+                    BigDecimal width = (BigDecimal) row1.get("width");
+                    BigDecimal height = (BigDecimal) row1.get("height");
+                    Long quantity = (Long) row1.get("quantity");
+                    String glass_child = (String) row1.get("glass_child");
+                    String process = (String) row1.get("process");
+                    String customer_name = (String) row1.get("customer_name");
+                    String processing_note = (String) row1.get("processing_note");
+                    String other_colunmns = (String) row1.get("other_colunmns");
+                    String building_number = (String) row1.get("building_number");
+                    String bend_radius = (String) row1.get("bend_radius");
+
+                    row.put("orderNumber", orderNumber);
+                    row.put("technology_number", technologyNumber);
+                    row.put("order_id", order_id);
+                    row.put("project", project);
+                    row.put("customer_id", customer_id);
+                    row.put("width", width);
+                    row.put("height", height);
+                    row.put("quantity", quantity);
+                    row.put("glass_child", glass_child);
+                    row.put("process", process);
+                    row.put("customer_name", customer_name);
+                    row.put("processing_note", processing_note);
+                    row.put("other_colunmns", other_colunmns);
+                    row.put("building_number", building_number);
+                    row.put("bend_radius", bend_radius);
+                }
+            }
+        }
+        return resultList;
+    }
+
 }
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 fe6f4c5..6b8f507 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
@@ -86,7 +86,7 @@
             item.put("width", downWorkstionAndDownGlassinfo.getTotalwidth());
             item.put("fillColor", "yellow");
             item.put("content", downWorkstionAndDownGlassinfo.getFlowCardId());
-            if (downWorkstionAndDownGlassinfo.getFlowCardId()!=""&&downWorkstionAndDownGlassinfo.getFlowCardId()!=null&&downWorkstionAndDownGlassinfo.getTotalQuantity() == downWorkstionAndDownGlassinfo.getRacksNumber() + downWorkstionAndDownGlassinfo.getRacksNumber()) {
+            if (downWorkstionAndDownGlassinfo.getFlowCardId() != "" && downWorkstionAndDownGlassinfo.getFlowCardId() != null && downWorkstionAndDownGlassinfo.getTotalQuantity() == downWorkstionAndDownGlassinfo.getRacksNumber() + downWorkstionAndDownGlassinfo.getRacksNumber()) {
                 item.put("fullCardColor", "red");
             } else {
                 item.put("fullCardColor", "blue");
@@ -170,6 +170,8 @@
         updateWrapper.set("flow_card_id", null)
                 .set("total_quantity", 0)
                 .set("racks_number", 0)
+                .set("other_number", 0)
+                .set("layer", null)
                 .eq("workstation_id", workstationId);
 
         baseMapper.update(new DownWorkstation(), updateWrapper);
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java
index de91e91..c65abed 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java
@@ -128,11 +128,11 @@
             wrapper.eq(DownGlassInfo::getWorkStationId, request.getWorkStationId());
         }
         List<DownGlassInfo> downGlassInfos = downGlassInfoService.list(wrapper);
-        Map<Integer, List<DownGlassInfo>> listMap = downGlassInfos.stream().collect(Collectors.groupingBy(DownGlassInfo::getWorkStationId));
+//        Map<Integer, List<DownGlassInfo>> listMap = downGlassInfos.stream().collect(Collectors.groupingBy(DownGlassInfo::getWorkStationId));
         List<Object> engineerIdListTemp = downGlassInfoService.listObjs(new QueryWrapper<DownGlassInfo>().select("distinct engineer_id"));
         List<String> engineerIdList = engineerIdListTemp.stream().map(String::valueOf).collect(Collectors.toList());
         JSONObject jsonObject4 = new JSONObject();
-        jsonObject4.append("downGlassInfos", listMap);
+        jsonObject4.append("downGlassInfos", downGlassInfos);
         jsonObject4.append("engineerIdList", engineerIdList);
 
         //閽㈠寲寮�鍏�
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
index 8df8e09..c8c24c9 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
@@ -10,8 +10,8 @@
 
 mybatis-plus:
   mapper-locations: classpath*:mapper/*.xml
-  configuration:
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+#  configuration:
+#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
 
 mes:
   maxWidth: 2500    #涓嬬墖鐨勬渶澶у搴�
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml
index c633e7d..41072b0 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml
@@ -90,4 +90,99 @@
         </foreach>
         ORDER BY T.RACKS_NUMBER DESC
     </select>
+
+    <select id="selectFlowCard" resultType="java.util.Map">
+        select fc.order_number,
+               concat(round(ogd.child_width), "*", round(ogd.child_height))   as child_width,
+               od.quantity,
+               round(ogd.total_area, 2)                                       as total_area,
+               od.perimeter,
+               od.bend_radius,
+               concat(IFNULL(od.processing_note, ''), IFNULL(od.remarks, '')) as remarks,
+               od.other_columns,
+               round(ogd.child_width)                                         as width,
+               round(ogd.child_height)                                        as height,
+               pd.separation,
+               fc.technology_number
+        from pp.flow_card as fc
+                 left join sd.order_glass_detail as ogd
+                           on fc.order_id = ogd.order_id and fc.order_number = ogd.order_number and
+                              fc.technology_number = ogd.technology_number
+                 left join sd.order_detail as od on od.order_id = fc.order_id and od.order_number = fc.order_number
+                 left join sd.product_detail as pd
+                           on pd.prod_id = od.product_id and pd.glass_sort = ogd.technology_number
+        where fc.process_id = #{processId}
+          and position(fc.technology_number in #{technologyNumber})
+        group by fc.process_id, fc.order_number, fc.technology_number
+        order by IF(sort != NULL || sort != '', sort, fc.order_number)
+
+    </select>
+
+    <select id="selectProject" resultType="java.util.Map">
+        select o.customer_name,
+               o.project,
+               (select process
+                from sd.order_glass_detail
+                where order_id = fc.order_id
+                  and order_number = fc.order_number
+                  and technology_number = fc.technology_number) as process,
+               od.edging_type,
+               (select glass_child
+                from sd.order_glass_detail
+                where order_id = fc.order_id
+                  and order_number = fc.order_number
+                  and technology_number = fc.technology_number) as glass_child,
+               od.product_name,
+               o.processing_note,
+               fc.process_id,
+               SUM(od.quantity)                                 as quantity,
+               round(SUM(ogd.total_area), 2)                    as gross_area,
+               sum(od.weight)                                   as weight,
+               1                                                as technologyNumber,
+               concat(fc.process_id, '/', 1)                    as processIdNumber,
+               concat('瀵瑰簲鎴戝徃鍗曞彿', o.batch)                        AS otherRemarks
+        from pp.flow_card as fc
+                 left join sd.order_glass_detail as ogd
+                           on fc.order_id = ogd.order_id and fc.order_number = ogd.order_number and
+                              fc.technology_number = ogd.technology_number
+                 left join sd.order_detail as od on od.order_id = fc.order_id and od.order_number = fc.order_number
+                 left join sd.`order` as o on o.order_id = fc.order_id
+                 left join sd.product as p on p.id = od.product_id
+                 left join (select ogd.order_id,
+                                   ogd.order_number,
+                                   ogd.technology_number,
+                                   ogd.glass_child,
+                                   GROUP_CONCAT(glass_child SEPARATOR ' ') AS concatenated_glass_child
+                            from sd.order_glass_detail as ogd
+                            where ogd.order_id = left (#{processId}
+                                , 10)
+                              and position (ogd.technology_number in #{technologyNumber})
+                            GROUP BY order_id, order_number) as ogdc
+                           on ogdc.order_id = ogd.order_id and ogdc.order_number = ogd.order_number and
+                              ogdc.technology_number = ogd.technology_number
+        where fc.process_id = #{processId}
+          and position(fc.technology_number in #{technologyNumber})
+        group by fc.process_id
+    </select>
+
+    <select id="downGlassLabelPrint" resultType="java.util.Map">
+        select a.flow_card_id,
+               a.layer,
+               a.width,
+               a.height,
+               a.filmsid,
+               a.thickness,
+               a.glass_type,
+               COUNT(*) AS quantity,
+               b.tempering_layout_id,
+               b.tempering_feed_sequence
+        from down_glass_info a
+                 inner join glass_info b on a.glass_id = b.glass_id
+        where a.flow_card_id = #{processId}
+          and a.layer = #{technologyNumber}
+        group by a.flow_card_id, a.layer, a.width, a.height, a.filmsid, a.thickness, a.glass_type, a.id
+        order by a.id
+    </select>
+
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0