From f34453a6e807103e36e412ecef66b39e9ef1f233 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期四, 19 九月 2024 17:57:39 +0800
Subject: [PATCH] 修改接口

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderSaleServiceImpl.java |  168 ++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 109 insertions(+), 59 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 54de246..4a2dc22 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
@@ -7,12 +7,12 @@
 import com.ruoyi.common.utils.CodeGenerateUtils;
 import com.ruoyi.common.utils.DateUtils;
 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.TDataGeneratorSaleQuery;
-import com.ruoyi.system.query.TDataStatisticsQuery;
-import com.ruoyi.system.query.TOrderMealQuery;
-import com.ruoyi.system.query.TOrderSaleQuery;
+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;
@@ -44,20 +44,26 @@
     @Autowired
     private TOrderSaleGoodsService orderSaleGoodsService;
     @Autowired
+    private TOrderSaleGoodsMapper orderSaleGoodsMapper;
+    @Autowired
     private TGoodsTypeService goodsTypeService;
+    @Autowired
+    private TGoodsService goodsService;
     @Override
     public void add(TOrderSaleDTO dto) {
         // 查询菜品分类
         List<TGoodsType> list1 = goodsTypeService.list();
         // 销售单号
-        dto.setOrderNum(OrderNumConstants.SALE + CodeGenerateUtils.generateOrderSn());
+        dto.setOrderNum(OrderNumConstants.SALE + CodeGenerateUtils.generateVolumeSn());
         List<TOrderSaleGoods> orderSaleGoods = dto.getOrderSaleGoods();
         BigDecimal sum = orderSaleGoods.stream().map(TOrderSaleGoods::getGoodsSalePrice).reduce(BigDecimal::add).get();
         dto.setOrderMoney(sum);
-        dto.setPayMoney(sum);
         this.save(dto);
         // 添加商品
-        orderSaleGoods.forEach(orderSaleGoods1 -> orderSaleGoods1.setOrderId(dto.getId()));
+        orderSaleGoods.forEach(orderSaleGoods1 -> {
+            orderSaleGoods1.setOrderId(dto.getId());
+            orderSaleGoods1.setId(null);
+        });
         orderSaleGoodsService.saveBatch(orderSaleGoods);
     }
 
@@ -69,37 +75,42 @@
             switch (query.getTimeType()){
                 case 1:
                     // 今日
-                    startTime = LocalDateTime.MIN;
-                    endTime = LocalDateTime.MAX;
+                    startTime = DateUtils.getDayStart(LocalDateTime.now());
+                    endTime = DateUtils.getDayEnd(LocalDateTime.now());
                     break;
                 case 2:
                     // 昨日
-                    startTime = LocalDateTime.now().minusDays(1);
-                    endTime = LocalDateTime.now().minusDays(1);
+                    startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(1));
+                    endTime = DateUtils.getDayEnd(LocalDateTime.now().minusDays(1));
                     break;
                 case 3:
                     // 近7天
-                    startTime = LocalDateTime.now().minusDays(7);
-                    endTime = LocalDateTime.now();
+                    startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(7));
+                    endTime = DateUtils.getDayEnd(LocalDateTime.now());
                     break;
                 case 4:
                     // 近30天
-                    startTime = LocalDateTime.now().minusDays(30);
-                    endTime = LocalDateTime.now();
+                    startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(30));
+                    endTime = DateUtils.getDayEnd(LocalDateTime.now());
                     break;
             }
-            query.setStartTime(startTime);
-            query.setEndTime(endTime);
+            query.setStartTime(DateUtils.localDateTimeToDate(startTime));
+            query.setEndTime(DateUtils.localDateTimeToDate(endTime));
         }
         PageInfo<TOrderSaleVO> pageInfo = new PageInfo<>(query.getPageNum(),query.getPageSize());
         List<TOrderSaleVO> list = this.baseMapper.pageList(query,pageInfo);
         List<Long> ids = list.stream().map(TOrderSaleVO::getId).collect(Collectors.toList());
