feat:统计接口增加销售额
This commit is contained in:
@@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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 >= #{param.createTimeStart}
|
||||
</if>
|
||||
<if test="param.createTimeEnd != null">
|
||||
AND a.create_time <= #{param.createTimeEnd}
|
||||
</if>
|
||||
</where>
|
||||
ORDER BY a.create_time desc
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
@@ -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<DashboardMapper, Dashboard
|
||||
public Dashboard.OrderStatistics orderStatistics(DashBoardParam param) {
|
||||
//某日订单数
|
||||
int dayNewOrderNum = orderService.count(Wrappers.lambdaQuery(Order.class)
|
||||
.ge(Order::getCreateTime,param.getCreateTimeStart())
|
||||
.le(Order::getCreateTime,param.getCreateTimeEnd()));
|
||||
.ge(Order::getCreateTime, param.getCreateTimeStart())
|
||||
.le(Order::getCreateTime, param.getCreateTimeEnd()));
|
||||
|
||||
//订单总数
|
||||
int totalOrderNum = orderService.count(Wrappers.lambdaQuery(Order.class)
|
||||
.eq(Order::getIsRenew,0)//非继费订单
|
||||
.eq(Order::getIsFreeze,1)//交押金
|
||||
.eq(Order::getDeleted,0));//注意:该过滤方式跟订单管理一致 TODO 这里不考虑巨量数据
|
||||
.eq(Order::getIsRenew, 0)//非继费订单
|
||||
.eq(Order::getIsFreeze, 1)//交押金
|
||||
.eq(Order::getDeleted, 0));//注意:该过滤方式跟订单管理一致 TODO 这里不考虑巨量数据
|
||||
//订单统计
|
||||
Dashboard.OrderStatistics orderStatistics = new Dashboard.OrderStatistics();
|
||||
orderStatistics.setStartStatisticsDate(DateUtil.parse(param.getCreateTimeStart()));
|
||||
@@ -78,22 +79,22 @@ public class DashboardServiceImpl extends ServiceImpl<DashboardMapper, Dashboard
|
||||
@Override
|
||||
public Dashboard.SalesAmountStatistics salesAmountStatistics(DashBoardParam param) {
|
||||
//某日销售额
|
||||
BigDecimal dayTotalSale =BigDecimal.ZERO;
|
||||
List<OrderPay> 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<OrderPay> 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<OrderPay> 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<OrderPay> 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<DashboardMapper, Dashboard
|
||||
public Dashboard.UserStatistics userStatistics(DashBoardParam param) {
|
||||
//某日新增用户数
|
||||
int dailyNewUsers = userService.count(Wrappers.lambdaQuery(User.class)
|
||||
.ge(User::getCreateTime,param.getCreateTimeStart())
|
||||
.le(User::getCreateTime,param.getCreateTimeEnd()));
|
||||
.ge(User::getCreateTime, param.getCreateTimeStart())
|
||||
.le(User::getCreateTime, param.getCreateTimeEnd()));
|
||||
|
||||
//用户总数
|
||||
int totalUser = userService.count(Wrappers.lambdaQuery(User.class)
|
||||
.eq(User::getDeleted,0));//TODO 这里不考虑巨量数据
|
||||
.eq(User::getDeleted, 0));//TODO 这里不考虑巨量数据
|
||||
|
||||
//用户统计
|
||||
Dashboard.UserStatistics userStatistics = new Dashboard.UserStatistics();
|
||||
@@ -142,12 +143,12 @@ public class DashboardServiceImpl extends ServiceImpl<DashboardMapper, Dashboard
|
||||
public Dashboard.EquipmentStatistics equipmentStatistics(DashBoardParam param) {
|
||||
//某日新增设备
|
||||
int dailyEquipment = equipmentService.count(Wrappers.lambdaQuery(Equipment.class)
|
||||
.ge(Equipment::getCreateTime,param.getCreateTimeStart())
|
||||
.le(Equipment::getCreateTime,param.getCreateTimeEnd()));
|
||||
.ge(Equipment::getCreateTime, param.getCreateTimeStart())
|
||||
.le(Equipment::getCreateTime, param.getCreateTimeEnd()));
|
||||
|
||||
//设备总数
|
||||
int totalEquipment = equipmentService.count(Wrappers.lambdaQuery(Equipment.class)
|
||||
.eq(Equipment::getDeleted,0));//TODO 这里不考虑巨量数据
|
||||
.eq(Equipment::getDeleted, 0));//TODO 这里不考虑巨量数据
|
||||
|
||||
//设备统计
|
||||
Dashboard.EquipmentStatistics equipmentStatistics = new Dashboard.EquipmentStatistics();
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user