| | |
| | | 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.*; |
| | |
| | | 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 -> { |
| | |
| | | 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); |
| | |
| | | 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: 计算自定义报表的数据 |