feat:统计接口增加销售额

This commit is contained in:
yangqingyuan
2024-08-22 13:29:18 +08:00
parent d71f723eb7
commit c7d07f0f91
6 changed files with 115 additions and 55 deletions

View File

@@ -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<Dashboard> day(DashBoardParam param) {
public ApiResult<Dashboard> 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<List<Dashboard.SalesAmountStatistics>> 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));
}
}

View File

@@ -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<Dashboard> {
import java.util.List;
/**
* 订单统计
*
* @param param 查询参数
* @return OrderStatistics
*/
Dashboard.OrderStatistics orderStatistics(@Param("param") DashBoardParam param);
public interface DashboardMapper extends BaseMapper<Dashboard> {
/**
* 销售额统计
@@ -21,22 +16,7 @@ public interface DashboardMapper extends BaseMapper<Dashboard> {
* @param param 查询参数
* @return SalesAmountStatistics
*/
Dashboard.SalesAmountStatistics salesAmountStatistics(@Param("param") DashBoardParam param);
List<OrderPay> 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);
}

View File

@@ -16,9 +16,25 @@
<include refid="selectSql"></include>
</select>
<!-- 查询全部 -->
<select id="selectListRel" resultType="com.gxwebsoft.shop.entity.Dashboard">
<include refid="selectSql"></include>
<!-- 查询全部支付订单 -->
<select id="selectOrderPayListRel" resultType="com.gxwebsoft.shop.entity.OrderPay">
SELECT a.*,DATE_FORMAT(a.create_time,'%Y-%m-%d') AS createTime
FROM shop_order_pay a
<where>
AND a.pay_status = 20
<if test="param.goodsId != null">
AND a.merchant_code = #{param.goodsId}
</if>
<if test="param.shopId != null">
AND a.merchant_code = #{param.shopId}
</if>
<if test="param.createTimeStart != null">
AND a.create_time &gt;= #{param.createTimeStart}
</if>
<if test="param.createTimeEnd != null">
AND a.create_time &lt;= #{param.createTimeEnd}
</if>
</where>
ORDER BY a.create_time desc
</select>
</mapper>

View File

@@ -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;
@@ -13,4 +14,11 @@ import lombok.EqualsAndHashCode;
public class DashBoardParam extends BaseParam {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "所属门店ID")
private Integer shopId;
@ApiModelProperty(value = "商品ID")
private Integer goodsId;
}

View File

@@ -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> {
*/
Dashboard.EquipmentStatistics equipmentStatistics(DashBoardParam param);
/**
* 销售额统计趋势图
*
* @param param 查询参数
* @return SalesAmountStatistics
*/
List<Dashboard.SalesAmountStatistics> salesAmountStatisticsList(DashBoardParam param);
}

View File

@@ -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;
/**
* 仪表盘,数据统计
@@ -158,4 +159,31 @@ public class DashboardServiceImpl extends ServiceImpl<DashboardMapper, Dashboard
return equipmentStatistics;
}
/**
* 销售额统计趋势图
*
* @param param 查询参数
* @return List<SalesAmountStatistics>
*/
@Override
public List<Dashboard.SalesAmountStatistics> salesAmountStatisticsList(DashBoardParam param) {
List<OrderPay> orderPayList = baseMapper.selectOrderPayListRel(param);
Map<Date, List<OrderPay>> orderPayListMap = orderPayList.stream().collect(Collectors.groupingBy(OrderPay::getCreateTime));
List<Dashboard.SalesAmountStatistics> 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;
}
}