From b3cef9d27013afee054bdd467defd0b6be218526 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期五, 13 九月 2024 18:28:02 +0800 Subject: [PATCH] 修改bug --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MgtBusinessDataService.java | 196 ++++++++++++++++++++++++++++-------------------- 1 files changed, 115 insertions(+), 81 deletions(-) diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MgtBusinessDataService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MgtBusinessDataService.java index e30efd2..1b9284e 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MgtBusinessDataService.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MgtBusinessDataService.java @@ -1,5 +1,7 @@ package com.ruoyi.order.service.impl; +import com.alibaba.excel.EasyExcel; +import com.google.common.collect.Lists; import com.ruoyi.common.core.enums.AuctionOrderTypeEnum; import com.ruoyi.common.core.enums.OrderFromEnum; import com.ruoyi.common.core.enums.OrderTypeEnum; @@ -15,6 +17,7 @@ import com.ruoyi.order.service.IOrderService; import com.ruoyi.system.api.domain.Order; import java.math.BigDecimal; +import java.net.URLEncoder; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -29,6 +32,7 @@ import java.util.concurrent.Executors; import java.util.stream.Collectors; import java.util.stream.Stream; +import javax.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; @@ -57,94 +61,99 @@ LocalDateTime startTime = timeByTimeType.get(0); LocalDateTime endTime = timeByTimeType.get(1); List<Order> orderList = orderService.getStaticsOrderList(startTime, endTime); - if (orderList.isEmpty()) { - throw new ServiceException("暂无数据"); - } MgtOrderStaticsVO mgtOrderStaticsVO = new MgtOrderStaticsVO(); - /* ***************************************商城订单统计*************************************** */ - // 商城订单统计-订单总数 - long mallOrderTotalCount = orderList.stream() - .filter(order -> !order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS)) - .count(); - // 商城订单统计-商城订单 - long mallOrderCount = orderList.stream() - .filter(order -> order.getOrderFrom().equals(OrderFromEnum.COMMODITY_ORDER)) - .count(); - // 商城订单统计-秒杀订单 - long seckillOrderCount = orderList.stream() - .filter(order -> order.getOrderFrom().equals(OrderFromEnum.SNAP_ORDERS)) - .count(); - // 商城订单统计-团购订单 - long groupPurchaseOrderCount = orderList.stream() - .filter(order -> order.getOrderFrom().equals(OrderFromEnum.GROUP_PURCHASE_ORDERS)) - .count(); - // 商城订单统计-订单总金额 - BigDecimal mallOrderTotalAmount = orderList.stream() - .filter(order -> !order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS)) - .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); - // 商城订单统计 - 商城总金额 - BigDecimal mallTotalAmount = orderList.stream() - .filter(order -> order.getOrderFrom().equals(OrderFromEnum.COMMODITY_ORDER)) - .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); - // 商城订单统计-秒杀总金额 - BigDecimal seckillTotalAmount = orderList.stream() - .filter(order -> order.getOrderFrom().equals(OrderFromEnum.SNAP_ORDERS)) - .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); + if (CollUtils.isNotEmpty(orderList)) { + /* ***************************************商城订单统计*************************************** */ + // 商城订单统计-订单总数 + long mallOrderTotalCount = orderList.stream() + .filter(order -> !order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS)) + .count(); + // 商城订单统计-商城订单 + long mallOrderCount = orderList.stream() + .filter(order -> order.getOrderFrom().equals(OrderFromEnum.COMMODITY_ORDER)) + .count(); + // 商城订单统计-秒杀订单 + long seckillOrderCount = orderList.stream() + .filter(order -> order.getOrderFrom().equals(OrderFromEnum.SNAP_ORDERS)) + .count(); + // 商城订单统计-团购订单 + long groupPurchaseOrderCount = orderList.stream() + .filter(order -> order.getOrderFrom() + .equals(OrderFromEnum.GROUP_PURCHASE_ORDERS)) + .count(); + // 商城订单统计-订单总金额 + BigDecimal mallOrderTotalAmount = orderList.stream() + .filter(order -> !order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS)) + .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); + // 商城订单统计 - 商城总金额 + BigDecimal mallTotalAmount = orderList.stream() + .filter(order -> order.getOrderFrom().equals(OrderFromEnum.COMMODITY_ORDER)) + .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); + // 商城订单统计-秒杀总金额 + BigDecimal seckillTotalAmount = orderList.stream() + .filter(order -> order.getOrderFrom().equals(OrderFromEnum.SNAP_ORDERS)) + .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); - // 商城订单统计-团购总金额 - BigDecimal groupPurchaseTotalAmount = orderList.stream() - .filter(order -> order.getOrderFrom().equals(OrderFromEnum.GROUP_PURCHASE_ORDERS)) - .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); + // 商城订单统计-团购总金额 + BigDecimal groupPurchaseTotalAmount = orderList.stream() + .filter(order -> order.getOrderFrom() + .equals(OrderFromEnum.GROUP_PURCHASE_ORDERS)) + .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); - mgtOrderStaticsVO.setMallOrderTotalCount(mallOrderTotalCount); - mgtOrderStaticsVO.setMallOrderCount(mallOrderCount); - mgtOrderStaticsVO.setSeckillOrderCount(seckillOrderCount); - mgtOrderStaticsVO.setGroupPurchaseOrderCount(groupPurchaseOrderCount); + mgtOrderStaticsVO.setMallOrderTotalCount(mallOrderTotalCount); + mgtOrderStaticsVO.setMallOrderCount(mallOrderCount); + mgtOrderStaticsVO.setSeckillOrderCount(seckillOrderCount); + mgtOrderStaticsVO.setGroupPurchaseOrderCount(groupPurchaseOrderCount); - mgtOrderStaticsVO.setMallOrderTotalAmount(mallOrderTotalAmount); - mgtOrderStaticsVO.setMallTotalAmount(mallTotalAmount); - mgtOrderStaticsVO.setSeckillTotalAmount(seckillTotalAmount); - mgtOrderStaticsVO.setGroupPurchaseTotalAmount(groupPurchaseTotalAmount); + mgtOrderStaticsVO.setMallOrderTotalAmount(mallOrderTotalAmount); + mgtOrderStaticsVO.setMallTotalAmount(mallTotalAmount); + mgtOrderStaticsVO.setSeckillTotalAmount(seckillTotalAmount); + mgtOrderStaticsVO.setGroupPurchaseTotalAmount(groupPurchaseTotalAmount); - /* ***************************************拍卖订单统计*************************************** */ - // 拍卖订单统计-订单总数 - long auctionOrderTotalCount = orderList.stream() - .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS)) - .count(); - // 拍卖订单统计-拍卖商品订单 - long auctionGoodsOrderCount = orderList.stream() - .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS) - && order.getAuctionOrderType().equals(AuctionOrderTypeEnum.REGULAR_ITEMS)) - .count(); - // 拍卖订单统计-拍卖场订单 - long auctionSalesroomOrderCount = orderList.stream() - .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS) - && order.getAuctionOrderType().equals(AuctionOrderTypeEnum.AUCTION_ITEMS)) - .count(); - // 拍卖订单统计-订单总金额 - BigDecimal auctionOrderTotalAmount = orderList.stream() - .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS)) - .map(Order::getTotalAmount) - .reduce(BigDecimal::add).orElse(BigDecimal.ZERO); - // 拍卖订单统计-拍卖商品总金额 - BigDecimal auctionGoodsTotalAmount = orderList.stream() - .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS) - && order.getAuctionOrderType().equals(AuctionOrderTypeEnum.REGULAR_ITEMS) - ) - .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); - // 拍卖订单统计-拍卖场总金额 - BigDecimal auctionSalesroomTotalAmount = orderList.stream() - .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS) - && order.getAuctionOrderType().equals(AuctionOrderTypeEnum.AUCTION_ITEMS)) - .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); + /* ***************************************拍卖订单统计*************************************** */ + // 拍卖订单统计-订单总数 + long auctionOrderTotalCount = orderList.stream() + .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS)) + .count(); + // 拍卖订单统计-拍卖商品订单 + long auctionGoodsOrderCount = orderList.stream() + .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS) + && order.getAuctionOrderType() + .equals(AuctionOrderTypeEnum.REGULAR_ITEMS)) + .count(); + // 拍卖订单统计-拍卖场订单 + long auctionSalesroomOrderCount = orderList.stream() + .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS) + && order.getAuctionOrderType() + .equals(AuctionOrderTypeEnum.AUCTION_ITEMS)) + .count(); + // 拍卖订单统计-订单总金额 + BigDecimal auctionOrderTotalAmount = orderList.stream() + .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS)) + .map(Order::getTotalAmount) + .reduce(BigDecimal::add).orElse(BigDecimal.ZERO); + // 拍卖订单统计-拍卖商品总金额 + BigDecimal auctionGoodsTotalAmount = orderList.stream() + .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS) + && order.getAuctionOrderType() + .equals(AuctionOrderTypeEnum.REGULAR_ITEMS) + ) + .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); + // 拍卖订单统计-拍卖场总金额 + BigDecimal auctionSalesroomTotalAmount = orderList.stream() + .filter(order -> order.getOrderFrom().equals(OrderFromEnum.AUCTION_ORDERS) + && order.getAuctionOrderType() + .equals(AuctionOrderTypeEnum.AUCTION_ITEMS)) + .map(Order::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); - mgtOrderStaticsVO.setAuctionOrderTotalCount(auctionOrderTotalCount); - mgtOrderStaticsVO.setAuctionGoodsOrderCount(auctionGoodsOrderCount); - mgtOrderStaticsVO.setAuctionSalesroomOrderCount(auctionSalesroomOrderCount); + mgtOrderStaticsVO.setAuctionOrderTotalCount(auctionOrderTotalCount); + mgtOrderStaticsVO.setAuctionGoodsOrderCount(auctionGoodsOrderCount); + mgtOrderStaticsVO.setAuctionSalesroomOrderCount(auctionSalesroomOrderCount); - mgtOrderStaticsVO.setAuctionOrderTotalAmount(auctionOrderTotalAmount); - mgtOrderStaticsVO.setAuctionGoodsTotalAmount(auctionGoodsTotalAmount); - mgtOrderStaticsVO.setAuctionSalesroomTotalAmount(auctionSalesroomTotalAmount); + mgtOrderStaticsVO.setAuctionOrderTotalAmount(auctionOrderTotalAmount); + mgtOrderStaticsVO.setAuctionGoodsTotalAmount(auctionGoodsTotalAmount); + mgtOrderStaticsVO.setAuctionSalesroomTotalAmount(auctionSalesroomTotalAmount); + } return mgtOrderStaticsVO; } @@ -310,4 +319,29 @@ .limit(numOfDaysBetween + 1) // 加1是因为包含结束日期 .collect(Collectors.toList()); } + + /** + * 业务数据导出 + * + * @param query + * @param response + */ + public void exportBusinessData(MgtOrderStaticsQuery query, HttpServletResponse response) { + MgtOrderStaticsVO overview = getOverview(query); + // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman + response.setContentType( + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 + try { + String fileName = URLEncoder.encode("业务数据", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", + "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream(), MgtOrderStaticsVO.class) + .sheet("业务数据") + .doWrite(Lists.newArrayList(overview)); + } catch (Exception e) { + throw new RuntimeException(e); + } + } } -- Gitblit v1.7.1