From 1d2d3760bef94013f80cae555bdcbfb2268929a2 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期三, 15 四月 2026 11:22:17 +0800
Subject: [PATCH] fix:生产-质量-仓储(合格,不合格),批号,供应商

---
 src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java           |    6 +-
 src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java       |   27 ++++++++-----
 src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java |   14 ++++---
 src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java           |    1 
 src/main/resources/mapper/quality/QualityUnqualifiedMapper.xml                        |    2 
 src/main/java/com/ruoyi/stock/dto/StockUninventoryDto.java                            |    2 +
 src/main/resources/mapper/stock/StockUninventoryMapper.xml                            |    4 ++
 src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java                       |    5 ++
 src/main/java/com/ruoyi/stock/pojo/StockUninventory.java                              |    4 ++
 9 files changed, 44 insertions(+), 21 deletions(-)

diff --git a/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java b/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
index 2ded4f0..88e6159 100644
--- a/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
+++ b/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
@@ -38,12 +38,15 @@
      * @param recordType
      * @param recordId
      */
-    public void addUnStock(Long productModelId, BigDecimal quantity, String recordType,Long recordId) {
+    public void addUnStock(Long productModelId, BigDecimal quantity, String recordType,Long recordId, String batchNo, String customer, LocalDate productionDate) {
         StockUninventoryDto stockUninventoryDto = new StockUninventoryDto();
         stockUninventoryDto.setRecordId(recordId);
         stockUninventoryDto.setRecordType(String.valueOf(recordType));
         stockUninventoryDto.setQualitity(quantity);
         stockUninventoryDto.setProductModelId(productModelId);
+        stockUninventoryDto.setBatchNo(batchNo);
+        stockUninventoryDto.setCustomer(customer);
+        stockUninventoryDto.setProductionDate(productionDate);
         stockUninventoryService.addStockUninventory(stockUninventoryDto);
     }
 
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
index 8b2b427..18b9f06 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -223,7 +223,7 @@
                 order.setDrawMaterials(JSON.toJSONString(existingMaterialList));
                 productOrderMapper.updateById(order);
             }
-        }else {
+        } else {
             throw new RuntimeException("璇烽鍙栨姇鍏ユ潗鏂�");
         }
         /*鏂板鎶ュ伐浜у嚭琛�*/
@@ -237,6 +237,8 @@
         //鍚堟牸鏁伴噺=鎶ュ伐鏁伴噺
         BigDecimal productQty = productionProductOutput.getQuantity();
         //鍙湁鍚堟牸鏁伴噺>0鎵嶈兘澧炲姞鐩稿簲鏁版嵁
+        ProductWorkOrder pwo = productWorkOrderMapper.selectById(productionProductMain.getWorkOrderId());
+        String customer = "闀挎不甯傝酱鎵垮埗閫犳湁闄愬叕鍙�";
         if (productQty.compareTo(BigDecimal.ZERO) > 0) {
             /*鏂板璐ㄦ*/
             List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId()));
@@ -249,8 +251,7 @@
                     inspectType = 2;
                     process = null;
                 }
-                ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectById(productionProductMain.getWorkOrderId());
-                ProductOrder productOrder = productOrderMapper.selectById(productWorkOrder.getProductOrderId());
+                ProductOrder productOrder = productOrderMapper.selectById(pwo.getProductOrderId());
                 if (productOrder == null) {
                     throw new RuntimeException("鐢熶骇璁㈠崟涓嶅瓨鍦�");
                 }
@@ -269,6 +270,7 @@
                 qualityInspect.setProductModelId(productModel.getId());
                 qualityInspect.setBatchNo(productOrder.getBatchNo());
                 qualityInspect.setManufacturingTeam(productOrder.getManufacturingTeam());
