Map遍历封装数据
一、代码:
BigDecimal price = this.price(energyBoardModel.getYearMonth());
PowerVO powerVO = new PowerVO();
List<Map<String,Object>> powerByBuList = energyBoardMapper.powerByBu(energyBoardModel);
Map<String,Map<String,BigDecimal>> actualMap = new LinkedHashMap<>();
Map<String,Map<String,BigDecimal>> budgetMap = new LinkedHashMap<>();
Map<String,Map<String,BigDecimal>> warningMap = new LinkedHashMap<>();
for (Map<String, Object> map : powerByBuList) {
String departNameType = map.get("DEPART_NAME_TYPE").toString();
String departName = map.get("DEPART_NAME").toString();
BigDecimal addPowers = (BigDecimal) map.get("ADD_POWERS");
BigDecimal budget = ((BigDecimal) map.get("BUDGET_E"));
BigDecimal warningLine = ((BigDecimal) map.get("WARNING_LINE"));
Map<String, BigDecimal> data = actualMap.get(departNameType);
if(data == null){
data = new LinkedHashMap<>();
actualMap.put(departNameType,data);
}
data.put(departName,addPowers.multiply(price).divide(new BigDecimal(10000),2,BigDecimal.ROUND_HALF_UP));
Map<String,BigDecimal> data1 = budgetMap.get(departNameType);
if(data1 == null){
data1 = new LinkedHashMap<>();
budgetMap.put(departNameType,data1);
}
data1.put(departName,budget);
Map<String,BigDecimal> data2 = warningMap.get(departNameType);
if(data2 == null){
data2 = new LinkedHashMap<>();
warningMap.put(departNameType,data2);
}
data2.put(departName,warningLine);
}
List<Parent> parentList = new ArrayList<>();
for (Map.Entry<String, Map<String, BigDecimal>> stringMapEntry : actualMap.entrySet()) {
List<Children> childrenList = new ArrayList<>();
Parent parent = new Parent();
parent.setValue(stringMapEntry.getKey());
for (Map.Entry<String, BigDecimal> stringBigDecimalEntry : stringMapEntry.getValue().entrySet()) {
Children children = new Children();
children.setValue(stringBigDecimalEntry.getKey());
children.setName("总电费");
children.setNum(stringBigDecimalEntry.getValue());
childrenList.add(children);
parent.setChildren(childrenList);
}
parentList.add(parent);
}
List<Parent> parentBudgetList = new ArrayList<>();
for (Map.Entry<String, Map<String, BigDecimal>> stringMapEntry : budgetMap.entrySet()) {
List<Children> childrenList = new ArrayList<>();
Parent parent = new Parent();
parent.setValue(stringMapEntry.getKey());
for (Map.Entry<String, BigDecimal> stringBigDecimalEntry : stringMapEntry.getValue().entrySet()) {
Children children = new Children();
children.setValue(stringBigDecimalEntry.getKey());
children.setName("预算");
children.setNum(stringBigDecimalEntry.getValue());
childrenList.add(children);
parent.setChildren(childrenList);
}
parentBudgetList.add(parent);
}
List<BigDecimal> targetList = new ArrayList<>();
for (Map.Entry<String, Map<String, BigDecimal>> stringMapEntry : warningMap.entrySet()) {
for (Map.Entry<String, BigDecimal> stringBigDecimalEntry : stringMapEntry.getValue().entrySet()) {
targetList.add(stringBigDecimalEntry.getValue());
}
}
powerVO.setPlan(parentBudgetList);
powerVO.setActual(parentList);
powerVO.setTarget(targetList);
return powerVO;