From ae4c93dd2e2aef79332360fb5dec13c5b2c961f3 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期二, 24 九月 2024 18:36:07 +0800
Subject: [PATCH] 修改接口

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderSaleServiceImpl.java |  125 ++++++++++++++++++++++++++++-------------
 1 files changed, 84 insertions(+), 41 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderSaleServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderSaleServiceImpl.java
index 2aadbc9..d1a483d 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderSaleServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderSaleServiceImpl.java
@@ -6,16 +6,14 @@
 import com.ruoyi.common.constant.OrderNumConstants;
 import com.ruoyi.common.utils.CodeGenerateUtils;
 import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.system.domain.*;
 import com.ruoyi.system.dto.CheckoutDTO;
 import com.ruoyi.system.dto.TOrderSaleDTO;
 import com.ruoyi.system.mapper.TOrderSaleGoodsMapper;
 import com.ruoyi.system.mapper.TOrderSaleMapper;
 import com.ruoyi.system.query.*;
-import com.ruoyi.system.service.TGoodsService;
-import com.ruoyi.system.service.TGoodsTypeService;
-import com.ruoyi.system.service.TOrderSaleGoodsService;
-import com.ruoyi.system.service.TOrderSaleService;
+import com.ruoyi.system.service.*;
 import com.ruoyi.system.vo.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -44,32 +42,43 @@
     @Autowired
     private TOrderSaleGoodsService orderSaleGoodsService;
     @Autowired
+    private TOrderStockGoodsService orderStockGoodsService;
+    @Autowired
     private TOrderSaleGoodsMapper orderSaleGoodsMapper;
-    @Autowired
-    private TGoodsTypeService goodsTypeService;
-    @Autowired
-    private TGoodsService goodsService;
     @Override
     public void add(TOrderSaleDTO dto) {
         // 查询菜品分类
-        List<TGoodsType> list1 = goodsTypeService.list();
+//        List<TGoodsType> list1 = goodsTypeService.list();
         // 销售单号
         dto.setOrderNum(OrderNumConstants.SALE + CodeGenerateUtils.generateVolumeSn());
         List<TOrderSaleGoods> orderSaleGoods = dto.getOrderSaleGoods();
-        BigDecimal sum = orderSaleGoods.stream().map(TOrderSaleGoods::getGoodsSalePrice).reduce(BigDecimal::add).get();
+        BigDecimal sum = BigDecimal.ZERO;
+        for (TOrderSaleGoods orderSaleGood : orderSaleGoods) {
+            sum = sum.add(orderSaleGood.getThisSalePrice().multiply(new BigDecimal(orderSaleGood.getGoodsCount())));
+        }
         dto.setOrderMoney(sum);
         this.save(dto);
+
+        // 查询进货数据
+        List<TOrderStockGoods> orderStockGoodsList = orderStockGoodsService.getListByTimeAndShopId(DateUtils.localDateToString(dto.getOrderTime()), dto.getShopId());
+
         // 添加商品
         orderSaleGoods.forEach(orderSaleGoods1 -> {
             orderSaleGoods1.setOrderId(dto.getId());
             orderSaleGoods1.setId(null);
+            TOrderStockGoods orderStockGoods = orderStockGoodsList.stream().filter(m -> m.getGoodsNum().equals(orderSaleGoods1.getGoodsNum())).findFirst().orElse(null);
+            if(Objects.nonNull(orderStockGoods)){
+                orderSaleGoods1.setGoodsCostPrice(orderStockGoods.getThisCostPrice());
+            }else {
+                orderSaleGoods1.setGoodsCostPrice(BigDecimal.ZERO);
+            }
         });
         orderSaleGoodsService.saveBatch(orderSaleGoods);
     }
 
     @Override
     public PageInfo<TOrderSaleVO> pageList(TOrderSaleQuery query) {
-        if(Objects.nonNull(query.getStartTime()) && Objects.nonNull(query.getEndTime())){
+        if(Objects.isNull(query.getStartTime()) && Objects.isNull(query.getEndTime())){
             if(Objects.nonNull(query.getTimeType())){
                 LocalDateTime startTime = null;
                 LocalDateTime endTime = null;
@@ -109,10 +118,13 @@
                 List<TOrderSaleGoods> collect = list1.stream().filter(m -> m.getOrderId().equals(e.getId())).collect(Collectors.toList());
                 if(!CollectionUtils.isEmpty(collect)){
                     BigDecimal goodsAmount = BigDecimal.ZERO;
+                    Integer count = 0;
                     for (TOrderSaleGoods tOrderSaleGoods : collect) {
                         goodsAmount = goodsAmount.add(tOrderSaleGoods.getThisSalePrice().multiply(new BigDecimal(tOrderSaleGoods.getGoodsCount())));
+                        count = count+tOrderSaleGoods.getGoodsCount();
                     }
                     e.setGoodsAmount(goodsAmount);
+                    e.setGoodsCount(count);
                     e.setOrderSaleGoods(collect);
                 }
             });
@@ -122,8 +134,12 @@
     }
 
     @Override
-    public AmountSumVO amountSum(TOrderMealQuery query) {
-        return this.baseMapper.amountSum(query);
+    public AmountSumVO amountSum(TOrderSaleQuery query) {
+        AmountSumVO amountSumVO = this.baseMapper.amountSum(query);
+        if(amountSumVO.getObligation().compareTo(BigDecimal.ZERO) < 0){
+            amountSumVO.setObligation(BigDecimal.ZERO);
+        }
+        return amountSumVO;
     }
 
     @Override
@@ -133,7 +149,10 @@
                 .add(salesVolumeVO.getMoneyPay()).add(salesVolumeVO.getAliPay()));
         // 查询成本
         List<TOrderSale> list = this.list(Wrappers.lambdaQuery(TOrderSale.class)
-                .eq(TOrderSale::getShopId, query.getShopId()));
+                .eq(TOrderSale::getShopId, query.getShopId())
+                .ge(TOrderSale::getOrderTime, query.getStartTime())
+                .le(TOrderSale::getOrderTime, query.getEndTime())
+                .eq(TOrderSale::getStatus,2));
         List<Long> ids = list.stream().map(TOrderSale::getId).collect(Collectors.toList());
         if(!CollectionUtils.isEmpty(ids)){
             BigDecimal costTotal = orderSaleGoodsService.costTotal(ids);
@@ -160,33 +179,35 @@
 
     @Override
     public List<TOrderSaleVO> exportOrderSale(TOrderMealQuery 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));
         }
         List<TOrderSaleVO> list = this.baseMapper.exportOrderSale(query);
         List<Long> ids = list.stream().map(TOrderSaleVO::getId).collect(Collectors.toList());
