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/TOrderMealServiceImpl.java | 178 ++++++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 115 insertions(+), 63 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 26051c6..50fb9e5 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 @@ -6,13 +6,12 @@ import com.ruoyi.common.constant.OrderNumConstants; import com.ruoyi.common.enums.BoardEnum; import com.ruoyi.common.utils.CodeGenerateUtils; +import com.ruoyi.common.utils.DateUtils; 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.query.TDataGeneratorMealQuery; -import com.ruoyi.system.query.TDataStatisticsQuery; -import com.ruoyi.system.query.TOrderMealQuery; +import com.ruoyi.system.query.*; import com.ruoyi.system.service.*; import com.ruoyi.system.vo.*; import org.springframework.beans.factory.annotation.Autowired; @@ -39,6 +38,8 @@ @Autowired private TOrderMealGoodsService orderMealGoodsService; @Autowired + private TOrderMealGoodsMapper orderMealGoodsMapper; + @Autowired private TOrderRemarkService orderRemarkService; @Autowired private TBoardService boardService; @@ -58,7 +59,6 @@ orderMeal.setMealPerson(dto.getMealPerson()); orderMeal.setMealTime(dto.getMealTime()); orderMeal.setOrderMoney(dto.getOrderMoney()); - this.updateById(orderMeal); // 查询菜品分类 List<TGoodsType> list1 = goodsTypeService.list(); @@ -82,17 +82,23 @@ orderMealGood.setGoodsNum(item1.getGoodsNum()); orderMealGood.setGoodsPicture(item1.getGoodsPicture()); orderMealGood.setGoodsCount(item.getGoodsCount()); - orderMealGood.setGoodsSalePrice(item1.getSalePrice().multiply(new BigDecimal(item.getGoodsCount()))); -// orderMealGood.setTypeId(item1.getTypeId()); + orderMealGood.setGoodsSalePrice(item1.getSalePrice()); + orderMealGood.setCostPrice(item1.getCostPrice()); + orderMealGood.setTypeId(item1.getTypeId()); + orderMealGood.setGoodsId(item1.getId()); orderMealGood.setTypeName(list1.stream().filter(item2 -> item2.getId().equals(item1.getTypeId())).findFirst().get().getTypeName()); orderMealGoods.add(orderMealGood); }); }); + BigDecimal orderMoney = BigDecimal.ZERO; // 添加菜品 - orderMealGoods.forEach(item -> { - item.setOrderId(dto.getId()); - }); + for (TOrderMealGoods orderMealGood : orderMealGoods) { + orderMealGood.setOrderId(dto.getId()); + orderMoney = orderMoney.add(orderMealGood.getGoodsSalePrice().multiply(new BigDecimal(orderMealGood.getGoodsCount()))); + } orderMealGoodsService.saveBatch(orderMealGoods); + orderMeal.setOrderMoney(orderMoney); + this.updateById(orderMeal); // 添加备注 // TOrderRemark tOrderRemark = new TOrderRemark(); // tOrderRemark.setOrderId(dto.getId()); @@ -119,7 +125,8 @@ orderMealGood.setGoodsPicture(item1.getGoodsPicture()); orderMealGood.setGoodsCount(item.getGoodsCount()); orderMealGood.setGoodsSalePrice(item1.getGoodsSalePrice().multiply(new BigDecimal(item.getGoodsCount()))); -// orderMealGood.setTypeId(item1.getTypeId()); + orderMealGood.setTypeId(item1.getTypeId()); + orderMealGood.setGoodsId(item1.getId()); orderMealGood.setTypeName(list1.stream().filter(item2 -> item2.getId().equals(item1.getTypeId())).findFirst().get().getTypeName()); orderMealGoods.add(orderMealGood); }); @@ -157,27 +164,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)); } PageInfo<TOrderMealVO> pageInfo = new PageInfo<>(query.getPageNum(),query.getPageSize()); List<TOrderMealVO> list = this.baseMapper.pageList(query,pageInfo); @@ -186,12 +193,14 @@ 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); + if(!CollectionUtils.isEmpty(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; @@ -221,24 +230,18 @@ } @Override - public List<SalesRankingVO> salesRanking(TDataStatisticsQuery query) { + public PageInfo<SalesRankingVO> salesRanking(TDataStatisticsQuery query) { + PageInfo<SalesRankingVO> pageInfo = new PageInfo<>(query.getPageNum(),query.getPageSize()); List<TOrderMeal> list = this.list(Wrappers.lambdaQuery(TOrderMeal.class) .eq(TOrderMeal::getShopId, query.getShopId()) - .between(TOrderMeal::getCreateTime, query.getStartTime(), query.getEndTime())); + .between(TOrderMeal::getMealTime, 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); - }); + if(CollectionUtils.isEmpty(ids)){ + return new PageInfo<>(); } - return salesRankingVOS; + List<SalesRankingVO> salesRankingVOS = orderMealGoodsMapper.salesRanking(ids, pageInfo); + pageInfo.setRecords(salesRankingVOS); + return pageInfo; } @Override @@ -249,42 +252,44 @@ 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<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); + if(!CollectionUtils.isEmpty(ids)){ + 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; } @@ -320,7 +325,7 @@ } @Override - public Map<String, BigDecimal> getDataGeneratorMealDetail(TDataGeneratorMealQuery query) { + public Map<String, Double> getDataGeneratorMealDetail(TDataGeneratorMealQuery query) { return this.baseMapper.getDataGeneratorMealDetail(query); } @@ -352,7 +357,54 @@ board.setStatus(BoardEnum.WAITING_ORDER.getCode()); boardService.updateById(board); dto.setMealTime(LocalDate.now()); + dto.setOrderNum(OrderNumConstants.MEAL + CodeGenerateUtils.generateVolumeSn()); this.save(dto); } + @Override + public List<TDataGeneratorVO> mealGeneratorListExport(TDataGeneratorQuery query) { + List<TDataGeneratorVO> list = this.baseMapper.mealGeneratorListExport(query); + List<Long> ids = list.stream().map(TDataGeneratorVO::getId).collect(Collectors.toList()); + if(CollectionUtils.isEmpty(ids)){ + return new ArrayList<>(); + } + List<TOrderMeal> orderMeals = this.list(Wrappers.lambdaQuery(TOrderMeal.class) + .in(TOrderMeal::getGeneratorId, ids)); + List<Long> mealIds = orderMeals.stream().map(TOrderMeal::getId).collect(Collectors.toList()); + if(!CollectionUtils.isEmpty(mealIds)){ + List<TOrderMealGoods> mealGoods = orderMealGoodsService.list(Wrappers.lambdaQuery(TOrderMealGoods.class) + .in(TOrderMealGoods::getOrderId, mealIds)); + for (TDataGeneratorVO tDataGeneratorVO : list) { + List<Long> collect = orderMeals.stream().filter(e -> e.getGeneratorId().equals(tDataGeneratorVO.getId())).map(TOrderMeal::getId).collect(Collectors.toList()); + BigDecimal money = mealGoods.stream().filter(e -> collect.contains(e.getOrderId())) + .reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getGoodsSalePrice().multiply(new BigDecimal(y.getGoodsCount()))), BigDecimal::add); + tDataGeneratorVO.setTotalRevenue(money); + } + } + 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