package com.moral.api.service.impl; 
 | 
  
 | 
import org.apache.poi.ss.usermodel.Cell; 
 | 
import org.apache.poi.xssf.usermodel.XSSFRow; 
 | 
import org.apache.poi.xssf.usermodel.XSSFSheet; 
 | 
import org.apache.poi.xssf.usermodel.XSSFWorkbook; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.web.multipart.MultipartFile; 
 | 
  
 | 
import java.io.IOException; 
 | 
import java.text.ParseException; 
 | 
import java.text.SimpleDateFormat; 
 | 
import java.util.ArrayList; 
 | 
import java.util.Calendar; 
 | 
import java.util.Date; 
 | 
import java.util.HashMap; 
 | 
import java.util.List; 
 | 
import java.util.Map; 
 | 
import java.util.Set; 
 | 
import java.util.stream.Collectors; 
 | 
  
 | 
import com.alibaba.fastjson.JSON; 
 | 
import com.alibaba.fastjson.JSONObject; 
 | 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 
 | 
import com.moral.api.entity.TbExcel; 
 | 
import com.moral.api.mapper.ExcelMapper; 
 | 
import com.moral.api.pojo.bo.ExcelBO; 
 | 
import com.moral.api.pojo.vo.excel.HnExcelVo; 
 | 
import com.moral.api.pojo.vo.excel.SyExcelVo; 
 | 
import com.moral.api.service.HnExcelService; 
 | 
import com.moral.api.utils.AqiUtils; 
 | 
import com.moral.api.utils.ExcelUtils; 
 | 
import com.moral.util.AQIUtils; 
 | 
import com.moral.util.AmendUtils; 
 | 
import com.moral.util.DateUtils; 
 | 
  
 | 
  
 | 
@Service 
 | 
public class HnExcelServiceImpl implements HnExcelService { 
 | 
  
 | 
    @Autowired 
 | 
    private ExcelMapper excelMapper; 
 | 
  
