From 69ce239949e32dd40ded422ea72987b4a9751add Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期二, 05 八月 2025 17:40:32 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override

---
 north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue                   |    1 
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/OptimizationRect.vue |    2 
 north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml                      |   12 +-
 north-glass-erp/northglass-erp/src/components/sd/order/OrderProcess.vue             |   23 +++
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeControl.vue       |    2 
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue    |  195 +++++++++++++++++++-------------------
 north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java  |   36 ++++---
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizationRectPrint.vue |    4 
 8 files changed, 151 insertions(+), 124 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/components/sd/order/OrderProcess.vue b/north-glass-erp/northglass-erp/src/components/sd/order/OrderProcess.vue
index 50367ed..038987f 100644
--- a/north-glass-erp/northglass-erp/src/components/sd/order/OrderProcess.vue
+++ b/north-glass-erp/northglass-erp/src/components/sd/order/OrderProcess.vue
@@ -35,11 +35,11 @@
   },
 
 
-  columns:[
-
-  ],
   mergeCells:[],
   toolbarConfig: {
+    slots:{
+      buttons: "title"
+    },
     zoom: true,
     // custom: true
   },
@@ -66,7 +66,8 @@
 const list = ref([])
 
 let props = defineProps({
-  orderId:null
+  orderId:null,
+  row: {}
 })
 const columns = [
   {field: 'order_number',fixed:"left", width: 90,title: t('order.OrderNum'),showOverflow:"ellipsis"},
@@ -174,12 +175,17 @@
       +')' )
   //return
 }
+let showTitle = ref(false)
+const changeZoom = ()=> {
+  showTitle.value = !showTitle.value
+}
 </script>
 
 <template>
   <div style="width: 100%;height: 100%">
     <vxe-grid
         @filter-change ='filterChange'
+        @zoom="changeZoom"
         height="100%"
         size="mini"
         class="mytable-scrollbar"
@@ -202,6 +208,15 @@
         <span>{{ quantitySum(row,column) }} </span>
       </template>
 
+      <template #title>
+        <span style="font-weight: bold" v-show="showTitle">
+          {{ row.orderId }}
+          {{ row.project?'--':'' }}
+          {{row.project}}
+          {{ row.batch?'--':'' }}
+          {{row.batch}}
+        </span>
+      </template>
     </vxe-grid>
   </div>
 </template>
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizationRectPrint.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizationRectPrint.vue
index 2ba7e74..f308151 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizationRectPrint.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizationRectPrint.vue
@@ -1,6 +1,8 @@
 <template>
   <div>
-    <el-button id="button" type="primary" @click="handlePrint">鎵撳嵃</el-button>
+    <el-button id="button" type="primary" @click="handlePrint" style="position: fixed; top: 90px; right: 20px; padding: 20px; background: #4CAF50; color: white; border: none; border-radius: 5px; cursor: pointer;">
+      鎵撳嵃
+    </el-button>
     
     <div ref="printContainer" style="position: relative;">
       <RectRenderer 
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeControl.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeControl.vue
index 5f8b1b5..259c0af 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeControl.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeControl.vue
@@ -11,7 +11,7 @@
   
   
     </div>
-    <button @click="submitLayouts" style="position: fixed; bottom: 20px; right: 20px; padding: 10px; background: #4CAF50; color: white; border: none; border-radius: 5px; cursor: pointer;">
+    <button @click="submitLayouts" style="position: fixed; top: 90px; right: 20px; padding: 10px; background: #4CAF50; color: white; border: none; border-radius: 5px; cursor: pointer;">
       淇濆瓨OPT
     </button>
   </template>
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/OptimizationRect.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/OptimizationRect.vue
index 58820da..c0ba000 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/OptimizationRect.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/OptimizationRect.vue
@@ -72,7 +72,7 @@
     </div>
 
     <!-- 鎻愪氦鎸夐挳 -->
-    <button @click="submitLayouts" style="position: fixed; bottom: 20px; right: 20px; padding: 10px; background: #4CAF50; color: white; border: none; border-radius: 5px; cursor: pointer;">
+    <button @click="submitLayouts" style="position: fixed; top: 90px; right: 20px; padding: 10px; background: #4CAF50; color: white; border: none; border-radius: 5px; cursor: pointer;">
       淇濆瓨璋冩暣
     </button>
   </div>
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue
index 6dce01a..65982c4 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue
@@ -458,6 +458,7 @@
       return;
     }
     emit('getSmallPieceData', 1);