-        List<TOrderSaleGoods> list1 = orderSaleGoodsService.list(Wrappers.lambdaQuery(TOrderSaleGoods.class)
-                .in(TOrderSaleGoods::getOrderId, ids));
-        list.forEach(e->{
-            e.setGoodsAmount(list1.stream().filter(m->m.getOrderId().equals(e.getId())).map(TOrderSaleGoods::getGoodsSalePrice).reduce(BigDecimal::add).get());
-            e.setOrderSaleGoods(list1.stream().filter(m->m.getOrderId().equals(e.getId())).collect(Collectors.toList()));
-        });
+        if(!CollectionUtils.isEmpty(ids)){
+            List<TOrderSaleGoods> list1 = orderSaleGoodsService.list(Wrappers.lambdaQuery(TOrderSaleGoods.class)
+                    .in(TOrderSaleGoods::getOrderId, ids));
+            list.forEach(e->{
+                List<TOrderSaleGoods> collect = list1.stream().filter(m -> m.getOrderId().equals(e.getId())).collect(Collectors.toList());
+                if(!CollectionUtils.isEmpty(collect)){
+                    e.setGoodsAmount(collect.stream().map(TOrderSaleGoods::getGoodsSalePrice).reduce(BigDecimal::add).get());
+                    e.setOrderSaleGoods(collect);
+                }
+            });
+        }
         pageInfo.setRecords(list);
         return pageInfo;
     }
@@ -127,24 +138,18 @@
     }
 
     @Override
-    public List<SalesRankingVO> salesRanking(TDataStatisticsQuery query) {
+    public PageInfo<SalesRankingVO> salesRanking(TDataStatisticsQuery query) {
+        PageInfo<SalesRankingVO> pageInfo = new PageInfo<>(query.getPageNum(),query.getPageSize());
         List<TOrderSale> list = this.list(Wrappers.lambdaQuery(TOrderSale.class)
                 .eq(TOrderSale::getShopId, query.getShopId())
-                .between(TOrderSale::getCreateTime, query.getStartTime(), query.getEndTime()));
+                .between(TOrderSale::getOrderTime, query.getStartTime(), query.getEndTime()));
         List<Long> ids = list.stream().map(TOrderSale::getId).collect(Collectors.toList());
-        List<SalesRankingVO> salesRankingVOS = new ArrayList<>();
-        if(!CollectionUtils.isEmpty(ids)){
-            List<TOrderSaleGoods> list1 = orderSaleGoodsService.list(Wrappers.lambdaQuery(TOrderSaleGoods.class)
-                    .in(TOrderSaleGoods::getOrderId, ids));
-            Map<String, List<TOrderSaleGoods>> listMap = list1.stream().collect(Collectors.groupingBy(TOrderSaleGoods::getTypeName));
-            listMap.forEach((k,v)->{
-                SalesRankingVO salesRankingVO = new SalesRankingVO();
-                salesRankingVO.setTypeName(k);
-                salesRankingVO.setSalesVolume(v.stream().map(item->item.getGoodsSalePrice().multiply(new BigDecimal(item.getGoodsCount()))).reduce(BigDecimal.ZERO, BigDecimal::add));
-                salesRankingVOS.add(salesRankingVO);
-            });
+        if(CollectionUtils.isEmpty(ids)){
+            return new PageInfo<>();
         }
-        return salesRankingVOS;
+        List<SalesRankingVO> salesRankingVOS = orderSaleGoodsMapper.salesRanking(ids,pageInfo);
+        pageInfo.setRecords(salesRankingVOS);
+        return pageInfo;
     }
 
     @Override
@@ -155,27 +160,27 @@
             switch (query.getTimeType()){
                 case 1:
                     // 今日
-                    startTime = LocalDateTime.MIN;
-                    endTime = LocalDateTime.MAX;
+                    startTime = DateUtils.getDayStart(LocalDateTime.now());
+                    endTime = DateUtils.getDayEnd(LocalDateTime.now());
                     break;
                 case 2:
                     // 昨日
-                    startTime = LocalDateTime.now().minusDays(1);
-                    endTime = LocalDateTime.now().minusDays(1);
+                    startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(1));
+                    endTime = DateUtils.getDayEnd(LocalDateTime.now().minusDays(1));
                     break;
                 case 3:
                     // 近7天
-                    startTime = LocalDateTime.now().minusDays(7);
-                    endTime = LocalDateTime.now();
+                    startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(7));
+                    endTime = DateUtils.getDayEnd(LocalDateTime.now());
                     break;
                 case 4:
                     // 近30天
-                    startTime = LocalDateTime.now().minusDays(30);
-                    endTime = LocalDateTime.now();
+                    startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(30));
+                    endTime = DateUtils.getDayEnd(LocalDateTime.now());
                     break;
             }
-            query.setStartTime(startTime);
-            query.setEndTime(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());
@@ -195,8 +200,8 @@
     }
 
     @Override
