From b28173836631e9ecb1aafbaa5786c0383462208e Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期四, 12 三月 2026 15:09:57 +0800
Subject: [PATCH] 1.生产成品添加审核流程,半成品不审核

---
 src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java           |   12 ++
 src/main/java/com/ruoyi/stock/service/StockInventoryService.java                      |    2 
 src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java                              |    3 
 src/main/resources/mapper/stock/StockOutRecordMapper.xml                              |    3 
 src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java |   18 ++
 src/main/resources/mapper/stock/StockInventoryMapper.xml                              |   46 +++++++--
 src/main/resources/mapper/stock/StockInRecordMapper.xml                               |   25 ++--
 src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java                       |   36 ++++++
 src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java              |    2 
 src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java       |   24 +++-
 src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java                        |    2 
 src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java           |   26 +++++
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java                |   35 +++++-
 src/main/java/com/ruoyi/production/pojo/ProductProcessRouteItem.java                  |    3 
 src/main/resources/mapper/stock/StockUninventoryMapper.xml                            |   23 ++-
 src/main/java/com/ruoyi/stock/service/StockUninventoryService.java                    |    2 
 src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java             |   30 ++++++
 17 files changed, 240 insertions(+), 52 deletions(-)

diff --git a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
index de7e81b..97a9912 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -217,7 +217,7 @@
                             purchaseLedgerServiceImpl.addQualityInspect(purchaseLedger, salesLedgerProduct);
                         } else {
                             //鐩存帴鍏ュ簱
-                            stockUtils.addStock(salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockInQualifiedRecordTypeEnum.PURCHASE_STOCK_IN.getCode(), purchaseLedger.getId());
+                            stockUtils.addStockNoReview(salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockInQualifiedRecordTypeEnum.PURCHASE_STOCK_IN.getCode(), purchaseLedger.getId());
                         }
                     }
                 } else if (status.equals(3)) {
diff --git a/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java b/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
index 3db55b2..1c6b9f5 100644
--- a/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
+++ b/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
@@ -29,7 +29,7 @@
     private final StockOutRecordService stockOutRecordService;
 
     /**
-     * 涓嶅悎鏍煎叆搴�
+     * 涓嶅悎鏍煎叆搴擄紙瀹℃牳锛�
      * @param productModelId
      * @param quantity
      * @param recordType
@@ -42,6 +42,22 @@
         stockUninventoryDto.setQualitity(quantity);
         stockUninventoryDto.setProductModelId(productModelId);
         stockUninventoryService.addStockUninventory(stockUninventoryDto);
+    }
+
+    /**
+     * 涓嶅悎鏍煎叆搴擄紙涓嶅鏍革級
+     * @param productModelId
+     * @param quantity
+     * @param recordType
+     * @param recordId
+     */
+    public void addUnStockNoReview(Long productModelId, BigDecimal quantity, String recordType,Long recordId) {
+        StockUninventoryDto stockUninventoryDto = new StockUninventoryDto();
+        stockUninventoryDto.setRecordId(recordId);
+        stockUninventoryDto.setRecordType(String.valueOf(recordType));
+        stockUninventoryDto.setQualitity(quantity);
+        stockUninventoryDto.setProductModelId(productModelId);
+        stockUninventoryService.addStockUninventoryNoReview(stockUninventoryDto);
     }
 
     /**
@@ -61,7 +77,7 @@
     }
 
     /**
-     * 鍚堟牸鍏ュ簱
+     * 鍚堟牸鍏ュ簱锛堝鏍革級
      * @param productModelId
      * @param quantity
      * @param recordType
@@ -77,6 +93,22 @@
     }
 
     /**
+     * 鍚堟牸鍏ュ簱锛堜笉瀹℃牳锛�
+     * @param productModelId
+     * @param quantity
+     * @param recordType
+     * @param recordId
+     */
+    public void addStockNoReview(Long productModelId, BigDecimal quantity, String recordType,Long recordId) {
+        StockInventoryDto stockInventoryDto = new StockInventoryDto();
+        stockInventoryDto.setRecordId(recordId);
+        stockInventoryDto.setRecordType(String.valueOf(recordType));
+        stockInventoryDto.setQualitity(quantity);
+        stockInventoryDto.setProductModelId(productModelId);
+        stockInventoryService.addstockInventoryNoReview(stockInventoryDto);
+    }
+
+    /**
      * 鍚堟牸鍑哄簱
      * @param productModelId
      * @param quantity
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductProcessRouteItem.java b/src/main/java/com/ruoyi/production/pojo/ProductProcessRouteItem.java
index d84a7ce..4341ed8 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductProcessRouteItem.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductProcessRouteItem.java
@@ -6,6 +6,9 @@
 
 import java.time.LocalDateTime;
 
+/**
+ * 宸ヨ壓璺嚎璇︽儏
+ */
 @Data
 @TableName("product_process_route_item")
 public class ProductProcessRouteItem {
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 13d7ccb..b3f75b0 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -119,7 +119,6 @@
                 Object maxNoObj = result.get("maxNo");
                 if (maxNoObj != null) {
                     String lastNo = maxNoObj.toString();
-                    System.out.println("lastNo: " + lastNo);
                     if (lastNo.startsWith(datePrefix)) {
                         try {
                             String seqStr = lastNo.substring(datePrefix.length());
@@ -167,10 +166,10 @@
         productionProductOutputMapper.insert(productionProductOutput);
         //鍚堟牸鏁伴噺=鎶ュ伐鏁伴噺-鎶ュ簾鏁伴噺
         BigDecimal productQty = productionProductOutput.getQuantity().subtract(productionProductOutput.getScrapQty());
+        List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId()));
         //鍙湁鍚堟牸鏁伴噺>0鎵嶈兘澧炲姞鐩稿簲鏁版嵁
         if (productQty.compareTo(BigDecimal.ZERO) > 0) {
             /*鏂板璐ㄦ*/
-            List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId()));
             if (productProcessRouteItem.getIsQuality()) {
                 //瀵瑰簲鐨勮繃绋嬫鎴栬�呭嚭鍘傛
                 int inspectType = 1;
@@ -209,7 +208,14 @@
                 }
             }else {
                 //鐩存帴鍏ュ簱
-                stockUtils.addStock(productProcessRouteItem.getProductModelId(), productQty, StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId());
+                //鏈�鍚庝竴閬撳伐搴忎负鎴愬搧
+                if (productProcessRouteItem.getDragSort() == productProcessRouteItems.size()) {
+                    //鎴愬搧瀹℃牳
+                    stockUtils.addStock(productProcessRouteItem.getProductModelId(), productQty, StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId());
+                }else {
+                    //鍗婃垚鍝佷笉瀹℃牳
+                    stockUtils.addStockNoReview(productProcessRouteItem.getProductModelId(), productQty, StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId());
+                }
             }
             /*鏇存柊宸ュ崟鍜岀敓浜ц鍗�*/
             ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectById(dto.getWorkOrderId());
@@ -250,7 +256,11 @@
         //濡傛灉鎶ュ簾鏁伴噺>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());
+                if (productProcessRouteItem.getDragSort() == productProcessRouteItems.size()){
+                    stockUtils.addUnStock(productModel.getId(), dto.getScrapQty(), StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId());
+                }else {
+                    stockUtils.addUnStockNoReview(productModel.getId(), dto.getScrapQty(), StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId());
+                }
             }
         }
         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 ed6c4cf..5bccd00 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -96,8 +96,16 @@
             qualityUnqualified.setInspectId(qualityInspect.getId());
             qualityUnqualifiedMapper.insert(qualityUnqualified);
         } else {
-            //鍚堟牸鐩存帴鍏ュ簱
-            stockUtils.addStock(qualityInspect.getProductModelId(), qualityInspect.getQuantity(), StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode(), qualityInspect.getId());
+            //鍚堟牸鍏ュ簱
+            Integer inspectType = qualityInspect.getInspectType();
+            //鐢熶骇鎴愬搧娣诲姞瀹℃牳娴佺▼锛屽崐鎴愬搧涓嶅鏍�
+            if (inspectType != null && inspectType.equals(2)) {
+                stockUtils.addStock(qualityInspect.getProductModelId(), qualityInspect.getQuantity(),
+                        StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode(), qualityInspect.getId());
+            } else {
+                stockUtils.addStockNoReview(qualityInspect.getProductModelId(), qualityInspect.getQuantity(),
+                        StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode(), qualityInspect.getId());
+            }
         }
         qualityInspect.setInspectState(1);//宸叉彁浜�
         return qualityInspectMapper.updateById(qualityInspect);
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 1650690..c1fdff7 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
@@ -8,7 +8,6 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
-import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
 import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum;
 import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