+                qualityInspect.setProductionDate(pwo.getActualStartTime() != null ? pwo.getActualStartTime() : LocalDate.now());
                 qualityInspectMapper.insert(qualityInspect);
                 List<QualityTestStandard> qualityTestStandard = qualityTestStandardMapper.getQualityTestStandardByProductId(product.getId(), inspectType, process);
                 if (qualityTestStandard.size() > 0) {
@@ -286,9 +288,8 @@
                 }
             } else {
                 //鐩存帴鍏ュ簱
-                String customer = "闀挎不甯傝酱鎵垮埗閫犳湁闄愬叕鍙�";
                 stockUtils.addStock(productProcessRouteItem.getProductModelId(), productionProductOutput.getQuantity().subtract(productionProductOutput.getScrapQty()),
-                        StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId(),order.getBatchNo(),customer,null
+                        StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId(), order.getBatchNo(), customer, pwo.getActualStartTime() != null ? pwo.getActualStartTime() : LocalDate.now()
                 );
             }
             /*鏇存柊宸ュ崟鍜岀敓浜ц鍗�*/
@@ -335,7 +336,8 @@
         //濡傛灉鎶ュ簾鏁伴噺>0,闇�瑕佽繘鍏ユ姤搴熺殑搴撳瓨
         if (ObjectUtils.isNotEmpty(dto.getScrapQty())) {
             if (dto.getScrapQty().compareTo(BigDecimal.ZERO) > 0) {
-                stockUtils.addUnStock(productModel.getId(), dto.getScrapQty(), StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId());
+                stockUtils.addUnStock(productModel.getId(), dto.getScrapQty(), StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId(),
+                        order.getBatchNo(), customer, pwo.getActualStartTime() != null ? pwo.getActualStartTime() : LocalDate.now());
             }
         }
         return true;
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 a128dd3..95249fd 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -131,13 +131,13 @@
             String text = inspectParams.stream().map(QualityInspectParam::getParameterItem).collect(Collectors.joining(","));
             qualityUnqualified.setDefectivePhenomena(text + "杩欎簺鎸囨爣涓瓨鍦ㄤ笉鍚堟牸");//涓嶅悎鏍肩幇璞�
             qualityUnqualified.setInspectId(qualityInspect.getId());
-            qualityUnqualified.setProductionDate(inspect.getProductionDate());
-            qualityUnqualified.setBatchNo(inspect.getBatchNo());
+            qualityUnqualified.setProductionDate(qualityInspect.getProductionDate());
+            qualityUnqualified.setBatchNo(batchNo);
             qualityUnqualifiedMapper.insert(qualityUnqualified);
         } else {
             //鍚堟牸鐩存帴鍏ュ簱
             stockUtils.addStock(qualityInspect.getProductModelId(), qualityInspect.getQuantity(), StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode(),
-                    qualityInspect.getId(), batchNo, customer,inspect.getProductionDate()
+                    qualityInspect.getId(), batchNo, customer != null ? customer : "闀挎不甯傝酱鎵垮埗閫犳湁闄愬叕鍙�", inspect.getProductionDate()
             );
         }
         qualityInspect.setInspectState(1);//宸叉彁浜�
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 d24a1bf..7cf0307 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
@@ -66,9 +66,16 @@
     public int deal(QualityUnqualified qualityUnqualified) {
         QualityUnqualified unqualified = qualityUnqualifiedMapper.selectById(qualityUnqualified.getId());
         QualityInspect qualityInspect = qualityInspectService.getById(unqualified.getInspectId());
-        ProductionProductMain productionProductMain = productionProductMainMapper.selectById(qualityInspect.getProductMainId());
-        ProductWorkOrder workOrder = productWorkOrderMapper.selectById(productionProductMain.getWorkOrderId());
-        ProductOrder orders = productOrderMapper.selectById(workOrder.getProductOrderId());
+        String batchNo;
+        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();
+        } else {
+            batchNo = qualityInspect.getBatchNo();
+        }
+        String customer = "闀挎不甯傝酱鎵垮埗閫犳湁闄愬叕鍙�";
         if (ObjectUtils.isNotNull(qualityInspect) && qualityInspect.getInspectType() != 0) {
             switch (qualityUnqualified.getDealResult()) {
                 case "杩斾慨":
@@ -131,13 +138,13 @@
                     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 "璁╂鏀捐":
                     //璋冪敤鎻愪氦鍚堟牸鐨勬帴鍙�
-                    String customer = "闀挎不甯傝酱鎵垮埗閫犳湁闄愬叕鍙�";
                     stockUtils.addStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId(),
-                            orders.getBatchNo(), customer,null
+                            batchNo, customer, qualityInspect.getProductionDate() != null ? qualityInspect.getProductionDate() : LocalDate.now()
                     );
                     break;
                 case "杩斿伐":
@@ -150,17 +157,17 @@
             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 "璁╂鏀捐":
                     //璋冪敤鎻愪氦鍚堟牸鐨勬帴鍙�
-                    String customer = "闀挎不甯傝酱鎵垮埗閫犳湁闄愬叕鍙�";
-                    stockUtils.addStock(modelId, unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId(), orders.getBatchNo(), customer,null);
+                    customer = "闀挎不甯傝酱鎵垮埗閫犳湁闄愬叕鍙�";
+                    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);
diff --git a/src/main/java/com/ruoyi/stock/dto/StockUninventoryDto.java b/src/main/java/com/ruoyi/stock/dto/StockUninventoryDto.java
index 404c58a..1475d88 100644
--- a/src/main/java/com/ruoyi/stock/dto/StockUninventoryDto.java
+++ b/src/main/java/com/ruoyi/stock/dto/StockUninventoryDto.java
@@ -19,4 +19,6 @@
     private Long recordId;
 
     private BigDecimal unLockedQuantity;
