From 8beab91730f3e3cd6b53e4d498f763ff9dc65ef5 Mon Sep 17 00:00:00 2001 From: kaiyu <404897439@qq.com> Date: Wed, 18 Nov 2020 14:16:55 +0800 Subject: [PATCH] 修改污染溯源接口,从history表中获取改为从history天表获取 --- src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java | 104 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 96 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java index 4b8c103..ccd664d 100644 --- a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java +++ b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java @@ -105,14 +105,7 @@ @Resource private MonitorPointMapper monitorPointMapper; - @Resource - HistoryFiveMinutelyMapper historyFiveMinutelyMapper; - @Override - public List<Map<String, Object>> getFiveMinutesDataByMacsAndTime(Map<String, Object> parameters) { - ValidateUtil.notNull(parameters,"���������������������������������"); - return historyFiveMinutelyMapper.getFiveMinutesDataByMacsAndTime(parameters); - } @Override public Map<String, Object> getDayAQIByDevice(Map<String, Object> parameters) { @@ -732,7 +725,7 @@ } parameters.put("timeList", timeList); } else if ("day".equals(parameters.get("type"))) { - String time = parameters.get("time") + "T00:00:00"; + String time = parameters.get("time") + "T01:00:00"; LocalDateTime value = LocalDateTime.parse(time); LocalDateTime end = value.plusHours(23); parameters.put("timeUnits", "hourly"); @@ -1005,4 +998,99 @@ } return list; } + + @Override + public List<Map<String, Object>> getAllDeviceDataToExcel(Map<String, Object> parameters) throws Exception { + Calendar cal = Calendar.getInstance(); + int length = ((String) parameters.get("startTime")).split("-").length; + String time = parameters.remove("startTime").toString(); + String timeb; + if (parameters.get("endTime") == null) { + timeb = time; + } else { + timeb = parameters.remove("endTime").toString(); + } + String dateFormat = ""; + String typeFormat = ""; + String timeUnits = "daily"; + int i = 0; + if (length == 1) { + dateFormat = "yyyy"; + typeFormat = "%Y"; + i = Calendar.YEAR; + } else if (length == 2) { + dateFormat = "yyyy-MM"; + typeFormat = "%Y-%m"; + i = Calendar.MONTH; + } else if (length == 3) { + dateFormat = "yyyy-MM-dd"; + typeFormat = "%Y-%m-%d"; + i = Calendar.DAY_OF_MONTH; + } else if (length == 4) { + dateFormat = "yyyy-MM-dd HH"; + typeFormat = "%Y-%m-%d %H"; + timeUnits = "hourly"; + i = Calendar.HOUR_OF_DAY; + time = time.substring(0, 10) + " " + time.substring(11, 13); + timeb = timeb.substring(0, 10) + " " + timeb.substring(11, 13); + } + parameters.put("time", time); + parameters.put("timeb", timeb); + + SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); + cal.setTime(sdf.parse(timeb)); + cal.add(i, 1); + Date endTime = cal.getTime(); + parameters.put("format", dateFormat); + parameters.put("typeFormat", typeFormat); + parameters.put("timeUnits", timeUnits); + parameters.put("field", i); + cal.setTime(sdf.parse(time)); + List<String> times = new ArrayList<>(); + for (long d = cal.getTimeInMillis(); d < endTime.getTime(); cal.set(i, cal.get(i) + 1), d = cal.getTimeInMillis()) { + String format = sdf.format(d); + times.add(format); + } + String[] sensorKeys = parameters.get("sensorKey").toString().split(","); + List<String> keys = Arrays.asList(sensorKeys); + parameters.put("sensors", keys); + parameters.put("sensorKeys", keys); + parameters.put("timeb", sdf.format(endTime)); + int mpId = Integer.valueOf(parameters.get("monitorPoint").toString()); + String monitorPointName = monitorPointMapper.getMonitorName(mpId); + List<Map<String, Object>> devices = deviceMapper.getDevicesByMpId(mpId); + List<Map<String, Object>> resultList = new ArrayList<>(); + for (Map<String, Object> map : devices) { + String mac = map.get("mac").toString(); + parameters.put("mac", mac); + String name = map.get("name").toString(); + List<Map<String, Object>> data = getMonitorPointOrDeviceAvgData(parameters); + for (String sensorKey : keys) { + Map<String, Object> sensor = sensorMapper.getSensorBySensorKey(sensorKey); + if (sensor == null) { + continue; + } + String description = sensor.get("description").toString(); + String unit = sensor.get("unit").toString(); + Map<String, Object> hashMap = new LinkedHashMap<>(); + for (String t : times) { + hashMap.put("monitorPointName", monitorPointName); + hashMap.put("name", name); + hashMap.put("sensor", description + "(" + unit + ")"); + hashMap.put(t, ""); + } + if (data.size() != 0) { + for (Map<String, Object> dataMap : data) { + String t = dataMap.get("time").toString(); + if (dataMap.get(sensorKey) != null) { + String value = dataMap.get(sensorKey).toString(); + hashMap.put(t, value); + } + } + } + resultList.add(hashMap); + } + } + return resultList; + } } -- Gitblit v1.8.0