超市订单统计

This commit is contained in:
seesaw
2024-10-31 14:06:35 +08:00
parent ac31e708ef
commit edcb776750
11 changed files with 696 additions and 1 deletions

View File

@ -120,5 +120,7 @@ public interface ErrorCodeConstants {
ErrorCode COMBO_NOT_EXISTS = new ErrorCode(1_004_015_001, "套餐不存在");
//========== 用户余额明细 1-004-016-000 =============
ErrorCode ORDER_SPACE_CAPSULE_NOT_EXISTS = new ErrorCode(1_004_016_001, "太空舱订单不存在");
ErrorCode STORE_BUSINESS_NOT_EXISTS = new ErrorCode(1_004_017_001, "超市营业统计不存在");
}

View File

@ -0,0 +1,95 @@
package cn.iocoder.yudao.module.member.controller.admin.storebusiness;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*;
import cn.iocoder.yudao.module.member.controller.admin.storebusiness.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.storebusiness.StoreBusinessDO;
import cn.iocoder.yudao.module.member.service.storebusiness.StoreBusinessService;
@Tag(name = "管理后台 - 超市营业统计")
@RestController
@RequestMapping("/member/store-business")
@Validated
public class StoreBusinessController {
@Resource
private StoreBusinessService storeBusinessService;
@PostMapping("/create")
@Operation(summary = "创建超市营业统计")
@PreAuthorize("@ss.hasPermission('member:store-business:create')")
public CommonResult<Long> createStoreBusiness(@Valid @RequestBody StoreBusinessSaveReqVO createReqVO) {
return success(storeBusinessService.createStoreBusiness(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新超市营业统计")
@PreAuthorize("@ss.hasPermission('member:store-business:update')")
public CommonResult<Boolean> updateStoreBusiness(@Valid @RequestBody StoreBusinessSaveReqVO updateReqVO) {
storeBusinessService.updateStoreBusiness(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除超市营业统计")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('member:store-business:delete')")
public CommonResult<Boolean> deleteStoreBusiness(@RequestParam("id") Long id) {
storeBusinessService.deleteStoreBusiness(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得超市营业统计")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('member:store-business:query')")
public CommonResult<StoreBusinessRespVO> getStoreBusiness(@RequestParam("id") Long id) {
StoreBusinessDO storeBusiness = storeBusinessService.getStoreBusiness(id);
return success(BeanUtils.toBean(storeBusiness, StoreBusinessRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得超市营业统计分页")
@PreAuthorize("@ss.hasPermission('member:store-business:query')")
public CommonResult<PageResult<StoreBusinessRespVO>> getStoreBusinessPage(@Valid StoreBusinessPageReqVO pageReqVO) {
PageResult<StoreBusinessDO> pageResult = storeBusinessService.getStoreBusinessPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, StoreBusinessRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出超市营业统计 Excel")
@PreAuthorize("@ss.hasPermission('member:store-business:export')")
@OperateLog(type = EXPORT)
public void exportStoreBusinessExcel(@Valid StoreBusinessPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<StoreBusinessDO> list = storeBusinessService.getStoreBusinessPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "超市营业统计.xls", "数据", StoreBusinessRespVO.class,
BeanUtils.toBean(list, StoreBusinessRespVO.class));
}
}

View File

@ -0,0 +1,68 @@
package cn.iocoder.yudao.module.member.controller.admin.storebusiness.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 超市营业统计分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class StoreBusinessPageReqVO extends PageParam {
@Schema(description = "营业额")
private BigDecimal turnover;
@Schema(description = "订单数")
private Integer orderSum;
@Schema(description = "顾客数")
private Integer customerSum;
@Schema(description = "均单价")
private BigDecimal priceAvg;
@Schema(description = "减免金额")
private BigDecimal reduce;
@Schema(description = "补贴钱包")
private BigDecimal subsidyPurse;
@Schema(description = "VIP免单")
private Integer gratis;
@Schema(description = "早餐")
private BigDecimal breakfast;
@Schema(description = "早餐订单")
private Integer breakfastNum;
@Schema(description = "午餐")
private BigDecimal lunch;
@Schema(description = "午餐订单")
private Integer lunchNum;
@Schema(description = "晚餐")
private BigDecimal dinner;
@Schema(description = "晚餐订单")
private Integer dinnerNum;
@Schema(description = "智能称重")
private BigDecimal weigh;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "门店编号", example = "5950")
private Long carteenId;
}

View File

@ -0,0 +1,85 @@
package cn.iocoder.yudao.module.member.controller.admin.storebusiness.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 超市营业统计 Response VO")
@Data
@ExcelIgnoreUnannotated
public class StoreBusinessRespVO {
@Schema(description = "营业统计编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "27161")
@ExcelProperty("营业统计编号")
private Long id;
@Schema(description = "营业额")
@ExcelProperty("营业额")
private BigDecimal turnover;
@Schema(description = "订单数")
@ExcelProperty("订单数")
private Integer orderSum;
@Schema(description = "顾客数")
@ExcelProperty("顾客数")
private Integer customerSum;
@Schema(description = "均单价")
@ExcelProperty("均单价")
private BigDecimal priceAvg;
@Schema(description = "减免金额")
@ExcelProperty("减免金额")
private BigDecimal reduce;
@Schema(description = "补贴钱包")
@ExcelProperty("补贴钱包")
private BigDecimal subsidyPurse;
@Schema(description = "VIP免单")
@ExcelProperty("VIP免单")
private Integer gratis;
@Schema(description = "早餐")
@ExcelProperty("早餐")
private BigDecimal breakfast;
@Schema(description = "早餐订单")
@ExcelProperty("早餐订单")
private Integer breakfastNum;
@Schema(description = "午餐")
@ExcelProperty("午餐")
private BigDecimal lunch;
@Schema(description = "午餐订单")
@ExcelProperty("午餐订单")
private Integer lunchNum;
@Schema(description = "晚餐")
@ExcelProperty("晚餐")
private BigDecimal dinner;
@Schema(description = "晚餐订单")
@ExcelProperty("晚餐订单")
private Integer dinnerNum;
@Schema(description = "智能称重")
@ExcelProperty("智能称重")
private BigDecimal weigh;
@Schema(description = "创建时间")
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "门店编号", example = "5950")
@ExcelProperty("门店编号")
private Long carteenId;
}

View File

@ -0,0 +1,61 @@
package cn.iocoder.yudao.module.member.controller.admin.storebusiness.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.math.BigDecimal;
@Schema(description = "管理后台 - 超市营业统计新增/修改 Request VO")
@Data
public class StoreBusinessSaveReqVO {
@Schema(description = "营业统计编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "27161")
private Long id;
@Schema(description = "营业额")
private BigDecimal turnover;
@Schema(description = "订单数")
private Integer orderSum;
@Schema(description = "顾客数")
private Integer customerSum;
@Schema(description = "均单价")
private BigDecimal priceAvg;
@Schema(description = "减免金额")
private BigDecimal reduce;
@Schema(description = "补贴钱包")
private BigDecimal subsidyPurse;
@Schema(description = "VIP免单")
private Integer gratis;
@Schema(description = "早餐")
private BigDecimal breakfast;
@Schema(description = "早餐订单")
private Integer breakfastNum;
@Schema(description = "午餐")
private BigDecimal lunch;
@Schema(description = "午餐订单")
private Integer lunchNum;
@Schema(description = "晚餐")
private BigDecimal dinner;
@Schema(description = "晚餐订单")
private Integer dinnerNum;
@Schema(description = "智能称重")
private BigDecimal weigh;
@Schema(description = "门店编号", example = "5950")
private Long carteenId;
}

View File

@ -0,0 +1,99 @@
package cn.iocoder.yudao.module.member.dal.dataobject.storebusiness;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/**
* 超市营业统计 DO
*
* @author 管理员
*/
@TableName("member_store_business")
@KeySequence("member_store_business_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class StoreBusinessDO extends BaseDO {
/**
* 营业统计编号
*/
@TableId
private Long id;
/**
* 营业额
*/
private BigDecimal turnover;
/**
* 订单数
*/
private Integer orderSum;
/**
* 顾客数
*/
private Integer customerSum;
/**
* 均单价
*/
private BigDecimal priceAvg;
/**
* 减免金额
*/
private BigDecimal reduce;
/**
* 补贴钱包
*/
private BigDecimal subsidyPurse;
/**
* VIP免单
*/
private Integer gratis;
/**
* 早餐
*/
private BigDecimal breakfast;
/**
* 早餐订单
*/
private Integer breakfastNum;
/**
* 午餐
*/
private BigDecimal lunch;
/**
* 午餐订单
*/
private Integer lunchNum;
/**
* 晚餐
*/
private BigDecimal dinner;
/**
* 晚餐订单
*/
private Integer dinnerNum;
/**
* 智能称重
*/
private BigDecimal weigh;
/**
* 门店编号
*/
private Long carteenId;
}

View File

@ -0,0 +1,41 @@
package cn.iocoder.yudao.module.member.dal.mysql.storebusiness;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.member.dal.dataobject.storebusiness.StoreBusinessDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.member.controller.admin.storebusiness.vo.*;
/**
* 超市营业统计 Mapper
*
* @author 管理员
*/
@Mapper
public interface StoreBusinessMapper extends BaseMapperX<StoreBusinessDO> {
default PageResult<StoreBusinessDO> selectPage(StoreBusinessPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<StoreBusinessDO>()
.eqIfPresent(StoreBusinessDO::getTurnover, reqVO.getTurnover())
.eqIfPresent(StoreBusinessDO::getOrderSum, reqVO.getOrderSum())
.eqIfPresent(StoreBusinessDO::getCustomerSum, reqVO.getCustomerSum())
.eqIfPresent(StoreBusinessDO::getPriceAvg, reqVO.getPriceAvg())
.eqIfPresent(StoreBusinessDO::getReduce, reqVO.getReduce())
.eqIfPresent(StoreBusinessDO::getSubsidyPurse, reqVO.getSubsidyPurse())
.eqIfPresent(StoreBusinessDO::getGratis, reqVO.getGratis())
.eqIfPresent(StoreBusinessDO::getBreakfast, reqVO.getBreakfast())
.eqIfPresent(StoreBusinessDO::getBreakfastNum, reqVO.getBreakfastNum())
.eqIfPresent(StoreBusinessDO::getLunch, reqVO.getLunch())
.eqIfPresent(StoreBusinessDO::getLunchNum, reqVO.getLunchNum())
.eqIfPresent(StoreBusinessDO::getDinner, reqVO.getDinner())
.eqIfPresent(StoreBusinessDO::getDinnerNum, reqVO.getDinnerNum())
.eqIfPresent(StoreBusinessDO::getWeigh, reqVO.getWeigh())
.betweenIfPresent(StoreBusinessDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(StoreBusinessDO::getCarteenId, reqVO.getCarteenId())
.orderByDesc(StoreBusinessDO::getId));
}
}

View File

@ -8,10 +8,12 @@ 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.dataobject.storebusiness.StoreBusinessDO;
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.dal.mysql.storebusiness.StoreBusinessMapper;
import cn.iocoder.yudao.module.member.enums.CostTypeEnum;
import cn.iocoder.yudao.module.member.enums.TimePeriodEnum;
import lombok.extern.slf4j.Slf4j;
@ -38,6 +40,9 @@ public class BusinessNewJob implements JobHandler {
@Resource
private BusinessMapper businessMapper;
@Resource
private StoreBusinessMapper storeBusinessMapper;
/**
* 执行任务
*
@ -53,6 +58,10 @@ public class BusinessNewJob implements JobHandler {
BusinessDO businessDO = new BusinessDO();
businessDO.setCarteenId(storeId);
businessMapper.insert(businessDO);
StoreBusinessDO storeBusinessDO = new StoreBusinessDO();
storeBusinessDO.setCarteenId(storeId);
storeBusinessMapper.insert(storeBusinessDO);
}
log.info("[execute][生成当天统计营业数据 {}条]", allStoreId.size());
return String.format("生成当天统计营业数据 %s 条 ", allStoreId.size());

View File

@ -0,0 +1,59 @@
package cn.iocoder.yudao.module.member.service.storebusiness;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.member.controller.admin.business.vo.StatisticsVo;
import cn.iocoder.yudao.module.member.controller.admin.storebusiness.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.storebusiness.StoreBusinessDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
/**
* 超市营业统计 Service 接口
*
* @author 管理员
*/
public interface StoreBusinessService {
/**
* 创建超市营业统计
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createStoreBusiness(@Valid StoreBusinessSaveReqVO createReqVO);
/**
* 更新超市营业统计
*
* @param updateReqVO 更新信息
*/
void updateStoreBusiness(@Valid StoreBusinessSaveReqVO updateReqVO);
/**
* 删除超市营业统计
*
* @param id 编号
*/
void deleteStoreBusiness(Long id);
/**
* 获得超市营业统计
*
* @param id 编号
* @return 超市营业统计
*/
StoreBusinessDO getStoreBusiness(Long id);
/**
* 获得超市营业统计分页
*
* @param pageReqVO 分页查询
* @return 超市营业统计分页
*/
PageResult<StoreBusinessDO> getStoreBusinessPage(StoreBusinessPageReqVO pageReqVO);
void updateStatistics(StatisticsVo vo);
}

View File

@ -0,0 +1,154 @@
package cn.iocoder.yudao.module.member.service.storebusiness;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
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.orderdetail.OrderDetailDO;
import cn.iocoder.yudao.module.member.enums.CostTypeEnum;
import cn.iocoder.yudao.module.member.enums.TimePeriodEnum;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.*;
import cn.iocoder.yudao.module.member.controller.admin.storebusiness.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.storebusiness.StoreBusinessDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.dal.mysql.storebusiness.StoreBusinessMapper;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*;
import static cn.iocoder.yudao.module.member.service.amount.LockManager.getStoreLock;
import static cn.iocoder.yudao.module.member.service.amount.LockManager.getSupermarketLock;
/**
* 超市营业统计 Service 实现类
*
* @author 管理员
*/
@Service
@Validated
public class StoreBusinessServiceImpl implements StoreBusinessService {
@Resource
private StoreBusinessMapper storeBusinessMapper;
@Override
public Long createStoreBusiness(StoreBusinessSaveReqVO createReqVO) {
// 插入
StoreBusinessDO storeBusiness = BeanUtils.toBean(createReqVO, StoreBusinessDO.class);
storeBusinessMapper.insert(storeBusiness);
// 返回
return storeBusiness.getId();
}
@Override
public void updateStoreBusiness(StoreBusinessSaveReqVO updateReqVO) {
// 校验存在
validateStoreBusinessExists(updateReqVO.getId());
// 更新
StoreBusinessDO updateObj = BeanUtils.toBean(updateReqVO, StoreBusinessDO.class);
storeBusinessMapper.updateById(updateObj);
}
@Override
public void deleteStoreBusiness(Long id) {
// 校验存在
validateStoreBusinessExists(id);
// 删除
storeBusinessMapper.deleteById(id);
}
private void validateStoreBusinessExists(Long id) {
if (storeBusinessMapper.selectById(id) == null) {
throw exception(STORE_BUSINESS_NOT_EXISTS);
}
}
@Override
public StoreBusinessDO getStoreBusiness(Long id) {
return storeBusinessMapper.selectById(id);
}
@Override
public PageResult<StoreBusinessDO> getStoreBusinessPage(StoreBusinessPageReqVO pageReqVO) {
return storeBusinessMapper.selectPage(pageReqVO);
}
@Override
public void updateStatistics(StatisticsVo vo) {
synchronized(getSupermarketLock(vo.getCarteenId())){
LocalDate now = LocalDate.now();
if(vo.getTime()!=null){
now = vo.getTime().toLocalDate();
}
// 获取今天的开始时间
LocalDateTime startOfDay =now.atStartOfDay();
// 获取今天的结束时间 (23:59:59.999)
LocalDateTime endOfDay = LocalDateTime.of(now, LocalTime.MAX);
List<StoreBusinessDO> storeBusinessDOS = storeBusinessMapper.selectList(Wrappers.<StoreBusinessDO>lambdaQuery()
.between(StoreBusinessDO::getCreateTime, startOfDay, endOfDay)
.eq(StoreBusinessDO::getCarteenId, vo.getCarteenId()));
if (CollectionUtil.isNotEmpty(storeBusinessDOS)) {
StoreBusinessDO storeBusinessDO = storeBusinessDOS.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));
// }
// }
//订单数
storeBusinessDO.setOrderSum(storeBusinessDO.getOrderSum() + vo.getOrderSum());
//营业额
if(ObjectUtil.isNotEmpty(vo.getTotalMoney())){
storeBusinessDO.setTurnover(storeBusinessDO.getTurnover().add(vo.getTotalMoney()));
}
//客单价
if(storeBusinessDO.getOrderSum() != 0){
storeBusinessDO.setPriceAvg(storeBusinessDO.getTurnover().divide(new BigDecimal(storeBusinessDO.getOrderSum()), 2, RoundingMode.HALF_UP));
}
//减免金额
if(ObjectUtil.isNotEmpty(vo.getReduceMoney())){
storeBusinessDO.setReduce(storeBusinessDO.getReduce().add(vo.getReduceMoney()));
}
//早中晚金额
if(ObjectUtil.isNotEmpty(vo.getTime())){
String timePeriod = TimePeriodEnum.getTimePeriod(vo.getTime());
if(timePeriod.equals(CostTypeEnum.MORNING.getCode())){
storeBusinessDO.setBreakfast(storeBusinessDO.getBreakfast().add(vo.getTotalMoney()));
storeBusinessDO.setBreakfastNum(storeBusinessDO.getBreakfastNum() + vo.getOrderSum());
}else if (timePeriod.equals(CostTypeEnum.NOON.getCode())){
storeBusinessDO.setLunch(storeBusinessDO.getLunch().add(vo.getTotalMoney()));
storeBusinessDO.setLunchNum(storeBusinessDO.getLunchNum() + vo.getOrderSum());
}else if (timePeriod.equals(CostTypeEnum.NIGHT.getCode())){
storeBusinessDO.setDinner(storeBusinessDO.getDinner().add(vo.getTotalMoney()));
storeBusinessDO.setDinnerNum(storeBusinessDO.getDinnerNum() + vo.getOrderSum());
}
}
storeBusinessMapper.updateById(storeBusinessDO);
}
}
}
}

View File

@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.controller.admin.business.vo.StatisticsVo;
import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.StoreOrderPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.StoreOrderPageVO;
import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.StoreOrderSaveReqVO;
@ -23,6 +24,7 @@ import cn.iocoder.yudao.module.member.enums.CostTypeEnum;
import cn.iocoder.yudao.module.member.enums.TimePeriodEnum;
import cn.iocoder.yudao.module.member.service.amount.DeductionService;
import cn.iocoder.yudao.module.member.service.card.CardService;
import cn.iocoder.yudao.module.member.service.storebusiness.StoreBusinessService;
import cn.iocoder.yudao.module.member.service.storeorderdetail.StoreOrderDetailService;
import cn.iocoder.yudao.module.member.service.user.MemberUserService;
import cn.iocoder.yudao.module.system.api.cashregisterinfo.CashregisterinfoApi;
@ -71,6 +73,8 @@ public class StoreOrderServiceImpl implements StoreOrderService {
@Resource
private CashregisterinfoApi cashregisterinfoApi;
@Resource
private StoreBusinessService storeBusinessService;
@Resource
@ -188,13 +192,23 @@ public class StoreOrderServiceImpl implements StoreOrderService {
}
MemberUserDO user = userService.getUser(Long.valueOf(s));
dto.setUserId(user.getId());
Double totalPrice = createOrder(dto).getTotalPrice();
StoreOrderDO order = createOrder(dto);
Double totalPrice = order.getTotalPrice();
BigDecimal total = BigDecimal.valueOf(totalPrice).setScale(2, RoundingMode.HALF_UP);
BigDecimal compute = compute(total, user.getId());
if (compute.compareTo(BigDecimal.ZERO) < 0) {
return "金额不足";
}
//营业数据
StatisticsVo statisticsVo = new StatisticsVo();
statisticsVo.setCarteenId(order.getCarteenId());
statisticsVo.setTotalMoney(total);
statisticsVo.setOrderSum(1);
statisticsVo.setTime(order.getCreateTime());
statisticsVo.setOrderId(order.getOrderId().longValue());
storeBusinessService.updateStatistics(statisticsVo);
return null;
}
@ -247,6 +261,14 @@ public class StoreOrderServiceImpl implements StoreOrderService {
storeOrderDO.setTotalPrice(total.subtract(money).doubleValue());
storeOrderMapper.updateById(storeOrderDO);
deductionService.reduction(storeOrderDO.getUserId(), money, BigDecimal.ZERO,money, BigDecimal.ZERO);
//营业数据
StatisticsVo statisticsVo = new StatisticsVo();
statisticsVo.setCarteenId(storeOrderDO.getCarteenId());
statisticsVo.setTotalMoney(money.negate());
statisticsVo.setOrderSum(0);
statisticsVo.setReduceMoney(money);
statisticsVo.setTime(storeOrderDO.getCreateTime());
storeBusinessService.updateStatistics(statisticsVo);
}
public void test() {