From aaf4f788120b7221c5b9377e196848dd9ec4e962 Mon Sep 17 00:00:00 2001
From: wangfei <3597712270@qq.com>
Date: 星期四, 22 八月 2024 10:18:25 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes

---
 UI-Project/src/views/UnLoadGlass/PrintCustomLabelSemi1.vue                                                                     |  227 +++++++++
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/DateUtil.java                                                 |   24 +
 UI-Project/config.js                                                                                                           |    8 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/request/DownGlassInfoRequest.java |   48 ++
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/FlowCardService.java                                     |   24 +
 hangzhoumesParent/JsonFile/PlcTemperingGlass.json                                                                              |  132 +++++
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/request/CacheWornRequest.java       |   28 +
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/FlowCard.java                                             |  163 ++++++
 UI-Project/src/utils/constants.js                                                                                              |    4 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/FlowCardMapper.java                                       |   27 +
 hangzhoumesParent/common/servicebase/src/main/resources/application.yml                                                        |    8 
 hangzhoumesParent/common/servicebase/src/main/resources/mapper/FlowCardMapper.xml                                              |  105 ++++
 UI-Project/src/views/UnLoadGlass/loadmachinerack.vue                                                                           |   85 ++
 UI-Project/src/lang/companyInfo.js                                                                                             |    4 
 UI-Project/src/views/PurchaseReturn/purchaseStorage.vue                                                                        |  113 +++-
 hangzhoumesParent/JsonFile/PlcdownGlass.json                                                                                   |  149 ++++++
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/FlowCardController.java                               |   21 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/request/IdentWornRequest.java       |   28 +
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/FlowCardServiceImpl.java                            |   37 +
 UI-Project/src/views/UnLoadGlass/PrintFlow.vue                                                                                 |  156 ++---
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/request/EdgGlassInfoRequest.java    |   40 +
 21 files changed, 1,284 insertions(+), 147 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/PurchaseReturn/purchaseStorage.vue b/UI-Project/src/views/PurchaseReturn/purchaseStorage.vue
