From c7d07f0f915d36ddd3977e22716f7aec05e36bc1 Mon Sep 17 00:00:00 2001 From: yangqingyuan Date: Thu, 22 Aug 2024 13:29:18 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E7=BB=9F=E8=AE=A1=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=A2=9E=E5=8A=A0=E9=94=80=E5=94=AE=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shop/controller/DashboardController.java | 19 ++++- .../shop/mapper/DashboardMapper.java | 28 +------ .../shop/mapper/xml/DashboardMapper.xml | 24 +++++- .../gxwebsoft/shop/param/DashBoardParam.java | 10 ++- .../shop/service/DashboardService.java | 11 +++ .../service/impl/DashboardServiceImpl.java | 78 +++++++++++++------ 6 files changed, 115 insertions(+), 55 deletions(-) diff --git a/src/main/java/com/gxwebsoft/shop/controller/DashboardController.java b/src/main/java/com/gxwebsoft/shop/controller/DashboardController.java index 2ab563e..1f0069b 100644 --- a/src/main/java/com/gxwebsoft/shop/controller/DashboardController.java +++ b/src/main/java/com/gxwebsoft/shop/controller/DashboardController.java @@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.RestController; import com.gxwebsoft.common.core.web.*; import javax.annotation.Resource; +import java.util.List; /** * 仪表盘,数据统计 @@ -35,7 +36,7 @@ public class DashboardController extends BaseController { @OperationLog @ApiOperation("可查看一天日新增的订单量、一天日销售额以及总订单量、总销售额数据\n") @GetMapping("/statistics") - public ApiResult day(DashBoardParam param) { + public ApiResult statistics(DashBoardParam param) { //默认是今天 if (param.getCreateTimeStart()==null){ @@ -52,4 +53,20 @@ public class DashboardController extends BaseController { dashboard.setEquipmentStatistics(dashboardService.equipmentStatistics(param)); return success(dashboard); } + + @OperationLog + @ApiOperation("销售额趋势图") + @GetMapping("/statistics/sales") + public ApiResult> statisticsSales(DashBoardParam param) { + + if (param.getCreateTimeStart() == null){//时间不传递,默认开始时间为最近一周 + param.setCreateTimeStart(DateUtil.formatDate(DateUtil.lastWeek())); + } + if (param.getCreateTimeEnd()==null){//结束时间为,今天 + param.setCreateTimeEnd(DateUtil.today()+" 59:59:59"); + } + + return success(dashboardService.salesAmountStatisticsList(param)); + } + } diff --git a/src/main/java/com/gxwebsoft/shop/mapper/DashboardMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/DashboardMapper.java index 842c846..02dfba8 100644 --- a/src/main/java/com/gxwebsoft/shop/mapper/DashboardMapper.java +++ b/src/main/java/com/gxwebsoft/shop/mapper/DashboardMapper.java @@ -2,18 +2,13 @@ package com.gxwebsoft.shop.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.gxwebsoft.shop.entity.Dashboard; +import com.gxwebsoft.shop.entity.OrderPay; import com.gxwebsoft.shop.param.DashBoardParam; import org.apache.ibatis.annotations.Param; -public interface DashboardMapper extends BaseMapper { +import java.util.List; - /** - * 订单统计 - * - * @param param 查询参数 - * @return OrderStatistics - */ - Dashboard.OrderStatistics orderStatistics(@Param("param") DashBoardParam param); +public interface DashboardMapper extends BaseMapper { /** * 销售额统计 @@ -21,22 +16,7 @@ public interface DashboardMapper extends BaseMapper { * @param param 查询参数 * @return SalesAmountStatistics */ - Dashboard.SalesAmountStatistics salesAmountStatistics(@Param("param") DashBoardParam param); + List selectOrderPayListRel(@Param("param") DashBoardParam param); - /** - * 用户统计 - * - * @param param 查询参数 - * @return UserStatistics - */ - Dashboard.UserStatistics userStatistics(@Param("param") DashBoardParam param); - - /** - * 设备统计 - * - * @param param 查询参数 - * @return UserStatistics - */ - Dashboard.EquipmentStatistics equipmentStatistics(@Param("param") DashBoardParam param); } diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/DashboardMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/DashboardMapper.xml index 39c03ff..4bdbbf0 100644 --- a/src/main/java/com/gxwebsoft/shop/mapper/xml/DashboardMapper.xml +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/DashboardMapper.xml @@ -16,9 +16,25 @@ - - + SELECT a.*,DATE_FORMAT(a.create_time,'%Y-%m-%d') AS createTime + FROM shop_order_pay a + + AND a.pay_status = 20 + + AND a.merchant_code = #{param.goodsId} + + + AND a.merchant_code = #{param.shopId} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + ORDER BY a.create_time desc - diff --git a/src/main/java/com/gxwebsoft/shop/param/DashBoardParam.java b/src/main/java/com/gxwebsoft/shop/param/DashBoardParam.java index 252c6a7..f5f1aa4 100644 --- a/src/main/java/com/gxwebsoft/shop/param/DashBoardParam.java +++ b/src/main/java/com/gxwebsoft/shop/param/DashBoardParam.java @@ -3,6 +3,7 @@ package com.gxwebsoft.shop.param; import com.fasterxml.jackson.annotation.JsonInclude; import com.gxwebsoft.common.core.web.BaseParam; import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; @@ -12,5 +13,12 @@ import lombok.EqualsAndHashCode; @ApiModel(value = "DashBoardParam", description = "银表盘数据统计面板参数") public class DashBoardParam extends BaseParam { private static final long serialVersionUID = 1L; - + + @ApiModelProperty(value = "所属门店ID") + private Integer shopId; + + @ApiModelProperty(value = "商品ID") + private Integer goodsId; + + } diff --git a/src/main/java/com/gxwebsoft/shop/service/DashboardService.java b/src/main/java/com/gxwebsoft/shop/service/DashboardService.java index 4115082..778fbf3 100644 --- a/src/main/java/com/gxwebsoft/shop/service/DashboardService.java +++ b/src/main/java/com/gxwebsoft/shop/service/DashboardService.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.gxwebsoft.shop.entity.Dashboard; import com.gxwebsoft.shop.param.DashBoardParam; +import java.util.List; + /** * 购物车记录表Service * @@ -45,4 +47,13 @@ public interface DashboardService extends IService { */ Dashboard.EquipmentStatistics equipmentStatistics(DashBoardParam param); + + /** + * 销售额统计趋势图 + * + * @param param 查询参数 + * @return SalesAmountStatistics + */ + List salesAmountStatisticsList(DashBoardParam param); + } diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/DashboardServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/DashboardServiceImpl.java index 72a04b5..2fee93b 100644 --- a/src/main/java/com/gxwebsoft/shop/service/impl/DashboardServiceImpl.java +++ b/src/main/java/com/gxwebsoft/shop/service/impl/DashboardServiceImpl.java @@ -19,7 +19,8 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; /** * 仪表盘,数据统计 @@ -52,14 +53,14 @@ public class DashboardServiceImpl extends ServiceImpl orderPayList=orderPayService.list(Wrappers.lambdaQuery(OrderPay.class) - .eq(OrderPay::getPayStatus,20) - .ge(OrderPay::getCreateTime,param.getCreateTimeStart()) - .le(OrderPay::getCreateTime,param.getCreateTimeEnd())); - if (null!=orderPayList && !orderPayList.isEmpty()){ - dayTotalSale= orderPayList.stream().map(OrderPay::getOrderPrice).reduce(BigDecimal.ZERO,BigDecimal::add); + BigDecimal dayTotalSale = BigDecimal.ZERO; + List orderPayList = orderPayService.list(Wrappers.lambdaQuery(OrderPay.class) + .eq(OrderPay::getPayStatus, 20) + .ge(OrderPay::getCreateTime, param.getCreateTimeStart()) + .le(OrderPay::getCreateTime, param.getCreateTimeEnd())); + if (null != orderPayList && !orderPayList.isEmpty()) { + dayTotalSale = orderPayList.stream().map(OrderPay::getOrderPrice).reduce(BigDecimal.ZERO, BigDecimal::add); } //总销售额 - BigDecimal totalSale =BigDecimal.ZERO; - List totalOrderPayList=orderPayService.list(Wrappers.lambdaQuery(OrderPay.class) - .eq(OrderPay::getDeleted,0) - .eq(OrderPay::getPayStatus,20));//过滤付款的 TODO 这里不考虑巨量数据 - if (null!=totalOrderPayList && !orderPayList.isEmpty()){ - totalSale= totalOrderPayList.stream().map(OrderPay::getOrderPrice).reduce(BigDecimal.ZERO,BigDecimal::add); + BigDecimal totalSale = BigDecimal.ZERO; + List totalOrderPayList = orderPayService.list(Wrappers.lambdaQuery(OrderPay.class) + .eq(OrderPay::getDeleted, 0) + .eq(OrderPay::getPayStatus, 20));//过滤付款的 TODO 这里不考虑巨量数据 + if (null != totalOrderPayList && !orderPayList.isEmpty()) { + totalSale = totalOrderPayList.stream().map(OrderPay::getOrderPrice).reduce(BigDecimal.ZERO, BigDecimal::add); } //销售额统计 @@ -116,12 +117,12 @@ public class DashboardServiceImpl extends ServiceImpl + */ + @Override + public List salesAmountStatisticsList(DashBoardParam param) { + List orderPayList = baseMapper.selectOrderPayListRel(param); + Map> orderPayListMap = orderPayList.stream().collect(Collectors.groupingBy(OrderPay::getCreateTime)); + + List salesAmountStatisticsList = new ArrayList<>(); + orderPayListMap.forEach((date, orderPays) -> { + Date statisticsDate = DateUtil.parseDate(DateUtil.formatDate(date));//将时间转化为 + BigDecimal dailySale = orderPays.stream().map(OrderPay::getOrderPrice).reduce(BigDecimal.ZERO, BigDecimal::add);//将相同日期的订单额相加 + Dashboard.SalesAmountStatistics statistics = new Dashboard.SalesAmountStatistics(); + statistics.setDailySale(dailySale); + statistics.setStartStatisticsDate(statisticsDate); + statistics.setEndStatisticsDate(statisticsDate); + salesAmountStatisticsList.add(statistics); + }); + //按照时间排序 + Collections.sort(salesAmountStatisticsList, Comparator.comparing(Dashboard.BaseStatistics::getStartStatisticsDate)); + return salesAmountStatisticsList; + } + }