From 2dee01ae6f13a72b1d2ba9ca3d1ffbea72ab513b Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Sat, 09 Oct 2021 08:59:28 +0800
Subject: [PATCH] screen-aqi            增加监测因子对比图接口

---
 screen-api/src/main/java/com/moral/api/pojo/form/dataDisplay/MonitorPointDataDisplayForm.java |    8 +-
 screen-api/src/main/java/com/moral/api/service/impl/DataDisplayServiceImpl.java               |   66 +++++++++++++++-
 screen-api/src/main/java/com/moral/api/pojo/dto/dataDisplay/SensorComparisonDisplayDTO.java   |   21 +++++
 screen-common/src/main/java/com/moral/constant/Constants.java                                 |    8 +-
 screen-api/src/main/java/com/moral/api/controller/DataDisplayController.java                  |   74 +++---------------
 screen-api/src/main/java/com/moral/api/pojo/form/dataDisplay/SensorComparisonDisplayForm.java |   54 +++++++++++++
 6 files changed, 159 insertions(+), 72 deletions(-)

diff --git a/screen-api/src/main/java/com/moral/api/controller/DataDisplayController.java b/screen-api/src/main/java/com/moral/api/controller/DataDisplayController.java
index 31dbeff..1c3bb3a 100644
--- a/screen-api/src/main/java/com/moral/api/controller/DataDisplayController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/DataDisplayController.java
@@ -1,23 +1,18 @@
 package com.moral.api.controller;
 
 import com.moral.api.pojo.dto.dataDisplay.MonitorPointDataDisplayDTO;
+import com.moral.api.pojo.dto.dataDisplay.SensorComparisonDisplayDTO;
 import com.moral.api.pojo.form.dataDisplay.MonitorPointDataDisplayForm;
+import com.moral.api.pojo.form.dataDisplay.SensorComparisonDisplayForm;
 import com.moral.api.service.DataDisplayService;
 import com.moral.constant.ResponseCodeEnum;
 import com.moral.constant.ResultMessage;
-import com.moral.util.DateUtils;
 import io.swagger.annotations.Api;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
-import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 /**
  * @ClassName DataDisplayController
@@ -43,60 +38,19 @@
             return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                     ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
 
-        List<MonitorPointDataDisplayDTO> list = dataDisplayService.getMonitorPointDisplayData(form);
-        /*MonitorPointDataDisplayDTO dto = new MonitorPointDataDisplayDTO();
-        MonitorPointDataDisplayDTO dto1 = new MonitorPointDataDisplayDTO();
-        MonitorPointDataDisplayDTO dto2 = new MonitorPointDataDisplayDTO();
+        List<MonitorPointDataDisplayDTO> dtos = dataDisplayService.getMonitorPointDisplayData(form);
 
-        dto.setDeviceName("������������1");
-        dto1.setDeviceName("������������2");
-        dto2.setDeviceName("������������3");
+        return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(),dtos);
+    }
 
-        dto.setTime("yyyy-MM-dd HH:mm:ss");
-        dto1.setTime("yyyy-MM-dd HH:mm:ss");
-        dto2.setTime("yyyy-MM-dd HH:mm:ss");
-
-        dto.setOrganizationName("������������1");
-        dto1.setOrganizationName("������������2");
-        dto2.setOrganizationName("������������3");
-
-        dto.setA05024(1);
-        dto1.setA05024(1);
-        dto2.setA05024(1);
-
-        dto.setA21005(1d);
-        dto1.setA21005(1d);
-        dto2.setA21005(1d);
-
-        dto.setA21004(1);
-        dto1.setA21004(1);
-        dto2.setA21004(1);
-
-        dto.setA21026(1);
-        dto1.setA21026(1);
-        dto2.setA21026(1);
-
-        dto.setA34002(1);
-        dto1.setA34002(1);
-        dto2.setA34002(1);
-
-        dto.setA34004(1);
-        dto1.setA34004(1);
-        dto2.setA34004(1);
-
-        dto.setA99054(1d);
-        dto1.setA99054(1d);
-        dto2.setA99054(1d);
-
-        dto.setAQI(1);
-        dto1.setAQI(1);
-        dto2.setAQI(1);
-
-        List<MonitorPointDataDisplayDTO> list = new ArrayList<>();
-        list.add(dto);
-        list.add(dto1);
-        list.add(dto2);*/
-        return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(),list);
+    @PostMapping("sensorComparisonDisplay")
+    public ResultMessage sensorComparisonDisplay(@RequestBody SensorComparisonDisplayForm form){
+        //������������������������
+        if (!form.valid())
+            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
+                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+        List<SensorComparisonDisplayDTO> dtos = dataDisplayService.getSensorComparisonDisplayData(form);
+        return  new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(),dtos);
     }
 
 }
