首先这是我们需要在后台封装好的格式
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;
}