From dcf1385a88fdf517e2cc60b50ea2e0a30e5652ca Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Wed, 02 Dec 2020 15:06:26 +0800
Subject: [PATCH] 更改获取五分钟数据结构BUG

---
 src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java |   95 +++++++++++++++++++----------------------------
 1 files changed, 38 insertions(+), 57 deletions(-)

diff --git a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
index b3056f9..ccd664d 100644
--- a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
@@ -725,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");
@@ -1001,6 +1001,8 @@
 
     @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) {
@@ -1008,65 +1010,44 @@
         } 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);
-        Calendar cal = Calendar.getInstance();
-        int length = time.length();
-        String type = "";
-        if (length == 10) {
-            type = "day";
-        } else if (length == 7) {
-            type = "month";
-        } else if (length == 4) {
-            type = "year";
-        } else if (length == 13) {
-            type = "hour";
-        }
-        parameters.put("type", type);
-        String[] endTimes = timeb.split("-");
-        String dateFormat = "";
-        String beginTime = "";
-        String endTime = "";
-        Integer year = Integer.valueOf(endTimes[0]);
-        int i = 0;
-        if (type.equals("year")) {
-            dateFormat = "yyyy-MM";
-            beginTime = time + "-01";
-            timeb = Integer.valueOf(timeb) + 1 + "";
-            endTime = timeb + "-01";
-            i = Calendar.MONTH;
-        } else if (type.equals("month")) {
-            dateFormat = "yyyy-MM-dd";
-            beginTime = time + "-01";
-            i = Calendar.DAY_OF_MONTH;
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
-            cal.setTime(sdf.parse(timeb));
-            cal.add(Calendar.MONTH, 1);
-            timeb = sdf.format(cal.getTime());
-            endTime = timeb + "-01";
-        } else if (type.equals("day")) {
-            dateFormat = "yyyy-MM-dd HH";
-            beginTime = time + " 00";
-            i = Calendar.HOUR_OF_DAY;
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-            cal.setTime(sdf.parse(timeb));
-            cal.add(Calendar.DAY_OF_MONTH, 1);
-            timeb = sdf.format(cal.getTime());
-            endTime = timeb + " 00";
-        } else if (type.equals("hour")) {
-            dateFormat = "yyyy-MM-dd HH:mm";
-            beginTime = time + ":00:00";
-            i = Calendar.MINUTE;
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH");
-            cal.setTime(sdf.parse(timeb));
-            cal.add(Calendar.HOUR_OF_DAY, 1);
-            timeb = sdf.format(cal.getTime());
-            endTime = timeb + ":00:00";
-        }
+
         SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
-        cal.setTime(sdf.parse(beginTime));
+        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 < sdf.parse(endTime).getTime(); cal.set(i, cal.get(i) + 1), d = cal.getTimeInMillis()) {
+        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);
         }
@@ -1074,7 +1055,7 @@
         List<String> keys = Arrays.asList(sensorKeys);
         parameters.put("sensors", keys);
         parameters.put("sensorKeys", keys);
-        parameters.put("timeb", timeb);
+        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);

--
Gitblit v1.8.0