优化代码

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

View File

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