苍穹外卖学习笔记(三十一)

devtools/2024/10/23 12:20:49/

文章目录

  • 工作台
    • 今日数据接口
      • WorkSpaceController
      • WorkspaceService
      • WorkspaceServiceImpl
    • 订单管理接口
      • WorkSpaceController
      • WorkspaceService
      • WorkspaceServiceImpl
    • 菜品总览接口
      • WorkSpaceController
      • WorkspaceService
      • WorkspaceServiceImpl
    • 套餐总览接口
      • WorkSpaceController
      • WorkspaceService
      • WorkspaceServiceImpl

数据统计-Excel报表

工作台

今日数据接口

WorkSpaceController

java">@RestController
@RequestMapping("/admin/workspace")
@Slf4j
@Api(tags = "工作台")
public class WorkSpaceController {@Autowiredprivate WorkspaceService workspaceService;/*** 查询今日运营数据*/@GetMapping("/businessData")@ApiOperation(value = "查询今日运营数据")public Result<BusinessDataVO> businessData() {log.info("查询今日运营数据");//获得当天的开始时间LocalDateTime begin = LocalDateTime.now().with(LocalTime.MIN);//获得当天的结束时间LocalDateTime end = LocalDateTime.now().with(LocalTime.MAX);BusinessDataVO businessDataVO = workspaceService.getBusinessData(begin, end);return Result.success(businessDataVO);}
}

WorkspaceService

java">public interface WorkspaceService {/*** 查询今日运营数据*/BusinessDataVO getBusinessData(LocalDateTime begin, LocalDateTime end);
}

WorkspaceServiceImpl

java">@Service
@Slf4j
public class WorkspaceServiceImpl implements WorkspaceService {@Autowiredprivate OrderMapper orderMapper;@Autowiredprivate UserMapper userMapper;@Autowiredprivate DishMapper dishMapper;@Autowiredprivate SetmealMapper setmealMapper;/*** 查询今日运营数据*/@Overridepublic 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();}
}

订单管理接口

WorkSpaceController

java">    /*** 查询订单管理数据*/@GetMapping("/overviewOrders")@ApiOperation(value = "查询订单管理数据")public Result<OrderOverViewVO> orderOverView() {log.info("查询订单概况");OrderOverViewVO orderOverViewVO = workspaceService.getOrderOverView();return Result.success(orderOverViewVO);}

WorkspaceService

java"> /*** 查询订单管理数据*/OrderOverViewVO getOrderOverView();

WorkspaceServiceImpl

java">/*** 查询订单管理数据*/@Overridepublic 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();}

菜品总览接口

WorkSpaceController

java">    /*** 查询菜品总览*/@GetMapping("/overviewDishes")@ApiOperation("查询菜品总览")public Result<DishOverViewVO> dishOverView(){return Result.success(workspaceService.getDishOverView());}

WorkspaceService

java">    /*** 查询菜品管理数据*/DishOverViewVO getDishOverView();

WorkspaceServiceImpl

java">/*** 查询菜品总览*/@Overridepublic DishOverViewVO getDishOverView() {LambdaQueryWrapper<Dish> wrapper = new LambdaQueryWrapper<Dish>().eq(Dish::getStatus, StatusConstant.ENABLE);Long sold = dishMapper.selectCount(wrapper);Wrapper<Dish> wrapper1 = new LambdaQueryWrapper<Dish>().eq(Dish::getStatus, StatusConstant.DISABLE);Long discontinued = dishMapper.selectCount(wrapper1);return DishOverViewVO.builder().sold(sold.intValue()).discontinued(discontinued.intValue()).build();}

套餐总览接口

WorkSpaceController

java">    /*** 查询套餐总览*/@GetMapping("/overviewSetmeals")@ApiOperation("查询套餐总览")public Result<SetmealOverViewVO> setmealOverView(){return Result.success(workspaceService.getSetmealOverView());}

WorkspaceService

