java饼状图获取数据集_HighChars3D饼图(从后台获取数据)

本文展示了如何在Java后端通过Pie图表展示数据。详细步骤包括:1) 引入HighCharts3D库;2) HTML页面设置图表容器;3) JavaScript代码获取并渲染3D饼图数据;4) 后台Java代码处理查询条件,拼接JPQL,执行查询,将结果转化为适合图表的数据格式,并返回给前端。
摘要由CSDN通过智能技术生成

实现效果

96018717cbb5b4d22e8df832f2feba5c.png

1.引入js

2.html

3.js代码

'open3D':function () {

var params = $('#searchForm').serializeObject();

// console.debug(params);

$('#container').show();

// 获取饼图数据

$.post('/purchasebillitem/3D',params,function (data) {

// 3D统计图

Highcharts.chart('container', {

exporting: {

enabled:false

},

credits: {

enabled: false //不显示LOGO

},

chart: {

type: 'pie',

// 设置背景色与透明度

backgroundColor: 'rgba(0,0,0,0.5)',

options3d: {

enabled: true,

alpha: 45,

beta: 0

}

},

title: {

text: 'Browser market shares at a specific website, 2014'

},

tooltip: {

pointFormat: '{series.name}: {point.percentage:.1f}%'

},

plotOptions: {

pie: {

allowPointSelect: true,

cursor: 'pointer',

depth: 35,

dataLabels: {

enabled: true,

format: '{point.name}',

style: {

color: 'white'

}

}

}

},

series: [{

type: 'pie',

name: '总额占比:',

data: data

}]

});

})

}

4.从后台获取饼图数据

query层接收查询条件

// 获取分组字符串(用作jpql条件拼接)

public String groupBy(){

return this.groupSelect == 0 ? "o.purchasebill.supplier.name" : this.groupSelect == 1 ? "o.purchasebill.buyer.username" :

this.groupSelect == 2 ? "o.product.producttype.name" : "MONTH(o.purchasebill.vdate)";

}

// jpql条件拼接

public String getWhere(){

// StringBuffer性能高于String(性能高,线程不安全)

StringBuffer jpql = new StringBuffer("");

if (beginDate != null){

// jpql.append(" and o.purchasebill.vdate >= " + getBeginDate());

jpql.append(" and o.purchasebill.vdate >= ?");

list.add(beginDate);

}

if (endDate != null){

Date tempDate = DateUtils.addDays(endDate,2);

// jpql.append(" and o.purchasebill.vdate < " + getEndDate());

jpql.append(" and o.purchasebill.vdate < ?");

list.add(endDate);

}

if (status != null){

// jpql.append(" and o.purchasebill.status = " + status);

jpql.append(" and o.purchasebill.status = ?");

list.add(status);

}

return jpql.toString().replaceFirst("and", "where");

}

service层根据条件进行查询

@Override

public List> get3DData(PurchasebillitemQuery query) {

// 准备Map容器

List> list = new ArrayList<>();

// 查询jpal

String jpql = "select " + query.groupBy() + ",sum(o.amount) from Purchasebillitem o " + query.getWhere() + " group by " + query.groupBy();

// String jpql = "select o.purchasebill.supplier.name,sum(o.amount) from cn.meco.aisell.domain.Purchasebillitem o where o.purchasebill.vdate <= o.purchasebill.inputtime group by o.purchasebill.supplier.name";

List objects = query.getList();

// jpql查出来的集合里都是object数组

List byJpql = purchasebillitemRepository.findByJpql(jpql, objects.toArray());

for (Object[] o : byJpql) {

Map map = new HashMap();

// 设置map值

map.put("name", o[0]);

map.put("y", o[1]);

// 将map放入容器

list.add(map);

}

return list;

}

controller层接收参数返回数据

@RequestMapping("/3D")

@ResponseBody

public List> get3DData(PurchasebillitemQuery query){

return purchasebillitemService.get3DData(query);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值