From 4c872cea75d5b3c3832f0f0796ba727e8f91168d Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Wed, 21 Oct 2020 15:03:50 +0800
Subject: [PATCH] 增加获取单台设备五分钟平均值以及沧州环保局下属设备只显示十个参数

---
 src/main/resources/mapper/HistoryFiveMinutelyMapper.xml                  |   11 +
 src/main/java/com/moral/service/HistoryMinutelyService.java              |    1 
 src/main/java/com/moral/service/impl/OrganizationSensorsServiceImpl.java |   19 ++
 src/main/java/com/moral/service/SensorService.java                       |    3 
 src/main/java/com/moral/mapper/SensorMapper.java                         |    2 
 src/main/java/com/moral/service/HistoryFiveMinutelyService.java          |   10 +
 src/main/java/com/moral/mapper/MonitorPointMapper.java                   |    2 
 src/main/resources/mapper/OrganizationSensorsMapper.xml                  |    7 
 src/main/java/com/moral/controller/WebController.java                    |  309 +++++++++++++++++++++++++-------------
 src/main/java/com/moral/service/impl/HistoryFiveMinutelyServiceImpl.java |   30 +++
 src/main/java/com/moral/mapper/HistoryFiveMinutelyMapper.java            |    4 
 src/main/java/com/moral/service/impl/SensorServiceImpl.java              |    5 
 src/main/java/com/moral/mapper/OrganizationSensorsMapper.java            |    7 
 src/main/resources/mapper/MonitorPointMapper.xml                         |    6 
 src/main/resources/mapper/SensorMapper.xml                               |    7 
 src/main/java/com/moral/service/MonitorPointService.java                 |    2 
 src/main/java/com/moral/service/OrganizationSensorsService.java          |    7 
 src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java        |    5 
 src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java     |    7 
 19 files changed, 330 insertions(+), 114 deletions(-)

diff --git a/src/main/java/com/moral/controller/WebController.java b/src/main/java/com/moral/controller/WebController.java
index 4ce9009..71f880f 100644
--- a/src/main/java/com/moral/controller/WebController.java
+++ b/src/main/java/com/moral/controller/WebController.java
@@ -5,10 +5,7 @@
 import com.moral.common.exception.WebAuthException;
 import com.moral.common.util.*;
 import com.moral.common.webAnno.UserLoginToken;
-import com.moral.entity.AreaNames;
-import com.moral.entity.Device;
-import com.moral.entity.MonitorPoint;
-import com.moral.entity.Organization;
+import com.moral.entity.*;
 import com.moral.service.*;
 import com.moral.util.DateUtil;
 import com.moral.util.LatLngTransformation;
@@ -19,6 +16,7 @@
 import org.springframework.util.ObjectUtils;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -34,6 +32,18 @@
 @CrossOrigin(origins = "*", maxAge = 3600)
 @SuppressWarnings({"rawtypes", "unchecked", "unused"})
 public class WebController {
+
+    private static Map<String, Sensor> sensors;
+
+    @PostConstruct
+    public void init() {
+        sensors = new HashMap<>();
+        List<Sensor> allSensors = sensorService.getAllSensors();
+        for (Sensor sensor : allSensors) {
+            sensors.put(sensor.getSensorKey(), sensor);
+        }
+    }
+
     @Resource
     AccountService accountService;
     @Resource
@@ -49,6 +59,12 @@
     MonitorPointService monitorPointService;
     @Resource
     DeviceService deviceService;
+    @Resource
+    HistoryFiveMinutelyService historyFiveMinutelyService;
+    @Resource
+    SensorService sensorService;
+    @Resource
+    OrganizationSensorsService organizationSensorsService;
 
 
     @UserLoginToken
@@ -57,13 +73,13 @@
         return "test success!";
     }
 
