From 3257a0d66eb770cd4a4bba4b48ddf26ec6d6c046 Mon Sep 17 00:00:00 2001
From: yaowanxin <3588231647@qq.com>
Date: 星期三, 14 一月 2026 15:24:16 +0800
Subject: [PATCH] 修改查询库存工具类,增添库存管理-成品库存接口,

---
 src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java    |    8 +++++++-
 src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java    |    2 +-
 src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java          |    3 +++
 src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java |   16 ++++++++++++++++
 src/main/java/com/ruoyi/basic/pojo/ProductModel.java                                     |   11 +++++++++++
 src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java                          |   14 +++++++++++---
 6 files changed, 49 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/ruoyi/basic/pojo/ProductModel.java b/src/main/java/com/ruoyi/basic/pojo/ProductModel.java
index 3997459..d5e0aac 100644
--- a/src/main/java/com/ruoyi/basic/pojo/ProductModel.java
+++ b/src/main/java/com/ruoyi/basic/pojo/ProductModel.java
@@ -5,6 +5,8 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.math.BigDecimal;
+
 @Data
 @TableName("product_model")
 public class ProductModel {
@@ -51,4 +53,13 @@
     @ApiModelProperty(value = "绉熸埛ID")
     @TableField(fill = FieldFill.INSERT)
     private Long tenantId;
+    @TableField(exist = false)
+    @Excel(name = "鍏ュ簱鏁伴噺")
+    private BigDecimal inboundNum;
+    @TableField(exist = false)
+    @Excel(name = "鍑哄簱鏁伴噺")
+    private BigDecimal outboundNum;
+    @TableField(exist = false)
+    @Excel(name = "鍓╀綑搴撳瓨")
+    private BigDecimal stockQuantity;
 }
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
index 1795c15..4a15307 100644
--- a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.basic.pojo.ProductModel;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.aspectj.lang.annotation.Log;
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
@@ -226,5 +227,10 @@
         util.exportExcel(response, customStorages, "鍏ュ簱鍙拌处");
     }
 
-
+    @GetMapping("/listPageProductionStock")
+    @Log(title = "搴撳瓨绠$悊-鎴愬搧搴撳瓨", businessType = BusinessType.OTHER)
+    public AjaxResult listPageProductionStock(Page page) {
+        IPage<ProductModel> result = procurementRecordService.listPageProductionStock(page);
+        return AjaxResult.success(result);
+    }
 }
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
index 8e68c64..9813441 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.basic.pojo.ProductModel;
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.procurementrecord.dto.*;
 import com.ruoyi.procurementrecord.pojo.CustomStorage;
@@ -58,4 +59,6 @@
 
     BigDecimal getProcurementAmount(Long salesProductId);
     InventoryInformationDto getReportList();
+
+    IPage<ProductModel> listPageProductionStock(Page page);
 }
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
index d0399a6..a81c83e 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
@@ -4,6 +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.basic.mapper.ProductModelMapper;
+import com.ruoyi.basic.pojo.ProductModel;
 import com.ruoyi.common.utils.OrderUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
@@ -17,6 +19,7 @@
 import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut;
 import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage;
 import com.ruoyi.procurementrecord.service.ProcurementRecordService;
+import com.ruoyi.procurementrecord.utils.StockUtils;
 import com.ruoyi.project.system.domain.SysUser;
 import com.ruoyi.project.system.mapper.SysUserMapper;
 import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
@@ -48,6 +51,8 @@
     private final ProcurementRecordOutMapper procurementRecordOutMapper;
 
     private final SalesLedgerProductMapper salesLedgerProductMapper;
+    private final StockUtils stockUtils;
+    private final ProductModelMapper productModelMapper;
 
     @Override
     public List<ProcurementDto> listProcurementBySalesLedgerId(ProcurementDto procurementDto) {
@@ -872,5 +877,16 @@
         }
         return procurementPageDtoCopyIPage;
     }
+    @Override
+    public IPage<ProductModel> listPageProductionStock(Page page) {
+        ProductModel productModel = new ProductModel();
+        IPage<ProductModel> iPage = productModelMapper.listPageProductModel(page, productModel);
+        iPage.getRecords().forEach(item -> {
+            item.setInboundNum(stockUtils.getStockQuantity(item.getId()).get("inboundNum"));
+            item.setOutboundNum(stockUtils.getStockQuantity(item.getId()).get("outboundNum"));
+            item.setStockQuantity(stockUtils.getStockQuantity(item.getId()).get("stockQuantity"));
+        });
+        return iPage;
+    }
 
 }
diff --git a/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java b/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
index ce2cbc9..0d61f87 100644
--- a/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
+++ b/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
@@ -6,6 +6,8 @@
 import org.springframework.stereotype.Component;
 
 import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.Map;
 
 @Component
 @RequiredArgsConstructor
@@ -13,12 +15,18 @@
     private final ProcurementRecordOutMapper procurementRecordOutMapper;
     private final ProcurementRecordMapper procurementRecordMapper;
 
-    // 鑾峰彇鍟嗗搧鍓╀綑搴撳瓨
-    public  BigDecimal getStockQuantity(Long productModelId) {
+    // 鑾峰彇鍟嗗搧鍏ュ簱鏁伴噺,鍑哄簱鏁伴噺,鍓╀綑搴撳瓨
+    public Map<String, BigDecimal> getStockQuantity(Long productModelId) {
         // 鍏ュ簱鏁伴噺
         BigDecimal sumQuantity = procurementRecordMapper.getSumQuantity(productModelId);
         // 鍑哄簱鏁伴噺
         BigDecimal outQuantity = procurementRecordOutMapper.getSumQuantity(productModelId);
-        return outQuantity.compareTo(sumQuantity) > 0 ? BigDecimal.ZERO : sumQuantity.subtract(outQuantity);
+        // 鍓╀綑搴撳瓨
+        BigDecimal stockQuantity = outQuantity.compareTo(sumQuantity) > 0 ? BigDecimal.ZERO : sumQuantity.subtract(outQuantity);
+        Map<String, BigDecimal> stockMap = new HashMap<>();
+        stockMap.put("inboundNum", sumQuantity);
+        stockMap.put("outboundNum", outQuantity);
+        stockMap.put("stockQuantity", stockQuantity);
+        return stockMap;
     }
 }
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 046f8c4..482755b 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -189,7 +189,7 @@
             for (ProductStructureDto productStructureDto : productStructureDtos) {
                 ProductModel productModel1 = productModelMapper.selectById(productStructureDto.getProductModelId());
 
-                BigDecimal stockQuantity = stockUtils.getStockQuantity(productModel1.getId());
+                BigDecimal stockQuantity = stockUtils.getStockQuantity(productModel1.getId()).get("stockQuantity");
                 if (!(stockQuantity.compareTo(BigDecimal.ZERO) > 0)) {
                     throw new RuntimeException("搴撳瓨涓嶈冻");
                 }

--
Gitblit v1.9.3