@@ -17,7 +16,10 @@
 import com.ruoyi.production.mapper.ProductProcessRouteMapper;
 import com.ruoyi.production.mapper.ProductWorkOrderMapper;
 import com.ruoyi.production.mapper.ProductionProductMainMapper;
-import com.ruoyi.production.pojo.*;
+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.service.ProductOrderService;
 import com.ruoyi.quality.mapper.QualityUnqualifiedMapper;
 import com.ruoyi.quality.pojo.QualityInspect;
@@ -127,11 +129,21 @@
                     break;
                 case "鎶ュ簾":
                     //璋冪敤涓嶅悎鏍煎簱瀛樻帴鍙� 鍏ヤ笉鍚堟牸搴�
-                    stockUtils.addUnStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId());
+                    // 2 鏄垚鍝�-闇�瑕佸鏍� 1 鏄崐鎴愬搧-涓嶉渶瑕佸鏍�
+                    if (qualityInspect.getInspectType().equals(2)) {
+                        stockUtils.addUnStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId());
+                    } else {
+                        stockUtils.addUnStockNoReview(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId());
+                    }
                     break;
                 case "璁╂鏀捐":
                     //璋冪敤鎻愪氦鍚堟牸鐨勬帴鍙�
-                    stockUtils.addStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId());
+                    // 2 鏄垚鍝�-闇�瑕佸鏍� 1 鏄崐鎴愬搧-涓嶉渶瑕佸鏍�
+                    if (qualityInspect.getInspectType().equals(2)) {
+                        stockUtils.addStockNoReview(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId());
+                    } else {
+                        stockUtils.addStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId());
+                    }
                     break;
                 default:
                     break;
