From 88da913f6722db2335abf676d4a3343efacd0a42 Mon Sep 17 00:00:00 2001
From: lizijie <lzjiiie@163.com>
Date: Tue, 28 Sep 2021 16:54:16 +0800
Subject: [PATCH] 通过组织id和guid获取日数据

---
 screen-api/src/main/java/com/moral/api/controller/GovMonitorPointController.java    |   25 ++++
 screen-api/src/main/java/com/moral/api/service/impl/GovMonitorPointServiceImpl.java |  285 +++++++++++++++++++++++++++++++++++++++++++++++
 screen-api/src/main/java/com/moral/api/service/GovMonitorPointService.java          |    9 +
 3 files changed, 316 insertions(+), 3 deletions(-)

diff --git a/screen-api/src/main/java/com/moral/api/controller/GovMonitorPointController.java b/screen-api/src/main/java/com/moral/api/controller/GovMonitorPointController.java
index a4db062..48f5a05 100644
--- a/screen-api/src/main/java/com/moral/api/controller/GovMonitorPointController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/GovMonitorPointController.java
@@ -76,4 +76,29 @@
         List<GovMonitorPoint> govMonitorPoints = govMonitorPointService.selectGovMonitorPointsByOrgid(parameters);
         return  ResultMessage.ok(govMonitorPoints);
     }
+
+    /**
+      *@Description: ������guid���������id������������������������������������������
+      *@Param: [request]
+      *@return: com.moral.constant.ResultMessage 
+      *@Author: lizijie
+      *@Date: 2021/9/26 10:06
+     **/
+    @RequestMapping(value = "queryGovMonitorPointHoutlyDatyByGuidsAndOrgid", method = RequestMethod.GET)
+    @ResponseBody
+    public ResultMessage queryGovMonitorPointHoutlyDatyByGuidsAndOrgid(HttpServletRequest request){
+        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+        Object orgid = parameters.get("organization_id");
+        Object guids = parameters.get("guids");
+        Object date = parameters.get("date");
+        if (ObjectUtils.isEmpty(orgid) || ObjectUtils.isEmpty(guids) || ObjectUtils.isEmpty(date)){
+            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+        }
+        Organization organization = organizationMapper.selectById(Integer.parseInt(orgid.toString()));
+        if (ObjectUtils.isEmpty(organization)){
+            return ResultMessage.fail(ResponseCodeEnum.ORGANIZATION_NOT_EXIST.getCode(), ResponseCodeEnum.ORGANIZATION_NOT_EXIST.getMsg());
+        }
+        Map<String,Object> resultMap = govMonitorPointService.queryGovMonitorPointHoutlyDatyByGuidsAndOrgid(parameters);
+        return  ResultMessage.ok(resultMap);
+    }
 }
diff --git a/screen-api/src/main/java/com/moral/api/service/GovMonitorPointService.java b/screen-api/src/main/java/com/moral/api/service/GovMonitorPointService.java
index dbed93d..2dd060a 100644
--- a/screen-api/src/main/java/com/moral/api/service/GovMonitorPointService.java
+++ b/screen-api/src/main/java/com/moral/api/service/GovMonitorPointService.java
@@ -33,4 +33,13 @@
      *@Date: 2021/9/23 15:32
      **/
     List<GovMonitorPoint> selectGovMonitorPointsByOrgid(Map map);
+
+    /**
+     *@Description: ������guid���������id������������������������������������������
+     *@Param: [map]
+     *@return: java.util.Map<java.lang.String,java.lang.Object>
+     *@Author: lizijie
+     *@Date: 2021/9/24 11:22
+     **/
+    Map<String,Object> queryGovMonitorPointHoutlyDatyByGuidsAndOrgid(Map map);
 }
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/GovMonitorPointServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/GovMonitorPointServiceImpl.java
index e27b929..b3b0fce 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/GovMonitorPointServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/GovMonitorPointServiceImpl.java
@@ -1,9 +1,12 @@
 package com.moral.api.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.moral.api.entity.Device;
 import com.moral.api.entity.GovMonitorPoint;
+import com.moral.api.entity.HistoryHourly;
 import com.moral.api.entity.Organization;
 import com.moral.api.mapper.DeviceMapper;
 import com.moral.api.mapper.GovMonitorPointMapper;
@@ -18,9 +21,9 @@
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -44,6 +47,9 @@
 
     @Autowired(required = false)
     private DeviceMapper deviceMapper;
+
+    @Resource
+    private HistoryHourlyServiceImpl historyHourlyService;
 
     @Override
     public List<GovMonitorPoint> queryGovMonitorPointAndDataByRegionCode(Integer regionCode,String sensorCode) {
@@ -80,4 +86,277 @@
         List<GovMonitorPoint> govMonitorPointList = govMonitorPointMapper.selectList(wrapper_govMonitorPoint);
         return govMonitorPointList;
     }
