From 7f54cffaf13d9fc48f415a89c63950f526b3e06d Mon Sep 17 00:00:00 2001
From: 于杰 <1210123631@qq.com>
Date: 星期五, 21 十一月 2025 11:35:03 +0800
Subject: [PATCH] 修改前端展示信息来源,优化数据来源由原来的数据库改为前端表格数据

---
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/OptimizationRect.vue |   56 ++++++++-----
 north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml                      |   25 +++++-
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue    |  138 ++++++++++------------------------
 north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java  |    3 
 4 files changed, 99 insertions(+), 123 deletions(-)

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 e33a740..8369231 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
@@ -71,9 +71,9 @@
       </div>
     </div>
 
-<!--    <button @click="submitLayouts" style="position: fixed; top: 90px; right: 20px; padding: 10px; background: #409eff; color: white; border: none; border-radius: 5px; cursor: pointer;">-->
-<!--      淇濆瓨璋冩暣-->
-<!--    </button>-->
+    <button @click="submitLayouts" style="position: fixed; top: 90px; right: 20px; padding: 10px; background: #409eff; color: white; border: none; border-radius: 5px; cursor: pointer;">
+      淇濆瓨璋冩暣
+    </button>
   </div>
 </template>
 
@@ -119,10 +119,10 @@
 const submitLayouts = async () => {
   layouts.value.forEach(layout => {
     layout.glassDetails.forEach(glassDetail => {
-      glassDetail.x = Math.round(glassDetail.x);
-      glassDetail.y = Math.round(glassDetail.y);
-      glassDetail.width = Math.round(glassDetail.width);
-      glassDetail.height = Math.round(glassDetail.height);
+      glassDetail.x = parseFloat(glassDetail.x.toFixed(2));
+      glassDetail.y = parseFloat(glassDetail.y.toFixed(2));
+      glassDetail.width = parseFloat(glassDetail.width.toFixed(2));
+      glassDetail.height = parseFloat(glassDetail.height.toFixed(2));
     });
   });
   const savedProjectNo = localStorage.getItem('projectNo');
@@ -596,6 +596,9 @@
       glassDetail.glassPoint.forEach(point => {
         point.X += offsetX;
         point.Y += offsetY;
+        // 娣诲姞绮惧害鎺у埗
+        point.X = parseFloat(point.X.toFixed(2));
+        point.Y = parseFloat(point.Y.toFixed(2));
       });
     }
 
@@ -619,8 +622,8 @@
       (props.gh - 100) / layout.height
     );
 
-    glassDetail.x = Math.round(glassDetail.x);
-    glassDetail.y = Math.round(glassDetail.y);
+    glassDetail.x = parseFloat(glassDetail.x.toFixed(2));
+    glassDetail.y = parseFloat(glassDetail.y.toFixed(2));
     adjustAlignmentPosition(layoutIndex, rectIndex);
   }
 
@@ -700,10 +703,10 @@
     else {
       // 鏃犳硶鍚堝苟锛屼繚瀛樺綋鍓嶇煩褰紝寮�濮嬫柊鐨勫悎骞�
       merged.push({
-        x: Math.round(current.x),
-        y: Math.round(current.y),
-        width: Math.round(current.width),
-        height: Math.round(current.height),
+        x: current.x,
+        y: current.y,
+        width: current.width,
+        height: current.height,
         isRemain: true
       });
       current = { ...next };
@@ -712,10 +715,10 @@
 
   // 娣诲姞鏈�鍚庝竴涓煩褰�
   merged.push({
-    x: Math.round(current.x),
-    y: Math.round(current.y),
-    width: Math.round(current.width),
-    height: Math.round(current.height),
+    x: current.x,
+    y: current.y,
+    width: current.width,
+    height: current.height,
     isRemain: true
   });
 
@@ -771,10 +774,10 @@
   // 娣诲姞鏂扮殑浣欐枡鐭╁舰
   uniqueArr.forEach((area) => {
     newGlassDetails.push({
-      x: Math.round(area.x),
-      y: Math.round(area.y),
-      width: Math.round(area.width),
-      height: Math.round(area.height),
+      x: area.x,
+      y: area.y,
+      width: area.width,
+      height: area.height,
       isRemain: true
     });
   });
@@ -849,6 +852,9 @@
         // 鏃嬭浆90搴﹀悗鐨勫潗鏍囷紙椤烘椂閽堬級
         point.X = originalState.x + relY;
         point.Y = originalState.y + (originalState.width - relX);
+        // 娣诲姞绮惧害鎺у埗
+        point.X = parseFloat(point.X.toFixed(2));
+        point.Y = parseFloat(point.Y.toFixed(2));
       });
     }
     adjustGrayRectangles(layoutIndex);
