From 508f3e225df87e0da974424981e7782fc5ce875c Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期一, 19 五月 2025 14:21:39 +0800
Subject: [PATCH] 修改

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderStockServiceImpl.java |  197 ++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 155 insertions(+), 42 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderStockServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderStockServiceImpl.java
index 156ac73..c51cb1b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderStockServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderStockServiceImpl.java
@@ -6,17 +6,15 @@
 import com.ruoyi.common.constant.OrderNumConstants;
 import com.ruoyi.common.utils.CodeGenerateUtils;
 import com.ruoyi.common.utils.DateUtils;
-import com.ruoyi.system.domain.TOrderSaleGoods;
-import com.ruoyi.system.domain.TOrderStock;
-import com.ruoyi.system.domain.TOrderStockGoods;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.system.domain.*;
 import com.ruoyi.system.dto.TOrderSaleDTO;
 import com.ruoyi.system.dto.TOrderStockDTO;
-import com.ruoyi.system.mapper.TOrderStockMapper;
+import com.ruoyi.system.mapper.*;
 import com.ruoyi.system.query.TDataGeneratorQuery;
 import com.ruoyi.system.query.TDataGeneratorStockQuery;
 import com.ruoyi.system.query.TOrderStockQuery;
-import com.ruoyi.system.service.TOrderStockGoodsService;
-import com.ruoyi.system.service.TOrderStockService;
+import com.ruoyi.system.service.*;
 import com.ruoyi.system.vo.TDataGeneratorVO;
 import com.ruoyi.system.vo.TOrderStockVO;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,10 +22,9 @@
 import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -43,6 +40,16 @@
 
     @Autowired
     private TOrderStockGoodsService tOrderStockGoodsService;
+    @Autowired
+    private TOrderSaleMapper orderSaleMapper;
+    @Autowired
+    private TOrderSaleGoodsService orderSaleGoodsService;
+    @Autowired
+    private TStockDataSetService stockDataSetService;
+    @Autowired
+    private TDataGeneratorMapper dataGeneratorMapper;
+    @Autowired
+    private TGoodsService goodsService;
     @Override
     public void add(TOrderStockDTO dto) {
         // 进货单号
@@ -50,12 +57,24 @@
         List<TOrderStockGoods> orderStockGoods = dto.getOrderStockGoods();
 //        BigDecimal sum = orderStockGoods.stream().map(TOrderStockGoods::getStockPrice).reduce(BigDecimal::add).get();
 //        dto.setStockTotalPrice(sum);
+        if(dto.getIsGenerator().equals(2)){
+            dto.setIsCover(0);
+        }
         this.save(dto);
-        // 添加商品
+        List<TGoods> goods = goodsService.list(Wrappers.lambdaQuery(TGoods.class).eq(TGoods::getShopId,dto.getShopId()));
+        List<TGoods> goodsUpdateList = new ArrayList<>();
+                // 添加商品
         orderStockGoods.forEach(orderSaleGoods1 -> {
             orderSaleGoods1.setId(null);
             orderSaleGoods1.setOrderId(dto.getId());
+            for (TGoods good : goods) {
+                if(good.getGoodsNum().equals(orderSaleGoods1.getGoodsNum())){
+                    good.setInventory(orderSaleGoods1.getStockCount()+good.getInventory());
+                    goodsUpdateList.add(good);
+                }
+            }
         });
+        goodsService.updateBatchById(goodsUpdateList);
         tOrderStockGoodsService.saveBatch(orderStockGoods);
     }
 
