| 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; | 
|     } | 
| } |