-    /** 
-    * @Description: ������������
-            * @Param: [parameters]
-            * @return: java.util.Map<java.lang.String,java.lang.Object>
-            * @Author: ������������
-            * @Date: 2020/10/19
-            */ 
+    /**
+     * @Description: ������������
+     * @Param: [parameters]
+     * @return: java.util.Map<java.lang.String               ,               java.lang.Object>
+     * @Author: ������������
+     * @Date: 2020/10/19
+     */
     @PostMapping("login")
     public Map<String, Object> login(@RequestBody Map<String, Object> parameters) {
         Map<String, Object> resultMap = new HashMap<String, Object>();
@@ -74,38 +90,38 @@
             resultMap = accountService.webLogin(parameters);
             String accountId = String.valueOf(resultMap.get("accountId"));
             if (!accountId.equals("-1")) {
-                redisHashUtil.deleteMapVal("webToken",accountId);
+                redisHashUtil.deleteMapVal("webToken", accountId);
                 resultMap.put("token", webTokenService.getToken(accountId));
             }
         }
         return resultMap;
     }
 
-    /** 
-    * @Description: ������������
-            * @Param: [request]
-            * @return: java.util.Map<java.lang.String,java.lang.Object>
-            * @Author: ������������
-            * @Date: 2020/10/19
-            */ 
+    /**
+     * @Description: ������������
+     * @Param: [request]
+     * @return: java.util.Map<java.lang.String               ,               java.lang.Object>
+     * @Author: ������������
+     * @Date: 2020/10/19
+     */
     @UserLoginToken
     @PostMapping("logout")
     public Map<String, Object> logout(HttpServletRequest request) {
         Map<String, Object> resultMap = new HashMap<>();
         String token = request.getHeader("token");
-        String id =  WebTokenUtils.getIdBytoken(token);
-        redisHashUtil.addMapOne("webToken", String.valueOf(id),token);
+        String id = WebTokenUtils.getIdBytoken(token);
+        redisHashUtil.addMapOne("webToken", String.valueOf(id), token);
         resultMap.put("msg", "������������!");
         return resultMap;
     }
 
-    /** 
-    * @Description: 
-            * @Param: [request]
-            * @return: java.util.Map<java.lang.String,java.lang.Object>
-            * @Author: ������������
-            * @Date: 2020/10/19
-            */ 
+    /**
+     * @Description:
+     * @Param: [request]
+     * @return: java.util.Map<java.lang.String               ,               java.lang.Object>
+     * @Author: ������������
+     * @Date: 2020/10/19
+     */
     @UserLoginToken
     @GetMapping("getAccountInfo")
     public Map<String, Object> getAccountInfo(HttpServletRequest request) {
@@ -163,13 +179,13 @@
     }
 
 
-    /** 
-    * @Description: ������������������������
-            * @Param: [request]
-            * @return: com.moral.common.bean.ResultBean<java.util.List<java.util.Map<java.lang.String,java.lang.Object>>>
-            * @Author: ������������
-            * @Date: 2020/10/19
-            */ 
+    /**
+     * @Description: ������������������������
+     * @Param: [request]
+     * @return: com.moral.common.bean.ResultBean<java.util.List               <               java.util.Map               <               java.lang.String               ,               java.lang.Object>>>
+     * @Author: ������������
+     * @Date: 2020/10/19
+     */
     @UserLoginToken
     @GetMapping("report_avg_datas")
     public ResultBean<List<Map<String, Object>>> getMonitorPointOrDeviceAvgData(HttpServletRequest request)
@@ -184,8 +200,8 @@
             String time = map.get("time").toString();
             time = time.substring(time.length() - 2);
             map.put("time", Integer.valueOf(time));
-            if(parameters.get("type").equals("day")){
-                map.put("time", Integer.valueOf(time)+1);
+            if (parameters.get("type").equals("day")) {
+                map.put("time", Integer.valueOf(time) + 1);
             }
             map.put("value", map.remove(sensorKey));
         }
