From 47cbc59169b787e8a5f9c6969e2a0259c06249ca Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期五, 24 四月 2026 13:31:48 +0800
Subject: [PATCH] feat:库存管理成品/半成品/原材料

---
 src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java |   44 +++++++++++++++++++++++++++++++-------------
 1 files changed, 31 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java b/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
index a3c199d..190fc04 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
@@ -13,14 +13,8 @@
 import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.procurementrecord.utils.StockUtils;
-import com.ruoyi.production.mapper.ProductProcessRouteItemMapper;
-import com.ruoyi.production.mapper.ProductProcessRouteMapper;
-import com.ruoyi.production.mapper.ProductWorkOrderMapper;
-import com.ruoyi.production.mapper.ProductionProductMainMapper;
-import com.ruoyi.production.pojo.ProductOrder;
-import com.ruoyi.production.pojo.ProductProcessRoute;
-import com.ruoyi.production.pojo.ProductProcessRouteItem;
-import com.ruoyi.production.pojo.ProductWorkOrder;
+import com.ruoyi.production.mapper.*;
+import com.ruoyi.production.pojo.*;
 import com.ruoyi.production.service.ProductOrderService;
 import com.ruoyi.quality.mapper.QualityUnqualifiedMapper;
 import com.ruoyi.quality.pojo.QualityInspect;
@@ -54,6 +48,7 @@
     private ProductProcessRouteItemMapper productProcessRouteItemMapper;
     private ProductWorkOrderMapper productWorkOrderMapper;
     private StockUninventoryService stockUninventoryService;
+    private ProductOrderMapper productOrderMapper;
 
     @Override
     public IPage<QualityUnqualified> qualityUnqualifiedListPage(Page page, QualityUnqualified qualityUnqualified) {
@@ -71,6 +66,22 @@
     public int deal(QualityUnqualified qualityUnqualified) {
         QualityUnqualified unqualified = qualityUnqualifiedMapper.selectById(qualityUnqualified.getId());
         QualityInspect qualityInspect = qualityInspectService.getById(unqualified.getInspectId());
+        String batchNo;
+        String customer;
+        if (qualityInspect.getProductMainId() != null) {
+            ProductionProductMain productionProductMain = productionProductMainMapper.selectById(qualityInspect.getProductMainId());
+            ProductWorkOrder workOrder = productWorkOrderMapper.selectById(productionProductMain.getWorkOrderId());
+            ProductOrder orders = productOrderMapper.selectById(workOrder.getProductOrderId());
+            batchNo = orders.getBatchNo();
+            customer = "闀挎不甯傚仴榻块娇绉戝櫒鏉愭湁闄愬叕鍙�";
+        } else {
+            batchNo = qualityInspect.getBatchNo();
+            if (qualityInspect.getSupplier() != null) {
+                customer = qualityInspect.getCustomer();
+            } else {
+                customer = "闀挎不甯傚仴榻块娇绉戝櫒鏉愭湁闄愬叕鍙�";
+            }
+        }
         if (ObjectUtils.isNotNull(qualityInspect) && qualityInspect.getInspectType() != 0) {
             switch (qualityUnqualified.getDealResult()) {
                 case "杩斾慨":
@@ -133,11 +144,14 @@
                     break;
                 case "鎶ュ簾":
                     //璋冪敤涓嶅悎鏍煎簱瀛樻帴鍙� 鍏ヤ笉鍚堟牸搴�
-                    stockUtils.addUnStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId());
+                    stockUtils.addUnStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId(),
+                            batchNo, customer, qualityInspect.getProductionDate() != null ? qualityInspect.getProductionDate() : LocalDate.now());
                     break;
                 case "璁╂鏀捐":
                     //璋冪敤鎻愪氦鍚堟牸鐨勬帴鍙�
-                    stockUtils.addStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId());
+                    stockUtils.addStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId(),
+                            batchNo, customer, qualityInspect.getProductionDate() != null ? qualityInspect.getProductionDate() : LocalDate.now()
+                    );
                     break;
                 case "杩斿伐":
                 default:
@@ -149,16 +163,16 @@
             switch (qualityUnqualified.getDealResult()) {
                 case "鎶ュ簾":
                     //璋冪敤涓嶅悎鏍煎簱瀛樻帴鍙� 鍏ヤ笉鍚堟牸搴�
-                    stockUtils.addUnStock(modelId, unqualified.getQuantity(), StockInUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId());
+                    stockUtils.addUnStock(modelId, unqualified.getQuantity(), StockInUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId(),
+                            batchNo, customer, qualityInspect.getProductionDate() != null ? qualityInspect.getProductionDate() : LocalDate.now());
                     break;
                 case "璁╂鏀捐":
                     //璋冪敤鎻愪氦鍚堟牸鐨勬帴鍙�
-                    stockUtils.addStock(modelId, unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId());
+                    stockUtils.addStock(modelId, unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId(), batchNo, customer, qualityInspect.getProductionDate() != null ? qualityInspect.getProductionDate() : LocalDate.now());
                     break;
                 default:
                     break;
             }
-
         }
         qualityUnqualified.setInspectState(1);//宸插鐞�
         return qualityUnqualifiedMapper.updateById(qualityUnqualified);
@@ -180,6 +194,10 @@
             Map<String, Object> data = new HashMap<>();
             data.put("productName", info.getProductName());
             data.put("model", info.getModel());
+            data.put("batchNo", info.getBatchNo());
+            data.put("productionDate", info.getProductionDate());
+            data.put("defectivePhenomena", info.getDefectivePhenomena());
+            data.put("quantity", info.getQuantity());
 
             // 鍔犺浇妯℃澘
             inputStream = getClass().getResourceAsStream("/static/return-record.docx");

--
Gitblit v1.9.3