From 428f9d210755f8e3082ff969c76542ef77964610 Mon Sep 17 00:00:00 2001
From: 于杰 <1210123631@qq.com>
Date: 星期二, 04 十一月 2025 14:46:45 +0800
Subject: [PATCH] 修改优化部分模拟计算逻辑,如果已经完成模拟计算的项目,只有撤销模拟计算后,才能再次模拟计算,解决部分订单翻倍的bug

---
 north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml                           |   13 ++++++
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeProject.vue            |    2 
 north-glass-erp/src/main/java/com/example/erp/controller/pp/GlassOptimizeController.java |    7 +++
 north-glass-erp/src/main/java/com/example/erp/mapper/pp/GlassOptimizeMapper.java         |    2 +
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectMange.vue               |    5 ++
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/Compute.vue               |   25 ------------
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue         |   32 +++++++++++++++-
 north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java       |    5 ++
 8 files changed, 63 insertions(+), 28 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeProject.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeProject.vue
index d54475c..f162aaa 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeProject.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeProject.vue
@@ -121,7 +121,7 @@
   height: calc(100% - 55px);
   width: 100%;
   margin-top: 30px;
-  //padding: 0;
+   /* padding: 0; */
 }
 
 </style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectMange.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectMange.vue
index 90c7c16..0325de6 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectMange.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/ProjectMange.vue
@@ -332,6 +332,11 @@
           return;
         }
         if (config.code === 'compute') {
+          // 澧炲姞閫昏緫锛氭鏌ラ挗鍖栨ā鎷熷垪鏄惁宸茬粡鏄�"鏄�"
+          if (row.temperingState === 1) {
+            ElMessage.warning('璇ラ」鐩凡妯℃嫙璁$畻');
+            return;
+          }
           if(row.state===1 && row.temperingState===0){
             config.actionFunction({row});
           }else{
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 8517fb6..f4014d9 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
@@ -461,31 +461,6 @@
 
     </div>
   </div>
-<!--  <div class="demo-progress" style="margin-top: -10px">
-    <div style="display: flex; align-items: center">
-      <span>鐞嗙墖绗肩┖闂插害</span>
-      &lt;!&ndash; 杩涘害鏉¤缃� &ndash;&gt;
-      <el-slider
-          style="max-width: 400px; flex: 1; margin-left: 10px"
-          v-model="percentage2"
-          :min="0"
-          :max="100"
-          :step="1"/>
-      <span style="margin-left: 20px ; width: 35px;">{{ percentage2 }}%</span>
-      <span style="float: right ; margin-left: 150px;">
-              鍔犵儹鏃堕棿(绉�)<el-select style="width: 50px;height: 30px" v-model="rotateMode">
-                            <el-option
-                                v-for="item in selectOptions"
-                                :key="item.value"
-                                :label="item.label"
-                                :value="item.value"
-                            />
-                        </el-select>
-              闀胯酱闂撮殧 <vxe-input size="small" class="input" clearable v-model="spacingLong"></vxe-input>
-              鐐夐暱(mm) <vxe-input size="small" class="input" clearable v-model="furnaceLength"></vxe-input>
-      </span>
-    </div>
-  </div>-->
 </div>
 <div style="height: 50%">
   <vxe-grid
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 13b893a..0f62169 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,8 +446,36 @@
 };
 
 const handleCommand = async (command) => {
-  await emit('changeDialog', 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;
+
+        // 妫�鏌� 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);
+  }
+};
 
 let originalFilm=ref(true)
 let surplusMaterial=ref(false)
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/pp/GlassOptimizeController.java b/north-glass-erp/src/main/java/com/example/erp/controller/pp/GlassOptimizeController.java
index 45bb793..44d82fd 100644
--- a/north-glass-erp/src/main/java/com/example/erp/controller/pp/GlassOptimizeController.java
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/pp/GlassOptimizeController.java
@@ -58,6 +58,13 @@
         return Result.success(glassOptimizeService.getProcessCardSv(projectNo));
     }
 
+    @ApiOperation("宸ョ▼淇℃伅鏌ヨ鎺ュ彛")
+    @PostMapping  ("/getProjectState/{projectNo}")
+    public Result getProjectState(
+            @PathVariable String projectNo){
+        return Result.success(glassOptimizeService.getProjectState(projectNo));
+    }
+
     //搴撳瓨淇℃伅
     @ApiOperation("搴撳瓨淇℃伅鎺ュ彛")
     @GetMapping  ("/materialStore/{thickness}/{model}/{projectNumber}")
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 0e307a8..13558ff 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
@@ -235,4 +235,6 @@
     void insertOptimizeConfig(String json, int type, String userName, String configName);
 
     Map<String, Object> getGlassProjectList(String projectId);
+
+    Map<String, Object> getProjectState(String projectNo);
 }
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 05c92c0..8dd8a9f 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
@@ -1422,4 +1422,9 @@
     }
 
 
+    public Map<String, Object>  getProjectState(String projectNo) {
+        Map<String, Object> map = new HashMap<>();
+        map.put("data", glassOptimizeMapper.getProjectState(projectNo));
+        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 6a8867d..b4ff490 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
@@ -212,6 +212,7 @@
                  INNER JOIN pp.optimize_project AS op ON op.project_no = c.project_no
                  LEFT JOIN sd.ORDER o ON o.order_id = c.order_id
                  LEFT JOIN sd.order_detail od ON c.order_id = od.order_id
+                 AND c.order_number = od.order_number
          WHERE
              c.project_no IS NOT NULL
            and c.project_no = #{projectNo}
@@ -2106,6 +2107,18 @@
         WHERE
             project_no = #{projectId}
     </select>
+    <select id="getProjectState" resultType="java.util.Map" parameterType="java.lang.String">
+        SELECT
+            project_no,
+            project_name,
+            state,
+            tempering_state,
+            optimize_state
+        FROM
+            pp.optimize_project
+        WHERE
+            project_no = #{projectNo}
+    </select>
 
 
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0