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<String> time; 
 | 
  
 | 
    /*污染信息,一共有5个Map,分别对应五个污染等级 
 | 
     * Map中有三个字段 
 | 
     * pollution表示污染等级 
 | 
     * days存放天数集合 
 | 
     * proportion存放天数占比的集合*/ 
 | 
    List<Map<String, Object>> values; 
 | 
  
 | 
    public static BarChartOfPollutionLevelVO convert(List<MonthlyPollutionLevel> datas) { 
 | 
        if(ObjectUtils.isEmpty(datas)) 
 | 
            return null; 
 | 
        BarChartOfPollutionLevelVO vo = new BarChartOfPollutionLevelVO(); 
 | 
        List<String> time = new ArrayList<>(); 
 | 
        List<Map<String, Object>> values= new ArrayList<>(); 
 | 
        //6个污染等级循环获取数据 
 | 
        for (int i = 0; i <= 5; i++) { 
 | 
            Map<String,Object> map = new HashMap<>(); 
 | 
            List<String> proportion = new ArrayList<>(); 
 | 
            List<Integer> days = new ArrayList<>(); 
 | 
            String pollution = String.valueOf(i); 
 | 
            for (MonthlyPollutionLevel data : datas) { 
 | 
                if(!time.contains(data.getTime())) 
 | 
                    time.add(data.getTime()); 
 | 
                List<PollutionDaysAndProportion> 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; 
 | 
    } 
 | 
} 
 |