@@ -207,7 +228,7 @@
 
     @Override
     public Map<String, Double> getDataGeneratorSaleDetail(TDataGeneratorSaleQuery query) {
-        if(Objects.nonNull(query.getStartTime()) && Objects.nonNull(query.getEndTime())){
+        if(Objects.isNull(query.getStartTime()) && Objects.isNull(query.getEndTime())){
             if(Objects.nonNull(query.getTimeType())){
                 LocalDateTime startTime = null;
                 LocalDateTime endTime = null;
@@ -326,4 +347,26 @@
         }
         return list;
     }
+
+    @Override
+    public ProfitDetailsVO profitDetails(ProfitDetailsQuery query) {
+        ProfitDetailsVO profitDetailsVO = new ProfitDetailsVO();
+        // 查询商品盈利明细
+        PageInfo<GoodsProfitVO> pageInfo = new PageInfo<>(query.getPageNum(),query.getPageSize());
+        List<GoodsProfitVO> list = this.baseMapper.profitDetails(query,pageInfo);
+        pageInfo.setRecords(list);
+        profitDetailsVO.setGoodsProfitVOS(pageInfo);
+
+        // 统计商品金额
+        Map<String,Double> map = this.baseMapper.profitDetailsStatistics(query);
+        profitDetailsVO.setTotalProfits(new BigDecimal(map.get("totalProfits").toString()));
+        profitDetailsVO.setTotalCosts(new BigDecimal(map.get("totalCosts").toString()));
+        profitDetailsVO.setTotalSales(new BigDecimal(map.get("totalSales").toString()));
+        return profitDetailsVO;
+    }
+
+    @Override
+    public List<GoodsProfitVO> profitDetailsExport(ProfitDetailsQuery query) {
+        return this.baseMapper.profitDetailsExport(query);
+    }
 }

--
Gitblit v1.7.1