@@ -958,6 +964,9 @@
       glassDetail.glassPoint.forEach(point => {
         point.X += offsetX;
         point.Y += offsetY;
+        // 娣诲姞绮惧害鎺у埗
+        point.X = parseFloat(point.X.toFixed(2));
+        point.Y = parseFloat(point.Y.toFixed(2));
       });
     }
     adjustGrayRectangles(layoutIndex);
@@ -1213,6 +1222,8 @@
     if (glassDetail.glassPoint && Array.isArray(glassDetail.glassPoint)) {
       glassDetail.glassPoint.forEach(point => {
         point.X = width - point.X;
+        point.X = parseFloat(point.X.toFixed(2));
+        point.Y = parseFloat(point.Y.toFixed(2));
       });
     }
   });
@@ -1240,6 +1251,9 @@
     if (glassDetail.glassPoint && Array.isArray(glassDetail.glassPoint)) {
       glassDetail.glassPoint.forEach(point => {
         point.Y = height - point.Y;
+        // 娣诲姞绮惧害鎺у埗
+        point.X = parseFloat(point.X.toFixed(2));
+        point.Y = parseFloat(point.Y.toFixed(2));
       });
     }
   });
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 8ef03eb..4e4b7d7 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
@@ -116,7 +116,7 @@
       sortable: true
     },
     {
-      field: 'product_name',
+      field: 'productName',
       width: 150,
       title: t('order.product'),
       filters: [{data: ''}],
@@ -140,7 +140,7 @@
       sortable: true
     },
     {
-      field: 'building_number',
+      field: 'buildingNumber',
       width: 150,
       title: '妤煎眰鍙�',
       filters: [{data: ''}],
@@ -189,7 +189,7 @@
       sortable: true
     },
     {
-      field: 'icon',
+      field: 'markIcon',
       width: 150,
       title: '鍗版爣绫诲瀷',
       filters: [{data: ''}],
@@ -485,103 +485,47 @@
     }
     emit('getSmallPieceData', 1);
     optimizeData.value.glassDetails = [];
-    // 浠庡悗绔帴鍙h幏鍙� glassDetail 鏁版嵁锛岃�屼笉鏄粠琛ㄦ牸涓鍙�
-    fetchGlassDetailData();
+    // 浠庤〃鏍间腑鑾峰彇 glassDetail 鏁版嵁锛岃�屼笉鏄粠鍚庣鎺ュ彛璇诲彇
+    const tableData = xGrid.value.getTableData().fullData;
+    const glassDetailData = tableData.map(item => {
+      let rackNoValue = 0;
+      if (item.rackNo !== undefined && item.rackNo !== null && item.rackNo !== '') {
+        rackNoValue = item.rackNo;
+      }
+      return {
+        width: item.width,
+        height: item.height,
+        processId: item.processId,
+        layer: item.layer,
+        totalLayer: item.totalLayer,
+        orderSort: item.order_number,
+        markIcon: item.markIcon,
+        quantity: item.quantity,
+        patchState: item.patchState,
+        upGrind: item.longGrind1,
+        downGrind: item.longGrind2,
+        leftGrind: item.shortGrind1,
+        rightGrind: item.shortGrind2,
+        heatLayoutId: item.heatLayoutId,
+        process: item.process,
+        orderNo: item.orderNo,
+        customerName: item.customerName,
+        processingNote: item.processingNote,
+        projectName: item.projectName,
+        productName: item.productName,
+        buildingNumber: item.buildingNumber,
+        rackNo: rackNoValue
+      };
+    });
 