@@ -142,11 +154,11 @@
             switch (qualityUnqualified.getDealResult()) {
                 case "鎶ュ簾":
                     //璋冪敤涓嶅悎鏍煎簱瀛樻帴鍙� 鍏ヤ笉鍚堟牸搴�
-                    stockUtils.addUnStock(modelId, unqualified.getQuantity(), StockInUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId());
+                    stockUtils.addUnStockNoReview(modelId, unqualified.getQuantity(), StockInUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId());
                     break;
                 case "璁╂鏀捐":
                     //璋冪敤鎻愪氦鍚堟牸鐨勬帴鍙�
-                    stockUtils.addStock(modelId, unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId());
+                    stockUtils.addStockNoReview(modelId, unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId());
                     break;
                 default:
                     break;
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
index 3a42fc7..fe3e20b 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -24,20 +24,18 @@
 import com.ruoyi.other.mapper.TempFileMapper;
 import com.ruoyi.other.pojo.TempFile;
 import com.ruoyi.production.mapper.*;
-import com.ruoyi.production.pojo.*;
 import com.ruoyi.production.service.ProductionProductMainService;
-import com.ruoyi.production.service.impl.ProductionProductMainServiceImpl;
 import com.ruoyi.project.system.domain.SysDept;
 import com.ruoyi.project.system.domain.SysUser;
 import com.ruoyi.project.system.mapper.SysDeptMapper;
 import com.ruoyi.project.system.mapper.SysUserMapper;
 import com.ruoyi.quality.mapper.QualityInspectMapper;
-import com.ruoyi.quality.pojo.QualityInspect;
 import com.ruoyi.sales.dto.*;
 import com.ruoyi.sales.mapper.*;
 import com.ruoyi.sales.pojo.*;
-import com.ruoyi.sales.service.ISalesLedgerProductService;
 import com.ruoyi.sales.service.ISalesLedgerService;
+import com.ruoyi.stock.dto.StockInventoryDto;
+import com.ruoyi.stock.mapper.StockInventoryMapper;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.io.FilenameUtils;
@@ -129,6 +127,9 @@
     private final ProductionProductInputMapper productionProductInputMapper;
 
     private final QualityInspectMapper qualityInspectMapper;
+
+    private final StockInventoryMapper stockInventoryMapper;
+
 
     @Autowired
     private SysDeptMapper sysDeptMapper;
@@ -708,9 +709,26 @@
         List<SalesLedgerProduct> updateList = partitionedProducts.get(true);
         List<SalesLedgerProduct> insertList = partitionedProducts.get(false);
 
+        List<StockInventoryDto> stockInventoryDtos = stockInventoryMapper.selectProductList();
+
         // 鎵ц鏇存柊鎿嶄綔
         if (!updateList.isEmpty()) {
             for (SalesLedgerProduct product : updateList) {
+                // 鏌ヨ搴撳瓨鏁伴噺
+                SalesLedgerProduct oldProduct = salesLedgerProductMapper.selectById(product.getId());
+                BigDecimal quantityChange = product.getQuantity().subtract(oldProduct.getQuantity());
+
+                // 濡傛灉鏁伴噺澧炲姞浜嗭紝妫�鏌ュ簱瀛�
+                if (quantityChange.compareTo(BigDecimal.ZERO) > 0) {
+                    for (StockInventoryDto stockInventoryDto : stockInventoryDtos) {
+                        if (stockInventoryDto.getProductId().equals(product.getId())) {
+                            if (quantityChange.compareTo(stockInventoryDto.getQualitity()) > 0) {
+                                throw new RuntimeException("搴撳瓨涓嶈冻");
+                            }
+                            break;
+                        }
+                    }
+                }
                 product.setType(type);
                 salesLedgerProductMapper.updateById(product);
             }
@@ -718,13 +736,18 @@
         // 鎵ц鎻掑叆鎿嶄綔
         if (!insertList.isEmpty()) {
             for (SalesLedgerProduct salesLedgerProduct : insertList) {
+                for (StockInventoryDto stockInventoryDto : stockInventoryDtos) {
+                    if (stockInventoryDto.getProductId().equals(salesLedgerProduct.getId())) {
+                        if (salesLedgerProduct.getQuantity().compareTo(stockInventoryDto.getQualitity()) > 0) {
+                            throw new RuntimeException("搴撳瓨涓嶈冻");
+                        }
+                    }
+                }
                 salesLedgerProduct.setType(type);
                 salesLedgerProduct.setNoInvoiceNum(salesLedgerProduct.getQuantity());
                 salesLedgerProduct.setNoInvoiceAmount(salesLedgerProduct.getTaxInclusiveTotalPrice());
                 salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice());
                 salesLedgerProductMapper.insert(salesLedgerProduct);
-                // 娣诲姞鐢熶骇鏁版嵁
-                salesLedgerProductServiceImpl.addProductionData(salesLedgerProduct);
             }
         }
     }
