kaiyu
2021-12-28 6450fec60b8dc7e6d31779bcfe3b23b3f665ebaf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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 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) {
        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;
    }
}