 | 
    /** 
 | 
     * 浑南区模板 
 | 
     * 
 | 
     * @param files 
 | 
     */ 
 | 
    @Override 
 | 
    public ExcelBO getExcelImport(List<MultipartFile> files, Map<String, Object> params) throws IOException, ParseException { 
 | 
        String time = (String) params.get("time"); 
 | 
        String code = (String) params.get("code"); 
 | 
        String time1 = (String) params.get("date"); 
 | 
        Date date = DateUtils.getDate(time, "yyyy-MM-dd"); 
 | 
        Date date1 = DateUtils.getDate(time1, "yyyy-MM-dd"); 
 | 
        ExcelBO excelBO = new ExcelBO(); 
 | 
        QueryWrapper<TbExcel> wrapper = new QueryWrapper<>(); 
 | 
        wrapper.eq("time",date).eq("code",code); 
 | 
        TbExcel excel = excelMapper.selectOne(wrapper); 
 | 
        if (excel==null){ 
 | 
            TbExcel excel1 = new TbExcel(); 
 | 
            HashMap<String, Map<String, List<Integer>>> map = new HashMap<>(); 
 | 
            MultipartFile file1 = files.get(0); 
 | 
            Map<String, List<Integer>> map1 = getMap1(file1, 0,time); 
 | 
            map.put("浑南东路",map1); 
 | 
            Map<String, List<Integer>> map2 = getMap1(file1, 1,time); 
 | 
            map.put("新秀街",map2); 
 | 
            Map<String, List<Integer>> map3 = getTo(file1,time); 
 | 
            map.put("浑南区",map3); 
 | 
            Map<String, List<Integer>> map4 = getSys(file1, 2, time); 
 | 
            map.put("沈阳市",map4); 
 | 
            String s = JSON.toJSONString(map); 
 | 
            excel1.setValue(s); 
 | 
            excel1.setTime(date); 
 | 
            excel1.setCode(code); 
 | 
            excel1.setDate(date1); 
 | 
            excelMapper.insert(excel1); 
 | 
            excelBO.setId(excel1.getId()); 
 | 
            excelBO.setTime(excel1.getTime()); 
 | 
            excelBO.setDate(excel1.getDate()); 
 | 
        }else { 
 | 
            Date date2 = new Date(); 
 | 
            HashMap<String, Map<String, List<Integer>>> map = new HashMap<>(); 
 | 
            MultipartFile file1 = files.get(0); 
 | 
            Map<String, List<Integer>> map1 = getMap1(file1, 0,time); 
 | 
            map.put("浑南东路",map1); 
 | 
            Map<String, List<Integer>> map2 = getMap1(file1, 1,time); 
 | 
            map.put("新秀街",map2); 
 | 
            Map<String, List<Integer>> map3 = getTo(file1,time); 
 | 
            map.put("浑南区",map3); 
 | 
            Map<String, List<Integer>> map4 = getSys(file1, 2, time); 
 | 
            map.put("沈阳市",map4); 
 | 
            String s = JSON.toJSONString(map); 
 | 
            excel.setValue(s); 
 | 
            excel.setDate(date2); 
 | 
            excelMapper.updateById(excel); 
 | 
            excelBO.setId(excel.getId()); 
 | 
            excelBO.setTime(excel.getTime()); 
 | 
            excelBO.setDate(date2); 
 | 
  
 | 
        } 
 | 
        return excelBO; 
 | 
  
 | 
  
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 挂图作战导出 
 | 
     * @param id 
 | 
     * @return 
 | 
     */ 
 | 
    @Override 
 | 
    public SyExcelVo SyExport(Integer id) { 
 | 
  
 | 
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
 | 
        HashMap<String, ArrayList<String>> rsMap = new HashMap<>(); 
 | 
        SyExcelVo syExcelVo = new SyExcelVo(); 
 | 
        TbExcel excel = excelMapper.selectById(id); 
 | 
        String value = excel.getValue(); 
 | 
        Date time = excel.getTime(); 
 | 
        String format = sdf.format(time); 
 | 
        String substring = format.substring(5, 7); 
 | 
        int data= Integer.parseInt(substring); 
 | 
  
 | 
        Map<String, Map<String, List<Integer>>> map = JSON.parseObject(value, Map.class); 
 | 
        Set<String> strings = map.keySet(); 
 | 
        for (String string : strings) { 
 | 
            if (string.equals("浑南东路")){ 
 | 
                Map<String, List<Integer>> stringListMap = map.get(string); 
 | 
                Set<String> strings1 = stringListMap.keySet(); 
 | 
                for (String s : strings1) { 
 | 
                    if (s.equals("count")){ 
 | 
                        ArrayList<String> list1 = getList(stringListMap, s); 
 | 
                        rsMap.put("hnd1",list1); 
 | 
                    } 
 | 
                    if (s.equals("PM2_5")){ 
 | 
                        ArrayList<String> list1 = getArrayList(stringListMap, s); 
 | 
                        rsMap.put("hnd2",list1); 
 | 
  
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
            if (string.equals("新秀街")){ 
 | 
                Map<String, List<Integer>> stringListMap = map.get(string); 
 | 
                Set<String> strings1 = stringListMap.keySet(); 
 | 
                for (String s : strings1) { 
 | 
                    if (s.equals("count")){ 
 | 
                        ArrayList<String> list1 = getList(stringListMap, s); 
 | 
                        rsMap.put("xxj1",list1); 
 | 
                    } 
 | 
                    if (s.equals("PM2_5")){ 
 | 
                        ArrayList<String> list1 = getArrayList(stringListMap, s); 
 | 
                        rsMap.put("xxj2",list1); 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
            if (string.equals("沈阳市")){ 
 | 
                Map<String, List<Integer>> stringListMap = map.get(string); 
 | 
                Set<String> strings1 = stringListMap.keySet(); 
 | 
                for (String s : strings1) { 
 | 
  
 | 
                    if (s.equals("count")){ 
 | 
                        ArrayList<String> list1 = getList(stringListMap, s); 
 | 
                        rsMap.put("sy1",list1); 
 | 
                    } 
 | 
                    if (s.equals("PM2_5")){ 
 | 
                        ArrayList<String> list1 = getArrayList(stringListMap, s); 
 | 
                        rsMap.put("sy2",list1); 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
            if (string.equals("浑南区")){ 
 | 
                Map<String, List<Integer>> stringListMap = map.get(string); 
 | 
                Set<String> strings1 = stringListMap.keySet(); 
 | 
                for (String s : strings1) { 
 | 
                    if (s.equals("count")){ 
 | 
                        ArrayList<String> list1 = new ArrayList<>(); 
 | 
                        List<Integer> list = stringListMap.get(s); 
 | 
                        String season; 
 | 
                        Integer sum =0; 
 | 
                        if (data>=1 && data<=3){ 
 | 
                            sum = list.get(0) + list.get(1) + list.get(2); 
 | 
                            season = "一"; 
 | 
                        }else if (data>=4 &&data<=6){ 
 | 
                            sum = list.get(3) + list.get(4) + list.get(5); 
 | 
                            season = "二"; 
 | 
                        }else if (data>=7 &&data<=9){ 
 | 
                            sum = list.get(6) + list.get(7) + list.get(8); 
 | 
                            season = "三"; 
 | 
                        }else { 
 | 
                            sum = list.get(9) + list.get(10) + list.get(11); 
 | 
                            season = "四"; 
 | 
                        } 
 | 
                        syExcelVo.setCode5(sum.toString()); 
 | 
                        syExcelVo.setSeason(season); 
 | 
                        for (int i = 0; i < list.size()-1; i++) { 
 | 
                            if (list.get(i)==0){ 
 | 
                                list1.add(""); 
 | 
                                continue; 
 | 
                            } 
 | 
                            list1.add(list.get(i).toString()); 
 | 
                        } 
 | 
                        Integer integer = list.get(12); 
 | 
                        syExcelVo.setCode1(integer.toString()); 
 | 
                        Integer integer1 = list.get(13); 
 | 
                        int i = integer - integer1; 
 | 
                        String code =""; 
 | 
                        if (i<0){ 
 | 
                            code = "减少"+i+"天"; 
 | 
                        }else if (i>0){ 
 | 
                            code = "增加"+i+"天"; 
 | 
                        }else { 
 | 
                            code = "持平"; 
 | 
                        } 
 | 
                        list1.add(code); 
 | 
                        syExcelVo.setCode2(code); 
 | 
                        list1.add(0,"优良天数"); 
 | 
                        rsMap.put("hnq1",list1); 
 | 
                    } 
 | 
  
 | 
  
 | 
                    if (s.equals("季度")){ 
 | 
                        List<Integer> list = stringListMap.get(s); 
 | 
                        if (list.size()>0){ 
 | 
                            syExcelVo.setCode6(list.get(0).toString()); 
 | 
                        }else { 
 | 
                            syExcelVo.setCode6(""); 
 | 
                        } 
 | 
  
 | 
                    } 
 | 
  
 | 
  
 | 
                    if (s.equals("PM2_5")){ 
 | 
                        ArrayList<String> list1 = new ArrayList<>(); 
 | 
                        List<Integer> list = stringListMap.get(s); 
 | 
                        for (int i = 0; i < list.size()-1; i++) { 
 | 
                            if (list.get(i)==0){ 
 | 
                                list1.add(""); 
 | 
                                continue; 
 | 
                            } 
 | 
                            list1.add(list.get(i).toString()); 
 | 
                        } 
 | 
                        Integer integer = list.get(12); 
 | 
                        syExcelVo.setCode3(integer.toString()); 
 | 
                        Integer integer1 = list.get(13); 
 | 
                        double i  = integer - integer1; 
 | 
  
 | 
                        double i1 = AmendUtils.sciCal((Math.abs(i) / integer1)*100,1); 
 | 
                        String code  = ""; 
 | 
                        if (i<0){ 
 | 
                            code = "改善"+i1+"%"; 
 | 
                        }else if (i>0){ 
 | 
                            code = "改善-"+i1+"%"; 
 | 
                        }else { 
 | 
                            code ="持平"; 
 | 
                        } 
 | 
  
 | 
                        list1.add(code); 
 | 
                        syExcelVo.setCode4(code); 
 | 
                        list1.add(0,"PM2.5浓度微克/立方"); 
 | 
                        rsMap.put("hnq2",list1); 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        if (map.size()==3){ 
 | 
            ArrayList<String> list1 = new ArrayList<>(); 
 | 
            ArrayList<String> list2 = new ArrayList<>(); 
 | 
            for (int i = 0; i <14 ; i++) { 
 | 
                list1.add(""); 
 | 
                list2.add(""); 
 | 
            } 
 | 
            list1.add(0,"优良天数"); 
 | 
            list2.add(0,"PM2.5浓度微克/立方"); 
 | 
            rsMap.put("sy1",list1); 
 | 
            rsMap.put("sy2",list2); 
 | 
        } 
 | 
        syExcelVo.setList(rsMap); 
 | 
        return syExcelVo; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 浑南区质量报告导出 
 | 
     * @param id 
 | 
     * @return 
 | 
     */ 
 | 
    @Override 
 | 
    public HnExcelVo hnExport(Integer id) throws ParseException { 
 | 
  
 | 
        HashMap<String, Object> rsMap = new HashMap<>(); 
 | 
  
 | 
        HnExcelVo hnExcelVo = new HnExcelVo(); 
 | 
  
 | 
        ArrayList<String> syList = new ArrayList<>(); 
 | 
        TbExcel excel = excelMapper.selectById(id); 
 | 
        //获取上传的时间 
 | 
        Date time = excel.getTime(); 
 | 
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
 | 
        String format = sdf.format(time); 
 | 
        hnExcelVo.setTime(format.substring(5)); 
 | 
        //获取上传后一天的时间 
 | 
        Calendar instance = Calendar.getInstance(); 
 | 
        instance.setTime(sdf.parse(format)); 
 | 
        instance.add(Calendar.DAY_OF_MONTH, 1); 
 | 
        Date date = instance.getTime(); 
 | 
  
 | 
        hnExcelVo.setTime2(sdf.format(date)); 
 | 
  
 | 
  
 | 
        String value = excel.getValue(); 
 | 
        Map<String, Map<String, List<Integer>>> map = JSON.parseObject(value, Map.class); 
 | 
        Set<String> strings = map.keySet(); 
 | 
  
 | 
        Map<String, List<Integer>> listMap = map.get("沈阳市"); 
 | 
        List<Integer> listSy = listMap.get("day"); 
 | 
        //pm25 
 | 
        syList.add(listSy.get(0).toString()); 
 | 
        //pm10 
 | 
        syList.add(listSy.get(1).toString()); 
 | 
        //so2 
 | 
        syList.add(listSy.get(2).toString()); 
 | 
        //no2 
 | 
        syList.add(listSy.get(3).toString()); 
 | 
        //O3 
 | 
        syList.add(listSy.get(4).toString()); 
 | 
        //CO 
 | 
        syList.add(listSy.get(5).toString()+"."+listSy.get(6)); 
 | 
        Map<String, Object> mapSy = getCityMap(listSy); 
 | 
        rsMap.put("sy",mapSy); 
 | 
  
 | 
  
 | 
        for (String string : strings) { 
 | 
            if (string.equals("浑南东路")){ 
 | 
                Map<String, List<Integer>> stringListMap = map.get(string); 
 | 
                List<Integer> list = stringListMap.get("day"); 
 | 
                Map<String, Object> cityMap = getCityMap(list); 
 | 
                rsMap.put("hnd",cityMap); 
 | 
                ArrayList<Double> list1 = new ArrayList<>(); 
 | 
                for (int i = 0; i < list.size()-2; i++) { 
 | 
                    Integer code1 = list.get(i); 
 | 
                    int code2 = Integer.parseInt(syList.get(i)); 
 | 
                    double data = getData(code1, code2); 
 | 
                    list1.add(data); 
 | 
                } 
 | 
                //获取CO 
 | 
                String s = list.get(5) + "." + list.get(6); 
 | 
                double v = Double.parseDouble(s) - Double.parseDouble(syList.get(5)); 
 | 
                double i1 =0.0; 
 | 
                if (Double.parseDouble(syList.get(5))!=0.0){ 
 | 
                    i1 = AmendUtils.sciCal((v / Double.parseDouble(syList.get(5)))*100,1); 
 | 
                } 
 | 
                hnExcelVo.setHnCO(i1); 
 | 
                hnExcelVo.setHnPM25(list1.get(0)); 
 | 
                hnExcelVo.setHnPM10(list1.get(1)); 
 | 
                hnExcelVo.setHnSO2(list1.get(2)); 
 | 
                hnExcelVo.setHnNO2(list1.get(3)); 
 | 
                hnExcelVo.setHnO3(list1.get(4)); 
 | 
  
 | 
  
 | 
  
 | 
                HashMap<String, Map<String, Object>> years = getYears(stringListMap,"hnd"); 
 | 
                hnExcelVo.setHnd(years); 
 | 
            } 
 | 
            if (string.equals("新秀街")){ 
 | 
                Map<String, List<Integer>> stringListMap = map.get(string); 
 | 
                HashMap<String, Map<String, Object>> years = getYears(stringListMap,"xxj"); 
 | 
                hnExcelVo.setXxj(years); 
 | 
                List<Integer> list = stringListMap.get("day"); 
 | 
                Map<String, Object> map1 = getCityMap(list); 
 | 
                rsMap.put("xxj",map1); 
 | 
  
 | 
                ArrayList<Double> list2 = new ArrayList<>(); 
 | 
                for (int i = 0; i < list.size()-2; i++) { 
 | 
                    Integer code1 = list.get(i); 
 | 
                    int code2 = Integer.parseInt(syList.get(i)); 
 | 
                    double data = getData(code1, code2); 
 | 
                    list2.add(data); 
 | 
                } 
 | 
                //获取CO 
 | 
                String s = list.get(5) + "." + list.get(6); 
 | 
                double v = Double.parseDouble(s) - Double.parseDouble(syList.get(5)); 
 | 
                double i1 =0.0; 
 | 
                if (Double.parseDouble(syList.get(5))!=0.0){ 
 | 
                    i1 = AmendUtils.sciCal((v / Double.parseDouble(syList.get(5)))*100,1); 
 | 
                } 
 | 
                hnExcelVo.setXxjCO(i1); 
 | 
                hnExcelVo.setXxjPM25(list2.get(0)); 
 | 
                hnExcelVo.setXxjPM10(list2.get(1)); 
 | 
                hnExcelVo.setXxjSO2(list2.get(2)); 
 | 
                hnExcelVo.setXxjNO2(list2.get(3)); 
 | 
                hnExcelVo.setXxjO3(list2.get(4)); 
 | 
  
 | 
  
 | 
  
 | 
  
 | 
            } 
 | 
            if (string.equals("浑南区")){ 
 | 
                Map<String, List<Integer>> stringListMap = map.get(string); 
 | 
                List<Integer> list = stringListMap.get("count"); 
 | 
                Integer integer = list.get(12); 
 | 
                Integer integer1 = list.get(13); 
 | 
                int i = integer - integer1; 
 | 
                String code = ""; 
 | 
                if (i<0){ 
 | 
                    code = "减少"+i+"天"; 
 | 
                }else if (i>0){ 
 | 
                    code = "增加"+i+"天"; 
 | 
                }else { 
 | 
                    code= "持平"; 
 | 
                } 
 | 
                hnExcelVo.setCode1(integer.toString()); 
 | 
                hnExcelVo.setCode2(integer1.toString()); 
 | 
                hnExcelVo.setCode3(code); 
 | 
                List<Integer> list1 = stringListMap.get("PM2_5"); 
 | 
                Integer integer2 = list1.get(12); 
 | 
                Integer integer3 = list1.get(13); 
 | 
                String code1 = getString(integer2, integer3); 
 | 
                hnExcelVo.setCode4(integer2.toString()); 
 | 
                hnExcelVo.setCode5(code1); 
 | 
  
 | 
                List<Integer> list2 = stringListMap.get("PM10"); 
 | 
                Integer integer4 = list2.get(0); 
 | 
                Integer integer5 = list2.get(1); 
 | 
                String code2 = getString(integer4, integer5); 
 | 
                hnExcelVo.setCode6(integer4.toString()); 
 | 
                hnExcelVo.setCode7(code2); 
 | 
  
 | 
  
 | 
                HashMap<String, Object> hnqMap = new HashMap<>(); 
 | 
                List<Integer> list3 = stringListMap.get("day"); 
 | 
                hnqMap.put("PM2_5",list3.get(0)); 
 | 
                hnqMap.put("PM10",list3.get(1)); 
 | 
                hnqMap.put("SO2",list3.get(2)); 
 | 
                hnqMap.put("NO2",list3.get(3)); 
 | 
                hnqMap.put("O3",list3.get(4)); 
 | 
                hnqMap.put("CO",list3.get(5)+"."+list3.get(6)); 
 | 
                Map<String, Object> aqi = AqiUtils.getAqi(hnqMap); 
 | 
                String aqi1 = aqi.get("AQI").toString(); 
 | 
                String su = aqi.get("SU").toString(); 
 | 
                String s = AQIUtils.classOfPollutionByAqi(Integer.parseInt(aqi1)); 
 | 
                hnExcelVo.setData1(s); 
 | 
                hnExcelVo.setData2(su); 
 | 
                hnExcelVo.setData3(list3.get(1).toString()); 
 | 
                hnExcelVo.setData4(list3.get(0).toString()); 
 | 
                hnExcelVo.setData5(list3.get(2).toString()); 
 | 
                hnExcelVo.setData6(list3.get(3).toString()); 
 | 
                hnExcelVo.setData7(hnqMap.get("CO").toString()); 
 | 
                hnExcelVo.setData8(list3.get(4).toString()); 
 | 
            } 
 | 
  
 | 
        } 
 | 
        hnExcelVo.setList1(rsMap); 
 | 
        return hnExcelVo; 
 | 
    } 
 | 
  
 | 
    private String getString(Integer integer2, Integer integer3) { 
 | 
        double i2  = integer2 - integer3; 
 | 
        double i1 = 0.0; 
 | 
        if (integer3 !=0){ 
 | 
            i1 = AmendUtils.sciCal((Math.abs(i2) / integer3)*100,1); 
 | 
        } 
 | 
        String code1  = ""; 
 | 
        if (i2==0){ 
 | 
            code1 = "持平"; 
 | 
        }else if (i2>0){ 
 | 
            code1 = "改善-"+i1+"%"; 
 | 
        }else { 
 | 
            code1 = "改善"+i1+"%"; 
 | 
        } 
 | 
        return code1; 
 | 
    } 
 | 
  
 | 
    //计算百分比 
 | 
    private double getData(int code1,int code2) { 
 | 
  
 | 
        double i = code1 - code2; 
 | 
        double i1 =0.0; 
 | 
        if (code2!=0){ 
 | 
            i1 = AmendUtils.sciCal((i / code2)*100,1); 
 | 
        } 
 | 
        return i1; 
 | 
    } 
 | 
  
 | 
    //获取aqi和首污 
 | 
    private Map<String, Object> getCityMap(List<Integer> list) { 
 | 
        HashMap<String, Object> map1 = new HashMap<>(); 
 | 
        map1.put("PM2_5", list.get(0)); 
 | 
        map1.put("PM10", list.get(1)); 
 | 
        map1.put("SO2", list.get(2)); 
 | 
        map1.put("NO2", list.get(3)); 
 | 
        map1.put("O3", list.get(4)); 
 | 
        map1.put("CO", list.get(5)+"."+ list.get(6)); 
 | 
        map1.put("ZH",""); 
 | 
        map1.put("PaiM",""); 
 | 
        Map<String, Object> aqi = AqiUtils.getAqi(map1); 
 | 
        map1.put("AQI",aqi.get("AQI")); 
 | 
        return  map1; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 计算幅度变化 
 | 
     * @param stringListMap 
 | 
     * @return 
 | 
     */ 
 | 
    private HashMap<String, Map<String, Object>> getYears(Map<String, List<Integer>> stringListMap,String data) { 
 | 
        HashMap<String, Map<String, Object>> map = new HashMap<>(); 
 | 
        List<Integer> list1 = stringListMap.get("今年"); 
 | 
        HashMap<String, Object> hudMap1 = new HashMap<>(); 
 | 
        HashMap<String, Object> hudMap2 = new HashMap<>(); 
 | 
        HashMap<String, Object> hudMap3 = new HashMap<>(); 
 | 
        hudMap1.put("nd",list1.get(7)); 
 | 
        hudMap1.put("yl",list1.get(0)); 
 | 
        hudMap1.put("excellent",list1.get(1)); 
 | 
        hudMap1.put("good",list1.get(2)); 
 | 
        hudMap1.put("slightPol",list1.get(3)); 
 | 
        hudMap1.put("moderatePol",list1.get(4)); 
 | 
        hudMap1.put("heavyPol",list1.get(5)); 
 | 
        hudMap1.put("seriousPol",list1.get(6)); 
 | 
        map.put(data+"1",hudMap1); 
 | 
        List<Integer> list2 = stringListMap.get("去年"); 
 | 
        hudMap2.put("nd",list2.get(7)); 
 | 
        hudMap2.put("yl",list2.get(0)); 
 | 
        hudMap2.put("excellent",list2.get(1)); 
 | 
        hudMap2.put("good",list2.get(2)); 
 | 
        hudMap2.put("slightPol",list2.get(3)); 
 | 
        hudMap2.put("moderatePol",list2.get(4)); 
 | 
        hudMap2.put("heavyPol",list2.get(5)); 
 | 
        hudMap2.put("seriousPol",list2.get(6)); 
 | 
  
 | 
        hudMap3.put("nd","变化幅度"); 
 | 
        hudMap3.put("yl",list1.get(0)-list2.get(0)); 
 | 
        hudMap3.put("excellent",list1.get(1)-list2.get(1)); 
 | 
        hudMap3.put("good",list1.get(2)-list2.get(2)); 
 | 
        hudMap3.put("slightPol",list1.get(3)-list2.get(3)); 
 | 
        hudMap3.put("moderatePol",list1.get(4)-list2.get(4)); 
 | 
        hudMap3.put("heavyPol",list1.get(5)-list2.get(5)); 
 | 
        hudMap3.put("seriousPol",list1.get(6)-list2.get(6)); 
 | 
  
 | 
        map.put(data+2,hudMap2); 
 | 
        map.put(data+3,hudMap3); 
 | 
  
 | 
        return map; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 计算pm2.5同比 
 | 
     * @param stringListMap 
 | 
     * @param s 
 | 
     * @return 
 | 
     */ 
 | 
    private ArrayList<String> getArrayList(Map<String, List<Integer>> stringListMap, String s) { 
 | 
        ArrayList<String> list1 = new ArrayList<>(); 
 | 
        List<Integer> list = stringListMap.get(s); 
 | 
        for (int i = 0; i < list.size()-1; i++) { 
 | 
            if (list.get(i)==0){ 
 | 
                list1.add(""); 
 | 
                continue; 
 | 
            } 
 | 
            list1.add(list.get(i).toString()); 
 | 
        } 
 | 
        Integer integer = list.get(12); 
 | 
        Integer integer1 = list.get(13); 
 | 
        double i1 = 0.0; 
 | 
        double i  = integer - integer1; 
 | 
        if (integer1!=0){ 
 | 
  
 | 
            i1 = AmendUtils.sciCal((Math.abs(i) / integer1)*100,1); 
 | 
        } 
 | 
        String code  = ""; 
 | 
        if (i<0){ 
 | 
            code = "改善"+i1+"%"; 
 | 
        }else if (i>0){ 
 | 
            code = "改善-"+i1+"%"; 
 | 
        }else { 
 | 
            code = "持平"; 
 | 
        } 
 | 
        list1.add(code); 
 | 
        list1.add(0,"PM2.5浓度微克/立方"); 
 | 
        return list1; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 计算优良天数 
 | 
     * @param stringListMap 
 | 
     * @param s 
 | 
     * @return 
 | 
     */ 
 | 
    private ArrayList<String> getList(Map<String, List<Integer>> stringListMap, String s) { 
 | 
        ArrayList<String> list1 = new ArrayList<>(); 
 | 
        List<Integer> list = stringListMap.get(s); 
 | 
        for (int i = 0; i < list.size()-1; i++) { 
 | 
            if (list.get(i)==0){ 
 | 
                list1.add(""); 
 | 
                continue; 
 | 
            } 
 | 
            list1.add(list.get(i).toString()); 
 | 
        } 
 | 
        Integer integer = list.get(12); 
 | 
        Integer integer1 = list.get(13); 
 | 
        int i = integer - integer1; 
 | 
        String code = ""; 
 | 
        if (i<0){ 
 | 
            code = "减少"+i+"天"; 
 | 
        }else if (i>0){ 
 | 
            code = "增加"+i+"天"; 
 | 
        }else { 
 | 
            code = "持平"; 
 | 
        } 
 | 
        list1.add(code); 
 | 
        list1.add(0,"优良天数"); 
 | 
        return list1; 
 | 
    } 
 | 
  
 | 
  
 | 
    private Map<String, List<Integer>> getSys(MultipartFile file, int code,String time) throws IOException, ParseException { 
 | 
        XSSFWorkbook workbook = new XSSFWorkbook(file.getInputStream()); 
 | 
  
 | 
        HashMap<String, Object> rsMap1 = new HashMap<>(); 
 | 
        HashMap<String, Object> rsMap2 = new HashMap<>(); 
 | 
        XSSFSheet sheetAt = workbook.getSheetAt(code); 
 | 
        String sheetName = sheetAt.getSheetName(); 
 | 
        if (!sheetName.equals("沈阳市")){ 
 | 
            return null; 
 | 
        } 
 | 
        //一共有多少行 
 | 
        int lastRowNum = sheetAt.getLastRowNum(); 
 | 
        for (int i = 2; i <= lastRowNum; i++) { 
 | 
            XSSFRow row = sheetAt.getRow(i); 
 | 
            if (row == null) { 
 | 
                continue; 
 | 
            } 
 | 
            short lastCellNum = row.getLastCellNum(); 
 | 
            if (lastCellNum<=0){ 
 | 
                continue; 
 | 
            } 
 | 
  
 | 
            Object[] objects = new Object[lastCellNum]; 
 | 
            for (int j = 0; j < lastCellNum; j++) { 
 | 
                Cell cell = row.getCell(j); 
 | 
                if (cell != null) { 
 | 
                    Object value = ExcelUtils.getValue(cell); 
 | 
                    objects[j] = value; 
 | 
                } 
 | 
  
 | 
            } 
 | 
  
 | 
            HashMap<String, Object> map1 = new HashMap<>(); 
 | 
            HashMap<String, Object> map2 = new HashMap<>(); 
 | 
            if (objects.length == 8 || objects.length == 9) { 
 | 
                if (objects[0]!=null){ 
 | 
                    if (!objects[1].toString().contains("H") 
 | 
                            && !objects[2].toString().contains("H") 
 | 
                            && !objects[3].toString().contains("H") 
 | 
                            && !objects[4].toString().contains("H") 
 | 
                            && !objects[5].toString().contains("H") 
 | 
                            && !objects[6].toString().contains("H")) 
 | 
                    { 
 | 
                        map1.put("time", objects[0]); 
 | 
                        map1.put("PM10", objects[1]); 
 | 
                        map1.put("PM2_5", objects[2]); 
 | 
                        map1.put("SO2", objects[3]); 
 | 
                        map1.put("NO2", objects[4]); 
 | 
                        map1.put("CO", objects[5]); 
 | 
                        map1.put("O3", objects[6]); 
 | 
                        map1.put("AQI", objects[7]); 
 | 
                        rsMap1.put(objects[0].toString(), map1); 
 | 
                    } 
 | 
                } 
 | 
  
 | 
  
 | 
            } 
 | 
            if (objects.length == 17) { 
 | 
  
 | 
                if (!objects[1].toString().contains("H") 
 | 
                        && !objects[2].toString().contains("H") 
 | 
                        && !objects[3].toString().contains("H") 
 | 
                        && !objects[4].toString().contains("H") 
 | 
                        && !objects[5].toString().contains("H") 
 | 
                        && !objects[6].toString().contains("H")) 
 | 
                { 
 | 
                    map1.put("time", objects[0]); 
 | 
                    map1.put("PM10", objects[1]); 
 | 
                    map1.put("PM2_5", objects[2]); 
 | 
                    map1.put("SO2", objects[3]); 
 | 
                    map1.put("NO2", objects[4]); 
 | 
                    map1.put("CO", objects[5]); 
 | 
                    map1.put("O3", objects[6]); 
 | 
                    map1.put("AQI", objects[7]); 
 | 
                    rsMap1.put(objects[0].toString(), map1); 
 | 
                } 
 | 
  
 | 
                if (objects[9]!=null){ 
 | 
                    if (!objects[10].toString().contains("H") 
 | 
                            && !objects[11].toString().contains("H") 
 | 
                            && !objects[12].toString().contains("H") 
 | 
                            && !objects[13].toString().contains("H") 
 | 
                            && !objects[14].toString().contains("H") 
 | 
                            && !objects[15].toString().contains("H")) 
 | 
                    { 
 | 
                        map2.put("time", objects[9]); 
 | 
                        map2.put("PM10", objects[10]); 
 | 
                        map2.put("PM2_5", objects[11]); 
 | 
                        map2.put("SO2", objects[12]); 
 | 
                        map2.put("NO2", objects[13]); 
 | 
                        map2.put("CO", objects[14]); 
 | 
                        map2.put("O3", objects[15]); 
 | 
                        map2.put("AQI", objects[16]); 
 | 
                        rsMap2.put(objects[9].toString(), map2); 
 | 
                    } 
 | 
                } 
 | 
  
 | 
            } 
 | 
  
 | 
  
 | 
        } 
 | 
        //计算本年度pm2.5和优良天数 
 | 
        Map<String, List<Integer>> map = getMap(rsMap2,time); 
 | 
        //计算去年PM2.5和优良天数 
 | 
        Map<String, List<Integer>> map2 = getResult(rsMap1, time); 
 | 
        List<Integer> list = map.get("count"); 
 | 
        list.add(map2.get("count").get(0)); 
 | 
        List<Integer> list1 = map.get("PM2_5"); 
 | 
        list1.add(map2.get("PM2_5").get(0)); 
 | 
        return map; 
 | 
    } 
 | 
  
 | 
    private Map<String, List<Integer>> getMap1(MultipartFile file, int code,String time) throws IOException, ParseException { 
 | 
        XSSFWorkbook workbook = new XSSFWorkbook(file.getInputStream()); 
 | 
        HashMap<String, Object> rsMap1 = new HashMap<>(); 
 | 
        HashMap<String, Object> rsMap2 = new HashMap<>(); 
 | 
        HashMap<String, Object> rsMap3 = new HashMap<>(); 
 | 
        XSSFSheet sheetAt = workbook.getSheetAt(code); 
 | 
        //一共有多少行 
 | 
        int lastRowNum = sheetAt.getLastRowNum(); 
 | 
        for (int i = 2; i <= lastRowNum; i++) { 
 | 
            XSSFRow row = sheetAt.getRow(i); 
 | 
            if (row == null) { 
 | 
                continue; 
 | 
            } 
 | 
            short lastCellNum = row.getLastCellNum(); 
 | 
            if (lastCellNum < 8) { 
 | 
                continue; 
 | 
            } 
 | 
            Object[] objects = new Object[lastCellNum]; 
 | 
            for (int j = 0; j < lastCellNum; j++) { 
 | 
                Cell cell = row.getCell(j); 
 | 
                if (cell != null) { 
 | 
                    Object value = ExcelUtils.getValue(cell); 
 | 
                    objects[j] = value; 
 | 
                } 
 | 
  
 | 
            } 
 | 
            HashMap<String, Object> map = new HashMap<>(); 
 | 
            HashMap<String, Object> map1 = new HashMap<>(); 
 | 
            HashMap<String, Object> map2 = new HashMap<>(); 
 | 
//            if (objects.length == 9) { 
 | 
//                map.put("time", objects[0]); 
 | 
//                map.put("PM10", objects[1]); 
 | 
//                map.put("PM2_5", objects[2]); 
 | 
//                map.put("SO2", objects[3]); 
 | 
//                map.put("NO2", objects[4]); 
 | 
//                map.put("CO", objects[5]); 
 | 
//                map.put("O3", objects[6]); 
 | 
//                map.put("AQI", objects[7]); 
 | 
//                rsMap1.put(objects[0].toString(), map); 
 | 
//            } 
 | 
            if (objects.length == 18) { 
 | 
                map.put("time", objects[0]); 
 | 
                map.put("PM10", objects[1]); 
 | 
                map.put("PM2_5", objects[2]); 
 | 
                map.put("SO2", objects[3]); 
 | 
                map.put("NO2", objects[4]); 
 | 
                map.put("CO", objects[5]); 
 | 
                map.put("O3", objects[6]); 
 | 
                map.put("AQI", objects[7]); 
 | 
                rsMap1.put(objects[0].toString(), map); 
 | 
  
 | 
                if (!objects[11].toString().contains("H") 
 | 
                        && !objects[12].toString().contains("H") 
 | 
                        && !objects[13].toString().contains("H") 
 | 
                        && !objects[14].toString().contains("H") 
 | 
                        && !objects[15].toString().contains("H") 
 | 
                        && !objects[16].toString().contains("H")) 
 | 
                { 
 | 
                    map1.put("time", objects[10]); 
 | 
                    map1.put("PM10", objects[11]); 
 | 
                    map1.put("PM2_5", objects[12]); 
 | 
                    map1.put("SO2", objects[13]); 
 | 
                    map1.put("NO2", objects[14]); 
 | 
                    map1.put("CO", objects[15]); 
 | 
                    map1.put("O3", objects[16]); 
 | 
                    map1.put("AQI", objects[17]); 
 | 
                    rsMap2.put(objects[10].toString(), map1); 
 | 
                } 
 | 
  
 | 
            } 
 | 
  
 | 
            if (objects.length == 27) { 
 | 
                map.put("time", objects[0]); 
 | 
                map.put("PM10", objects[1]); 
 | 
                map.put("PM2_5", objects[2]); 
 | 
                map.put("SO2", objects[3]); 
 | 
                map.put("NO2", objects[4]); 
 | 
                map.put("CO", objects[5]); 
 | 
                map.put("O3", objects[6]); 
 | 
                map.put("AQI", objects[7]); 
 | 
                rsMap1.put(objects[0].toString(), map); 
 | 
                if (   !objects[11].toString().contains("H") 
 | 
                        && !objects[12].toString().contains("H") 
 | 
                        && !objects[13].toString().contains("H") 
 | 
                        && !objects[14].toString().contains("H") 
 | 
                        && !objects[15].toString().contains("H") 
 | 
                        && !objects[16].toString().contains("H") 
 | 
                ) { 
 | 
  
 | 
                    map1.put("time", objects[10]); 
 | 
                    map1.put("PM10", objects[11]); 
 | 
                    map1.put("PM2_5", objects[12]); 
 | 
                    map1.put("SO2", objects[13]); 
 | 
                    map1.put("NO2", objects[14]); 
 | 
                    map1.put("CO", objects[15]); 
 | 
                    map1.put("O3", objects[16]); 
 | 
                    map1.put("AQI", objects[17]); 
 | 
                    rsMap2.put(objects[10].toString(), map1); 
 | 
                } 
 | 
                if (objects[19]!=null){ 
 | 
                    if ( !objects[20].toString().contains("H") 
 | 
                            && !objects[21].toString().contains("H") 
 | 
                            && !objects[22].toString().contains("H") 
 | 
                            && !objects[23].toString().contains("H") 
 | 
                            && !objects[24].toString().contains("H") 
 | 
                            && !objects[25].toString().contains("H") 
 | 
                    ) { 
 | 
                        map2.put("time", objects[19]); 
 | 
                        map2.put("PM10", objects[20]); 
 | 
                        map2.put("PM2_5", objects[21]); 
 | 
                        map2.put("SO2", objects[22]); 
 | 
                        map2.put("NO2", objects[23]); 
 | 
                        map2.put("CO", objects[24]); 
 | 
                        map2.put("O3", objects[25]); 
 | 
                        map2.put("AQI", objects[26]); 
 | 
                        rsMap3.put(objects[19].toString(), map2); 
 | 
                    } 
 | 
                } 
 | 
  
 | 
            } 
 | 
  
 | 
        } 
 | 
        //计算本年度pm2.5和优良天数 
 | 
        Map<String, List<Integer>> map = getMap(rsMap3,time); 
 | 
        //计算去年PM2.5和优良天数 
 | 
        Map<String, List<Integer>> map2 = getResult(rsMap2, time); 
 | 
        List<Integer> list = map.get("count"); 
 | 
        list.add(map2.get("count").get(0)); 
 | 
        List<Integer> list1 = map.get("PM2_5"); 
 | 
        list1.add(map2.get("PM2_5").get(0)); 
 | 
        map.put("去年",map2.get("去年")); 
 | 
        return map; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 计算本年的PM2.5 和优良天数 
 | 
     * 
 | 
     * @param rsMap3 
 | 
     */ 
 | 
    private Map<String, List<Integer>> getMap(HashMap<String, Object> rsMap3,String time) { 
 | 
        HashMap<String, List<Integer>> listMap = new HashMap<>(); 
 | 
        ArrayList<Integer> dayList = new ArrayList<>(); 
 | 
        ArrayList<Double> list1 = new ArrayList<>(); 
 | 
        ArrayList<Double> list2 = new ArrayList<>(); 
 | 
        ArrayList<Double> list3 = new ArrayList<>(); 
 | 
        ArrayList<Double> list4 = new ArrayList<>(); 
 | 
        ArrayList<Double> list5 = new ArrayList<>(); 
 | 
        ArrayList<Double> list6 = new ArrayList<>(); 
 | 
        ArrayList<Double> list7 = new ArrayList<>(); 
 | 
        ArrayList<Double> list8 = new ArrayList<>(); 
 | 
        ArrayList<Double> list9 = new ArrayList<>(); 
 | 
        ArrayList<Double> list10 = new ArrayList<>(); 
 | 
        ArrayList<Double> list11 = new ArrayList<>(); 
 | 
        ArrayList<Double> list12 = new ArrayList<>(); 
 | 
        ArrayList<Double> resList = new ArrayList<>(); 
 | 
        ArrayList<Integer> list = new ArrayList<>(); 
 | 
        ArrayList<Integer> listPM = new ArrayList<>(); 
 | 
        ArrayList<Double> AQI = new ArrayList<>(); 
 | 
        ArrayList<Double> pm10List = new ArrayList<>(); 
 | 
  
 | 
        int count1 = 0; 
 | 
        int count2 = 0; 
 | 
        int count3 = 0; 
 | 
        int count4 = 0; 
 | 
        int count5 = 0; 
 | 
        int count6 = 0; 
 | 
        int count7 = 0; 
 | 
        int count8 = 0; 
 | 
        int count9 = 0; 
 | 
        int count10 = 0; 
 | 
        int count11 = 0; 
 | 
        int count12 = 0; 
 | 
  
 | 
        Set<String> strings = rsMap3.keySet(); 
 | 
        for (String string : strings) { 
 | 
            if (string.equals(time)){ 
 | 
                Object o = rsMap3.get(string); 
 | 
                String s = JSON.toJSONString(o); 
 | 
                JSONObject jsonObject = JSON.parseObject(s); 
 | 
                Object pm25 = jsonObject.get("PM2_5"); 
 | 
                String co = jsonObject.getString("CO"); 
 | 
                String[] split = co.split("\\."); 
 | 
                int PM2_5 = (int) Double.parseDouble(pm25.toString()); 
 | 
                int PM10 = (int) Double.parseDouble(jsonObject.getString("PM10")); 
 | 
                int SO2 = (int) Double.parseDouble(jsonObject.getString("SO2")); 
 | 
                int NO2 = (int) Double.parseDouble(jsonObject.getString("NO2")); 
 | 
                int O3 = (int) Double.parseDouble(jsonObject.getString("O3")); 
 | 
                dayList.add(PM2_5); 
 | 
                dayList.add(PM10); 
 | 
                dayList.add(SO2); 
 | 
                dayList.add(NO2); 
 | 
                dayList.add(O3); 
 | 
                dayList.add(Integer.parseInt(split[0])); 
 | 
                dayList.add(Integer.parseInt(split[1])); 
 | 
            } 
 | 
  
 | 
            String substring = string.substring(5, 7); 
 | 
  
 | 
            if (substring.equals("01")) { 
 | 
                Object o = rsMap3.get(string); 
 | 
                String s = JSON.toJSONString(o); 
 | 
                Map map = JSON.parseObject(s, Map.class); 
 | 
                String aqi = map.get("AQI").toString(); 
 | 
                String pm2_5 = map.get("PM2_5").toString(); 
 | 
                String pm10 = map.get("PM10").toString(); 
 | 
                pm10List.add(Double.parseDouble(pm10)); 
 | 
                list1.add(Double.parseDouble(pm2_5)); 
 | 
                resList.add(Double.parseDouble(pm2_5)); 
 | 
                AQI.add(Double.parseDouble(aqi)); 
 | 
                if (Double.parseDouble(aqi) <= 100) { 
 | 
                    count1++; 
 | 
                } 
 | 
            } 
 | 
            if (substring.equals("02")) { 
 | 
                Object o = rsMap3.get(string); 
 | 
                String s = JSON.toJSONString(o); 
 | 
                Map map = JSON.parseObject(s, Map.class); 
 | 
                String aqi = map.get("AQI").toString(); 
 | 
                String pm2_5 = map.get("PM2_5").toString(); 
 | 
                String pm10 = map.get("PM10").toString(); 
 | 
                pm10List.add(Double.parseDouble(pm10)); 
 | 
                list2.add(Double.parseDouble(pm2_5)); 
 | 
                resList.add(Double.parseDouble(pm2_5)); 
 | 
                AQI.add(Double.parseDouble(aqi)); 
 | 
                if (Double.parseDouble(aqi) <= 100) { 
 | 
                    count2++; 
 | 
                } 
 | 
            } 
 | 
            if (substring.equals("03")) { 
 | 
                Object o = rsMap3.get(string); 
 | 
                String s = JSON.toJSONString(o); 
 | 
                Map map = JSON.parseObject(s, Map.class); 
 | 
                String aqi = map.get("AQI").toString(); 
 | 
                String pm2_5 = map.get("PM2_5").toString(); 
 | 
                String pm10 = map.get("PM10").toString(); 
 | 
                pm10List.add(Double.parseDouble(pm10)); 
 | 
                list3.add(Double.parseDouble(pm2_5)); 
 | 
                resList.add(Double.parseDouble(pm2_5)); 
 | 
                AQI.add(Double.parseDouble(aqi)); 
 | 
                if (Double.parseDouble(aqi) <= 100) { 
 | 
                    count3++; 
 | 
                } 
 | 
            } 
 | 
            if (substring.equals("04")) { 
 | 
                Object o = rsMap3.get(string); 
 | 
                String s = JSON.toJSONString(o); 
 | 
                Map map = JSON.parseObject(s, Map.class); 
 | 
                String aqi = map.get("AQI").toString(); 
 | 
                String pm2_5 = map.get("PM2_5").toString(); 
 | 
                String pm10 = map.get("PM10").toString(); 
 | 
                pm10List.add(Double.parseDouble(pm10)); 
 | 
                list4.add(Double.parseDouble(pm2_5)); 
 | 
                resList.add(Double.parseDouble(pm2_5)); 
 | 
                AQI.add(Double.parseDouble(aqi)); 
 | 
                if (Double.parseDouble(aqi) <= 100) { 
 | 
                    count4++; 
 | 
                } 
 | 
            } 
 | 
            if (substring.equals("05")) { 
 | 
                Object o = rsMap3.get(string); 
 | 
                String s = JSON.toJSONString(o); 
 | 
                Map map = JSON.parseObject(s, Map.class); 
 | 
                String aqi = map.get("AQI").toString(); 
 | 
                String pm2_5 = map.get("PM2_5").toString(); 
 | 
                String pm10 = map.get("PM10").toString(); 
 | 
                pm10List.add(Double.parseDouble(pm10)); 
 | 
                list5.add(Double.parseDouble(pm2_5)); 
 | 
                resList.add(Double.parseDouble(pm2_5)); 
 | 
                AQI.add(Double.parseDouble(aqi)); 
 | 
                if (Double.parseDouble(aqi) <= 100) { 
 | 
                    count5++; 
 | 
                } 
 | 
            } 
 | 
            if (substring.equals("06")) { 
 | 
                Object o = rsMap3.get(string); 
 | 
                String s = JSON.toJSONString(o); 
 | 
                Map map = JSON.parseObject(s, Map.class); 
 | 
                String aqi = map.get("AQI").toString(); 
 | 
                String pm2_5 = map.get("PM2_5").toString(); 
 | 
                String pm10 = map.get("PM10").toString(); 
 | 
                pm10List.add(Double.parseDouble(pm10)); 
 | 
                list6.add(Double.parseDouble(pm2_5)); 
 | 
                resList.add(Double.parseDouble(pm2_5)); 
 | 
                AQI.add(Double.parseDouble(aqi)); 
 | 
                if (Double.parseDouble(aqi) <= 100) { 
 | 
                    count6++; 
 | 
                } 
 | 
            } 
 | 
            if (substring.equals("07")) { 
 | 
                Object o = rsMap3.get(string); 
 | 
                String s = JSON.toJSONString(o); 
 | 
                Map map = JSON.parseObject(s, Map.class); 
 | 
                String aqi = map.get("AQI").toString(); 
 | 
                String pm2_5 = map.get("PM2_5").toString(); 
 | 
                String pm10 = map.get("PM10").toString(); 
 | 
                pm10List.add(Double.parseDouble(pm10)); 
 | 
                list7.add(Double.parseDouble(pm2_5)); 
 | 
                resList.add(Double.parseDouble(pm2_5)); 
 | 
                AQI.add(Double.parseDouble(aqi)); 
 | 
                if (Double.parseDouble(aqi) <= 100) { 
 | 
                    count7++; 
 | 
                } 
 | 
            } 
 | 
            if (substring.equals("08")) { 
 | 
                Object o = rsMap3.get(string); 
 | 
                String s = JSON.toJSONString(o); 
 | 
                Map map = JSON.parseObject(s, Map.class); 
 | 
                String aqi = map.get("AQI").toString(); 
 | 
                String pm2_5 = map.get("PM2_5").toString(); 
 | 
                String pm10 = map.get("PM10").toString(); 
 | 
                pm10List.add(Double.parseDouble(pm10)); 
 | 
                list8.add(Double.parseDouble(pm2_5)); 
 | 
                resList.add(Double.parseDouble(pm2_5)); 
 | 
                AQI.add(Double.parseDouble(aqi)); 
 | 
                if (Double.parseDouble(aqi) <= 100) { 
 | 
                    count8++; 
 | 
                } 
 | 
            } 
 | 
            if (substring.equals("09")) { 
 | 
                Object o = rsMap3.get(string); 
 | 
                String s = JSON.toJSONString(o); 
 | 
                Map map = JSON.parseObject(s, Map.class); 
 | 
                String aqi = map.get("AQI").toString(); 
 | 
                String pm2_5 = map.get("PM2_5").toString(); 
 | 
                String pm10 = map.get("PM10").toString(); 
 | 
                pm10List.add(Double.parseDouble(pm10)); 
 | 
                list9.add(Double.parseDouble(pm2_5)); 
 | 
                resList.add(Double.parseDouble(pm2_5)); 
 | 
                AQI.add(Double.parseDouble(aqi)); 
 | 
                if (Double.parseDouble(aqi) <= 100) { 
 | 
                    count9++; 
 | 
                } 
 | 
            } 
 | 
            if (substring.equals("10")) { 
 | 
                Object o = rsMap3.get(string); 
 | 
                String s = JSON.toJSONString(o); 
 | 
                Map map = JSON.parseObject(s, Map.class); 
 | 
                String aqi = map.get("AQI").toString(); 
 | 
                String pm2_5 = map.get("PM2_5").toString(); 
 | 
                String pm10 = map.get("PM10").toString(); 
 | 
                pm10List.add(Double.parseDouble(pm10)); 
 | 
                list10.add(Double.parseDouble(pm2_5)); 
 | 
                resList.add(Double.parseDouble(pm2_5)); 
 | 
                AQI.add(Double.parseDouble(aqi)); 
 | 
                if (Double.parseDouble(aqi) <= 100) { 
 | 
                    count10++; 
 | 
                } 
 | 
            } 
 | 
            if (substring.equals("11")) { 
 | 
                Object o = rsMap3.get(string); 
 | 
                String s = JSON.toJSONString(o); 
 | 
                Map map = JSON.parseObject(s, Map.class); 
 | 
                String aqi = map.get("AQI").toString(); 
 | 
                String pm2_5 = map.get("PM2_5").toString(); 
 | 
                String pm10 = map.get("PM10").toString(); 
 | 
                pm10List.add(Double.parseDouble(pm10)); 
 | 
                list11.add(Double.parseDouble(pm2_5)); 
 | 
                resList.add(Double.parseDouble(pm2_5)); 
 | 
                AQI.add(Double.parseDouble(aqi)); 
 | 
                if (Double.parseDouble(aqi) <= 100) { 
 | 
                    count11++; 
 | 
                } 
 | 
            } 
 | 
            if (substring.equals("12")) { 
 | 
                Object o = rsMap3.get(string); 
 | 
                String s = JSON.toJSONString(o); 
 | 
                Map map = JSON.parseObject(s, Map.class); 
 | 
                String aqi = map.get("AQI").toString(); 
 | 
                String pm2_5 = map.get("PM2_5").toString(); 
 | 
                String pm10 = map.get("PM10").toString(); 
 | 
                pm10List.add(Double.parseDouble(pm10)); 
 | 
                list12.add(Double.parseDouble(pm2_5)); 
 | 
                resList.add(Double.parseDouble(pm2_5)); 
 | 
                AQI.add(Double.parseDouble(aqi)); 
 | 
                if (Double.parseDouble(aqi) <= 100) { 
 | 
                    count12++; 
 | 
                } 
 | 
            } 
 | 
  
 | 
        } 
 | 
        //获取季度pm2.5 
 | 
        String ju = time.substring(5, 7); 
 | 
        int data = Integer.parseInt(ju); 
 | 
        ArrayList<Double> rsData = new ArrayList<>(); 
 | 
        if (data>=1 && data<=3){ 
 | 
            rsData.addAll(list1); 
 | 
            rsData.addAll(list2); 
 | 
            rsData.addAll(list3); 
 | 
        }else if (data>=4 &&data<=6){ 
 | 
            rsData.addAll(list4); 
 | 
            rsData.addAll(list5); 
 | 
            rsData.addAll(list6); 
 | 
        }else if (data>=7 &&data<=9){ 
 | 
            rsData.addAll(list7); 
 | 
            rsData.addAll(list8); 
 | 
            rsData.addAll(list9); 
 | 
        }else { 
 | 
            rsData.addAll(list10); 
 | 
            rsData.addAll(list11); 
 | 
            rsData.addAll(list12); 
 | 
        } 
 | 
        ArrayList<Integer> pmList = new ArrayList<>(); 
 | 
        if (rsData.size()>0){ 
 | 
            int pm = (int) AmendUtils.sciCal(rsData.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); 
 | 
            pmList.add(pm); 
 | 
        } 
 | 
  
 | 
  
 | 
        //获取污染状态 
 | 
        ArrayList<Integer> integers = getCode(AQI); 
 | 
        String rsTime = time.substring(0, 4); 
 | 
        integers.add(Integer.parseInt(rsTime)); 
 | 
  
 | 
  
 | 
        list.add(count1); 
 | 
        list.add(count2); 
 | 
        list.add(count3); 
 | 
        list.add(count4); 
 | 
        list.add(count5); 
 | 
        list.add(count6); 
 | 
        list.add(count7); 
 | 
        list.add(count8); 
 | 
        list.add(count9); 
 | 
        list.add(count10); 
 | 
        list.add(count11); 
 | 
        list.add(count12); 
 | 
  
 | 
        Integer sum = list.stream().reduce(Integer::sum).orElse(0); 
 | 
  
 | 
        list.add(sum); 
 | 
        listMap.put("count", list); 
 | 
  
 | 
        Integer collect1 = 0; 
 | 
        if (list1.size() > 0) { 
 | 
  
 | 
            collect1 = (int) AmendUtils.sciCal(list1.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); 
 | 
        } 
 | 
        Integer collect2 = 0; 
 | 
        if (list2.size() > 0) { 
 | 
  
 | 
            collect2= (int) AmendUtils.sciCal(list2.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); 
 | 
        } 
 | 
        Integer collect3 = 0; 
 | 
        if (list3.size() > 0) { 
 | 
  
 | 
            collect3 = (int) AmendUtils.sciCal(list3.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); 
 | 
        } 
 | 
        Integer collect4 = 0; 
 | 
        if (list4.size() > 0) { 
 | 
  
 | 
            collect4 = (int) AmendUtils.sciCal(list4.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); 
 | 
        } 
 | 
        Integer collect5 = 0; 
 | 
        if (list5.size() > 0) { 
 | 
  
 | 
            collect5 = (int) AmendUtils.sciCal(list5.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); 
 | 
        } 
 | 
        Integer collect6 = 0; 
 | 
        if (list6.size() > 0) { 
 | 
  
 | 
            collect6 = (int) AmendUtils.sciCal(list6.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); 
 | 
        } 
 | 
  
 | 
        Integer collect7 = 0; 
 | 
        if (list7.size() > 0) { 
 | 
  
 | 
            collect7 = (int) AmendUtils.sciCal(list7.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); 
 | 
        } 
 | 
        Integer collect8 = 0; 
 | 
        if (list8.size() > 0) { 
 | 
  
 | 
            collect8 = (int) AmendUtils.sciCal(list8.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); 
 | 
        } 
 | 
        Integer collect9 = 0; 
 | 
        if (list9.size() > 0) { 
 | 
  
 | 
            collect9 = (int) AmendUtils.sciCal(list9.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); 
 | 
        } 
 | 
        Integer collect10 = 0; 
 | 
        if (list10.size() > 0) { 
 | 
  
 | 
            collect10 = (int) AmendUtils.sciCal(list10.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); 
 | 
        } 
 | 
        Integer collect11 = 0; 
 | 
        if (list11.size() > 0) { 
 | 
  
 | 
            collect11 = (int) AmendUtils.sciCal(list11.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); 
 | 
        } 
 | 
        Integer collect12 = 0; 
 | 
        if (list12.size() > 0) { 
 | 
  
 | 
            collect12 = (int) AmendUtils.sciCal(list12.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); 
 | 
        } 
 | 
        //今年的pm2.5累计 
 | 
        int resPM25 = (int) AmendUtils.sciCal(resList.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); 
 | 
        ArrayList<Integer> list13 = new ArrayList<>(); 
 | 
        int rsPM10 = (int) AmendUtils.sciCal(pm10List.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); 
 | 
        list13.add(rsPM10); 
 | 
        listPM.add(collect1); 
 | 
        listPM.add(collect2); 
 | 
        listPM.add(collect3); 
 | 
        listPM.add(collect4); 
 | 
        listPM.add(collect5); 
 | 
        listPM.add(collect6); 
 | 
        listPM.add(collect7); 
 | 
        listPM.add(collect8); 
 | 
        listPM.add(collect9); 
 | 
        listPM.add(collect10); 
 | 
        listPM.add(collect11); 
 | 
        listPM.add(collect12); 
 | 
        listPM.add(resPM25); 
 | 
        listMap.put("PM2_5",listPM); 
 | 
        listMap.put("今年",integers); 
 | 
        listMap.put("day",dayList); 
 | 
        listMap.put("季度",pmList); 
 | 
        listMap.put("PM10",list13); 
 | 
        return listMap; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取污染状态 
 | 
     * @param AQI 
 | 
     * @return 
 | 
     */ 
 | 
    private ArrayList<Integer> getCode(ArrayList<Double> AQI) { 
 | 
        ArrayList<Integer> integers = new ArrayList<>(); 
 | 
        int code1 =0; 
 | 
        int code2 =0; 
 | 
        int code3 =0; 
 | 
        int code4 =0; 
 | 
        int code5 =0; 
 | 
        int code6 =0; 
 | 
        int i; 
 | 
        for (double aDouble : AQI) { 
 | 
            i=(int)aDouble; 
 | 
            String s = AQIUtils.classOfPollutionByAqi(i); 
 | 
            if (s.equals("优")){ 
 | 
                code1++; 
 | 
            } 
 | 
            if (s.equals("良")){ 
 | 
                code2++; 
 | 
            } 
 | 
            if (s.equals("轻度污染")){ 
 | 
                code3++; 
 | 
            } 
 | 
            if (s.equals("中度污染")){ 
 | 
                code4++; 
 | 
            } 
 | 
            if (s.equals("重度污染")){ 
 | 
                code5++; 
 | 
            } 
 | 
            if (s.equals("严重污染")){ 
 | 
                code6++; 
 | 
            } 
 | 
        } 
 | 
        integers.add(code1+code2); 
 | 
        integers.add(code1); 
 | 
        integers.add(code2); 
 | 
        integers.add(code3); 
 | 
        integers.add(code4); 
 | 
        integers.add(code5); 
 | 
        integers.add(code6); 
 | 
  
 | 
        return integers; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 计算去年PM2.5和优良天数 
 | 
     * 
 | 
     * @param rsMap2 
 | 
     */ 
 | 
    private Map<String, List<Integer>> getResult(HashMap<String, Object> rsMap2, String time) throws ParseException { 
 | 
        HashMap<String, List<Integer>> rsMap = new HashMap<>(); 
 | 
        ArrayList<Double> list = new ArrayList<>(); 
 | 
        ArrayList<Integer> list2 = new ArrayList<>(); 
 | 
        ArrayList<Integer> list3 = new ArrayList<>(); 
 | 
        ArrayList<Double> AQI = new ArrayList<>(); 
 | 
        ArrayList<Double> list4 = new ArrayList<>(); 
 | 
        ArrayList<Integer> pm10List = new ArrayList<>(); 
 | 
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd"); 
 | 
        Calendar instance = Calendar.getInstance(); 
 | 
        instance.setTime(sdf1.parse(time)); 
 | 
        instance.add(Calendar.YEAR, -1); 
 | 
        Date date = instance.getTime(); 
 | 
        //获取年 
 | 
        String format = sdf1.format(date); 
 | 
        String rsTime = format.substring(0, 4); 
 | 
        //时间戳 
 | 
        long time1 = date.getTime(); 
 | 
        int count = 0; 
 | 
        Set<String> strings = rsMap2.keySet(); 
 | 
        for (String string : strings) { 
 | 
            Date parse = sdf1.parse(string); 
 | 
            long time2 = parse.getTime(); 
 | 
            if (time2 <= time1) { 
 | 
                Object o = rsMap2.get(string); 
 | 
                String s = JSON.toJSONString(o); 
 | 
                Map map = JSON.parseObject(s, Map.class); 
 | 
                String aqi = map.get("AQI").toString(); 
 | 
                String pm2_5 = map.get("PM2_5").toString(); 
 | 
                String pm10 = map.get("PM10").toString(); 
 | 
                list4.add(Double.parseDouble(pm10)); 
 | 
                list.add(Double.parseDouble(pm2_5)); 
 | 
                AQI.add(Double.parseDouble(aqi)); 
 | 
                if (Double.parseDouble(aqi) <= 100) { 
 | 
                    count++; 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        list2.add(count); 
 | 
        ArrayList<Integer> rsAqi = getCode(AQI); 
 | 
        rsAqi.add(Integer.parseInt(rsTime)); 
 | 
  
 | 
        //去年的pm2.5累积 
 | 
        int PM2_5 = (int) AmendUtils.sciCal(list.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); 
 | 
        int PM10 = (int) AmendUtils.sciCal(list4.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); 
 | 
        list3.add(PM2_5); 
 | 
        pm10List.add(PM10); 
 | 
        rsMap.put("count", list2); 
 | 
        rsMap.put("PM2_5", list3); 
 | 
        rsMap.put("去年",rsAqi); 
 | 
        rsMap.put("PM10",pm10List); 
 | 
  
 | 
        return rsMap; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 计算 浑南区的数据 
 | 
     * @param file 
 | 
     * @throws IOException 
 | 
     */ 
 | 
    private Map<String, List<Integer>> getTo(MultipartFile file,String time) throws IOException, ParseException { 
 | 
        XSSFWorkbook workbook = new XSSFWorkbook(file.getInputStream()); 
 | 
        HashMap<String, Object> rsMap1 = new HashMap<>(); 
 | 
        HashMap<String, Object> rsMap2 = new HashMap<>(); 
 | 
        HashMap<String, Object> rsMap3 = new HashMap<>(); 
 | 
        HashMap<String, Object> rsMap4 = new HashMap<>(); 
 | 
        //去年的浑南区 
 | 
        HashMap<String, Object> hnMap1 = new HashMap<>(); 
 | 
        //今年的浑南区 
 | 
        HashMap<String, Object> hnMap2 = new HashMap<>(); 
 | 
  
 | 
        XSSFSheet sheetAt = workbook.getSheetAt(0); 
 | 
  
 | 
        //一共有多少行 
 | 
        //浑南东路 
 | 
        int lastRowNum = sheetAt.getLastRowNum(); 
 | 
        for (int i = 2; i <= lastRowNum; i++) { 
 | 
            XSSFRow row = sheetAt.getRow(i); 
 | 
            if (row == null) { 
 | 
                continue; 
 | 
            } 
 | 
            short lastCellNum = row.getLastCellNum(); 
 | 
            if (lastCellNum < 8) { 
 | 
                continue; 
 | 
            } 
 | 
            Object[] objects = new Object[lastCellNum]; 
 | 
            for (int j = 0; j < lastCellNum; j++) { 
 | 
                Cell cell = row.getCell(j); 
 | 
                if (cell != null) { 
 | 
                    Object value = ExcelUtils.getValue(cell); 
 | 
                    objects[j] = value; 
 | 
                } 
 | 
  
 | 
            } 
 | 
            HashMap<String, Object> map1 = new HashMap<>(); 
 | 
            HashMap<String, Object> map2 = new HashMap<>(); 
 | 
            if (objects.length == 18) { 
 | 
  
 | 
                map1.put("PM10", objects[11]); 
 | 
                map1.put("PM2_5", objects[12]); 
 | 
                map1.put("SO2", objects[13]); 
 | 
                map1.put("NO2", objects[14]); 
 | 
                map1.put("CO", objects[15]); 
 | 
                map1.put("O3", objects[16]); 
 | 
  
 | 
                rsMap1.put(objects[10].toString(), map1); 
 | 
  
 | 
            } 
 | 
  
 | 
            if (objects.length == 27) { 
 | 
  
 | 
                map1.put("PM10", objects[11]); 
 | 
                map1.put("PM2_5", objects[12]); 
 | 
                map1.put("SO2", objects[13]); 
 | 
                map1.put("NO2", objects[14]); 
 | 
                map1.put("CO", objects[15]); 
 | 
                map1.put("O3", objects[16]); 
 | 
  
 | 
                rsMap1.put(objects[10].toString(), map1); 
 | 
  
 | 
                if (objects[19]!=null){ 
 | 
                    map2.put("PM10", objects[20]); 
 | 
                    map2.put("PM2_5", objects[21]); 
 | 
                    map2.put("SO2", objects[22]); 
 | 
                    map2.put("NO2", objects[23]); 
 | 
                    map2.put("CO", objects[24]); 
 | 
                    map2.put("O3", objects[25]); 
 | 
  
 | 
                    rsMap2.put(objects[19].toString(), map2); 
 | 
  
 | 
                } 
 | 
  
 | 
            } 
 | 
  
 | 
        } 
 | 
  
 | 
        //新秀街 
 | 
        XSSFSheet sheetAt1 = workbook.getSheetAt(1); 
 | 
  
 | 
        int lastRowNum1 = sheetAt1.getLastRowNum(); 
 | 
        for (int i = 2; i < lastRowNum1; i++) { 
 | 
            XSSFRow row = sheetAt1.getRow(i); 
 | 
            if (row == null) { 
 | 
                continue; 
 | 
            } 
 | 
            short lastCellNum = row.getLastCellNum(); 
 | 
            if (lastCellNum < 8) { 
 | 
                continue; 
 | 
            } 
 | 
            Object[] objects = new Object[lastCellNum]; 
 | 
            for (int j = 0; j < lastCellNum; j++) { 
 | 
                Cell cell = row.getCell(j); 
 | 
                if (cell != null) { 
 | 
                    Object value = ExcelUtils.getValue(cell); 
 | 
                    objects[j] = value; 
 | 
                } 
 | 
  
 | 
            } 
 | 
            HashMap<String, Object> map1 = new HashMap<>(); 
 | 
            HashMap<String, Object> map2 = new HashMap<>(); 
 | 
            if (objects.length == 18) { 
 | 
  
 | 
                map1.put("PM10", objects[11]); 
 | 
                map1.put("PM2_5", objects[12]); 
 | 
                map1.put("SO2", objects[13]); 
 | 
                map1.put("NO2", objects[14]); 
 | 
                map1.put("CO", objects[15]); 
 | 
                map1.put("O3", objects[16]); 
 | 
  
 | 
                rsMap3.put(objects[10].toString(), map1); 
 | 
  
 | 
  
 | 
            } 
 | 
  
 | 
            if (objects.length == 27) { 
 | 
  
 | 
                map1.put("PM10", objects[11]); 
 | 
                map1.put("PM2_5", objects[12]); 
 | 
                map1.put("SO2", objects[13]); 
 | 
                map1.put("NO2", objects[14]); 
 | 
                map1.put("CO", objects[15]); 
 | 
                map1.put("O3", objects[16]); 
 | 
                rsMap3.put(objects[10].toString(), map1); 
 | 
  
 | 
                if (objects[19]!=null){ 
 | 
                    map2.put("PM10", objects[20]); 
 | 
                    map2.put("PM2_5", objects[21]); 
 | 
                    map2.put("SO2", objects[22]); 
 | 
                    map2.put("NO2", objects[23]); 
 | 
                    map2.put("CO", objects[24]); 
 | 
                    map2.put("O3", objects[25]); 
 | 
                    rsMap4.put(objects[19].toString(), map2); 
 | 
                } 
 | 
  
 | 
            } 
 | 
  
 | 
        } 
 | 
        //获取去年的因子 
 | 
        Set<String> strings = rsMap1.keySet(); 
 | 
        for (String string : strings) { 
 | 
            Object o = rsMap1.get(string); 
 | 
            String s = JSON.toJSONString(o); 
 | 
            Map map = JSON.parseObject(s, Map.class); 
 | 
  
 | 
            Object o1 = rsMap3.get(string); 
 | 
            String s1 = JSON.toJSONString(o1); 
 | 
            Map map1 = JSON.parseObject(s1, Map.class); 
 | 
            Set sets = map1.keySet(); 
 | 
            HashMap<Object, Object> hs = new HashMap<>(); 
 | 
            for (Object set : sets) { 
 | 
                if (set.toString().equals("CO")){ 
 | 
                    String s3 = map1.get(set).toString(); 
 | 
                    String s2 = map.get(set).toString(); 
 | 
                    if (s3.contains("H") && !s2.contains("H")){ 
 | 
                        hs.put(set,Double.parseDouble(s2)); 
 | 
                    }else if(!s3.contains("H") && s2.contains("H")){ 
 | 
                        hs.put(set,Double.parseDouble(s3)); 
 | 
                    }else if(s3.contains("H") && s2.contains("H")){ 
 | 
                        break; 
 | 
                    }else { 
 | 
                        hs.put(set, AmendUtils.sciCal((Double.parseDouble(s3)+Double.parseDouble(s2))/2,1)); 
 | 
                    } 
 | 
                    continue; 
 | 
                } 
 | 
                String s3 = map1.get(set).toString(); 
 | 
                String s2 = map.get(set).toString(); 
 | 
                if (s3.contains("H") && !s2.contains("H")){ 
 | 
                    hs.put(set,Double.parseDouble(s2)); 
 | 
                }else if(!s3.contains("H") && s2.contains("H")){ 
 | 
                    hs.put(set,Double.parseDouble(s3)); 
 | 
                }else if(s3.contains("H") && s2.contains("H")){ 
 | 
                    break; 
 | 
                }else { 
 | 
                    hs.put(set, AmendUtils.sciCal((Double.parseDouble(s3)+Double.parseDouble(s2))/2,0)); 
 | 
                } 
 | 
            } 
 | 
            if (hs.size()==6){ 
 | 
                hnMap1.put(string,hs); 
 | 
            } 
 | 
  
 | 
        } 
 | 
  
 | 
        //获取今年的因子 
 | 
        Set<String> strings1 = rsMap2.keySet(); 
 | 
        for (String s : strings1) { 
 | 
            Object o = rsMap2.get(s); 
 | 
            String s1 = JSON.toJSONString(o); 
 | 
            Map map = JSON.parseObject(s1, Map.class); 
 | 
            Object o1 = rsMap4.get(s); 
 | 
            String s2 = JSON.toJSONString(o1); 
 | 
            Map map1 = JSON.parseObject(s2, Map.class); 
 | 
            Set sets = map1.keySet(); 
 | 
            HashMap<Object, Object> hs = new HashMap<>(); 
 | 
            for (Object set : sets) { 
 | 
                if (set.toString().equals("CO")){ 
 | 
                    String s3 = map1.get(set).toString(); 
 | 
                    String s4 = map.get(set).toString(); 
 | 
                    if (s3.contains("H") && !s4.contains("H")){ 
 | 
                        hs.put(set,Double.parseDouble(s4)); 
 | 
                    }else if(!s3.contains("H") && s4.contains("H")){ 
 | 
                        hs.put(set,Double.parseDouble(s3)); 
 | 
                    }else if(s3.contains("H") && s4.contains("H")){ 
 | 
                        break; 
 | 
                    }else { 
 | 
                        hs.put(set, AmendUtils.sciCal((Double.parseDouble(s3)+Double.parseDouble(s4))/2,1)); 
 | 
                    } 
 | 
                    continue; 
 | 
                } 
 | 
                String s3 = map1.get(set).toString(); 
 | 
                String s4 = map.get(set).toString(); 
 | 
                if (s3.contains("H") && !s4.contains("H")){ 
 | 
                    hs.put(set,Double.parseDouble(s4)); 
 | 
                }else if(!s3.contains("H") && s4.contains("H")){ 
 | 
                    hs.put(set,Double.parseDouble(s3)); 
 | 
                }else if(s3.contains("H") && s4.contains("H")){ 
 | 
                    break; 
 | 
                }else { 
 | 
                    hs.put(set, AmendUtils.sciCal((Double.parseDouble(s3)+Double.parseDouble(s4))/2,0)); 
 | 
                } 
 | 
  
 | 
            } 
 | 
            if (hs.size()==6){ 
 | 
                hnMap2.put(s,hs); 
 | 
            } 
 | 
  
 | 
        } 
 | 
  
 | 
  
 | 
        //计算今年的aqi 
 | 
        getHnMap(hnMap2); 
 | 
        //计算去年的aqi 
 | 
        getHnMap(hnMap1); 
 | 
  
 | 
        //计算本年的pm2.5 
 | 
        Map<String, List<Integer>> map = getMap(hnMap2,time); 
 | 
        //计算去年的pm2.5 
 | 
        Map<String, List<Integer>> map2 = getResult(hnMap1, time); 
 | 
        List<Integer> list = map.get("count"); 
 | 
        list.add(map2.get("count").get(0)); 
 | 
        List<Integer> list1 = map.get("PM2_5"); 
 | 
        list1.add(map2.get("PM2_5").get(0)); 
 | 
        List<Integer> list2 = map.get("PM10"); 
 | 
        list2.add(map2.get("PM10").get(0)); 
 | 
  
 | 
  
 | 
        //获取今年本月的污染天数,和PM2.5 
 | 
        List<Integer> month = getMonth1(time, hnMap2); 
 | 
        int month2 = getMonth2(time, hnMap1); 
 | 
        month.add(month2); 
 | 
        map.put("month",month); 
 | 
        return map; 
 | 
  
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 获取去年本月的因子均值 
 | 
     * @param time 
 | 
     * @param hnMap1 
 | 
     * @return 
 | 
     */ 
 | 
    private int getMonth2(String time, HashMap<String, Object> hnMap1) { 
 | 
        String years = time.substring(0, 4); 
 | 
        int s = Integer.parseInt(years) - 1; 
 | 
        String month = time.substring(5, 7); 
 | 
        String day = time.substring(8, 10); 
 | 
        ArrayList<Double> list2 = new ArrayList<>(); 
 | 
        for (int i = 1; i <= Integer.parseInt(day); i++) { 
 | 
            if (i < 10) { 
 | 
                Object o = hnMap1.get(s + "-" + month + "-0" + i); 
 | 
                String s1 = JSON.toJSONString(o); 
 | 
                if (s1.equals("null")){ 
 | 
                    list2.add(0.0); 
 | 
                    continue; 
 | 
                } 
 | 
                Map map1 = JSON.parseObject(s1, Map.class); 
 | 
                String pm2_5 = map1.get("PM2_5").toString(); 
 | 
                list2.add(Double.parseDouble(pm2_5)); 
 | 
            } else { 
 | 
                Object o = hnMap1.get(s + "-" + month + "-" + i); 
 | 
                String s1 = JSON.toJSONString(o); 
 | 
                if (s1.equals("null")){ 
 | 
                    list2.add(0.0); 
 | 
                    continue; 
 | 
                } 
 | 
                Map map1 = JSON.parseObject(s1, Map.class); 
 | 
                String pm2_5 = map1.get("PM2_5").toString(); 
 | 
                list2.add(Double.parseDouble(pm2_5)); 
 | 
            } 
 | 
        } 
 | 
        int rsMonth = (int) AmendUtils.sciCal(list2.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); 
 | 
        return rsMonth; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取本年本月的因子的平均值 
 | 
     * @param time 
 | 
     * @param hnMap2 
 | 
     * @return 
 | 
     */ 
 | 
    private List<Integer> getMonth1(String time, HashMap<String, Object> hnMap2) { 
 | 
        String years = time.substring(0, 4); 
 | 
        String month = time.substring(5, 7); 
 | 
        String day = time.substring(8, 10); 
 | 
        ArrayList<Double> list2 = new ArrayList<>(); 
 | 
        ArrayList<Double> aqiList = new ArrayList<>(); 
 | 
        for (int i = 1; i <=Integer.parseInt(day) ; i++) { 
 | 
            if (i<10){ 
 | 
                Object o = hnMap2.get(years + "-" + month + "-0" + i); 
 | 
                String s1 = JSON.toJSONString(o); 
 | 
                Map map1 = JSON.parseObject(s1, Map.class); 
 | 
                String pm2_5 = map1.get("PM2_5").toString(); 
 | 
                String aqi = map1.get("AQI").toString(); 
 | 
                aqiList.add(Double.parseDouble(aqi)); 
 | 
                list2.add(Double.parseDouble(pm2_5)); 
 | 
            }else { 
 | 
                Object o = hnMap2.get(years + "-" + month + "-" + i); 
 | 
                String s1 = JSON.toJSONString(o); 
 | 
                Map map1 = JSON.parseObject(s1, Map.class); 
 | 
                String pm2_5 = map1.get("PM2_5").toString(); 
 | 
                String aqi = map1.get("AQI").toString(); 
 | 
                aqiList.add(Double.parseDouble(aqi)); 
 | 
                list2.add(Double.parseDouble(pm2_5)); 
 | 
            } 
 | 
  
 | 
        } 
 | 
        int rsMonth = (int) AmendUtils.sciCal(list2.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); 
 | 
        List<Integer> code = getCode(aqiList); 
 | 
        code.add(rsMonth); 
 | 
        return code; 
 | 
    } 
 | 
  
 | 
    private void getHnMap(HashMap<String, Object> hnMap2) { 
 | 
        Set<String> strings4 = hnMap2.keySet(); 
 | 
        for (String s : strings4) { 
 | 
            Object o = hnMap2.get(s); 
 | 
            String s1 = JSON.toJSONString(o); 
 | 
            Map rs = JSON.parseObject(s1, Map.class); 
 | 
            Map aqi1 = AqiUtils.getAqi(rs); 
 | 
            JSONObject jsonObject = JSON.parseObject(s1); 
 | 
            jsonObject.put("AQI",aqi1.get("AQI")); 
 | 
            String s2 = JSON.toJSONString(jsonObject); 
 | 
            Map map = JSON.parseObject(s2, Map.class); 
 | 
            hnMap2.put(s,map); 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |