数据统计
This commit is contained in:
@@ -1,16 +1,26 @@
|
||||
package com.czg.service.order.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import com.czg.order.entity.OrderInfo;
|
||||
import com.czg.order.entity.ShopOrderStatistic;
|
||||
import com.czg.order.enums.PayEnums;
|
||||
import com.czg.order.param.DataSummaryProductSaleParam;
|
||||
import com.czg.order.param.DataSummaryTradeParam;
|
||||
import com.czg.order.service.DataSummaryService;
|
||||
import com.czg.order.vo.DataSummaryDateAmountVo;
|
||||
import com.czg.order.vo.DataSummaryPayTypeVo;
|
||||
import com.czg.order.vo.DataSummaryProductSaleVo;
|
||||
import com.czg.service.order.mapper.OrderInfoMapper;
|
||||
import com.czg.service.order.mapper.ShopOrderStatisticMapper;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 数据统计Service实现类
|
||||
*
|
||||
@@ -22,6 +32,8 @@ public class DataSummaryServiceImpl implements DataSummaryService {
|
||||
|
||||
@Resource
|
||||
private ShopOrderStatisticMapper shopOrderStatisticMapper;
|
||||
@Resource
|
||||
private OrderInfoMapper orderInfoMapper;
|
||||
|
||||
@Override
|
||||
public ShopOrderStatistic getTradeData(DataSummaryTradeParam param) {
|
||||
@@ -41,11 +53,73 @@ public class DataSummaryServiceImpl implements DataSummaryService {
|
||||
|
||||
@Override
|
||||
public DataSummaryDateAmountVo getSummaryAmountData(Long shopId, Integer day) {
|
||||
return new DataSummaryDateAmountVo();
|
||||
LocalDate now = LocalDate.now();
|
||||
LocalDate beginDate = now.plusDays(-day);
|
||||
DataSummaryDateAmountVo data = new DataSummaryDateAmountVo();
|
||||
List<DataSummaryDateAmountVo.TotalVo> total = new ArrayList<>();
|
||||
for (int i = 1; i <= day; i++) {
|
||||
String thisDay = beginDate.plusDays(i).format(DatePattern.NORM_DATE_FORMATTER);
|
||||
OrderInfo orderInfo = orderInfoMapper.selectOneByQuery(QueryWrapper.create()
|
||||
.select("ifnull(sum(order_amount),0) as order_amount,ifnull(sum(pay_amount),0) as pay_amount,ifnull(sum(order_amount-pay_amount),0) as discount_amount")
|
||||
.eq(OrderInfo::getShopId, shopId)
|
||||
.eq(OrderInfo::getTradeDay, thisDay)
|
||||
.isNotNull(OrderInfo::getPaidTime)
|
||||
);
|
||||
DataSummaryDateAmountVo.TotalVo totalVo = new DataSummaryDateAmountVo.TotalVo();
|
||||
if (orderInfo != null) {
|
||||
totalVo.setOrderAmount(orderInfo.getOrderAmount());
|
||||
totalVo.setActualAmount(orderInfo.getPayAmount());
|
||||
totalVo.setDiscountAmount(orderInfo.getDiscountAmount());
|
||||
}
|
||||
totalVo.setTradeDay(thisDay);
|
||||
total.add(totalVo);
|
||||
}
|
||||
data.setTotal(total);
|
||||
return data;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataSummaryPayTypeVo getSummaryPayTypeData(Long shopId, Integer day) {
|
||||
return new DataSummaryPayTypeVo();
|
||||
LocalDate now = LocalDate.now();
|
||||
LocalDate beginDate = now.plusDays(-day);
|
||||
DataSummaryPayTypeVo data = new DataSummaryPayTypeVo();
|
||||
List<DataSummaryPayTypeVo.CountPayTypeVo> total = new ArrayList<>();
|
||||
List<String> days = new ArrayList<>();
|
||||
for (int i = 1; i <= day; i++) {
|
||||
String thisDay = beginDate.plusDays(i).format(DatePattern.NORM_DATE_FORMATTER);
|
||||
days.add(thisDay);
|
||||
}
|
||||
List<OrderInfo> orderList = orderInfoMapper.selectListByQuery(QueryWrapper.create()
|
||||
.select("pay_type,count(1) as place_num")
|
||||
.eq(OrderInfo::getShopId, shopId)
|
||||
.in(OrderInfo::getTradeDay, days)
|
||||
.isNotNull(OrderInfo::getPaidTime)
|
||||
.groupBy(OrderInfo::getPayType)
|
||||
);
|
||||
|
||||
PayEnums[] pays = PayEnums.values();
|
||||
if (CollUtil.isEmpty(orderList)) {
|
||||
for (PayEnums pay : pays) {
|
||||
DataSummaryPayTypeVo.CountPayTypeVo payTypeVo = new DataSummaryPayTypeVo.CountPayTypeVo();
|
||||
payTypeVo.setPayType(pay.getMsg());
|
||||
payTypeVo.setCount(0);
|
||||
total.add(payTypeVo);
|
||||
}
|
||||
data.setCountPayType(total);
|
||||
return data;
|
||||
}
|
||||
for (PayEnums pay : pays) {
|
||||
OrderInfo orderInfo = orderList.stream().filter(order -> pay.getValue().equals(order.getPayType())).findFirst().orElse(null);
|
||||
DataSummaryPayTypeVo.CountPayTypeVo payTypeVo = new DataSummaryPayTypeVo.CountPayTypeVo();
|
||||
payTypeVo.setPayType(pay.getMsg());
|
||||
payTypeVo.setCount(0);
|
||||
if (orderInfo != null) {
|
||||
payTypeVo.setPayType(PayEnums.getText(orderInfo.getPayType()));
|
||||
payTypeVo.setCount(orderInfo.getPlaceNum());
|
||||
}
|
||||
total.add(payTypeVo);
|
||||
}
|
||||
data.setCountPayType(total);
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,8 @@
|
||||
sum(cash_pay_amount) as cash_pay_amount,
|
||||
sum(recharge_amount) as recharge_amount,
|
||||
avg(customer_unit_price) as customer_unit_price,
|
||||
avg(table_turnover_rate) as table_turnover_rate
|
||||
avg(table_turnover_rate) as table_turnover_rate,
|
||||
max(update_time) as update_time
|
||||
from tb_shop_order_statistic
|
||||
where shop_id = #{shopId}
|
||||
<if test="beginTime != null">
|
||||
|
||||
Reference in New Issue
Block a user