@Override
public DataResult<FFireGradeForecastVO> findLatest(String areaCode) {
//todo 直接获取当天前三天数据
LocalDate localDate = LocalDate.now();
LocalDate plus = localDate.plus(-3, ChronoUnit.DAYS);
LambdaQueryWrapper<FFireGradeForecastEntity> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.likeRight(FFireGradeForecastEntity::getArea,areaCode);
queryWrapper.gt(FFireGradeForecastEntity::getForeTime,plus);
queryWrapper.le(FFireGradeForecastEntity::getForeTime,LocalDateTime.now());
List<FFireGradeForecastEntity> list = this.list(queryWrapper);
FFireGradeForecastVO vo = new FFireGradeForecastVO();
if(CollectionUtils.isNotEmpty(list)){
//根据时间排序此时只需要取第一条数据 从大到小
Collections.sort(list, Comparator.comparing(FFireGradeForecastEntity::getForeTime).reversed());
FFireGradeForecastEntity first = list.get(0);
//获取时间 跟当天比较
//将Date转换为LocalDate
Date foreTime = first.getForeTime();
Instant instant = foreTime.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
LocalDate foreTimeDate = instant.atZone(zoneId).toLocalDate();
//查看相差天数
Period next = Period.between(foreTimeDate,localDate);
switch (next.getDays()){
case 0:
//当天
vo.setLevel(first.getOneDayGrade());
break;
case 1:
//相差一天
vo.setLevel(first.getTwoDayGrade());
break;
case 2:
//相差两天
vo.setLevel(first.getThreeDayGrade());
break;
default:
break;
}
}
return DataResult.success(vo);
}
@Data
@ApiModel("森林火险气象等级预报VO")
public class FFireGradeForecastVO extends FFireGradeForecastEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "最新的火险等级", required = false)
private String level;
- 森林防火系统
- 在“辅助决策”菜单下面新增“森林火险气象等级预报”,森林火险气象等级预报实现的功能主要是增删改查。
查询条件:预报时间、地区
字段包括:预报时间(精确到日就行)、地区、24小时森林火险气象等级、24小时森林火险气象等级程度、24小时森林火险气象等级预警信息、48小时森林火险气象等级、48小时森林火险气象等级程度、48小时森林火险气象等级预警信息、72小时森林火险气象等级、72小时森林火险气象等级程度、72小时森林火险气象等级预警信息、备注
根据森林火险气象等级划分(标红部分,前面是等级,后面是程度):
一级(绿),森林火险气象等级低;
二级(蓝),森林火险气象等级较低;
三级(黄),森林火险气象等级较高,须加强防范;
四级(橙),森林火险气象等级高,林区须加强火源管理;
五级(红),森林火险气象等级极高,严禁一切林内用火。
2、如下图所示,在森林防火系统左上角展示“当日天气预报”和最新的“森林火险气象等级预报”信息。
说明:
- 天气预报信息:可以使用天气预报插件显示实时数据。
- 森林火险气象等级预报:展示最新的森林火险气象等级预报信息,展示的内容如下:比如森林火险气象等级为一级,这里展示内容“森林火险气象等级低”;森林火险气象等级为五级,这里展示内容为“森林火险气象等级极高,严禁一切林内用火。”。如果今天是2023年3月24日,如果库中有2023年3月24日的预报数据,就取24小时的预报等级,如果库中只有2023年3月23日的预报数据,这里取的预报等级就是48小时的预报,如果库中只有2023年3月22日的预报数据,这里取的预报等级就是72小时的预报等级。超过72小时没有预报数据的,森林火险气象等级这块内容就是空。因为天气预报是实时,这里不能乱取。
- 天气预报信息和森林火险气象等级是在一行展示的,前面是天气预报,后面是森林火险气象预报。