-    public Map<String, BigDecimal> getDataGeneratorMealDetail(TDataGeneratorSaleQuery query) {
-        return this.baseMapper.getDataGeneratorMealDetail(query);
+    public Map<String, Double> getDataGeneratorSaleDetail(TDataGeneratorSaleQuery query) {
+        return this.baseMapper.getDataGeneratorSaleDetail(query);
     }
 
     @Override
@@ -207,27 +212,27 @@
             switch (query.getTimeType()){
                 case 1:
                     // 今日
-                    startTime = LocalDateTime.MIN;
-                    endTime = LocalDateTime.MAX;
+                    startTime = DateUtils.getDayStart(LocalDateTime.now());
+                    endTime = DateUtils.getDayEnd(LocalDateTime.now());
                     break;
                 case 2:
                     // 昨日
-                    startTime = LocalDateTime.now().minusDays(1);
-                    endTime = LocalDateTime.now().minusDays(1);
+                    startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(1));
+                    endTime = DateUtils.getDayEnd(LocalDateTime.now().minusDays(1));
                     break;
                 case 3:
                     // 近7天
-                    startTime = LocalDateTime.now().minusDays(7);
-                    endTime = LocalDateTime.now();
+                    startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(7));
+                    endTime = DateUtils.getDayEnd(LocalDateTime.now());
                     break;
                 case 4:
                     // 近30天
-                    startTime = LocalDateTime.now().minusDays(30);
-                    endTime = LocalDateTime.now();
+                    startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(30));
+                    endTime = DateUtils.getDayEnd(LocalDateTime.now());
                     break;
             }
-            query.setStartTime(startTime);
-            query.setEndTime(endTime);
+            query.setStartTime(DateUtils.localDateTimeToDate(startTime));
+            query.setEndTime(DateUtils.localDateTimeToDate(endTime));
         }
         List<TOrderSaleVO> list = this.baseMapper.saleGeneratorExport(query);
         List<Long> ids = list.stream().map(TOrderSaleVO::getId).collect(Collectors.toList());
@@ -240,4 +245,49 @@
         }
         return list;
     }
+
+    @Override
+    public void checkout(CheckoutDTO dto) {
+        TOrderSale orderSale = this.getById(dto.getOrderId());
+        orderSale.setPayType(dto.getPayType());
+        orderSale.setPayMoney(dto.getPayMoney());
+        orderSale.setStatus(2);
+        this.updateById(orderSale);
+    }
+
+    @Override
+    public void edit(TOrderSaleDTO dto) {
+        // 销售单号
+        List<TOrderSaleGoods> orderSaleGoods = dto.getOrderSaleGoods();
+        BigDecimal sum = orderSaleGoods.stream().map(TOrderSaleGoods::getGoodsSalePrice).reduce(BigDecimal::add).get();
+        dto.setOrderMoney(sum);
+        this.updateById(dto);
+        // 删除商品
+        orderSaleGoodsService.remove(Wrappers.lambdaQuery(TOrderSaleGoods.class)
+                .eq(TOrderSaleGoods::getOrderId,dto.getId()));
+        // 添加商品
+        orderSaleGoods.forEach(orderSaleGoods1 -> {
+            orderSaleGoods1.setOrderId(dto.getId());
+            orderSaleGoods1.setId(null);
+        });
+        orderSaleGoodsService.saveBatch(orderSaleGoods);
+    }
+
+    @Override
+    public List<TDataGeneratorVO> saleGeneratorListExport(TDataGeneratorQuery query) {
+        List<TDataGeneratorVO> list = this.baseMapper.saleGeneratorListExport(query);
+        List<Long> ids = list.stream().map(TDataGeneratorVO::getId).collect(Collectors.toList());
+        if(CollectionUtils.isEmpty(ids)){
+            return new ArrayList<>();
+        }
+        List<TOrderSale> orderSales = this.list(Wrappers.lambdaQuery(TOrderSale.class)
+                .in(TOrderSale::getGeneratorId, ids));
+        for (TDataGeneratorVO tDataGeneratorVO : list) {
+            if(!CollectionUtils.isEmpty(orderSales)){
+                BigDecimal money = orderSales.stream().map(TOrderSale::getPayMoney).reduce(BigDecimal::add).get();
+                tDataGeneratorVO.setTotalRevenue(money);
+            }
+        }
+        return list;
+    }
 }

--
Gitblit v1.7.1