From 20cd42287efb95254ea788ce2b6d0c559e378e04 Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期四, 19 九月 2024 14:36:21 +0800 Subject: [PATCH] 修改接口 --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderSaleServiceImpl.java | 144 ++++++++++++++++++++++++++++++----------------- 1 files changed, 92 insertions(+), 52 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 e357f60..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,7 +44,11 @@ @Autowired private TOrderSaleGoodsService orderSaleGoodsService; @Autowired + private TOrderSaleGoodsMapper orderSaleGoodsMapper; + @Autowired private TGoodsTypeService goodsTypeService; + @Autowired + private TGoodsService goodsService; @Override public void add(TOrderSaleDTO dto) { // 查询菜品分类 @@ -54,8 +58,6 @@ List<TOrderSaleGoods> orderSaleGoods = dto.getOrderSaleGoods(); BigDecimal sum = orderSaleGoods.stream().map(TOrderSaleGoods::getGoodsSalePrice).reduce(BigDecimal::add).get(); dto.setOrderMoney(sum); - BigDecimal sum1 = orderSaleGoods.stream().map(TOrderSaleGoods::getThisSalePrice).reduce(BigDecimal::add).get(); - dto.setPayMoney(sum1); this.save(dto); // 添加商品 orderSaleGoods.forEach(orderSaleGoods1 -> { @@ -73,27 +75,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<TOrderSaleVO> pageInfo = new PageInfo<>(query.getPageNum(),query.getPageSize()); List<TOrderSaleVO> list = this.baseMapper.pageList(query,pageInfo); @@ -136,25 +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::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<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(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); - }); + if(CollectionUtils.isEmpty(ids)){ + return new PageInfo<>(); } - return salesRankingVOS; + List<SalesRankingVO> salesRankingVOS = orderSaleGoodsMapper.salesRanking(ids,pageInfo); + pageInfo.setRecords(salesRankingVOS); + return pageInfo; } @Override @@ -165,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()); @@ -205,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 @@ -217,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()); @@ -250,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