@@ -78,35 +97,36 @@
 
     @Override
     public PageInfo<TOrderStockVO> pageList(TOrderStockQuery query) {
-
-        // 判断时间
-        if(Objects.nonNull(query.getTimeType())){
-            LocalDateTime startTime = null;
-            LocalDateTime endTime = null;
-            switch (query.getTimeType()){
-                case 1:
-                    // 今日
-                    startTime = DateUtils.getDayStart(LocalDateTime.now());
-                    endTime = DateUtils.getDayEnd(LocalDateTime.now());
-                    break;
-                case 2:
-                    // 昨日
-                    startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(1));
-                    endTime = DateUtils.getDayEnd(LocalDateTime.now().minusDays(1));
-                    break;
-                case 3:
-                    // 近7天
-                    startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(7));
-                    endTime = DateUtils.getDayEnd(LocalDateTime.now());
-                    break;
-                case 4:
-                    // 近30天
-                    startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(30));
-                    endTime = DateUtils.getDayEnd(LocalDateTime.now());
-                    break;
+        if(StringUtils.isEmpty(query.getStartTime()) && StringUtils.isEmpty(query.getEndTime())){
+            // 判断时间
+            if(Objects.nonNull(query.getTimeType())){
+                LocalDateTime startTime = null;
+                LocalDateTime endTime = null;
+                switch (query.getTimeType()){
+                    case 1:
+                        // 今日
+                        startTime = DateUtils.getDayStart(LocalDateTime.now());
+                        endTime = DateUtils.getDayEnd(LocalDateTime.now());
+                        break;
+                    case 2:
+                        // 昨日
+                        startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(1));
+                        endTime = DateUtils.getDayEnd(LocalDateTime.now().minusDays(1));
+                        break;
+                    case 3:
+                        // 近7天
+                        startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(7));
+                        endTime = DateUtils.getDayEnd(LocalDateTime.now());
+                        break;
+                    case 4:
+                        // 近30天
+                        startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(30));
+                        endTime = DateUtils.getDayEnd(LocalDateTime.now());
+                        break;
+                }
+                query.setStartTime(DateUtils.localDateTimeToDate(startTime));
+                query.setEndTime(DateUtils.localDateTimeToDate(endTime));
             }
-            query.setStartTime(DateUtils.localDateTimeToDate(startTime));
-            query.setEndTime(DateUtils.localDateTimeToDate(endTime));
         }
         PageInfo<TOrderStockVO> pageInfo = new PageInfo<>(query.getPageNum(),query.getPageSize());
         List<TOrderStockVO> list = this.baseMapper.pageList(query,pageInfo);
@@ -115,11 +135,17 @@
         if(!CollectionUtils.isEmpty(orderIds)){
             List<TOrderStockGoods> orderStockGoods = tOrderStockGoodsService.list(Wrappers.lambdaQuery(TOrderStockGoods.class)
                     .in(TOrderStockGoods::getOrderId, orderIds));
-            list.forEach(orderSale -> {
-                List<TOrderStockGoods> collect = orderStockGoods.stream().filter(orderSaleGoods -> orderSaleGoods.getOrderId().equals(orderSale.getId())).collect(Collectors.toList());
+            list.forEach(orderStockVO -> {
+                List<TOrderStockGoods> collect = orderStockGoods.stream().filter(orderSaleGoods -> orderSaleGoods.getOrderId().equals(orderStockVO.getId())).collect(Collectors.toList());
                 if(!CollectionUtils.isEmpty(collect)){
-                    orderSale.setOrderStockGoods(collect);
-                    orderSale.setTotalPrice(collect.stream().map(TOrderStockGoods::getCostPrice).reduce(BigDecimal::add).get());
+                    orderStockVO.setOrderStockGoods(collect);
+                    int sum = collect.stream().mapToInt(TOrderStockGoods::getStockCount).sum();
+                    orderStockVO.setOrderStockCount(sum);
+                    BigDecimal money = BigDecimal.ZERO;
+                    for (TOrderStockGoods tOrderStockGoods : collect) {
+                        money = money.add(tOrderStockGoods.getThisCostPrice().multiply(new BigDecimal(tOrderStockGoods.getStockCount())));
+                    }
+                    orderStockVO.setTotalPrice(money);
                 }
             });
         }
@@ -129,6 +155,37 @@
 
     @Override
     public Map<String, Object> getDataGeneratorStockDetail(TDataGeneratorStockQuery query) {
+        if(StringUtils.isEmpty(query.getStartTime()) && StringUtils.isEmpty(query.getEndTime())){
+            // 判断时间
+            if(Objects.nonNull(query.getTimeType())){
+                LocalDateTime startTime = null;
+                LocalDateTime endTime = null;
+                switch (query.getTimeType()){
+                    case 1:
+                        // 今日
+                        startTime = DateUtils.getDayStart(LocalDateTime.now());
+                        endTime = DateUtils.getDayEnd(LocalDateTime.now());
+                        break;
+                    case 2:
+                        // 昨日
+                        startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(1));
+                        endTime = DateUtils.getDayEnd(LocalDateTime.now().minusDays(1));
+                        break;
+                    case 3:
+                        // 近7天
+                        startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(7));
+                        endTime = DateUtils.getDayEnd(LocalDateTime.now());
+                        break;
+                    case 4:
+                        // 近30天
+                        startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(30));
+                        endTime = DateUtils.getDayEnd(LocalDateTime.now());
+                        break;
+                }
+                query.setStartTime(DateUtils.localDateTimeToDate(startTime));
+                query.setEndTime(DateUtils.localDateTimeToDate(endTime));
+            }
+        }
         return this.baseMapper.getDataGeneratorStockDetail(query);
     }
 
