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