From 3d998953d34afa6c72ca5d292f49c1349461aeda Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期五, 20 十二月 2024 17:46:45 +0800
Subject: [PATCH] 导出

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderMealServiceImpl.java |   60 +++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 53 insertions(+), 7 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderMealServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderMealServiceImpl.java
index eea6754..6c95673 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderMealServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderMealServiceImpl.java
@@ -11,6 +11,8 @@
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.system.domain.*;
 import com.ruoyi.system.dto.*;
+import com.ruoyi.system.export.SumGeneratorClient;
+import com.ruoyi.system.export.SumGeneratorDetailClient;
 import com.ruoyi.system.mapper.TOrderMealGoodsMapper;
 import com.ruoyi.system.mapper.TOrderMealMapper;
 import com.ruoyi.system.query.*;
@@ -87,11 +89,13 @@
             // 查询已存在的菜品
             List<TOrderMealGoods> list2 = orderMealGoodsService.list(Wrappers.lambdaQuery(TOrderMealGoods.class)
                     .in(TOrderMealGoods::getOrderId, dto.getId()));
+            BigDecimal money = BigDecimal.ZERO;
             for (MealOrderGoodsDTO mealOrderGoodsDTO : mealOrderGoodsDTOS) {
                 TOrderMealGoods tOrderMealGoods = list2.stream().filter(item1 -> item1.getGoodsId().equals(mealOrderGoodsDTO.getGoodsId())).findFirst().orElse(null);
                 if(Objects.nonNull(tOrderMealGoods)){
                     tOrderMealGoods.setGoodsCount(tOrderMealGoods.getGoodsCount()+mealOrderGoodsDTO.getGoodsCount());
                     orderMealGoods.add(tOrderMealGoods);
+                    money = money.add(tOrderMealGoods.getGoodsSalePrice().multiply(new BigDecimal(mealOrderGoodsDTO.getGoodsCount())));
                     continue;
                 }
                 for (TGoods goods : list) {
@@ -107,16 +111,16 @@
                         orderMealGood.setGoodsId(goods.getId());
                         orderMealGood.setTypeName(list1.stream().filter(item2 -> item2.getId().equals(goods.getTypeId())).findFirst().get().getTypeName());
                         orderMealGoods.add(orderMealGood);
+                        money = money.add(goods.getSalePrice().multiply(new BigDecimal(mealOrderGoodsDTO.getGoodsCount())));
                     }
                 }
             }
-            BigDecimal orderMoney = orderMeal.getOrderMoney();
             // 添加菜品
             for (TOrderMealGoods orderMealGood : orderMealGoods) {
                 orderMealGood.setOrderId(dto.getId());
-                orderMoney = orderMoney.add(orderMealGood.getGoodsSalePrice().multiply(new BigDecimal(orderMealGood.getGoodsCount())));
             }
             orderMealGoodsService.saveOrUpdateBatch(orderMealGoods);
+            BigDecimal orderMoney = orderMeal.getOrderMoney().add(money);
             orderMeal.setOrderMoney(orderMoney);
             this.updateById(orderMeal);
             // 添加备注
@@ -210,13 +214,18 @@
         }
         PageInfo<TOrderMealVO> pageInfo = new PageInfo<>(query.getPageNum(),query.getPageSize());
         List<TOrderMealVO> list = this.baseMapper.pageList(query,pageInfo);