@@ -193,12 +209,12 @@
     }
 
     /**
-    * @Description: ������������������������������
-            * @Param: [request]
-            * @return: com.moral.common.bean.ResultBean<java.util.List<com.moral.entity.MonitorPoint>>
-            * @Author: ������������
-            * @Date: 2020/10/19
-            */
+     * @Description: ������������������������������
+     * @Param: [request]
+     * @return: com.moral.common.bean.ResultBean<java.util.List               <               com.moral.entity.MonitorPoint>>
+     * @Author: ������������
+     * @Date: 2020/10/19
+     */
     @UserLoginToken
     @GetMapping("monitorpoints-devices")
     public ResultBean<List<MonitorPoint>> getMonitorPointsAndDevicesByRegion(HttpServletRequest request)
@@ -209,105 +225,168 @@
     }
 
     /**
-    * @Description: ���������������������������������������
-            * @Param: [request]
-            * @return: com.moral.common.bean.ResultBean<java.util.List<com.moral.entity.Device>>
-            * @Author: ������������
-            * @Date: 2020/10/19
-            */
-   /* @UserLoginToken*/
+     * @Description: ���������������������������������������
+     * @Param: [request]
+     * @return: com.moral.common.bean.ResultBean<java.util.List               <               com.moral.entity.Device>>
+     * @Author: ������������
+     * @Date: 2020/10/19
+     */
+    /* @UserLoginToken*/
     @GetMapping("coordinates")
