From 1769107c38d40f7d209a48ab7752fe27a81b9709 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期二, 14 四月 2026 17:48:18 +0800
Subject: [PATCH] fix:1.出库台账(删除出库记录查询结果有误)增加批号和供应商 2.出入库不合格管理加批号和供应商 3.发货以及发货记录(部分发货)

---
 src/main/resources/mapper/stock/StockOutRecordMapper.xml                    |    4 +
 src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java |   14 ++++++-
 src/main/resources/mapper/quality/QualityUnqualifiedMapper.xml              |    1 
 src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java   |   10 +++-
 src/main/resources/mapper/stock/StockUninventoryMapper.xml                  |   18 ++++++++-
 src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java             |   19 ++++++++-
 src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java    |   10 +++-
 7 files changed, 62 insertions(+), 14 deletions(-)

diff --git a/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java b/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
index 81125ad..2ded4f0 100644
--- a/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
+++ b/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
@@ -6,6 +6,7 @@
 import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper;
 import com.ruoyi.stock.dto.StockInventoryDto;
 import com.ruoyi.stock.dto.StockUninventoryDto;
+import com.ruoyi.stock.mapper.StockInventoryMapper;
 import com.ruoyi.stock.pojo.StockInRecord;
 import com.ruoyi.stock.pojo.StockOutRecord;
 import com.ruoyi.stock.service.StockInRecordService;
@@ -28,6 +29,7 @@
     private final StockInventoryService stockInventoryService;
     private final StockInRecordService stockInRecordService;
     private final StockOutRecordService stockOutRecordService;
+    private final StockInventoryMapper stockInventoryMapper;
 
     /**
      * 涓嶅悎鏍煎叆搴�
@@ -36,7 +38,7 @@
      * @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) {
         StockUninventoryDto stockUninventoryDto = new StockUninventoryDto();
         stockUninventoryDto.setRecordId(recordId);
         stockUninventoryDto.setRecordType(String.valueOf(recordType));
@@ -52,7 +54,7 @@
      * @param recordType
      * @param recordId
      */