diff --git a/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java b/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
index 125b52b..bfa6fe7 100644
--- a/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
+++ b/src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
@@ -39,4 +39,7 @@
     private BigDecimal currentStock;
 
     private BigDecimal  unLockedQuantity;
+
+    //浜у搧id
+    private Long productId;
 }
diff --git a/src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java b/src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java
index 0d345df..21fffd4 100644
--- a/src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java
+++ b/src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java
@@ -49,4 +49,6 @@
     List<Map<String, Object>> selectDailyStockOutCounts(@Param("rootCategoryId") Long rootCategoryId, @Param("startDate") String startDate, @Param("endDate") String endDate);
 
     BigDecimal selectTotalByDate(@Param("now") LocalDate now);
+
+    List<StockInventoryDto> selectProductList();
 }
diff --git a/src/main/java/com/ruoyi/stock/service/StockInventoryService.java b/src/main/java/com/ruoyi/stock/service/StockInventoryService.java
index eb33f03..f7b1b17 100644
--- a/src/main/java/com/ruoyi/stock/service/StockInventoryService.java
+++ b/src/main/java/com/ruoyi/stock/service/StockInventoryService.java
@@ -44,4 +44,6 @@
     void updateOrCreateStockInventory(StockInRecord stockInRecord);
 
     void addApproveByPurchase(LoginUser loginUser, StockInRecordDto stockInRecordDto,Long id) throws Exception;
+
+    Boolean addstockInventoryNoReview(StockInventoryDto stockInventoryDto);
 }
diff --git a/src/main/java/com/ruoyi/stock/service/StockUninventoryService.java b/src/main/java/com/ruoyi/stock/service/StockUninventoryService.java
index 92fc0ab..4e0eef5 100644
--- a/src/main/java/com/ruoyi/stock/service/StockUninventoryService.java
+++ b/src/main/java/com/ruoyi/stock/service/StockUninventoryService.java
@@ -33,4 +33,6 @@
     Boolean thawStock(StockInventoryDto stockInventoryDto);
 
     void updateOrCreateStockUninventory(StockInRecord stockInRecord);
