From 59edc2caf81ad578d95a000cc98a9902fadb4a6c Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期五, 16 一月 2026 16:00:59 +0800
Subject: [PATCH] 库存调整

---
 src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java |   36 +++++++++++++++++++++++++++++++-----
 1 files changed, 31 insertions(+), 5 deletions(-)

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..35ec34c 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
@@ -2,8 +2,11 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 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 +20,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 +52,8 @@
     private final ProcurementRecordOutMapper procurementRecordOutMapper;
 
     private final SalesLedgerProductMapper salesLedgerProductMapper;
+    private final StockUtils stockUtils;
+    private final ProductModelMapper productModelMapper;
 
     @Override
     public List<ProcurementDto> listProcurementBySalesLedgerId(ProcurementDto procurementDto) {
@@ -69,18 +75,18 @@
             List<ProcurementRecordStorage> collect1 = procurementRecordStorages.stream()
                     .filter(procurementRecordStorage -> procurementRecordStorage.getSalesLedgerProductId().equals(dto.getId()))
                     .collect(Collectors.toList());
-            
+
             // 濡傛灉娌℃湁鐩稿叧鐨勫叆搴撹褰曪紝璺宠繃璇ユ潯鏁版嵁
             if(CollectionUtils.isEmpty(collect1)){
                 dto.setQuantity0(dto.getQuantity());
                 continue;
             }
-            
+
             // 璁$畻宸插叆搴撴暟閲忔�诲拰锛屽苟璁剧疆寰呭叆搴撴暟閲�
             BigDecimal totalInboundNum = collect1.stream()
                     .map(ProcurementRecordStorage::getInboundNum)
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
-            
+
             // 寰呭叆搴撴暟閲� = 鎬绘暟閲� - 宸插叆搴撴暟閲�
             dto.setQuantity0(dto.getQuantity().subtract(totalInboundNum));
         }
@@ -606,7 +612,7 @@
         List<ProcurementRecordOut> recordOutList = procurementRecordOutMapper.selectList(queryWrapper);
 
         // 2. 鎸塖alesLedgerProductId鍒嗙粍锛岀粺璁℃瘡涓猧d瀵瑰簲鐨勫凡鍑哄簱鏁伴噺鎬诲拰-宸插嚭搴撴暟閲�
-        Map<Integer, BigDecimal> storageIdToTotalOutNumMap = recordOutList.stream()
+        Map<Long, BigDecimal> storageIdToTotalOutNumMap = recordOutList.stream()
                 .collect(Collectors.groupingBy(
                         ProcurementRecordOut::getSalesLedgerProductId,
                         Collectors.reducing(
@@ -758,7 +764,10 @@
             procurementRecordLambdaQueryWrapper.eq(ProcurementRecordStorage::getSalesLedgerProductId, detail.getId())
                     .eq(ProcurementRecordStorage::getType, procurementDto.getType());
             Long aLong = procurementRecordMapper.selectCount(procurementRecordLambdaQueryWrapper);
-
+            SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(detail.getId());
+            if (ObjectUtils.isNull(detail.getProductModelId())){
+                detail.setProductModelId(salesLedgerProduct.getProductModelId());
+            }
             ProcurementRecordStorage.ProcurementRecordStorageBuilder procurementRecordBuilder = ProcurementRecordStorage.builder()
                     .salesLedgerProductId(detail.getId())
                     .inboundBatches(aLong.equals(0L) ? "绗�1鎵规("+ procurementDto.getTypeName() +")" : "绗�"+ (aLong + 1) + "鎵规(" + procurementDto.getTypeName() + ")" )
@@ -872,5 +881,22 @@
         }
         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;
+    }
+
+    @Override
+    public IPage<ProcurementPageDto> listPageByProductProduction(Page page, ProcurementPageDto procurementDto) {
+        IPage<ProcurementPageDto> procurementPageDtoIPage = procurementRecordMapper.listPageByProductProduction(page, procurementDto);
+        return procurementPageDtoIPage;
+    }
 
 }

--
Gitblit v1.9.3