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