-    public void subtractUnStock(Long productModelId, BigDecimal quantity, Integer recordType, Long recordId) {
+    public void subtractUnStock(Long productModelId, BigDecimal quantity, Integer recordType,Long recordId) {
         StockUninventoryDto stockUninventoryDto = new StockUninventoryDto();
         stockUninventoryDto.setRecordId(recordId);
         stockUninventoryDto.setRecordType(String.valueOf(recordType));
@@ -114,8 +116,13 @@
         if (ObjectUtils.isNotEmpty(one)) {
             stockInRecordService.batchDelete(Collections.singletonList(one.getId()));
         }
+        //灏嗗簱瀛樺噺鍥炴潵
+        StockInventoryDto stockInventoryDto = new StockInventoryDto();
+        stockInventoryDto.setRecordId(recordId);
+        stockInventoryDto.setRecordType(recordType);
+        stockInventoryDto.setQualitity(one.getStockInNum());
+        stockInventoryMapper.updateSubtractStockInventory((stockInventoryDto));
     }
-
     public void deleteStockOutRecord(Long recordId, String recordType) {
         StockOutRecord one = stockOutRecordService.getOne(new QueryWrapper<StockOutRecord>()
                 .lambda().eq(StockOutRecord::getRecordId, recordId)
@@ -123,5 +130,11 @@
         if (ObjectUtils.isNotEmpty(one)) {
             stockOutRecordService.batchDelete(Collections.singletonList(one.getId()));
         }
+        //灏嗗簱瀛樺姞鍥炴潵
+        StockInventoryDto stockInventoryDto = new StockInventoryDto();
+        stockInventoryDto.setRecordId(recordId);
+        stockInventoryDto.setRecordType(recordType);
+        stockInventoryDto.setQualitity(one.getStockOutNum());
+        stockInventoryMapper.updateAddStockInventory((stockInventoryDto));
     }
 }
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
index 30e545f..ce332c3 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -4,8 +4,8 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
 import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
 import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.EnumUtil;
 import com.ruoyi.common.utils.OrderUtils;
@@ -73,7 +73,9 @@
         for (Long id : ids) {
             StockInRecord stockInRecord = stockInRecordMapper.selectById(id);
             if (stockInRecord.getType().equals("0")) {
-                StockInventory stockInventory = stockInventoryMapper.selectOne(new LambdaQueryWrapper<StockInventory>().eq(StockInventory::getProductModelId, stockInRecord.getProductModelId()));
+                StockInventory stockInventory = stockInventoryMapper.selectOne(new LambdaQueryWrapper<StockInventory>().eq(StockInventory::getProductModelId, stockInRecord.getProductModelId())
+                        .eq(StockInventory::getBatchNo, stockInRecord.getBatchNo())
+                        .eq(StockInventory::getCustomer, stockInRecord.getCustomer()));
                 if (stockInventory == null) {
                     throw new BaseException("搴撳瓨璁板綍涓病鏈夊搴旂殑浜у搧,鏃犳硶鍒犻櫎!!!");
                 }else {
@@ -83,7 +85,9 @@
                     stockInventoryMapper.updateSubtractStockInventory(stockInRecordDto);
                 }
             }else if (stockInRecord.getType().equals("1")) {
-                StockUninventory stockUninventory = stockUninventoryMapper.selectOne(new LambdaQueryWrapper<StockUninventory>().eq(StockUninventory::getProductModelId, stockInRecord.getProductModelId()));
+                StockUninventory stockUninventory = stockUninventoryMapper.selectOne(new LambdaQueryWrapper<StockUninventory>().eq(StockUninventory::getProductModelId, stockInRecord.getProductModelId())
+                        .eq(StockUninventory::getBatchNo, stockInRecord.getBatchNo())
+                        .eq(StockUninventory::getCustomer, stockInRecord.getCustomer()));
                 if (stockUninventory == null) {
                     throw new BaseException("搴撳瓨璁板綍涓病鏈夊搴旂殑浜у搧,鏃犳硶鍒犻櫎!!!");
                 }else {
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
index e01fe5d..877d22e 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
@@ -4,8 +4,8 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
 import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
 import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.EnumUtil;
 import com.ruoyi.common.utils.OrderUtils;
@@ -76,7 +76,9 @@
         for (Long id : ids) {
             StockOutRecord stockOutRecord = stockOutRecordMapper.selectById(id);
             if (stockOutRecord.getType().equals("0")) {
-                StockInventory stockInventory = stockInventoryMapper.selectOne(new LambdaQueryWrapper<StockInventory>().eq(StockInventory::getProductModelId, stockOutRecord.getProductModelId()));
+                StockInventory stockInventory = stockInventoryMapper.selectOne(new LambdaQueryWrapper<StockInventory>().eq(StockInventory::getProductModelId, stockOutRecord.getProductModelId())
+                        .eq(StockInventory::getBatchNo, stockOutRecord.getBatchNo())
+                        .eq(StockInventory::getCustomer, stockOutRecord.getCustomer()));
                 if (stockInventory == null) {
                     throw new BaseException("搴撳瓨璁板綍涓病鏈夊搴旂殑浜у搧,鏃犳硶鍒犻櫎!!!");
                 }else {
@@ -86,7 +88,9 @@
                     stockInventoryMapper.updateAddStockInventory(stockInRecordDto);
                 }
             }else if (stockOutRecord.getType().equals("1")) {
-                StockUninventory stockUninventory = stockUninventoryMapper.selectOne(new LambdaQueryWrapper<StockUninventory>().eq(StockUninventory::getProductModelId, stockOutRecord.getProductModelId()));
+                StockUninventory stockUninventory = stockUninventoryMapper.selectOne(new LambdaQueryWrapper<StockUninventory>().eq(StockUninventory::getProductModelId, stockOutRecord.getProductModelId())
+                        .eq(StockUninventory::getBatchNo, stockOutRecord.getBatchNo())
+                        .eq(StockUninventory::getCustomer, stockOutRecord.getCustomer()));
                 if (stockUninventory == null) {
                     throw new BaseException("搴撳瓨璁板綍涓病鏈夊搴旂殑浜у搧,鏃犳硶鍒犻櫎!!!");
                 }else {
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 2d5b8f5..14372dc 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockUninventoryServiceImpl.java
@@ -53,17 +53,23 @@
         stockInRecordDto.setRecordType(stockUninventoryDto.getRecordType());
         stockInRecordDto.setStockInNum(stockUninventoryDto.getQualitity());
         stockInRecordDto.setProductModelId(stockUninventoryDto.getProductModelId());
+        stockInRecordDto.setBatchNo(stockUninventoryDto.getBatchNo());
+        stockInRecordDto.setCustomer(stockUninventoryDto.getCustomer());
         stockInRecordDto.setType("1");
         stockInRecordService.add(stockInRecordDto);
         //鍐嶈繘琛屾柊澧炲簱瀛樻暟閲忓簱瀛�
         //鍏堟煡璇㈠簱瀛樿〃涓殑浜у搧鏄惁瀛樺湪锛屼笉瀛樺湪鏂板锛屽瓨鍦ㄦ洿鏂�
-        StockUninventory oldStockUnInventory = stockUninventoryMapper.selectOne(new QueryWrapper<StockUninventory>().lambda().eq(StockUninventory::getProductModelId, stockUninventoryDto.getProductModelId()));
+        StockUninventory oldStockUnInventory = stockUninventoryMapper.selectOne(new QueryWrapper<StockUninventory>().lambda().eq(StockUninventory::getProductModelId, stockUninventoryDto.getProductModelId())
+                .eq(StockUninventory::getBatchNo, stockUninventoryDto.getBatchNo())
+                .eq(StockUninventory::getCustomer, stockUninventoryDto.getCustomer()));
         if (ObjectUtils.isEmpty(oldStockUnInventory)) {
             StockUninventory newStockUnInventory = new StockUninventory();
             newStockUnInventory.setProductModelId(stockUninventoryDto.getProductModelId());
             newStockUnInventory.setQualitity(stockUninventoryDto.getQualitity());
             newStockUnInventory.setVersion(1);
             newStockUnInventory.setRemark(stockUninventoryDto.getRemark());
+            newStockUnInventory.setBatchNo(stockUninventoryDto.getBatchNo());
+            newStockUnInventory.setCustomer(stockUninventoryDto.getCustomer());
             stockUninventoryMapper.insert(newStockUnInventory);
         }else {
             stockUninventoryMapper.updateAddStockUnInventory(stockUninventoryDto);
@@ -81,9 +87,13 @@
         stockOutRecordDto.setRecordType(stockUninventoryDto.getRecordType());
         stockOutRecordDto.setStockOutNum(stockUninventoryDto.getQualitity());
         stockOutRecordDto.setProductModelId(stockUninventoryDto.getProductModelId());
+        stockOutRecordDto.setBatchNo(stockUninventoryDto.getBatchNo());
+        stockOutRecordDto.setCustomer(stockUninventoryDto.getCustomer());
         stockOutRecordDto.setType("1");
         stockOutRecordService.add(stockOutRecordDto);
-        StockUninventory oldStockInventory = stockUninventoryMapper.selectOne(new QueryWrapper<StockUninventory>().lambda().eq(StockUninventory::getProductModelId, stockUninventoryDto.getProductModelId()));
+        StockUninventory oldStockInventory = stockUninventoryMapper.selectOne(new QueryWrapper<StockUninventory>().lambda().eq(StockUninventory::getProductModelId, stockUninventoryDto.getProductModelId())
+                .eq(StockUninventory::getBatchNo, stockUninventoryDto.getBatchNo())
+                .eq(StockUninventory::getCustomer, stockUninventoryDto.getCustomer()));
         if (ObjectUtils.isEmpty(oldStockInventory)) {
             throw new RuntimeException("浜у搧搴撳瓨涓嶅瓨鍦�");
         }else {
diff --git a/src/main/resources/mapper/quality/QualityUnqualifiedMapper.xml b/src/main/resources/mapper/quality/QualityUnqualifiedMapper.xml
index d7fdb89..52ca178 100644
--- a/src/main/resources/mapper/quality/QualityUnqualifiedMapper.xml
+++ b/src/main/resources/mapper/quality/QualityUnqualifiedMapper.xml
@@ -18,6 +18,7 @@
         qu.deal_time,
         qu.production_date,
         pm.uid_no,
+        pm.batch_no,
         CASE
         WHEN qu.model = pm.id THEN pm.model
         ELSE qu.model
diff --git a/src/main/resources/mapper/stock/StockOutRecordMapper.xml b/src/main/resources/mapper/stock/StockOutRecordMapper.xml
index 306a298..b436f31 100644
--- a/src/main/resources/mapper/stock/StockOutRecordMapper.xml
+++ b/src/main/resources/mapper/stock/StockOutRecordMapper.xml
@@ -24,7 +24,9 @@
         pm.model,
         pm.unit,
         pm.uid_no as uidNo,
-        u.nick_name as createBy
+        u.nick_name as createBy,
+        sor.batch_no,
+        sor.customer
         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
diff --git a/src/main/resources/mapper/stock/StockUninventoryMapper.xml b/src/main/resources/mapper/stock/StockUninventoryMapper.xml
index b171ae2..11d1819 100644
--- a/src/main/resources/mapper/stock/StockUninventoryMapper.xml
+++ b/src/main/resources/mapper/stock/StockUninventoryMapper.xml
@@ -23,6 +23,12 @@
             <if test="ew.remark != null and ew.remark !=''">
                 remark = #{ew.remark},
             </if>
+            <if test="ew.batchNo != null and ew.batchNo !=''">
+                batch_no = #{ew.batchNo},
+            </if>
+            <if test="ew.customer != null and ew.customer !=''">
+                customer = #{ew.customer},
+            </if>
             update_time = now()
         </set>
         where product_model_id = #{ew.productModelId} and qualitity >= #{ew.qualitity}
@@ -38,6 +44,12 @@
             </if>
             <if test="ew.remark != null and ew.remark !=''">
                 remark = #{ew.remark},
+            </if>
+            <if test="ew.batchNo != null and ew.batchNo !=''">
+                batch_no = #{ew.batchNo},
+            </if>
+            <if test="ew.customer != null and ew.customer !=''">
+                customer = #{ew.customer},
             </if>
             update_time = now()
         </set>
@@ -55,11 +67,13 @@
         (su.qualitity - COALESCE(su.locked_quantity, 0)) as un_locked_quantity,
         pm.model,
         pm.unit,
-        p.product_name
+        p.product_name,
+        su.batch_no,
+        su.customer
         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
+        where su.qualitity != 0
         <if test="ew.productName != null and ew.productName !=''">
             and p.product_name like concat('%',#{ew.productName},'%')
         </if>

--
Gitblit v1.9.3