From cfd01ea8a1ddd581273d4dbc6305416e9d4852dc Mon Sep 17 00:00:00 2001
From: 于杰 <1210123631@qq.com>
Date: 星期三, 24 九月 2025 10:44:10 +0800
Subject: [PATCH] 解决优化部分调整之后余料数量异常问题,增加优化部分设置标签选项
---
north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml | 10 +-
north-glass-erp/src/main/java/com/example/erp/mapper/pp/GlassOptimizeMapper.java | 2
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeControl.vue | 30 ++++++++-
north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java | 8 +-
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeParms.vue | 125 +++++++++++++++++++++++++++++++++++++++++
5 files changed, 162 insertions(+), 13 deletions(-)
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 673bb79..b5a8092 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
@@ -40,6 +40,14 @@
// const fileSaveMode = ref(1);
const fileMode = ref();
+const haveMark = ref();
+const haveOptimaMark = ref();
+const haveQMark = ref();
+const glassIdMode = ref();
+const optimaMarkPosition = ref();
+const optimaMarkName = ref();
+const optimaMarkWidth = ref();
+const optimaMarkHeight = ref();
const userStore = useUserInfoStore()
const username = userStore.user.userName;
@@ -108,9 +116,15 @@
}
const parsedData = JSON.parse(response.data);
console.log('璁剧疆鍐呭:', parsedData);
- if (parsedData.server && parsedData.server.fileMode) {
- fileMode.value = parsedData.server.fileMode;
- }
+ fileMode.value = parsedData.server.fileMode;
+ haveMark.value = parsedData.server.haveMark;
+ haveOptimaMark.value = parsedData.server.haveOptimaMark;
+ haveQMark.value = parsedData.server.haveQMark;
+ glassIdMode.value = parsedData.server.glassIdMode;
+ optimaMarkPosition.value = parsedData.server.optimaMarkPosition;
+ optimaMarkName.value = parsedData.server.optimaMarkName;
+ optimaMarkWidth.value = parsedData.server.optimaMarkWidth;
+ optimaMarkHeight.value = parsedData.server.optimaMarkHeight;
} else {
console.error('璇锋眰澶辫触锛岀姸鎬佺爜:', response.code);
}
@@ -165,12 +179,20 @@
console.log("鎻愪氦鏁版嵁:", optimizeLayouts);
const response = await requestOptimize.post('api/cutFiles', {
fileName: processId,
+ projectNo: processId,
glassThickness:inventoryData.value[0].thickness,
glassType:inventoryData.value[0].model,
quantity: inventoryData.value[0].processingQuantity,
fileType:"OPT",
fileSaveMode:fileMode.value,
- glassIdMode:1,
+ glassIdMode:glassIdMode.value,
+ haveMark:haveMark.value,
+ haveOptimaMark:haveOptimaMark.value,
+ haveQMark:haveQMark.value,
+ optimaMarkPosition:optimaMarkPosition.value,
+ optimaMarkName:optimaMarkName.value,
+ optimaMarkWidth:optimaMarkWidth.value,
+ optimaMarkHeight:optimaMarkHeight.value,
layouts: optimizeLayouts.value.layouts
}, {
headers: {
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeParms.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeParms.vue
index a1a2143..98c5b49 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeParms.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeParms.vue
@@ -264,6 +264,131 @@
<label for="multiFile">澶氭枃浠�</label>
</div>
</div>
+ <div style="border: 2px solid #d2d0d0; margin-top: 10px;padding: 4px; border-radius: 8px;">
+ <div class="form-group">
+ <label>鏄惁鎵撴爣</label>
+ <div style="margin-left: 3px;"></div>
+ <div class="radio-group">
+ <input
+ type="radio"
+ id="singleFile"
+ value="0"
+ v-model="settings.server.haveMark"
+ />
+ <label for="singleFile">鏄�</label>
+
+ <input
+ type="radio"
+ id="multiFile"
+ value="1"
+ v-model="settings.server.haveMark"
+ style="margin-left: 20px;"
+ />
+ <label for="multiFile">鍚�</label>
+ </div>
+ </div>
+ <div class="form-group">
+ <label>鏄惁鐢熸垚OPTIMA鎵撴爣淇℃伅</label>
+ <div style="margin-left: 3px;"></div>
+ <div class="radio-group">
+ <input
+ type="radio"
+ id="singleFile"
+ value="0"
+ v-model="settings.server.haveOptimaMark"
+ />
+ <label for="singleFile">鏄�</label>
+
+ <input
+ type="radio"
+ id="multiFile"
+ value="1"
+ v-model="settings.server.haveOptimaMark"
+ style="margin-left: 20px;"
+ />
+ <label for="multiFile">鍚�</label>
+ </div>
+ </div>
+ <div class="form-group">
+ <label>鏄惁鐢熸垚閫熷埢鎵撴爣淇℃伅</label>
+ <div style="margin-left: 28px;"></div>
+ <div class="radio-group">
+ <input
+ type="radio"
+ id="singleFile"
+ value="0"
+ v-model="settings.server.haveQMark"
+ />
+ <label for="singleFile">鏄�</label>
+
+ <input
+ type="radio"
+ id="multiFile"
+ value="1"
+ v-model="settings.server.haveQMark"
+ style="margin-left: 20px;"
+ />
+ <label for="multiFile">鍚�</label>
+ </div>
+ </div>
+ <div class="form-group">
+ <label>鐜荤拑ID妯″紡</label>
+ <div style="margin-left: 28px;"></div>
+ <div class="radio-group">
+ <input
+ type="radio"
+ id="singleFile"
+ value="1"
+ v-model="settings.server.glassIdMode"
+ />
+ <label for="singleFile">鍥哄畾闀垮害</label>
+
+ <input
+ type="radio"
+ id="multiFile"
+ value="2"
+ v-model="settings.server.glassIdMode"
+ style="margin-left: 20px;"
+ />
+ <label for="multiFile">鑷姩闀垮害</label>
+ </div>
+ </div>
+ <div class="form-group">
+ <label>榛樿浜岀淮鐮佷綅缃�</label>
+ <div style="margin-left: 28px;"></div>
+ <div class="radio-group">
+ <input
+ type="radio"
+ id="singleFile"
+ value="1"
+ v-model="settings.server.optimaMarkPosition"
+ />
+ <label for="singleFile">闀胯竟瀵硅</label>
+
+ <input
+ type="radio"
+ id="multiFile"
+ value="2"
+ v-model="settings.server.optimaMarkPosition"
+ style="margin-left: 20px;"
+ />
+ <label for="multiFile">闀胯竟鍚岃竟</label>
+ </div>
+ </div>
+ <div class="form-group">
+ <label>浜岀淮鐮佹枃浠跺悕绉�(.ez3)</label>
+ <input type="text" v-model="settings.server.optimaMarkName" />
+ </div>
+ <div class="form-group">
+ <label>瀹�(mm)</label>
+ <input type="text" v-model="settings.server.optimaMarkWidth" />
+ </div>
+ <div class="form-group">
+ <label>楂�(mm)</label>
+ <input type="text" v-model="settings.server.optimaMarkHeight" />
+ </div>
+ </div>
+
<div class="form-group">
<label>宸ョ▼鏂囦欢淇濆瓨璺緞</label>
<input type="text" v-model="settings.server.output_format" />
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/GlassOptimizeMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/GlassOptimizeMapper.java
index 6502aa7..a18f3cd 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/GlassOptimizeMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/GlassOptimizeMapper.java
@@ -212,7 +212,7 @@
void deleteOffcutDetails(String processId);
- void addUpdateOffcut(Map<String, Object> detail, String processId, String glassType, String glassThickness);
+ void addUpdateOffcut(Map<String, Object> detail, String processId, String glassType, String glassThickness, int stockId);
void updateProjectOptimize(String projectId, Integer states, Map<String, Object> optimalResults);
}
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 377f98d..a83f3fe 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
@@ -365,7 +365,9 @@
List<Map<String, Object>> objectMapList = (List<Map<String, Object>>) object.get("layouts");
Map<String, Object> glassInfo = glassOptimizeMapper.getGlassInfo(processId);
+ glassOptimizeMapper.deleteOffcutDetails(processId);
+ int stockId = 1;
for (Map<String, Object> objectMap : objectMapList) {
List<Map<String, Object>> objectMap2 = (List<Map<String, Object>>) objectMap.get("glassDetails");
@@ -406,18 +408,18 @@
}
}
- // 渚嬪瀵� remainDetails 閮ㄥ垎鍏堝垹闄� offcut 鍐嶅鐞�
+ // 瀵� remainDetails 閮ㄥ垎鍏堝垹闄� offcut 鍐嶅鐞�
if (!offCutDetails.isEmpty()) {
- glassOptimizeMapper.deleteOffcutDetails(processId);
if (glassInfo != null) {
String glassType = (String) glassInfo.get("glass_type");
String glassThickness = (String) glassInfo.get("glass_thickness");
// 浣欐枡瀛樺叆optimizeoffcut
for (Map<String, Object> detail : offCutDetails) {
- glassOptimizeMapper.addUpdateOffcut(detail, processId, glassType, glassThickness);
+ glassOptimizeMapper.addUpdateOffcut(detail, processId, glassType, glassThickness, stockId);
}
}
}
+ stockId++;
}
// 鏇存柊浼樺寲缁撴灉鏂囦欢
String jsonString = mapper.writeValueAsString(object);
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 288f536..f4951e2 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
@@ -1413,7 +1413,7 @@
thickness
) VALUES (
#{processId},
- 1,
+ #{stockId},
#{detail.width},
#{detail.height},
#{detail.x},
@@ -1920,11 +1920,11 @@
od.rack_no AS rackNo
FROM
pp.optimize_detail od
- LEFT JOIN pp.flow_card fc on od.process_id = fc.process_id
- LEFT JOIN sd.order_glass_detail ogd ON fc.order_id = ogd.order_id
+ LEFT JOIN pp.flow_card fc on (od.process_id = fc.process_id and od.layer = fc.technology_number and od.order_sort = fc.order_number )
+ LEFT JOIN sd.order_glass_detail ogd ON (fc.order_id = ogd.order_id and od.order_sort = ogd.order_number)
LEFT JOIN sd.ORDER o ON o.order_id = fc.order_id
- LEFT JOIN sd.order_detail ord ON fc.order_id = ord.order_id
- LEFT JOIN pp.optimize_heat_detail h ON h.process_id = fc.process_id
+ LEFT JOIN sd.order_detail ord ON (fc.order_id = ord.order_id and od.order_sort = ord.order_number)
+ LEFT JOIN pp.optimize_heat_detail h ON (h.process_id = fc.process_id and od.order_sort = h.sort)
WHERE
od.project_no = #{projectId}
</select>
--
Gitblit v1.8.0