+
+    private String uidNo;
 }
diff --git a/src/main/java/com/ruoyi/stock/pojo/StockUninventory.java b/src/main/java/com/ruoyi/stock/pojo/StockUninventory.java
index 0d6f83b..46bd54c 100644
--- a/src/main/java/com/ruoyi/stock/pojo/StockUninventory.java
+++ b/src/main/java/com/ruoyi/stock/pojo/StockUninventory.java
@@ -12,6 +12,7 @@
 
 import java.io.Serializable;
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 /**
@@ -65,4 +66,7 @@
     @ApiModelProperty("渚涘簲鍟嗗悕绉�")
     private String customer;
 
+    @ApiModelProperty("鐢熶骇鏃ユ湡")
+    private LocalDate productionDate;
+
 }
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
index 14372dc..9daa034 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
@@ -70,6 +70,7 @@
             newStockUnInventory.setRemark(stockUninventoryDto.getRemark());
             newStockUnInventory.setBatchNo(stockUninventoryDto.getBatchNo());
             newStockUnInventory.setCustomer(stockUninventoryDto.getCustomer());
+            newStockUnInventory.setProductionDate(stockUninventoryDto.getProductionDate());
             stockUninventoryMapper.insert(newStockUnInventory);
         }else {
             stockUninventoryMapper.updateAddStockUnInventory(stockUninventoryDto);
diff --git a/src/main/resources/mapper/quality/QualityUnqualifiedMapper.xml b/src/main/resources/mapper/quality/QualityUnqualifiedMapper.xml
index 52ca178..519275a 100644
--- a/src/main/resources/mapper/quality/QualityUnqualifiedMapper.xml
+++ b/src/main/resources/mapper/quality/QualityUnqualifiedMapper.xml
@@ -18,7 +18,7 @@
         qu.deal_time,
         qu.production_date,
         pm.uid_no,
-        pm.batch_no,
+        qu.batch_no,
         CASE
         WHEN qu.model = pm.id THEN pm.model
         ELSE qu.model
diff --git a/src/main/resources/mapper/stock/StockUninventoryMapper.xml b/src/main/resources/mapper/stock/StockUninventoryMapper.xml
index 11d1819..1e6e434 100644
--- a/src/main/resources/mapper/stock/StockUninventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockUninventoryMapper.xml
@@ -51,6 +51,9 @@
             <if test="ew.customer != null and ew.customer !=''">
                 customer = #{ew.customer},
             </if>
+            <if test="ew.productionDate != null">
+                production_date = #{ew.productionDate},
+            </if>
             update_time = now()
         </set>
         where product_model_id = #{ew.productModelId}
@@ -67,6 +70,7 @@
         (su.qualitity - COALESCE(su.locked_quantity, 0)) as un_locked_quantity,
         pm.model,
         pm.unit,
+        pm.uid_no,
         p.product_name,
         su.batch_no,
         su.customer

--
Gitblit v1.9.3