供热热计量表厂家推荐:深耕行业,技术为先
2026/6/12 10:37:51
业务规则
营业额指订单状态为已完成的订单金额合计
基于可视化报表的折线图展示营业额数据,x轴为日期,轴为营业额
根据时间选择区间,展示每天的营业额数据
接口设计
VO设计
controller
service
mapper
根据开始时间和结束时间以及状态值查询营业额
VO设计
思路和营业额统计完全相同,不赘述代码
业务规则
接口设计
VO接口设计
controller
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();}mapper
统计时间段内对应status的数据
业务规则
接口设计
VO接口设计
controller
service
多表查询,获取订单数和订单名称
利用Stream流和StringUtils将数据转换为String类型的数据
StringnameList=StringUtils.join(goodsSalesDTOList.stream().map(GoodsSalesDTO::getName).collect(Collectors.toList()),",");mapper
多表查询,根据名字和总数分组并排序