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 |   73 +++++++++++++++++++++++++-----------
 1 files changed, 50 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 0707375..8a4fe8c 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -13,6 +13,7 @@
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.HackLoopTableRenderPolicy;
 import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.web.domain.R;
 import com.ruoyi.procurementrecord.service.ProcurementRecordService;
 import com.ruoyi.procurementrecord.utils.StockUtils;
 import com.ruoyi.quality.dto.QualityInspectDto;
@@ -40,6 +41,7 @@
 import java.math.BigDecimal;
 import java.net.URLEncoder;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -92,11 +94,7 @@
     public int submit(QualityInspect inspect) {
         QualityInspect qualityInspect = qualityInspectMapper.selectById(inspect.getId());
 
-        //鎻愪氦鍓嶅繀椤诲垽鏂槸鍚﹀悎鏍�
-        if (ObjectUtils.isNull(qualityInspect.getCheckResult())) {
-            throw new ServiceException("璇峰厛鍒ゆ柇鏄惁鍚堟牸");
-        }
-
+        //鎻愪氦鍓嶅繀椤诲垽鏂槸鍚﹀悎鏍硷紙閫氳繃鍚堟牸鏁伴噺鍜屼笉鍚堟牸鏁伴噺鏉ュ垽鏂級
         if (ObjectUtils.isNull(qualityInspect.getQualifiedQuantity())) {
             throw new ServiceException("鍚堟牸鏁伴噺涓嶈兘涓虹┖");
         }
@@ -115,23 +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);
+        // 鍚堟牸鐩存帴鍏ュ簱锛堝凡鐢熸垚杩囧叆搴撹褰曞垯璺宠繃锛岄伩鍏嶇紪杈戝叆搴撳悗鎻愪氦瀵艰嚧閲嶅鍏ュ簱锛�
+        if(qualityInspect.getQualifiedQuantity().compareTo(BigDecimal.ZERO) > 0
+                && !hasStockInRecord(qualityInspect)){
+            stockInQualified(qualityInspect);
         }
         // 涓嶅悎鏍煎鐞�
         if(qualityInspect.getUnqualifiedQuantity().compareTo(BigDecimal.ZERO) > 0){
@@ -186,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;
     }
 
     /*鐢熸垚妫�楠屾姤鍛�*/
@@ -251,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