index 075ed55..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' :{
@@ -31,9 +31,11 @@
 }
 let socket = null;
 const socketUrl = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/temperingGlass`; 
-const handleMessage = (data) => {  
-  if (data.overGlass && data.overGlass.length > 0) {  
-    const newRects = data.overGlass[0].map(rect => {  
+// 瀹氫箟娑堟伅澶勭悊鍑芥暟锛屾洿鏂� receivedData 鍙橀噺
+const handleMessage = (data) => {
+  // 鏇存柊 tableData 鐨勬暟鎹�
+  if(data.overGlass!=null){
+    adjustedRects.value =  data.overGlass[0].map(rect => {  
       const scaleFactor =  1621.78/5190; 
       let adjustedWidth, adjustedHeight, adjustedWidtha, adjustedHeighta,widtha,heighta;
       let newX = rect.yCoordinate; 
@@ -48,9 +50,15 @@
     if (rect.angle === 0) {  
     adjustedWidth = widtha * scaleFactor;  
     adjustedHeight = heighta * 0.16;  
+    // adjustedWidtha = widtha;  
+    // adjustedHeighta = heighta;  
+    // newX = 5190 - (rect.yCoordinate + rect.width); 
   } else {  
     adjustedWidth = heighta * scaleFactor;  
     adjustedHeight = widtha * 0.16;  
+    // adjustedWidtha = heighta;  
+    // adjustedHeighta = widtha;  
+    // newX = 5190 - (rect.yCoordinate + rect.height);  
   }  
   return {  
     ...rect, 
@@ -60,20 +68,72 @@
     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;  
   
-    // 鍚堝苟鏂版棫鐭╁舰锛屼繚鐣� isActive 鐘舵��  
-    adjustedRects.value = adjustedRects.value.map(oldRect => {  
-      const newRect = newRects.find(r => r.glassId === oldRect.glassId);  
-      if (newRect) {  
-        return { ...oldRect, ...newRect, isActive: oldRect.isActive };  
-      }  
-      return oldRect; // 濡傛灉鏃х煩褰㈠湪鏂版暟鎹腑涓嶅瓨鍦紝鍒欎繚鐣欏師鏍�  
-    }).concat(newRects.filter(r => !adjustedRects.value.some(o => o.glassId === r.glassId)));  
-  }  
-};  
+//     // 浜ゆ崲瀹藉害鍜岄珮搴︼紙濡傛灉鐭╁舰鏄�滄í鍚戔�濈殑锛�  
+//     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) {  
@@ -91,22 +151,17 @@
       return '#911005';  
   }  
 }
-function showDialog(rect) {
-  const index = adjustedRects.value.findIndex(r => r.glassId === rect.glassId);  
-  if (index !== -1) {  
-    adjustedRects.value[index].isActive = true;  
-  }  
+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;  
+    rect.isActive = false; // 鍏抽棴瀵硅瘽妗嗘椂閲嶇疆鎵�鏈夌煩褰㈢殑 isActive 鐘舵��  
   });  
-  blind.value = false; 
-};  
+}; 
 // 鐮存崯
 const handleDamage = async () => {
   try  {
@@ -144,7 +199,7 @@
   closeWebSocket();
 });
 </script>
-
+ 
 <template>
   <div style="margin-top: 10px;">
 <div>
@@ -181,9 +236,9 @@
         </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/pp/controller/FlowCardController.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/FlowCardController.java
new file mode 100644
index 0000000..a265c19
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/FlowCardController.java
@@ -0,0 +1,21 @@
+package com.mes.pp.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-07
+ */
+@RestController
+@RequestMapping("/flow_card/flow-card")
+public class FlowCardController {
+
+}
+
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/FlowCard.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/FlowCard.java
new file mode 100644
index 0000000..3378be3
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/FlowCard.java
@@ -0,0 +1,163 @@
+package com.mes.pp.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class FlowCard implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * (宸ョ▼鍙�,2024.0302澶╂満)
+     */
+      @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 閿�鍞崟鍙�
+     */
+    private String orderId;
+
+    /**
+     * 鐢熶骇璁㈠崟鍙�
+     */
+    private String productionId;
+
+    /**
+     * 娴佺▼鍗″彿
+     */
+    private String processId;
+
+    /**
+     * 钀芥灦椤哄簭
+     */
+    private String landingSequence;
+
+    /**
+     * 搴忓彿
+     */
+    private Integer orderNumber;
+
+    /**
+     * 宸ヨ壓纭搴忓彿
+     */
+    private Integer technologyNumber;
+
+    /**
+     * 鍒嗘灦鏁伴噺
+     */
+    private Integer quantity;
+
+    /**
+     * 浠ヤ紭鍖栨暟閲�
+     */
+    private Integer optimizeQuantity;
+
+    /**
+     * 鎺掔増鐘舵��(榛樿0,1鍏佽鎺掔増2浼樺寲鍗犵敤)
+     */
+    private Integer layoutStatus;
+
+    /**
+     * 琛ョ墖鏁伴噺
+     */
+    private Integer numberPatches;
+
+    /**
+     * 鏈�鍚庡伐搴忔姤宸� 搴撳瓨鏁伴噺
+     */
+    private Integer inventoryQuantity;
+
+    /**
+     * 宸插叆鏁伴噺
+     */
+    private Integer receivedQuantity;
+
+    /**
+     * 琛ョ墖缂栧彿
+     */
+    private String patchId;
+
+    /**
+     * 宸ョ▼鍗犵敤鐘舵�侊紝0涓哄崰鐢�1鍗犵敤
+     */
+    private Integer engineeringOccupancy;
+
+    /**
+     * 宸ョ▼鍙�(2024.0302娣诲姞)
+     */
+    private String projectNo;
+
+    /**
+     * 鍖呰鍓嶅伐搴忔姤宸� 搴撳瓨鏁伴噺
+     */
+    private Integer inventoryNumber;
+
+    /**
+     * 鍏ュ簱鏃堕棿
+     */
+    private LocalDateTime storageTime;
+
+    /**
+     * 鐢熶骇缁堟鐘舵��(榛樿0,1鐢熶骇缁堟)
+     */
+    private Integer terminationStatus;
+
+    /**
+     * 鎵撳嵃鐘舵��
+     */
+    private Integer printStatus;
+
+    /**
+     * 澶囩敤閿�
+     */
+    private Integer alternateKey;
+
+    /**
+     * 鍒嗘灦鍛�
+     */
+    private String founder;
+
+    /**
+     * 鍒嗘灦鏃堕棿
+     */
+    @TableField("splitFrame_time")
+    private LocalDateTime splitframeTime;
+
+    /**
+     * 灞傛暟
+     */
+    private Integer layersNumber;
+
+    /**
+     * 娴佺▼鍗℃墦鍗版帓搴�
+     */
+    private Integer sort;
+
+    /**
+     * 寤虹珛鏃堕棿
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    private LocalDateTime updateTime;
+
+
+}
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
new file mode 100644
index 0000000..865ca5c
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/mapper/FlowCardMapper.java
@@ -0,0 +1,27 @@
+package com.mes.pp.mapper;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.mes.pp.entity.FlowCard;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import feign.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-07
+ */
+@DS("pp")
+public interface FlowCardMapper extends BaseMapper<FlowCard> {
+
+    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
new file mode 100644
index 0000000..7120afb
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/FlowCardService.java
@@ -0,0 +1,24 @@
+package com.mes.pp.service;
+
+import com.mes.pp.entity.FlowCard;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  鏈嶅姟绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-07
+ */
+public interface FlowCardService extends IService<FlowCard> {
+
+    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
new file mode 100644
index 0000000..3fed7cc
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/FlowCardServiceImpl.java
@@ -0,0 +1,37 @@
+package com.mes.pp.service.impl;
+
+import com.mes.pp.entity.FlowCard;
+import com.mes.pp.mapper.FlowCardMapper;
+import com.mes.pp.service.FlowCardService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-08-07
+ */
+@Service
+public class FlowCardServiceImpl extends ServiceImpl<FlowCardMapper, FlowCard> implements FlowCardService {
+
+    @Override
+    public List<Map<String, Object>> selectProject(String processId, Integer technologyNumber){
+        return baseMapper.selectProject(processId,technologyNumber);
+    }
+
+    @Override
+    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/tools/DateUtil.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/DateUtil.java
new file mode 100644
index 0000000..5fe0e17
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/DateUtil.java
@@ -0,0 +1,24 @@
+package com.mes.tools;
+
+import java.util.Calendar;
+import java.util.Date;
+
+public class DateUtil {
+    public static Date getBeginDate(){
+        Calendar now = Calendar.getInstance();
+        Calendar startOfDay = (Calendar) now.clone();
+        startOfDay.set(Calendar.HOUR_OF_DAY, 0);
+        startOfDay.set(Calendar.MINUTE, 0);
+        startOfDay.set(Calendar.SECOND, 0);
+        return startOfDay.getTime();
+    }
+
+    public static Date getEndDate(){
+        Calendar now = Calendar.getInstance();
+        Calendar endOfDay = (Calendar) now.clone();
+        endOfDay.set(Calendar.HOUR_OF_DAY, 23);
+        endOfDay.set(Calendar.MINUTE, 59);
+        endOfDay.set(Calendar.SECOND, 59);
+        return endOfDay.getTime();
+    }
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/resources/application.yml b/hangzhoumesParent/common/servicebase/src/main/resources/application.yml
new file mode 100644
index 0000000..0edfb92
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/resources/application.yml
@@ -0,0 +1,8 @@
+mybatis-plus-join:
+  sub-table-logic: true
+mybatis-plus:
+  global-config:
+    db-config:
+      logic-delete-field: deleted
+      logic-delete-value: 1
+      logic-not-delete-value: 0
\ No newline at end of file
diff --git a/hangzhoumesParent/common/servicebase/src/main/resources/mapper/FlowCardMapper.xml b/hangzhoumesParent/common/servicebase/src/main/resources/mapper/FlowCardMapper.xml
new file mode 100644
index 0000000..1af4682
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/resources/mapper/FlowCardMapper.xml
@@ -0,0 +1,105 @@
+<?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.pp.mapper.FlowCardMapper">
+
+
+    <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="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/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/request/EdgGlassInfoRequest.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/request/EdgGlassInfoRequest.java
new file mode 100644
index 0000000..973b4c2
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/request/EdgGlassInfoRequest.java
@@ -0,0 +1,40 @@
+package com.mes.edgglasstask.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/8/7 16:16
+ * @Description:
+ */
+@Data
+public class EdgGlassInfoRequest {
+
+    /**
+     * 纾ㄨ竟绾� 2001   2002
+     */
+    private List<Integer> cellList;
+    /**
+     * 鐘舵��  0 寰呭鐞�  1 澶勭悊涓�  2 澶勭悊瀹屾垚
+     */
+    private List<Integer> stateList;
+
+    /**
+     * 寮�濮嬫椂闂�
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date beginDate;
+
+    /**
+     * 缁撴潫鏃堕棿
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date endDate;
+}
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/request/IdentWornRequest.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/request/IdentWornRequest.java
new file mode 100644
index 0000000..a383b93
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/request/IdentWornRequest.java
@@ -0,0 +1,28 @@
+package com.mes.edgglasstask.entity.request;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/8/10 13:34
+ * @Description:
+ */
+@Data
+public class IdentWornRequest {
+
+    @NotBlank(message = "鐜荤拑ID涓嶈兘涓虹┖")
+    private String glassId;
+
+    @NotNull(message = "鐘舵�佷笉鑳戒负绌�")
+    private int state;
+
+    @NotNull(message = "绾胯矾涓嶈兘涓虹┖")
+    private int line;
+
+    @NotBlank(message = "宸ュ簭涓嶈兘涓虹┖")
+    private String workingProcedure;
+}
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/request/DownGlassInfoRequest.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/request/DownGlassInfoRequest.java
new file mode 100644
index 0000000..9f342f0
--- /dev/null
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/request/DownGlassInfoRequest.java
@@ -0,0 +1,48 @@
+package com.mes.downglassinfo.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-03-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class DownGlassInfoRequest implements Serializable {
+
+    /**
+     * 宸ヤ綅id
+     */
+    private Integer workStationId;
+
+    /**
+     * 宸ョ▼id
+     */
+    private String engineerId;
+
+    /**
+     * 寮�濮嬫椂闂�
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date beginDate;
+
+    /**
+     * 缁撴潫鏃堕棿
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date endDate;
+
+
+}
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/request/CacheWornRequest.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/request/CacheWornRequest.java
new file mode 100644
index 0000000..05a9aed
--- /dev/null
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/request/CacheWornRequest.java
@@ -0,0 +1,28 @@
+package com.mes.downstorage.entity.request;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/8/10 13:34
+ * @Description:
+ */
+@Data
+public class CacheWornRequest {
+
+    @NotBlank(message = "鐜荤拑ID涓嶈兘涓虹┖")
+    private String glassId;
+
+    @NotNull(message = "鐘舵�佷笉鑳戒负绌�")
+    private int state;
+
+    @NotNull(message = "绾胯矾涓嶈兘涓虹┖")
+    private int line;
+
+    @NotBlank(message = "宸ュ簭涓嶈兘涓虹┖")
+    private String workingProcedure;
+}

--
Gitblit v1.8.0