echart统计图数据封装

首先这是我们需要在后台封装好的格式

     categories: ['1', '2', '3' 横轴


 data:[{

            type: 'column', 图表类型
            name: 'Jane', 值名称
            data: [3, 2, 1, 3, 4]值
        }, {
            type: 'column',
            name: 'John',
            data: [2, 3, 5, 7, 6]
        }, {
            type: 'column',
            name: 'Joe',
            data: [4, 3, 3, 9, 0]

        }

]

List里面放map然后里面还要放Object(list)

横轴还得和data对应

因此再把List<Map<String,Object>>和横轴放入Map中

public Object convert(){

首先查询出你想要的数据

我是用mybatis写的

List<Map<String,Object>> avgm= avgdao.selectAvgMoneyByDate();
set去除重复数据

//值名称
Set<String> cityname = new TreeSet();

//横轴时间
Set jobdate = new TreeSet();

//值
List avgmoney = new ArrayList<>();
for (Map<String, Object> map : avgm) {
avgmoney.add(map.get("avgmoney"));
cityname.add(map.get("cityname").toString());
jobdate.add(map.get("jobdate"));

}


List<Map<String,Object>> resultdata = new ArrayList();
int length = jobdate.size();

循环值名称
for (String city : cityname) {
list里面是有多个map
Map<String,Object> datamap = new HashMap();

根据横轴的个数存入
double[] datas=new double[length];
int i = 0;

循环横轴
for(Object date:jobdate){
循环从数据库查询出来的值
for (Map<String,Object> map : avgm) {

值名称
String citys = map.get("cityname").toString();
横轴

String datetime = map.get("jobdate").toString();
判断值和时间是否对应

if(citys.equals(city) && datetime.equals(date)){

对应则存入数组
datas[i]=(double) map.get("avgmoney");
}
}
i=i+1;
}

把值存入map集合
datamap.put("data", datas);

把值名称存入
datamap.put("name", city);

存入图表类型
datamap.put("type", "bar");

把map存入list集合中
resultdata.add(datamap);
}

最后返回的map
Map<String , Object> datamaps = new HashMap();
list集合存入map中也就是返回的data
datamaps.put("data", resultdata);

存入横轴
datamaps.put("jobdate", jobdate);
return datamaps;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值