+    optimizeData.value.glassDetails = [];
     xGrid.value.getTableData().fullData.forEach(items=>{
       let rackNoValue = 0;
       if (items.rackNo !== undefined && items.rackNo !== null && items.rackNo !== '') {
@@ -524,6 +525,7 @@
         dialogVisible.value[3] = newValue;
       }
       if (props.CheckboxChangeData!=null && props.CheckboxChangeData.length>0){
+        optimizeData.value.materialDetails = [];
         props.CheckboxChangeData.forEach(items=>{
           const detail={
             width :null,
@@ -601,99 +603,81 @@
       const grindingTrimming = res.data.grindingTrimming;
       optimizeState.value=res.data.optimizeState;
 
-      // 鍔犺浇纾ㄩ噺閰嶇疆
-      loadGrindingConfiguration().then((grindConfig) => {
-        console.log("鍔犺浇鐨勭(閲忛厤缃�:", grindConfig);
-
-        data = data.map(item => {
-          // 淇濈暀浠庡悗绔繑鍥炵殑鍘熷纾ㄩ噺鍊硷紝濡傛灉瀛樺湪鐨勮瘽
-          const originalLongGrind1 = item.longGrind1;
-          const originalLongGrind2 = item.longGrind2;
-          const originalShortGrind1 = item.shortGrind1;
-          const originalShortGrind2 = item.shortGrind2;
-
-          // 濡傛灉娌℃湁鍘熷纾ㄩ噺鍊硷紝鍒欏垵濮嬪寲涓�0
-          item.longGrind1 = originalLongGrind1 !== undefined && originalLongGrind1 !== null ?
-              parseFloat(originalLongGrind1) : 0;
-          item.longGrind2 = originalLongGrind2 !== undefined && originalLongGrind2 !== null ?
-              parseFloat(originalLongGrind2) : 0;
-          item.shortGrind1 = originalShortGrind1 !== undefined && originalShortGrind1 !== null ?
-              parseFloat(originalShortGrind1) : 0;
-          item.shortGrind2 = originalShortGrind2 !== undefined && originalShortGrind2 !== null ?
-              parseFloat(originalShortGrind2) : 0;
-
-          // 澶勭悊 grindingTrimming 鏁版嵁锛堝鏋滃瓨鍦級
-          if(grindingTrimming!==null && grindingTrimming.length > 0){
-            const formattedData = grindingTrimming.map(item => {
-              const formattedItem = {};
-              for (const key in item) {
-                if (typeof item[key] === 'string') {
-                  //鍘婚櫎瀛楃涓插睘鎬у�煎紑澶村拰缁撳熬鐨勫弻寮曞彿
-                  formattedItem[key] = item[key].replace(/^\"|\"$/g, '');
-                } else {
-                  formattedItem[key] = item[key];
-                }
-              }
-              return formattedItem;
-            });
-
-            // 濡傛灉鏈夎嚜鍔ㄥ~鍏呴厤缃紝浣跨敤瀹冩潵璁剧疆纾ㄩ噺
-            if(formattedData[0].autoFillEdge==="true"){
-              const minAutoLenght = parseFloat(formattedData[0].minAutoLenght) || 0;
-              const leftEdge = parseFloat(formattedData[0].leftEdge) || 0;
-              const rightEdge = parseFloat(formattedData[0].rightEdge) || 0;
-              const upEdge = parseFloat(formattedData[0].upEdge) || 0;
-              const downEdge = parseFloat(formattedData[0].downEdge) || 0;
-
-              if(item.width >= minAutoLenght){
-                item.longGrind1 = leftEdge;
-                item.longGrind2 = rightEdge;
-              }
-              if(item.height >= minAutoLenght){
-                item.shortGrind1 = upEdge;
-                item.shortGrind2 = downEdge;
-              }
-            }
-          } else if(grindConfig) {
-            // 浣跨敤浠� getConfiguration 鎺ュ彛鍔犺浇鐨勯厤缃�
-            if(grindConfig.autoFillEdge==="true"){
-              const minAutoLenght = parseFloat(grindConfig.minAutoLenght) || 0;
-              const leftEdge = parseFloat(grindConfig.leftEdge) || 0;
-              const rightEdge = parseFloat(grindConfig.rightEdge) || 0;
-              const upEdge = parseFloat(grindConfig.upEdge) || 0;
-              const downEdge = parseFloat(grindConfig.downEdge) || 0;
-
-              if(item.width >= minAutoLenght){
-                item.longGrind1 = leftEdge;
-                item.longGrind2 = rightEdge;
-              }
-              if(item.height >= minAutoLenght){
-                item.shortGrind1 = upEdge;
-                item.shortGrind2 = downEdge;
-              }
-            }else {
-              // 鍗充娇娌℃湁鍚敤鑷姩濉厖锛屼篃搴旇搴旂敤榛樿鐨勭(閲忓��
-              item.longGrind1 = parseFloat(grindConfig.leftEdge) || 0;
-              item.longGrind2 = parseFloat(grindConfig.rightEdge) || 0;
-              item.shortGrind1 = parseFloat(grindConfig.upEdge) || 0;
-              item.shortGrind2 = parseFloat(grindConfig.downEdge) || 0;
+      // 澶勭悊 grindingTrimming 鏁版嵁锛堝鏋滃瓨鍦級
+      let processedGrindConfig = null;
+      if(grindingTrimming!==null && grindingTrimming.length > 0){
+        // 澶勭悊 grindingTrimming 鏁版嵁锛屽幓闄ゅ弻寮曞彿
+        const formattedData = grindingTrimming.map(item => {
+          const formattedItem = {};
+          for (const key in item) {
+            if (typeof item[key] === 'string') {
+              //鍘婚櫎瀛楃涓插睘鎬у�煎紑澶村拰缁撳熬鐨勫弻寮曞彿
+              formattedItem[key] = item[key].replace(/^\"|\"$/g, '');
+            } else {
+              formattedItem[key] = item[key];
             }
           }
-
-          item.height=parseFloat(item.height.toFixed(2))
-          item.width=parseFloat(item.width.toFixed(2))
-
-          return item;
+          return formattedItem;
         });
+        processedGrindConfig = formattedData[0];
+      }
 
-        console.log("澶勭悊鍚庣殑鏁版嵁:", data);
+      data = data.map(item => {
+        // 鐩存帴灏� grindingTrimming 涓殑纾ㄩ噺淇℃伅鍐欏埌琛ㄤ腑
+        if (processedGrindConfig) {
+          // 浣跨敤 grindingTrimming 涓殑閰嶇疆璁剧疆纾ㄩ噺
+          const leftEdge = parseFloat(processedGrindConfig.leftEdge) || 0;
+          const rightEdge = parseFloat(processedGrindConfig.rightEdge) || 0;
+          const upEdge = parseFloat(processedGrindConfig.upEdge) || 0;
+          const downEdge = parseFloat(processedGrindConfig.downEdge) || 0;
 
-        xGrid.value.loadData(data);
-        gridOptions.data = data;
-        projectName.value = data[0].project_name;
-        quantitys.value=res.data.project.glass_total
-        areas.value=res.data.project.glass_total_area
+          item.longGrind1 = leftEdge;   // 闀跨(1
+          item.longGrind2 = rightEdge;  // 闀跨(2
+          item.shortGrind1 = upEdge;    // 鐭(1
+          item.shortGrind2 = downEdge;  // 鐭(2
+
+          // 濡傛灉鍚敤浜嗚嚜鍔ㄥ~鍏呭姛鑳斤紝鏍规嵁灏哄鍒ゆ柇鏄惁搴旂敤纾ㄩ噺
+          if(processedGrindConfig.autoFillEdge === "true"){
+            const minAutoLength = parseFloat(processedGrindConfig.minAutoLenght) || 0;
+
+            // 濡傛灉瀹藉害灏忎簬鏈�灏忚嚜鍔ㄩ暱搴︼紝涓嶅簲鐢ㄥ乏鍙崇(閲�
+            if(item.width < minAutoLength){
+              item.longGrind1 = 0;
+              item.longGrind2 = 0;
+            }
+
+            // 濡傛灉楂樺害灏忎簬鏈�灏忚嚜鍔ㄩ暱搴︼紝涓嶅簲鐢ㄤ笂涓嬬(閲�
+            if(item.height < minAutoLength){
+              item.shortGrind1 = 0;
+              item.shortGrind2 = 0;
+            }
+          }
+        } else {
+          // 濡傛灉娌℃湁 grindingTrimming 鏁版嵁锛屽垵濮嬪寲涓�0
+          item.longGrind1 = item.longGrind1 !== undefined && item.longGrind1 !== null ?
+              parseFloat(item.longGrind1) : 0;
+          item.longGrind2 = item.longGrind2 !== undefined && item.longGrind2 !== null ?
+              parseFloat(item.longGrind2) : 0;
+          item.shortGrind1 = item.shortGrind1 !== undefined && item.shortGrind1 !== null ?
+              parseFloat(item.shortGrind1) : 0;
+          item.shortGrind2 = item.shortGrind2 !== undefined && item.shortGrind2 !== null ?
+              parseFloat(item.shortGrind2) : 0;
+        }
+
+        item.height=parseFloat(item.height.toFixed(2))
+        item.width=parseFloat(item.width.toFixed(2))
+
+        return item;
       });
+
+      xGrid.value.loadData(data);
+      gridOptions.data = data;
+      projectName.value = data[0].project_name;
+      quantitys.value=res.data.project.glass_total
+      areas.value=res.data.project.glass_total_area
+
+      // 鏇存柊 optimizeData 涓殑纾ㄩ噺閰嶇疆
+      updateOptimizeDataWithGrindingConfig(processedGrindConfig);
     } else {
       ElMessage.warning(res.msg);
     }
@@ -702,6 +686,19 @@
   });
 };
 
+const updateOptimizeDataWithGrindingConfig = (grindConfig) => {
+  if (grindConfig) {
+    // 鏇存柊 optimizeData 涓殑纾ㄩ噺閰嶇疆
+    optimizeData.value.grindingConfig = {
+      leftEdge: parseFloat(grindConfig.leftEdge) || 0,
+      upEdge: parseFloat(grindConfig.upEdge) || 0,
+      rightEdge: parseFloat(grindConfig.rightEdge) || 0,
+      downEdge: parseFloat(grindConfig.downEdge) || 0,
+      autoFillEdge: grindConfig.autoFillEdge === "true",
+      minAutoLength: parseFloat(grindConfig.minAutoLenght) || 0
+    };
+  }
+};
 
 const firstLoading = async() => {
   request.post(`/glassOptimize/selectOptimizeParms/${username}`).then((res) => {
@@ -798,6 +795,7 @@
   });*/
 };
 
+const grindingConfig = ref(null);
 
 const loadGrindingConfiguration = async () => {
   return new Promise((resolve) => {
@@ -817,10 +815,11 @@
             }
             return formattedItem;
           });
+          // 淇濆瓨纾ㄩ噺閰嶇疆
+          grindingConfig.value = formattedData[0];
           resolve(formattedData[0]);
         } else {
-          // 鎻愪緵榛樿閰嶇疆
-          resolve({
+          const defaultConfig = {
             leftEdge: '0',
             upEdge: '0',
             rightEdge: '0',
@@ -828,12 +827,13 @@
             quickEdge: '1',
             autoFillEdge: 'false',
             minAutoLenght: '0'
-          });
+          };
+          grindingConfig.value = defaultConfig;
+          resolve(defaultConfig);
         }
       } else {
         ElMessage.warning(res.msg);
-        // 鎻愪緵榛樿閰嶇疆
-        resolve({
+        const defaultConfig = {
           leftEdge: '0',
           upEdge: '0',
           rightEdge: '0',
@@ -841,11 +841,12 @@
           quickEdge: '1',
           autoFillEdge: 'false',
           minAutoLenght: '0'
-        });
+        };
+        grindingConfig.value = defaultConfig;
+        resolve(defaultConfig);
       }
     }).catch(() => {
-      // 鎻愪緵榛樿閰嶇疆
-      resolve({
+      const defaultConfig = {
         leftEdge: '0',
         upEdge: '0',
         rightEdge: '0',
@@ -853,7 +854,9 @@
         quickEdge: '1',
         autoFillEdge: 'false',
         minAutoLenght: '0'
-      });
+      };
+      grindingConfig.value = defaultConfig;
+      resolve(defaultConfig);
     });
   });
 };
diff --git a/north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue b/north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue
index 7926fdc..93c0818 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue
@@ -750,6 +750,7 @@
           <order-process
               v-if="tabsValue==='3'"
               :orderId="rowClickIndex===null?null:rowClickIndex.orderId"
+              :row="rowClickIndex===null?{}:rowClickIndex"
           />
         </el-tab-pane>
       </el-tabs>
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java b/north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java
index b514fe3..bc937be 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java
@@ -312,22 +312,26 @@
     public Map<String, Object> projectInfoSv(String projectNo,String username) {
         Map<String, Object> stringObjectMap = glassOptimizeMapper.selectProjectCount(projectNo);
         Map<String, Object> map = new HashMap<>();
-        if(Integer.parseInt(stringObjectMap.get("optimize_state").toString())==1){
-            map.put("optimizeState", Integer.parseInt(stringObjectMap.get("optimize_state").toString()));
-            map.put("data", glassOptimizeMapper.getOptimizeDetail(projectNo));
-            map.put("project", glassOptimizeMapper.selectProjectCount(projectNo));
-            map.put("grindingTrimming", null);
-        } else if (Integer.parseInt(stringObjectMap.get("tempering_state").toString())==1) {
-            map.put("optimizeState", Integer.parseInt(stringObjectMap.get("optimize_state").toString()));
-            map.put("data", glassOptimizeMapper.analogComputationOptimization(projectNo));
-            map.put("project", glassOptimizeMapper.selectProjectCount(projectNo));
-            map.put("grindingTrimming", glassOptimizeMapper.getGrindingTrimming(username));
-        } else{
-            map.put("optimizeState", Integer.parseInt(stringObjectMap.get("optimize_state").toString()));
-            map.put("data", glassOptimizeMapper.firstOptimization(projectNo));
-            map.put("project", glassOptimizeMapper.selectProjectCount(projectNo));
-            map.put("grindingTrimming", glassOptimizeMapper.getGrindingTrimming(username));
-        }
+//        if(Integer.parseInt(stringObjectMap.get("optimize_state").toString())==1){
+//            map.put("optimizeState", Integer.parseInt(stringObjectMap.get("optimize_state").toString()));
+//            map.put("data", glassOptimizeMapper.getOptimizeDetail(projectNo));
+//            map.put("project", glassOptimizeMapper.selectProjectCount(projectNo));
+//            map.put("grindingTrimming", null);
+//        } else if (Integer.parseInt(stringObjectMap.get("tempering_state").toString())==1) {
+//            map.put("optimizeState", Integer.parseInt(stringObjectMap.get("optimize_state").toString()));
+//            map.put("data", glassOptimizeMapper.analogComputationOptimization(projectNo));
+//            map.put("project", glassOptimizeMapper.selectProjectCount(projectNo));
+//            map.put("grindingTrimming", glassOptimizeMapper.getGrindingTrimming(username));
+//        } else{
+//            map.put("optimizeState", Integer.parseInt(stringObjectMap.get("optimize_state").toString()));
+//            map.put("data", glassOptimizeMapper.firstOptimization(projectNo));
+//            map.put("project", glassOptimizeMapper.selectProjectCount(projectNo));
+//            map.put("grindingTrimming", glassOptimizeMapper.getGrindingTrimming(username));
+//        }
+        map.put("optimizeState", Integer.parseInt(stringObjectMap.get("optimize_state").toString()));
+        map.put("data", glassOptimizeMapper.firstOptimization(projectNo));
+        map.put("project", glassOptimizeMapper.selectProjectCount(projectNo));
+        map.put("grindingTrimming", glassOptimizeMapper.getGrindingTrimming(username));
         return map;
     }
 
diff --git a/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml b/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
index 70f2b4a..87b1cd4 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
@@ -243,7 +243,7 @@
     <select id="getOptimizeDetail">
         SELECT
             h.project_no,
-            h.heat_layout_id as rackNo,
+            h.rack_no as rackNo,
             h.o_width AS width,
             h.o_height AS height,
             (h.height-h.o_height)/2 as shortGrind1,
@@ -280,14 +280,14 @@
             h.project_no =#{projectNo}
         GROUP BY
             h.project_no,
-            h.heat_layout_id,
+            h.rack_no,
             h.width,
             h.height,
             h.process_id,
             h.layer,
             c.order_number
         ORDER BY
-            h.heat_layout_id;
+            h.rack_no;
     </select>
 
     <!--宸ョ▼淇℃伅娴佺▼鍗�-->
@@ -1118,7 +1118,8 @@
             x_axis,
             y_axis,
             patch_state,
-            mark_icon
+            mark_icon,
+            rack_no
             ) VALUES (
             #{projectId},
             #{glass.processId},
@@ -1134,7 +1135,8 @@
             #{glass.x},
             #{glass.y},
             #{glass.patchState},
-            #{glass.markIcon}
+            #{glass.markIcon},
+            #{glass.rackNo}
             );
         </foreach>
     </insert>

--
Gitblit v1.8.0