|
|
|
@ -26,139 +26,172 @@ public class WorkspaceServiceImpl implements WorkspaceService {
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private OrderMapper orderMapper;
|
|
|
|
|
// 注入订单映射器
|
|
|
|
|
@Autowired
|
|
|
|
|
private UserMapper userMapper;
|
|
|
|
|
// 注入用户映射器
|
|
|
|
|
@Autowired
|
|
|
|
|
private DishMapper dishMapper;
|
|
|
|
|
// 注入菜品映射器
|
|
|
|
|
@Autowired
|
|
|
|
|
private SetmealMapper setmealMapper;
|
|
|
|
|
// 注入套餐映射器
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据时间段统计营业数据
|
|
|
|
|
* @param begin
|
|
|
|
|
* @param end
|
|
|
|
|
* @return
|
|
|
|
|
* @param begin 开始时间
|
|
|
|
|
* @param end 结束时间
|
|
|
|
|
* @return 营业数据视图对象
|
|
|
|
|
*/
|
|
|
|
|
public BusinessDataVO getBusinessData(LocalDateTime begin, LocalDateTime end) {
|
|
|
|
|
/**
|
|
|
|
|
* 营业额:当日已完成订单的总金额
|
|
|
|
|
* 有效订单:当日已完成订单的数量
|
|
|
|
|
* 订单完成率:有效订单数 / 总订单数
|
|
|
|
|
* 平均客单价:营业额 / 有效订单数
|
|
|
|
|
* 新增用户:当日新增用户的数量
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// 创建一个Map来存储查询参数
|
|
|
|
|
Map map = new HashMap();
|
|
|
|
|
map.put("begin",begin);
|
|
|
|
|
map.put("end",end);
|
|
|
|
|
map.put("begin", begin);
|
|
|
|
|
// 设置开始时间
|
|
|
|
|
map.put("end", end);
|
|
|
|
|
// 设置结束时间
|
|
|
|
|
|
|
|
|
|
//查询总订单数
|
|
|
|
|
// 查询总订单数
|
|
|
|
|
Integer totalOrderCount = orderMapper.countByMap(map);
|
|
|
|
|
|
|
|
|
|
map.put("status", Orders.COMPLETED);
|
|
|
|
|
//营业额
|
|
|
|
|
// 设置订单状态为已完成
|
|
|
|
|
// 营业额:查询指定时间段内已完成订单的总金额
|
|
|
|
|
Double turnover = orderMapper.sumByMap(map);
|
|
|
|
|
turnover = turnover == null? 0.0 : turnover;
|
|
|
|
|
turnover = turnover == null ? 0.0 : turnover;
|
|
|
|
|
// 如果营业额为空,则设置为0.0
|
|
|
|
|
|
|
|
|
|
//有效订单数
|
|
|
|
|
// 有效订单数:查询指定时间段内已完成订单的数量
|
|
|
|
|
Integer validOrderCount = orderMapper.countByMap(map);
|
|
|
|
|
|
|
|
|
|
Double unitPrice = 0.0;
|
|
|
|
|
|
|
|
|
|
// 平均客单价初始化为0.0
|
|
|
|
|
Double orderCompletionRate = 0.0;
|
|
|
|
|
if(totalOrderCount != 0 && validOrderCount != 0){
|
|
|
|
|
//订单完成率
|
|
|
|
|
// 订单完成率初始化为0.0
|
|
|
|
|
if (totalOrderCount != 0 && validOrderCount != 0) {
|
|
|
|
|
// 订单完成率:有效订单数 / 总订单数
|
|
|
|
|
orderCompletionRate = validOrderCount.doubleValue() / totalOrderCount;
|
|
|
|
|
//平均客单价
|
|
|
|
|
// 平均客单价:营业额 / 有效订单数
|
|
|
|
|
unitPrice = turnover / validOrderCount;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//新增用户数
|
|
|
|
|
// 新增用户数:查询指定时间段内新增用户的数量
|
|
|
|
|
Integer newUsers = userMapper.countByMap(map);
|
|
|
|
|
|
|
|
|
|
// 构建并返回营业数据视图对象
|
|
|
|
|
return BusinessDataVO.builder()
|
|
|
|
|
.turnover(turnover)
|
|
|
|
|
// 设置营业额
|
|
|
|
|
.validOrderCount(validOrderCount)
|
|
|
|
|
// 设置有效订单数
|
|
|
|
|
.orderCompletionRate(orderCompletionRate)
|
|
|
|
|
// 设置订单完成率
|
|
|
|
|
.unitPrice(unitPrice)
|
|
|
|
|
// 设置平均客单价
|
|
|
|
|
.newUsers(newUsers)
|
|
|
|
|
// 设置新增用户数
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 查询订单管理数据
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
* @return 订单概览视图对象
|
|
|
|
|
*/
|
|
|
|
|
public OrderOverViewVO getOrderOverView() {
|
|
|
|
|
// 创建一个Map来存储查询参数
|
|
|
|
|
Map map = new HashMap();
|
|
|
|
|
map.put("begin", LocalDateTime.now().with(LocalTime.MIN));
|
|
|
|
|
// 设置开始时间为当天的最小时间点(即00:00)
|
|
|
|
|
map.put("status", Orders.TO_BE_CONFIRMED);
|
|
|
|
|
// 设置订单状态为待接单
|
|
|
|
|
|
|
|
|
|
//待接单
|
|
|
|
|
// 待接单订单数
|
|
|
|
|
Integer waitingOrders = orderMapper.countByMap(map);
|
|
|
|
|
|
|
|
|
|
//待派送
|
|
|
|
|
// 待派送订单数
|
|
|
|
|
map.put("status", Orders.CONFIRMED);
|
|
|
|
|
// 设置订单状态为已确认
|
|
|
|
|
Integer deliveredOrders = orderMapper.countByMap(map);
|
|
|
|
|
|
|
|
|
|
//已完成
|
|
|
|
|
// 已完成订单数
|
|
|
|
|
map.put("status", Orders.COMPLETED);
|
|
|
|
|
// 设置订单状态为已完成
|
|
|
|
|
Integer completedOrders = orderMapper.countByMap(map);
|
|
|
|
|
|
|
|
|
|
//已取消
|
|
|
|
|
// 已取消订单数
|
|
|
|
|
map.put("status", Orders.CANCELLED);
|
|
|
|
|
// 设置订单状态为已取消
|
|
|
|
|
Integer cancelledOrders = orderMapper.countByMap(map);
|
|
|
|
|
|
|
|
|
|
//全部订单
|
|
|
|
|
// 全部订单数
|
|
|
|
|
map.put("status", null);
|
|
|
|
|
// 不设置订单状态,查询所有订单
|
|
|
|
|
Integer allOrders = orderMapper.countByMap(map);
|
|
|
|
|
|
|
|
|
|
// 构建并返回订单概览视图对象
|
|
|
|
|
return OrderOverViewVO.builder()
|
|
|
|
|
.waitingOrders(waitingOrders)
|
|
|
|
|
// 设置待接单订单数
|
|
|
|
|
.deliveredOrders(deliveredOrders)
|
|
|
|
|
// 设置待派送订单数
|
|
|
|
|
.completedOrders(completedOrders)
|
|
|
|
|
// 设置已完成订单数
|
|
|
|
|
.cancelledOrders(cancelledOrders)
|
|
|
|
|
// 设置已取消订单数
|
|
|
|
|
.allOrders(allOrders)
|
|
|
|
|
// 设置全部订单数
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 查询菜品总览
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
* @return 菜品概览视图对象
|
|
|
|
|
*/
|
|
|
|
|
public DishOverViewVO getDishOverView() {
|
|
|
|
|
// 创建一个Map来存储查询参数
|
|
|
|
|
Map map = new HashMap();
|
|
|
|
|
map.put("status", StatusConstant.ENABLE);
|
|
|
|
|
// 设置菜品状态为启用
|
|
|
|
|
Integer sold = dishMapper.countByMap(map);
|
|
|
|
|
// 查询启用状态的菜品数量(已售出)
|
|
|
|
|
|
|
|
|
|
map.put("status", StatusConstant.DISABLE);
|
|
|
|
|
// 设置菜品状态为禁用
|
|
|
|
|
Integer discontinued = dishMapper.countByMap(map);
|
|
|
|
|
// 查询禁用状态的菜品数量(已下架)
|
|
|
|
|
|
|
|
|
|
// 构建并返回菜品概览视图对象
|
|
|
|
|
return DishOverViewVO.builder()
|
|
|
|
|
.sold(sold)
|
|
|
|
|
// 设置已售出菜品数量
|
|
|
|
|
.discontinued(discontinued)
|
|
|
|
|
// 设置已下架菜品数量
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 查询套餐总览
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
* @return 套餐概览视图对象
|
|
|
|
|
*/
|
|
|
|
|
public SetmealOverViewVO getSetmealOverView() {
|
|
|
|
|
// 创建一个Map来存储查询参数
|
|
|
|
|
Map map = new HashMap();
|
|
|
|
|
map.put("status", StatusConstant.ENABLE);
|
|
|
|
|
// 设置套餐状态为启用
|
|
|
|
|
Integer sold = setmealMapper.countByMap(map);
|
|
|
|
|
// 查询启用状态的套餐数量(已售出)
|
|
|
|
|
|
|
|
|
|
map.put("status", StatusConstant.DISABLE);
|
|
|
|
|
// 设置套餐状态为禁用
|
|
|
|
|
Integer discontinued = setmealMapper.countByMap(map);
|
|
|
|
|
// 查询禁用状态的套餐数量(已下架)
|
|
|
|
|
|
|
|
|
|
// 构建并返回套餐概览视图对象
|
|
|
|
|
return SetmealOverViewVO.builder()
|
|
|
|
|
.sold(sold)
|
|
|
|
|
// 设置已售出套餐数量
|
|
|
|
|
.discontinued(discontinued)
|
|
|
|
|
// 设置已下架套餐数量
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|