@@ -173,4 +230,60 @@
         });
         return list;
     }
+
+    @Override
+    public void editGenerator(TOrderStockDTO dto) {
+        TDataGenerator dataGenerator = dataGeneratorMapper.selectById(dto.getGeneratorId());
+        // 查询生成数据的配置
+        List<TStockDataSet> list = stockDataSetService.list(Wrappers.lambdaQuery(TStockDataSet.class)
+                .eq(TStockDataSet::getGeneratorId, dto.getGeneratorId()));
+        list = list.stream().sorted(Comparator.comparing(TStockDataSet::getStockDate)).collect(Collectors.toList());
+        String startTime = null;
+        String endTime = null;
+        Iterator<TStockDataSet> iterator = list.iterator();
+        while (iterator.hasNext()){
+            TStockDataSet next = iterator.next();
+            if(next.getStockDate().compareTo(dto.getStockTime()) == 0){
+                startTime = DateUtils.localDateToString(next.getStockDate());
+            }
+            if(Objects.nonNull(startTime)){
+                endTime = DateUtils.localDateToString(next.getStockDate());
+            }
+            if(Objects.nonNull(endTime)){
+                break;
+            }
+        }
+        if(Objects.isNull(endTime)){
+            endTime = DateUtils.localDateToString(dataGenerator.getEndTime());
+        }
+        // 查询该数据生成的销售单的数据
+        List<TOrderSale> orderSales = orderSaleMapper.selectList(Wrappers.lambdaQuery(TOrderSale.class)
+                .eq(TOrderSale::getGeneratorId, dto.getGeneratorId())
+                .between(TOrderSale::getOrderTime, startTime + " 00:00:00", endTime + " 23:59:59"));
+        List<Long> saleOrderIds = orderSales.stream().map(TOrderSale::getId).collect(Collectors.toList());
+        List<TOrderStockGoods> orderStockGoods = dto.getOrderStockGoods();
+        if(!CollectionUtils.isEmpty(saleOrderIds)){
+            List<TOrderSaleGoods> orderSaleGoods = orderSaleGoodsService.list(Wrappers.lambdaQuery(TOrderSaleGoods.class)
+                    .in(TOrderSaleGoods::getOrderId, saleOrderIds));
+            for (TOrderStockGoods orderStockGood : orderStockGoods) {
+                orderSaleGoods.stream().filter(e->e.getGoodsName().equals(orderStockGood.getGoodsName())).forEach(e->e.setGoodsCostPrice(orderStockGood.getThisCostPrice()));
+            }
+            orderSaleGoodsService.updateBatchById(orderSaleGoods);
+        }
+        this.updateById(dto);
+        // 刪除原有商品
+        tOrderStockGoodsService.remove(Wrappers.lambdaQuery(TOrderStockGoods.class)
+                .eq(TOrderStockGoods::getOrderId,dto.getId()));
+        // 添加商品
+        orderStockGoods.forEach(orderSaleGoods1 -> {
+            orderSaleGoods1.setId(null);
+            orderSaleGoods1.setOrderId(dto.getId());
+        });
+        tOrderStockGoodsService.saveBatch(orderStockGoods);
+    }
+
+    @Override
+    public void deleteByShopId(Long shopId) {
+        this.baseMapper.deleteByShopId(shopId);
+    }
 }

--
Gitblit v1.7.1