From abfedddb15ff90b7810a231dac964d2450372b94 Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期二, 10 九月 2024 09:01:42 +0800 Subject: [PATCH] 修改 --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderSaleServiceImpl.java | 95 ++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 85 insertions(+), 10 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 f4df429..02b9936 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,8 +7,10 @@ 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.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; @@ -49,14 +51,18 @@ // 查询菜品分类 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); + BigDecimal sum1 = orderSaleGoods.stream().map(TOrderSaleGoods::getThisSalePrice).reduce(BigDecimal::add).get(); + dto.setPayMoney(sum1); this.save(dto); // 添加商品 - orderSaleGoods.forEach(orderSaleGoods1 -> orderSaleGoods1.setOrderId(dto.getId())); + orderSaleGoods.forEach(orderSaleGoods1 -> { + orderSaleGoods1.setOrderId(dto.getId()); + orderSaleGoods1.setId(null); + }); orderSaleGoodsService.saveBatch(orderSaleGoods); } @@ -87,11 +93,23 @@ endTime = 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()); + 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; } @@ -122,16 +140,17 @@ public List<SalesRankingVO> salesRanking(TDataStatisticsQuery query) { 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)); + Map<Long, List<TOrderSaleGoods>> listMap = list1.stream().collect(Collectors.groupingBy(TOrderSaleGoods::getTypeId)); + List<TGoodsType> list2 = goodsTypeService.list(); listMap.forEach((k,v)->{ SalesRankingVO salesRankingVO = new SalesRankingVO(); - salesRankingVO.setTypeName(k); + salesRankingVO.setTypeName(list2.stream().filter(e->e.getId().equals(k)).findFirst().get().getTypeName()); salesRankingVO.setSalesVolume(v.stream().map(item->item.getGoodsSalePrice().multiply(new BigDecimal(item.getGoodsCount()))).reduce(BigDecimal.ZERO, BigDecimal::add)); salesRankingVOS.add(salesRankingVO); }); @@ -166,8 +185,8 @@ endTime = 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()); @@ -185,4 +204,60 @@ public List<OrderTrendsVO> orderingTrends(TDataStatisticsQuery query) { return this.baseMapper.orderingTrends(query); } + + @Override + public Map<String, Double> getDataGeneratorSaleDetail(TDataGeneratorSaleQuery query) { + return this.baseMapper.getDataGeneratorSaleDetail(query); + } + + @Override + public List<TOrderSaleVO> saleGeneratorExport(TDataGeneratorSaleQuery 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(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()); + List<TOrderSaleGoods> list1 = orderSaleGoodsService.list(Wrappers.lambdaQuery(TOrderSaleGoods.class) + .in(TOrderSaleGoods::getOrderId,ids)); + // 查询商品信息 + for (TOrderSaleVO orderSaleVO : list) { + List<TOrderSaleGoods> collect = list1.stream().filter(e -> e.getOrderId().equals(orderSaleVO.getId())).collect(Collectors.toList()); + orderSaleVO.setOrderSaleGoods(collect); + } + 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); + } } -- Gitblit v1.7.1