洪水预报优化
parent
1d63b94dcc
commit
06719b8873
|
|
@ -81,6 +81,7 @@ public class ForecastProjectController {
|
|||
public R<List<ForecastProject>> list(@RequestBody @Validated ForecastProject forecastProject) {
|
||||
QueryWrapper<ForecastProject> wrapper = new QueryWrapper<ForecastProject>()
|
||||
.like(ObjectUtils.isNotNull(forecastProject.getName()), "name", forecastProject.getName())
|
||||
.like(ObjectUtils.isNotNull(forecastProject.getType()), "type", forecastProject.getType())
|
||||
.ge(ObjectUtils.isNotNull(forecastProject.getStartTm()), "forecast_tm", forecastProject.getStartTm())
|
||||
.le(ObjectUtils.isNotNull(forecastProject.getEndTm()), "forecast_tm", forecastProject.getEndTm());
|
||||
if(StringUtils.isNotBlank(forecastProject.getOrderField())){
|
||||
|
|
@ -94,6 +95,7 @@ public class ForecastProjectController {
|
|||
public R<Page<ForecastProject>> page(@RequestBody @Validated ForecastProject forecastProject) {
|
||||
QueryWrapper<ForecastProject> wrapper = new QueryWrapper<ForecastProject>()
|
||||
.like(ObjectUtils.isNotNull(forecastProject.getName()), "name", forecastProject.getName())
|
||||
.like(ObjectUtils.isNotNull(forecastProject.getType()), "type", forecastProject.getType())
|
||||
.ge(ObjectUtils.isNotNull(forecastProject.getStartTm()), "forecast_tm", forecastProject.getStartTm())
|
||||
.le(ObjectUtils.isNotNull(forecastProject.getEndTm()), "forecast_tm", forecastProject.getEndTm());
|
||||
if(StringUtils.isNotBlank(forecastProject.getOrderField())){
|
||||
|
|
|
|||
|
|
@ -82,6 +82,12 @@ public class ForecastResultVo {
|
|||
@Schema(description="主汛期防洪限制水位")
|
||||
private BigDecimal flLowLimLev;
|
||||
|
||||
/**
|
||||
* 当前堰顶高度预警值
|
||||
*/
|
||||
@Schema(description="当前堰顶高度预警值")
|
||||
private BigDecimal currentYdgdyjz;
|
||||
|
||||
/**
|
||||
* 土壤含水量
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -141,6 +141,12 @@ public class ForecastResults extends GenericPageParams implements Serializable {
|
|||
@Schema(description="主汛期防洪限制水位")
|
||||
private BigDecimal flLowLimLev;
|
||||
|
||||
/**
|
||||
* 当前堰顶高度预警值
|
||||
*/
|
||||
@Schema(description="当前堰顶高度预警值")
|
||||
private BigDecimal currentYdgdyjz;
|
||||
|
||||
/**
|
||||
* 土壤含水量
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -57,6 +57,7 @@ public class ForecastProjectService extends ServiceImpl<ForecastProjectMapper, F
|
|||
forecastResults.setR(vo.getR());
|
||||
forecastResults.setProjectId(forecastProject.getId());
|
||||
forecastResults.setFlLowLimLev(vo.getFlLowLimLev());
|
||||
forecastResults.setCurrentYdgdyjz(vo.getCurrentYdgdyjz());
|
||||
forecastResults.setPa(vo.getPa());
|
||||
retList.add(forecastResults);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.gunshi.project.xyt.service;
|
||||
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
||||
|
|
@ -230,6 +231,10 @@ public class ForecastResultsService extends ServiceImpl<ForecastResultsMapper, F
|
|||
List<StRsvrR> realRsvrList = resultList.stream().filter(item -> item.getTm().compareTo(period[0]) >= 0 && item.getTm().compareTo(period[1]) <= 0).collect(Collectors.toList());
|
||||
Map<String, String> realRsvrMap = realRsvrList.stream().collect(Collectors.toMap(rsvr -> sdfMinute.format(rsvr.getTm()), StRsvrR::getRz));
|
||||
forecastVoList = forecastVoList.subList(0, PList.length);
|
||||
// 去除预测出来的最后一条与第二次实际的相同时间的数据
|
||||
if(voList.size() > 0 && voList.get(voList.size() - 1).getTm().equals(forecastVoList.get(0).getDateStr())){
|
||||
voList.remove(voList.size() - 1);
|
||||
}
|
||||
for (int j = 0; j < forecastVoList.size(); j++) {
|
||||
FloodAlgorithemVo floodAlgorithemVo = forecastVoList.get(j);
|
||||
String dateStr = floodAlgorithemVo.getDateStr();
|
||||
|
|
@ -268,6 +273,7 @@ public class ForecastResultsService extends ServiceImpl<ForecastResultsMapper, F
|
|||
resultVo.setIspreDrp(dateTm.compareTo(nowHourTime) <= 0 ? "0" : "1");// 0:真实 1:预测
|
||||
resultVo.setR(floodAlgorithemVo.getR());
|
||||
resultVo.setFlLowLimLev(attResBase.getFlLowLimLev());
|
||||
resultVo.setCurrentYdgdyjz(MapUtil.get(paramMap, "ydgdyjz", BigDecimal.class, BigDecimal.ZERO));
|
||||
resultVo.setPa(floodAlgorithemVo.getPa());
|
||||
voList.add(resultVo);
|
||||
}
|
||||
|
|
@ -335,6 +341,11 @@ public class ForecastResultsService extends ServiceImpl<ForecastResultsMapper, F
|
|||
* @auther: cxw
|
||||
*/
|
||||
private List<StRsvrR> reorganizeRsvrRData(List<StRsvrR> rsvrRRealList, double dt) {
|
||||
// 只保留整小时的数据
|
||||
rsvrRRealList = rsvrRRealList.stream().filter(entity -> {
|
||||
Date date = entity.getTm();
|
||||
return date.getMinutes() == 0 && date.getSeconds() == 0;
|
||||
}).collect(Collectors.toList());
|
||||
// 每次加0小时30分钟,根据dt设置,此时dt=0.5小时
|
||||
int totalMinutes = (int) Math.round(dt * 60);
|
||||
// 计算小时数
|
||||
|
|
@ -382,6 +393,11 @@ public class ForecastResultsService extends ServiceImpl<ForecastResultsMapper, F
|
|||
* @auther: cxw
|
||||
*/
|
||||
private Map<String, List<StPptnR>> reorganizePptnRData(List<StPptnR> filterList, double dt, Date startTm, Date endTm) {
|
||||
// 只保留整小时的数据
|
||||
filterList = filterList.stream().filter(entity -> {
|
||||
Date date = entity.getTm();
|
||||
return date.getMinutes() == 0 && date.getSeconds() == 0;
|
||||
}).collect(Collectors.toList());
|
||||
Map<String, List<StPptnR>> retMap = new HashMap<>();
|
||||
Map<String, String> tmDrpMap = filterList.stream().collect(Collectors.toMap(pptnR -> sdfMinute.format(pptnR.getTm()), StPptnR::getDrp));
|
||||
List<StPptnR> listForForecast = new ArrayList<>();// 传给预测程序使用,缺失的数据为0
|
||||
|
|
|
|||
Loading…
Reference in New Issue