diff --git a/screen-api/src/main/java/com/moral/api/pojo/dto/dataDisplay/SensorComparisonDisplayDTO.java b/screen-api/src/main/java/com/moral/api/pojo/dto/dataDisplay/SensorComparisonDisplayDTO.java
new file mode 100644
index 0000000..0d245e1
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/pojo/dto/dataDisplay/SensorComparisonDisplayDTO.java
@@ -0,0 +1,21 @@
+package com.moral.api.pojo.dto.dataDisplay;
+
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @ClassName SensorComparisonDisplayDTO
+ * @Description TODO
+ * @Author ���������
+ * @Date 2021/10/8 15:54
+ * @Version TODO
+ **/
+@Data
+public class SensorComparisonDisplayDTO {
+
+    private String sensorCode;
+
+    private Map<String,Double> timeValueMap;
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/pojo/form/dataDisplay/MonitorPointDataDisplayForm.java b/screen-api/src/main/java/com/moral/api/pojo/form/dataDisplay/MonitorPointDataDisplayForm.java
index 16b8cc4..86df41a 100644
--- a/screen-api/src/main/java/com/moral/api/pojo/form/dataDisplay/MonitorPointDataDisplayForm.java
+++ b/screen-api/src/main/java/com/moral/api/pojo/form/dataDisplay/MonitorPointDataDisplayForm.java
@@ -58,20 +58,20 @@
         } else {
             if(startTime!=null&&endTime!=null)
                 return false;
-            if (reportType.equals(Constants.HOURYLYREPORT)) {
+            if (reportType.equals(Constants.HOURLY_REPORT)) {
                 //������������������������������������������
                 Date previousHour = DateUtils.getDateOfMin(new Date(), -60);
                 startTime = DateUtils.getHourlyStartTime(previousHour);
-            } else if (reportType.equals(Constants.DAILYREPORT)) {
+            } else if (reportType.equals(Constants.DAILY_REPORT)) {
                 //������������������������������������
                 Date yesterday = DateUtils.getDateOfDay(new Date(),-1);
                 startTime = DateUtils.getDailyStartTime(yesterday);
-            } else if (reportType.equals(Constants.WEEKLYREPORT)) {
+            } else if (reportType.equals(Constants.WEEKLY_REPORT)) {
                 //������������������������������������
                 Date previous = DateUtils.getDateOfDay(new Date(),-7);
                 startTime = DateUtils.getWeeklyStartTime(previous);
                 endTime = DateUtils.getWeeklyEndTime(previous);
-            } else if (reportType.equals(Constants.MONTHLYREPORT)) {
+            } else if (reportType.equals(Constants.MONTHLY_REPORT)) {
                 //������������������������������������
                 Date lastMonthFirstDay = DateUtils.getFirstDayOfLastMonth();
                 startTime = DateUtils.getMonthlyStartTime(lastMonthFirstDay);
diff --git a/screen-api/src/main/java/com/moral/api/pojo/form/dataDisplay/SensorComparisonDisplayForm.java b/screen-api/src/main/java/com/moral/api/pojo/form/dataDisplay/SensorComparisonDisplayForm.java
new file mode 100644
index 0000000..1fc3365
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/pojo/form/dataDisplay/SensorComparisonDisplayForm.java
@@ -0,0 +1,54 @@
+package com.moral.api.pojo.form.dataDisplay;
+
+import com.moral.constant.Constants;
+import com.moral.util.DateUtils;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @ClassName SensorComparsionDisplayForm
+ * @Description ���������������������������������
+ * @Author ���������
+ * @Date 2021/10/8 14:18
+ * @Version TODO
+ **/
+@Data
+public class SensorComparisonDisplayForm {
+
+    private String mac;
+
+    private String reportType;
+
+    private String time;
+
+    private List<String> sensors;
+
+    /*
+    * ���������������������������������time���reportType������������
+    * */
+    private Date startDate;
+
+    /*
+     * ���������������������������������time���reportType������������
+     * */
+    private Date endDate;
+
+    public boolean valid(){
+        if(mac==null||reportType==null||time==null||sensors==null)
+            return false;
+        if(reportType.equals(Constants.DAILY_REPORT)){
+            Date date = DateUtils.getDate(time,"yyyy-MM-dd");
+            startDate = DateUtils.getDailyStartTime(date);
+            endDate = DateUtils.getDailyEndTime(date);
+        }else if(reportType.equals(Constants.MONTHLY_REPORT)){
+            Date date = DateUtils.getDate(time,"yyyy-MM");
+            startDate = DateUtils.getMonthlyStartTime(date);
+            endDate = DateUtils.getMonthlyEndTime(date);
+        }else
+            return false;
+
+        return true;
+    }
+}
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/DataDisplayServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/DataDisplayServiceImpl.java
index ac689eb..1f34fd1 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/DataDisplayServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/DataDisplayServiceImpl.java
@@ -3,7 +3,9 @@
 import com.alibaba.fastjson.JSON;
 import com.moral.api.entity.*;
 import com.moral.api.pojo.dto.dataDisplay.MonitorPointDataDisplayDTO;
+import com.moral.api.pojo.dto.dataDisplay.SensorComparisonDisplayDTO;
 import com.moral.api.pojo.form.dataDisplay.MonitorPointDataDisplayForm;
+import com.moral.api.pojo.form.dataDisplay.SensorComparisonDisplayForm;
 import com.moral.api.service.*;
 import com.moral.constant.Constants;
 import com.moral.util.*;
@@ -65,7 +67,7 @@
                 dtos = calculateCustomData(macDataMap, deviceMap, startTime, endTime);
         }
         //���������������������������������������������������������
-        else if (reportType.equals(Constants.HOURYLYREPORT)) {
+        else if (reportType.equals(Constants.HOURLY_REPORT)) {
             Map<String, HistoryHourly> macDataMap = new HashMap<>();
             //������������
             macs.forEach(value -> {
@@ -77,21 +79,21 @@
                 dtos = calculateReportData(macDataMap, deviceMap, startTime);
         }
         //���������������������������������������������
-        else if (reportType.equals(Constants.DAILYREPORT)) {
+        else if (reportType.equals(Constants.DAILY_REPORT)) {
             //������������
             Map<String, HistoryDaily> macDataMap = historyDailyService.getHistoryDailyByMacsAndDate(macs, startTime);
             if (macDataMap.size() != 0)
                 dtos = calculateReportData(macDataMap, deviceMap, startTime);
         }
         //���������������������������������������������
-        else if (reportType.equals(Constants.WEEKLYREPORT)) {
+        else if (reportType.equals(Constants.WEEKLY_REPORT)) {
             //������������
             Map<String, HistoryWeekly> macDataMap = historyWeeklyService.getHistoryWeeklyByMacsAndDate(macs, startTime);
             if (macDataMap.size() != 0)
                 dtos = calculateReportData(macDataMap, deviceMap, startTime, endTime);
         }
         //������������������
-        else if (reportType.equals(Constants.MONTHLYREPORT)) {
+        else if (reportType.equals(Constants.MONTHLY_REPORT)) {
             //������������������������������������������������������������������������������������������������
             Map<String, List<HistoryDaily>> macDataDailyMap = new HashMap<>();
             Map<String, HistoryMonthly> macDataMonthlyMap = historyMonthlyService.getHistoryMonthlyByMacsAndDate(macs, startTime);
@@ -108,6 +110,62 @@
         return dtos;
     }
 
+    @Override
+    public List<SensorComparisonDisplayDTO> getSensorComparisonDisplayData(SensorComparisonDisplayForm form) {
+        //������
+        List<String> sensors = form.getSensors();
+        Date startDate = form.getStartDate();
+        Date endDate = form.getEndDate();
+        String mac = form.getMac();
+        String reportType = form.getReportType();
+        Map<String, String> timeValueMap = new LinkedHashMap<>();//key���time���value������������json
+        //������������������
+        if (reportType.equals(Constants.DAILY_REPORT)) {
+            List<HistoryHourly> hourlies = historyHourlyService.getValueByMacAndTime(mac, startDate, endDate);
+            for (HistoryHourly historyHourly : hourlies) {
+                Date time = historyHourly.getTime();
+                int hour = DateUtils.getHour(time);
+                String value = historyHourly.getValue();
+                timeValueMap.put(String.valueOf(hour), value);
+            }
+        }
+        //������������������
+        else if (reportType.equals(Constants.MONTHLY_REPORT)) {
+            List<HistoryDaily> dailies = historyDailyService.getHistoryDailyByMacAndTimeSlot(mac, startDate, endDate);
+            for (HistoryDaily historyDaily : dailies) {
+                Date time = historyDaily.getTime();
+                int day = DateUtils.getDay(time);
+                String value = historyDaily.getValue();
+                timeValueMap.put(String.valueOf(day), value);
+            }
+        } else
+            return null;
+        //������������������
+        List<SensorComparisonDisplayDTO> dtos = new ArrayList<>();
+        for (String sensor : sensors) {
+            SensorComparisonDisplayDTO dto = new SensorComparisonDisplayDTO();
+            Map<String,Double> dtoTimeValueMap = new LinkedHashMap<>();
+            dto.setSensorCode(sensor);
+            timeValueMap.forEach((time, valueJson) -> {
+                Map<String, Object> valueMap = JSON.parseObject(valueJson, Map.class);
+                Object sensorValueObject = valueMap.get(sensor);
+                if(sensorValueObject==null)
+                    return;
+                Double sensorValue = Double.parseDouble(sensorValueObject.toString());
+                //������������������������������������������
+                if(reportType.equals(Constants.HOURLY_REPORT)){
+                    if(!Constants.NORMAL_FLAG.equals(valueMap.get(sensor+"-Flag")))
+                        return;
+                }
+                //������������
+                dtoTimeValueMap.put(time,sensorValue);
+                dto.setTimeValueMap(dtoTimeValueMap);
+            });
+            dtos.add(dto);
+        }
+        return dtos;
+    }
+
 
     /**
      * @Description: ������������������������������
diff --git a/screen-common/src/main/java/com/moral/constant/Constants.java b/screen-common/src/main/java/com/moral/constant/Constants.java
index 22eb8b8..6699393 100644
--- a/screen-common/src/main/java/com/moral/constant/Constants.java
+++ b/screen-common/src/main/java/com/moral/constant/Constants.java
@@ -222,22 +222,22 @@
     /*
     * ������
     * */
-    public static final String HOURYLYREPORT = "0";
+    public static final String HOURLY_REPORT = "0";
 
     /*
     * ������
     * */
-    public static final String DAILYREPORT = "1";
+    public static final String DAILY_REPORT = "1";
 
     /*
     * ������
     * */
-    public static final String WEEKLYREPORT = "2";
+    public static final String WEEKLY_REPORT = "2";
 
     /*
     * ������
     * */
-    public static final String MONTHLYREPORT = "3";
+    public static final String MONTHLY_REPORT = "3";
 
     /*
     * ���������������������

--
Gitblit v1.8.0