-    // xGrid.value.getTableData().fullData.forEach(items=>{
-    //   let rackNoValue = 0;
-    //   if (items.rackNo !== undefined && items.rackNo !== null && items.rackNo !== '') {
-    //     rackNoValue = items.rackNo;
-    //   }
-    //   const detail={
-    //     width :null,
-    //     height :null,
-    //     processId :null,
-    //     layer :null,
-    //     totalLayer :null,
-    //     orderSort :null,
-    //     markIcon :null,
-    //     quantity:null,
-    //     patchState :null,
-    //     upGrind :null,
-    //     downGrind :null,
-    //     leftGrind:null,
-    //     rightGrind :null,
-    //     rackNo: rackNoValue
-    //   }
-    //   detail.width=items.width
-    //   detail.height=items.height
-    //   detail.processId=items.process_ids
-    //   detail.layer=items.layer
-    //   detail.totalLayer=items.total_layer
-    //   detail.orderSort=items.order_number
-    //   detail.markIcon=items.icon
-    //   detail.patchState=items.patch_state
-    //   detail.quantity=items.quantity
-    //   detail.upGrind=items.longGrind1
-    //   detail.downGrind=items.longGrind2
-    //   detail.leftGrind=items.shortGrind1
-    //   detail.rightGrind=items.shortGrind2
-    //   detail.rackNo=items.rackNo
-    //
-    //   optimizeData.value.glassDetails .push(detail)
-    // })
+    // 鏇存柊 optimizeData 涓殑 glassDetails
+    optimizeData.value.glassDetails = glassDetailData;
+
+    // 鎵撳紑浼樺寲瀵硅瘽妗�
+    dialogVisible.value[4] = true;
 
   }else{
     dialogVisible.value[index] = true;
-  }
-};
-
-const fetchGlassDetailData = async () => {
-  try {
-    const res = await request.post(`/glassOptimize/optimizeInfo/${projectNo.value}/${username}`);
-    console.log(res);
-    if (res.code === "200" && res.data && res.data.data) {
-      // 澶勭悊浠庡悗绔幏鍙栫殑鏁版嵁
-      const glassDetailData = res.data.data.map(item => {
-        let rackNoValue = 0;
-        if (item.rackNo !== undefined && item.rackNo !== null && item.rackNo !== '') {
-          rackNoValue = item.rackNo;
-        }
-        return {
-          width: item.width,
-          height: item.height,
-          processId: item.processId,
-          layer: item.layer,
-          totalLayer: item.totalLayer,
-          orderSort: item.order_number,
-          markIcon: item.markIcon,
-          quantity: item.quantity,
-          patchState: item.patchState,
-          upGrind: item.upGrind,
-          downGrind: item.downGrind,
-          leftGrind: item.leftGrind,
-          rightGrind:item.rightGrind,
-          heatLayoutId:item.heatLayoutId,
-          process:item.process,
-          orderNo:item.orderNo,
-          customerName:item.customerName,
-          processingNote:item.processingNote,
-          projectName:item.projectName,
-          productName:item.productName,
-          buildingNumber:item.buildingNumber,
-          rackNo: rackNoValue
-        };
-      });
-
-      // 鏇存柊 optimizeData 涓殑 glassDetails
-      optimizeData.value.glassDetails = glassDetailData;
-
-      // 鎵撳紑浼樺寲瀵硅瘽妗�
-      dialogVisible.value[4] = true;
-
-      console.log('鑾峰彇鍒扮殑 glassDetail 鏁版嵁:', glassDetailData);
-    } else {
-      ElMessage.error('鑾峰彇鐜荤拑璇︽儏鏁版嵁澶辫触');
-    }
-  } catch (error) {
-    console.error('鑾峰彇 glassDetail 鏁版嵁鍑洪敊:', error);
-    ElMessage.error('鑾峰彇鐜荤拑璇︽儏鏁版嵁鏃跺彂鐢熼敊璇�');
   }
 };
 
