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