From 3ae5f86787af4dca085e3013802c29b20a2a9d20 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期一, 15 九月 2025 09:30:43 +0800
Subject: [PATCH] 供应商erp

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TErpSupplierWarehousingServiceImpl.java |   94 ++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 85 insertions(+), 9 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 63c6b2b..49a3e7b 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
@@ -4,8 +4,11 @@
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.uuid.IdUtils;
+import com.ruoyi.system.dto.OutboundGoodsDto;
+import com.ruoyi.system.dto.OutboundGoodsNextDto;
 import com.ruoyi.system.dto.WarehousingGoodsDto;
 import com.ruoyi.system.dto.WarehousingGoodsNextDto;
 import com.ruoyi.system.mapper.*;
@@ -378,32 +381,43 @@
                 BigDecimal subtract = BigDecimal.ZERO;
             List<TErpSupplierInventoryGoods> tErpSupplierInventoryGoodsList = tErpSupplierInventoryGoods.stream().filter(t -> t.getInventoryId().equals(pageInventoryListVo.getId())).collect(Collectors.toList());
             for (TErpSupplierInventoryGoods tErpSupplierInventoryGoods1 : tErpSupplierInventoryGoodsList) {
+
+
                 if(tErpSupplierInventoryGoods1!=null){
                     // 盘盈 查入库
                     if(tErpSupplierInventoryGoods1.getInventoryType()==1){
                         TErpSupplierWarehousing tErpSupplierWarehousing = erpSupplierWarehousingMapper.selectById(tErpSupplierInventoryGoods1.getWarehousingId());
-                        List<TErpSupplierWarehousingBatch> tErpSupplierWarehousingBatches = erpSupplierWarehousingBatchMapper.selectList(new LambdaQueryWrapper<TErpSupplierWarehousingBatch>().eq(TErpSupplierWarehousingBatch::getWarehousingId, tErpSupplierWarehousing.getId()));
-                        int sum = tErpSupplierWarehousingBatches.stream().mapToInt(TErpSupplierWarehousingBatch::getWarehousingNumber).sum();
+//                        List<TErpSupplierWarehousingBatch> tErpSupplierWarehousingBatches = erpSupplierWarehousingBatchMapper.selectList(new LambdaQueryWrapper<TErpSupplierWarehousingBatch>().eq(TErpSupplierWarehousingBatch::getWarehousingId, tErpSupplierWarehousing.getId()));
+//                        int sum = tErpSupplierWarehousingBatches.stream().mapToInt(TErpSupplierWarehousingBatch::getWarehousingNumber).sum();
                         String goodsId = tErpSupplierWarehousing.getGoodsId();
                         TErpGoods goods = erpGoodsMapper.selectById(goodsId);
-                        BigDecimal multiply = goods.getSalesAmount().multiply(new BigDecimal(sum));
+                        int count = tErpSupplierInventoryGoods1.getInventoryCount() - tErpSupplierInventoryGoods1.getDamagedCount();
+                        BigDecimal multiply = goods.getSalesAmount().multiply(new BigDecimal(count));
                         add = add.add(multiply);
                     }else {
                         // 盘亏 查出库
                         TErpSupplierOutbound tErpSupplierOutbound = erpSupplierOutboundMapper.selectById(tErpSupplierInventoryGoods1.getWarehousingId());
 
                         List<TErpSupplierOutboundGoods> tErpSupplierOutboundGoods = erpSupplierOutboundGoodsMapper.selectList(new LambdaQueryWrapper<TErpSupplierOutboundGoods>().eq(TErpSupplierOutboundGoods::getOutboundId, tErpSupplierOutbound.getId()));
-                        int sum = tErpSupplierOutboundGoods.stream().mapToInt(TErpSupplierOutboundGoods::getOutboundCount).sum();
-                        String goodsId = tErpSupplierOutbound.getGoodsId();
-                        TErpGoods goods = erpGoodsMapper.selectById(goodsId);
-                        BigDecimal multiply = goods.getSalesAmount().multiply(new BigDecimal(sum));
-                        subtract = subtract.add(multiply);
+                        for (TErpSupplierOutboundGoods tErpSupplierOutboundGood : tErpSupplierOutboundGoods) {
+                            TErpSupplierWarehousing tErpSupplierWarehousing = erpSupplierWarehousingMapper.selectById(tErpSupplierOutboundGood.getWarehousingId());
+                            String goodsId = tErpSupplierWarehousing.getGoodsId();
+                            TErpGoods goods = erpGoodsMapper.selectById(goodsId);
+                            int count = tErpSupplierInventoryGoods1.getInventoryCount() - tErpSupplierInventoryGoods1.getDamagedCount();
+                            BigDecimal multiply = goods.getSalesAmount().multiply(new BigDecimal(count));
+                            add = add.add(multiply);
+                        }
+//                        int sum = tErpSupplierOutboundGoods.stream().mapToInt(TErpSupplierOutboundGoods::getOutboundCount).sum();
+//                        String goodsId = tErpSupplierOutbound.getGoodsId();
+//                        TErpGoods goods = erpGoodsMapper.selectById(goodsId);
+//                        BigDecimal multiply = goods.getSalesAmount().multiply(new BigDecimal(sum));
+//                        subtract = subtract.add(multiply);
                     }
                 }
             }
             int size = tErpSupplierInventoryGoodsList.stream().map(TErpSupplierInventoryGoods::getGoodsId).collect(Collectors.toSet()).size();
             pageInventoryListVo.setNum(size);