+
+    @Override
+    public Map<String, Object> queryGovMonitorPointHoutlyDatyByGuidsAndOrgid(Map map) {
+        String[] guids = map.get("guids").toString().split(",");
+        Integer orgId = Integer.parseInt(map.get("organization_id").toString());
+        String date = map.get("date").toString();
+        String startTime = date+" 00:00:00";
+        String endTime = date+" 23:00:01";
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//���������������MM
+        try {
+            Date startDate = simpleDateFormat.parse(startTime);
+            Date endDate = simpleDateFormat.parse(endTime);
+            Map<String, Object> resultMap = new HashMap<>();
+            List govMonitorPointList = new ArrayList();
+            List<Map<String,Object>> data = new ArrayList<>();
+            Map<String,Object> hour_1 = new HashMap<>();
+            Map<String,Object> hour_2 = new HashMap<>();
+            Map<String,Object> hour_3 = new HashMap<>();
+            Map<String,Object> hour_4 = new HashMap<>();
+            Map<String,Object> hour_5 = new HashMap<>();
+            Map<String,Object> hour_6 = new HashMap<>();
+            Map<String,Object> hour_7 = new HashMap<>();
+            Map<String,Object> hour_8 = new HashMap<>();
+            Map<String,Object> hour_9 = new HashMap<>();
+            Map<String,Object> hour_10 = new HashMap<>();
+            Map<String,Object> hour_11 = new HashMap<>();
+            Map<String,Object> hour_12 = new HashMap<>();
+            Map<String,Object> hour_13 = new HashMap<>();
+            Map<String,Object> hour_14 = new HashMap<>();
+            Map<String,Object> hour_15 = new HashMap<>();
+            Map<String,Object> hour_16 = new HashMap<>();
+            Map<String,Object> hour_17 = new HashMap<>();
+            Map<String,Object> hour_18 = new HashMap<>();
+            Map<String,Object> hour_19 = new HashMap<>();
+            Map<String,Object> hour_20 = new HashMap<>();
+            Map<String,Object> hour_21 = new HashMap<>();
+            Map<String,Object> hour_22 = new HashMap<>();
+            Map<String,Object> hour_23 = new HashMap<>();
+            Map<String,Object> hour_24 = new HashMap<>();
+            Map<String,Object> hour_AVG = new HashMap<>();
+            hour_1.put("time","1���");
+            hour_2.put("time","2���");
+            hour_3.put("time","3���");
+            hour_4.put("time","4���");
+            hour_5.put("time","5���");
+            hour_6.put("time","6���");
+            hour_7.put("time","7���");
+            hour_8.put("time","8���");
+            hour_9.put("time","9���");
+            hour_10.put("time","10���");
+            hour_11.put("time","11���");
+            hour_12.put("time","12���");
+            hour_13.put("time","13���");
+            hour_14.put("time","14���");
+            hour_15.put("time","15���");
+            hour_16.put("time","16���");
+            hour_17.put("time","17���");
+            hour_18.put("time","18���");
+            hour_19.put("time","19���");
+            hour_20.put("time","20���");
+            hour_21.put("time","21���");
+            hour_22.put("time","22���");
+            hour_23.put("time","23���");
+            hour_24.put("time","0���");
+            hour_AVG.put("time","avg");
+            for (String guid:guids) {
+                //������������������������
+                QueryWrapper<GovMonitorPoint> wrapper_govMonitorPoint = new QueryWrapper<>();
+                wrapper_govMonitorPoint.eq("is_delete",Constants.NOT_DELETE).eq("guid",guid);
+                GovMonitorPoint govMonitorPoint = govMonitorPointMapper.selectOne(wrapper_govMonitorPoint);
+                if (!ObjectUtils.isEmpty(govMonitorPoint)){
+                    govMonitorPointList.add(govMonitorPoint);
+                }else {
+                    continue;
+                }
+                int govMonitorPointId = govMonitorPoint.getId();
+                QueryWrapper<Device> wrapper_device = new QueryWrapper<>();
+                wrapper_device.eq("is_delete",Constants.NOT_DELETE).eq("organization_id",orgId).eq("guid",guid);
+                List<Device> devices = deviceMapper.selectList(wrapper_device);
+                List<String> macs = devices.stream().map(device -> device.getMac()).collect(Collectors.toList());
+                List<List<HistoryHourly>> oneGovMonitorPointDevicesValue = new ArrayList();
+                for (String mac:macs) {
+                    List<HistoryHourly> valueByMacAndTime = historyHourlyService.getValueByMacAndTime(mac, startDate, endDate);
+                    oneGovMonitorPointDevicesValue.add(valueByMacAndTime);
+                }
+                List<Double> PM2_5List_daliy = new ArrayList<>();
+                List<Double> PM10List_daliy = new ArrayList<>();
+                List<Double> SO2List_daliy = new ArrayList<>();
+                List<Double> NO2List_daliy = new ArrayList<>();
+                List<Double> COList_daliy = new ArrayList<>();
+                List<Double> O3_1hList_daliy = new ArrayList<>();
+                Map<Integer,Double> O3_1hMap = new HashMap<>();
+                for (int i=0; i<24; i++){
+                    //������������Map���������������������������������������������������������������������������
+                    Map<String,Object> oneGovMonitorPointOneHourData = new HashMap<>();
+                    String time_hourly = "";
+                    if (i<10){
+                        time_hourly = date+" 0"+i+":00:00";
+                    }else {
+                        time_hourly = date+" "+i+":00:00";
+                    }
+                    List<Double> PM2_5List = new ArrayList<>();
+                    List<Double> PM10List = new ArrayList<>();
+                    List<Double> SO2List = new ArrayList<>();
+                    List<Double> NO2List = new ArrayList<>();
+                    List<Double> COList = new ArrayList<>();
+                    List<Double> O3_1hList = new ArrayList<>();
+                    for (List<HistoryHourly> valueByMacAndTime:oneGovMonitorPointDevicesValue) {
+                        for (HistoryHourly historyHourly:valueByMacAndTime) {
+                            if (simpleDateFormat.format(historyHourly.getTime()).equals(time_hourly)){
+                                JSONObject value = JSONObject.parseObject(historyHourly.getValue());
+                                if (!ObjectUtils.isEmpty(value.get("a34004"))){
+                                    PM2_5List.add(Double.parseDouble(value.get("a34004").toString()));
+                                }
+                                if (!ObjectUtils.isEmpty(value.get("a34002"))){
+                                    PM10List.add(Double.parseDouble(value.get("a34002").toString()));
+                                }
+                                if (!ObjectUtils.isEmpty(value.get("a21026"))){
+                                    SO2List.add(Double.parseDouble(value.get("a21026").toString()));
+                                }
+                                if (!ObjectUtils.isEmpty(value.get("a21004"))){
+                                    NO2List.add(Double.parseDouble(value.get("a21004").toString()));
+                                }
+                                if (!ObjectUtils.isEmpty(value.get("a21005"))){
+                                    COList.add(Double.parseDouble(value.get("a21005").toString()));
+                                }
+                                if (!ObjectUtils.isEmpty(value.get("a05024"))){
+                                    O3_1hList.add(Double.parseDouble(value.get("a05024").toString()));
+                                }
+                            }
+                        }
+                    }
+                    Double PM2_5Avg = (double)Math.round(PM2_5List.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
+                    Double PM10Avg = (double)Math.round(PM2_5List.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
+                    Double SO2Avg = (double)Math.round(PM2_5List.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
+                    Double NO2Avg = (double)Math.round(PM2_5List.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
+                    Double COAvg = new BigDecimal(PM2_5List.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
+                    Double O3_1hAvg = (double)Math.round(PM2_5List.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
+                    if (!ObjectUtils.isEmpty(PM2_5Avg)){
+                        PM2_5List_daliy.add(PM2_5Avg);
+                        oneGovMonitorPointOneHourData.put("a34004_"+govMonitorPointId,PM2_5Avg);
+                    }else {
+                        oneGovMonitorPointOneHourData.put("a34004_"+govMonitorPointId,null);
+                    }
+                    if (!ObjectUtils.isEmpty(PM10Avg)){
+                        PM10List_daliy.add(PM10Avg);
+                        oneGovMonitorPointOneHourData.put("a34002_"+govMonitorPointId,PM2_5Avg);
+                    }else {
+                        oneGovMonitorPointOneHourData.put("a34002_"+govMonitorPointId,null);
+                    }
+                    if (!ObjectUtils.isEmpty(SO2Avg)){
+                        SO2List_daliy.add(SO2Avg);
+                        oneGovMonitorPointOneHourData.put("a21026_"+govMonitorPointId,PM2_5Avg);
+                    }else {
+                        oneGovMonitorPointOneHourData.put("a21026_"+govMonitorPointId,null);
+                    }
+                    if (!ObjectUtils.isEmpty(NO2Avg)){
+                        NO2List_daliy.add(NO2Avg);
+                        oneGovMonitorPointOneHourData.put("a21004_"+govMonitorPointId,PM2_5Avg);
+                    }else {
+                        oneGovMonitorPointOneHourData.put("a21004_"+govMonitorPointId,null);
+                    }
+                    if (!ObjectUtils.isEmpty(COAvg)){
+                        COList_daliy.add(COAvg);
+                        oneGovMonitorPointOneHourData.put("a21005_"+govMonitorPointId,PM2_5Avg);
+                    }else {
+                        oneGovMonitorPointOneHourData.put("a21005_"+govMonitorPointId,null);
+                    }
+                    if (!ObjectUtils.isEmpty(O3_1hAvg)){
+                        O3_1hList_daliy.add(O3_1hAvg);
+                        oneGovMonitorPointOneHourData.put("a05024_"+govMonitorPointId,PM2_5Avg);
+                        O3_1hMap.put(i,O3_1hAvg);
+                    }else {
+                        oneGovMonitorPointOneHourData.put("a05024_"+govMonitorPointId,null);
+                    }
+                    Double O3_8h = null;
+                    if (i>=7){
+                        List<Double> O3_8hList = new ArrayList<>();
+                        for (Integer key:O3_1hMap.keySet()){
+                            if (i-8<key && key<i+1){
+                                O3_8hList.add(O3_1hMap.get(key));
+                            }
+                        }
+                        O3_8h = (double)Math.round(O3_8hList.stream().mapToDouble(aDouble ->aDouble).summaryStatistics().getAverage());
+                    }
+                    oneGovMonitorPointOneHourData.put("O3_8h_"+govMonitorPointId,O3_8h);
+                    switch (i){
+                        case 0:hour_1.putAll(oneGovMonitorPointOneHourData);
+                            break;
+                        case 1:hour_2.putAll(oneGovMonitorPointOneHourData);
+                            break;
+                        case 2:hour_3.putAll(oneGovMonitorPointOneHourData);
+                            break;
+                        case 3:hour_4.putAll(oneGovMonitorPointOneHourData);
+                            break;
+                        case 4:hour_5.putAll(oneGovMonitorPointOneHourData);
+                            break;
+                        case 5:hour_6.putAll(oneGovMonitorPointOneHourData);
+                            break;
+                        case 6:hour_7.putAll(oneGovMonitorPointOneHourData);
+                            break;
+                        case 7:hour_8.putAll(oneGovMonitorPointOneHourData);
+                            break;
+                        case 8:hour_9.putAll(oneGovMonitorPointOneHourData);
+                            break;
+                        case 9:hour_10.putAll(oneGovMonitorPointOneHourData);
+                            break;
+                        case 10:hour_11.putAll(oneGovMonitorPointOneHourData);
+                            break;
+                        case 11:hour_12.putAll(oneGovMonitorPointOneHourData);
+                            break;
+                        case 12:hour_13.putAll(oneGovMonitorPointOneHourData);
+                            break;
+                        case 13:hour_14.putAll(oneGovMonitorPointOneHourData);
+                            break;
+                        case 14:hour_15.putAll(oneGovMonitorPointOneHourData);
+                            break;
+                        case 15:hour_16.putAll(oneGovMonitorPointOneHourData);
+                            break;
+                        case 16:hour_17.putAll(oneGovMonitorPointOneHourData);
+                            break;
+                        case 17:hour_18.putAll(oneGovMonitorPointOneHourData);
+                            break;
+                        case 18:hour_19.putAll(oneGovMonitorPointOneHourData);
+                            break;
+                        case 19:hour_20.putAll(oneGovMonitorPointOneHourData);
+                            break;
+                        case 20:hour_21.putAll(oneGovMonitorPointOneHourData);
+                            break;
+                        case 21:hour_22.putAll(oneGovMonitorPointOneHourData);
+                            break;
+                        case 22:hour_23.putAll(oneGovMonitorPointOneHourData);
+                            break;
+                        case 23:hour_24.putAll(oneGovMonitorPointOneHourData);
+                            break;
+                        default:
+                            break;
+                    }
+                }
+            }
+            data.add(hour_1);
+            data.add(hour_2);
+            data.add(hour_3);
+            data.add(hour_4);
+            data.add(hour_5);
+            data.add(hour_6);
+            data.add(hour_7);
+            data.add(hour_8);
+            data.add(hour_9);
+            data.add(hour_10);
+            data.add(hour_11);
+            data.add(hour_12);
+            data.add(hour_13);
+            data.add(hour_14);
+            data.add(hour_15);
+            data.add(hour_16);
+            data.add(hour_17);
+            data.add(hour_18);
+            data.add(hour_19);
+            data.add(hour_20);
+            data.add(hour_21);
+            data.add(hour_22);
+            data.add(hour_23);
+            data.add(hour_24);
+            resultMap.put("title",data+"������");
+            resultMap.put("data",data);
+            resultMap.put("gocMonitorPoint",govMonitorPointList);
+            return resultMap;
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return null;
+    }
 }

--
Gitblit v1.8.0