echart图表显示12个月的数据
1.MySQL server的语句
-- 查询某年的12个月的数据 SELECT sum( CASE WHEN MONTH ( o.create_time ) = 1 THEN 1 ELSE 0 END ) AS '1月', sum( CASE WHEN MONTH ( o.create_time ) = 2 THEN 1 ELSE 0 END ) AS '2月', sum( CASE WHEN MONTH ( o.create_time ) = 3 THEN 1 ELSE 0 END ) AS '3月', sum( CASE WHEN MONTH ( o.create_time ) = 4 THEN 1 ELSE 0 END ) AS '4月', sum( CASE WHEN MONTH ( o.create_time ) = 5 THEN 1 ELSE 0 END ) AS '5月', sum( CASE WHEN MONTH ( o.create_time ) = 6 THEN 1 ELSE 0 END ) AS '6月', sum( CASE WHEN MONTH ( o.create_time ) = 7 THEN 1 ELSE 0 END ) AS '7月', sum( CASE WHEN MONTH ( o.create_time ) = 8 THEN 1 ELSE 0 END ) AS '8月', sum( CASE WHEN MONTH ( o.create_time ) = 9 THEN 1 ELSE 0 END ) AS '9月', sum( CASE WHEN MONTH ( o.create_time ) = 10 THEN 1 ELSE 0 END ) AS '10月', sum( CASE WHEN MONTH ( o.create_time ) = 11 THEN 1 ELSE 0 END ) AS '11月', sum( CASE WHEN MONTH ( o.create_time ) = 12 THEN 1 ELSE 0 END ) AS '12月' FROM orders o WHERE DATE_FORMAT( o.create_time, '%Y' ) = YEAR ( now( ) ) AND o.isdelete != '1' AND o.STATUS = '1'
2.mapper接口
/** * 获取订单的1-12月完成的数据 * @param orders * @return */ public MapgetMonthData(@Param("orders") Orders orders);
3.mapper.xml
4.service接口
/** * 获取订单的1-12月完成的数据 * @param orders * @return */ public ListgetMonthData(Orders orders);
5.serviceImpl
@Override public ListgetMonthData(Orders orders) { //获取数据库中的12个月的总数据,但是并没有按照1-12个月进行排序 Map monthData = baseMapper.getMonthData(orders); //对数据进行升序排序 List > list=new ArrayList >(monthData.entrySet()); Collections.sort(list, new Comparator >() { @Override public int compare(Map.Entry o1, Map.Entry o2) { //把获取的月份中的月去除在进行排序 return Integer.valueOf(o1.getKey().replace("月","")) - Integer.valueOf(o2.getKey().replace("月","")); } }); //返回排好的数据 List addList=new ArrayList<>(); //进行对比排序 for (Map.Entry m : list){ //monthData.get(m.getKey())是个object对象不能直接转integer,先把对象转换成String类型 addList.add(Integer.valueOf(monthData.get(m.getKey()).toString())); } return addList; }
6.controller
/** * 获取已完成订单的12个月的数据 * @param orders * @param request * @return */ @RequestMapping("/getMonthData") @ResponseBody public JSONObject getMonthData(Orders orders,HttpServletRequest request){ JSONObject jo=new JSONObject(); ListmonthData = ordersService.getMonthData(orders); jo.put("code","0"); jo.put("data",monthData); return jo; }
7.html界面+ajax
class="layui-col-md12">class="layui-card">class="layui-card-header">class="fa fa-line-chart icon">每月订单报表统计class="layui-card-body">id="echarts-records" style="width: 100%;min-height:500px">
/** * 报表功能 */ var echartsRecords = echarts.init(document.getElementById('echarts-records'), 'walden'); var optionRecords = { tooltip: { trigger: 'axis' }, legend: { data:['已完成订单数'] }, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, toolbox: { feature: { saveAsImage: {} } }, xAxis: { type: 'category', boundaryGap: false, data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'] }, yAxis: { type: 'value' }, // series: [ // { // name:'邮件营销', // type:'line', // data:[120, 132, 101, 134, 90, 230, 120, 132, 101, 134, 90, 230] // } // ] }; echartsRecords.setOption(optionRecords); //获取订单12个月的数据 $.ajax({ url: "/orders/getMonthData", type: "POST", dataType: "json", success: function (res) { optionRecords = { series: [ { name:'已完成订单数', type:'line', data: res.data } ] } echartsRecords.setOption(optionRecords); } }) // echarts 窗口缩放自适应 window.onresize = function(){ echartsRecords.resize(); } });