目录
Apache Echarts介绍
ApacheECharts是一款基于Javascript 的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。
营业额统计功能
从产品原型可以看出,可以选择时间范围。x轴为日期,y周为营业额。
用什么方法请求?传入什么参数?返回什么数据?
该请求使用get方式。需要传入查询的开始时间和结束时间。返回给前端日期列表和营业额列表封装成TurnoverReportVO后返回。
传入的时间参数用注解@DateTimeFormat来规定格式。
public Result<TurnoverReportVO> turnoverStatistics(
@DateTimeFormat(pattern = "yyyy-MM-dd")
LocalDate begin,
@DateTimeFormat(pattern = "yyyy-MM-dd")
LocalDate end
)
获取时间的列表的思路:循环一直到开始到结束,每次加一天后加入到列表,之后使用Stringutils中的join将列表变成字符串。、
获取当日营业额的思路:由于下单时间有时分秒,因此获取列表中年月日的日期后要添加时分秒。查询数据库需要传入三个参数,可以用map封装后传过去。
LocalDateTime beginTime = LocalDateTime.of(date, LocalTime.MIN);
LocalDateTime endTime=LocalDateTime.of(date,LocalTime.MAX);
Map map =new HashMap();
map.put("begin",beginTime);
map.put("end",endTime);
map.put("status", Orders.COMPLETED);
Double money= Double.valueOf(orderMapper.sumByMap(map));
最后需要注意的是,当日的营业额查询出来的可能是null,如果是null则返回0。
用户统计功能
用什么方法请求?传入什么参数?返回什么数据?
该请求使用get方式。需要传入查询的开始时间和结束时间。返回给前端日期列表和用户总量以及当然新增用户,封装UserReportVO后返回前端。
这里唯一值得要讲的就是,统计总的用户只要设置开始时间就可以了。
map.put("end",endTime);
Integer totalUser = userMapper.getByMap(map);
map.put("begin",beginTime);
Integer newUser= userMapper.getByMap(map);
订单统计功能
用什么方法请求?传入什么参数?返回什么数据?
该请求使用get方式。需要传入查询的开始时间和结束时间。返回给前端关于订单相关的信息。
使用了流来统计总数,其他的思路和上面的功能其实是一样的,这里就不冗余描述。
Integer totalOrderCount = orderTotalList.stream().reduce(Integer::sum).get();
Integer validOrderCount = validOrderList.stream().reduce(Integer::sum).get();
销量排名功能
用什么方法请求?传入什么参数?返回什么数据?
该请求使用get方式。需要传入查询的开始时间和结束时间。需要给前端返回商品名称和销量并用SalesTop10ReportVO封装。
<select id="getTop10" resultType="com.sky.dto.GoodsSalesDTO">
select od.name,sum(od.number) number from order_detail od,orders o
where od.order_id=o.id and o.status=5
<if test="begin != null">
and o.order_time > #{begin}
</if>
<if test="end!=null">
and o.order_time < #{end}
</if>
group by od.name
order by number desc
limit 0,10
</select>
List<String> name = goodsSalesDTOList.stream().map(GoodsSalesDTO::getName).collect(Collectors.toList());
List<Integer> number = goodsSalesDTOList.stream().map(GoodsSalesDTO::getNumber).collect(Collectors.toList());