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 |   41 ++++++++++++++++++++++++++++++++++++-----
 1 files changed, 36 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 935cb78..e87a975 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -219,6 +219,12 @@
         if (purchaseLedger.getId() == null) {
             purchaseLedgerMapper.insert(purchaseLedger);
         } else {
+            PurchaseLedger dbLedger = purchaseLedgerMapper.selectById(purchaseLedger.getId());
+            if (dbLedger != null
+                    && Objects.equals(dbLedger.getApprovalStatus(), 3)
+                    && Objects.equals(dbLedger.getStockStatus(), 2)) {
+                throw new ServiceException("璇ラ噰璐鍗曞凡瀹℃壒閫氳繃涓斿凡鍏ㄩ儴鍏ュ簱锛屼笉鑳藉啀娆″彂璧峰叆搴撳鎵癸紱濡傞渶閲嶆彁璇峰厛璧板鎵逛笉閫氳繃娴佺▼");
+            }
             // 鍒犻櫎閲囪喘瀹℃牳锛岄噸鏂版彁浜�
             ApproveProcess one = approveProcessService.getOne(new LambdaQueryWrapper<ApproveProcess>()
                     .eq(ApproveProcess::getApproveType, 5)
@@ -266,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) {
@@ -856,6 +865,11 @@
     }
 
     public void addApproveByPurchase(LoginUser loginUser, PurchaseLedger purchaseLedger) throws Exception {
+        if (purchaseLedger != null
+                && Objects.equals(purchaseLedger.getApprovalStatus(), 3)
+                && Objects.equals(purchaseLedger.getStockStatus(), 2)) {
+            throw new ServiceException("璇ラ噰璐鍗曞叆搴撴暟閲忓凡婊¤冻锛屼笉鑳介噸澶嶅彂璧峰鎵�");
+        }
         ApproveProcessVO approveProcessVO = new ApproveProcessVO();
         approveProcessVO.setApproveType(5);
         approveProcessVO.setApproveDeptId(loginUser.getCurrentDeptId());
@@ -920,7 +934,7 @@
             }
             //  闇�瑕佽川妫�锛氭壂鐮佸叆搴撹繘鍏ュ師鏉愭枡妫�楠岋紝涓嶇洿鎺ュ叆鍚堟牸搴撳瓨
             if (Boolean.TRUE.equals(dbProduct.getIsChecked())) {
-                //  瀛樺湪鏈�氳繃/鏈鐞嗙殑鍘熸潗鏂欐楠屽崟锛屽垯绂佹缁х画鎵爜鍏ュ簱
+                //  瀛樺湪鏈彁浜ゆ垨鍏ュ簱瀹℃壒涓殑鍘熸潗鏂欐楠屽崟锛屽垯绂佹缁х画鎵爜鍏ュ簱
                 Long pendingInspectCount = qualityInspectMapper.selectCount(new LambdaQueryWrapper<QualityInspect>()
                         .eq(QualityInspect::getInspectType, 0)
                         .eq(QualityInspect::getPurchaseLedgerId, purchaseId)
@@ -928,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("鍏ュ簱澶辫触,瀛樺湪鏈�氳繃鎴栨湭澶勭悊鐨勮川妫�璁板綍,璇峰厛澶勭悊鍚庡啀鎵爜鍏ュ簱");
                 }
@@ -945,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) {
@@ -1321,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