@@ -727,7 +671,7 @@
 const fetchData = () => {
   //鍚敤琛ㄦ牸鎷栧姩閫変腑
   addListener(xGrid.value,gridOptions,cellArea.value)
-  request.post(`/glassOptimize/projectInfo/${projectNo.value}/${username}`).then((res) => {
+  request.post(`/glassOptimize/optimizeInfo/${projectNo.value}/${username}`).then((res) => {
     if ((Number(res.code) === 200)) {
       let data = res.data.data;
       const grindingTrimming = res.data.grindingTrimming;
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 540e002..14e87e4 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
@@ -657,7 +657,10 @@
                 }
             }
         }
+        map.put("optimizeState", Integer.parseInt(stringObjectMap.get("optimize_state").toString()));
         map.put("data", dataList);
+        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 50e0639..5b0f70e 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
@@ -185,18 +185,22 @@
              c.project_no,
              d.child_width as 'width',
              d.child_height as 'height',
+             (d.child_width + d.child_height) * 2 as 'perimeter',
              c.quantity,
+             od.shape,
              concat( c.process_id, '-', c.technology_number ) AS 'process_id',
              c.process_id AS processId,
              c.technology_number as layer,
              c.layers_number as totalLayer,
+             d.glass_child,
+             od.price,
+             od.remarks,
              round( d.area * c.quantity, 4 ) as 'area',
              c.order_number,
              d.icon  AS markIcon,
              op.project_name,
              0 as patchState,
              c.rack AS rackNo,
-             0 as heatLayoutId,
              d.process,
              o.order_id AS orderNo,
              o.customer_name AS customerName,
@@ -225,18 +229,22 @@
                 c.project_no,
                 d.child_width as 'width',
                 d.child_height as 'height',
+                (d.child_width + d.child_height) * 2 as 'perimeter',
                 c.patch_num as quantity,
+                od.shape,
                 concat( c.process_id, '-', c.technology_number ) AS 'process_id',
                 c.process_id AS 'process_ids',
                 c.technology_number as layer,
                 fc.layers_number as total_layer,
+                d.glass_child,
+                od.price,
+                od.remarks,
                 round( d.area * c.patch_num, 4 ) as 'area',
                 c.order_sort as order_number,
                 d.icon,
                 op.project_name,
                 1 as patch_state,
                 a.id as rackNo,
-                0 as heatLayoutId,
                 d.process,
                 o.order_id AS orderNo,
                 o.customer_name AS customerName,
@@ -330,15 +338,22 @@
     <!--浼樺寲鏌ヨ-->
     <select id="computeAndOptimization">
         SELECT
+            c.project_no,
             c.rack AS rackNo,
-            h.layout_id as heatLayoutId,
+#             h.layout_id as heatLayoutId,
             h.width AS width,
             h.height AS height,
+            (h.width + h.height) * 2 as 'perimeter',
+            od.shape,
             count( 1 ) AS quantity,
-            concat( h.process_id, '-', h.layer ) AS processId,
+            concat( h.process_id, '-', h.layer ) AS process_id,
+            c.process_id AS processId,
             h.process_id as process_ids,
             h.layer,
             c.layers_number as totalLayer,
+            d.glass_child,
+            od.price,
+            od.remarks,
             round( d.area * count( 1 ), 4 ) AS 'area',
             c.order_number,
             h.order_sort AS orderSort,
@@ -364,7 +379,7 @@
         WHERE
             h.project_no = #{projectNo}
         GROUP BY
-            h.layout_id,
+#             h.layout_id,
             h.width,
             h.height,
             h.process_id,

--
Gitblit v1.8.0