From e75fc01c1f0920a53e1ee74c2dfd5bab9ac6160a Mon Sep 17 00:00:00 2001 From: jinpengyong <jpy123456> Date: Thu, 01 Feb 2024 10:23:11 +0800 Subject: [PATCH] fix:补充提交 --- screen-api/src/main/java/com/moral/api/service/impl/HnExcelServiceImpl.java | 1220 ++++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 939 insertions(+), 281 deletions(-) diff --git a/screen-api/src/main/java/com/moral/api/service/impl/HnExcelServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/HnExcelServiceImpl.java index b7490fe..d742c7e 100644 --- a/screen-api/src/main/java/com/moral/api/service/impl/HnExcelServiceImpl.java +++ b/screen-api/src/main/java/com/moral/api/service/impl/HnExcelServiceImpl.java @@ -9,7 +9,6 @@ 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; @@ -27,10 +26,11 @@ import com.moral.api.entity.TbExcel; import com.moral.api.mapper.ExcelMapper; import com.moral.api.pojo.bo.ExcelBO; +import com.moral.api.pojo.vo.excel.HnExcelVo; import com.moral.api.pojo.vo.excel.SyExcelVo; import com.moral.api.service.HnExcelService; +import com.moral.api.utils.AqiUtils; import com.moral.api.utils.ExcelUtils; -import com.moral.pojo.AQI; import com.moral.util.AQIUtils; import com.moral.util.AmendUtils; import com.moral.util.DateUtils; @@ -43,12 +43,9 @@ 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 { @@ -71,6 +68,8 @@ 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); @@ -81,6 +80,7 @@ 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); @@ -89,25 +89,30 @@ 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(); @@ -150,6 +155,21 @@ } } } + 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(); @@ -157,17 +177,23 @@ if (s.equals("count")){ ArrayList<String> list1 = new ArrayList<>(); List<Integer> list = stringListMap.get(s); + String season; Integer sum =0; if (data>=1 && data<=3){ sum = list.get(0) + list.get(1) + list.get(2); + season = "���"; }else if (data>=4 &&data<=6){ sum = list.get(3) + list.get(4) + list.get(5); + season = "���"; }else if (data>=7 &&data<=9){ sum = list.get(6) + list.get(7) + list.get(8); + season = "���"; }else { sum = list.get(9) + list.get(10) + list.get(11); + season = "���"; } syExcelVo.setCode5(sum.toString()); + syExcelVo.setSeason(season); for (int i = 0; i < list.size()-1; i++) { if (list.get(i)==0){ list1.add(""); @@ -180,32 +206,34 @@ 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(""); @@ -218,12 +246,14 @@ 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); @@ -234,27 +264,291 @@ } } } - - 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); @@ -268,22 +562,30 @@ 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); @@ -298,16 +600,131 @@ 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<>(); @@ -337,25 +754,25 @@ 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("a34004", 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("a34004", objects[2]); + 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("O3", objects[6]); map.put("AQI", objects[7]); rsMap1.put(objects[0].toString(), map); @@ -368,11 +785,11 @@ { map1.put("time", objects[10]); map1.put("PM10", objects[11]); - map1.put("a34004", objects[12]); + map1.put("PM2_5", objects[12]); 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); } @@ -382,11 +799,11 @@ if (objects.length == 27) { map.put("time", objects[0]); map.put("PM10", objects[1]); - map.put("a34004", objects[2]); + 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("O3", objects[6]); map.put("AQI", objects[7]); rsMap1.put(objects[0].toString(), map); if ( !objects[11].toString().contains("H") @@ -399,53 +816,57 @@ map1.put("time", objects[10]); map1.put("PM10", objects[11]); - map1.put("a34004", objects[12]); + map1.put("PM2_5", objects[12]); 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("a34004", 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��������������� - Map<String, List<Integer>> map = getMap(rsMap3); + Map<String, List<Integer>> map = getMap(rsMap3,time); //������������PM2.5��������������� - Map<String, Integer> map2 = getResult(rsMap2, time); + Map<String, List<Integer>> map2 = getResult(rsMap2, time); List<Integer> list = map.get("count"); - list.add(map2.get("count")); + list.add(map2.get("count").get(0)); List<Integer> list1 = map.get("PM2_5"); - list1.add(map2.get("PM2_5")); + list1.add(map2.get("PM2_5").get(0)); + map.put("������",map2.get("������")); return map; } /** - * ������PM2.5 ��������������� + * ���������������PM2.5 ��������������� * * @param rsMap3 */ - private Map<String, List<Integer>> getMap(HashMap<String, Object> 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<>(); @@ -461,6 +882,9 @@ ArrayList<Double> resList = new ArrayList<>(); ArrayList<Integer> list = new ArrayList<>(); ArrayList<Integer> listPM = new ArrayList<>(); + ArrayList<Double> AQI = new ArrayList<>(); + ArrayList<Double> pm10List = new ArrayList<>(); + int count1 = 0; int count2 = 0; int count3 = 0; @@ -473,7 +897,30 @@ int count10 = 0; int count11 = 0; int count12 = 0; + + Set<String> strings = rsMap3.keySet(); for (String string : strings) { + if (string.equals(time)){ + Object o = rsMap3.get(string); + String s = JSON.toJSONString(o); + JSONObject jsonObject = JSON.parseObject(s); + Object pm25 = jsonObject.get("PM2_5"); + String co = jsonObject.getString("CO"); + String[] split = co.split("\\."); + int PM2_5 = (int) Double.parseDouble(pm25.toString()); + int PM10 = (int) Double.parseDouble(jsonObject.getString("PM10")); + int SO2 = (int) Double.parseDouble(jsonObject.getString("SO2")); + int NO2 = (int) Double.parseDouble(jsonObject.getString("NO2")); + int O3 = (int) Double.parseDouble(jsonObject.getString("O3")); + dayList.add(PM2_5); + dayList.add(PM10); + dayList.add(SO2); + dayList.add(NO2); + dayList.add(O3); + dayList.add(Integer.parseInt(split[0])); + dayList.add(Integer.parseInt(split[1])); + } + String substring = string.substring(5, 7); if (substring.equals("01")) { @@ -481,10 +928,13 @@ String s = JSON.toJSONString(o); Map map = JSON.parseObject(s, Map.class); String aqi = map.get("AQI").toString(); - String pm2_5 = map.get("a34004").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)); - if (Double.parseDouble(aqi) < 100) { + AQI.add(Double.parseDouble(aqi)); + if (Double.parseDouble(aqi) <= 100) { count1++; } } @@ -493,10 +943,13 @@ String s = JSON.toJSONString(o); Map map = JSON.parseObject(s, Map.class); String aqi = map.get("AQI").toString(); - String pm2_5 = map.get("a34004").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)); - if (Double.parseDouble(aqi) < 100) { + AQI.add(Double.parseDouble(aqi)); + if (Double.parseDouble(aqi) <= 100) { count2++; } } @@ -505,10 +958,13 @@ String s = JSON.toJSONString(o); Map map = JSON.parseObject(s, Map.class); String aqi = map.get("AQI").toString(); - String pm2_5 = map.get("a34004").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)); - if (Double.parseDouble(aqi) < 100) { + AQI.add(Double.parseDouble(aqi)); + if (Double.parseDouble(aqi) <= 100) { count3++; } } @@ -516,13 +972,14 @@ Object o = rsMap3.get(string); String s = JSON.toJSONString(o); Map map = JSON.parseObject(s, Map.class); - String aqi = map.get("AQI").toString(); - - String pm2_5 = map.get("a34004").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)); - if (Double.parseDouble(aqi) < 100) { + AQI.add(Double.parseDouble(aqi)); + if (Double.parseDouble(aqi) <= 100) { count4++; } } @@ -531,10 +988,13 @@ String s = JSON.toJSONString(o); Map map = JSON.parseObject(s, Map.class); String aqi = map.get("AQI").toString(); - String pm2_5 = map.get("a34004").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)); - if (Double.parseDouble(aqi) < 100) { + AQI.add(Double.parseDouble(aqi)); + if (Double.parseDouble(aqi) <= 100) { count5++; } } @@ -543,10 +1003,13 @@ String s = JSON.toJSONString(o); Map map = JSON.parseObject(s, Map.class); String aqi = map.get("AQI").toString(); - String pm2_5 = map.get("a34004").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)); - if (Double.parseDouble(aqi) < 100) { + AQI.add(Double.parseDouble(aqi)); + if (Double.parseDouble(aqi) <= 100) { count6++; } } @@ -555,10 +1018,13 @@ String s = JSON.toJSONString(o); Map map = JSON.parseObject(s, Map.class); String aqi = map.get("AQI").toString(); - String pm2_5 = map.get("a34004").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)); - if (Double.parseDouble(aqi) < 100) { + AQI.add(Double.parseDouble(aqi)); + if (Double.parseDouble(aqi) <= 100) { count7++; } } @@ -567,10 +1033,13 @@ String s = JSON.toJSONString(o); Map map = JSON.parseObject(s, Map.class); String aqi = map.get("AQI").toString(); - String pm2_5 = map.get("a34004").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)); - if (Double.parseDouble(aqi) < 100) { + AQI.add(Double.parseDouble(aqi)); + if (Double.parseDouble(aqi) <= 100) { count8++; } } @@ -579,10 +1048,13 @@ String s = JSON.toJSONString(o); Map map = JSON.parseObject(s, Map.class); String aqi = map.get("AQI").toString(); - String pm2_5 = map.get("a34004").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)); - if (Double.parseDouble(aqi) < 100) { + AQI.add(Double.parseDouble(aqi)); + if (Double.parseDouble(aqi) <= 100) { count9++; } } @@ -591,10 +1063,13 @@ String s = JSON.toJSONString(o); Map map = JSON.parseObject(s, Map.class); String aqi = map.get("AQI").toString(); - String pm2_5 = map.get("a34004").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)); - if (Double.parseDouble(aqi) < 100) { + AQI.add(Double.parseDouble(aqi)); + if (Double.parseDouble(aqi) <= 100) { count10++; } } @@ -603,10 +1078,13 @@ String s = JSON.toJSONString(o); Map map = JSON.parseObject(s, Map.class); String aqi = map.get("AQI").toString(); - String pm2_5 = map.get("a34004").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)); - if (Double.parseDouble(aqi) < 100) { + AQI.add(Double.parseDouble(aqi)); + if (Double.parseDouble(aqi) <= 100) { count11++; } } @@ -615,15 +1093,52 @@ String s = JSON.toJSONString(o); Map map = JSON.parseObject(s, Map.class); String aqi = map.get("AQI").toString(); - String pm2_5 = map.get("a34004").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)); - if (Double.parseDouble(aqi) < 100) { + AQI.add(Double.parseDouble(aqi)); + if (Double.parseDouble(aqi) <= 100) { count12++; } } } + //������������pm2.5 + String ju = time.substring(5, 7); + int data = Integer.parseInt(ju); + ArrayList<Double> rsData = new ArrayList<>(); + if (data>=1 && data<=3){ + rsData.addAll(list1); + rsData.addAll(list2); + rsData.addAll(list3); + }else if (data>=4 &&data<=6){ + rsData.addAll(list4); + rsData.addAll(list5); + rsData.addAll(list6); + }else if (data>=7 &&data<=9){ + rsData.addAll(list7); + rsData.addAll(list8); + rsData.addAll(list9); + }else { + rsData.addAll(list10); + rsData.addAll(list11); + rsData.addAll(list12); + } + ArrayList<Integer> pmList = new ArrayList<>(); + if (rsData.size()>0){ + int pm = (int) AmendUtils.sciCal(rsData.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); + pmList.add(pm); + } + + + //������������������ + ArrayList<Integer> integers = getCode(AQI); + String rsTime = time.substring(0, 4); + integers.add(Integer.parseInt(rsTime)); + + list.add(count1); list.add(count2); list.add(count3); @@ -638,59 +1153,76 @@ 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); + 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); @@ -704,8 +1236,59 @@ listPM.add(collect11); listPM.add(collect12); listPM.add(resPM25); - listMap.put("PM2_5", listPM); + listMap.put("PM2_5",listPM); + listMap.put("������",integers); + listMap.put("day",dayList); + listMap.put("������",pmList); + listMap.put("PM10",list13); return listMap; + } + + /** + * ������������������ + * @param AQI + * @return + */ + private ArrayList<Integer> getCode(ArrayList<Double> AQI) { + ArrayList<Integer> integers = new ArrayList<>(); + int code1 =0; + int code2 =0; + int code3 =0; + int code4 =0; + int code5 =0; + int code6 =0; + int i; + for (double aDouble : AQI) { + i=(int)aDouble; + String s = AQIUtils.classOfPollutionByAqi(i); + if (s.equals("���")){ + code1++; + } + if (s.equals("���")){ + code2++; + } + if (s.equals("������������")){ + code3++; + } + if (s.equals("������������")){ + code4++; + } + if (s.equals("������������")){ + code5++; + } + if (s.equals("������������")){ + code6++; + } + } + integers.add(code1+code2); + integers.add(code1); + integers.add(code2); + integers.add(code3); + integers.add(code4); + integers.add(code5); + integers.add(code6); + + return integers; } /** @@ -713,14 +1296,22 @@ * * @param rsMap2 */ - private Map<String, Integer> getResult(HashMap<String, Object> rsMap2, String time) throws ParseException { - HashMap<String, Integer> rsMap = new HashMap<>(); + private Map<String, List<Integer>> getResult(HashMap<String, Object> rsMap2, String time) throws ParseException { + HashMap<String, List<Integer>> rsMap = new HashMap<>(); ArrayList<Double> list = new ArrayList<>(); + ArrayList<Integer> list2 = new ArrayList<>(); + ArrayList<Integer> list3 = new ArrayList<>(); + ArrayList<Double> AQI = new ArrayList<>(); + ArrayList<Double> list4 = new ArrayList<>(); + ArrayList<Integer> pm10List = new ArrayList<>(); SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd"); Calendar instance = Calendar.getInstance(); instance.setTime(sdf1.parse(time)); instance.add(Calendar.YEAR, -1); Date date = instance.getTime(); + //��������� + String format = sdf1.format(date); + String rsTime = format.substring(0, 4); //��������� long time1 = date.getTime(); int count = 0; @@ -733,17 +1324,29 @@ String s = JSON.toJSONString(o); Map map = JSON.parseObject(s, Map.class); String aqi = map.get("AQI").toString(); - String pm2_5 = map.get("a34004").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)); - if (Double.parseDouble(aqi) < 100) { + AQI.add(Double.parseDouble(aqi)); + if (Double.parseDouble(aqi) <= 100) { count++; } } } + list2.add(count); + ArrayList<Integer> rsAqi = getCode(AQI); + rsAqi.add(Integer.parseInt(rsTime)); + //���������pm2.5������ - int PM2_5 = Math.toIntExact(Math.round(list.stream().collect(Collectors.averagingDouble(Double::doubleValue)))); - rsMap.put("count", count); - rsMap.put("PM2_5", PM2_5); + int PM2_5 = (int) AmendUtils.sciCal(list.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); + int PM10 = (int) AmendUtils.sciCal(list4.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0); + list3.add(PM2_5); + pm10List.add(PM10); + rsMap.put("count", list2); + rsMap.put("PM2_5", list3); + rsMap.put("������",rsAqi); + rsMap.put("PM10",pm10List); return rsMap; } @@ -790,67 +1393,41 @@ HashMap<String, Object> map1 = new HashMap<>(); HashMap<String, Object> map2 = new HashMap<>(); if (objects.length == 18) { - if ( !objects[11].toString().contains("H") - && !objects[12].toString().contains("H") - && !objects[13].toString().contains("H") - && !objects[14].toString().contains("H") - && !objects[15].toString().contains("H") - && !objects[16].toString().contains("H") - ) { -// map1.put("time", objects[10]); - //PM10 - map1.put("a34002", objects[11]); - //PM2_5 - map1.put("a34004", objects[12]); - //SO2 - map1.put("a21026", objects[13]); - //NO2 - map1.put("a21004", objects[14]); - //CO - map1.put("a21005", objects[15]); - //O3_8H - map1.put("a05024", objects[16]); - rsMap1.put(objects[10].toString(), map1); - } + map1.put("PM10", objects[11]); + map1.put("PM2_5", objects[12]); + map1.put("SO2", objects[13]); + map1.put("NO2", objects[14]); + map1.put("CO", objects[15]); + map1.put("O3", objects[16]); + + rsMap1.put(objects[10].toString(), map1); } if (objects.length == 27) { - if ( !objects[11].toString().contains("H") - && !objects[12].toString().contains("H") - && !objects[13].toString().contains("H") - && !objects[14].toString().contains("H") - && !objects[15].toString().contains("H") - && !objects[16].toString().contains("H") - ) { - map1.put("a34002", objects[11]); - map1.put("a34004", objects[12]); - map1.put("a21026", objects[13]); - map1.put("a21004", objects[14]); - map1.put("a21005", objects[15]); - map1.put("a05024", objects[16]); + map1.put("PM10", objects[11]); + map1.put("PM2_5", objects[12]); + map1.put("SO2", objects[13]); + map1.put("NO2", objects[14]); + map1.put("CO", objects[15]); + map1.put("O3", objects[16]); - rsMap1.put(objects[10].toString(), map1); - } - if ( - !objects[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("a34002", objects[20]); - map2.put("a34004", objects[21]); - map2.put("a21026", objects[22]); - map2.put("a21004", objects[23]); - map2.put("a21005", objects[24]); - map2.put("a05024", objects[25]); + rsMap1.put(objects[10].toString(), map1); + + if (objects[19]!=null){ + map2.put("PM10", objects[20]); + map2.put("PM2_5", objects[21]); + map2.put("SO2", objects[22]); + map2.put("NO2", objects[23]); + map2.put("CO", objects[24]); + map2.put("O3", objects[25]); rsMap2.put(objects[19].toString(), map2); + } + } } @@ -880,170 +1457,251 @@ HashMap<String, Object> map1 = new HashMap<>(); HashMap<String, Object> map2 = new HashMap<>(); if (objects.length == 18) { - if ( !objects[11].toString().contains("H") - && !objects[12].toString().contains("H") - && !objects[13].toString().contains("H") - && !objects[14].toString().contains("H") - && !objects[15].toString().contains("H") - && !objects[16].toString().contains("H") - ) { -// map1.put("time", objects[10]); - map1.put("a34002", objects[11]); - map1.put("a34004", objects[12]); - map1.put("a21026", objects[13]); - map1.put("a21004", objects[14]); - map1.put("a21005", objects[15]); - map1.put("a05024", objects[16]); - rsMap3.put(objects[10].toString(), map1); - } + map1.put("PM10", objects[11]); + map1.put("PM2_5", objects[12]); + map1.put("SO2", objects[13]); + map1.put("NO2", objects[14]); + map1.put("CO", objects[15]); + map1.put("O3", objects[16]); + + rsMap3.put(objects[10].toString(), map1); + } if (objects.length == 27) { - if ( !objects[11].toString().contains("H") - && !objects[12].toString().contains("H") - && !objects[13].toString().contains("H") - && !objects[14].toString().contains("H") - && !objects[15].toString().contains("H") - && !objects[16].toString().contains("H")) - { - map1.put("a34002", objects[11]); - map1.put("a34004", objects[12]); - map1.put("a21026", objects[13]); - map1.put("a21004", objects[14]); - map1.put("a21005", objects[15]); - map1.put("a05024", objects[16]); - rsMap3.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("a34002", objects[20]); - map2.put("a34004", objects[21]); - map2.put("a21026", objects[22]); - map2.put("a21004", objects[23]); - map2.put("a21005", objects[24]); - map2.put("a05024", objects[25]); + map1.put("PM10", objects[11]); + map1.put("PM2_5", objects[12]); + map1.put("SO2", objects[13]); + map1.put("NO2", objects[14]); + map1.put("CO", objects[15]); + map1.put("O3", objects[16]); + rsMap3.put(objects[10].toString(), map1); + + if (objects[19]!=null){ + map2.put("PM10", objects[20]); + map2.put("PM2_5", objects[21]); + map2.put("SO2", objects[22]); + map2.put("NO2", objects[23]); + map2.put("CO", objects[24]); + map2.put("O3", objects[25]); rsMap4.put(objects[19].toString(), map2); } + } } + //��������������������� Set<String> strings = rsMap1.keySet(); for (String string : strings) { Object o = rsMap1.get(string); String s = JSON.toJSONString(o); Map map = JSON.parseObject(s, Map.class); - if (!rsMap3.containsKey(string)){ - hnMap1.put(string,map); - continue; - } + Object o1 = rsMap3.get(string); String s1 = JSON.toJSONString(o1); Map map1 = JSON.parseObject(s1, Map.class); Set sets = map1.keySet(); HashMap<Object, Object> hs = new HashMap<>(); for (Object set : sets) { - if (set.toString().equals("a21005")){ + if (set.toString().equals("CO")){ String s3 = map1.get(set).toString(); String s2 = map.get(set).toString(); - hs.put(set,new BigDecimal((Double.parseDouble(s3)+Double.parseDouble(s2))/2).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue()); + if (s3.contains("H") && !s2.contains("H")){ + hs.put(set,Double.parseDouble(s2)); + }else if(!s3.contains("H") && s2.contains("H")){ + hs.put(set,Double.parseDouble(s3)); + }else if(s3.contains("H") && s2.contains("H")){ + break; + }else { + hs.put(set, AmendUtils.sciCal((Double.parseDouble(s3)+Double.parseDouble(s2))/2,1)); + } continue; } String s3 = map1.get(set).toString(); String s2 = map.get(set).toString(); - hs.put(set,Math.round((Double.parseDouble(s3)+Double.parseDouble(s2))/2)); + if (s3.contains("H") && !s2.contains("H")){ + hs.put(set,Double.parseDouble(s2)); + }else if(!s3.contains("H") && s2.contains("H")){ + hs.put(set,Double.parseDouble(s3)); + }else if(s3.contains("H") && s2.contains("H")){ + break; + }else { + hs.put(set, AmendUtils.sciCal((Double.parseDouble(s3)+Double.parseDouble(s2))/2,0)); + } } - hnMap1.put(string,hs); + if (hs.size()==6){ + hnMap1.put(string,hs); + } + } - Set<String> strings2 = rsMap3.keySet(); - for (String s : strings2) { - Object o = rsMap3.get(s); - String s1 = JSON.toJSONString(o); - Map map = JSON.parseObject(s1, Map.class); - if (!hnMap1.containsKey(s)){ - hnMap1.put(s,map); - } - } - + //��������������������� Set<String> strings1 = rsMap2.keySet(); for (String s : strings1) { Object o = rsMap2.get(s); String s1 = JSON.toJSONString(o); Map map = JSON.parseObject(s1, Map.class); - if (!rsMap4.containsKey(s)){ - hnMap2.put(s,map); - continue; - } Object o1 = rsMap4.get(s); String s2 = JSON.toJSONString(o1); Map map1 = JSON.parseObject(s2, Map.class); Set sets = map1.keySet(); HashMap<Object, Object> hs = new HashMap<>(); for (Object set : sets) { - if (set.toString().equals("a21005")){ + if (set.toString().equals("CO")){ String s3 = map1.get(set).toString(); String s4 = map.get(set).toString(); - hs.put(set,new BigDecimal((Double.parseDouble(s3)+Double.parseDouble(s4))/2).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue()); + if (s3.contains("H") && !s4.contains("H")){ + hs.put(set,Double.parseDouble(s4)); + }else if(!s3.contains("H") && s4.contains("H")){ + hs.put(set,Double.parseDouble(s3)); + }else if(s3.contains("H") && s4.contains("H")){ + break; + }else { + hs.put(set, AmendUtils.sciCal((Double.parseDouble(s3)+Double.parseDouble(s4))/2,1)); + } continue; } String s3 = map1.get(set).toString(); String s4 = map.get(set).toString(); - hs.put(set,Math.round((Double.parseDouble(s3)+Double.parseDouble(s4))/2)); + if (s3.contains("H") && !s4.contains("H")){ + hs.put(set,Double.parseDouble(s4)); + }else if(!s3.contains("H") && s4.contains("H")){ + hs.put(set,Double.parseDouble(s3)); + }else if(s3.contains("H") && s4.contains("H")){ + break; + }else { + hs.put(set, AmendUtils.sciCal((Double.parseDouble(s3)+Double.parseDouble(s4))/2,0)); + } } - hnMap2.put(s,hs); + if (hs.size()==6){ + hnMap2.put(s,hs); + } + } - Set<String> strings3 = rsMap4.keySet(); - for (String s : strings3) { - Object o = rsMap4.get(s); - String s1 = JSON.toJSONString(o); - Map map = JSON.parseObject(s1, Map.class); - if (!rsMap2.containsKey(s1)){ - hnMap2.put(s,map); - } - } + //���������������aqi getHnMap(hnMap2); //���������������aqi getHnMap(hnMap1); - // - Map<String, List<Integer>> map = getMap(hnMap2); - - Map<String, Integer> map2 = getResult(hnMap1, time); - + //���������������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")); + list.add(map2.get("count").get(0)); List<Integer> list1 = map.get("PM2_5"); - list1.add(map2.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) { Object o = hnMap2.get(s); String s1 = JSON.toJSONString(o); Map rs = JSON.parseObject(s1, Map.class); - AQI aqi = AQIUtils.dailyAQI(rs); + Map aqi1 = AqiUtils.getAqi(rs); JSONObject jsonObject = JSON.parseObject(s1); - jsonObject.put("AQI",aqi.getAQIValue()); + jsonObject.put("AQI",aqi1.get("AQI")); String s2 = JSON.toJSONString(jsonObject); Map map = JSON.parseObject(s2, Map.class); hnMap2.put(s,map); } } + } -- Gitblit v1.8.0