screen-api/src/main/java/com/moral/api/controller/DataDisplayController.java | ●●●●● patch | view | raw | blame | history | |
screen-api/src/main/java/com/moral/api/pojo/dto/dataDisplay/SensorComparisonDisplayDTO.java | ●●●●● patch | view | raw | blame | history | |
screen-api/src/main/java/com/moral/api/pojo/form/dataDisplay/MonitorPointDataDisplayForm.java | ●●●●● patch | view | raw | blame | history | |
screen-api/src/main/java/com/moral/api/pojo/form/dataDisplay/SensorComparisonDisplayForm.java | ●●●●● patch | view | raw | blame | history | |
screen-api/src/main/java/com/moral/api/service/impl/DataDisplayServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
screen-common/src/main/java/com/moral/constant/Constants.java | ●●●●● patch | view | raw | blame | history |
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); } } screen-api/src/main/java/com/moral/api/pojo/dto/dataDisplay/SensorComparisonDisplayDTO.java
New file @@ -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; } 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); screen-api/src/main/java/com/moral/api/pojo/form/dataDisplay/SensorComparisonDisplayForm.java
New file @@ -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; } } 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: 计算自定义报表的数据 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"; /* * 数据正常标识符