From 7469f1f209b8d88dcbf460c93d9ee1db7fde942a Mon Sep 17 00:00:00 2001
From: xuxin <840198532@qq.com>
Date: Tue, 2 Dec 2025 14:27:29 +0800
Subject: [PATCH] =?UTF-8?q?=E8=8B=8D=E7=A9=B9=E5=A4=96=E5=8D=96--POI?=
=?UTF-8?q?=E7=9A=84=E5=85=A5=E9=97=A8=E6=A1=88=E4=BE=8B-=E8=AF=BB?=
=?UTF-8?q?=E5=86=99=E6=93=8D=E4=BD=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sky-server/pom.xml | 3 +-
.../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 | 12 ++
8 files changed, 318 insertions(+), 1 deletion(-)
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/pom.xml b/sky-server/pom.xml
index d5b6696..2640cad 100644
--- a/sky-server/pom.xml
+++ b/sky-server/pom.xml
@@ -108,7 +108,7 @@
jaxb-api
-
+
org.apache.poi
poi
@@ -117,6 +117,7 @@
org.apache.poi
poi-ooxml
+
org.springframework.boot
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 b7040bb..02d4e33 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.Options;
import org.apache.ibatis.annotations.Select;
import java.util.List;
+import java.util.Map;
@Mapper
public interface DishMapper {
@@ -73,4 +74,11 @@ public interface DishMapper {
*/
@Select("select a.* from dish a left join setmeal_dish b on a.id = b.dish_id where b.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 3c47419..ab1d8bb 100644
--- a/sky-server/src/main/java/com/sky/mapper/SetmealMapper.java
+++ b/sky-server/src/main/java/com/sky/mapper/SetmealMapper.java
@@ -12,6 +12,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 {
@@ -75,4 +76,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 19c9b62..e77e747 100644
--- a/sky-server/src/main/resources/mapper/DishMapper.xml
+++ b/sky-server/src/main/resources/mapper/DishMapper.xml
@@ -64,4 +64,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 fe6fa83..11127b8 100644
--- a/sky-server/src/main/resources/mapper/SetmealMapper.xml
+++ b/sky-server/src/main/resources/mapper/SetmealMapper.xml
@@ -76,4 +76,16 @@
+
+
\ No newline at end of file