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/TOrderMealServiceImpl.java | 125 ++++++++++++++++++++++++++--------------- 1 files changed, 80 insertions(+), 45 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 af90473..25f1a01 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 @@ -21,6 +21,7 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.temporal.ChronoUnit; import java.util.*; import java.util.stream.Collectors; @@ -37,6 +38,8 @@ @Autowired private TOrderMealGoodsService orderMealGoodsService; + @Autowired + private TOrderMealGoodsMapper orderMealGoodsMapper; @Autowired private TOrderRemarkService orderRemarkService; @Autowired @@ -56,7 +59,6 @@ orderMeal.setMealType(dto.getMealType()); orderMeal.setMealPerson(dto.getMealPerson()); orderMeal.setMealTime(dto.getMealTime()); - orderMeal.setOrderMoney(dto.getOrderMoney()); // 查询菜品分类 List<TGoodsType> list1 = goodsTypeService.list(); @@ -73,28 +75,38 @@ List<Long> goodsIds = dto.getMealOrderGoodsDTOS().stream().map(MealOrderGoodsDTO::getGoodsId).collect(Collectors.toList()); List<TGoods> list = goodsService.list(Wrappers.lambdaQuery(TGoods.class) .in(TGoods::getId, goodsIds)); + // 查询已存在的菜品 + List<TOrderMealGoods> list2 = orderMealGoodsService.list(Wrappers.lambdaQuery(TOrderMealGoods.class) + .in(TOrderMealGoods::getOrderId, dto.getId())); dto.getMealOrderGoodsDTOS().forEach(item -> { - list.stream().filter(item1 -> item1.getId().equals(item.getGoodsId())).findFirst().ifPresent(item1 -> { - TOrderMealGoods orderMealGood = new TOrderMealGoods(); - orderMealGood.setGoodsName(item1.getGoodsName()); - orderMealGood.setGoodsNum(item1.getGoodsNum()); - orderMealGood.setGoodsPicture(item1.getGoodsPicture()); - orderMealGood.setGoodsCount(item.getGoodsCount()); - orderMealGood.setGoodsSalePrice(item1.getSalePrice().multiply(new BigDecimal(item.getGoodsCount()))); - orderMealGood.setCostPrice(item1.getCostPrice().multiply(new BigDecimal(item.getGoodsCount()))); - 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); - }); + if(CollectionUtils.isEmpty(list2)){ + list.stream().filter(item1 -> item1.getId().equals(item.getGoodsId())).findFirst().ifPresent(item1 -> { + TOrderMealGoods orderMealGood = new TOrderMealGoods(); + orderMealGood.setGoodsName(item1.getGoodsName()); + orderMealGood.setGoodsNum(item1.getGoodsNum()); + orderMealGood.setGoodsPicture(item1.getGoodsPicture()); + orderMealGood.setGoodsCount(item.getGoodsCount()); + 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); + }); + }else { + list2.stream().filter(item1 -> item1.getGoodsId().equals(item.getGoodsId())).findFirst().ifPresent(item1 -> { + item1.setGoodsCount(item1.getGoodsCount()+item.getGoodsCount()); + orderMealGoods.add(item1); + }); + } }); BigDecimal orderMoney = BigDecimal.ZERO; // 添加菜品 for (TOrderMealGoods orderMealGood : orderMealGoods) { orderMealGood.setOrderId(dto.getId()); - orderMoney = orderMoney.add(orderMealGood.getGoodsSalePrice()); + orderMoney = orderMoney.add(orderMealGood.getGoodsSalePrice().multiply(new BigDecimal(orderMealGood.getGoodsCount()))); } - orderMealGoodsService.saveBatch(orderMealGoods); + orderMealGoodsService.saveOrUpdateBatch(orderMealGoods); orderMeal.setOrderMoney(orderMoney); this.updateById(orderMeal); // 添加备注 @@ -217,7 +229,10 @@ .add(salesVolumeVO.getMoneyPay()).add(salesVolumeVO.getAliPay())); // 查询成本 List<TOrderMeal> list = this.list(Wrappers.lambdaQuery(TOrderMeal.class) - .eq(TOrderMeal::getShopId, query.getShopId())); + .eq(TOrderMeal::getShopId, query.getShopId()) + .ge(TOrderMeal::getMealTime, query.getStartTime()) + .le(TOrderMeal::getMealTime, query.getEndTime()) + .eq(TOrderMeal::getStatus,2)); List<Long> ids = list.stream().map(TOrderMeal::getId).collect(Collectors.toList()); if(!CollectionUtils.isEmpty(ids)){ BigDecimal costTotal = orderMealGoodsService.costTotal(ids); @@ -228,24 +243,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 @@ -280,25 +289,51 @@ } 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; } @Override public List<OrderTrendsVO> orderingTrends(TDataStatisticsQuery query) { - return this.baseMapper.orderingTrends(query); + List<OrderTrendsVO> orderTrendsVOS = this.baseMapper.orderingTrends(query); + LocalDate localDate = LocalDate.now(); + for (int i = 0; i < 7; i++) { + if(i == 0){ + LocalDate finalLocalDate = localDate; + OrderTrendsVO orderTrendsVO = orderTrendsVOS.stream().filter(e -> DateUtils.stringToLocalDate(e.getDayTime()).compareTo(finalLocalDate) == 0).findFirst().orElse(null); + if(Objects.isNull(orderTrendsVO)){ + orderTrendsVO = new OrderTrendsVO(); + orderTrendsVO.setDayTime(DateUtils.localDateToString(localDate)); + orderTrendsVO.setOrderCount(0); + orderTrendsVOS.add(orderTrendsVO); + } + }else { + localDate = localDate.minusDays(1); + LocalDate finalLocalDate1 = localDate; + OrderTrendsVO orderTrendsVO = orderTrendsVOS.stream().filter(e -> DateUtils.stringToLocalDate(e.getDayTime()).compareTo(finalLocalDate1) == 0).findFirst().orElse(null); + if(Objects.isNull(orderTrendsVO)){ + orderTrendsVO = new OrderTrendsVO(); + orderTrendsVO.setDayTime(DateUtils.localDateToString(finalLocalDate1)); + orderTrendsVO.setOrderCount(0); + orderTrendsVOS.add(orderTrendsVO); + } + } + } + return orderTrendsVOS.stream().sorted(Comparator.comparing(OrderTrendsVO::getDayTime)).collect(Collectors.toList()); } @Override @@ -397,7 +432,7 @@ profitDetailsVO.setGoodsProfitVOS(pageInfo); // 统计商品金额 - Map<String,BigDecimal> map = this.baseMapper.profitDetailsStatistics(query); + 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())); -- Gitblit v1.7.1