From 85f9e4465f7cf545f3bd2cdc0661a9ce938751dc Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期五, 18 九月 2026 15:56:39 +0800
Subject: [PATCH] fix: 质检是否入库

---
 src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java |   70 +++++++++++++++++++++++-----------
 1 files changed, 47 insertions(+), 23 deletions(-)

diff --git a/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java b/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
index 8ea03f0..8a4fe8c 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -113,28 +113,10 @@
             qualityInspect.setUnqualifiedQuantity(BigDecimal.ZERO);
         }
 
-        // 鍚堟牸鐩存帴鍏ュ簱
-        if(qualityInspect.getQualifiedQuantity().compareTo(BigDecimal.ZERO) > 0){
-            //浠呮坊鍔犲叆搴撹褰�
-            StockInventoryDto stockInventoryDto = new StockInventoryDto();
-            //濡傛灉鏄噰璐川妫�鍚堟牸鍏ュ簱閫夌敤CUSTOMIZATION_UNSTOCK_OUT,鍏朵綑鍚堟牸鍏ュ簱閫夌敤QUALITYINSPECT_STOCK_IN
-            stockInventoryDto.setRecordType(String.valueOf(StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode()));
-            if (ObjectUtils.isNotEmpty(qualityInspect.getPurchaseLedgerId())){
-                stockInventoryDto.setRecordType(String.valueOf(StockInQualifiedRecordTypeEnum.CUSTOMIZATION_UNSTOCK_OUT.getCode()));
-            }
-            stockInventoryDto.setRecordId(qualityInspect.getId());
-            stockInventoryDto.setProductModelId(qualityInspect.getProductModelId());
-            stockInventoryDto.setQualitity(qualityInspect.getQualifiedQuantity());
-            stockInventoryDto.setBatchNo(resolveProductionBatchNo(
-                    qualityInspect.getProductMainId(),
-                    qualityInspect.getId(),
-                    qualityInspect.getProductModelId()));
-            stockInventoryService.addStockInRecordOnly(stockInventoryDto);
-            //StockInRecord stockInRecord = stockInRecordService.getOne(Wrappers.<StockInRecord>lambdaQuery()
-            //        .eq(StockInRecord::getRecordId, qualityInspect.getId())
-            //        .eq(StockInRecord::getRecordType, stockInventoryDto.getRecordType())
-            //);
-            //stockInRecordService.batchApprove(Collections.singletonList(stockInRecord.getId()),1);
+        // 鍚堟牸鐩存帴鍏ュ簱锛堝凡鐢熸垚杩囧叆搴撹褰曞垯璺宠繃锛岄伩鍏嶇紪杈戝叆搴撳悗鎻愪氦瀵艰嚧閲嶅鍏ュ簱锛�
+        if(qualityInspect.getQualifiedQuantity().compareTo(BigDecimal.ZERO) > 0
+                && !hasStockInRecord(qualityInspect)){
+            stockInQualified(qualityInspect);
         }
         // 涓嶅悎鏍煎鐞�
         if(qualityInspect.getUnqualifiedQuantity().compareTo(BigDecimal.ZERO) > 0){
@@ -189,6 +171,40 @@
                         .last("limit 1"),
                 false);
         return inspectRecord == null ? null : inspectRecord.getBatchNo();
+    }
+
+    /**
+     * 鍚堟牸鏁伴噺鐢熸垚鍏ュ簱璁板綍涓庡簱瀛�
+     */
+    private void stockInQualified(QualityInspect qualityInspect) {
+        //浠呮坊鍔犲叆搴撹褰�
+        StockInventoryDto stockInventoryDto = new StockInventoryDto();
+        stockInventoryDto.setRecordType(resolveStockInRecordType(qualityInspect));
+        stockInventoryDto.setRecordId(qualityInspect.getId());
+        stockInventoryDto.setProductModelId(qualityInspect.getProductModelId());
+        stockInventoryDto.setQualitity(qualityInspect.getQualifiedQuantity());
+        stockInventoryDto.setBatchNo(resolveProductionBatchNo(
+                qualityInspect.getProductMainId(),
+                qualityInspect.getId(),
+                qualityInspect.getProductModelId()));
+        stockInventoryService.addStockInRecordOnly(stockInventoryDto);
+    }
+
+    private String resolveStockInRecordType(QualityInspect qualityInspect) {
+        if (ObjectUtils.isNotEmpty(qualityInspect.getPurchaseLedgerId())) {
+            return StockInQualifiedRecordTypeEnum.CUSTOMIZATION_UNSTOCK_OUT.getCode();
+        }
+        return StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode();
+    }
+
+    /**
+     * 鍒ゆ柇璇ユ楠屽崟鏄惁宸茬敓鎴愯繃鍏ュ簱璁板綍
+     */
+    private boolean hasStockInRecord(QualityInspect qualityInspect) {
+        return stockInRecordService.count(Wrappers.<StockInRecord>lambdaQuery()
+                .eq(StockInRecord::getRecordId, qualityInspect.getId())
+                .eq(StockInRecord::getProductModelId, qualityInspect.getProductModelId())
+                .eq(StockInRecord::getRecordType, resolveStockInRecordType(qualityInspect))) > 0;
     }
 
     /*鐢熸垚妫�楠屾姤鍛�*/
@@ -254,7 +270,15 @@
         }
         QualityInspect qualityInspect = new QualityInspect();
         BeanUtils.copyProperties(qualityInspectDto, qualityInspect);
-        return qualityInspectMapper.updateById(qualityInspect);
+        int result = qualityInspectMapper.updateById(qualityInspect);
+        // 缂栬緫鏃堕�夋嫨"鍏ュ簱"鍒欑敓鎴愬叆搴撹褰曚笌搴撳瓨锛岄�夋嫨"涓嶅叆搴�"鍒欏彧淇濆瓨璐ㄦ璁板綍
+        if (Integer.valueOf(1).equals(qualityInspectDto.getIsStockIn())) {
+            if (hasStockInRecord(qualityInspect)) {
+                throw new ServiceException("璇ユ楠屽崟宸茬敓鎴愯繃鍏ュ簱璁板綍锛岃鍕块噸澶嶅叆搴�");
+            }
+            stockInQualified(qualityInspect);
+        }
+        return result;
     }
 
     @Override

--
Gitblit v1.9.3