优化代码

This commit is contained in:
qjq
2024-11-06 15:37:45 +08:00
parent 0820fa5e04
commit 0d5a00bc9d
2 changed files with 17 additions and 62 deletions

View File

@ -1,14 +1,11 @@
package cn.iocoder.yudao.module.member.service.statisticsspacecapsuleorder;
import cn.hutool.core.date.*;
import cn.hutool.core.util.ObjUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.member.controller.admin.orderspacecapsule.vo.OrderSpaceCapsuleStatisticsComVo;
import cn.iocoder.yudao.module.member.controller.admin.orderspacecapsule.vo.OrderSpaceCapsuleStatisticsVo;
import cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo.StatisticsSpaceCapsuleOrderPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo.StatisticsSpaceCapsuleOrderSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.orderspacecapsule.OrderSpaceCapsuleDO;
import cn.iocoder.yudao.module.member.dal.dataobject.statisticsspacecapsuleorder.StatisticsSpaceCapsuleOrderDO;
import cn.iocoder.yudao.module.member.dal.mysql.orderspacecapsule.OrderSpaceCapsuleMapper;
import cn.iocoder.yudao.module.member.dal.mysql.statisticsspacecapsuleorder.StatisticsSpaceCapsuleOrderMapper;
@ -16,15 +13,11 @@ import cn.iocoder.yudao.module.member.enums.SpaceCapsuleOrderEnum;
import cn.iocoder.yudao.module.member.service.orderspacecapsule.OrderSpaceCapsuleServiceImpl;
import cn.iocoder.yudao.module.system.api.carteen.CarteenApi;
import cn.iocoder.yudao.module.system.api.carteen.dto.CarteenRespDto;
import org.checkerframework.checker.units.qual.C;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.stream.Collectors;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@ -88,55 +81,23 @@ public class StatisticsSpaceCapsuleOrderServiceImpl implements StatisticsSpaceCa
return statisticsSpaceCapsuleOrderMapper.selectPage(pageReqVO);
}
public List<StatisticsSpaceCapsuleOrderDO> statistics(Date startTime,Date endTime){
List<OrderSpaceCapsuleDO> orderSpaceCapsuleDOS = orderSpaceCapsuleMapper.selectList(new LambdaQueryWrapperX<OrderSpaceCapsuleDO>()
.eq(OrderSpaceCapsuleDO::getStatus, SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_DONE.getCode())
.between(OrderSpaceCapsuleDO::getCreateTime, startTime, endTime)
);
List<CarteenRespDto> carteenList = carteenApi.getCarteenList();
List<StatisticsSpaceCapsuleOrderDO> list=new ArrayList<>();
if(ObjUtil.isNotEmpty(orderSpaceCapsuleDOS)){
Map<Long, List<OrderSpaceCapsuleDO>> collect = orderSpaceCapsuleDOS.stream().collect(Collectors.groupingBy(OrderSpaceCapsuleDO::getCarteenId));
for (Map.Entry<Long, List<OrderSpaceCapsuleDO>> entry : collect.entrySet()) {
Long carteenId = entry.getKey();
List<OrderSpaceCapsuleDO> value = entry.getValue();
StatisticsSpaceCapsuleOrderDO orderDO=new StatisticsSpaceCapsuleOrderDO();
BigDecimal totalMoney = value.stream()
.map(OrderSpaceCapsuleDO::getMoney)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
orderDO.setTotalMoney(totalMoney);
orderDO.setTotalOrder(value.size());
BigDecimal minute = value.stream()
.map(f -> new BigDecimal(f.getComboMinutes() * f.getComboNum()))
.reduce(BigDecimal.ZERO, BigDecimal::add);
orderDO.setTotalMinute(minute);
orderDO.setCarteenId(carteenId);
BigDecimal refundMoney = value.stream()
.map(OrderSpaceCapsuleDO::getRefundMoney)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
orderDO.setRefundMoney(refundMoney);
int i = value.stream()
.map(f -> new BigDecimal(f.getComboNum()))
.reduce(BigDecimal.ZERO, BigDecimal::add).intValue();
orderDO.setTotalPackageSum(i);
CarteenRespDto carteenById = carteenApi.getCarteenById(orderDO.getCarteenId());
orderDO.setCarteenName(carteenById.getStoresName());
int size = (int) value.stream().map(OrderSpaceCapsuleDO::getUserId)
.filter(Objects::nonNull)
.distinct().count();
orderDO.setCreateTime(LocalDateTimeUtil.offset(LocalDateTime.now(),-1, ChronoUnit.DAYS));
orderDO.setTotalCustomer(size);
list.add(orderDO);
}
for (CarteenRespDto dto : carteenList) {
Long id = dto.getId();
OrderSpaceCapsuleStatisticsVo vo = orderSpaceCapsuleMapper.compDay(SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_DONE.getCode(), startTime, endTime, id);
vo.setRemark(DateUtil.format(startTime,DatePattern.NORM_DATE_PATTERN));
StatisticsSpaceCapsuleOrderDO bean = BeanUtils.toBean(vo, StatisticsSpaceCapsuleOrderDO.class);
list.add(bean);
}
return list;
}
@Override
public OrderSpaceCapsuleStatisticsVo compDayMon(Long carteenId, String type, Date time) {
if("day".equals(type)){
if("0".equals(type)){
return compDay(carteenId,time);
}else if("month".equals(type)){
}else if("2".equals(type)){
return compMonth(carteenId);
}
return null;
@ -149,16 +110,15 @@ public class StatisticsSpaceCapsuleOrderServiceImpl implements StatisticsSpaceCa
*/
public OrderSpaceCapsuleStatisticsVo compDay(Long carteenId,Date end){
DateTime start = DateUtil.beginOfDay(end);
//获取今天的信息
OrderSpaceCapsuleStatisticsVo orvo = orderSpaceCapsuleMapper.compDay(SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_DONE.getCode(), start, end, carteenId);
//获取昨日的信息
DateTime dateTime = DateUtil.offsetDay(start, -1);
DateTime start2 = DateUtil.beginOfDay(dateTime);
DateTime end2 = DateUtil.endOfDay(dateTime);
BigDecimal compMoney = orderSpaceCapsuleService.getTotalMoney(carteenId, start2, end2);
orvo.setCompMoney(compMoney);
DateTime dateTime1 = DateUtil.beginOfMonth(end2);
DateRange range = DateUtil.range(dateTime1, end2, DateField.DAY_OF_MONTH);
DateTime dateTime2 = DateUtil.endOfMonth(dateTime1);
DateRange range = DateUtil.range(dateTime1, dateTime2, DateField.DAY_OF_MONTH);
List<OrderSpaceCapsuleStatisticsComVo> list=new ArrayList<>();
for (DateTime time : range) {
DateTime var1 = DateUtil.beginOfDay(time);
@ -166,20 +126,17 @@ public class StatisticsSpaceCapsuleOrderServiceImpl implements StatisticsSpaceCa
OrderSpaceCapsuleStatisticsComVo vo = orderSpaceCapsuleMapper.compMoney(var1, var2);
if(vo==null){
OrderSpaceCapsuleStatisticsComVo vo1=new OrderSpaceCapsuleStatisticsComVo();
vo1.setTotalMoney(new BigDecimal(0));
vo=vo1;
}
if(DateUtil.isSameDay(end, var2)){
vo.setDate(orvo.getTotalMoney()+"");
}
vo.setDate(DateUtil.format(var2,"d"));
list.add(vo) ;
}
orvo.setLists(list);
List<OrderSpaceCapsuleStatisticsComVo> lists = orvo.getLists();
OrderSpaceCapsuleStatisticsComVo vo=new OrderSpaceCapsuleStatisticsComVo();
vo.setTotalMoney(orvo.getTotalMoney());
vo.setDate(DateUtil.format(DateUtil.date(),"d"));
lists.add(vo);
orvo.setLists(lists);
return orvo;
}
/**
@ -190,15 +147,12 @@ public class StatisticsSpaceCapsuleOrderServiceImpl implements StatisticsSpaceCa
public OrderSpaceCapsuleStatisticsVo compMonth(Long carteenId){
DateTime end = DateUtil.date();
DateTime start = DateUtil.beginOfMonth(end);
//这个月
OrderSpaceCapsuleStatisticsVo orvo = orderSpaceCapsuleMapper.compDay(SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_DONE.getCode(), start, end, carteenId);
//获取上个月的信息
DateTime dateTime = DateUtil.offsetMonth(start, -1);
DateTime start2 = DateUtil.beginOfMonth(dateTime);
DateTime end2 = DateUtil.endOfMonth(dateTime);
BigDecimal compMoney = orderSpaceCapsuleService.getTotalMoney(carteenId, start2, end2);
orvo.setCompMoney(compMoney);
//一年开始和结束
DateTime var1 = DateUtil.beginOfYear(start2);
DateTime var2 = DateUtil.endOfYear(start2);
DateRange range = DateUtil.range(var1, var2, DateField.MONTH);

View File

@ -19,7 +19,8 @@
SUM(refund_money) AS refundMoney,
SUM(combo_num) AS totalPackageSum,
carteen_id AS carteenId,
carteen_name AS carteenName
carteen_name AS carteenName,
COUNT(DISTINCT user_id) AS totalCustomer
FROM
t_order_space_capsule
WHERE