如图,需要返回参数 分类的种类, 以及每种数据库的该分类的个数
private List<List<Object>> getResourceCategory1() {
try {
//返回结果
List<List<Object>> resultList = Lists.newArrayList();
//分类列表
List<Object> legendList = Lists.newArrayList();
//系列列表
List<Object> seriesList;
//根据 分类与数据库类型分组,查询 分类 数据库类型 数量
List<Map<String, Object>> resourceCategory = dataResourceViewDao.getResourceCategory();
//if (CollectionUtils.isNotEmpty(resourceCategory)) {
if (resourceCategory != null && resourceCategory.size() > 0) {
//添加资源分类标题
legendList.add("ResourceCategory");
//List<String> categoryList = resourceCategory.stream().map(map -> map.get("category")).distinct().collect(Collectors.toList());
//拿到所有分类
Set<String> categorySet = new HashSet<>();
//所有数据库类型集合
Set<String> dbTypeSet = new HashSet<>();
for (Map<String, Object> map : resourceCategory) {
String category = (String) map.get("category");
String dbtype = (String) map.get("dbtype");
categorySet.add(category);
dbTypeSet.add(dbtype);
}
//放至分类列表
legendList.addAll(categorySet);
resultList.add(legendList);
//以数据库类型分组map,key为数据库类型,值为 分类 数据库类型 数量map对象集合
HashMap<String, List<Map<String, Object>>> groupByDbTypeMap = new HashMap<>();
for (String dbType : dbTypeSet) {
List<Map<String, Object>> mapList = new ArrayList<>();
for (Map<String, Object> map : resourceCategory) {
if (dbType.equals(map.get("dbtype"))) {
mapList.add(map);
}
}
groupByDbTypeMap.put(dbType, mapList);
}
if (MapUtils.isNotEmpty(groupByDbTypeMap)) {
//遍历 groupByDbTypeMap的entry ,key为数据库类型,值为 分类 数据库类型 数量map对象集合
for (Map.Entry<String, List<Map<String, Object>>> entry : groupByDbTypeMap.entrySet()) {
//seriesList = Lists.newArrayList();
seriesList = new ArrayList<>();
//获取数据库类型
String dbType = entry.getKey();
seriesList.add(dbType);
//拿到 某数据库类型下的 分类 数据库类型 数量map对象集合
List<Map<String, Object>> list = entry.getValue();
ArrayList<Integer> list1 = new ArrayList<>();
//想要拿到每个分类的数量
for (String category : categorySet) {
Integer count=0;
for (Map<String, Object> map : list) {
if (map.get("category").equals(category)){
// int num = Integer.parseInt(map.get("num"));
Integer num =Integer.valueOf(map.get("num").toString()) ;
count+=num;
}
}
list1.add(count);
}
seriesList.addAll(list1);
resultList.add(seriesList);
}
}
}
log.info("获取类别-资源库统计成功");
return resultList;
} catch (Exception e) {
log.error("获取类别-资源库统计失败" + e.getMessage(), e);
}
return null;
}