数据统计--图形报表--ApacheEcharts技术 --苍穹外卖day10

Apache Echarts

营业额统计

重点:已完成订单金额要排除其他状态的金额 根据时间选择区间

设计vo用于后端向前端传输数据,dto用于后端接收前端发送的数据

java 复制代码
 @GetMapping("/turnoverStatistics")
    @ApiOperation("营业额统计")
    public Result<TurnoverReportVO> turnoverStatistics(
            @DateTimeFormat(pattern = "yyyy-MM-dd")  LocalDate begin,
            @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end){
        log.info("营业额数据统计:{},{}",begin,end);
        return Result.success(reportService.getTurnoverStatistics(begin,end));
    }
java 复制代码
 public TurnoverReportVO getTurnoverStatistics(LocalDate begin, LocalDate end) {
        //当前集合用于存放从begin到end范围内的每天的日期
        List<LocalDate> dateList = new ArrayList<>();

        dateList.add(begin);

        while (!begin.equals(end)) {
            //日期计算,计算指定日期的后一天对应的日期
            //把每天的东西一个一个放进去
            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 = 5
            Map 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();
    }
相关推荐
编程小风筝3 分钟前
如何用redission实现springboot的分布式锁?
spring boot·分布式·后端
菜鸟小九13 分钟前
hot100(71-80)
java·数据结构·算法
大傻^13 分钟前
LangChain4j 1.4.0 快速入门:JDK 11+ 基线迁移与首个 AI Service 构建
java·开发语言·人工智能
代码探秘者14 分钟前
【大模型应用】4.分块之六大策略
java·数据结构·后端·python·spring
码喽7号14 分钟前
Springboot学习六:MybatisPlus的多表查询以及分页查询
java·spring boot·学习
那我掉的头发算什么20 分钟前
【博客系统】基于Spring全家桶的博客系统(下)
java·后端·spring·mybatis·开发
独自破碎E32 分钟前
【面试真题拆解】Spring中的注解
数据库·spring·面试
不吃香菜学java34 分钟前
苍穹外卖-新增菜品需求分析
java·spring boot·spring·tomcat·maven·ssm
Oneslide41 分钟前
Pod启动失败: /var/lib/kubelet/xxx/kube-api-access/ :no space left on device
后端
xiaohe071 小时前
自己编译RustDesk,并将自建ID服务器和key信息写入客户端
java