From 294bf52b9e5d844efd17901082d4a1a195572037 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期日, 28 九月 2025 19:03:29 +0800
Subject: [PATCH] 诊所erp

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpSupplierWarehousingServiceImpl.java |   55 ++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 48 insertions(+), 7 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpSupplierWarehousingServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpSupplierWarehousingServiceImpl.java
index 49a3e7b..d7da666 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpSupplierWarehousingServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpSupplierWarehousingServiceImpl.java
@@ -89,6 +89,8 @@
         if(list.isEmpty()){
             return pageInfo;
         }
+
+
         List<String> typeIds = list.stream().map(TErpGoods::getTypeId).collect(Collectors.toList());
         if(!typeIds.isEmpty()){
             List<TErpGoodsType> typeList = erpGoodsTypeMapper.selectBatchIds(typeIds);
@@ -173,6 +175,7 @@
             }
             tErpGoodsWarehouseLastVO.setAllNum(tErpGoodsWarehouseVOS.stream().mapToInt(TErpGoodsWarehouseVO::getNowNum).sum());
             tErpGoodsWarehouseLastVO.setAllTotalPrice(tErpGoodsWarehouseVOS.stream().mapToDouble(TErpGoodsWarehouseVO::getUnitAmount).sum());
+            tErpGoodsWarehouseLastVO.setAllTotalPrice(BigDecimal.valueOf(tErpGoodsWarehouseLastVO.getAllTotalPrice()).setScale(2,RoundingMode.HALF_UP).doubleValue());
             tErpGoodsWarehouseLastVO.setList(tErpGoodsWarehouseVOS);
             tErpGoodsWarehouseLastVO.setWarningInventory(goods.getWarningInventory());
             tErpGoodsWarehouseLastVOS.add(tErpGoodsWarehouseLastVO);
@@ -277,11 +280,14 @@
             tErpSupplierWarehousing.setGoodsId(dto.getGoodsId());
             TErpGoods goods = erpGoodsMapper.selectById(dto.getGoodsId());
             tErpSupplierWarehousing.setGoodsName(goods.getGoodsName());
-            tErpSupplierWarehousing.setGoodsCount(tErpSupplierWarehousing.getGoodsCount());
-            tErpSupplierWarehousing.setUnitAmount(tErpSupplierWarehousing.getUnitAmount());
-            tErpSupplierWarehousing.setTotalPrice(tErpSupplierWarehousing.getTotalPrice());
-            erpSupplierWarehousingMapper.insert(tErpSupplierWarehousing);
+            tErpSupplierWarehousing.setGoodsCount(dto.getWarehousingNum());
+            tErpSupplierWarehousing.setUnitAmount(dto.getPrice());
+            tErpSupplierWarehousing.setTotalPrice(dto.getTotalPrice());
             List<WarehousingGoodsNextDto> warehousingGoodsNextDtos = dto.getWarehousingGoodsNextDtos();
