每日统计
This commit is contained in:
@ -72,5 +72,5 @@ public class BusinessRespVO {
|
|||||||
*/
|
*/
|
||||||
private BigDecimal withdrawal;
|
private BigDecimal withdrawal;
|
||||||
|
|
||||||
|
private BigDecimal reduce;
|
||||||
}
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
package cn.iocoder.yudao.module.member.controller.admin.business.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class StatisticsVo {
|
||||||
|
private Long orderId;
|
||||||
|
private BigDecimal totalMoney;
|
||||||
|
private BigDecimal reduceMoney;
|
||||||
|
private Long carteenId;
|
||||||
|
private LocalDateTime time;
|
||||||
|
private int order_sum;
|
||||||
|
|
||||||
|
}
|
@ -9,9 +9,6 @@ import java.math.BigDecimal;
|
|||||||
@Data
|
@Data
|
||||||
public class OrderExcelVO {
|
public class OrderExcelVO {
|
||||||
|
|
||||||
@ExcelProperty("日期")
|
|
||||||
private String dayTime;
|
|
||||||
|
|
||||||
@ExcelProperty("用户名")
|
@ExcelProperty("用户名")
|
||||||
private String nickname;
|
private String nickname;
|
||||||
|
|
||||||
@ -39,4 +36,7 @@ public class OrderExcelVO {
|
|||||||
@NumberFormat("#0.00")
|
@NumberFormat("#0.00")
|
||||||
private BigDecimal price;
|
private BigDecimal price;
|
||||||
|
|
||||||
|
@ExcelProperty("日期")
|
||||||
|
private String dayTime;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -55,4 +55,9 @@ public class AppOrderDetailRespVO {
|
|||||||
*/
|
*/
|
||||||
private BigDecimal dishesNumber;
|
private BigDecimal dishesNumber;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 菜品单价
|
||||||
|
*/
|
||||||
|
private BigDecimal unitPrice;
|
||||||
|
|
||||||
}
|
}
|
@ -88,4 +88,7 @@ public class BusinessDO extends BaseDO {
|
|||||||
*/
|
*/
|
||||||
private Long carteenId;
|
private Long carteenId;
|
||||||
|
|
||||||
|
|
||||||
|
private BigDecimal reduce;
|
||||||
|
|
||||||
}
|
}
|
@ -6,6 +6,9 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
|||||||
import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessPageReqVO;
|
import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessPageReqVO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.business.BusinessDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.business.BusinessDO;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.apache.ibatis.annotations.Select;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 营业统计 Mapper
|
* 营业统计 Mapper
|
||||||
@ -32,4 +35,7 @@ public interface BusinessMapper extends BaseMapperX<BusinessDO> {
|
|||||||
.orderByDesc(BusinessDO::getId));
|
.orderByDesc(BusinessDO::getId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Select("select id from t_carteen where deleted = false")
|
||||||
|
List<Long> getAllStoreId();
|
||||||
|
|
||||||
}
|
}
|
@ -4,10 +4,12 @@ import cn.hutool.core.collection.CollectionUtil;
|
|||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
|
import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
|
||||||
import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
|
import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.business.vo.StatisticsVo;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.diningplates.DiningPlatesDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.diningplates.DiningPlatesDO;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO;
|
||||||
import cn.iocoder.yudao.module.member.enums.TimePeriodEnum;
|
import cn.iocoder.yudao.module.member.enums.TimePeriodEnum;
|
||||||
|
import cn.iocoder.yudao.module.member.service.business.BusinessService;
|
||||||
import cn.iocoder.yudao.module.member.service.card.CardService;
|
import cn.iocoder.yudao.module.member.service.card.CardService;
|
||||||
import cn.iocoder.yudao.module.member.service.diningplates.DiningPlatesService;
|
import cn.iocoder.yudao.module.member.service.diningplates.DiningPlatesService;
|
||||||
import cn.iocoder.yudao.module.member.service.order.OrderService;
|
import cn.iocoder.yudao.module.member.service.order.OrderService;
|
||||||
@ -22,6 +24,7 @@ import java.math.BigDecimal;
|
|||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -43,7 +46,8 @@ public class BalanceDeductionJob implements JobHandler {
|
|||||||
private StringRedisTemplate stringRedisTemplate;
|
private StringRedisTemplate stringRedisTemplate;
|
||||||
@Resource
|
@Resource
|
||||||
private MemberUserService userService;
|
private MemberUserService userService;
|
||||||
|
@Resource
|
||||||
|
private BusinessService businessService;
|
||||||
/**
|
/**
|
||||||
* 30分钟之后自动解绑并扣款
|
* 30分钟之后自动解绑并扣款
|
||||||
*/
|
*/
|
||||||
@ -74,7 +78,7 @@ public class BalanceDeductionJob implements JobHandler {
|
|||||||
//BigDecimal total = new BigDecimal(0.01);
|
//BigDecimal total = new BigDecimal(0.01);
|
||||||
Long userId = dishOrderDO.getUserId();
|
Long userId = dishOrderDO.getUserId();
|
||||||
CardDO cardDO = new CardDO();
|
CardDO cardDO = new CardDO();
|
||||||
cardDO.setType(TimePeriodEnum.getTimePeriod(LocalDateTime.now()));
|
cardDO.setType(TimePeriodEnum.getTimePeriod(dishOrderDO.getCreateTime()));
|
||||||
CardDO oldCardDO = cardService.getCardDoByUserId(userId);
|
CardDO oldCardDO = cardService.getCardDoByUserId(userId);
|
||||||
|
|
||||||
|
|
||||||
@ -162,6 +166,19 @@ public class BalanceDeductionJob implements JobHandler {
|
|||||||
dishOrderDO.setTotalMoney(total);
|
dishOrderDO.setTotalMoney(total);
|
||||||
dishOrderDO.setUpdateTime(LocalDateTime.now());
|
dishOrderDO.setUpdateTime(LocalDateTime.now());
|
||||||
stringRedisTemplate.delete(dishOrderDO.getDiningPlatesNum() + "-" + dishOrderDO.getStoreId());
|
stringRedisTemplate.delete(dishOrderDO.getDiningPlatesNum() + "-" + dishOrderDO.getStoreId());
|
||||||
|
|
||||||
|
//更新营业数据
|
||||||
|
if(dishOrderDO.getOrderStatus().equals(DishOrderDO.COMPLETE)){
|
||||||
|
StatisticsVo statisticsVo = new StatisticsVo();
|
||||||
|
statisticsVo.setCarteenId(dishOrderDO.getStoreId());
|
||||||
|
statisticsVo.setTotalMoney(dishOrderDO.getTotalMoney());
|
||||||
|
statisticsVo.setOrder_sum(1);
|
||||||
|
statisticsVo.setReduceMoney(dishOrderDO.getReductionAmount());
|
||||||
|
statisticsVo.setTime(dishOrderDO.getCreateTime());
|
||||||
|
statisticsVo.setOrderId(dishOrderDO.getId());
|
||||||
|
businessService.updateStatistics(statisticsVo);
|
||||||
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
//取消批量,防止同一人订餐少扣款
|
//取消批量,防止同一人订餐少扣款
|
||||||
//cardService.insertBatch(list);
|
//cardService.insertBatch(list);
|
||||||
|
@ -0,0 +1,60 @@
|
|||||||
|
package cn.iocoder.yudao.module.member.job;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
|
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.business.BusinessDO;
|
||||||
|
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
|
||||||
|
import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO;
|
||||||
|
import cn.iocoder.yudao.module.member.dal.dataobject.orderdetail.OrderDetailDO;
|
||||||
|
import cn.iocoder.yudao.module.member.dal.mysql.business.BusinessMapper;
|
||||||
|
import cn.iocoder.yudao.module.member.dal.mysql.card.CardMapper;
|
||||||
|
import cn.iocoder.yudao.module.member.dal.mysql.order.DishOrderMapper;
|
||||||
|
import cn.iocoder.yudao.module.member.dal.mysql.orderdetail.OrderDetailMapper;
|
||||||
|
import cn.iocoder.yudao.module.member.enums.CostTypeEnum;
|
||||||
|
import cn.iocoder.yudao.module.member.enums.TimePeriodEnum;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.temporal.ChronoUnit;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author:qjq
|
||||||
|
* @Date:2024/4/3 14:50
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Component
|
||||||
|
public class BusinessNewJob implements JobHandler {
|
||||||
|
@Resource
|
||||||
|
private BusinessMapper businessMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行任务
|
||||||
|
*
|
||||||
|
* @param param 参数
|
||||||
|
* @return 结果
|
||||||
|
* @throws Exception 异常
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@TenantIgnore
|
||||||
|
public String execute(String param){
|
||||||
|
List<Long> allStoreId = businessMapper.getAllStoreId();
|
||||||
|
for (Long storeId : allStoreId) {
|
||||||
|
BusinessDO businessDO = new BusinessDO();
|
||||||
|
businessDO.setCarteenId(storeId);
|
||||||
|
businessMapper.insert(businessDO);
|
||||||
|
}
|
||||||
|
log.info("[execute][生成当天统计营业数据 {}条]", allStoreId.size());
|
||||||
|
return String.format("生成当天统计营业数据 %s 条 ", allStoreId.size());
|
||||||
|
}
|
||||||
|
}
|
@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.member.service.business;
|
|||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessPageReqVO;
|
import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessPageReqVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessSaveReqVO;
|
import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessSaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.business.vo.StatisticsVo;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.business.BusinessDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.business.BusinessDO;
|
||||||
|
|
||||||
import javax.validation.*;
|
import javax.validation.*;
|
||||||
@ -52,4 +53,7 @@ public interface BusinessService {
|
|||||||
*/
|
*/
|
||||||
PageResult<BusinessDO> getBusinessPage(BusinessPageReqVO pageReqVO);
|
PageResult<BusinessDO> getBusinessPage(BusinessPageReqVO pageReqVO);
|
||||||
|
|
||||||
|
|
||||||
|
void updateStatistics(StatisticsVo vo);
|
||||||
|
|
||||||
}
|
}
|
@ -1,20 +1,35 @@
|
|||||||
package cn.iocoder.yudao.module.member.service.business;
|
package cn.iocoder.yudao.module.member.service.business;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessPageReqVO;
|
import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessPageReqVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessSaveReqVO;
|
import cn.iocoder.yudao.module.member.controller.admin.business.vo.BusinessSaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.business.vo.StatisticsVo;
|
||||||
import cn.iocoder.yudao.module.member.dal.dataobject.business.BusinessDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.business.BusinessDO;
|
||||||
|
import cn.iocoder.yudao.module.member.dal.dataobject.orderdetail.OrderDetailDO;
|
||||||
import cn.iocoder.yudao.module.member.dal.mysql.business.BusinessMapper;
|
import cn.iocoder.yudao.module.member.dal.mysql.business.BusinessMapper;
|
||||||
import cn.iocoder.yudao.module.member.dal.mysql.card.CardMapper;
|
import cn.iocoder.yudao.module.member.dal.mysql.card.CardMapper;
|
||||||
import cn.iocoder.yudao.module.member.dal.mysql.order.DishOrderMapper;
|
import cn.iocoder.yudao.module.member.dal.mysql.order.DishOrderMapper;
|
||||||
import cn.iocoder.yudao.module.member.dal.mysql.orderdetail.OrderDetailMapper;
|
import cn.iocoder.yudao.module.member.dal.mysql.orderdetail.OrderDetailMapper;
|
||||||
|
import cn.iocoder.yudao.module.member.enums.CostTypeEnum;
|
||||||
|
import cn.iocoder.yudao.module.member.enums.TimePeriodEnum;
|
||||||
|
import cn.iocoder.yudao.module.member.service.orderdetail.OrderDetailService;
|
||||||
import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants;
|
import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
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 cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
|
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
|
|
||||||
@ -35,6 +50,7 @@ public class BusinessServiceImpl implements BusinessService {
|
|||||||
private OrderDetailMapper orderDetailMapper;
|
private OrderDetailMapper orderDetailMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private CardMapper cardMapper;
|
private CardMapper cardMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long createBusiness(BusinessSaveReqVO createReqVO) {
|
public Long createBusiness(BusinessSaveReqVO createReqVO) {
|
||||||
// 插入
|
// 插入
|
||||||
@ -77,5 +93,56 @@ public class BusinessServiceImpl implements BusinessService {
|
|||||||
return businessMapper.selectPage(pageReqVO);
|
return businessMapper.selectPage(pageReqVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized void updateStatistics(StatisticsVo vo) {
|
||||||
|
// 获取今天的开始时间
|
||||||
|
LocalDateTime startOfDay = LocalDate.now().atStartOfDay();
|
||||||
|
// 获取今天的结束时间 (23:59:59.999)
|
||||||
|
LocalDateTime endOfDay = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
|
||||||
|
|
||||||
|
List<BusinessDO> businessDOS = businessMapper.selectList(Wrappers.<BusinessDO>lambdaQuery()
|
||||||
|
.between(BusinessDO::getCreateTime, startOfDay, endOfDay)
|
||||||
|
.eq(BusinessDO::getCarteenId, vo.getCarteenId()));
|
||||||
|
if (CollectionUtil.isNotEmpty(businessDOS)) {
|
||||||
|
BusinessDO businessDO = businessDOS.get(0);
|
||||||
|
|
||||||
|
//重量
|
||||||
|
if(ObjectUtil.isNotEmpty(vo.getOrderId())){
|
||||||
|
List<OrderDetailDO> orderDetailDOS = orderDetailMapper.selectList(Wrappers.<OrderDetailDO>lambdaQuery().eq(OrderDetailDO::getOrderId, vo.getOrderId()));
|
||||||
|
if (CollectionUtil.isNotEmpty(orderDetailDOS)) {
|
||||||
|
BigDecimal reduce = orderDetailDOS.stream().map(OrderDetailDO::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
|
businessDO.setWeigh(businessDO.getWeigh().add(reduce));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//订单数
|
||||||
|
businessDO.setOrderSum(businessDO.getOrderSum() + vo.getOrder_sum());
|
||||||
|
|
||||||
|
//营业额
|
||||||
|
if(ObjectUtil.isNotEmpty(vo.getTotalMoney())){
|
||||||
|
businessDO.setTurnover(businessDO.getTurnover().add(vo.getTotalMoney()));
|
||||||
|
}
|
||||||
|
//减免金额
|
||||||
|
if(ObjectUtil.isNotEmpty(vo.getReduceMoney())){
|
||||||
|
businessDO.setReduce(businessDO.getReduce().add(vo.getReduceMoney()));
|
||||||
|
}
|
||||||
|
|
||||||
|
//早中晚金额
|
||||||
|
if(ObjectUtil.isNotEmpty(vo.getTime())){
|
||||||
|
String timePeriod = TimePeriodEnum.getTimePeriod(vo.getTime());
|
||||||
|
|
||||||
|
if(timePeriod.equals(CostTypeEnum.MORNING.getCode())){
|
||||||
|
businessDO.setBreakfast(businessDO.getBreakfast().add(vo.getTotalMoney()));
|
||||||
|
}else if (timePeriod.equals(CostTypeEnum.NOON.getCode())){
|
||||||
|
businessDO.setLunch(businessDO.getLunch().add(vo.getTotalMoney()));
|
||||||
|
}else if (timePeriod.equals(CostTypeEnum.NIGHT.getCode())){
|
||||||
|
businessDO.setDinner(businessDO.getDinner().add(vo.getTotalMoney()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
businessMapper.updateById(businessDO);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
@ -9,6 +9,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
||||||
|
import cn.iocoder.yudao.module.member.controller.admin.business.vo.StatisticsVo;
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderDetailsReqVO;
|
import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderDetailsReqVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderDetailsRespVO;
|
import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderDetailsRespVO;
|
||||||
import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderMoneyRespVO;
|
import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderMoneyRespVO;
|
||||||
@ -27,6 +28,7 @@ import cn.iocoder.yudao.module.member.dal.mysql.order.DishOrderMapper;
|
|||||||
import cn.iocoder.yudao.module.member.dal.mysql.user.MemberUserMapper;
|
import cn.iocoder.yudao.module.member.dal.mysql.user.MemberUserMapper;
|
||||||
import cn.iocoder.yudao.module.member.enums.CostTypeEnum;
|
import cn.iocoder.yudao.module.member.enums.CostTypeEnum;
|
||||||
import cn.iocoder.yudao.module.member.enums.TimePeriodEnum;
|
import cn.iocoder.yudao.module.member.enums.TimePeriodEnum;
|
||||||
|
import cn.iocoder.yudao.module.member.service.business.BusinessService;
|
||||||
import cn.iocoder.yudao.module.member.service.orderdetail.OrderDetailService;
|
import cn.iocoder.yudao.module.member.service.orderdetail.OrderDetailService;
|
||||||
import cn.iocoder.yudao.module.member.service.refund.RefundService;
|
import cn.iocoder.yudao.module.member.service.refund.RefundService;
|
||||||
import cn.iocoder.yudao.module.member.util.MemberConstants;
|
import cn.iocoder.yudao.module.member.util.MemberConstants;
|
||||||
@ -81,6 +83,8 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
private MemberGroupMapper groupMapper;
|
private MemberGroupMapper groupMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private RefundService refundService;
|
private RefundService refundService;
|
||||||
|
@Resource
|
||||||
|
private BusinessService businessService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long createOrder(AppOrderSaveReqVO createReqVO) {
|
public Long createOrder(AppOrderSaveReqVO createReqVO) {
|
||||||
@ -184,7 +188,7 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
DishesRespDto dishesRespDto = dishMap.get(respVo.getDishesId());
|
DishesRespDto dishesRespDto = dishMap.get(respVo.getDishesId());
|
||||||
if (ObjectUtil.isNotEmpty(dishesRespDto)) {
|
if (ObjectUtil.isNotEmpty(dishesRespDto)) {
|
||||||
respVo.setDishesBasePrice(dishesRespDto.getDishesBasePrice())
|
respVo.setDishesBasePrice(dishesRespDto.getDishesBasePrice())
|
||||||
.setDishesSumPrice(dishesRespDto.getDishesSumPrice())
|
.setDishesSumPrice(ObjectUtil.isNotEmpty(respVo.getUnitPrice())?respVo.getUnitPrice():dishesRespDto.getDishesSumPrice())
|
||||||
.setDishesNumber(dishesRespDto.getDishesNumber());
|
.setDishesNumber(dishesRespDto.getDishesNumber());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -478,6 +482,17 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
cardDO.setGiftAmount(oldGiftAmount.add(giftAmount));
|
cardDO.setGiftAmount(oldGiftAmount.add(giftAmount));
|
||||||
cardMapper.insert(cardDO);
|
cardMapper.insert(cardDO);
|
||||||
|
|
||||||
|
//更新营业数据
|
||||||
|
if(dishOrderDO.getOrderStatus().equals(DishOrderDO.COMPLETE)){
|
||||||
|
StatisticsVo statisticsVo = new StatisticsVo();
|
||||||
|
statisticsVo.setCarteenId(dishOrderDO.getStoreId());
|
||||||
|
statisticsVo.setTotalMoney(money.negate());
|
||||||
|
statisticsVo.setOrder_sum(0);
|
||||||
|
statisticsVo.setReduceMoney(money);
|
||||||
|
statisticsVo.setTime(dishOrderDO.getCreateTime());
|
||||||
|
businessService.updateStatistics(statisticsVo);
|
||||||
|
}
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
dishOrderDO.setReductionAmount(dishOrderDO.getReductionAmount().add(money));
|
dishOrderDO.setReductionAmount(dishOrderDO.getReductionAmount().add(money));
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,6 @@
|
|||||||
-->
|
-->
|
||||||
<select id="selectOrder" resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.OrderExcelVO">
|
<select id="selectOrder" resultType="cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.OrderExcelVO">
|
||||||
select
|
select
|
||||||
DATE_FORMAT(md.create_time, '%Y-%m-%d') as dayTime,
|
|
||||||
mu.nickname ,
|
mu.nickname ,
|
||||||
mu.mobile ,
|
mu.mobile ,
|
||||||
CASE
|
CASE
|
||||||
@ -23,7 +22,8 @@
|
|||||||
md.dishes_name ,
|
md.dishes_name ,
|
||||||
md.unit_price ,
|
md.unit_price ,
|
||||||
md.weight ,
|
md.weight ,
|
||||||
md.price
|
md.price,
|
||||||
|
DATE_FORMAT(md.create_time, '%Y-%m-%d %H:%i:%s') as dayTime
|
||||||
from member_order_detail md
|
from member_order_detail md
|
||||||
left join member_dish_order mo on md.order_id = mo.id
|
left join member_dish_order mo on md.order_id = mo.id
|
||||||
left join member_user mu on mu.id = mo.user_id
|
left join member_user mu on mu.id = mo.user_id
|
||||||
|
@ -36,4 +36,6 @@ public class DishImagePageReqVO extends PageParam {
|
|||||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
private LocalDateTime[] createTime;
|
private LocalDateTime[] createTime;
|
||||||
|
|
||||||
|
private Long carteenId;
|
||||||
|
|
||||||
}
|
}
|
@ -41,4 +41,6 @@ public class DishImageRespVO {
|
|||||||
@ExcelProperty("创建时间")
|
@ExcelProperty("创建时间")
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
private Long carteenId;
|
||||||
|
|
||||||
}
|
}
|
@ -27,4 +27,6 @@ public class DishImageSaveReqVO {
|
|||||||
@Schema(description = "备注", example = "随便")
|
@Schema(description = "备注", example = "随便")
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
private Long carteenId;
|
||||||
|
|
||||||
}
|
}
|
@ -20,4 +20,16 @@ public class AppUpdateVO {
|
|||||||
|
|
||||||
@Schema(description = "总价格", example = "1")
|
@Schema(description = "总价格", example = "1")
|
||||||
private BigDecimal dishesSumPrice;
|
private BigDecimal dishesSumPrice;
|
||||||
|
|
||||||
|
@Schema(description = "菜品类型", example = "1")
|
||||||
|
private String dishecType;
|
||||||
|
|
||||||
|
@Schema(description = "菜品图片", example = "1")
|
||||||
|
private String dishesImageUrl;
|
||||||
|
|
||||||
|
@Schema(description = "周几", example = "星期一")
|
||||||
|
private String weekTime;
|
||||||
|
|
||||||
|
@Schema(description = "时段", example = "早")
|
||||||
|
private String timeSlot;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,49 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.controller.app.dishimage;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
|
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
||||||
|
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.admin.dishimage.vo.DishImagePageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.admin.dishimage.vo.DishImageRespVO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.admin.dishimage.vo.DishImageSaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.system.dal.dataobject.dishimage.DishImageDO;
|
||||||
|
import cn.iocoder.yudao.module.system.service.dishimage.DishImageService;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import javax.validation.Valid;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||||
|
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Tag(name = "管理后台 - 本周菜单")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/t/dish-image")
|
||||||
|
@Validated
|
||||||
|
public class AppDishImageController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private DishImageService dishImageService;
|
||||||
|
|
||||||
|
@GetMapping("/get")
|
||||||
|
@Operation(summary = "获得本周菜单")
|
||||||
|
public CommonResult<DishImageRespVO> getThisWeekDishImage(Long carteenId) {
|
||||||
|
DishImageDO dishImage = dishImageService.getThisWeekDishImage(carteenId);
|
||||||
|
return success(BeanUtils.toBean(dishImage, DishImageRespVO.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -48,4 +48,6 @@ public class DishImageDO extends BaseDO {
|
|||||||
*/
|
*/
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
private Long carteenId;
|
||||||
|
|
||||||
}
|
}
|
@ -21,6 +21,7 @@ public interface DishImageMapper extends BaseMapperX<DishImageDO> {
|
|||||||
|
|
||||||
default PageResult<DishImageDO> selectPage(DishImagePageReqVO reqVO) {
|
default PageResult<DishImageDO> selectPage(DishImagePageReqVO reqVO) {
|
||||||
return selectPage(reqVO, new LambdaQueryWrapperX<DishImageDO>()
|
return selectPage(reqVO, new LambdaQueryWrapperX<DishImageDO>()
|
||||||
|
.eqIfPresent(DishImageDO::getCarteenId,reqVO.getCarteenId())
|
||||||
.likeIfPresent(DishImageDO::getName, reqVO.getName())
|
.likeIfPresent(DishImageDO::getName, reqVO.getName())
|
||||||
.betweenIfPresent(DishImageDO::getStartDate, reqVO.getStartDate())
|
.betweenIfPresent(DishImageDO::getStartDate, reqVO.getStartDate())
|
||||||
.betweenIfPresent(DishImageDO::getEndDate, reqVO.getEndDate())
|
.betweenIfPresent(DishImageDO::getEndDate, reqVO.getEndDate())
|
||||||
|
@ -54,4 +54,10 @@ public interface DishImageService {
|
|||||||
*/
|
*/
|
||||||
PageResult<DishImageDO> getDishImagePage(DishImagePageReqVO pageReqVO);
|
PageResult<DishImageDO> getDishImagePage(DishImagePageReqVO pageReqVO);
|
||||||
|
|
||||||
}
|
/**
|
||||||
|
* 获得本周菜单
|
||||||
|
*/
|
||||||
|
DishImageDO getThisWeekDishImage(Long carteenId);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -1,14 +1,19 @@
|
|||||||
package cn.iocoder.yudao.module.system.service.dishimage;
|
package cn.iocoder.yudao.module.system.service.dishimage;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.dishimage.vo.DishImagePageReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.dishimage.vo.DishImagePageReqVO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.dishimage.vo.DishImageSaveReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.dishimage.vo.DishImageSaveReqVO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.dishimage.DishImageDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.dishimage.DishImageDO;
|
||||||
import cn.iocoder.yudao.module.system.dal.mysql.dishimage.DishImageMapper;
|
import cn.iocoder.yudao.module.system.dal.mysql.dishimage.DishImageMapper;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
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 org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.time.DayOfWeek;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
@ -75,4 +80,29 @@ public class DishImageServiceImpl implements DishImageService {
|
|||||||
return dishImageMapper.selectPage(pageReqVO);
|
return dishImageMapper.selectPage(pageReqVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DishImageDO getThisWeekDishImage(Long carteenId) {
|
||||||
|
// 获取今天的日期
|
||||||
|
LocalDate today = LocalDate.now();
|
||||||
|
|
||||||
|
// 获取本周的开始日期(周一)
|
||||||
|
LocalDate weekStart = today.with(DayOfWeek.MONDAY);
|
||||||
|
|
||||||
|
// 获取本周的结束日期(周日)
|
||||||
|
LocalDate weekEnd = today.with(DayOfWeek.SUNDAY);
|
||||||
|
|
||||||
|
// 格式化日期(年-月-日)
|
||||||
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||||
|
|
||||||
|
String startTime = weekStart.format(formatter);
|
||||||
|
String endTime = weekEnd.format(formatter);
|
||||||
|
List<DishImageDO> dishImageDOS = dishImageMapper.selectList(Wrappers.<DishImageDO>lambdaQuery()
|
||||||
|
.eq(DishImageDO::getStartDate, startTime)
|
||||||
|
.eq(DishImageDO::getEndDate, endTime)
|
||||||
|
.eq(DishImageDO::getCarteenId, carteenId));
|
||||||
|
if(CollectionUtil.isNotEmpty(dishImageDOS)){
|
||||||
|
return dishImageDOS.get(0);
|
||||||
|
}
|
||||||
|
return new DishImageDO();
|
||||||
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user