package com.moral.api.pojo.vo.cityAQI; import com.moral.api.pojo.dto.cityAQI.MonthlyPollutionLevel; import com.moral.api.pojo.dto.cityAQI.PollutionDaysAndProportion; import lombok.Data; import org.springframework.util.ObjectUtils; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @ClassName BarChartOfPollutionLevelDTO * @Description 柱状图数据DTO * @Author 陈凯裕 * @Date 2021/11/19 8:31 * @Version TODO **/ @Data public class BarChartOfPollutionLevelVO { /*时间集合*/ List time; /*污染信息,一共有5个Map,分别对应五个污染等级 * Map中有三个字段 * pollution表示污染等级 * days存放天数集合 * proportion存放天数占比的集合*/ List> values; public static BarChartOfPollutionLevelVO convert(List datas) { if(ObjectUtils.isEmpty(datas)) return null; BarChartOfPollutionLevelVO vo = new BarChartOfPollutionLevelVO(); List time = new ArrayList<>(); List> values= new ArrayList<>(); //6个污染等级循环获取数据 for (int i = 0; i <= 5; i++) { Map map = new HashMap<>(); List proportion = new ArrayList<>(); List days = new ArrayList<>(); String pollution = String.valueOf(i); for (MonthlyPollutionLevel data : datas) { if(!time.contains(data.getTime())) time.add(data.getTime()); List pollutionDaysAndProportions = data.getPollutionDaysAndProportions(); for (PollutionDaysAndProportion pollutionDaysAndProportion : pollutionDaysAndProportions) { if(pollutionDaysAndProportion.getPollutionLevel().equals(pollution)){ proportion.add(pollutionDaysAndProportion.getProportion()); days.add(pollutionDaysAndProportion.getDays()); } } } map.put("proportion",proportion); map.put("days",days); map.put("pollution",pollution); values.add(map); } vo.setTime(time); vo.setValues(values); return vo; } }