From b0c60452329a61c32db74a1c7d7753d383d6310a Mon Sep 17 00:00:00 2001
From: guoyujie <guoyujie@ng.com>
Date: 星期五, 05 九月 2025 08:20:53 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override

---
 north-glass-erp/northglass-erp/src/views/pp/processCard/SelectDetailProcessCard.vue    |    6 +-
 north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml                         |   19 ++++-
 north-glass-erp/northglass-erp/src/lang/zh.js                                          |    2 
 north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java            |    8 ++
 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/src/main/java/com/example/erp/controller/pp/ProcessCardController.java |    5 +
 north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml                              |   20 ++++++
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCard.vue         |    3 
 north-glass-erp/northglass-erp/src/views/pp/replenish/AddReplenish.vue                 |    1 
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProjectDetail.vue       |    1 
 north-glass-erp/src/main/java/com/example/erp/service/pp/GlassOptimizeService.java     |    3 
 north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/OptimizeCompute.vue     |    9 +++
 north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java          |   42 +++++++++++---
 14 files changed, 99 insertions(+), 27 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/lang/zh.js b/north-glass-erp/northglass-erp/src/lang/zh.js
index 9ba9fcc..c511775 100644
--- a/north-glass-erp/northglass-erp/src/lang/zh.js
+++ b/north-glass-erp/northglass-erp/src/lang/zh.js
@@ -561,6 +561,8 @@
         terminationQuantity:'鐢熶骇缁堟鏁伴噺',
         terminationMsg:'璇疯緭鍏ユ纭殑鍙慨鏀规暟閲�',
         maxCompleted:'鏈�澶у凡瀹屽伐鏁伴噺',
