From 4f879df01e855d436c65e1fbdc74f64ce47c901b Mon Sep 17 00:00:00 2001
From: ZhuDongming <773644075@qq.com>
Date: Thu, 30 Apr 2020 16:49:15 +0800
Subject: [PATCH] update小时查询表时判断

---
 src/main/java/com/moral/mapper/HistoryMinutelyMapper.java            |   30 +++++++-------
 src/main/resources/mapper/HistoryMinutelyMapper.xml                  |    2 
 src/main/java/com/moral/controller/ReportController.java             |    9 +++-
 src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java |   38 ++++++++++++++++++
 4 files changed, 59 insertions(+), 20 deletions(-)

diff --git a/src/main/java/com/moral/controller/ReportController.java b/src/main/java/com/moral/controller/ReportController.java
index 4a5b678..8e0f4ef 100644
--- a/src/main/java/com/moral/controller/ReportController.java
+++ b/src/main/java/com/moral/controller/ReportController.java
@@ -2,7 +2,12 @@
 
 import java.io.OutputStream;
 import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
 
 import javax.annotation.Resource;
 import javax.servlet.ServletOutputStream;
@@ -10,7 +15,6 @@
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang.StringUtils;
 import org.springframework.util.ObjectUtils;
 import org.springframework.web.bind.annotation.CrossOrigin;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -104,7 +108,6 @@
 
         String type = parameters.get("type").toString();
         String time = parameters.get("time").toString();
-        System.out.println(parameters);
         String timeb = "";
         if (parameters.get("timeb") == null) {
             timeb = parameters.get("time").toString();
diff --git a/src/main/java/com/moral/mapper/HistoryMinutelyMapper.java b/src/main/java/com/moral/mapper/HistoryMinutelyMapper.java
index 12ba243..ca530b5 100644
--- a/src/main/java/com/moral/mapper/HistoryMinutelyMapper.java
+++ b/src/main/java/com/moral/mapper/HistoryMinutelyMapper.java
@@ -10,27 +10,27 @@
 
 public interface HistoryMinutelyMapper {
 
-  Map<String, Double> getSersionAvgByDevice(Map<String, Object> parameters);
+    Map<String, Double> getSersionAvgByDevice(Map<String, Object> parameters);
 
-  Map<String, Double> getAvgByDevice(Map<String, Object> parameters);
+    Map<String, Double> getAvgByDevice(Map<String, Object> parameters);
 
-  List<Map<String, Object>> getMonitorPointOrDeviceAvgData(Map<String, Object> parameters);
+    List<Map<String, Object>> getMonitorPointOrDeviceAvgData(Map<String, Object> parameters);
 
-  List<Map<String, Object>> getAreaAvgDataByAreaCode(Map<String, Object> parameters);
+    List<Map<String, Object>> getAreaAvgDataByAreaCode(Map<String, Object> parameters);
 
-  /**
-   * @param sensorKeys
-   * @param timePeriod
-   * @param dataCondition
-   * @return {format_time:string,e1:double,e2...............}
-   */
-  List<Map<String, Object>> selectLineChartDateByCrieria(@Param("sensorKeys") List<String> sensorKeys, @Param("timePeriod") TimePeriod timePeriod, @Param("dataCondition") DataCondition dataCondition);
+    /**
+     * @param sensorKeys
+     * @param timePeriod
+     * @param dataCondition
+     * @return {format_time:string,e1:double,e2...............}
+     */
+    List<Map<String, Object>> selectLineChartDateByCrieria(@Param("sensorKeys") List<String> sensorKeys, @Param("timePeriod") TimePeriod timePeriod, @Param("timeUnits") String timeUnits, @Param("dataCondition") DataCondition dataCondition);
 
-  List<Map<String, Object>> getSensorData(Map<String, Object> parameters);
+    List<Map<String, Object>> getSensorData(Map<String, Object> parameters);
 
-  List<Map<String, Object>> getSensorData2020(Map<String, Object> parameters);
+    List<Map<String, Object>> getSensorData2020(Map<String, Object> parameters);
 
-  List<Map<String, Object>> getDevicesAvgDataToExcel(Map<String, Object> parameters);
+    List<Map<String, Object>> getDevicesAvgDataToExcel(Map<String, Object> parameters);
 
-  List<Map<String, Object>> getDevicesSensorsAvgDataToExcel(Map<String, Object> parameters);
+    List<Map<String, Object>> getDevicesSensorsAvgDataToExcel(Map<String, Object> parameters);
 }
diff --git a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
index d5f11cb..9a24f1b 100644
--- a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
@@ -2,8 +2,11 @@
 
 import java.math.BigDecimal;
 import java.text.ParseException;
+import java.time.Instant;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.TemporalAdjusters;
 import java.util.ArrayList;
@@ -373,6 +376,24 @@
             // String type = (String) parameters.get("type");
             // parameters.putAll(getElementByType(type));
             ParameterUtils.getElementByType(parameters);
+            if (parameters.containsKey("timeUnits")) {
+                if ("minutely".equals(parameters.get("timeUnits"))) {
+                    if (parameters.containsKey("time")) {
+                        String[] timeStr = parameters.get("time").toString().split("-");
+                        int year = Integer.valueOf(timeStr[0]);
+                        int month = Integer.valueOf(timeStr[1]);
+                        String yearAndMonth;
+                        if (month < 10) {
+                            yearAndMonth = "minutely_" + year + "0" + month;
+                        } else {
+                            yearAndMonth = "minutely_" + year + month;
+                        }
+                        if (year >= 2020) {
+                            parameters.put("timeUnits", yearAndMonth);
+                        }
+                    }
+                }
+            }
         }
         String time = (String) parameters.get("time");
         String format = (String) parameters.get("format");
