| | |
| | | import java.text.SimpleDateFormat;
|
| | | import java.time.LocalDateTime;
|
| | | import java.time.format.DateTimeFormatter;
|
| | | import java.util.ArrayList;
|
| | | import java.util.Arrays;
|
| | | import java.util.Collection;
|
| | | import java.util.Date;
|
| | | import java.util.HashMap;
|
| | | import java.util.LinkedHashMap;
|
| | | import java.util.List;
|
| | | import java.util.Map;
|
| | | import java.util.Optional;
|
| | | import java.util.*; |
| | | import java.util.stream.Collectors;
|
| | |
|
| | | import javax.annotation.Resource;
|
| | |
| | | return new ResultBean<List<Map<String, Object>>>(list);
|
| | | }
|
| | |
|
| | | @GetMapping("report_avg_AreaData") |
| | | @ApiOperation(value = "获取国控因子与监测因子平均值", notes = "获取国控因子与监测因子平均值") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "monitorPoint", value = "监控站id", required = true, paramType = "query", dataType = "String"), |
| | | @ApiImplicitParam(name = "mac", value = "设备mac", required = false, paramType = "query", dataType = "String"), |
| | | @ApiImplicitParam(name = "areaCode", value = "地区代码", required = true, paramType = "query", dataType = "String"), |
| | | @ApiImplicitParam(name = "sensorKey", value = "传感器key", required = true, paramType = "query", dataType = "String"), |
| | | @ApiImplicitParam(name = "time", value = "时间,月份(格式:2018-03)", required = true, paramType = "query", dataType = "String"),}) |
| | | public ResultBean<List<Map<String, Object>>> getAreaAvgDataByAreaCode(HttpServletRequest request) |
| | | throws Exception { |
| | | Map<String, Object> parameters = getParametersStartingWith(request, null); |
| | | ParameterUtils.getTimeType4Time(parameters); |
| | | parameters.put("monitorPointId", parameters.remove("monitorPoint")); |
| | | parameters.put("areaCode", parameters.remove("areaCode")); |
| | | String[] sensorKeys = parameters.remove("sensorKey").toString().split(","); |
| | | String s=sensorKeys[0]; |
| | | parameters.put("sensors", Arrays.asList(sensorKeys)); |
| | | parameters.put("sensors2", s); |
| | | List<Map<String, Object>> monitorList = historyMinutelyService.getMonitorPointOrDeviceAvgData(parameters); |
| | | for (Map<String, Object> monitorMap : monitorList) { |
| | | String time = monitorMap.get("time").toString(); |
| | | time = time.substring(time.length() - 2); |
| | | monitorMap.put("time", Integer.valueOf(time)); |
| | | } |
| | | Integer maxTime = 0; |
| | | Integer max1 = 0; |
| | | if (monitorList.size() != 0) { |
| | | Map<String, Object> monitorMap = monitorList.get(monitorList.size() - 1); |
| | | max1 = Integer.valueOf(monitorMap.get("time").toString()); |
| | | } else { |
| | | max1 = 0; |
| | | } |
| | | String sensorKey1 = s; |
| | | switch (s) { |
| | | case "e1": |
| | | sensorKey1 = "PM2_5"; |
| | | break; |
| | | case "e2": |
| | | sensorKey1 = "PM10"; |
| | | break; |
| | | case "e10": |
| | | sensorKey1 = "CO"; |
| | | break; |
| | | case "e11": |
| | | sensorKey1 = "SO2"; |
| | | break; |
| | | case "e15": |
| | | sensorKey1 = "O3"; |
| | | break; |
| | | case "e16": |
| | | sensorKey1 = "NO2"; |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | |
| | | parameters.put("sensors1", sensorKey1); |
| | | |
| | | List<Map<String, Object>> areaList = historyMinutelyService.getAreaAvgDataByAreaCode(parameters); |
| | | if (areaList.isEmpty()) { |
| | | Integer areaCode = Integer.valueOf(request.getParameter("areaCode")); |
| | | areaCode = hangzhouAqiService.queryCityCode(areaCode); |
| | | parameters.remove("areaCode"); |
| | | parameters.put("areaCode", String.valueOf(areaCode)); |
| | | areaList = historyMinutelyService.getAreaAvgDataByAreaCode(parameters); |
| | | } |
| | | |
| | | for (Map<String, Object> areaMap : areaList) { |
| | | String time = areaMap.get("time").toString(); |
| | | time = time.substring(time.length() - 2); |
| | | areaMap.put("time", Integer.valueOf(time)); |
| | | } |
| | | |
| | | Integer max = 0; |
| | | if (areaList.size() != 0) { |
| | | Map<String, Object> areaMap = areaList.get(areaList.size() - 1); |
| | | max = Integer.valueOf(areaMap.get("time").toString()); |
| | | } else { |
| | | max = 0; |
| | | } |
| | | |
| | | if (max1 >= max) { |
| | | maxTime = max1; |
| | | } else { |
| | | maxTime = max; |
| | | } |
| | | |
| | | ArrayList<Map<String, Object>> resultList = new ArrayList<>(); |
| | | |
| | | for (int i = 0; i <= maxTime; i++) { |
| | | resultList.add(null); |
| | | } |
| | | |
| | | for (Map<String, Object> areaMap : areaList) { |
| | | Integer time = Integer.valueOf(areaMap.get("time").toString()); |
| | | resultList.set(time, areaMap); |
| | | } |
| | | |
| | | for (Map<String, Object> resultMap : resultList) { |
| | | for (Map<String, Object> monitorMap : monitorList) { |
| | | ArrayList<String> values = new ArrayList<>(); |
| | | String monitorTime = monitorMap.get("time").toString(); |
| | | if (resultMap != null) { |
| | | String resultTime = resultMap.get("time").toString(); |
| | | if (resultTime.equals(monitorTime)) { |
| | | String value = resultMap.remove(s).toString(); |
| | | String value1 = monitorMap.remove(s).toString(); |
| | | values.add(value); |
| | | values.add(value1); |
| | | resultMap.put("values", values); |
| | | } |
| | | } else { |
| | | String value1 = monitorMap.get(s).toString(); |
| | | values.add(null); |
| | | values.add(value1); |
| | | } |
| | | } |
| | | } |
| | | |
| | | resultList.removeAll(Collections.singleton(null)); |
| | | |
| | | for (Map<String, Object> resultMap : resultList) { |
| | | if (resultMap.containsKey(s)) { |
| | | ArrayList<String> values = new ArrayList<>(); |
| | | values.add(resultMap.remove(s).toString()); |
| | | values.add(null); |
| | | resultMap.put("values", values); |
| | | } |
| | | } |
| | | |
| | | return new ResultBean<List<Map<String, Object>>>(resultList); |
| | | |
| | | } |
| | | |
| | | @GetMapping("getmpoint-byid")
|
| | | @ApiOperation(value = "获取监测站数据", notes = "获取监测站数据,包含名称、地址、坐标等详细信息")
|
| | | @ApiImplicitParams(value = {
|