From 7828b982da116070fe11526733609ecce23631b6 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期五, 15 五月 2026 19:55:28 +0800
Subject: [PATCH] feat: 设备维修新增报修人、验收人、维修人

---
 src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java |   30 +++++++++++++++++++++++++-----
 1 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
index 337e972..e87a975 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -272,6 +272,9 @@
         qualityInspect.setProductModelId(saleProduct.getProductModelId());
         qualityInspect.setUnit(saleProduct.getUnit());
         qualityInspect.setQuantity(saleProduct.getQuantity());
+        qualityInspect.setQualifiedQuantity(saleProduct.getQuantity());
+        qualityInspect.setUnqualifiedQuantity(BigDecimal.ZERO);
+        qualityInspect.setPassRate(BigDecimal.valueOf(100).setScale(2, RoundingMode.HALF_UP));
         qualityInspectMapper.insert(qualityInspect);
         List<QualityTestStandard> qualityTestStandard = qualityTestStandardMapper.getQualityTestStandardByProductId(saleProduct.getProductId(), 0, null);
         if (qualityTestStandard.size() > 0) {
@@ -931,7 +934,7 @@
             }
             //  闇�瑕佽川妫�锛氭壂鐮佸叆搴撹繘鍏ュ師鏉愭枡妫�楠岋紝涓嶇洿鎺ュ叆鍚堟牸搴撳瓨
             if (Boolean.TRUE.equals(dbProduct.getIsChecked())) {
-                //  瀛樺湪鏈�氳繃/鏈鐞嗙殑鍘熸潗鏂欐楠屽崟锛屽垯绂佹缁х画鎵爜鍏ュ簱
+                //  瀛樺湪鏈彁浜ゆ垨鍏ュ簱瀹℃壒涓殑鍘熸潗鏂欐楠屽崟锛屽垯绂佹缁х画鎵爜鍏ュ簱
                 Long pendingInspectCount = qualityInspectMapper.selectCount(new LambdaQueryWrapper<QualityInspect>()
                         .eq(QualityInspect::getInspectType, 0)
                         .eq(QualityInspect::getPurchaseLedgerId, purchaseId)
@@ -939,9 +942,8 @@
                         .and(w -> w
                                 .isNull(QualityInspect::getInspectState)
                                 .or(q0 -> q0.eq(QualityInspect::getInspectState, 0))
-                                // inspect_state=1 涔熻涓衡�滄湭澶勭悊鈥�
                                 .or(q1 -> q1.eq(QualityInspect::getInspectState, 1)
-                                        .isNull(QualityInspect::getCheckResult))));
+                                        .in(QualityInspect::getApprovalStatus, 1, 2))));
                 if (pendingInspectCount != null && pendingInspectCount > 0) {
                     throw new ServiceException("鍏ュ簱澶辫触,瀛樺湪鏈�氳繃鎴栨湭澶勭悊鐨勮川妫�璁板綍,璇峰厛澶勭悊鍚庡啀鎵爜鍏ュ簱");
                 }
@@ -956,9 +958,11 @@
                                         .or(q1 -> q1.eq(QualityInspect::getInspectState, 1)
                                                 .and(r -> r.isNull(QualityInspect::getCheckResult)
                                                         .or()
-                                                        .eq(QualityInspect::getCheckResult, "鍚堟牸")))))
+                                                        .eq(QualityInspect::getCheckResult, "鍚堟牸")
+                                                        .or()
+                                                        .eq(QualityInspect::getCheckResult, "閮ㄥ垎鍚堟牸")))))
                         .stream()
-                        .map(QualityInspect::getQuantity)
+                        .map(this::resolveInspectCountedQuantity)
                         .filter(Objects::nonNull)
                         .reduce(BigDecimal.ZERO, BigDecimal::add);
                 if (inspectQty.add(inboundThisLine).compareTo(orderQty) > 0) {
@@ -1332,4 +1336,20 @@
         }
         return sb.toString();
     }
+
+    private BigDecimal resolveInspectCountedQuantity(QualityInspect inspect) {
+        if (inspect == null) {
+            return BigDecimal.ZERO;
+        }
+        if (inspect.getInspectState() == null || inspect.getInspectState() == 0) {
+            return inspect.getQuantity() == null ? BigDecimal.ZERO : inspect.getQuantity();
+        }
+        if (inspect.getQualifiedQuantity() != null) {
+            return inspect.getQualifiedQuantity();
+        }
+        if ("鍚堟牸".equals(inspect.getCheckResult()) || "閮ㄥ垎鍚堟牸".equals(inspect.getCheckResult())) {
+            return inspect.getQuantity() == null ? BigDecimal.ZERO : inspect.getQuantity();
+        }
+        return BigDecimal.ZERO;
+    }
 }

--
Gitblit v1.9.3