做网站用什么,软件定制合同模板,wordpress 作者函数,互动网站设计需求#xff1a;前端根据后端的返回数据#xff1a;画统计图#xff1b;
1.动态获取地域数据以及数据中的平均值#xff0c;按照平均值降序排序#xff1b; 说明#xff1a; X轴是动态的#xff0c;有对应区域数据则展示#xff1b; X轴 区域数据降序排序#xff1b;…需求前端根据后端的返回数据画统计图
1.动态获取地域数据以及数据中的平均值按照平均值降序排序 说明 X轴是动态的有对应区域数据则展示 X轴 区域数据降序排序 代码
Overridepublic ListMapString,Object getTimeData(HttpServletRequest request, MapString, Object paramMap) {ListMapString,Object list getCountData(request,paramMap);list list.stream().filter(e - (e.get(status).equals(关闭))).collect(Collectors.toList());// Map存储(region,num,num为相同region的加和MapString,Object regionMap new HashMap();// Map存储(region,统计次数,统计次数为相同region的次数MapString,Object countMap new HashMap();for (int i 0; i list.size(); i) {String region String.valueOf(list.get(i).get(region));String num String.valueOf(list.get(i).get(processTime));// regionMap包含region将region当作keyif(regionMap.containsKey(region)) {String key region;String value String.valueOf(regionMap.get(key)); // 从regionMap获取value值即地域对应的num值regionMap.put(region, Double.parseDouble(value) Double.parseDouble(num));}else { // 不包含直接存进去regionMap.put(region, num);}// countMap包含region将region当作keyif(countMap.containsKey(region)) {String key2 region;String value2 String.valueOf(countMap.get(key2)); // 从countMap获取value值即地域对应的统计次数值countMap.put(region, Integer.valueOf(value2) 1);}else { // 不包含直接存进去countMap.put(region, 1);}}ListString regionList new LinkedListString(); // 地域ListString numberList new LinkedListString(); // 数值ListString countList new LinkedListString(); // 统计次数ListString avgList new LinkedListString(); // 平均值// 封装地域集合北京数值和IteratorMap.EntryString, Object it regionMap.entrySet().iterator();while(it.hasNext()){Map.EntryString, Object entry it.next();String key entry.getKey();String value String.valueOf(entry.getValue());regionList.add(key);numberList.add(value);}// 封装统计次数集合北京统计次数IteratorMap.EntryString, Object it2 countMap.entrySet().iterator();while(it2.hasNext()){Map.EntryString, Object entry it2.next();String value String.valueOf(entry.getValue());countList.add(value);}// 计算平均值封装集合avgListif(numberList.size() countList.size()) {for (int i 0; i numberList.size(); i) {double fenzi Double.parseDouble(numberList.get(i));int fenmu Integer.valueOf(countList.get(i));if(fenmu 0) {Double x fenzi/fenmu;// double类型的数据当分母的数值趋近0的时候返回来的数值就是一个NAN:if(Double.isNaN(x)){x 0.0;}avgList.add(String.valueOf(x));}}}// 最终输出集合ListMapString,Object resultList new ArrayList();// 根据地域集合与平均值集合封装新集合resultListif(regionList.size() avgList.size()) {for (int i 0; i regionList.size(); i) {MapString,Object map new HashMap();map.put(title,regionList.get(i));map.put(value,avgList.get(i).substring(0,avgList.get(i).indexOf(.)2));resultList.add(map);}}//排序value值大的Map往前排斌且插入新字段sortValue代表序列;Double[] valueSort new Double[resultList.size()];String[] titleSort new String[resultList.size()];// 排序后最终输出集合ListMapString,Object listFinal new ArrayList();// 获取排序的数组for (int i 0; i resultList.size(); i) {valueSort[i] Double.parseDouble(String.valueOf(resultList.get(i).get(value)));titleSort[i] String.valueOf(resultList.get(i).get(title));}// 数组排序BubblSortUtils.bubbleSortDescMultipleDouble(valueSort,titleSort);// 数组封装listFinalfor (int i 0; i valueSort.length; i) {String ch String.valueOf(titleSort[i]);for (int j 0; j resultList.size(); j) {String value String.valueOf(resultList.get(j).get(title));if(ch.equals(value)){listFinal.add(resultList.get(j));}}}// listFinal中添加排序字段sortValuefor (int i 0; i listFinal.size(); i) {listFinal.get(i).put(sortValue,i1);}return listFinal;}
Postman接口测试