java echartutil_EChartConstructUtils.java
发布日期:2021-06-24 12:22:20 浏览次数:2 分类:技术文章

本文共 3199 字,大约阅读时间需要 10 分钟。

package com.zhaonongzi.tms.util;

import org.apache.commons.collections.MapUtils;

import org.apache.commons.collections.map.HashedMap;

import org.apache.commons.lang.ArrayUtils;

import java.util.*;

/**

* Created by wang'ao on 2016/9/29 0029.

*/

public class EChartConstructUtils {

/**

* echart:x数据

* 从db中查询到的数据,并过滤重复的字段,为x轴的数据

* @return

*/

public static List getXList(List dbData,String field) {

List s = new ArrayList<>() ;

for (Map map : dbData) {

String occurTime = MapUtils.getString(map,field);

if(!s.contains(occurTime)) s.add(occurTime);

}

return s;

}

/**

* chart:legends

* @param dbData db数据

* @param nickname 用来做legends的字段

* @param distinguishField 作为legends的重复识别

* @return

*/

public static List getLegends(List dbData, String nickname, String distinguishField) {

List s = new ArrayList<>() ;

List l = new ArrayList<>() ;

for (Map map : dbData) {

String fieldUnique = MapUtils.getString(map,distinguishField);

if(!s.contains(fieldUnique)) {

s.add(fieldUnique);

l.add(MapUtils.getString(map,nickname));

}

}

return l;

}

/**

* chart:series序列

* @param dbData db数据

* @return

*/

public static List getSeries(List dbData,List xList,String legendsKeyField,String xlistFieldName,String legendFieldName,String chartType,String valueFieldName) {

List r = new ArrayList<>() ;//返回的

//整理数据{id:map{map{field:"",val:"",...}},...}

/**

* legendsKeyField:"occur_time"

* xlistFieldName:"张三"

* legendFieldName:"nickname"

* valueFieldName:"avg_cost"

*/

/**

* {

* "001":{

* "2016-08-08":{

* "name":"张三",

* "value":"76.92"

* },

* "2016-08-09":{

* "name":"张三",

* "value":"71.91"

* },

* ...

*

* },

* "007":{

* "2016-08-03":{

* "name":"李四",

* "value":"16.92"

* },

* "2016-08-05":{

* "name":"李四",

* "value":"21.91"

* },

* ...

*

* },

* ...

* }

*/

Map identity = new HashMap<>() ;

for (Map map : dbData) {

//没有,创建

if (!identity.containsKey(MapUtils.getString(map,legendsKeyField))) {

Map innerVal = new HashMap<>() ;

innerVal.put("name",MapUtils.getString(map,legendFieldName)) ;

innerVal.put("value",MapUtils.getString(map,valueFieldName)) ;

Map inner = new HashMap<>() ;

inner.put(MapUtils.getString(map,xlistFieldName),innerVal) ;

identity.put(MapUtils.getString(map,legendsKeyField),inner) ;

}

//有,取出

else {

Map innerVal = new HashMap<>() ;

innerVal.put("name",MapUtils.getString(map,legendFieldName)) ;

innerVal.put("value",MapUtils.getString(map,valueFieldName)) ;

Map inner = MapUtils.getMap(identity,MapUtils.getString(map,legendsKeyField)) ;

inner.put(MapUtils.getString(map,xlistFieldName),innerVal) ;

}

}

Iterator> iterator = identity.entrySet().iterator();

while(iterator.hasNext()) {

Map.Entry next = iterator.next();

String [] data = new String[]{} ;

String name = null ;

for (String s : xList) {

//第一级map

Map valueInner = next.getValue();

if (!valueInner.containsKey(s)) {

//此处放入空值,而不是0

data = ((String[]) ArrayUtils.add(data, null)) ;

}

else {

//第二级map

Map valueInnerInner = MapUtils.getMap(valueInner, s);

data = ((String[]) ArrayUtils.add(data, valueInnerInner.get("value"))) ;

name = MapUtils.getString(valueInnerInner,"name") ;

}

}

Map inner = new HashedMap() ;

inner.put("name",name) ;

inner.put("data",data) ;

inner.put("type",chartType) ;

r.add(inner) ;

}

return r;

}

}

一键复制

编辑

Web IDE

原始数据

按行查看

历史

转载地址:https://blog.csdn.net/weixin_32688155/article/details/114515786 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:java integer数组_关于数组:如何在Java中将int []转换为Integer []?
下一篇:java开发编程语言培训_各类编程语言程序员学习路线图

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月15日 14时07分14秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

【Codecs系列】音视频常见传输协议(RTP/RTSP/UDP)介绍 2019-04-28
【Linux系列】select()函数的用法及实例 2019-04-28
【Matlab系列】调频信号FM相干解调与非相干解调原理及其实现 2019-04-28
【Python系列】自动提取特定格式的txt文本数据到excel中 2019-04-28
【Python系列】Python编程实例总结(脚本) 2019-04-28
【PE/C系列】printf 连带错误机制和uint64打印输出方法 2019-04-28
【PE/Bugs系列】error LNK2038:检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项 2019-04-28
【Matlab/CV系列】数字图像颜色主分量和颜色分量比例获取方法 2019-04-28
【Matlab/CV系列】数字图像颜色特征提取及Matlab实现 2019-04-28
【CV系列】图像去噪算法研究(去噪+锐化) 2019-04-28
【Matlab/CV系列】随机格图像加密算法研究及Matlab实现 2019-04-28
【shell系列】shell编程实现学生成绩管理系统 2019-04-28
【AVS系列】AVS2参考软件RD17.0 2019-04-28
【Tools系列】Windows下一款好用的文件搜索工具:XSearch 2019-04-28
【Bugs系列】SIGILL(Illegal instruction)剖析 2019-04-28
【CV系列】数字图像车牌识别技术研究及其Matlab实现 2019-04-28
【Matlab系列】GUI参数传递和使用listbox进行多组数据显示方法 2019-04-28
【Matlab系列】语音信号的采集与分析研究系统GUI设计 2019-04-28
【Matlab/CV系列】高动态HDR压缩技术研究及其实现 2019-04-28
【CV系列】基于PCA的人脸识别系统设计及实现 2019-04-28