|  |  | 
 |  |  | import org.springframework.web.multipart.MultipartFile; | 
 |  |  |  | 
 |  |  | import java.io.IOException; | 
 |  |  | import java.math.BigDecimal; | 
 |  |  | import java.text.ParseException; | 
 |  |  | import java.text.SimpleDateFormat; | 
 |  |  | import java.util.ArrayList; | 
 |  |  | 
 |  |  | 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; | 
 |  |  | 
 |  |  |     private ExcelMapper excelMapper; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 浑南区导入 | 
 |  |  |      * 浑南区模板 | 
 |  |  |      * | 
 |  |  |      * @param files | 
 |  |  |      * @param params | 
 |  |  |      * @return | 
 |  |  |      * @throws IOException | 
 |  |  |      * @throws ParseException | 
 |  |  |      */ | 
 |  |  |     @Override | 
 |  |  |     public ExcelBO getExcelImport(List<MultipartFile> files, Map<String, Object> params) throws IOException, ParseException { | 
 |  |  | 
 |  |  |             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); | 
 |  |  | 
 |  |  |             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("新秀街",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(excel.getDate()); | 
 |  |  |             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(); | 
 |  |  | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             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(); | 
 |  |  | 
 |  |  |                         Integer integer1 = list.get(13); | 
 |  |  |                         int i = integer - integer1; | 
 |  |  |                         String code =""; | 
 |  |  |                         if (i<=0){ | 
 |  |  |                         if (i<0){ | 
 |  |  |                             code = "减少"+i+"天"; | 
 |  |  |                         }else { | 
 |  |  |                         }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 (s.equals("PM2_5")){ | 
 |  |  |                         ArrayList<String> list1 = new ArrayList<>(); | 
 |  |  |                         List<Integer> list = stringListMap.get(s); | 
 |  |  | 
 |  |  |                         Integer integer1 = list.get(13); | 
 |  |  |                         double i  = integer - integer1; | 
 |  |  |  | 
 |  |  |                         double i1 = AmendUtils.sciCal((i / integer1)*100,1); | 
 |  |  |                         double i1 = AmendUtils.sciCal((Math.abs(i) / integer1)*100,1); | 
 |  |  |                         String code  = ""; | 
 |  |  |                         if (i1<=0){ | 
 |  |  |                             code = "下降"+i1+"%"; | 
 |  |  |                         if (i<0){ | 
 |  |  |                             code = "改善"+i1+"%"; | 
 |  |  |                         }else if (i>0){ | 
 |  |  |                             code = "改善-"+i1+"%"; | 
 |  |  |                         }else { | 
 |  |  |                             code = "上升"+i1+"%"; | 
 |  |  |                             code ="持平"; | 
 |  |  |                         } | 
 |  |  |  | 
 |  |  |                         list1.add(code); | 
 |  |  | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         ArrayList<String> list1 = new ArrayList<>(); | 
 |  |  |         ArrayList<String> list2 = new ArrayList<>(); | 
 |  |  |         for (int i = 0; i < 15; i++) { | 
 |  |  |             if (i==0){ | 
 |  |  |                 list1.add("优良天数"); | 
 |  |  |                 continue; | 
 |  |  |         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(""); | 
 |  |  |             list1.add(0,"优良天数"); | 
 |  |  |             list2.add(0,"PM2.5浓度微克/立方"); | 
 |  |  |             rsMap.put("sy1",list1); | 
 |  |  |             rsMap.put("sy2",list2); | 
 |  |  |         } | 
 |  |  |         list2.addAll(list1); | 
 |  |  |         list2.remove(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 { | 
 |  |  |  | 
 |  |  |     //计算pm2.5同比 | 
 |  |  |         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); | 
 |  |  | 
 |  |  |         Integer integer = list.get(12); | 
 |  |  |         Integer integer1 = list.get(13); | 
 |  |  |         double i1 = 0.0; | 
 |  |  |         double i  = integer - integer1; | 
 |  |  |         if (integer1!=0){ | 
 |  |  |             double i  = integer - integer1; | 
 |  |  |             i1 = AmendUtils.sciCal((i / integer1)*100,1); | 
 |  |  |  | 
 |  |  |             i1 = AmendUtils.sciCal((Math.abs(i) / integer1)*100,1); | 
 |  |  |         } | 
 |  |  |         String code  = ""; | 
 |  |  |         if (i1<=0){ | 
 |  |  |             code = "下降"+i1+"%"; | 
 |  |  |         if (i<0){ | 
 |  |  |             code = "改善"+i1+"%"; | 
 |  |  |         }else if (i>0){ | 
 |  |  |             code = "改善-"+i1+"%"; | 
 |  |  |         }else { | 
 |  |  |             code = "上升"+i1+"%"; | 
 |  |  |             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); | 
 |  |  | 
 |  |  |         Integer integer1 = list.get(13); | 
 |  |  |         int i = integer - integer1; | 
 |  |  |         String code = ""; | 
 |  |  |         if (i<=0){ | 
 |  |  |         if (i<0){ | 
 |  |  |             code = "减少"+i+"天"; | 
 |  |  |         }else { | 
 |  |  |         }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> 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_8H", objects[6]); | 
 |  |  |                 map.put("AQI", objects[7]); | 
 |  |  |                 rsMap1.put(objects[0].toString(), map); | 
 |  |  |             } | 
 |  |  | //            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("SO2", objects[3]); | 
 |  |  |                 map.put("NO2", objects[4]); | 
 |  |  |                 map.put("CO", objects[5]); | 
 |  |  |                 map.put("O3_8H", objects[6]); | 
 |  |  |                 map.put("O3", objects[6]); | 
 |  |  |                 map.put("AQI", objects[7]); | 
 |  |  |                 rsMap1.put(objects[0].toString(), map); | 
 |  |  |  | 
 |  |  | 
 |  |  |                     map1.put("SO2", objects[13]); | 
 |  |  |                     map1.put("NO2", objects[14]); | 
 |  |  |                     map1.put("CO", objects[15]); | 
 |  |  |                     map1.put("O3_8H", objects[16]); | 
 |  |  |                     map1.put("O3", objects[16]); | 
 |  |  |                     map1.put("AQI", objects[17]); | 
 |  |  |                     rsMap2.put(objects[10].toString(), map1); | 
 |  |  |                 } | 
 |  |  | 
 |  |  |                 map.put("SO2", objects[3]); | 
 |  |  |                 map.put("NO2", objects[4]); | 
 |  |  |                 map.put("CO", objects[5]); | 
 |  |  |                 map.put("O3_8H", objects[6]); | 
 |  |  |                 map.put("O3", objects[6]); | 
 |  |  |                 map.put("AQI", objects[7]); | 
 |  |  |                 rsMap1.put(objects[0].toString(), map); | 
 |  |  |                 if (   !objects[11].toString().contains("H") | 
 |  |  | 
 |  |  |                     map1.put("SO2", objects[13]); | 
 |  |  |                     map1.put("NO2", objects[14]); | 
 |  |  |                     map1.put("CO", objects[15]); | 
 |  |  |                     map1.put("O3_8H", objects[16]); | 
 |  |  |                     map1.put("O3", objects[16]); | 
 |  |  |                     map1.put("AQI", objects[17]); | 
 |  |  |                     rsMap2.put(objects[10].toString(), map1); | 
 |  |  |                 } | 
 |  |  |                 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_8H", objects[25]); | 
 |  |  |                     map2.put("AQI", objects[26]); | 
 |  |  |                     rsMap3.put(objects[19].toString(), map2); | 
 |  |  |                 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 和优良天数 | 
 |  |  |      * 计算本年的PM2.5 和优良天数 | 
 |  |  |      * | 
 |  |  |      * @param rsMap3 | 
 |  |  |      */ | 
 |  |  |     private Map<String, List<Integer>> getMap(HashMap<String, Object> rsMap3,String time) { | 
 |  |  |         HashMap<String, List<Integer>> listMap = new HashMap<>(); | 
 |  |  |         Set<String> strings = rsMap3.keySet(); | 
 |  |  |         ArrayList<Integer> dayList = new ArrayList<>(); | 
 |  |  |         ArrayList<Double> list1 = new ArrayList<>(); | 
 |  |  |         ArrayList<Double> list2 = new ArrayList<>(); | 
 |  |  |         ArrayList<Double> list3 = new ArrayList<>(); | 
 |  |  | 
 |  |  |         ArrayList<Integer> list = new ArrayList<>(); | 
 |  |  |         ArrayList<Integer> listPM = new ArrayList<>(); | 
 |  |  |         ArrayList<Double> AQI = new ArrayList<>(); | 
 |  |  |         ArrayList<Integer> integers = new ArrayList<>(); | 
 |  |  |         ArrayList<Double> pm10List = new ArrayList<>(); | 
 |  |  |  | 
 |  |  |         int count1 = 0; | 
 |  |  |         int count2 = 0; | 
 |  |  |         int count3 = 0; | 
 |  |  | 
 |  |  |         int count10 = 0; | 
 |  |  |         int count11 = 0; | 
 |  |  |         int count12 = 0; | 
 |  |  |         String rsTime = time.substring(0, 4); | 
 |  |  |         integers.add(Integer.parseInt(rsTime)); | 
 |  |  |  | 
 |  |  |         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")) { | 
 |  |  | 
 |  |  |                 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)); | 
 |  |  | 
 |  |  |                 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)); | 
 |  |  | 
 |  |  |                 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)); | 
 |  |  | 
 |  |  |                 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)); | 
 |  |  | 
 |  |  |                 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)); | 
 |  |  | 
 |  |  |                 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)); | 
 |  |  | 
 |  |  |                 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)); | 
 |  |  | 
 |  |  |                 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)); | 
 |  |  | 
 |  |  |                 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)); | 
 |  |  | 
 |  |  |                 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)); | 
 |  |  | 
 |  |  |                 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)); | 
 |  |  | 
 |  |  |                 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)); | 
 |  |  | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         //获取季度pm2.5 | 
 |  |  |         String ju = time.substring(5, 7); | 
 |  |  |         int data = Integer.parseInt(ju); | 
 |  |  | 
 |  |  |             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; | 
 |  |  | 
 |  |  |                 code6++; | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         integers.add(code1+code2); | 
 |  |  |         integers.add(code1); | 
 |  |  |         integers.add(code2); | 
 |  |  | 
 |  |  |         integers.add(code5); | 
 |  |  |         integers.add(code6); | 
 |  |  |  | 
 |  |  |         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 = Math.toIntExact(Math.round(list1.stream().collect(Collectors.averagingDouble(Double::doubleValue)))); | 
 |  |  |             collect1 = (int) AmendUtils.sciCal(list1.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); | 
 |  |  |         } | 
 |  |  |         Integer collect2 = 0; | 
 |  |  |         if (list2.size() > 0) { | 
 |  |  | //            collect2 = Math.toIntExact(Math.round(list2.stream().collect(Collectors.averagingDouble(Double::doubleValue)))); | 
 |  |  |             collect2= (int) AmendUtils.sciCal(list2.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); | 
 |  |  |         } | 
 |  |  |         Integer collect3 = 0; | 
 |  |  |         if (list3.size() > 0) { | 
 |  |  | //            collect3 = Math.toIntExact(Math.round(list3.stream().collect(Collectors.averagingDouble(Double::doubleValue)))); | 
 |  |  |             collect3 = (int) AmendUtils.sciCal(list3.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); | 
 |  |  |         } | 
 |  |  |         Integer collect4 = 0; | 
 |  |  |         if (list4.size() > 0) { | 
 |  |  | //            collect4 = Math.toIntExact(Math.round(list4.stream().collect(Collectors.averagingDouble(Double::doubleValue)))); | 
 |  |  |             collect4 = (int) AmendUtils.sciCal(list4.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); | 
 |  |  |         } | 
 |  |  |         Integer collect5 = 0; | 
 |  |  |         if (list5.size() > 0) { | 
 |  |  | //            collect5 = Math.toIntExact(Math.round(list5.stream().collect(Collectors.averagingDouble(Double::doubleValue)))); | 
 |  |  |             collect5 = (int) AmendUtils.sciCal(list5.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); | 
 |  |  |         } | 
 |  |  |         Integer collect6 = 0; | 
 |  |  |         if (list6.size() > 0) { | 
 |  |  | //            collect6 = Math.toIntExact(Math.round(list6.stream().collect(Collectors.averagingDouble(Double::doubleValue)))); | 
 |  |  |             collect6 = (int) AmendUtils.sciCal(list6.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         Integer collect7 = 0; | 
 |  |  |         if (list7.size() > 0) { | 
 |  |  | //            collect7 = Math.toIntExact(Math.round(list7.stream().collect(Collectors.averagingDouble(Double::doubleValue)))); | 
 |  |  |             collect7 = (int) AmendUtils.sciCal(list7.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); | 
 |  |  |         } | 
 |  |  |         Integer collect8 = 0; | 
 |  |  |         if (list8.size() > 0) { | 
 |  |  | //            collect8 = Math.toIntExact(Math.round(list8.stream().collect(Collectors.averagingDouble(Double::doubleValue)))); | 
 |  |  |             collect8 = (int) AmendUtils.sciCal(list8.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); | 
 |  |  |         } | 
 |  |  |         Integer collect9 = 0; | 
 |  |  |         if (list9.size() > 0) { | 
 |  |  | //            collect9 = Math.toIntExact(Math.round(list9.stream().collect(Collectors.averagingDouble(Double::doubleValue)))); | 
 |  |  |             collect9 = (int) AmendUtils.sciCal(list9.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); | 
 |  |  |         } | 
 |  |  |         Integer collect10 = 0; | 
 |  |  |         if (list10.size() > 0) { | 
 |  |  | //            collect10 = Math.toIntExact(Math.round(list10.stream().collect(Collectors.averagingDouble(Double::doubleValue)))); | 
 |  |  |             collect10 = (int) AmendUtils.sciCal(list10.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); | 
 |  |  |         } | 
 |  |  |         Integer collect11 = 0; | 
 |  |  |         if (list11.size() > 0) { | 
 |  |  | //            collect11 = Math.toIntExact(Math.round(list11.stream().collect(Collectors.averagingDouble(Double::doubleValue)))); | 
 |  |  |             collect11 = (int) AmendUtils.sciCal(list11.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); | 
 |  |  |         } | 
 |  |  |         Integer collect12 = 0; | 
 |  |  |         if (list12.size() > 0) { | 
 |  |  | //            collect12 = Math.toIntExact(Math.round(list12.stream().collect(Collectors.averagingDouble(Double::doubleValue)))); | 
 |  |  |             collect12 = (int) AmendUtils.sciCal(list12.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); | 
 |  |  |         } | 
 |  |  |         //今年的pm2.5累计 | 
 |  |  | //        int resPM25 = Math.toIntExact(Math.round(resList.stream().collect(Collectors.averagingDouble(Double::doubleValue)))); | 
 |  |  |         int resPM25 = (int) AmendUtils.sciCal(resList.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); | 
 |  |  |         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("季度",pmList); | 
 |  |  |         return listMap; | 
 |  |  |         return integers; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  | 
 |  |  |         ArrayList<Integer> list2 = new ArrayList<>(); | 
 |  |  |         ArrayList<Integer> list3 = new ArrayList<>(); | 
 |  |  |         ArrayList<Double> AQI = new ArrayList<>(); | 
 |  |  |         ArrayList<Integer> rsAqi = 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)); | 
 |  |  | 
 |  |  |                 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) { | 
 |  |  | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         list2.add(count); | 
 |  |  |         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++; | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         ArrayList<Integer> rsAqi = getCode(AQI); | 
 |  |  |         rsAqi.add(Integer.parseInt(rsTime)); | 
 |  |  |         rsAqi.add(code1+code2); | 
 |  |  |         rsAqi.add(code1); | 
 |  |  |         rsAqi.add(code2); | 
 |  |  |         rsAqi.add(code3); | 
 |  |  |         rsAqi.add(code4); | 
 |  |  |         rsAqi.add(code5); | 
 |  |  |         rsAqi.add(code6); | 
 |  |  |  | 
 |  |  |         //去年的pm2.5累积 | 
 |  |  | //        int PM2_5 = Math.toIntExact(Math.round(list.stream().collect(Collectors.averagingDouble(Double::doubleValue)))); | 
 |  |  |         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; | 
 |  |  |     } | 
 |  |  | 
 |  |  |  | 
 |  |  |                 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]); | 
 |  |  |  | 
 |  |  |                 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); | 
 |  |  |  | 
 |  |  |                 rsMap2.put(objects[19].toString(), map2); | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |             } | 
 |  |  |  | 
 |  |  | 
 |  |  |                 map1.put("NO2", objects[14]); | 
 |  |  |                 map1.put("CO", objects[15]); | 
 |  |  |                 map1.put("O3", objects[16]); | 
 |  |  |  | 
 |  |  |                 rsMap3.put(objects[10].toString(), map1); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |                 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); | 
 |  |  |                 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); | 
 |  |  | 
 |  |  |                     }else if(s3.contains("H") && s2.contains("H")){ | 
 |  |  |                         break; | 
 |  |  |                     }else { | 
 |  |  | //                        hs.put(set,new BigDecimal((Double.parseDouble(s3)+Double.parseDouble(s2))/2).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue()); | 
 |  |  |                         hs.put(set, AmendUtils.sciCal((Double.parseDouble(s3)+Double.parseDouble(s2))/2,1)); | 
 |  |  |                     } | 
 |  |  |                     continue; | 
 |  |  | 
 |  |  |                 }else if(s3.contains("H") && s2.contains("H")){ | 
 |  |  |                     break; | 
 |  |  |                 }else { | 
 |  |  | //                    hs.put(set,Math.round((Double.parseDouble(s3)+Double.parseDouble(s2))/2)); | 
 |  |  |                     hs.put(set, AmendUtils.sciCal((Double.parseDouble(s3)+Double.parseDouble(s2))/2,0)); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         //获取今年的因子 | 
 |  |  |         Set<String> strings1 = rsMap2.keySet(); | 
 |  |  |         for (String s : strings1) { | 
 |  |  |             Object o = rsMap2.get(s); | 
 |  |  | 
 |  |  |         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; | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     //计算aqi | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 获取去年本月的因子均值 | 
 |  |  |      * @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) { | 
 |  |  | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  | } |