From 76772ff7d6217fd4d28973d3169fea74bb26f1e8 Mon Sep 17 00:00:00 2001 From: jinpengyong <jpy123456> Date: Tue, 24 Nov 2020 14:36:06 +0800 Subject: [PATCH] PM2.5,PM10预测和实测对比 --- src/main/java/com/moral/service/impl/WeatherServiceImpl.java | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 52 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/moral/service/impl/WeatherServiceImpl.java b/src/main/java/com/moral/service/impl/WeatherServiceImpl.java index b584f82..7ca14f4 100644 --- a/src/main/java/com/moral/service/impl/WeatherServiceImpl.java +++ b/src/main/java/com/moral/service/impl/WeatherServiceImpl.java @@ -184,6 +184,50 @@ @Override public List<Map<String, Object>> getForecastAndReal(Map<String, Object> parameters) throws ParseException { + ArrayList<String> sensorKeys = (ArrayList<String>) parameters.get("sensorKeys"); + List<Map<String, Object>> resultList = new ArrayList<>(); + for (int i = 0; i < 24; i++) { + Map<String, Object> map = new HashMap<>(); + List<String> arrayList = new ArrayList<>(); + map.put("values", arrayList); + map.put("time", i + 1); + resultList.add(map); + } + + for (String sensorKey : sensorKeys) { + parameters.put("sensorKey", sensorKey); + List<Map<String, Object>> list = forecastAndReal(parameters); + for (Map<String, Object> map : list) { + Object time = map.get("time"); + ArrayList<String> values = (ArrayList<String>) map.get("values"); + for (Map<String, Object> resultMap : resultList) { + if (time.equals(resultMap.get("time"))) { + ArrayList<String> resultValues = (ArrayList<String>) resultMap.get("values"); + resultValues.addAll(values); + resultMap.put("values", resultValues); + } + } + } + } + return resultList; + } + + public List<Map<String, Object>> forecastAndReal(Map<String, Object> parameters) throws ParseException { + Object sensorKey = parameters.remove("sensorKey"); + String sensor1; + String sensor2; + if ("e1".equals(sensorKey)) { + sensor1 = "PM25C"; + sensor2 = "PM2_5"; + } else if ("e2".equals(sensorKey)) { + sensor1 = "PM10C"; + sensor2 = "PM10"; + } else { + sensor1 = "O3C"; + sensor2 = "O3"; + } + parameters.put("sensor1", sensor1); + parameters.put("sensor2", sensor2); parameters.put("typeFormat", "%Y-%m-%d %H:%i:%s"); String monitorPointId = parameters.get("monitorPointId").toString(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -229,8 +273,8 @@ forecastList = forecastWeatherMapper.getForecastHour(parameters); } for (Map<String, Object> map : aqiList) { - int s = (int)Double.parseDouble(map.get("O3").toString().replace("\"", "")); - map.put("O3", String.valueOf(s)); + int s = (int) Double.parseDouble(map.get(sensor2).toString().replace("\"", "")); + map.put(sensor2, String.valueOf(s)); } List<Map<String, Object>> resultList = new ArrayList<>(); @@ -246,7 +290,7 @@ } map.put("time", Integer.valueOf(hour)); values.add(""); - values.add(aqiMap.get("O3").toString()); + values.add(aqiMap.get(sensor2).toString()); map.put("values", values); resultList.add(map); } @@ -260,8 +304,8 @@ hour = "24"; } map.put("time", Integer.valueOf(hour)); - if (forecastMap.get("O3") != null) { - values.add(forecastMap.get("O3").toString().replace("\"", "")); + if (forecastMap.get(sensor2) != null) { + values.add(forecastMap.get(sensor2).toString().replace("\"", "")); } else { values.add(""); } @@ -278,14 +322,14 @@ hour = "24"; } map.put("time", Integer.valueOf(hour)); - if (forecastMap.get("O3") != null) { - values.add(forecastMap.get("O3").toString().replace("\"", "")); + if (forecastMap.get(sensor2) != null) { + values.add(forecastMap.get(sensor2).toString().replace("\"", "")); } else { values.add(""); } for (Map<String, Object> aqiMap : aqiList) { if (forecastMap.get("time").equals(aqiMap.get("time"))) { - values.add(aqiMap.get("O3").toString()); + values.add(aqiMap.get(sensor2).toString()); } } map.put("values", values); -- Gitblit v1.8.0