+            int sum = warehousingGoodsNextDtos.stream().mapToInt(WarehousingGoodsNextDto::getWarehousingNum).sum();
+            tErpSupplierWarehousing.setGoodsCount( sum);
+            erpSupplierWarehousingMapper.insert(tErpSupplierWarehousing);
+
             for (WarehousingGoodsNextDto warehousingGoodsNextDto : warehousingGoodsNextDtos) {
                 TErpSupplierWarehousingBatch tErpSupplierWarehousingBatch = new TErpSupplierWarehousingBatch();
                 tErpSupplierWarehousingBatch.setWarehousingId(tErpSupplierWarehousing.getId());
@@ -458,6 +464,41 @@
                     inventoryDetailVo.setInventoryCount(tErpSupplierInventoryGood.getInventoryCount());
                     inventoryDetailVo.setInventoryType(tErpSupplierInventoryGood.getInventoryType());
                     inventoryDetailVo.setDamagedCount(tErpSupplierInventoryGood.getDamagedCount());
+                }else {
+                    TErpSupplierOutbound tErpSupplierOutbound = erpSupplierOutboundMapper.selectById(tErpSupplierInventoryGood.getWarehousingId());
+                    List<TErpSupplierOutboundGoods> tErpSupplierOutboundGoods = erpSupplierOutboundGoodsMapper.selectList(new LambdaQueryWrapper<TErpSupplierOutboundGoods>().eq(TErpSupplierOutboundGoods::getOutboundId, tErpSupplierOutbound.getId()));
+                    for (TErpSupplierOutboundGoods tErpSupplierOutboundGood : tErpSupplierOutboundGoods) {
+                        String warehousingId = tErpSupplierOutboundGood.getWarehousingId();
+                        TErpSupplierWarehousing tErpSupplierWarehousing = erpSupplierWarehousingMapper.selectById(warehousingId);
+                        String goodsId = tErpSupplierWarehousing.getGoodsId();
+                        TErpGoods goods = erpGoodsMapper.selectById(goodsId);
+                        inventoryDetailVo.setGoodsName(goods.getGoodsName());
+                        TErpGoodsUnit tErpGoodsUnit = erpGoodsUnitMapper.selectById(goods.getPackingUnitId());
+                        inventoryDetailVo.setUnitName(tErpGoodsUnit.getUnitName());
+                        inventoryDetailVo.setWarehouseNo(tErpSupplierWarehousing.getWarehouseNo());
+
+                        TErpSupplierOutboundGoods tErpSupplierOutboundGoods2 = erpSupplierOutboundGoodsMapper.selectById(tErpSupplierInventoryGood.getWarehousingBatchId());
+
+                        TErpSupplierWarehousingBatch tErpSupplierWarehousingBatch = erpSupplierWarehousingBatchMapper.selectById(tErpSupplierOutboundGoods2.getWarehousingBatchId());
+                        inventoryDetailVo.setBatchNumber(tErpSupplierWarehousingBatch.getBatchNumber());
+
+
+                        List<TErpSupplierWarehousingBatch> tErpSupplierWarehousingBatches = erpSupplierWarehousingBatchMapper.selectList(new LambdaQueryWrapper<TErpSupplierWarehousingBatch>().eq(TErpSupplierWarehousingBatch::getBatchNumber, tErpSupplierWarehousingBatch.getBatchNumber()));
+                        int sum = tErpSupplierWarehousingBatches.stream().mapToInt(TErpSupplierWarehousingBatch::getWarehousingNumber).sum();
+                        List<String> collect = tErpSupplierWarehousingBatches.stream().map(TErpSupplierWarehousingBatch::getId).collect(Collectors.toList());
+                        if(!collect.isEmpty()){
+                            List<TErpSupplierOutboundGoods> tErpSupplierOutboundGoods1 = erpSupplierOutboundGoodsMapper.selectList(new LambdaQueryWrapper<TErpSupplierOutboundGoods>().eq(TErpSupplierOutboundGoods::getWarehousingBatchId, collect));
+                            int sum1 = tErpSupplierOutboundGoods1.stream().mapToInt(TErpSupplierOutboundGoods::getOutboundCount).sum();
+                            sum = sum-sum1;
+                        }
+
+                        // sum = 剩余库存
+                        inventoryDetailVo.setNowCount(sum);
+                        inventoryDetailVo.setInventoryCount(tErpSupplierInventoryGood.getInventoryCount());
+                        inventoryDetailVo.setInventoryType(tErpSupplierInventoryGood.getInventoryType());
+                        inventoryDetailVo.setDamagedCount(tErpSupplierInventoryGood.getDamagedCount());
+                    }
+
                 }
                 inventoryDetailVos.add(inventoryDetailVo);
 
@@ -503,11 +544,11 @@
                 throw new ServiceException("批次号:"+tErpSupplierWarehousingBatch.getBatchNumber()+"库存不足");
             }
             TErpSupplierWarehousing tErpSupplierWarehousing = erpSupplierWarehousingMapper.selectById(tErpSupplierWarehousingBatch.getWarehousingId());
-            TErpGoods goods = erpGoodsMapper.selectById(tErpSupplierWarehousing.getGoodsId());
-            BigDecimal multiply = goods.getSalesAmount().multiply(BigDecimal.valueOf(outboundGoodsNextDto.getNum()));
+//            TErpGoods goods = erpGoodsMapper.selectById(tErpSupplierWarehousing.getGoodsId());
+            BigDecimal multiply = tErpSupplierWarehousing.getUnitAmount().multiply(BigDecimal.valueOf(outboundGoodsNextDto.getNum()));
 
             TErpSupplierOutboundGoods tErpSupplierOutboundGoods1 = new TErpSupplierOutboundGoods();
-            tErpSupplierOutboundGoods1.setWarehousingId(dto.getWarehouseId());
+            tErpSupplierOutboundGoods1.setWarehousingId(tErpSupplierWarehousing.getId());
             tErpSupplierOutboundGoods1.setWarehousingBatchId(outboundGoodsNextDto.getBatchId());
             tErpSupplierOutboundGoods1.setOutboundCount(outboundGoodsNextDto.getNum());
             tErpSupplierOutboundGoods1.setTotalPrice(multiply);

--
Gitblit v1.7.1