| | |
| | | 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 (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); |
| | | Integer sum =0; |
| | | if (data>=1 && data<=3){ |
| | | sum = list.get(0) + list.get(1) + list.get(2); |
| | | }else if (data>=4 &&data<=6){ |
| | | sum = list.get(3) + list.get(4) + list.get(5); |
| | | }else if (data>=7 &&data<=9){ |
| | | sum = list.get(6) + list.get(7) + list.get(8); |
| | | }else { |
| | | sum = list.get(9) + list.get(10) + list.get(11); |
| | | } |
| | | |
| | | Integer round = Math.round(sum / 3); |
| | | syExcelVo.setCode6(round.toString()); |
| | | for (int i = 0; i < list.size()-1; i++) { |
| | | if (list.get(i)==0){ |
| | | list1.add(""); |
| | |
| | | |
| | | double i1 = AmendUtils.sciCal((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(); |
| | | |
| | | 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) { |
| | | 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); |
| | | 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; |
| | |
| | | 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); |
| | | 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); |
| | | 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); |
| | | 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) { |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | } |