From 613e15c19d6836d1d7bfb5135037b33d64c67ac8 Mon Sep 17 00:00:00 2001 From: subaixi Date: Wed, 9 Oct 2024 16:26:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E9=A6=96=E9=A1=B5=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E5=8F=B0=E7=9C=8B=E6=9D=BF=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/admin/WorkSpaceController.java | 76 ++++++++ .../main/java/com/sky/mapper/DishMapper.java | 8 + .../java/com/sky/mapper/SetmealMapper.java | 8 + .../com/sky/service/WorkspaceService.java | 37 ++++ .../service/impl/WorkspaceServiceImpl.java | 163 ++++++++++++++++++ .../src/main/resources/mapper/DishMapper.xml | 12 ++ .../main/resources/mapper/SetmealMapper.xml | 11 ++ 7 files changed, 315 insertions(+) create mode 100644 sky-server/src/main/java/com/sky/controller/admin/WorkSpaceController.java create mode 100644 sky-server/src/main/java/com/sky/service/WorkspaceService.java create mode 100644 sky-server/src/main/java/com/sky/service/impl/WorkspaceServiceImpl.java diff --git a/sky-server/src/main/java/com/sky/controller/admin/WorkSpaceController.java b/sky-server/src/main/java/com/sky/controller/admin/WorkSpaceController.java new file mode 100644 index 0000000..cbd3f01 --- /dev/null +++ b/sky-server/src/main/java/com/sky/controller/admin/WorkSpaceController.java @@ -0,0 +1,76 @@ +package com.sky.controller.admin; + +import com.sky.result.Result; +import com.sky.service.WorkspaceService; +import com.sky.vo.BusinessDataVO; +import com.sky.vo.DishOverViewVO; +import com.sky.vo.OrderOverViewVO; +import com.sky.vo.SetmealOverViewVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import java.time.LocalDateTime; +import java.time.LocalTime; + +/** + * 工作台 + */ +@RestController +@RequestMapping("/admin/workspace") +@Slf4j +@Api(tags = "工作台相关接口") +public class WorkSpaceController { + + @Autowired + private WorkspaceService workspaceService; + + /** + * 工作台今日数据查询 + * @return + */ + @GetMapping("/businessData") + @ApiOperation("工作台今日数据查询") + public Result businessData(){ + //获得当天的开始时间 + LocalDateTime begin = LocalDateTime.now().with(LocalTime.MIN); + //获得当天的结束时间 + LocalDateTime end = LocalDateTime.now().with(LocalTime.MAX); + + BusinessDataVO businessDataVO = workspaceService.getBusinessData(begin, end); + return Result.success(businessDataVO); + } + + /** + * 查询订单管理数据 + * @return + */ + @GetMapping("/overviewOrders") + @ApiOperation("查询订单管理数据") + public Result orderOverView(){ + return Result.success(workspaceService.getOrderOverView()); + } + + /** + * 查询菜品总览 + * @return + */ + @GetMapping("/overviewDishes") + @ApiOperation("查询菜品总览") + public Result dishOverView(){ + return Result.success(workspaceService.getDishOverView()); + } + + /** + * 查询套餐总览 + * @return + */ + @GetMapping("/overviewSetmeals") + @ApiOperation("查询套餐总览") + public Result setmealOverView(){ + return Result.success(workspaceService.getSetmealOverView()); + } +} diff --git a/sky-server/src/main/java/com/sky/mapper/DishMapper.java b/sky-server/src/main/java/com/sky/mapper/DishMapper.java index bb5c84a..6aa32c5 100644 --- a/sky-server/src/main/java/com/sky/mapper/DishMapper.java +++ b/sky-server/src/main/java/com/sky/mapper/DishMapper.java @@ -11,6 +11,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import java.util.List; +import java.util.Map; @Mapper public interface DishMapper { @@ -80,4 +81,11 @@ public interface DishMapper { @Select("select d.* from dish d left join setmeal_dish sd on d.id = sd.dish_id" + " where sd.setmeal_id = #{setmealId}") List getBySetmealId(Long setmealId); + + /** + * 根据条件统计菜品数量 + * @param map + * @return + */ + Integer countByMap(Map map); } diff --git a/sky-server/src/main/java/com/sky/mapper/SetmealMapper.java b/sky-server/src/main/java/com/sky/mapper/SetmealMapper.java index c83807e..e5be9d0 100644 --- a/sky-server/src/main/java/com/sky/mapper/SetmealMapper.java +++ b/sky-server/src/main/java/com/sky/mapper/SetmealMapper.java @@ -13,6 +13,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import java.util.List; +import java.util.Map; @Mapper public interface SetmealMapper { @@ -85,4 +86,11 @@ public interface SetmealMapper { "from setmeal_dish sd left join dish d on sd.dish_id = d.id " + "where sd.setmeal_id = #{setmealId}") List getDishItemBySetmealId(Long setmealId); + + /** + * 根据条件统计套餐数量 + * @param map + * @return + */ + Integer countByMap(Map map); } diff --git a/sky-server/src/main/java/com/sky/service/WorkspaceService.java b/sky-server/src/main/java/com/sky/service/WorkspaceService.java new file mode 100644 index 0000000..09d0c8f --- /dev/null +++ b/sky-server/src/main/java/com/sky/service/WorkspaceService.java @@ -0,0 +1,37 @@ +package com.sky.service; + +import com.sky.vo.BusinessDataVO; +import com.sky.vo.DishOverViewVO; +import com.sky.vo.OrderOverViewVO; +import com.sky.vo.SetmealOverViewVO; +import java.time.LocalDateTime; + +public interface WorkspaceService { + + /** + * 根据时间段统计营业数据 + * @param begin + * @param end + * @return + */ + BusinessDataVO getBusinessData(LocalDateTime begin, LocalDateTime end); + + /** + * 查询订单管理数据 + * @return + */ + OrderOverViewVO getOrderOverView(); + + /** + * 查询菜品总览 + * @return + */ + DishOverViewVO getDishOverView(); + + /** + * 查询套餐总览 + * @return + */ + SetmealOverViewVO getSetmealOverView(); + +} diff --git a/sky-server/src/main/java/com/sky/service/impl/WorkspaceServiceImpl.java b/sky-server/src/main/java/com/sky/service/impl/WorkspaceServiceImpl.java new file mode 100644 index 0000000..8ea0475 --- /dev/null +++ b/sky-server/src/main/java/com/sky/service/impl/WorkspaceServiceImpl.java @@ -0,0 +1,163 @@ +package com.sky.service.impl; + +import com.sky.constant.StatusConstant; +import com.sky.entity.Orders; +import com.sky.mapper.DishMapper; +import com.sky.mapper.OrderMapper; +import com.sky.mapper.SetmealMapper; +import com.sky.mapper.UserMapper; +import com.sky.service.WorkspaceService; +import com.sky.vo.BusinessDataVO; +import com.sky.vo.DishOverViewVO; +import com.sky.vo.OrderOverViewVO; +import com.sky.vo.SetmealOverViewVO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.util.HashMap; +import java.util.Map; + +@Service +@Slf4j +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 + */ + public BusinessDataVO getBusinessData(LocalDateTime begin, LocalDateTime end) { + /** + * 营业额:当日已完成订单的总金额 + * 有效订单:当日已完成订单的数量 + * 订单完成率:有效订单数 / 总订单数 + * 平均客单价:营业额 / 有效订单数 + * 新增用户:当日新增用户的数量 + */ + + Map map = new HashMap(); + 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; + + //有效订单数 + Integer validOrderCount = orderMapper.countByMap(map); + + Double unitPrice = 0.0; + + Double orderCompletionRate = 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 + */ + public OrderOverViewVO getOrderOverView() { + Map map = new HashMap(); + map.put("begin", LocalDateTime.now().with(LocalTime.MIN)); + 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 + */ + public DishOverViewVO getDishOverView() { + 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 + */ + public SetmealOverViewVO getSetmealOverView() { + 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(); + } +} diff --git a/sky-server/src/main/resources/mapper/DishMapper.xml b/sky-server/src/main/resources/mapper/DishMapper.xml index 0bf72af..cdfb980 100644 --- a/sky-server/src/main/resources/mapper/DishMapper.xml +++ b/sky-server/src/main/resources/mapper/DishMapper.xml @@ -61,4 +61,16 @@ order by create_time desc + + diff --git a/sky-server/src/main/resources/mapper/SetmealMapper.xml b/sky-server/src/main/resources/mapper/SetmealMapper.xml index fb819be..8824751 100644 --- a/sky-server/src/main/resources/mapper/SetmealMapper.xml +++ b/sky-server/src/main/resources/mapper/SetmealMapper.xml @@ -63,4 +63,15 @@ +