From b159f7795dd800fd599589f36c2d6349e5cf15e7 Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期二, 02 十二月 2025 14:23:47 +0800
Subject: [PATCH] 流程卡明细界面修改工艺添加限制

---
 north-glass-erp/northglass-erp/src/views/pp/processCard/SelectDetailProcessCard.vue    |   41 +++++++++++++++-----
 north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java            |    5 ++
 north-glass-erp/src/main/java/com/example/erp/controller/pp/ProcessCardController.java |    9 ++++
 north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java          |   38 ++++++++++++++++--
 north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml                              |   12 ++++++
 5 files changed, 89 insertions(+), 16 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectDetailProcessCard.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectDetailProcessCard.vue
index ffab797..92b1427 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectDetailProcessCard.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectDetailProcessCard.vue
@@ -14,6 +14,7 @@
 import {VXETable} from "vxe-table";
 import  useUserInfoStore from '@/stores/userInfo'
 import {useI18n} from "vue-i18n";
+import { computed } from 'vue'
 import UpdateOrderCraft from "@/components/sd/order/UpdateOrderCraft.vue";
 import {filterChanged} from "@/hook";
 let productGlassTypeStore = useProductGlassTypeStore()
@@ -78,20 +79,40 @@
 const saveCraft = () => {
   //rowIndex.value.process = craftObj.newCraft.join('->')
  let orderProcess= craftObj.newCraft.join('->')
-  request.post(`/processCard/updateProcess/${rowIndex.value.process_id}/${rowIndex.value.order_number}/${rowIndex.value.technology_number}/${rowIndex.value.order_id}/${orderProcess}`, craftObj).then((res) => {
-    if (res.code == 200 && res.data === true) {
-      ElMessage.success(t('basicData.msg.saveSuccess'))
-      router.push({
-        path: '/main/processCard/SelectDetailProcessCard',
-        query: {processId: processId,random: Math.random()}
-      })
-    } else {
+  //鑾峰彇宸紓宸ュ簭
+  const diffCraft = computed(() => {
+    return [
+      ...craftObj.oldCraft.filter(item => !craftObj.newCraft.includes(item)), //鍒犻櫎
+      ...craftObj.newCraft.filter(item => !craftObj.oldCraft.includes(item))//澧炲姞
+    ]
+  })
+  if (diffCraft.value == '') {//鏃犲彉鍖栦笉鎵ц鍚庣画
+    return
+  }
+  //鑾峰彇鏈�鏂版姤宸ュ伐搴忕殑椤哄簭
+request.post(`/processCard/getNewProcess/${rowIndex.value.process_id}/${rowIndex.value.order_number}/${rowIndex.value.technology_number}/${diffCraft.value}`).then((res) => {
+    if (res.code == 200 ) {
+      if (res.data){
+        request.post(`/processCard/updateProcess/${rowIndex.value.process_id}/${rowIndex.value.order_number}/${rowIndex.value.technology_number}/${rowIndex.value.order_id}/${orderProcess}`, craftObj).then((res) => {
+          if (res.code == 200 && res.data === true) {
+            ElMessage.success(t('basicData.msg.saveSuccess'))
+            router.push({
+              path: '/main/processCard/SelectDetailProcessCard',
+              query: {processId: processId,random: Math.random()}
+            })
+          } else {
 
-      ElMessage.warning(t('processCard.updateProcessMsg'))
+            ElMessage.warning(t('processCard.updateProcessMsg'))
 
+          }
+        })
+        craftVisible.value= false
+      }else {
+        ElMessage.warning(t('processCard.updateProcessMsg'))
+      }
     }
   })
-  craftVisible.value= false
+
 }
 
 
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/pp/ProcessCardController.java b/north-glass-erp/src/main/java/com/example/erp/controller/pp/ProcessCardController.java
index dfa8268..c019f24 100644
--- a/north-glass-erp/src/main/java/com/example/erp/controller/pp/ProcessCardController.java
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/pp/ProcessCardController.java
@@ -450,6 +450,15 @@
 
     }
 
+    @ApiOperation("鑾峰彇鏈�鎶ュ伐鏂板伐搴�")
+    @PostMapping("/getNewProcess/{processId}/{orderNumber}/{technologyNumber}/{orderProcess}")
+    public Result getNewProcess(@PathVariable String processId,
+                                @PathVariable String orderNumber,
+                                @PathVariable String technologyNumber,
+                                @PathVariable List<String> orderProcess){
+        return Result.success(flowCardService.getNewProcessSv(processId,orderNumber,technologyNumber,orderProcess));
+    }
+
     @ApiOperation("淇敼宸ヨ壓娴佺▼")
     @PostMapping("/updateProcess/{processId}/{orderNumber}/{technologyNumber}/{orderId}/{process}")
     public Result updateProcess(
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java
index 453bed3..7acc163 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java
@@ -1,6 +1,5 @@
 package com.example.erp.mapper.pp;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.example.erp.dto.pp.FlowCardDTO;
 import com.example.erp.entity.pp.FlowCard;
@@ -298,4 +297,8 @@
     Boolean updateTerminationStatus(String processId, Integer orderNumber);
 
     Boolean updateTerminationNoMp(String processId, Integer orderNumber);
+
+    List<Map<String, Object>> getNewProcessMp(String processId, String orderNumber, String technologyNumber);
+
+    Map<String, Object> getProcessInfo( String processName);
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java b/north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java
index 738d9e2..1a0998f 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java
@@ -33,7 +33,6 @@
 import java.io.IOException;
 
 
-import java.sql.Date;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
@@ -1354,11 +1353,13 @@
             }
             //灏嗗師鏉ュ凡鎶ュ伐鐨勬暟鎹洿鏂�
             if (resultList != null && !resultList.isEmpty()) {
-                for (OrderProcessDetail d : resultList) {
-                    flowCardMapper.updateOrderProcessDetail(d.getProcessId(),d.getOrderNumber(),d.getTechnologyNumber(),
-                            d.getReportingWorkNumCount(),d.getReportingWorkNum(),d.getBrokenNum(),d.getProcess());
-
+                for (String number : numberList) {
+                    for (OrderProcessDetail d : resultList) {
+                        flowCardMapper.updateOrderProcessDetail(d.getProcessId(),number,d.getTechnologyNumber(),
+                                d.getReportingWorkNumCount(),d.getReportingWorkNum(),d.getBrokenNum(),d.getProcess());
+                    }
                 }
+
             }
             return true;
 
@@ -1758,6 +1759,33 @@
 
     }
 
+    public boolean getNewProcessSv(String processId, String orderNumber, String technologyNumber, List<String> orderProcess) {
+
+        // 鑾峰彇鏈�鏂版姤宸ュ伐搴�
+        List<Map<String, Object>> newProcess = flowCardMapper.getNewProcessMp(processId, orderNumber, technologyNumber);
+
+        if (newProcess == null || newProcess.isEmpty()) {
+            return false; // 鎵句笉鍒版爣鍑嗗��
+        }
+
+        // 鏈�鏂板伐搴忔帓搴忓彿
+        int standardSort = Integer.parseInt(newProcess.get(0).get("sort").toString());
+
+        // 寰幆 orderProcess 鐨勬瘡涓�涓伐搴忥紝鏌ヨ瀹冧滑鐨� sort
+        for (String processName : orderProcess) {
+            Map<String, Object> data = flowCardMapper.getProcessInfo(processName);
+
+            if (data == null) {
+                return false; // 宸ュ簭鏌ヤ笉鍒�
+            }
+            int orderSort = Integer.parseInt(data.get("sort").toString());
+            // orderSort 蹇呴』 > standardSort
+            if (orderSort <= standardSort) {
+                return false;
+            }
+        }
+        return true;
+    }
 }
 
 
diff --git a/north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml b/north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml
index 07ed781..6f700d2 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml
@@ -3911,4 +3911,16 @@
     <update id="updateTerminationNoMp">
         update pp.flow_card set termination_status=0 , termination_quantity=0 where process_id = #{processId} and order_number = #{orderNumber}
     </update>
+
+    <select id="getNewProcessMp">
+        select opd.process,bd.sort  from sd.order_process_detail as opd
+            left join sd.basic_data as bd on bd.basic_name = opd.process and bd.basic_category='process'
+        where opd.process_id=#{processId} and opd.order_number=#{orderNumber}
+          and opd.technology_number = #{technologyNumber} and reporting_work_num_count>0 ORDER BY opd.id DESC LIMIT 1
+    </select>
+
+    <select id="getProcessInfo">
+        select basic_name as process,sort FROM sd.basic_data as bd
+        where bd.basic_category='process' and bd.basic_name = #{processName}
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0