-            pageInventoryListVo.setTotalPrice(add.subtract(subtract));
+            pageInventoryListVo.setTotalPrice(add);
 
         }
 
@@ -456,4 +470,66 @@
 
         return Collections.emptyList();
     }
+
+    @Override
+    public void outbountGoods(OutboundGoodsDto dto, SysUser user) {
+        Integer roleType = user.getRoleType();
+        String supplierClinicId = null;
+        if(roleType == 4){
+            // 供应商
+            TCrmSupplier crmSupplier = crmSupplierMapper.selectOne(Wrappers.lambdaQuery(TCrmSupplier.class)
+                    .eq(TCrmSupplier::getUserId, user.getUserId())
+                    .last("LIMIT 1"));
+            supplierClinicId =crmSupplier.getId();
+        }
+        if(roleType == 5){
+            // 诊所
+            TCrmClinic crmClinic = crmClinicMapper.selectOne(Wrappers.lambdaQuery(TCrmClinic.class)
+                    .eq(TCrmClinic::getUserId, user.getUserId())
+                    .last("LIMIT 1"));
+            supplierClinicId =crmClinic.getId();
+        }
+        BigDecimal add = new BigDecimal(0);
+        ArrayList<TErpSupplierOutboundGoods> arrayList = new ArrayList<>();
+        // 1 判断库存是否足够  2添加出库记录 3添加出库子记录
+        List<OutboundGoodsNextDto> outboundGoodsNextDtos = dto.getOutboundGoodsNextDtos();
+        for (OutboundGoodsNextDto outboundGoodsNextDto : outboundGoodsNextDtos) {
+            TErpSupplierWarehousingBatch tErpSupplierWarehousingBatch = erpSupplierWarehousingBatchMapper.selectById(outboundGoodsNextDto.getBatchId());
+            List<TErpSupplierOutboundGoods> tErpSupplierOutboundGoods = erpSupplierOutboundGoodsMapper.selectList(new LambdaQueryWrapper<TErpSupplierOutboundGoods>().eq(TErpSupplierOutboundGoods::getWarehousingBatchId, outboundGoodsNextDto.getBatchId()));
+            int sum = tErpSupplierOutboundGoods.stream().mapToInt(TErpSupplierOutboundGoods::getOutboundCount).sum();
+
+            int count = tErpSupplierWarehousingBatch.getWarehousingNumber() - sum;
+            if(count<outboundGoodsNextDto.getNum()){
+                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()));
+
+            TErpSupplierOutboundGoods tErpSupplierOutboundGoods1 = new TErpSupplierOutboundGoods();
+            tErpSupplierOutboundGoods1.setWarehousingId(dto.getWarehouseId());
+            tErpSupplierOutboundGoods1.setWarehousingBatchId(outboundGoodsNextDto.getBatchId());
+            tErpSupplierOutboundGoods1.setOutboundCount(outboundGoodsNextDto.getNum());
+            tErpSupplierOutboundGoods1.setTotalPrice(multiply);
+            arrayList.add(tErpSupplierOutboundGoods1);
+            add  = add.add(multiply);
+        }
+
+        TErpSupplierOutbound tErpSupplierOutbound = new TErpSupplierOutbound();
+        tErpSupplierOutbound.setOutboundType(dto.getOutboundType());
+        tErpSupplierOutbound.setOutboundReason(dto.getOutboundReason());
+        tErpSupplierOutbound.setWarehouseId(dto.getWarehouseId());
+        tErpSupplierOutbound.setSupplierId(supplierClinicId);
+        tErpSupplierOutbound.setTotalMoney(add);
+        String s = DateUtils.dateTimeNow();
+        tErpSupplierOutbound.setOutboundNumber("G" + s);
+        erpSupplierOutboundMapper.insert(tErpSupplierOutbound);
+
+        for (TErpSupplierOutboundGoods tErpSupplierOutboundGoods : arrayList) {
+            tErpSupplierOutboundGoods.setOutboundId(tErpSupplierOutbound.getId());
+            erpSupplierOutboundGoodsMapper.insert(tErpSupplierOutboundGoods);
+        }
+
+
+    }
 }

--
Gitblit v1.7.1