From cb888577b99892706860d2732785d22842aae9b0 Mon Sep 17 00:00:00 2001
From: 于紫祥_1901 <email@yuzixiang_1910>
Date: Fri, 18 Sep 2020 15:14:34 +0800
Subject: [PATCH] 走行车update

---
 src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java |  152 +++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 136 insertions(+), 16 deletions(-)

diff --git a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
index 9a24f1b..ed28222 100644
--- a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
@@ -2,6 +2,7 @@
 
 import java.math.BigDecimal;
 import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.time.Instant;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
@@ -17,6 +18,7 @@
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -44,14 +46,22 @@
 import com.moral.common.util.ReportTimeFormat;
 import com.moral.common.util.ResourceUtil;
 import com.moral.common.util.ValidateUtil;
+import com.moral.entity.Area;
+import com.moral.entity.City;
+import com.moral.entity.MonitorPoint;
+import com.moral.entity.Province;
 import com.moral.entity.Sensor;
 import com.moral.entity.charts.DataCondition;
 import com.moral.entity.charts.LineChartCriteria;
 import com.moral.entity.charts.TimePeriod;
 import com.moral.mapper.AlarmDailyMapper;
+import com.moral.mapper.AreaMapper;
+import com.moral.mapper.CityMapper;
 import com.moral.mapper.DeviceMapper;
 import com.moral.mapper.HistoryMapper;
 import com.moral.mapper.HistoryMinutelyMapper;
+import com.moral.mapper.MonitorPointMapper;
+import com.moral.mapper.ProvinceMapper;
 import com.moral.mapper.SensorMapper;
 import com.moral.service.HistoryMinutelyService;
 
@@ -76,6 +86,18 @@
 
     @Resource
     private AlarmDailyMapper alarmDailyMapper;
+
+    @Resource
+    private AreaMapper areaMapper;
+
+    @Resource
+    private ProvinceMapper provinceMapper;
+
+    @Resource
+    private CityMapper cityMapper;
+
+    @Resource
+    private MonitorPointMapper monitorPointMapper;
 
     @Override
     public Map<String, Object> getDayAQIByDevice(Map<String, Object> parameters) {
@@ -361,16 +383,6 @@
     }
 
     @Override
-    public List<Map<String, Object>> getAreaAvgDataByAreaCode(Map<String, Object> parameters) throws Exception {
-        convertQueryParam(parameters);
-        if (!ObjectUtils.isEmpty(parameters.get("compensate"))) {
-            parameters.put("timeUnits", "10min");
-        }
-        return historyMinutelyMapper.getAreaAvgDataByAreaCode(parameters);
-
-    }
-
-    @Override
     public void convertQueryParam(Map<String, Object> parameters) throws ParseException {
         if (!parameters.containsKey("field")) {
             // String type = (String) parameters.get("type");
@@ -382,13 +394,13 @@
                         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) {
+                            String yearAndMonth;
+                            if (month < 10) {
+                                yearAndMonth = "minutely_" + year + "0" + month;
+                            } else {
+                                yearAndMonth = "minutely_" + year + month;
+                            }
                             parameters.put("timeUnits", yearAndMonth);
                         }
                     }
@@ -748,4 +760,112 @@
         return historyMinutelyMapper.getDevicesSensorsAvgDataToExcel(parameters);
     }
 
+
+    @Override
+    public List<Map<String, Object>> get5MinutesOrHalfHour(Map<String, Object> parameters) throws ParseException {
+        if (parameters.get("city") == null) {
+            return new ArrayList<Map<String, Object>>();
+        }
+        String string = parameters.get("time").toString();
+        String year = string.substring(0, 4);
+        String[] split = string.substring(5).split("-");
+        String month = split[0];
+        String day = split[1];
+        if (split[0].length() < 2) {
+            month = 0 + split[0];
+        }
+        if (split[1].length() < 2) {
+            day = 0 + split[1];
+        }
+        String time = year + "-" + month + "-" + day;
+        String cityName = parameters.get("city").toString();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String type = parameters.get("type").toString();
+        String range = parameters.get("range").toString();
+        Area area = areaMapper.getAreaByName(cityName);
+        Integer code;
+        String name;
+        if (area == null) {
+            City city = cityMapper.getCityByName(cityName);
+            if (city == null) {
+                Province province = provinceMapper.getProvinceByName(cityName);
+                code = province.getProvinceCode();
+                name = province.getProvinceName();
+            } else {
+                code = city.getCityCode();
+                name = city.getCityName();
+            }
+        } else {
+            code = area.getAreaCode();
+            name = area.getAreaName();
+        }
+        parameters.put("cityCode", code);
+        parameters.put("name", name);
+        Map<String, Object> map = new HashMap<>();
+        if (code.toString().endsWith("0000")) {
+            map.put("provinceCode", code);
+        } else if (code.toString().endsWith("00")) {
+            map.put("cityCode", code);
+        } else {
+            map.put("areaCode", code);
+        }
+        //List<String> sensorKeys = sensorMapper.getSensorKeys();
+
+        List<String> sensorKeys = new ArrayList<String>();
+        Collections.addAll(sensorKeys, "e1", "e2", "e3", "e4", "e5", "e6", "e7", "e10", "e11", "e12", "e13", "e14", "e15"
+                , "e16", "e17", "e18", "e21", "e23", "e25", "e26", "e27", "e28", "e31", "e33", "e45", "e49", "e97", "e98", "e102");
+
+        String timeUnits = "minutely_" + time.substring(0, 7).replace("-", "");
+        map.put("sensorKeys", sensorKeys);
+        map.put("timeUnits", timeUnits);
+        Calendar cal = Calendar.getInstance();
+        List<Map<String, Object>> resultList = new ArrayList<>();
+        int seg;
+        long startTime;
+        long endTime;
+        int minuteChange;
+        if ("m".equals(type)) {
+            cal.setTime(sdf.parse(time + " 00:05:00"));
+            startTime = cal.getTimeInMillis();
+            cal.add(Calendar.DAY_OF_MONTH, 1);
+            endTime = cal.getTimeInMillis();
+            seg = 5 * 60 * 1000;
+            minuteChange = -5;
+        } else {
+            cal.setTime(sdf.parse(time + " 00:30:00"));
+            startTime = cal.getTimeInMillis();
+            cal.add(Calendar.DAY_OF_MONTH, 1);
+            endTime = cal.getTimeInMillis();
+            seg = 30 * 60 * 1000;
+            minuteChange = -30;
+        }
+        for (long time1 = startTime; time1 < endTime; time1 += seg) {
+            Date end = new Date(time1);
+            cal.setTime(end);
+            cal.add(Calendar.MINUTE, minuteChange);
+            Date start = cal.getTime();
+            map.put("start", start);
+            map.put("end", end);
+            Map<String, Object> dataMap = historyMinutelyMapper.get5MiutesOrHalfHourByDay(map);
+            if (dataMap == null) {
+                break;
+            }
+            dataMap.put("time", sdf.format(end));
+            dataMap.put("city", name);
+            Set<String> set = dataMap.keySet();
+            Iterator<String> it = set.iterator();
+            List<String> listKey = new ArrayList<>();
+            while (it.hasNext()) {
+                String key = it.next();
+                if (dataMap.get(key) == null || "".equals(dataMap.get(key))) {
+                    listKey.add(key);
+                }
+            }
+            for (String key : listKey) {
+                dataMap.remove(key);
+            }
+            resultList.add(dataMap);
+        }
+        return resultList;
+    }
 }

--
Gitblit v1.8.0