From 0045e827847446a9e826f2919b5c66bdfbf01af7 Mon Sep 17 00:00:00 2001
From: chen_xi <276999030@qq.com>
Date: Tue, 27 Sep 2022 11:11:38 +0800
Subject: [PATCH] 单站多参接口修改
---
screen-api/src/main/java/com/moral/api/service/impl/DataDisplayServiceImpl.java | 109 ++++++++++++++++++++++++++++++++++++
screen-api/src/main/java/com/moral/api/service/DataDisplayService.java | 9 +++
screen-api/src/main/java/com/moral/api/controller/DataDisplayController.java | 11 +++
3 files changed, 129 insertions(+), 0 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 1c3bb3a..ef7c6fe 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
@@ -13,6 +13,7 @@
import org.springframework.web.bind.annotation.*;
import java.util.List;
+import java.util.Map;
/**
* @ClassName DataDisplayController
@@ -53,4 +54,14 @@
return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(),dtos);
}
+ @PostMapping("sensorComparisonDisplayV2")
+ public ResultMessage sensorComparisonDisplayV2(@RequestBody Map<String, Object> params){
+ //������������������������
+ if (!params.containsKey("mac") || !params.containsKey("sensorCodes") || !params.containsKey("reportType") || !params.containsKey("times")) {
+ return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+ }
+ List<SensorComparisonDisplayDTO> dtos = dataDisplayService.getSensorComparisonDisplayDataV2(params);
+ return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(),dtos);
+ }
+
}
diff --git a/screen-api/src/main/java/com/moral/api/service/DataDisplayService.java b/screen-api/src/main/java/com/moral/api/service/DataDisplayService.java
index 3cadcac..feb92a1 100644
--- a/screen-api/src/main/java/com/moral/api/service/DataDisplayService.java
+++ b/screen-api/src/main/java/com/moral/api/service/DataDisplayService.java
@@ -7,6 +7,7 @@
import org.springframework.stereotype.Service;
import java.util.List;
+import java.util.Map;
/**
* @Description: ���������������������������
@@ -35,4 +36,12 @@
* @Date: 2021/10/8
*/
List<SensorComparisonDisplayDTO> getSensorComparisonDisplayData(SensorComparisonDisplayForm form);
+ /**
+ * @Description: ������������������������������������
+ * @Param: [form]
+ * @return: List<SensorComparisonDisplayDTO>
+ * @Author: ���������
+ * @Date: 2022/09/26
+ */
+ List<SensorComparisonDisplayDTO> getSensorComparisonDisplayDataV2(Map<String, Object> params);
}
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 8172916..7dd9839 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
@@ -213,6 +213,115 @@
return dtos;
}
+ @Override
+ public List<SensorComparisonDisplayDTO> getSensorComparisonDisplayDataV2(Map<String, Object> params) {
+ //������
+ List<String> sensors = (List<String>) params.get("sensorCodes");
+ /*Date startDate = form.getStartDate();
+ Date endDate = form.getEndDate();*/
+ //������������
+ List<String> times = (List<String>) params.get("times");
+ String startTime = times.get(0);
+ String endTime = times.get(1);
+ String mac = params.get("mac").toString();
+ String reportType = params.get("reportType").toString();
+ Map<String, String> timeValueMap = new LinkedHashMap<>();//key���time���value������������json
+ //������������������
+ if (reportType.equals(Constants.HOURLY_REPORT)) {
+ Date startDate = DateUtils.getDate(startTime,DateUtils.yyyy_MM_dd_HH_EN);
+ Date endDate = DateUtils.getDate(endTime,DateUtils.yyyy_MM_dd_HH_EN);
+ List<HistoryHourly> hourlies = historyHourlyService.getValueByMacAndTime(mac, startDate, endDate);
+ for (HistoryHourly historyHourly : hourlies) {
+ Date time = historyHourly.getTime();
+ String dateStr = DateUtils.dateToDateString(time, "yyyy-MM-dd HH");
+ String value = historyHourly.getValue();
+ timeValueMap.put(dateStr, value);
+ }
+ //���������������������
+ Date middleDate = startDate;
+ while (DateUtils.compareDateStr(DateUtils.dateToDateString(endDate,DateUtils.yyyy_MM_dd_HH_EN),DateUtils.dateToDateString(middleDate,DateUtils.yyyy_MM_dd_HH_EN),DateUtils.yyyy_MM_dd_HH_EN)<=0){
+ if (timeValueMap.get(DateUtils.dateToDateString(middleDate,DateUtils.yyyy_MM_dd_HH_EN)) == null)
+ timeValueMap.put(DateUtils.dateToDateString(middleDate,DateUtils.yyyy_MM_dd_HH_EN), null);
+ middleDate = DateUtils.addHours(middleDate,1);
+ }
+ }
+ //���������������
+ else if (reportType.equals(Constants.DAILY_REPORT)) {
+ Date startDate = DateUtils.getDate(startTime,DateUtils.yyyy_MM_dd_EN);
+ Date endDate = DateUtils.getDate(endTime,DateUtils.yyyy_MM_dd_EN);
+ List<HistoryDaily> dailies = historyDailyService.getHistoryDailyByMacAndTimeSlot(mac, startDate, endDate);
+ for (HistoryDaily historyDaily : dailies) {
+ Date time = historyDaily.getTime();
+ String dateStr = DateUtils.dateToDateString(time, "yyyy-MM-dd");
+ String value = historyDaily.getValue();
+ timeValueMap.put(String.valueOf(dateStr), value);
+ }
+ //���������������������
+ Date middleDate = startDate;
+ while (DateUtils.compareDateStr(DateUtils.dateToDateString(endDate,DateUtils.yyyy_MM_dd_EN),DateUtils.dateToDateString(middleDate,DateUtils.yyyy_MM_dd_EN),DateUtils.yyyy_MM_dd_EN)<=0){
+ if (timeValueMap.get(DateUtils.dateToDateString(middleDate,DateUtils.yyyy_MM_dd_EN)) == null)
+ timeValueMap.put(DateUtils.dateToDateString(middleDate,DateUtils.yyyy_MM_dd_EN), null);
+ middleDate = DateUtils.addDays(middleDate,1);
+ }
+ } else
+ return null;
+ //������������
+ //timeValueMap = sortMapByTime(timeValueMap, reportType);
+ //������������������
+ List<SensorComparisonDisplayDTO> dtos = new ArrayList<>();
+ for (String sensor : sensors) {
+ SensorComparisonDisplayDTO dto = new SensorComparisonDisplayDTO();
+ List<Map<String, Object>> dtoTimeValueList = new ArrayList<>();
+ dto.setSensorCode(sensor);
+ timeValueMap.forEach((time, valueJson) -> {
+ Map<String, Object> listMap = new HashMap<>();
+ //���������������������������������������������
+ if (valueJson == null) {
+ listMap.put("time", time);
+ listMap.put("value", "");
+ dtoTimeValueList.add(listMap);
+ return;
+ }
+ Map<String, Object> valueMap = JSON.parseObject(valueJson, Map.class);
+ Object sensorValueObject = valueMap.get(sensor);
+ //���������������������������������������������
+ if (sensorValueObject == null) {
+ listMap.put("time", time);
+ listMap.put("value", "");
+ dtoTimeValueList.add(listMap);
+ return;
+ }
+ //������������������������������������������
+ if (reportType.equals(Constants.HOURLY_REPORT)) {
+ //���������������������N���������������
+ if (!Constants.NORMAL_FLAG.equals(valueMap.get(sensor + "-Flag"))) {
+ listMap.put("time", time);
+ listMap.put("value", "");
+ dtoTimeValueList.add(listMap);
+ return;
+ }
+ }
+ //������������
+ Double sensorValue = Double.parseDouble(sensorValueObject.toString());
+ //������������
+ listMap.put("time", time);
+ listMap.put("value", sensorValue);
+ dtoTimeValueList.add(listMap);
+ });
+ Collections.sort(dtoTimeValueList, new Comparator<Map<String, Object>>() {
+ public int compare(Map<String, Object> o1, Map<String, Object> o2) {
+ String id1 = (String) o1.get("time");
+ String id2 = (String) o2.get("time");
+ return id1.compareTo(id2);
+ }
+
+ });
+ dto.setTimeValueList(dtoTimeValueList);
+ dtos.add(dto);
+ }
+ return dtos;
+ }
+
/**
* @Description: ������������������������
* @Param: [timeValueMap, reportType]
--
Gitblit v1.8.0