-    public ResultBean<List<Device>> getDeviceCoordinatesAndState(HttpServletRequest request){
+    public ResultBean<List<Device>> getDeviceCoordinatesAndState(HttpServletRequest request) {
         Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
         ParameterUtils.getRegionType4RegionCode(parameters);
         return new ResultBean<List<Device>>(deviceService.queryDevice(parameters));
     }
 
     /**
-    * @Description: ������monitorId���������������������������������������������������������������������
-            * @Param: []
-            * @return: com.moral.common.bean.ResultBean<java.util.Map<java.lang.String,java.lang.Object>>
-            * @Author: ������������
-            * @Date: 2020/10/19
-            */
+     * @Description: ������monitorId���������������������������������������������������������������������
+     * @Param: []
+     * @return: com.moral.common.bean.ResultBean<java.util.Map               <               java.lang.String               ,               java.lang.Object>>
+     * @Author: ������������
+     * @Date: 2020/10/19
+     */
 
     @GetMapping("fiveMinuteAvgData")
-    public ResultBean<List<Map<String, Object>>> getSensorFiveMinuteAvgData(HttpServletRequest request){
+    public ResultBean<List<Map<String, Object>>> getSensorFiveMinuteAvgData(HttpServletRequest request) {
         //���������������������������monitorpointId
         Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
-        if((!parameters.containsKey("sensorKey"))||(!parameters.containsKey("monitorPointId")))
-            return  ResultBean.fail("���������null");
+        if ((!parameters.containsKey("sensorKey")) || (!parameters.containsKey("monitorPointId")))
+            return ResultBean.fail("���������null");
         String sensorKey = (String) parameters.get("sensorKey");
         Integer monitorPointId = Integer.parseInt((String) parameters.get("monitorPointId"));
 
         //������monitorpointId������������������������������mac������
         List<Device> devices = deviceService.getDevicesByMonitorPointId(monitorPointId);
-        if(ObjectUtils.isEmpty(devices))
+        if (ObjectUtils.isEmpty(devices))
             return ResultBean.fail("���������������������monitorPointId������");
         List<String> macs = new ArrayList<>();
-        devices.forEach(p->{
+        devices.forEach(p -> {
             macs.add(p.getMac());
         });
 
         //���������������mac���������������������������������������������������������
         Map<String, Object> timeAndYearMonth = getTimeAndYearMonthForFiveMinuteData();
-        String time= (String) timeAndYearMonth.get("time");
+        String time = (String) timeAndYearMonth.get("time");
         String yearAndMonth = (String) timeAndYearMonth.get("yearAndMonth");
-        parameters.put("time",time);
-        parameters.put("yearAndMonth",yearAndMonth);
-        parameters.put("macs",macs);
-        List<Map<String, Object>> datas = historyMinutelyService.getFiveMinutesDataByMacsAndTime(parameters);
+        parameters.put("time", time);
+        parameters.put("yearAndMonth", yearAndMonth);
+        parameters.put("macs", macs);
+        List<Map<String, Object>> datas = historyFiveMinutelyService.getFiveMinutesDataByMacsAndTime(parameters);
 
         //������������������������������������������������������������������������������
-        if(ObjectUtils.isEmpty(datas)){
-            try {
-                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                Date date = sdf.parse(time);
-                date = DateUtil.rollMinute(date, -5);
-                time = sdf.format(date);
-                parameters.put("time",time);
-                datas = historyMinutelyService.getFiveMinutesDataByMacsAndTime(parameters);
-            } catch (ParseException e) {
-                e.printStackTrace();
-            }
-
+        if (ObjectUtils.isEmpty(datas)) {
+            time = getFiveMinuteAgoTime(time);
+            parameters.put("time", time);
+            datas = historyFiveMinutelyService.getFiveMinutesDataByMacsAndTime(parameters);
         }
-        datas = insertDeviceInfo(datas,devices);
+
+        datas = insertDeviceInfo(datas, devices);
         return new ResultBean<List<Map<String, Object>>>(datas);
 
     }
 
-    /**
-    * @Description: ���������������������������������������state
-            * @Param: [datas, devices]
-            * @return: java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
-            * @Author: ������������
-            * @Date: 2020/10/19
-            */
-    public List<Map<String, Object>> insertDeviceInfo(List<Map<String, Object>> datas,List<Device> devices ){
-        Map<String,Device> map = new HashMap<>();
-        devices.forEach(p->{
-            map.put(p.getMac(),p);
+    @GetMapping("fiveMinuteAvgDataByMac")
+    public ResultBean<Map<String, Object>> fiveMinuteAvgDataByMac(HttpServletRequest request) {
+        //���������������mac���
+        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+        if ((!parameters.containsKey("mac")))
+            return ResultBean.fail("���������null");
+        String mac = (String) parameters.get("mac");
+
+        //������mac������orgId
+        String orgId = monitorPointService.getOrgIdByMac(mac);
+
+        //���������������������������������������������������������������������������������
+        Map<String, Object> specialSensors = organizationSensorsService.getSensorsByOrgId(orgId);
+
+        if (ObjectUtils.isEmpty(specialSensors)) {
+            List<String> sensorKeys = sensorService.getSensorKeys();
+            parameters.put("sensorKeys", sensorKeys);
+        } else {
+            String sensorKeys = (String) specialSensors.get("sensors");
+            sensorKeys.trim();
+            sensorKeys = sensorKeys.substring(1, sensorKeys.length() - 1);
+            parameters.put("sensorKeys", Arrays.asList(sensorKeys.split(",")));
+        }
+
+        //������������������
+        Map<String, Object> timeAndYearMonth = getTimeAndYearMonthForFiveMinuteData();
+        String time = (String) timeAndYearMonth.get("time");
+        String yearAndMonth = (String) timeAndYearMonth.get("yearAndMonth");
+        parameters.put("time", time);
+        parameters.put("yearAndMonth", yearAndMonth);
+        parameters.put("mac", mac);
+
+        Map<String, Object> datas = historyFiveMinutelyService.getFiveMinutesDataByMac(parameters);
+
+        //������������������������������������������������������������������������������
+        if (ObjectUtils.isEmpty(datas)) {
+            time = getFiveMinuteAgoTime(time);
+            parameters.put("time", time);
+            datas = historyFiveMinutelyService.getFiveMinutesDataByMac(parameters);
+        }
+
+
+        //������������������
+        datas.values().removeIf((value) -> {
+            return ObjectUtils.isEmpty(value) || value.equals("[0, 0, 0]");
         });
 
-        datas.forEach(p->{
+        //������������������
+        Map<String, Object> sortDatas = new LinkedHashMap<>();
+        Device device = deviceService.getDeviceByMac(mac, true);
+        sortDatas.put("������", device.getName());
+
+        //������������������
+        datas.forEach((key, value) -> {
+            Sensor sensor = sensors.get(key);
+            if (!ObjectUtils.isEmpty(sensor)) {
+                String unit = ObjectUtils.isEmpty(sensor.getUnit()) ? "" : (String) sensor.getUnit();
+                String str = (String) value;
+                str.trim();
+                str = str.substring(1, str.length() - 1);
+                sortDatas.put(sensor.getName(), Arrays.asList(str.split(",")).get(0) + unit);
+            }
+        });
+
+        sortDatas.put("������", time);
+
+        return new ResultBean<Map<String, Object>>(sortDatas);
+    }
+
+
+    /**
+     * @Description: ���������������������������������������state
+     * @Param: [datas, devices]
+     * @return: java.util.List<java.util.Map               <               java.lang.String               ,               java.lang.Object>>
+     * @Author: ������������
+     * @Date: 2020/10/19
+     */
+    public List<Map<String, Object>> insertDeviceInfo(List<Map<String, Object>> datas, List<Device> devices) {
+        Map<String, Device> map = new HashMap<>();
+        devices.forEach(p -> {
+            map.put(p.getMac(), p);
+        });
+
+        datas.forEach(p -> {
             String mac = (String) p.get("mac");
             Device device = map.get(mac);
             List list = LatLngTransformation.Convert_BD09_To_GCJ02(device.getLatitude(), device.getLongitude());
-            p.put("longitude",list.get(0));
-            p.put("latitude",list.get(1));
-            p.put("state",device.getState());
+            p.put("longitude", list.get(0));
+            p.put("latitude", list.get(1));
+            p.put("state", device.getState());
         });
         return datas;
     }
 
     /**
-    * @Description: ������������������������������������������������������������������������������
-            * @Param: []
-            * @return: java.lang.String
-            * @Author: ������������
-            * @Date: 2020/10/19
-            */
+     * @Description: ������������������������������������������������������������������������������
+     * @Param: []
+     * @return: java.lang.String
+     * @Author: ������������
+     * @Date: 2020/10/19
+     */
     private Map<String, Object> getTimeAndYearMonthForFiveMinuteData() {
         Map<String, Object> map = new HashMap<>();
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -318,14 +397,13 @@
         String yearAndMonth = "";
         String startTime = "";
         Integer endMinute = Integer.parseInt(String.valueOf(minute.charAt(minute.length() - 1)));
-        if (endMinute >= 6||endMinute==0) {//��������������������� 6 7 8 9 0   ������12:16,12:20��������� ���������12:10-12:15���������
+        if (endMinute >= 6 || endMinute == 0) {//��������������������� 6 7 8 9 0   ������12:16,12:20��������� ���������12:10-12:15���������
             date = DateUtil.rollMinute(date, -1);
             StringBuilder time = new StringBuilder(sdf.format(date));
-            startTime = time.replace(15, 19, "0:00").toString();
-        }else {// ���������������������1 2 3 4 5 ������������������������������ ������12:11������������ ���������12:05-12:10���������
-            date = DateUtil.rollMinute(date, -9);
-            StringBuilder time = new StringBuilder(sdf.format(date));
             startTime = time.replace(15, 19, "5:00").toString();
+        } else {// ���������������������1 2 3 4 5 ������������������������������ ������12:11������������ ���������12:05-12:10���������
+            StringBuilder time = new StringBuilder(sdf.format(date));
+            startTime = time.replace(15, 19, "0:00").toString();
         }
 
         year = DateUtil.getYear(date);
@@ -337,5 +415,24 @@
     }
 
 
+    /**
+     * @Description: ������������������������������������������������������������
+     * @Param: [time]
+     * @return: java.lang.String
+     * @Author: ������������
+     * @Date: 2020/10/20
+     */
+    public String getFiveMinuteAgoTime(String time) {
+        try {
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            Date date = sdf.parse(time);
+            date = DateUtil.rollMinute(date, -5);
+            time = sdf.format(date);
+            return time;
+        } catch (ParseException e) {
+            return null;
+        }
+    }
+
 
 }
diff --git a/src/main/java/com/moral/mapper/HistoryFiveMinutelyMapper.java b/src/main/java/com/moral/mapper/HistoryFiveMinutelyMapper.java
index 91a720a..438fb96 100644
--- a/src/main/java/com/moral/mapper/HistoryFiveMinutelyMapper.java
+++ b/src/main/java/com/moral/mapper/HistoryFiveMinutelyMapper.java
@@ -1,8 +1,12 @@
 package com.moral.mapper;
 
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
 public interface HistoryFiveMinutelyMapper {
     List<Map<String,Object>> getFiveMinutesDataByMacsAndTime(Map<String,Object> parameters);
+
+    Map<String,Object> getFiveMinutesDataByMac(Map<String,Object> parameters);
+
 }
diff --git a/src/main/java/com/moral/mapper/MonitorPointMapper.java b/src/main/java/com/moral/mapper/MonitorPointMapper.java
index ad96bd6..fb7dd6e 100644
--- a/src/main/java/com/moral/mapper/MonitorPointMapper.java
+++ b/src/main/java/com/moral/mapper/MonitorPointMapper.java
@@ -46,4 +46,6 @@
     List<Integer> getMonitorPointIds(Map<String, Object> params);
 
     List<MonitorPoint> byCodeGetMonitor(Map<String, Object> params);
+
+    String getOrgIdByMac(String mac);
 }
\ No newline at end of file
diff --git a/src/main/java/com/moral/mapper/OrganizationSensorsMapper.java b/src/main/java/com/moral/mapper/OrganizationSensorsMapper.java
new file mode 100644
index 0000000..f5eda55
--- /dev/null
+++ b/src/main/java/com/moral/mapper/OrganizationSensorsMapper.java
@@ -0,0 +1,7 @@
+package com.moral.mapper;
+
+import java.util.Map;
+
+public interface OrganizationSensorsMapper {
+    Map<String,Object> getSensorsByOrgId(String orgId);
+}
diff --git a/src/main/java/com/moral/mapper/SensorMapper.java b/src/main/java/com/moral/mapper/SensorMapper.java
index 6c8e581..f221367 100644
--- a/src/main/java/com/moral/mapper/SensorMapper.java
+++ b/src/main/java/com/moral/mapper/SensorMapper.java
@@ -32,4 +32,6 @@
     List<Sensor> getSensorsInfoByMac(@Param("mac") String mac);
 
     List<Sensor> selectSenosrsByOrgId(Map<String, Object> parameters);
+
+    List<String> getSensorKeys();
 }
\ No newline at end of file
diff --git a/src/main/java/com/moral/service/HistoryFiveMinutelyService.java b/src/main/java/com/moral/service/HistoryFiveMinutelyService.java
new file mode 100644
index 0000000..0d3f3eb
--- /dev/null
+++ b/src/main/java/com/moral/service/HistoryFiveMinutelyService.java
@@ -0,0 +1,10 @@
+package com.moral.service;
+
+import java.util.List;
+import java.util.Map;
+
+public interface HistoryFiveMinutelyService {
+    List<Map<String, Object>> getFiveMinutesDataByMacsAndTime(Map<String, Object> parameters);
+
+    Map<String,Object> getFiveMinutesDataByMac(Map<String, Object> parameters);
+}
diff --git a/src/main/java/com/moral/service/HistoryMinutelyService.java b/src/main/java/com/moral/service/HistoryMinutelyService.java
index dea3a4f..7e8e0c2 100644
--- a/src/main/java/com/moral/service/HistoryMinutelyService.java
+++ b/src/main/java/com/moral/service/HistoryMinutelyService.java
@@ -38,7 +38,6 @@
 
     List<Map<String, Object>> getMultiDeviceSensorData(Map<String, Object> parameters) throws Exception;
 
-    List<Map<String, Object>> getFiveMinutesDataByMacsAndTime(Map<String, Object> parameters);
 
     List<Map<String, Object>> getDevicesSensorsToExcel(Map<String, Object> parameters);
 
diff --git a/src/main/java/com/moral/service/MonitorPointService.java b/src/main/java/com/moral/service/MonitorPointService.java
index 3ff350d..67c3774 100644
--- a/src/main/java/com/moral/service/MonitorPointService.java
+++ b/src/main/java/com/moral/service/MonitorPointService.java
@@ -56,4 +56,6 @@
     List<MonitorPoint> getMonitorPointListByAccountId(int id);
 
     MonitorPoint byIdGetMonitorPoint(int id);
+
+    String getOrgIdByMac(String mac);
 }
diff --git a/src/main/java/com/moral/service/OrganizationSensorsService.java b/src/main/java/com/moral/service/OrganizationSensorsService.java
new file mode 100644
index 0000000..a57ca54
--- /dev/null
+++ b/src/main/java/com/moral/service/OrganizationSensorsService.java
@@ -0,0 +1,7 @@
+package com.moral.service;
+
+import java.util.Map;
+
+public interface OrganizationSensorsService {
+    Map<String,Object> getSensorsByOrgId(String orgId);
+}
diff --git a/src/main/java/com/moral/service/SensorService.java b/src/main/java/com/moral/service/SensorService.java
index d399d9f..0a99483 100644
--- a/src/main/java/com/moral/service/SensorService.java
+++ b/src/main/java/com/moral/service/SensorService.java
@@ -43,4 +43,7 @@
 
     List<List<Map<String, Object>>> listExcelDatas(List<List<String>> sensorInfos, List<Map<String, Object>> list);
 
+    List<String> getSensorKeys();
+
+
 }
diff --git a/src/main/java/com/moral/service/impl/HistoryFiveMinutelyServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryFiveMinutelyServiceImpl.java
new file mode 100644
index 0000000..1a2e322
--- /dev/null
+++ b/src/main/java/com/moral/service/impl/HistoryFiveMinutelyServiceImpl.java
@@ -0,0 +1,30 @@
+package com.moral.service.impl;
+
+import com.moral.common.util.ValidateUtil;
+import com.moral.mapper.HistoryFiveMinutelyMapper;
+import com.moral.service.HistoryFiveMinutelyService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class HistoryFiveMinutelyServiceImpl implements HistoryFiveMinutelyService {
+    @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> getFiveMinutesDataByMac(Map<String, Object> parameters) {
+        ValidateUtil.notNull(parameters,"���������������������������������");
+        return historyFiveMinutelyMapper.getFiveMinutesDataByMac(parameters);
+    }
+
+
+}
diff --git a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
index 7d0ad7d..aea113e 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) {
diff --git a/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java b/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java
index 2df2138..6fa01ba 100644
--- a/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/MonitorPointServiceImpl.java
@@ -824,5 +824,10 @@
         return monitorPointMapper.byIdGetMonitorPoint(id);
     }
 
+    @Override
+    public String getOrgIdByMac(String mac) {
+        return monitorPointMapper.getOrgIdByMac(mac);
+    }
+
 
 }
diff --git a/src/main/java/com/moral/service/impl/OrganizationSensorsServiceImpl.java b/src/main/java/com/moral/service/impl/OrganizationSensorsServiceImpl.java
new file mode 100644
index 0000000..e389615
--- /dev/null
+++ b/src/main/java/com/moral/service/impl/OrganizationSensorsServiceImpl.java
@@ -0,0 +1,19 @@
+package com.moral.service.impl;
+
+import com.moral.mapper.OrganizationSensorsMapper;
+import com.moral.service.OrganizationSensorsService;
+import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+
+import javax.annotation.Resource;
+import java.util.Map;
+
+@Service
+public class OrganizationSensorsServiceImpl implements OrganizationSensorsService {
+    @Resource
+    OrganizationSensorsMapper organizationSensorsMapper;
+    @Override
+    public Map<String, Object> getSensorsByOrgId(String orgId) {
+        return ObjectUtils.isEmpty(orgId)?null:organizationSensorsMapper.getSensorsByOrgId(orgId);
+    }
+}
diff --git a/src/main/java/com/moral/service/impl/SensorServiceImpl.java b/src/main/java/com/moral/service/impl/SensorServiceImpl.java
index 3a5e7ce..85e0fd8 100644
--- a/src/main/java/com/moral/service/impl/SensorServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/SensorServiceImpl.java
@@ -245,4 +245,9 @@
         return sheets;
     }
 
+    @Override
+    public List<String> getSensorKeys() {
+        return sensorMapper.getSensorKeys();
+    }
+
 }
diff --git a/src/main/resources/mapper/HistoryFiveMinutelyMapper.xml b/src/main/resources/mapper/HistoryFiveMinutelyMapper.xml
index 1ff92ee..3c8e2b7 100644
--- a/src/main/resources/mapper/HistoryFiveMinutelyMapper.xml
+++ b/src/main/resources/mapper/HistoryFiveMinutelyMapper.xml
@@ -9,4 +9,15 @@
             #{mac}
         </foreach>
     </select>
+
+    <select id="getFiveMinutesDataByMac" resultType="java.util.LinkedHashMap">
+        select
+        <foreach collection="sensorKeys" separator="," item="sensorKey">
+          json->'$.${sensorKey}' AS '${sensorKey}'
+        </foreach>
+        FROM
+        history_five_minutely_${yearAndMonth} h
+        where  h.time = #{time}
+        and h.mac = #{mac}
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/MonitorPointMapper.xml b/src/main/resources/mapper/MonitorPointMapper.xml
index eacf56d..fdb9ac2 100644
--- a/src/main/resources/mapper/MonitorPointMapper.xml
+++ b/src/main/resources/mapper/MonitorPointMapper.xml
@@ -219,4 +219,10 @@
             province_code = #{provinceCode}
         </if>
     </select>
+
+    <select id="getOrgIdByMac" resultType="String">
+        SELECT m.`organization_id` orgId FROM monitor_point m
+        JOIN device d ON d.`monitor_point_id` = m.`id`
+        AND d.`mac`= #{mac}
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/OrganizationSensorsMapper.xml b/src/main/resources/mapper/OrganizationSensorsMapper.xml
new file mode 100644
index 0000000..1c0ec52
--- /dev/null
+++ b/src/main/resources/mapper/OrganizationSensorsMapper.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.moral.mapper.OrganizationSensorsMapper">
+   <select id="getSensorsByOrgId" resultType="java.util.Map">
+        SELECT organization_id orgId,sensors FROM organization_sensors WHERE organization_id = #{orgId}
+   </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/SensorMapper.xml b/src/main/resources/mapper/SensorMapper.xml
index 628c1b8..be66b3f 100644
--- a/src/main/resources/mapper/SensorMapper.xml
+++ b/src/main/resources/mapper/SensorMapper.xml
@@ -198,4 +198,11 @@
         )
         and dvs.sensor_id=s.id
     </select>
+
+    <select id="getSensorKeys" resultType="java.lang.String">
+        select
+        sensor_key
+        from
+        sensor
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0