《苍穹外卖》项目学习记录-Day11营业额统计

embedded/2025/2/3 5:59:16/

请求方式为GET方式,因为营业额统计本质上是一个查询类的操作, 查询相应的数据,最终把数据整合好,然后返回给前端。接口的请求参数有哪些,我们要统计营业额具体是统计哪个时间段之内的呢,应该通过参数传过来比较合理,比如说想统计近七日的,那近七日是几月几号到几月几号呢,这就需要通过参数传过来,然后后端根据它提交过来的这个参数,来查询这个时间段之内的统计数据。所以这个参数我们提交过来两个就可以了,一个是起始日期,一个是结束日期。

日期类型有固定的格式,通过@DateTimeFormat注解来描述这个日期的格式,否则不能正确封装。

1.计算dateList

从begin这一天一直加到end,把这些天数加到dateList集合里面去。把dateList集合里面的元素一个一个取出来,中间用逗号分隔开,拼成一个字符串封装到dateList里面去。

2.计算turnoverList

查询从begin到end每一天的营业额数据,中间以逗号分隔开,拼接成一个字符串封装到turnoverList里面去。

营业额与日期应该是一一对应的,哪一天的日期对应哪一天的营业额。

LocalDate只有年月日没有时分秒,而LocalDateTime既有年月日又体现时分秒。要计算当天的营业额数据就要知道当天的起始时间从什么时刻开始,也就是说除了要体现年月日还要体现时分秒,同时还要计算当天的结束时间。

//查询date日期对应的营业额数据,营业额是指:状态为"已完成"的订单金额合计

//select sum(amount) from orders where order_time > beginTime and order_time < endTime and status = 5

注意:test里面的begin、end、status要与Map中的key一样,前后一致,不然取不出来。

统计这一天的营业额,假设这一天一个订单也没有,这个营业额统计出来是null,所以它如果返回的是null的话我们把它转成0。

java"> /*** 统计指定时间区间内的营业额数据* @param begin* @param end* @return*/public TurnoverReportVO getTurnoverStatistics(LocalDate begin, LocalDate end) {//当前集合用于存放从begin到end范围内的每天的日期List<LocalDate> dateList = new ArrayList<>();dateList.add(begin);while (!end.equals(begin)){//日期计算,计算指定日期的最后一天对应的日期begin = begin.plusDays(1);dateList.add(begin);}//存放每天的营业额List<Double> turnoverList = new ArrayList();for (LocalDate date : dateList){//查询date日期对应的营业额数据,营业额是指:状态为"已完成"的订单金额合计LocalDateTime beginTime = LocalDateTime.of(date, LocalTime.MIN);LocalDateTime endTime = LocalDateTime.of(date, LocalTime.MAX);//select sum(amount) from orders where order_time > beginTime and order_time < endTime and status = 5Map map = new HashMap();map.put("begin",beginTime);map.put("end",endTime);map.put("status", Orders.COMPLETED);Double turnover = orderMapper.sumByMap(map);turnover =turnover == null ? 0.0 : turnover;turnoverList.add(turnover);}//封装返回结果return TurnoverReportVO.builder().dateList(StringUtils.join(dateList,",")).turnoverList(StringUtils.join(turnoverList,",")).build();}

 ·功能测试

增强for

格式 for(元素数据类型 变量名:数组或者Collection集合){

              //在此处使用变量即可,该变量就是元素

        }

条件运算符

条件运算符是Java中唯一的需要3个操作数的运算符,所以又称三目运算符或三元运算符。

条件运算符的语法格式如下。

条件 ? 表达式1 : 表达式2

·首先对条件进行判断,如果结果为true,则返回表达式1的值。

·如果结果为false,返回表达式2的值。

JDK8开始新增日期API

概述

·从Java8开始,java.time包提供了新的日期和时间API,主要涉及的类型有:

LocalDate:不包含具体时间的日期

LocalTime:不包含日期的时间

LocalDateTime:包含了日期及时间

LocalTimeFormatter:用于做时间的格式化和解析的

Duration:用于计算两个"时间"间隔

Period:用于计算两个"日期"间隔

·新增的API严格区分了时刻、本地日期、本地时间,并且,对日期和时间进行运算更加方便。

·其次,新的API的类型几乎全部是不可变类型(和String的使用类似),可以放心使用不必担心被修改。

