From 80206642e27a501ab2f2725d4104c7579698793d Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期六, 31 八月 2024 17:51:23 +0800 Subject: [PATCH] 商家后台接口,管理后台接口补充 --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderMealServiceImpl.java | 177 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 162 insertions(+), 15 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 cc9e9cb..ea48a1d 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 @@ -2,30 +2,25 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.constant.OrderNumConstants; import com.ruoyi.common.enums.BoardEnum; import com.ruoyi.common.utils.CodeGenerateUtils; -import com.ruoyi.system.domain.TBoard; -import com.ruoyi.system.domain.TOrderMeal; -import com.ruoyi.system.domain.TOrderMealGoods; -import com.ruoyi.system.domain.TOrderRemark; +import com.ruoyi.system.domain.*; import com.ruoyi.system.dto.*; import com.ruoyi.system.mapper.TOrderMealGoodsMapper; import com.ruoyi.system.mapper.TOrderMealMapper; -import com.ruoyi.system.service.TBoardService; -import com.ruoyi.system.service.TOrderMealGoodsService; -import com.ruoyi.system.service.TOrderMealService; -import com.ruoyi.system.service.TOrderRemarkService; +import com.ruoyi.system.query.TDataStatisticsQuery; +import com.ruoyi.system.query.TOrderMealQuery; +import com.ruoyi.system.service.*; +import com.ruoyi.system.vo.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.Random; +import java.util.*; import java.util.stream.Collectors; /** @@ -45,12 +40,18 @@ private TOrderRemarkService orderRemarkService; @Autowired private TBoardService boardService; + @Autowired + private TGoodsTypeService goodsTypeService; + @Autowired + private TGoodsService goodsService; @Override public void add(TOrderMealDTO dto) { if(Objects.isNull(dto.getBoardId())){ throw new RuntimeException("餐桌不能为空"); } + // 查询菜品分类 + List<TGoodsType> list1 = goodsTypeService.list(); // 查询餐桌 TBoard board = boardService.getById(dto.getBoardId()); // 如果菜品为空 @@ -66,8 +67,8 @@ List<TOrderMealGoods> orderMealGoods = new ArrayList<>(); // 查询商品 List<Long> goodsIds = dto.getMealOrderGoodsDTOS().stream().map(MealOrderGoodsDTO::getGoodsId).collect(Collectors.toList()); - List<TOrderMealGoods> list = orderMealGoodsService.list(Wrappers.lambdaQuery(TOrderMealGoods.class) - .in(TOrderMealGoods::getId, goodsIds)); + List<TGoods> list = goodsService.list(Wrappers.lambdaQuery(TGoods.class) + .in(TGoods::getId, goodsIds)); dto.getMealOrderGoodsDTOS().forEach(item -> { list.stream().filter(item1 -> item1.getId().equals(item.getGoodsId())).findFirst().ifPresent(item1 -> { TOrderMealGoods orderMealGood = new TOrderMealGoods(); @@ -75,7 +76,9 @@ orderMealGood.setGoodsNum(item1.getGoodsNum()); orderMealGood.setGoodsPicture(item1.getGoodsPicture()); orderMealGood.setGoodsCount(item.getGoodsCount()); - orderMealGood.setGoodsSalePrice(item1.getGoodsSalePrice().multiply(new BigDecimal(item.getGoodsCount()))); + orderMealGood.setGoodsSalePrice(item1.getSalePrice().multiply(new BigDecimal(item.getGoodsCount()))); +// orderMealGood.setTypeId(item1.getTypeId()); + orderMealGood.setTypeName(list1.stream().filter(item2 -> item2.getId().equals(item1.getTypeId())).findFirst().get().getTypeName()); orderMealGoods.add(orderMealGood); }); }); @@ -98,6 +101,8 @@ @Override public void addDish(AddDishDTO dto) { List<TOrderMealGoods> orderMealGoods = new ArrayList<>(); + // 查询菜品分类 + List<TGoodsType> list1 = goodsTypeService.list(); // 查询商品 List<Long> goodsIds = dto.getMealOrderGoodsDTOS().stream().map(MealOrderGoodsDTO::getGoodsId).collect(Collectors.toList()); List<TOrderMealGoods> list = orderMealGoodsService.list(Wrappers.lambdaQuery(TOrderMealGoods.class) @@ -110,6 +115,8 @@ orderMealGood.setGoodsPicture(item1.getGoodsPicture()); orderMealGood.setGoodsCount(item.getGoodsCount()); orderMealGood.setGoodsSalePrice(item1.getGoodsSalePrice().multiply(new BigDecimal(item.getGoodsCount()))); +// orderMealGood.setTypeId(item1.getTypeId()); + orderMealGood.setTypeName(list1.stream().filter(item2 -> item2.getId().equals(item1.getTypeId())).findFirst().get().getTypeName()); orderMealGoods.add(orderMealGood); }); }); @@ -138,4 +145,144 @@ boardService.updateById(board); } + @Override + public PageInfo<TOrderMealVO> pageList(TOrderMealQuery query) { + if(Objects.nonNull(query.getTimeType())){ + LocalDateTime startTime = null; + LocalDateTime endTime = null; + switch (query.getTimeType()){ + case 1: + // 今日 + startTime = LocalDateTime.MIN; + endTime = LocalDateTime.MAX; + break; + case 2: + // 昨日 + startTime = LocalDateTime.now().minusDays(1); + endTime = LocalDateTime.now().minusDays(1); + break; + case 3: + // 近7天 + startTime = LocalDateTime.now().minusDays(7); + endTime = LocalDateTime.now(); + break; + case 4: + // 近30天 + startTime = LocalDateTime.now().minusDays(30); + endTime = LocalDateTime.now(); + break; + } + query.setStartTime(startTime); + query.setEndTime(endTime); + } + PageInfo<TOrderMealVO> pageInfo = new PageInfo<>(query.getPageNum(),query.getPageSize()); + List<TOrderMealVO> list = this.baseMapper.pageList(query,pageInfo); + // 查询商品信息 + for (TOrderMealVO tOrderMealVO : list) { + List<TOrderMealGoods> list1 = orderMealGoodsService.list(Wrappers.lambdaQuery(TOrderMealGoods.class) + .eq(TOrderMealGoods::getOrderId, tOrderMealVO.getId())); + tOrderMealVO.setOrderMealGoods(list1); + Map<String, List<TOrderMealGoods>> map = list1.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(","))); + }); + tOrderMealVO.setGoodsList(goodsList); + } + pageInfo.setRecords(list); + return pageInfo; + } + + @Override + public AmountSumVO amountSum(TOrderMealQuery query) { + return this.baseMapper.amountSum(query); + } + + + @Override + public SalesVolumeVO salesVolume(TDataStatisticsQuery query) { + SalesVolumeVO salesVolumeVO = this.baseMapper.salesVolume(query); + salesVolumeVO.setSalesVolumeTotal(salesVolumeVO.getWeiXinPay().add(salesVolumeVO.getOtherPay()).add(salesVolumeVO.getCardPay()) + .add(salesVolumeVO.getMoneyPay()).add(salesVolumeVO.getAliPay())); + // 查询成本 + List<TOrderMeal> list = this.list(Wrappers.lambdaQuery(TOrderMeal.class) + .eq(TOrderMeal::getShopId, query.getShopId())); + List<Long> ids = list.stream().map(TOrderMeal::getId).collect(Collectors.toList()); + if(!CollectionUtils.isEmpty(ids)){ + BigDecimal costTotal = orderMealGoodsService.costTotal(ids); + salesVolumeVO.setCostTotal(costTotal); + salesVolumeVO.setProfitTotal(salesVolumeVO.getSalesVolumeTotal().subtract(costTotal)); + } + return salesVolumeVO; + } + + @Override + public List<SalesRankingVO> salesRanking(TDataStatisticsQuery query) { + List<TOrderMeal> list = this.list(Wrappers.lambdaQuery(TOrderMeal.class) + .eq(TOrderMeal::getShopId, query.getShopId()) + .between(TOrderMeal::getCreateTime, query.getStartTime(), query.getEndTime())); + List<Long> ids = list.stream().map(TOrderMeal::getId).collect(Collectors.toList()); + List<SalesRankingVO> salesRankingVOS = new ArrayList<>(); + if(!CollectionUtils.isEmpty(ids)){ + List<TOrderMealGoods> list1 = orderMealGoodsService.list(Wrappers.lambdaQuery(TOrderMealGoods.class) + .in(TOrderMealGoods::getOrderId, ids)); + Map<String, List<TOrderMealGoods>> listMap = list1.stream().collect(Collectors.groupingBy(TOrderMealGoods::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); + }); + } + return salesRankingVOS; + } + + @Override + public List<TOrderMealVO> exportOrderMeal(TOrderMealQuery query) { + if(Objects.nonNull(query.getTimeType())){ + LocalDateTime startTime = null; + LocalDateTime endTime = null; + switch (query.getTimeType()){ + case 1: + // 今日 + startTime = LocalDateTime.MIN; + endTime = LocalDateTime.MAX; + break; + case 2: + // 昨日 + startTime = LocalDateTime.now().minusDays(1); + endTime = LocalDateTime.now().minusDays(1); + break; + case 3: + // 近7天 + startTime = LocalDateTime.now().minusDays(7); + endTime = LocalDateTime.now(); + break; + case 4: + // 近30天 + startTime = LocalDateTime.now().minusDays(30); + endTime = LocalDateTime.now(); + break; + } + query.setStartTime(startTime); + query.setEndTime(endTime); + } + List<TOrderMealVO> list = this.baseMapper.exportOrderMeal(query); + 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> collect = list1.stream().filter(e -> e.getOrderId().equals(tOrderMealVO.getId())).collect(Collectors.toList()); + tOrderMealVO.setOrderMealGoods(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(","))); + }); + tOrderMealVO.setGoodsList(goodsList); + } + return list; + } + } -- Gitblit v1.7.1