高水平高职建设网站,品牌策划公司的市场,有哪些网站做的很有特色,网站评论管理怎么做效果展示 Apache ECharts
介绍 常见图表 入门案例
快速上手 - Handbook - Apache ECharts 营业额统计——需求分析与设计
产品原型 接口设计 VO设计 营业额统计——代码开发
Controller中
/*** 数据统计相关接口*/
RestController
RequestMapping(/admin/reportRestController
RequestMapping(/admin/report)
Api(tags数据统计相关接口)
Slf4j
public class ReportController {Autowiredprivate ReportService reportService;/*** 营业额统计* param begin* param end* return*/GetMapping(/turnoverStatistics)ApiOperation(营业额统计)public ResultTurnoverReportVO 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));}
}
Service中
Service
Slf4j
public class ReportServiceImpl implements ReportService {Autowiredprivate OrderMapper orderMapper;/*** 统计指定时间区间内的营业额数据* param begin* param end* return*/Overridepublic TurnoverReportVO getTurnoverStatistics(LocalDate begin, LocalDate end) {//当前集合存在从begin到end的日期ListLocalDate dateListnew ArrayList();dateList.add(begin);while(!begin.equals(end)){//计算指定日期的后一天beginbegin.plusDays(1);dateList.add(begin);}//存放每天营业额ListDouble turnoverListnew 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 ? and order_time ? and status 5Map mapnew HashMap();map.put(begin,beginTime);map.put(end,endTime);map.put(status, Orders.COMPLETED);Double turnoverorderMapper.sumByMap(map);turnover turnover null?0.0:turnover;turnoverList.add(turnover);}//封装返回结果return TurnoverReportVO.builder().dateList(StringUtils.join(dateList,,)).turnoverList(StringUtils.join(turnoverList,,)).build();}
}
Mapper中 /*** 根据动态条件统计营业额数据* param map* return*/Double sumByMap(Map map);
对应的映射文件 select idsumByMap resultTypejava.lang.Doubleselect sum(amount) from orderswhereif testbegin ! nulland order_time gt; #{begin}/ifif testend ! nulland order_time lt; #{end}/ifif teststatus ! nulland status #{status}/if/where/select 营业额统计——功能测试 用户统计——需求分析与设计
产品原型 接口设计 VO设计 用户统计——代码开发
Controller中 /*** 用户统计* param begin* param end* return*/GetMapping(userStatistics)ApiOperation(用户统计)public ResultUserReportVO userStatistics(DateTimeFormat(pattern yyyy-MM-dd) LocalDate begin,DateTimeFormat(pattern yyyy-MM-dd) LocalDate end){log.info(营业额数据统计{}{},begin,end);UserReportVO userStatistics reportService.getUserStatistics(begin, end);return Result.success(userStatistics);}
Service中 /*** 统计指定时间区间内的用户数量* return*/Overridepublic UserReportVO getUserStatistics(LocalDate begin, LocalDate end) {//当前集合存放从begin到end的日期ListLocalDate dateListnew ArrayList();dateList.add(begin);while(!begin.equals(end)){//计算指定日期的后一天beginbegin.plusDays(1);dateList.add(begin);}//存放每天的新增用户数量 select count(id) from user where create_time ? and create_time ?ListInteger newUserListnew ArrayList();//存放每天的总用户数量 select count(id) from user where create_time ?ListInteger totalUserListnew ArrayList();for (LocalDate date:dateList){LocalDateTime beginTime LocalDateTime.of(date, LocalTime.MIN);LocalDateTime endTime LocalDateTime.of(date, LocalTime.MAX);Map mapnew HashMap();map.put(end,endTime);//总用户数量Integer totalUser userMapper.countByMap(map);map.put(begin,beginTime);//新增用户数量Integer newUseruserMapper.countByMap(map);totalUserList.add(totalUser);newUserList.add(newUser);}return UserReportVO.builder().dateList(StringUtils.join(dateList,,)).totalUserList(StringUtils.join(totalUserList,,)).newUserList(StringUtils.join(newUserList,,)).build();}
Mapper中 /*** 根据动态天条件统计用户数量* param map* return*/Integer countByMap(Map map);
对应的映射文件 select idcountByMap resultTypejava.lang.Integerselect count(id) from userwhereif testbegin ! nulland create_time gt; #{begin}/ifif testend ! nulland create_time lt; #{end}/if/where/select
用户统计——功能测试 订单统计——需求分析与设计
产品原型 接口设计 VO设计 订单统计——代码开发
Controller中 /*** 订单统计* param begin* param end* return*/GetMapping(ordersStatistics)ApiOperation(订单统计)public ResultOrderReportVO ordersStatistics(DateTimeFormat(pattern yyyy-MM-dd) LocalDate begin,DateTimeFormat(pattern yyyy-MM-dd) LocalDate end){log.info(营业额数据统计{}{},begin,end);return Result.success(reportService.getOrderStatistics(begin, end));}
Service中 /*** 统计指定时间区间内的订单数据* param begin* param end* return*/Overridepublic OrderReportVO getOrderStatistics(LocalDate begin, LocalDate end) {//当前集合存放从begin到end的日期ListLocalDate dateListnew ArrayList();dateList.add(begin);while(!begin.equals(end)){//计算指定日期的后一天beginbegin.plusDays(1);dateList.add(begin);}//存放每天的订单总数ListInteger orderCountListnew ArrayList();//存放每天的有效订单数ListInteger validOrderCountListnew ArrayList();//遍历dateList集合查询每天的有效订单数和订单总数for (LocalDate date : dateList) {//查询每天订单总数 select count(id) from orders where order_time ? and order_time ?LocalDateTime beginTime LocalDateTime.of(date, LocalTime.MIN);LocalDateTime endTime LocalDateTime.of(date, LocalTime.MAX);Integer orderCount getOrderCount(beginTime, endTime, null);//查询每天有效订单数 select count(id) from orders where order_time ? and order_time ? and status 5Integer validOrderCount getOrderCount(beginTime, endTime, Orders.CONFIRMED);orderCountList.add(orderCount);validOrderCountList.add(validOrderCount);}//计算时间区间内的订单总数量Integer totalOrderCount orderCountList.stream().reduce(Integer::sum).get();//计算时间区间内的有效订单数量Integer validOrderCount validOrderCountList.stream().reduce(Integer::sum).get();Double orderCompletionRate 0.0;if(totalOrderCount!0)//计算订单完成各率orderCompletionRate validOrderCount.doubleValue()/totalOrderCount;return OrderReportVO.builder().dateList(StringUtils.join(dateList,,)).orderCountList(StringUtils.join(orderCountList,,)).validOrderCountList(StringUtils.join(validOrderCountList,,)).totalOrderCount(totalOrderCount).validOrderCount(validOrderCount).orderCompletionRate(orderCompletionRate).build();}/*** 根据条件统计订单数量* param begin* param end* param status* return*/private Integer getOrderCount(LocalDateTime begin,LocalDateTime end,Integer status){Map mapnew HashMap();map.put(begin,begin);map.put(end,end);map.put(status,status);return orderMapper.countByMap(map);}
Mapper中 /*** 根据动态条件统计订单数量* param map* return*/Integer countByMap(Map map);
对应的映射文件 select idcountByMap resultTypejava.lang.Integerselect count(id) from orderswhereif testbegin ! nulland order_time gt; #{begin}/ifif testend ! nulland order_time lt; #{end}/ifif teststatus ! nulland status #{status}/if/where/select 订单统计——功能测试 销量排名统计——需求分析与设计
产品原型 接口设计 VO设计 销量排名统计——代码开发
Controller中 /*** 订单统计* param begin* param end* return*/GetMapping(top10)ApiOperation(销量排名top10)public ResultSalesTop10ReportVO top10(DateTimeFormat(pattern yyyy-MM-dd) LocalDate begin,DateTimeFormat(pattern yyyy-MM-dd) LocalDate end){log.info(销量排名top10:{},{},begin,end);return Result.success(reportService.getSalesTop10(begin, end));}
Service中 /*** 统计指定时间区间内的销量排名前10* return*/Overridepublic SalesTop10ReportVO getSalesTop10(LocalDate begin, LocalDate end) {//获得当前日期的起始时间LocalDateTime beginTime LocalDateTime.of(begin, LocalTime.MIN);LocalDateTime endTime LocalDateTime.of(end, LocalTime.MAX);ListGoodsSalesDTO salesTop10 orderMapper.getSalesTop10(beginTime, endTime);ListString names salesTop10.stream().map(GoodsSalesDTO::getName).collect(Collectors.toList());String nameListStringUtils.join(names,,);ListInteger numbers salesTop10.stream().map(GoodsSalesDTO::getNumber).collect(Collectors.toList());String numberListStringUtils.join(numbers,,);//封装返回结果数据return SalesTop10ReportVO.builder().nameList(nameList).numberList(numberList).build();}
Mapper中
select od.name ,sum(od.number) number from order_detail od,orders o where od.order_id o.id and o.status 5
and o.order_time 2022-10-01 and o.order_time 2023-10-01
group by od.name
order by number desc
limit 0,10 /*** 统计指定时间区间内的销量排名前10* return*/ListGoodsSalesDTO getSalesTop10(LocalDateTime begin ,LocalDateTime end);
对应的映射文件 select idgetSalesTop10 resultTypecom.sky.dto.GoodsSalesDTOselect od.name ,sum(od.number) numberfrom order_detail od,orders owhere od.order_id o.id and o.status 5if testbegin!nulland o.order_time gt; #{begin}/ifif testend !nulland o.order_time lt; #{end}/ifgroup by od.nameorder by number desclimit 0,10/select 销量排名统计——功能测试