From 48ee55f9ba71d07fbce36da0f2fa081bd14a4068 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期三, 01 四月 2026 11:10:04 +0800
Subject: [PATCH] feat: 售后附件与临期售后信息接口

---
 src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java |   26 ++++++++++++++++++++------
 1 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
index 57fcc88..4c21a55 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -44,6 +44,7 @@
 import oshi.driver.mac.net.NetStat;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
@@ -164,15 +165,23 @@
         List<ProductStructureDto> productStructureDtos = productStructureMapper.listBybomAndProcess(productProcessRoute.getBomId(), productProcess.getId());
 
         List<Long> lastProcessIds = new ArrayList<>();
+        List<Long> firstProcessIds = new ArrayList<>();
 
         if (!allProcess.isEmpty()) {
             String lastProcessName = allProcess.get(allProcess.size() - 1).getProcessName();
+            String firstProcessName = allProcess.get(0).getProcessName();
 
             for (int i = allProcess.size() - 1; i >= 0; i--) {
                 ProductStructureDto d = allProcess.get(i);
-
                 if (lastProcessName.equals(d.getProcessName())) {
                     lastProcessIds.add(d.getId());
+                } else {
+                    break;
+                }
+            }
+            for (ProductStructureDto d : allProcess) {
+                if (firstProcessName.equals(d.getProcessName())) {
+                    firstProcessIds.add(d.getId());
                 } else {
                     break;
                 }
@@ -188,15 +197,20 @@
         }
         for (ProductStructureDto productStructureDto : productStructureDtos) {
             ProductModel productModel1 = productModelMapper.selectById(productStructureDto.getProductModelId());
+            if(productModel1 == null){
+                continue;
+            }
             Product product = productMapper.selectById(productModel1.getProductId());
 
-            // 鍒ゆ柇鏄惁涓烘渶鍚庝竴閬撳伐搴�
-            BigDecimal needQuantity = dto.getQuantity().divide(productStructureDto.getUnitQuantity(), 2, BigDecimal.ROUND_HALF_UP);
-            if (lastProcessIds.contains(productStructureDto.getId())) {
+            // 鍒ゆ柇鏄惁涓烘渶鍚庝竴閬撳伐搴� 鎴栬�呬负绗竴閬撳伐搴�
+            BigDecimal needQuantity = BigDecimal.ZERO;
+
+            if(BigDecimal.ZERO.equals(productStructureDto.getUnitQuantity())){
+                needQuantity = dto.getQuantity().divide(productStructureDto.getUnitQuantity(), 2, RoundingMode.HALF_UP);
+            }
+            if (lastProcessIds.contains(productStructureDto.getId()) || firstProcessIds.contains(productStructureDto.getId())) {
                 needQuantity = dto.getQuantity().multiply(productStructureDto.getUnitQuantity());
             }
-
-
             // 鏌ヨ浜у搧搴撳瓨
             BigDecimal stockQuantity = stockUtils.getStockQuantity(productModel1.getId()).get("stockQuantity");
             if (!(stockQuantity.compareTo(BigDecimal.ZERO) > 0)) {

--
Gitblit v1.9.3