news 2026/2/28 0:38:15

【苍穹外卖-day11】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【苍穹外卖-day11】

《苍穹外卖-day11》

0. 今日总结

  1. 完成了营业额统计功能开发
  2. 完成了用户统计功能开发
  3. 完成了订单统计功能开发
  4. 完成了销量排名top统计功能开发

1. 营业额统计

1.1 需求分析和设计

  • 业务规则

    1. 营业额指订单状态为已完成的订单金额合计

    2. 基于可视化报表的折线图展示营业额数据,x轴为日期,轴为营业额

    3. 根据时间选择区间,展示每天的营业额数据

  • 接口设计

1.2 代码开发

  • VO设计

  • controller

    1. 用TurnoverReportVO接收数据
    2. 用LocalDate接收前端传来的begin和end,表示统计的开始日期和结束日期,并用DateTimeFormat注解将日期转换为固定的格式
    3. 调用service层接口,将begin和end传入,并进行查询
  • service

    1. 创建List集合,泛型为LocalDate,用于存放日期数据
    2. 通过循环以及plusDays方法对begin递增1天,并将每天的数据add到dateList集合中
    3. 创建List集合,泛型为Double,用于存放营业额
    4. 遍历date,逐天统计
    5. 调用LocalDateTime.of方法,获取对应date的开始时间和结束时间
    6. 创建Map集合,用于一次性将begin,end,status传给Mapper
    7. 调用mapper层接口,查询begin-end内每一天的营业额之和
    8. 判断,若营业为空,则置为0,否则为查询的值
    9. 将营业额add到turnoverList中
    10. 返回一个新的TurnoverReportVO对象,设置dateList和turnoverList值,按前端的要求,用","分隔并将值用apache的StringUtils工具类的join转化为字符串
  • mapper

    根据开始时间和结束时间以及状态值查询营业额

1.3 功能测试

2. 用户统计

2.1 需求分析

2.2 代码开发

  • VO设计

思路和营业额统计完全相同,不赘述代码

2.3 功能测试

3. 订单统计

3.1 需求分析

  • 业务规则

    1. 有效订单指状态为“已完成”的订单
    2. 基于可视化报表的折线图展示订单数据,x轴为日期,Y轴为订单数量
    3. 根据时间选择区间,展示每天的订单总数和有效订单数
    4. 展示所选时间区间内的有效订单数、总订单数、订单完成率,订单完成率=有效订单数/总订单数*100%
  • 接口设计

3.2 代码开发

  • VO接口设计

  • controller

    1. 接收日期数据
    2. 将日期传给service层,并返回orderReportVO对象
  • service

    publicOrderReportVOorderReport(LocalDatebegin,LocalDateend){//封装日期集合List<LocalDate>dateTimeList=newArrayList<>();dateTimeList.add(begin);while(!begin.equals(end)){begin=begin.plusDays(1);dateTimeList.add(begin);}//查询每天订单数据doubleorderCompletionRate;//有效订单率List<Double>totalOrdersList=newArrayList<>();//订单数列表List<Double>totalCompletionOrdersList=newArrayList<>();//有效订单数列表doubletotalOrders=0;//订单总数doubletotalCompletionOrders=0;//有效订单总数for(LocalDatedate:dateTimeList){doubletotalOrder;//订单总数doubletotalCompletionOrder;//有效订单总数LocalDateTimebeginTime=LocalDateTime.of(date,LocalTime.MIN);LocalDateTimeendTime=LocalDateTime.of(date,LocalTime.MAX);Mapmap=newHashMap();map.put("begin",beginTime);map.put("end",endTime);map.put("status",null);totalOrder=orderMapper.getByBeginAndEnd(map);//查询订单总数map.put("status",Orders.COMPLETED);totalCompletionOrder=orderMapper.getByBeginAndEnd(map);//查询有效订单数totalOrdersList.add(totalOrder);totalCompletionOrdersList.add(totalCompletionOrder);totalOrders+=totalOrder;totalCompletionOrders+=totalCompletionOrder;}orderCompletionRate=totalCompletionOrders/totalOrders;returnOrderReportVO.builder().dateList(StringUtils.join(dateTimeList,",")).totalOrderCount((int)totalOrders).validOrderCount((int)totalCompletionOrders).orderCountList(StringUtils.join(totalOrdersList,",")).validOrderCountList(StringUtils.join(totalCompletionOrdersList,",")).orderCompletionRate(orderCompletionRate).build();}
    1. 封装日期集合
    2. 查询每天订单数据
      1. 查询status = null的数据,表示订单总数,并添加到list集合
      2. 查询status = 5的数据,表示有效订单总数,并添加到list集合
      3. 累加到时间段内订单总数和时间段内有效订单总数
    3. 计算有效订单率
  • mapper

    统计时间段内对应status的数据

3.3 功能测试

4. 销量排名Top10

4.1 需求分析

  • 业务规则

    1. 根据时间选择区间,展示销量前10的商品(包括菜品和套餐)
    2. 基于可视化报表的柱状图降序展示商品销量
    3. 此处的销量为商品销售的份数
  • 接口设计

4.2 代码开发

  • VO接口设计

  • controller

    1. 接收日期数据
    2. 将日期传给service层,并返回SalesTop10ReportVO对象
  • service

    1. 多表查询,获取订单数和订单名称

    2. 利用Stream流和StringUtils将数据转换为String类型的数据

      StringnameList=StringUtils.join(goodsSalesDTOList.stream().map(GoodsSalesDTO::getName).collect(Collectors.toList()),",");
      1. goodsSalesDTOList.stream()获取Stream流
      2. .map(GoodsSalesDTO::getName),转换流中的数据类型,转换为getName的返回值类型
      3. 通过collect收集流,转化为list类型
  • mapper

    多表查询,根据名字和总数分组并排序

4.3 功能测试

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/26 13:52:56

通达信缠论分析插件使用指南

插件功能解析 【免费下载链接】Indicator 通达信缠论可视化分析插件 项目地址: https://gitcode.com/gh_mirrors/ind/Indicator 本插件专为通达信平台设计&#xff0c;实现了缠论理论中关键结构要素的自动化识别与可视化呈现。通过智能算法&#xff0c;系统能够准确捕捉…

作者头像 李华
网站建设 2026/2/26 3:16:08

STM32编程必备:stlink工具完全使用指南

STM32编程必备&#xff1a;stlink工具完全使用指南 【免费下载链接】stlink 项目地址: https://gitcode.com/gh_mirrors/stl/stlink STM32编程工具stlink是嵌入式开发领域的重要利器&#xff0c;这款开源工具集能够帮助开发者高效完成STM32微控制器的编程和调试任务。无…

作者头像 李华
网站建设 2026/2/27 8:39:12

三星固件管理的终极解决方案:跨平台工具完整教程

三星固件管理的终极解决方案&#xff1a;跨平台工具完整教程 【免费下载链接】SamloaderKotlin 项目地址: https://gitcode.com/gh_mirrors/sa/SamloaderKotlin 您是否曾经为三星设备的固件更新而烦恼&#xff1f;面对复杂的型号代码、区域版本和加密文件&#xff0c;传…

作者头像 李华
网站建设 2026/2/24 13:41:55

如何轻松实现Minecraft跨平台存档转换:Chunker完整指南

如何轻松实现Minecraft跨平台存档转换&#xff1a;Chunker完整指南 【免费下载链接】Chunker Convert Minecraft worlds between Java Edition and Bedrock Edition 项目地址: https://gitcode.com/gh_mirrors/chu/Chunker 你是否曾经想过在PC和手机之间无缝切换Minecra…

作者头像 李华