Controller层
public SegmentChartVo getChartInfo(@PathVariable("id") Long id) {
Tuple2 tuple2 = getDT(id);//获得开始熏蒸任务开始时间,若结束时间未到获取当前时间,否者则end获取结束时间
LocalDateTime[] localDateTimes = (LocalDateTime[]) tuple2.second;
Long segmentId = (Long) tuple2.first;
SegmentChartVo chartVo = new SegmentChartVo();
Tuple5 axisData = chartService.getTHMAxisDataById(segmentId, localDateTimes[0], localDateTimes[1], "hour", 1l, 1);//将室内温湿度,ppm浓度,水份按照每一小时为一个间隔返回
Tuple3 axisData2 = chartService.getWeatherAxisData(localDateTimes[0], localDateTimes[1]);//将室外温湿度按照每五分钟为一个单位返回
chartVo.setSegment(axisData);
chartVo.setWeather(axisData2);
return chartVo;
}
室内坐标轴获取
因为室内传感器较多,获取数据时间不规律,所以按照整小时为x坐标,对其内数据进行相关处理。
public Tuple5 getTHMAxisDataById(Long segmentId, LocalDateTime start, LocalDateTime end, String type, Long step,Integer typo) {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DATE_FORMAT_FULL);
List<LocalDateTime> xAxis = generatorXAxis(start, end, type, step);//获取x坐标
List<String> xAxisFormatter =//获得日期的标准格式
xAxis.stream().map(localDateTime -> {
return parseLocalDateTime(localDateTime, dateTimeFormatter);
}).collect(Collectors.toList());
Map<String, List<KmSensorInfoHis>> data =
aggregateService.getDataBetweenDateBySegmentId(segmentId, DateUtils.convertDate(start), DateUtils.convertDate(end),null,typo);//将数据按照deviceid分类
Tuple4 tuple4 = getY(data,xAxis,"max");//获取y坐标
return Tuple5.with(xAxisFormatter,tuple4.first,tuple4.second,tuple4.third,tuple4.fourth);//将x,y坐标返回
}
按照时间间隔取得Y轴坐标
public T