From fc757ded11123dd192a4bf2a36cf3520ac489677 Mon Sep 17 00:00:00 2001
From: 于杰 <1210123631@qq.com>
Date: 星期三, 05 十一月 2025 16:04:42 +0800
Subject: [PATCH] 修改生产可见和取消生产可见功能,解决大量bug
---
north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml | 17 ++++-
north-glass-erp/src/main/java/com/example/erp/mapper/pp/GlassOptimizeMapper.java | 4 +
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/Compute.vue | 30 +++++++++
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue | 25 -------
north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java | 53 ++++++++++++++++-
5 files changed, 98 insertions(+), 31 deletions(-)
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/Compute.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/Compute.vue
index f4014d9..afa7e0c 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/Compute.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/Compute.vue
@@ -266,7 +266,35 @@
};
-const handleSimulationClick = () => {
+const handleSimulationClick = async () => {
+
+ try {
+ const projectNumber = inputValue.value;
+ if (!projectNumber) {
+ ElMessage.warning('璇疯緭鍏ュ伐绋嬪彿');
+ return;
+ }
+
+ const res = await request.post(`/glassOptimize/getProjectState/${projectNumber}`);
+ if (Number(res.code) === 200) {
+ const projectData = res.data.data;
+
+ // 妫�鏌� tempering_state 鐘舵��
+ if (projectData.tempering_state === 1) {
+ // 濡傛灉宸插畬鎴愭ā鎷熻绠楋紝鎻愮ず鐢ㄦ埛骞堕樆姝㈢户缁墽琛�
+ ElMessage.warning('宸插畬鎴愭ā鎷熻绠楋紝涓嶅厑璁搁噸澶嶈绠�');
+ return;
+ }
+ } else {
+ ElMessage.warning(res.msg);
+ return;
+ }
+ } catch (error) {
+ ElMessage.error('妫�鏌ュ伐绋嬬姸鎬佸け璐ワ紝璇风◢鍚庨噸璇�');
+ console.error('妫�鏌ュ伐绋嬬姸鎬佸け璐�:', error);
+ return;
+ }
+
inputValues.project_no = inputValue.value;
inputValues.chaos_pct = optionVal.value * 0.01; // 娣锋帓绛夌骇
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 0f62169..274dab1 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
@@ -446,31 +446,10 @@
};
const handleCommand = async (command) => {
- // 褰撻�夋嫨妯℃嫙璁$畻锛坈ommand === 3锛夋椂锛屽厛妫�鏌� tempering_state 鐘舵��
if (command === 3) {
- try {
- const res = await request.post(`/glassOptimize/getProjectState/${projectNo.value}`);
- if (Number(res.code) === 200) {
- const projectData = res.data.data;
+ // 鎵ц妯℃嫙璁$畻
+ await emit('changeDialog', command);
- // 妫�鏌� tempering_state 鐘舵��
- if (projectData.tempering_state === 1) {
- // 濡傛灉宸插畬鎴愭ā鎷熻绠楋紝鎻愮ず鐢ㄦ埛骞堕樆姝㈡墦寮�
- ElMessage.warning('宸插畬鎴愭ā鎷熻绠楋紝涓嶅厑璁搁噸澶嶈绠�');
- return;
- } else if (projectData.tempering_state === 0) {
- // 濡傛灉鏈繘琛屾ā鎷熻绠楋紝鍏佽鎵撳紑
- await emit('changeDialog', command);
- }
- } else {
- ElMessage.warning(res.msg);
- return;
- }
- } catch (error) {
- ElMessage.error('妫�鏌ュ伐绋嬬姸鎬佸け璐ワ紝璇风◢鍚庨噸璇�');
- console.error('妫�鏌ュ伐绋嬬姸鎬佸け璐�:', error);
- return;
- }
} else {
// 鍏朵粬鍛戒护鐩存帴鎵ц
await emit('changeDialog', command);
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 13558ff..1b63367 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
@@ -214,7 +214,7 @@
void addUpdateOffcut(Map<String, Object> detail, String processId, String glassType, String glassThickness, int stockId);
- void updateProjectOptimize(String projectId, Integer states, Map<String, Object> optimalResults);
+ void updateProjectOptimize(String projectId, Integer states, Map<String, Object> optimalResults,double totalArea );
List<Map<String, Object>> getReportDataProcessIdSv(String processId);
@@ -237,4 +237,6 @@
Map<String, Object> getGlassProjectList(String projectId);
Map<String, Object> getProjectState(String projectNo);
+
+ void updateProjectTemperingId(String projectNumber);
}
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 1d8bbb9..f25f35d 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
@@ -367,8 +367,22 @@
// tempering_state 涓� 0 鏃剁殑澶勭悊閫昏緫
glassOptimizeMapper.addOptimizeDetail(allGlassDetails,projectId);
}
-
- glassOptimizeMapper.updateProjectOptimize(projectId, 1, optimalResults);
+ List<Map<String, Object>> materialStoreList = glassOptimizeMapper.materialStoreOptimizeUse(projectId);
+ double totalUseArea = 0.0;
+ for (Map<String, Object> material : materialStoreList) {
+ if (material.containsKey("totalArea")) {
+ Object totalAreaObj = material.get("totalArea");
+ if (totalAreaObj != null) {
+ try {
+ double area = Double.parseDouble(totalAreaObj.toString());
+ totalUseArea += area;
+ } catch (NumberFormatException e) {
+ System.err.println("鏃犳硶瑙f瀽鎬婚潰绉暟鎹�: " + totalAreaObj);
+ }
+ }
+ }
+ }
+ glassOptimizeMapper.updateProjectOptimize(projectId, 1, optimalResults, totalUseArea);
return true;
} catch (Exception e) {
e.printStackTrace();
@@ -718,6 +732,22 @@
glassOptimizeMapper.deleteOptimizeHeatDetail(projectNumber);
glassOptimizeMapper.deleteOptimizeHeatLayout(projectNumber);
glassOptimizeMapper.updateProjectTemperingStateMp(projectNumber, states);
+ Map<String, Object> temperingState = glassOptimizeMapper.getProjectState(projectNumber);
+
+ if (temperingState != null && temperingState.containsKey("optimize_state")) {
+ Object optimizeStateObj = temperingState.get("optimize_state");
+ if (optimizeStateObj != null) {
+ try {
+ int optimizeState = Integer.parseInt(optimizeStateObj.toString());
+ if (optimizeState == 1) {
+ glassOptimizeMapper.updateProjectTemperingId(projectNumber);
+ }
+ } catch (NumberFormatException e) {
+ // 澶勭悊杞崲寮傚父锛岃褰曟棩蹇楁垨閲囧彇鍏朵粬閫傚綋鎺柦
+ System.err.println("瑙f瀽 optimize_state 澶辫触: " + e.getMessage());
+ }
+ }
+ }
}
//鎾ら攢浼樺寲鎺掔増
else if(code==2){
@@ -739,7 +769,22 @@
}
//鐢熶骇涓嶅彲瑙�
else if(code==4){
- glassOptimizeMapper.updateProjectStateMp(projectNumber, state);
+ Map<String, Object> cancelResult = issuingCancelProject(projectNumber);
+ // 鑾峰彇杩斿洖缁撴灉涓殑data瀛楁
+ Map<String, Object> responseData = (Map<String, Object>) cancelResult.get("data");
+
+ // 妫�鏌ュ搷搴斾腑鐨刢ode瀛楁锛屽彧鏈夊綋code涓�200鎴�202鏃舵墠鍏佽鏇存柊鐘舵��
+ if (responseData != null && responseData.containsKey("code")) {
+ Object responseCode = responseData.get("code");
+ if (responseCode.equals(200) || responseCode.equals(202)) {
+ glassOptimizeMapper.updateProjectStateMp(projectNumber, state);
+ }else {
+ return false;
+ }
+ } else {
+ return false;
+ }
+
}
//鍒濆鍖栧伐绋�
else if(code==5){
@@ -1198,6 +1243,7 @@
// 1. 鍒涘缓URL瀵硅薄
// URL url = new URL("http://10.153.19.31:88/api/loadGlass/engineering/importEngineer");
URL url = new URL("http://localhost:88/api/loadGlass/engineering/importEngineer");
+
// 2. 鎵撳紑杩炴帴
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
@@ -1437,6 +1483,7 @@
// URL url = new URL("http://10.153.19.31:88/api/loadGlass/engineering/optimizeCancelTask");
URL url = new URL("http://localhost:88/api/loadGlass/engineering/optimizeCancelTask");
+
// 2. 鎵撳紑杩炴帴
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
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 32d8197..aa53310 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
@@ -582,7 +582,8 @@
ou.right_trim as rightTrim,
JSON_EXTRACT(ms.json, '$.thickness') AS thickness,
JSON_EXTRACT(ms.json, '$.name') AS name,
- JSON_EXTRACT(ms.json, '$.model') AS model
+ JSON_EXTRACT(ms.json, '$.model') AS model,
+ (ou.width * ou.height * ou.use_count / 1000000.0) AS totalArea
from pp.optimize_use ou
left join mm.material_store ms on ou.raw_stock_code=ms.id where project_no=#{projectNumber} and state=1
</select>
@@ -795,7 +796,9 @@
<!--淇敼妯℃嫙璁$畻宸ョ▼鐘舵��-->
<update id="updateProjectTemperingStateMp">
update pp.optimize_project as p
- set p.tempering_state = #{states}
+ set p.tempering_state = #{states},
+ p.load_rate = NULL,
+ p.furnaces_qty = NULL
where p.project_no = #{projectNumber}
</update>
@@ -1560,8 +1563,15 @@
p.avg_cut_pct = #{optimalResults.avgCutRate},
p.valid_cut_pct = #{optimalResults.validCutRate},
p.last_cut_pct = #{optimalResults.lastCutRate},
- p.raw_stock_qty = #{optimalResults.totalQuantity}
+ p.raw_stock_qty = #{optimalResults.totalQuantity},
+ p.raw_stock_area = #{totalArea}
where p.project_no = #{projectId}
+ </update>
+ <update id="updateProjectTemperingId">
+ UPDATE pp.optimize_detail
+ SET heat_layout_id = NULL,
+ heat_layout_sort = NULL
+ WHERE project_no = #{projectNumber}
</update>
<select id="simulatedTypesettingUsingOpt">
@@ -1810,6 +1820,7 @@
<select id="selectOptimizeDetail">
+
select
opd.glass_id as glassId,
opd.project_no as engineerId,
--
Gitblit v1.8.0