洪水预报优化

master
cxw 2024-09-09 17:42:02 +08:00
parent ce3c087038
commit 19b2086904
1 changed files with 9 additions and 3 deletions

View File

@ -148,6 +148,7 @@ public class ForecastResultsService extends ServiceImpl<ForecastResultsMapper, F
List<StPptnR> pptnRAllList = new ArrayList<>();
List<StPptnR> pptnRFutureList = new ArrayList<>();
QueryWrapper<StPptnR> qwExisted = new QueryWrapper<>();
Boolean isHaveFuturePPtn = true;
// 如果结束时间在当前时间之前,降雨序列从历史降雨表获取
if (endTime.compareTo(nowHourTime) <= 0) {
qwExisted = new QueryWrapper<StPptnR>().eq("stcd", attResBase.getStcd()).ge("tm", startTime).le("tm", endTime).orderBy(true, true, "tm");
@ -157,6 +158,7 @@ public class ForecastResultsService extends ServiceImpl<ForecastResultsMapper, F
// 获取预报数据
pptnRFutureList = getForecastDrpData(nowHourTime, attResBase.getStcd());
} catch (IllegalArgumentException e) {
isHaveFuturePPtn = false;
log.error("该时间无预报数据");
}
}
@ -229,7 +231,7 @@ public class ForecastResultsService extends ServiceImpl<ForecastResultsMapper, F
List<StPptnR> filterList = pptnRAllList.stream().filter(e -> e.getTm().compareTo(period[0]) >= 0).filter(e -> e.getTm().compareTo(period[1]) <= 0).collect(Collectors.toList());
Map<String, List<StPptnR>> retMap = new HashMap<>();
if (CollectionUtils.isNotEmpty(filterList)) {
retMap = reorganizePptnRData(filterList, dt, period[0], period[1]);
retMap = reorganizePptnRData(filterList, dt, period[0], period[1], nowHourTime, isHaveFuturePPtn);
}
if(ObjectUtils.isEmpty(retMap.get("listForForecast"))){
continue;
@ -415,10 +417,14 @@ public class ForecastResultsService extends ServiceImpl<ForecastResultsMapper, F
* @description: T
* @param filterList
* @param dt
* @param startTm
* @param endTm
* @param nowHourTime
* @param isHaveFuturePPtn
* @return: java.util.List<com.gunshi.project.xyt.model.StPptnR>
* @auther: cxw
*/
private Map<String, List<StPptnR>> reorganizePptnRData(List<StPptnR> filterList, double dt, Date startTm, Date endTm) {
private Map<String, List<StPptnR>> reorganizePptnRData(List<StPptnR> filterList, double dt, Date startTm, Date endTm, Date nowHourTime, Boolean isHaveFuturePPtn) {
// 只保留整小时的数据
filterList = filterList.stream().filter(entity -> {
Date date = entity.getTm();
@ -437,7 +443,7 @@ public class ForecastResultsService extends ServiceImpl<ForecastResultsMapper, F
calendar.setTime(startTm);
Date dataTm = calendar.getTime();
// 使用时间一直往后加时间
while (dataTm.compareTo(endTm) < 0) {
while (dataTm.compareTo(endTm) < 0 && dataTm.compareTo(nowHourTime) <= 0 && !isHaveFuturePPtn) {
// 时间加1小时得到应该拆数据的时间后面往前推
calendar.add(Calendar.HOUR_OF_DAY, 1);
String shareDrp = "";// 应该分的drp