+
+    Integer addStockUninventoryNoReview(StockUninventoryDto stockUninventoryDto);
 }
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
index ec7a12c..85bf8bd 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
@@ -147,6 +147,36 @@
         }
     }
 
+    //鍗婃垚鍝佺洿鎺ュ叆搴�
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean addstockInventoryNoReview(StockInventoryDto stockInventoryDto) {
+        //鏂板鍏ュ簱璁板綍鍐嶆坊鍔犲簱瀛�
+        StockInRecordDto stockInRecordDto = new StockInRecordDto();
+        stockInRecordDto.setRecordId(stockInventoryDto.getRecordId());
+        stockInRecordDto.setRecordType(stockInventoryDto.getRecordType());
+        stockInRecordDto.setStockInNum(stockInventoryDto.getQualitity());
+        stockInRecordDto.setProductModelId(stockInventoryDto.getProductModelId());
+        stockInRecordDto.setType("0");
+        stockInRecordService.add(stockInRecordDto);
+        //鍐嶈繘琛屾柊澧炲簱瀛樻暟閲忓簱瀛�
+        //鍏堟煡璇㈠簱瀛樿〃涓殑浜у搧鏄惁瀛樺湪锛屼笉瀛樺湪鏂板锛屽瓨鍦ㄦ洿鏂�
+        StockInventory oldStockInventory = stockInventoryMapper.selectOne(new QueryWrapper<StockInventory>().lambda().eq(StockInventory::getProductModelId, stockInventoryDto.getProductModelId()));
+        if (ObjectUtils.isEmpty(oldStockInventory)) {
+            StockInventory newStockInventory = new StockInventory();
+            newStockInventory.setProductModelId(stockInventoryDto.getProductModelId());
+            newStockInventory.setQualitity(stockInventoryDto.getQualitity());
+            newStockInventory.setVersion(1);
+            newStockInventory.setRemark(stockInventoryDto.getRemark());
+            newStockInventory.setLockedQuantity(stockInventoryDto.getLockedQuantity());
+            newStockInventory.setWarnNum(stockInventoryDto.getWarnNum());
+            stockInventoryMapper.insert(newStockInventory);
+        }else {
+            stockInventoryMapper.updateAddStockInventory(stockInventoryDto);
+        }
+        return true;
+    }
+
     //鍑哄簱璋冪敤
     @Override
     @Transactional(rollbackFor = Exception.class)
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 6fdef58..7e8a25b 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
@@ -93,6 +93,32 @@
         approveProcessService.addApprove(approveProcessVO);
     }
 
