From 13c1adb5494af143cf7b3d7ee60c6f4025a90040 Mon Sep 17 00:00:00 2001
From: zhanghl <253316343@qq.com>
Date: 星期四, 08 五月 2025 13:45:57 +0800
Subject: [PATCH] 钣金计划:完善工序总工时 计算方法

---
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsStandardProcessRouteLineServiceImpl.java |   86 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 85 insertions(+), 1 deletions(-)

diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsStandardProcessRouteLineServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsStandardProcessRouteLineServiceImpl.java
index 5ebab9c..5597f89 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsStandardProcessRouteLineServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsStandardProcessRouteLineServiceImpl.java
@@ -1,7 +1,18 @@
 package com.aps.core.service.impl;
 
+import java.math.BigDecimal;
+import java.util.Hashtable;
 import java.util.List;
+import java.util.Optional;
+
 import com.aps.common.core.utils.DateUtils;
+import com.aps.common.security.utils.SecurityUtils;
+import com.aps.core.domain.ApsPlateStandardRequire;
+import com.aps.core.domain.ApsPlateStandardRequireError;
+import com.aps.core.domain.ApsStandardProcessRouteHeader;
+import com.aps.core.mapper.ApsPlateStandardRequireErrorMapper;
+import com.aps.core.mapper.ApsStandardProcessRouteHeaderMapper;
+import jakarta.annotation.Resource;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.aps.core.mapper.ApsStandardProcessRouteLineMapper;
@@ -19,7 +30,10 @@
 {
     @Autowired
     private ApsStandardProcessRouteLineMapper apsStandardProcessRouteLineMapper;
-
+    @Resource
+    ApsStandardProcessRouteHeaderMapper standardProcessRouteHeaderMapper;
+    @Resource
+    ApsPlateStandardRequireErrorMapper requireErrorMapper;
     /**
      * 鏌ヨ鏍囧噯宸ヨ壓璺嚎Line
      * 
@@ -93,4 +107,74 @@
     {
         return apsStandardProcessRouteLineMapper.deleteApsStandardProcessRouteLineById(id);
     }
+    /**
+     * 鏍规嵁鏂欏彿 鏌ヨ宸ヨ壓璺嚎 鍙婂叾涓嬬殑宸ュ簭锛岃绠楀伐鑹鸿矾绾挎�诲伐鏃�
+     * @param require 闇�姹備俊鎭�
+     * @return 宸ヨ壓璺嚎鎬诲伐鏃�
+     */
+    @Override
+    public ApsStandardProcessRouteLine getRouteLineTotalTime(ApsPlateStandardRequire require) {
+        // 瀹氫箟鐙崰鐢熶骇妯″紡甯搁噺
+        String productivityModel_monopolize = "鐙崰";
+        // 鍒濆鍖栨�诲伐鏃朵负0
+        BigDecimal totalRouteTime = BigDecimal.ZERO;
+        //宸ュ巶
+        String plant=require.getOrgCode();
+        // 鐗╂枡鍙�
+        String itemNumber=require.getBomLineCode();
+        long routId=0L;
+        ApsStandardProcessRouteLine ret=ApsStandardProcessRouteLine.builder()
+                .routeId(String.valueOf(routId))
+                .routeTime(BigDecimal.ZERO)
+                .build();
+        // 鏌ヨ鏍囧噯宸ヨ壓璺嚎澶撮儴淇℃伅
+        Optional<ApsStandardProcessRouteHeader> firstProcessRoute = standardProcessRouteHeaderMapper.queryStandardProcessRouteHeaderByPlantAndItemCode(plant, itemNumber).stream().findFirst();
+        if (firstProcessRoute.isPresent()) {
+            ApsStandardProcessRouteHeader routeHeader = firstProcessRoute.get();
+            // 鏋勫缓宸ヨ壓璺嚎琛屽弬鏁板璞�
+            ApsStandardProcessRouteLine routeLineParam = ApsStandardProcessRouteLine.builder()
+                    .routeId(routeHeader.getRouteId())
+                    .build();
+            // 鏌ヨ鏍囧噯宸ヨ壓璺嚎琛屼俊鎭�
+            List<ApsStandardProcessRouteLine> apsStandardProcessRouteLines = apsStandardProcessRouteLineMapper.selectApsStandardProcessRouteLineList(routeLineParam);
+            /*宸ヨ壓璺嚎Line 鎬诲伐鏃�*/
+
+            if(apsStandardProcessRouteLines.isEmpty()){
+                saveRequireError(require,"宸ュ簭涓嶅瓨鍦�");
+            }else {
+                // 閬嶅巻姣忎釜宸ヨ壓璺嚎琛�
+                apsStandardProcessRouteLines.forEach(line -> {
+                    // 榛樿灏嗚璁′骇鑳借缃负璺嚎鏃堕棿
+                    line.setRouteTime(line.getDesignCapacity());
+                    // 濡傛灉鐢熶骇妯″紡涓虹嫭鍗狅紝鍒欒矾绾挎椂闂翠负璁捐浜ц兘涔樹互鍑�闇�姹傞噺
+                    if (line.getProductivityModel().equals(productivityModel_monopolize)) {
+                        line.setRouteTime(line.getDesignCapacity().multiply(require.getNetRequirement()));
+                    }
+                    // 绱姞璺嚎鏃堕棿鍒版�诲伐鏃朵腑
+                    totalRouteTime.add(line.getRouteTime());
+                });
+            }
+            ret.setRouteTime(totalRouteTime);
+            ret.setRouteId(routeHeader.getRouteId());
+        }else {
+            saveRequireError(require,"鏍囧噯宸ヨ壓璺嚎涓嶅瓨鍦�");
+        }
+        // 杩斿洖鎬诲伐鏃�
+        return ret;
+    }
+
+    private void saveRequireError(ApsPlateStandardRequire require,String message) {
+        ApsPlateStandardRequireError data = ApsPlateStandardRequireError.builder()
+                .requireId(require.getRequireId())
+                .batchNumber(require.getBatchNumber())
+                .docNum(require.getDocNum())
+                .itemNum(require.getBomLineCode())
+                .orgCode(require.getOrgCode())
+                .message(message)
+                .delFlag("0")
+                .build();
+        data.setCreateBy(SecurityUtils.getUsername());
+        data.setCreateTime(DateUtils.getNowDate());
+        requireErrorMapper.insertApsPlateStandardRequireError(data);
+    }
 }

--
Gitblit v1.9.3