+        updateProcessMsg:'淇濆瓨澶辫触锛佽妫�鏌ュ彉鏇村伐搴忔槸鍚︽姤宸�',
+        termination:'缁堟',
     },
     reportingWorks:{
         page:{
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 ef227c4..e68f9c8 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
@@ -72,7 +72,7 @@
     {field: 'effectiveCuttingRate', width: 100, title: '鏈夋晥鍒囪鐜�',},
     {field: 'residueGlassCuttingRate', width: 100, title: '灏剧墖鍒囪鐜�',},
     {field: 'amountOfOriginalGlassUsage1', width: 100, title: '鍘熸枡浣跨敤鏁�',},
-    {field: 'averageCuttingRate1', width: 100, title: '骞冲潎鍒囪鐜�',},
+    // {field: 'averageCuttingRate1', width: 100, title: '骞冲潎鍒囪鐜�',},
     {field: 'notes', width: 50, title: '澶囨敞',},
     {field: 'creator', width: 100, title: '鍒涘缓浜�',},
     {field: 'createTime', width: 100, title: '鍒涘缓鏃堕棿',},
@@ -383,9 +383,6 @@
                 ElMessage.warning('璇烽�夋嫨瑕佹煡鐪嬬殑宸ョ▼');
                 return;
               }
-
-              localStorage.setItem('projectNo', row.projectNumber);
-              console.log("projectNo:", row.projectNumber);
 
               try {
                 await router.push({
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/OptimizeCompute.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/OptimizeCompute.vue
index ebbd06f..687e082 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/OptimizeCompute.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/OptimizeCompute.vue
@@ -79,6 +79,15 @@
             // 鏇存柊 store 鏁版嵁
             if (result.layouts && result.layouts.length > 0) {
               orderInfo.optimizeData.optimalResults = {
+                projectNo: result.projectNo,
+                glassThickness: result.glassThickness,
+                glassType: result.glassType,
+                totalQuantity: result.totalQuantity,
+                glassTotalQuantity: result.glassTotalQuantity,
+                glassTotalArea: result.glassTotalArea,
+                avgCutRate: result.avgCutRate,
+                lastCutRate: result.lastCutRate,
+                validCutRate: result.validCutRate,
                 layouts: result.layouts
               };
             }
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCard.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCard.vue
index 3251a99..80de7a3 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCard.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCard.vue
@@ -10,7 +10,7 @@
 
 const {t} = useI18n()
 const userStore = useUserInfoStore()
-const username = userStore.user.userName
+const username = userStore.user.userId
 let rowClickIndex = ref(null)
 
 let props = defineProps({
@@ -70,6 +70,7 @@
 
 
 onMounted(() => {
+  console.log(userStore.user);
   getProjectId();
   selectGlassType();
 
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 d5e8506..f1a12fd 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
@@ -249,7 +249,6 @@
 const checkAutoRedirectToOptimize = () => {
   // 妫�鏌ヨ矾鐢变腑鏄惁鏈夎嚜鍔ㄨ烦杞爣璇�
   if (route.query.redirect === 'optimizeControl') {
-    // 寤惰繜涓�娈垫椂闂寸‘淇濋〉闈㈠姞杞藉畬鎴愬悗鍐嶈烦杞�
     setTimeout(() => {
       const projectNo = route.params.projectNo || localStorage.getItem('currentProjectNo');
       if (projectNo) {
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 7c2486a..b5c8b5c 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
@@ -78,7 +78,7 @@
 const saveCraft = () => {
   //rowIndex.value.process = craftObj.newCraft.join('->')
  let orderProcess= craftObj.newCraft.join('->')
-  request.post(`/processCard/updateProcess/${rowIndex.value.process_id}/${rowIndex.value.technology_number}/${rowIndex.value.order_id}/${orderProcess}`, craftObj).then((res) => {
+  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({
@@ -87,7 +87,7 @@
       })
     } else {
 
-      ElMessage.warning('淇濆瓨澶辫触锛屾鏌ユ槸鍚︽姤宸�')
+      ElMessage.warning(t('processCard.updateProcessMsg'))
 
     }
   })
@@ -381,7 +381,7 @@
       <!--宸﹁竟鍥哄畾鏄剧ず鐨勬彃妲�-->
       <template #button_slot="{ row }">
         <el-button @click="updateCraft(row)" link type="primary" size="small">{{$t('craft.updateCraft')}}</el-button>
-        <el-button @click="updateTermination(row)" link type="primary" size="small">缁堟</el-button>
+        <el-button @click="updateTermination(row)" link type="primary" size="small">{{$t('processCard.termination')}}</el-button>
       </template>
 
       <template #num1_filter="{ column, $panel }">
diff --git a/north-glass-erp/northglass-erp/src/views/pp/replenish/AddReplenish.vue b/north-glass-erp/northglass-erp/src/views/pp/replenish/AddReplenish.vue
index 8927ac5..c3abbf8 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/replenish/AddReplenish.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/replenish/AddReplenish.vue
@@ -136,6 +136,7 @@
     {field: 'glassChild', width: 90, title: t('reportingWorks.glassChild'), filters: [{data: ''}], slots: {filter: 'num1_filter'}},
     {field: 'glassAddress', width: 120, title: t('replenish.sliceMarking'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
     {field: 'patchNum', width: 120, title: t('order.quantity'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'patchArea', width: 120, title: t('order.area'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
     {field: 'width', width: 80, title: t('order.width'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
     {field: 'height', width: 80, title: t('order.height'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
     {field: 'shape', width: 100, title: t('order.shape'), sortable: true,slots: { filter: 'num1_filter',default:'default_shape' }},
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 0f13873..c6729a2 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
@@ -440,16 +440,17 @@
     }
 
     @ApiOperation("淇敼宸ヨ壓娴佺▼")
-    @PostMapping("/updateProcess/{processId}/{technologyNumber}/{orderId}/{process}")
+    @PostMapping("/updateProcess/{processId}/{orderNumber}/{technologyNumber}/{orderId}/{process}")
     public Result updateProcess(
             @PathVariable String processId,
+            @PathVariable String orderNumber,
             @PathVariable String technologyNumber,
             @PathVariable String orderId,
             @PathVariable String process,
             @RequestBody Map<String, Object> object
     ) {
 
-        return Result.seccess(flowCardService.updateProcessSv(processId,technologyNumber,orderId,process,object));
+        return Result.seccess(flowCardService.updateProcessSv(processId,orderNumber,technologyNumber,orderId,process,object));
     }
 
     @ApiOperation("宸ョ▼鎵撳嵃鏍囩娆℃暟淇敼")
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 f44aab9..0e89cea 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
@@ -4,6 +4,7 @@
 import com.example.erp.dto.pp.FlowCardDTO;
 import com.example.erp.entity.pp.FlowCard;
 import com.example.erp.entity.sd.OrderDetail;
+import com.example.erp.entity.sd.OrderProcessDetail;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -272,5 +273,10 @@
 
     Integer selectCompletedMp(String processId, Integer orderNumber, String interceptProcess);
 
-    String getProcessOk(String processId, String technologyNumber);
+    String getProcessOk(String processId,String orderNumber, String technologyNumber);
+
+    List<OrderProcessDetail> getProcessDetail(String processId,String orderNumber, String technologyNumber, String process);
+
+    Boolean updateOrderProcessDetail(String processId, String orderNumber, Integer technologyNumber,
+                                     int reportingWorkNumCount, int reportingWorkNum, int brokenNum, String process);
 }
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 92defbc..6502aa7 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
@@ -213,4 +213,6 @@
     void deleteOffcutDetails(String processId);
 
     void addUpdateOffcut(Map<String, Object> detail, String processId, String glassType, String glassThickness);
+
+    void updateProjectOptimize(String projectId, Integer states, Map<String, Object> optimalResults);
 }
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 6069417..5ae8080 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
@@ -1213,12 +1213,33 @@
         return map;
     }
 
-    public Boolean updateProcessSv(String processId, String technologyNumber, String orderId, String Orderprocess, Map<String, Object> object) {
+    public Boolean updateProcessSv(String processId,String orderNumber, String technologyNumber, String orderId, String Orderprocess, Map<String, Object> object) {
+        List<OrderProcessDetail> resultList = new ArrayList<>();
         //鑾峰彇宸叉姤宸ュ伐鑹烘祦绋�
-        String processOk = flowCardMapper.getProcessOk(processId,technologyNumber);
-        //鍒ゆ柇璇ユ祦绋嬪崱鏄惁鎶ュ伐
-        Integer count = flowCardMapper.reportingWorkCount(processId);
-        if (count == 0) {
+        String processOk = flowCardMapper.getProcessOk(processId,orderNumber,technologyNumber);
+        if (processOk != null && !processOk.isEmpty()){
+            List<String> okList = Arrays.asList(processOk.split("->"));
+            List<String> orderList = Arrays.asList(Orderprocess.split("->"));
+
+            // 鍒ゆ柇 processOk 鐨勬瘡涓伐搴忔槸鍚﹂兘鍖呭惈鍦� orderProcess 涓�
+            for (String p : okList) {
+                if (!orderList.contains(p)) {
+                    return false;
+                }
+            }
+
+
+
+            for (String process : okList) {
+                List<OrderProcessDetail> details =
+                        flowCardMapper.getProcessDetail(processId,orderNumber, technologyNumber, process);
+
+                if (details != null && !details.isEmpty()) {
+                    resultList.addAll(details);
+                }
+            }
+        }
+
             //鍒犻櫎灏忕墖宸ヨ壓琛ㄥ搴旂殑鏁版嵁
             flowCardMapper.deleteProcessMp(processId, technologyNumber);
             //閲嶆柊鎻掑叆淇敼濂藉伐鑹烘祦绋嬪崱鐨勬暟鎹�
@@ -1234,12 +1255,15 @@
                     }
                 }
             }
+            //灏嗗師鏉ュ凡鎶ュ伐鐨勬暟鎹洿鏂�
+            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());
 
+                }
+            }
             return true;
-        } else {
-            return false;
-        }
-
 
     }
 
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 8fa0fe5..377f98d 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
@@ -348,7 +348,8 @@
                 }
                 glassOptimizeMapper.addOptimizeDetail(objectMap2,projectId);
             }
-            glassOptimizeMapper.updateProjectOptimizeStateMp(projectId,1);
+
+            glassOptimizeMapper.updateProjectOptimize(projectId, 1, optimalResults);
             return true;
         } catch (Exception e) {
             e.printStackTrace();
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 541ec7e..8966a9f 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml
@@ -3571,7 +3571,27 @@
             GROUP_CONCAT(process ORDER BY id SEPARATOR '->') AS processes
         FROM sd.order_process_detail
         WHERE process_id = #{processId}
+          AND order_number = #{orderNumber}
           AND technology_number = #{technologyNumber}
           AND reporting_work_num_count > 0;
     </select>
+
+    <select id="getProcessDetail">
+        SELECT *
+        FROM sd.order_process_detail
+        WHERE process_id = #{processId}
+          AND order_number = #{orderNumber}
+          AND technology_number = #{technologyNumber}
+          AND reporting_work_num_count > 0
+          AND process = #{process}
+    </select>
+
+    <update id="updateOrderProcessDetail">
+        UPDATE sd.order_process_detail
+        set reporting_work_num_count = #{reportingWorkNumCount},
+            reporting_work_num = #{reportingWorkNum},
+            broken_num = #{brokenNum}
+        where process_id = #{processId} and order_number = #{orderNumber} and
+              technology_number = #{technologyNumber} and process = #{process}
+    </update>
 </mapper>
\ No newline at end of file
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 ea8cf33..288f536 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/GlassOptimize.xml
@@ -767,11 +767,11 @@
                `p`.`frist_stock_qty`                 AS `Amount of original glass usage 1`,
                concat(`p`.`frist_cut_pct`, ' %')     AS `Average cutting rate 1`,
                `p`.`remark`                          AS `Notes`,
-               `a`.`name`                            AS `Creator`,
+               `u`.`user_name`                         AS `Creator`,
                `p`.`create_time`                     AS `Create time`,
                `p`.`update_time`                     AS `Modify time`
         from pp.optimize_project as p
-                 left join pp.optimize_admin as a on p.creater = a.Id
+                 left join erp_user_info.user as u on p.creater = u.login_name
         where (`p`.`state` > 0)
 #             and (tempering_state>0 or optimize_state>0)
             and DATE (`p`.`create_time`) BETWEEN #{startSelectTime} AND #{endSelectTime}
@@ -1108,14 +1108,14 @@
 
     <update id="updateProjectMp">
         update pp.optimize_project set project_name=#{projectNmae},glass_total=#{sumQuantity},glass_total_area= #{sumArea},
-                                       type=#{type},process_qty=#{processIdCount},process_cards=#{processId} where project_no=#{projectId}
+                                       type=#{type},process_qty=#{processIdCount},process_cards=#{processId},creater = #{userName} where project_no=#{projectId}
     </update>
 
     <insert id="addProjectMp">
         insert into pp.optimize_project (project_no, project_name, order_glass_type, order_glass_thickness,glass_type, glass_thickness,
-                                         glass_total,glass_total_area,type,state,process_qty,process_cards)
+                                         glass_total,glass_total_area,type,state,process_qty,process_cards,creater )
         values (#{projectId}, #{projectNmae}, #{glassType}, #{glassThickness}, #{glassType}, #{glassThickness},#{sumQuantity}, #{sumArea},
-                #{type},1,#{processIdCount},#{processId})
+                #{type},1,#{processIdCount},#{processId},#{userName})
     </insert>
 
 
@@ -1528,6 +1528,15 @@
         WHERE
             project_no = #{processId} AND polys_id = #{detail.polySort}
     </update>
+    <update id="updateProjectOptimize">
+        update pp.optimize_project as p
+        set p.optimize_state = #{states},
+            p.avg_cut_pct = #{optimalResults.avgCutRate},
+            p.valid_cut_pct = #{optimalResults.validCutRate},
+            p.last_cut_pct = #{optimalResults.lastCutRate},
+            p.raw_stock_qty = #{optimalResults.totalQuantity}
+        where p.project_no = #{projectId}
+    </update>
 
     <select id="simulatedTypesettingUsingOpt">
         SELECT

--
Gitblit v1.8.0