java">  /*** 查询套餐管理数据*/SetmealOverViewVO getSetmealOverView();

WorkspaceServiceImpl

java"> /*** 查询套餐总览*/@Overridepublic SetmealOverViewVO getSetmealOverView() {LambdaQueryWrapper<Setmeal> wrapper = new LambdaQueryWrapper<Setmeal>().eq(Setmeal::getStatus, StatusConstant.ENABLE);Long sold = setmealMapper.selectCount(wrapper);Wrapper<Setmeal> wrapper1 = new LambdaQueryWrapper<Setmeal>().eq(Setmeal::getStatus, StatusConstant.DISABLE);Long discontinued = setmealMapper.selectCount(wrapper1);return SetmealOverViewVO.builder().sold(sold.intValue()).discontinued(discontinued.intValue()).build();}

http://www.ppmy.cn/devtools/128155.html

相关文章

docker安装mysql

我的环境&#xff1a;centos7 1.操作步骤 安装好docker&#xff0c;我的镜像是 {"registry-mirrors": ["https://hub.rat.dev/","https://docker.1panel.live/","https://docker.m.daocloud.io","https://docker.nju.edu.cn&q…

如何判断抖音矩阵系统的性能稳定性,支持OEM贴牌

一、引言 在当今社交媒体盛行的时代&#xff0c;抖音作为一款热门的短视频平台&#xff0c;吸引了大量的用户和创作者。为了更好地管理和运营多个抖音账号&#xff0c;许多人开始使用抖音矩阵系统。然而&#xff0c;如何判断抖音矩阵系统的性能稳定性成为了一个关键问题。本文…

中国研究员使用量子计算机破解 RSA 加密

由上海大学的 Wang Chao 领导的研究团队发现&#xff0c;D-Wave 的量子计算机可以优化问题解决&#xff0c;从而可以攻击 RSA 等加密方法。 中国研究人员公布了一种使用 D-Wave 的量子退火系统来破解经典加密的方法&#xff0c;这可能会加快量子计算机对广泛使用的加密系统构成…

Java的RocketMQ使用

在 Spring Boot 中&#xff0c;RocketMQ 和 Kafka 都是常用的消息中间件&#xff0c;它们的使用方法有一些相似之处&#xff0c;也有各自的特点。 一、RocketMQ 在 Spring Boot 中的使用 引入依赖 在项目的pom.xml文件中添加 RocketMQ 的依赖。 <dependency><groupId…

【前端】如何制作一个自己的网页(16)

上次&#xff0c;我们学习了两种复合CSS选择器&#xff0c;以及两种内容分组的方式&#xff1a;整体布局的div元素和局部布局的span元素。 学习目标 学习另一种对内容分组的方式&#xff1a;列表结构。首先&#xff0c;我们会简单了解下什么是HTML的列表结构。然后&#xff0…

Elasticsearch 中的高效按位匹配

作者&#xff1a;来自 Elastic Alexander Marquardt 探索在 Elasticsearch 中编码和匹配二进制数据的六种方法&#xff0c;包括术语编码&#xff08;我喜欢的方法&#xff09;、布尔编码、稀疏位位置编码、具有精确匹配的整数编码、具有脚本按位匹配的整数编码以及使用 ESQL 进…

CSS基础—网页布局(重点!)

1、两列布局 &#xff08;1&#xff09;概念 经典两列布局是指一种网页布局方式&#xff0c;其中一列宽度固定&#xff0c;另一列宽度自适应。‌ 这种布局方式在网页设计中非常常见&#xff0c;因为它能够提供良好的视觉效果和用户体验。 如图所示&#xff1a; 页面顶部放置一…

002_基于django国内运动男装小红书文章数据可视化分析系统的设计与实现2024_qo6cy3i4

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍&#xff1a;CodeMentor毕业设计领航者、全网关注者30W群落&#xff0c;InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者&#xff0c;博客领航之星、开发者头条/腾讯云/AW…