LocalDate、LocalTime、LocalDateTime

·它们分别表示日期,时间,日期时间对象,它们的类的实例是不可变的对象。

·它们三者构建对象和API都是通用的。

构建对象的方式如下:

方法名                                     说明

Public static Xxxx now();          静态方法,根据当前时间创建对象

                                                 LocalDate localDate = LocalDate.now();

                                                 LocalTime localTime = LocalTime.now();

                                      LocalDateTime localDateTime = LocalDateTime.now();

Public static Xxxx of(...);          LocalDate localDate 1= LocalDate.of(2099,11,11);

                                                 LocalTime localTime1 = LocalTime.of(11,11,11);

                              LocalDateTime localDateTime1 = LocalDateTime.0f(2020,10,6,13,23,43);

LocalDateTime综合了LocalDate和LocalTime里面的方法,所以下面只用LocalDate和LocalTime来举例。

·这些方法返回的是一个新的实例引用,因为LocalDateTime、LocalDate、LocalTime都是不可变的。

方法名                                                                                说明

plusDays,plusWeeks,plusMonths,plusYears              向当前LocalDate对象添加几天、几周、几个月、几年

minusDay,minusWeeks,minusMonths,minusYears   从LocalDate对象减去几天、几周、几个月、几年

withDayOfMonth,withDayOfYear,withMonth,withYear   将月份天数、年份天数、月份、年份修改为指定的值并返回新的LocalDate对象

isBefore,isAfter        比较两个LocalDate


http://www.ppmy.cn/embedded/159099.html

相关文章

【毕业与课程大作业参考】基于 yolov8+pyqt5 界面自适应的表情识别检测系统 demo

【毕业与课程大作业参考】基于yolov8pyqt5界面自适应的表情识别检测系统demo.zip资源-CSDN文库 【毕业与课程大作业参考】基于 yolov8pyqt5 界面自适应的表情识别检测系统 demo 在人工智能和计算机视觉领域&#xff0c;表情识别检测系统是一个极具趣味性和挑战性的项目。对于正…

数据挖掘常用算法模型简介

以下是数据挖掘中常用的算法模型及其简称、英文全称和使用场景的简要介绍&#xff1a; 1. 决策树&#xff08;Decision Tree, DT&#xff09; 常用算法&#xff1a; CART: Classification and Regression TreeID3: Iterative Dichotomiser 3C4.5: 基于 ID3 改进 使用场景&…

基于单片机的车载传感器数据处理系统

1总体方案设计 本次新能源汽车车载传感器数据处理系统&#xff0c;其系统总体架构如图2.1所示&#xff0c;采用STM32f103单片机作为控制器&#xff0c;通过DH11传感器实现温湿度检测&#xff1b;通过光敏电阻实现光照检测&#xff1b;同时其检测的信息通过ESP8266 WiFi模块传输…

render: h => h(App)

render: h > h(App) 是下面内容的缩写&#xff1a; render: function (createElement) {return createElement(App); }进一步缩写为(ES6 语法)&#xff1a; render (createElement) {return createElement(App); }再进一步缩写为&#xff1a; render (h){return h(App); …

Spring Boot - 数据库集成05 - 集成MongoDB

Spring Boot集成MongoDB 文章目录 Spring Boot集成MongoDB一&#xff1a;使用前的准备1&#xff1a;依赖导入 & 配置2&#xff1a;实体类创建 二&#xff1a;核心 - MongoRepository三&#xff1a;核心 - MongoTemplate1&#xff1a;集合操作2&#xff1a;文档操作(重点)3&…

maven、npm、pip、yum官方镜像修改文档

文章目录 Maven阿里云网易华为腾讯云 Npm淘宝腾讯云 pip清华源阿里中科大华科 Yum 由于各博客繁杂&#xff0c;本文旨在记录各常见镜像官网&#xff0c;及其配置文档。常用镜像及配置可评论后加入 Maven 阿里云 官方文档 setting.xml <mirror><id>aliyunmaven&l…

基于SpringBoot的智慧康老疗养院管理系统的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

Github 2025-01-31Java开源项目日报 Top10

根据Github Trendings的统计,今日(2025-01-31统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目10C项目1Kotlin项目1Bazel:快速、可扩展的多语言构建系统 创建周期:3564 天开发语言:Java协议类型:Apache License 2.0Star数量:2…