+        if(CollectionUtils.isEmpty(list)){
+            return new PageInfo<>();
+        }
+        List<Long> ids = list.stream().map(TOrderMealVO::getId).collect(Collectors.toList());
+        List<TOrderMealGoods> list1 = orderMealGoodsService.list(Wrappers.lambdaQuery(TOrderMealGoods.class)
+                .in(TOrderMealGoods::getOrderId, ids));
         // 查询商品信息
         for (TOrderMealVO tOrderMealVO : list) {
-            List<TOrderMealGoods> list1 = orderMealGoodsService.list(Wrappers.lambdaQuery(TOrderMealGoods.class)
-                    .eq(TOrderMealGoods::getOrderId, tOrderMealVO.getId()));
-            tOrderMealVO.setOrderMealGoods(list1);
-            if(!CollectionUtils.isEmpty(list1)){
-                Map<String, List<TOrderMealGoods>> map = list1.stream().collect(Collectors.groupingBy(TOrderMealGoods::getTypeName));
+            List<TOrderMealGoods> collect = list1.stream().filter(e -> e.getOrderId().equals(tOrderMealVO.getId())).collect(Collectors.toList());
+            tOrderMealVO.setOrderMealGoods(collect);
+            if(!CollectionUtils.isEmpty(collect)){
+                Map<String, List<TOrderMealGoods>> map = collect.stream().collect(Collectors.groupingBy(TOrderMealGoods::getTypeName));
                 List<String> goodsList = new ArrayList<>();
                 map.forEach((k,v)->{
                     goodsList.add(k+":"+v.stream().map(item->item.getGoodsName()+" "+(item.getGoodsSalePrice().multiply(new BigDecimal(item.getGoodsCount())))).collect(Collectors.joining(",")));
@@ -486,4 +495,41 @@
         return this.baseMapper.profitDetailsExport(query);
     }
 
+    @Override
+    public void deleteByShopId(Long shopId) {
+        this.baseMapper.deleteByShopId(shopId);
+    }
+
+    @Override
+    public Map<String, Double> getDataGeneratorMealDetailOrderMoney(TDataGeneratorMealQuery query) {
+        return this.baseMapper.getDataGeneratorMealDetailOrderMoney(query);
+    }
+
+    @Override
+    public SumGeneratorClient sumExport(ProfitDetailsQuery query) {
+        List<SumGeneratorDetailClient> sumGeneratorDetailClient = this.baseMapper.sumExport(query);
+
+        for (SumGeneratorDetailClient generatorDetailClient : sumGeneratorDetailClient) {
+            generatorDetailClient.setSingleAmount(generatorDetailClient.getActualAmount().divide(new BigDecimal(generatorDetailClient.getOrderCount()),2,BigDecimal.ROUND_DOWN));
+            generatorDetailClient.setPerAmount(generatorDetailClient.getActualAmount().divide(new BigDecimal(generatorDetailClient.getPerCount()),2,BigDecimal.ROUND_DOWN));
+        }
+
+        SumGeneratorClient sumGeneratorClient = new SumGeneratorClient();
+        if(!CollectionUtils.isEmpty(sumGeneratorDetailClient)){
+            sumGeneratorClient.setActualAmountSum(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getActualAmount).reduce(BigDecimal::add).get());
+            sumGeneratorClient.setOrderCountSum(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getOrderCount).reduce(Integer::sum).get());
+            sumGeneratorClient.setSingleAmountSum(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getSingleAmount).reduce(BigDecimal::add).get());
+            sumGeneratorClient.setPerCountSum(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getPerCount).reduce(Integer::sum).get());
+            sumGeneratorClient.setPerAmountSum(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getPerAmount).reduce(BigDecimal::add).get());
+
+            sumGeneratorClient.setAllMoney(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getActualAmount).reduce(BigDecimal::add).get());
+            sumGeneratorClient.setSingleAvgAmount(sumGeneratorClient.getAllMoney().divide(new BigDecimal(sumGeneratorClient.getPerCountSum()),2,BigDecimal.ROUND_DOWN));
+            sumGeneratorClient.setPerCapitaAmount(sumGeneratorClient.getAllMoney().divide(new BigDecimal(sumGeneratorClient.getOrderCountSum()),2,BigDecimal.ROUND_DOWN));
+        }
+        sumGeneratorClient.setOrderStatistics(sumGeneratorDetailClient);
+
+
+        return sumGeneratorClient;
+    }
+
 }

--
Gitblit v1.7.1