跟新订单统计为实时跟新
This commit is contained in:
@ -1,46 +1,32 @@
|
||||
package cn.iocoder.yudao.module.member.job;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
|
||||
import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
|
||||
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.statisticsspacecapsuleorder.StatisticsSpaceCapsuleOrderDO;
|
||||
|
||||
import cn.iocoder.yudao.module.member.dal.mysql.statisticsspacecapsuleorder.StatisticsSpaceCapsuleOrderMapper;
|
||||
import cn.iocoder.yudao.module.member.service.statisticsspacecapsuleorder.StatisticsSpaceCapsuleOrderService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
public class StatisticsSpaceCapsuleOrderJob implements JobHandler {
|
||||
@Resource
|
||||
private StatisticsSpaceCapsuleOrderMapper statisticsSpaceCapsuleOrderMapper;
|
||||
@Resource
|
||||
private StatisticsSpaceCapsuleOrderService statisticsSpaceCapsuleOrderService;
|
||||
private StatisticsSpaceCapsuleOrderService capsuleOrderService;
|
||||
@Override
|
||||
@TenantIgnore
|
||||
public String execute(String param) throws Exception {
|
||||
log.info("开始进行定时统计================》");
|
||||
DateTime date = DateUtil.date();
|
||||
DateTime dateTime = DateUtil.offsetDay(date, -1);
|
||||
//获取开始时间
|
||||
DateTime startTime = DateUtil.beginOfDay(dateTime);
|
||||
//结束时间
|
||||
DateTime endTime = DateUtil.endOfDay(dateTime);
|
||||
List<StatisticsSpaceCapsuleOrderDO> statistics = statisticsSpaceCapsuleOrderService.statistics(startTime, endTime);
|
||||
if(ObjUtil.isNotEmpty(statistics)){
|
||||
log.info("定时统计数量{}",statistics.size());
|
||||
statisticsSpaceCapsuleOrderMapper.insertBatch(statistics);
|
||||
return "定时统计数量"+ statistics.size();
|
||||
}else{
|
||||
return "没有定时统计数量";
|
||||
}
|
||||
capsuleOrderService.init();
|
||||
return "初始化太空舱订单成功";
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,8 +1,11 @@
|
||||
package cn.iocoder.yudao.module.member.service.orderspacecapsule;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import cn.hutool.core.lang.UUID;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import cn.hutool.extra.qrcode.QrCodeUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import cn.hutool.json.JSONConfig;
|
||||
@ -15,15 +18,20 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.orderspacecapsule.vo.*;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.orderspacecapsule.OrderSpaceCapsuleDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.spacecapsule.SpaceCapsuleDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.statisticsspacecapsuleorder.StatisticsSpaceCapsuleOrderDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
|
||||
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.enums.*;
|
||||
import cn.iocoder.yudao.module.member.service.amount.DeductionService;
|
||||
import cn.iocoder.yudao.module.member.service.carteenmoney.CarteenMoneyService;
|
||||
import cn.iocoder.yudao.module.member.service.spacecapsule.SpaceCapsuleService;
|
||||
import cn.iocoder.yudao.module.member.service.statisticsspacecapsuleorder.StatisticsSpaceCapsuleOrderService;
|
||||
import cn.iocoder.yudao.module.member.service.user.MemberUserService;
|
||||
import cn.iocoder.yudao.module.system.api.carteen.CarteenApi;
|
||||
import cn.iocoder.yudao.module.system.api.carteen.dto.CarteenRespDto;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import javax.imageio.ImageIO;
|
||||
@ -42,6 +50,7 @@ import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.Duration;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -60,6 +69,8 @@ public class OrderSpaceCapsuleServiceImpl implements OrderSpaceCapsuleService {
|
||||
@Resource
|
||||
private OrderSpaceCapsuleMapper orderSpaceCapsuleMapper;
|
||||
@Resource
|
||||
private StatisticsSpaceCapsuleOrderService statisticsSpaceCapsuleOrderService;
|
||||
@Resource
|
||||
private DeductionService deductionService;
|
||||
@Resource
|
||||
private SpaceCapsuleService spaceCapsuleService;
|
||||
@ -131,7 +142,7 @@ public class OrderSpaceCapsuleServiceImpl implements OrderSpaceCapsuleService {
|
||||
updateObj.setOrderEndTime(LocalDateTime.now());
|
||||
}else if(updateObj.getStatus().equals(SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_DONE.getCode())){
|
||||
updateObj.setSpaceCapsuleId(spaceCapsule.getId());
|
||||
updateObj.setOrderEndTime(LocalDateTime.now());
|
||||
updateObj.setOrderEndTime(LocalDateTimeUtil.offset(updateObj.getOrderStartTime(), (long) updateObj.getComboNum() *updateObj.getComboMinutes(), ChronoUnit.MINUTES));
|
||||
updateSpaceCapsuleStatus(spaceCapsule, SpaceCapsuleEnum.SPACE_CAPSULE_ENUM_FREE_TIME.getCode());
|
||||
}else if(updateObj.getStatus().equals(SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_IN_USE.getCode())){
|
||||
if(currentStatus.equals(SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_UNUSED.getCode())
|
||||
@ -145,6 +156,10 @@ public class OrderSpaceCapsuleServiceImpl implements OrderSpaceCapsuleService {
|
||||
}
|
||||
// 更新数据库
|
||||
orderSpaceCapsuleMapper.updateById(updateObj);
|
||||
//单独处理
|
||||
if(updateObj.getStatus().equals(SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_DONE.getCode()) || updateObj.getStatus().equals(SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_REFUNDED.getCode()) ){
|
||||
statisticsSpaceCapsuleOrderService.updateStatistics(updateObj);
|
||||
}
|
||||
}
|
||||
// 处理退款逻辑
|
||||
private void handleRefund(OrderSpaceCapsuleDO updateObj, Integer currentStatus) {
|
||||
|
@ -1,11 +1,13 @@
|
||||
package cn.iocoder.yudao.module.member.service.statisticsspacecapsuleorder;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.orderspacecapsule.vo.OrderSpaceCapsuleSaveReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.orderspacecapsule.vo.OrderSpaceCapsuleStatisticsVo;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo.SpaceCapsuleOrderNameRespVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo.SpaceCapsuleOrderReqVO;
|
||||
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 java.util.*;
|
||||
@ -58,4 +60,11 @@ public interface StatisticsSpaceCapsuleOrderService {
|
||||
List<StatisticsSpaceCapsuleOrderDO> statistics(Date startTime,Date endTime);
|
||||
OrderSpaceCapsuleStatisticsVo compDayMon(Long carteenId,String type,Date time);
|
||||
List<SpaceCapsuleOrderNameRespVO> getStatisticsSpaceCapsuleOrder(SpaceCapsuleOrderReqVO vo);
|
||||
|
||||
/**
|
||||
* 实时跟新太空舱统计
|
||||
* @param vo
|
||||
*/
|
||||
void updateStatistics(OrderSpaceCapsuleDO vo);
|
||||
void init();
|
||||
}
|
@ -1,14 +1,18 @@
|
||||
package cn.iocoder.yudao.module.member.service.statisticsspacecapsuleorder;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
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.OrderSpaceCapsuleSaveReqVO;
|
||||
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.SpaceCapsuleOrderNameRespVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.statisticsspacecapsuleorder.vo.SpaceCapsuleOrderReqVO;
|
||||
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.spacecapsule.SpaceCapsuleDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.statisticsspacecapsuleorder.StatisticsSpaceCapsuleOrderDO;
|
||||
import cn.iocoder.yudao.module.member.dal.mysql.orderspacecapsule.OrderSpaceCapsuleMapper;
|
||||
@ -18,6 +22,7 @@ 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.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@ -43,8 +48,6 @@ public class StatisticsSpaceCapsuleOrderServiceImpl implements StatisticsSpaceCa
|
||||
private SpaceCapsuleMapper spaceCapsuleMapper;
|
||||
@Resource
|
||||
private StatisticsSpaceCapsuleOrderMapper statisticsSpaceCapsuleOrderMapper;
|
||||
@Resource
|
||||
private OrderSpaceCapsuleServiceImpl orderSpaceCapsuleService;
|
||||
@Override
|
||||
public Long createStatisticsSpaceCapsuleOrder(StatisticsSpaceCapsuleOrderSaveReqVO createReqVO) {
|
||||
// 插入
|
||||
@ -90,7 +93,7 @@ public class StatisticsSpaceCapsuleOrderServiceImpl implements StatisticsSpaceCa
|
||||
List<CarteenRespDto> carteenList = carteenApi.getCarteenList();
|
||||
List<StatisticsSpaceCapsuleOrderDO> list=new ArrayList<>();
|
||||
for (CarteenRespDto dto : carteenList) {
|
||||
Long id = dto.getId();
|
||||
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);
|
||||
@ -126,8 +129,64 @@ public class StatisticsSpaceCapsuleOrderServiceImpl implements StatisticsSpaceCa
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateStatistics(OrderSpaceCapsuleDO vo) {
|
||||
DateTime date = DateUtil.date();
|
||||
DateTime start = DateUtil.beginOfDay(date);
|
||||
DateTime end = DateUtil.endOfDay(date);
|
||||
StatisticsSpaceCapsuleOrderDO orderDO = statisticsSpaceCapsuleOrderMapper.selectOne(new LambdaQueryWrapperX<StatisticsSpaceCapsuleOrderDO>()
|
||||
.eq(StatisticsSpaceCapsuleOrderDO::getCarteenId, vo.getCarteenId())
|
||||
.between(StatisticsSpaceCapsuleOrderDO::getCreateTime, start, end)
|
||||
.last(" limit 1")
|
||||
);
|
||||
if(ObjUtil.isNotEmpty(orderDO)){
|
||||
OrderSpaceCapsuleDO orderSpaceCapsuleDO = orderSpaceCapsuleMapper.selectById(vo.getId());
|
||||
updateStatistics(orderDO,orderSpaceCapsuleDO);
|
||||
statisticsSpaceCapsuleOrderMapper.updateById(orderDO);
|
||||
}else{
|
||||
CarteenRespDto carteenById = carteenApi.getCarteenById(vo.getCarteenId());
|
||||
StatisticsSpaceCapsuleOrderDO statisticsSpaceCapsuleOrderDO = getStatisticsSpaceCapsuleOrderDO(carteenById);
|
||||
statisticsSpaceCapsuleOrderMapper.insert(statisticsSpaceCapsuleOrderDO);
|
||||
this.updateStatistics(vo);
|
||||
}
|
||||
}
|
||||
public void updateStatistics( StatisticsSpaceCapsuleOrderDO orderDO,OrderSpaceCapsuleDO vo) {
|
||||
//进行运算加
|
||||
orderDO.setTotalMoney(orderDO.getTotalMoney().add(vo.getMoney()));
|
||||
orderDO.setTotalOrder(orderDO.getTotalOrder()+1);
|
||||
orderDO.setTotalMinute(orderDO.getTotalMinute().add(new BigDecimal(vo.getComboMinutes()*vo.getComboNum())));
|
||||
orderDO.setRefundMoney(orderDO.getRefundMoney().add(vo.getRefundMoney() == null ? BigDecimal.ZERO:vo.getRefundMoney()));
|
||||
orderDO.setTotalPackageSum(orderDO.getTotalPackageSum()+vo.getComboNum());
|
||||
orderDO.setTotalCustomer(orderDO.getTotalCustomer()+1);
|
||||
}
|
||||
@Override
|
||||
public void init() {
|
||||
List<StatisticsSpaceCapsuleOrderDO> list=new ArrayList<>();
|
||||
for (CarteenRespDto carteenRespDto : carteenApi.getCarteenList()) {
|
||||
StatisticsSpaceCapsuleOrderDO orderDO = getStatisticsSpaceCapsuleOrderDO(carteenRespDto);
|
||||
list.add(orderDO);
|
||||
}
|
||||
if(CollUtil.isNotEmpty(list)) {
|
||||
statisticsSpaceCapsuleOrderMapper.insertBatch(list);
|
||||
}
|
||||
}
|
||||
private static StatisticsSpaceCapsuleOrderDO getStatisticsSpaceCapsuleOrderDO(CarteenRespDto carteenRespDto) {
|
||||
DateTime date = DateUtil.date();
|
||||
StatisticsSpaceCapsuleOrderDO orderDO=new StatisticsSpaceCapsuleOrderDO();
|
||||
orderDO.setTotalMoney(BigDecimal.ZERO);
|
||||
orderDO.setTotalOrder(0);
|
||||
orderDO.setTotalMinute(BigDecimal.ZERO);
|
||||
orderDO.setCarteenId(carteenRespDto.getId());
|
||||
orderDO.setRefundMoney(BigDecimal.ZERO);
|
||||
orderDO.setTotalPackageSum(0);
|
||||
orderDO.setCarteenName(carteenRespDto.getStoresName());
|
||||
orderDO.setRemark(DateUtil.format(date, DatePattern.NORM_DATE_PATTERN));
|
||||
orderDO.setTotalCustomer(0);
|
||||
return orderDO;
|
||||
}
|
||||
public SpaceCapsuleOrderNameRespVO getStatisticsSpaceCapsuleOrder1(Long id,Date start,Date end){
|
||||
return orderSpaceCapsuleMapper.compDay1(SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_DONE.getCode(),start,end,id);
|
||||
return orderSpaceCapsuleMapper.compDay1(SpaceCapsuleOrderEnum.SPACE_CAPSULE_ORDER_ENUM_DONE.getCode(),start,end,id);
|
||||
}
|
||||
/**
|
||||
* 日报
|
||||
|
Reference in New Issue
Block a user