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