@@ -508,7 +529,22 @@
      */
     public Map<String, List<Double>> queryOneLineChartDateByCrieria(List<String> sensorKeys, TimePeriod timePeriod, DataCondition dataCondition) {
         List<String> timeList = ReportTimeFormat.makeTimeList(timePeriod);
-        List<Map<String, Object>> lineChartDatas = historyMinutelyMapper.selectLineChartDateByCrieria(sensorKeys, timePeriod, dataCondition);
+        Instant instant = timePeriod.getStartTime().toInstant();
+        ZonedDateTime zdt = instant.atZone(ZoneId.systemDefault());
+        LocalDate localDate = zdt.toLocalDate();
+        int year = localDate.getYear();
+        int month = localDate.getMonthValue();
+        String timeUnits;
+        if (year < 2020) {
+            timeUnits = "minutely";
+        } else {
+            if (month < 10) {
+                timeUnits = "minutely_" + year + "0" + month;
+            } else {
+                timeUnits = "minutely_" + year + month;
+            }
+        }
+        List<Map<String, Object>> lineChartDatas = historyMinutelyMapper.selectLineChartDateByCrieria(sensorKeys, timePeriod, timeUnits, dataCondition);
         Map<String, List<Double>> lineChartDatasWithEmpty = new HashMap<>();
         // lineChartDatasWithEmpty ���������
         sensorKeys.forEach(sensorKey -> {
diff --git a/src/main/resources/mapper/HistoryMinutelyMapper.xml b/src/main/resources/mapper/HistoryMinutelyMapper.xml
index bf83a38..3f4c176 100644
--- a/src/main/resources/mapper/HistoryMinutelyMapper.xml
+++ b/src/main/resources/mapper/HistoryMinutelyMapper.xml
@@ -139,7 +139,7 @@
         DATE_FORMAT(time,'${@com.moral.common.util.ReportTimeFormat@toMySqlTimeFormat(timePeriod.timeUnits)}') as
         format_time
         FROM
-        `history_minutely` hmi
+        history_${timeUnits} hmi
         <where>
             and hmi.time >= #{timePeriod.startTime}
             and hmi.time <![CDATA[<=]]> #{timePeriod.endTime}

--
Gitblit v1.8.0