+    @Override
+    public Integer addStockUninventoryNoReview(StockUninventoryDto stockUninventoryDto) {
+        //鏂板鍏ュ簱璁板綍鍐嶆坊鍔犲簱瀛�
+        StockInRecordDto stockInRecordDto = new StockInRecordDto();
+        stockInRecordDto.setRecordId(stockUninventoryDto.getRecordId());
+        stockInRecordDto.setRecordType(stockUninventoryDto.getRecordType());
+        stockInRecordDto.setStockInNum(stockUninventoryDto.getQualitity());
+        stockInRecordDto.setProductModelId(stockUninventoryDto.getProductModelId());
+        stockInRecordDto.setType("1");
+        stockInRecordService.add(stockInRecordDto);
+        //鍐嶈繘琛屾柊澧炲簱瀛樻暟閲忓簱瀛�
+        //鍏堟煡璇㈠簱瀛樿〃涓殑浜у搧鏄惁瀛樺湪锛屼笉瀛樺湪鏂板锛屽瓨鍦ㄦ洿鏂�
+        StockUninventory oldStockUnInventory = stockUninventoryMapper.selectOne(new QueryWrapper<StockUninventory>().lambda().eq(StockUninventory::getProductModelId, stockUninventoryDto.getProductModelId()));
+        if (ObjectUtils.isEmpty(oldStockUnInventory)) {
+            StockUninventory newStockUnInventory = new StockUninventory();
+            newStockUnInventory.setProductModelId(stockUninventoryDto.getProductModelId());
+            newStockUnInventory.setQualitity(stockUninventoryDto.getQualitity());
+            newStockUnInventory.setVersion(1);
+            newStockUnInventory.setRemark(stockUninventoryDto.getRemark());
+            stockUninventoryMapper.insert(newStockUnInventory);
+        }else {
+            stockUninventoryMapper.updateAddStockUnInventory(stockUninventoryDto);
+        }
+        return 1;
+    }
+
     /**
      * 鏇存柊鎴栧垱寤洪潪鑹搧搴撳瓨淇℃伅
      *
diff --git a/src/main/resources/mapper/stock/StockInRecordMapper.xml b/src/main/resources/mapper/stock/StockInRecordMapper.xml
index 1dd3a52..11a01a0 100644
--- a/src/main/resources/mapper/stock/StockInRecordMapper.xml
+++ b/src/main/resources/mapper/stock/StockInRecordMapper.xml
@@ -5,29 +5,32 @@
     <select id="listPage" resultType="com.ruoyi.stock.dto.StockInRecordDto">
         SELECT
         sir.*,
-        p.product_name as product_name,
+        p.product_name AS product_name,
         pm.model,
         pm.unit,
-        u.nick_name as createBy
-        FROM stock_in_record as sir
-        LEFT JOIN product_model as pm on sir.product_model_id = pm.id
-        LEFT JOIN product as p on pm.product_id = p.id
-        LEFT JOIN sys_user as u on sir.create_user = u.user_id
+        u.nick_name AS createBy
+        FROM
+        stock_in_record AS sir
+        LEFT JOIN product_model AS pm ON sir.product_model_id = pm.id
+        LEFT JOIN product AS p ON pm.product_id = p.id
+        LEFT JOIN product p2 ON p.parent_id = p2.id AND p2.product_name != '鍗婃垚鍝�'
+        LEFT JOIN sys_user AS u ON sir.create_user = u.user_id
         <where>
             <if test="params.timeStr != null and params.timeStr != ''">
-                and sir.create_time like concat('%',#{params.timeStr},'%')
+                AND sir.create_time LIKE CONCAT('%', #{params.timeStr}, '%')
             </if>
             <if test="params.productName != null and params.productName != ''">
-                and p.product_name like concat('%',#{params.productName},'%')
+                AND p.product_name LIKE CONCAT('%', #{params.productName}, '%')
             </if>
             <if test="params.type != null and params.type != ''">
-                and sir.type = #{params.type}
+                AND sir.type = #{params.type}
             </if>
             <if test="params.recordType != null and params.recordType != ''">
-                and sir.record_type = #{params.recordType}
+                AND sir.record_type = #{params.recordType}
             </if>
         </where>
-        order by sir.id desc
+        ORDER BY
+        sir.id DESC
     </select>
     <select id="listStockInRecordExportData" resultType="com.ruoyi.stock.execl.StockInRecordExportData">
         SELECT
diff --git a/src/main/resources/mapper/stock/StockInventoryMapper.xml b/src/main/resources/mapper/stock/StockInventoryMapper.xml
index 9db56f9..abdf94f 100644
--- a/src/main/resources/mapper/stock/StockInventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -52,25 +52,30 @@
         where product_model_id = #{ew.productModelId} and qualitity >= #{ew.qualitity}
     </update>
     <select id="pagestockInventory" resultType="com.ruoyi.stock.dto.StockInventoryDto">
-        select si.id,
+        SELECT
+        si.id,
         si.qualitity,
-        COALESCE(si.locked_quantity, 0) as locked_quantity,
+        COALESCE(si.locked_quantity, 0) AS locked_quantity,
         si.product_model_id,
         si.create_time,
         si.update_time,
-        COALESCE(si.warn_num, 0) as warn_num,
+        COALESCE(si.warn_num, 0) AS warn_num,
         si.version,
-        (si.qualitity - COALESCE(si.locked_quantity, 0)) as un_locked_quantity,
+        (si.qualitity - COALESCE(si.locked_quantity, 0)) AS un_locked_quantity,
         pm.model,
         si.remark,
         pm.unit,
-        p.product_name
-        from stock_inventory si
-        left join product_model pm on si.product_model_id = pm.id
-        left join product p on pm.product_id = p.id
-        where 1 = 1
-        <if test="ew.productName != null and ew.productName !=''">
-            and p.product_name like concat('%',#{ew.productName},'%')
+        p.product_name,
+        p.parent_id,
+        p2.product_name AS parent_name
+        FROM stock_inventory si
+        LEFT JOIN product_model pm ON si.product_model_id = pm.id
+        LEFT JOIN product p ON pm.product_id = p.id
+        LEFT JOIN product p2 ON p.parent_id = p2.id
+        WHERE 1 = 1
+        AND (p2.product_name != '鍗婃垚鍝�' OR p2.product_name IS NULL)
+        <if test="ew.productName != null and ew.productName != ''">
+            AND p.product_name LIKE CONCAT('%', #{ew.productName}, '%')
         </if>
     </select>
     <select id="listStockInventoryExportData" resultType="com.ruoyi.stock.execl.StockInventoryExportData">
@@ -236,5 +241,24 @@
         GROUP BY DATE(sor.create_time)
         ORDER BY DATE(sor.create_time) ASC
     </select>
+    <select id="selectProductList" resultType="com.ruoyi.stock.dto.StockInventoryDto">
+        select si.id,
+               si.qualitity,
+               COALESCE(si.locked_quantity, 0) as locked_quantity,
+               si.product_model_id,
+               si.create_time,
+               si.update_time,
+               COALESCE(si.warn_num, 0) as warn_num,
+               si.version,
+               (si.qualitity - COALESCE(si.locked_quantity, 0)) as un_locked_quantity,
+               pm.model,
+               si.remark,
+               pm.unit,
+               p.product_name,
+               p.id as product_id
+        from stock_inventory si
+                 left join product_model pm on si.product_model_id = pm.id
+                 left join product p on pm.product_id = p.id
+    </select>
 
 </mapper>
diff --git a/src/main/resources/mapper/stock/StockOutRecordMapper.xml b/src/main/resources/mapper/stock/StockOutRecordMapper.xml
index a441de9..3366944 100644
--- a/src/main/resources/mapper/stock/StockOutRecordMapper.xml
+++ b/src/main/resources/mapper/stock/StockOutRecordMapper.xml
@@ -27,7 +27,10 @@
         FROM stock_out_record as sor
         LEFT JOIN product_model as pm on sor.product_model_id = pm.id
         LEFT JOIN product as p on pm.product_id = p.id
+        LEFT JOIN product p2 ON p.parent_id = p2.id
         LEFT JOIN sys_user as u on sor.create_user = u.user_id
+        WHERE
+        (p2.product_name != '鍗婃垚鍝�' OR p2.product_name IS NULL)
         <where>
             <if test="params.timeStr != null and params.timeStr != ''">
                 and sor.create_time like concat('%',#{params.timeStr},'%')
diff --git a/src/main/resources/mapper/stock/StockUninventoryMapper.xml b/src/main/resources/mapper/stock/StockUninventoryMapper.xml
index b171ae2..8b7c21a 100644
--- a/src/main/resources/mapper/stock/StockUninventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockUninventoryMapper.xml
@@ -44,22 +44,27 @@
         where product_model_id = #{ew.productModelId}
     </update>
     <select id="pageStockUninventory" resultType="com.ruoyi.stock.dto.StockUninventoryDto">
-        select su.id,
+        SELECT
+        su.id,
         su.qualitity,
-        COALESCE(su.locked_quantity, 0) as locked_quantity,
+        COALESCE(su.locked_quantity, 0) AS locked_quantity,
         su.product_model_id,
         su.create_time,
         su.update_time,
         su.version,
-        su.update_time,
-        (su.qualitity - COALESCE(su.locked_quantity, 0)) as un_locked_quantity,
+        (su.qualitity - COALESCE(su.locked_quantity, 0)) AS un_locked_quantity,
         pm.model,
         pm.unit,
-        p.product_name
-        from stock_uninventory su
-        left join product_model pm on su.product_model_id = pm.id
-        left join product p on pm.product_id = p.id
-        where 1 = 1
+        p.product_name,
+        p2.product_name AS parent_name
+        FROM
+        stock_uninventory su
+        LEFT JOIN product_model pm ON su.product_model_id = pm.id
+        LEFT JOIN product p ON pm.product_id = p.id
+        LEFT JOIN product p2 ON p.parent_id = p2.id
+        WHERE
+        1 = 1
+        AND (p2.product_name != '鍗婃垚鍝�' OR p2.product_name IS NULL)
         <if test="ew.productName != null and ew.productName !=''">
             and p.product_name like concat('%',#{ew.productName},'%')
         </if>

--
Gitblit v1.9.3