优化预报结果返回

master
chenxiwang 2024-08-07 15:53:24 +08:00
parent 9a60fba2b3
commit ff77d4b8b8
3 changed files with 46 additions and 1 deletions

View File

@ -128,6 +128,7 @@ public class ForecastProjectController {
List<ForecastResults> resultList = forecastResultsService.list(new QueryWrapper<ForecastResults>().eq("project_id", projectId));
if(CollectionUtils.isNotEmpty(resultList)) {
forecastProject.setVoList(JSON.parseArray(JSON.toJSONString(resultList), ForecastResultVo.class));
forecastResultsService.handleVoList(forecastProject);
}
return R.ok(forecastProject);
}

View File

@ -1,6 +1,7 @@
package com.gunshi.project.xyt.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -26,6 +27,7 @@ import org.springframework.web.bind.annotation.RestController;
import java.io.Serializable;
import java.util.List;
/**
* : _
* author: cxw
@ -39,7 +41,6 @@ public class ForecastResultsController {
@Autowired
private ForecastResultsService service;
@Operation(summary = "新增")
@PostMapping("/insert")
public R<ForecastResults> insert(@Validated(Insert.class) @RequestBody ForecastResults dto) {
@ -93,6 +94,9 @@ public class ForecastResultsController {
forecastProject.setForecastPeriod(forecastTask.getForecastPeriod());
forecastProject.setForecastWarm(forecastTask.getForecastWarm());
forecastProject.setVoList(voList);
if (CollectionUtils.isNotEmpty(voList)) {
service.handleVoList(forecastProject);
}
return R.ok(forecastProject);
}
}

View File

@ -14,6 +14,7 @@ import com.gunshi.project.xyt.grb.RainGrib2Layer;
import com.gunshi.project.xyt.mapper.ForecastResultsMapper;
import com.gunshi.project.xyt.model.AttResBase;
import com.gunshi.project.xyt.model.ForecastPa;
import com.gunshi.project.xyt.model.ForecastProject;
import com.gunshi.project.xyt.model.ForecastResults;
import com.gunshi.project.xyt.model.ForecastTask;
import com.gunshi.project.xyt.model.ForecastU;
@ -416,4 +417,43 @@ public class ForecastResultsService extends ServiceImpl<ForecastResultsMapper, F
calendar.set(Calendar.MILLISECOND, 0);
return date.before(calendar.getTime());
}
/**
* @description: voList
* @param forecastProject
* @return: void
* @auther: cxw
* @date: 2024-08-07, , 15:52:19
*/
public void handleVoList(ForecastProject forecastProject) {
Map<String, Object> paramMap = forecastUseparamService.getMap(new QueryWrapper<ForecastUseparam>().eq("param_code", "dt"));
if(paramMap != null){
BigDecimal dt = new BigDecimal(paramMap.get("param_value").toString());// 时间间隔小时h
BigDecimal ycMaxSwH = BigDecimal.ZERO;// 预报最高调洪水位
BigDecimal ycMaxRkQ = BigDecimal.ZERO;// 预报最大入库流量
BigDecimal ycMaxCkQ = BigDecimal.ZERO;// 预报最大下泄流量
BigDecimal ycSumRkQ = BigDecimal.ZERO;// 预报入库流量累计和
for (ForecastResultVo vo : forecastProject.getVoList()){
BigDecimal ycSwHValue = vo.getYcSwHValue();
if (ycSwHValue.compareTo(ycMaxSwH) > 0) {
ycMaxSwH = ycSwHValue;
}
BigDecimal ycRkQValue = vo.getYcRkQValue();
if (ycRkQValue.compareTo(ycMaxRkQ) > 0) {
ycMaxRkQ = ycRkQValue;
}
BigDecimal ycCkQValue = vo.getYcCkQValue();
if (ycCkQValue.compareTo(ycMaxCkQ) > 0) {
ycMaxCkQ = ycCkQValue;
}
ycSumRkQ = ycSumRkQ.add(ycRkQValue);
}
// 预报洪水总量(万m³)=预报入库流量累计和 X (dt*60*60) / 10000
BigDecimal ycSumFlood = ycSumRkQ.multiply((dt.multiply(new BigDecimal(3600)))).divide(new BigDecimal(10000), 6, BigDecimal.ROUND_HALF_UP).stripTrailingZeros();
forecastProject.setYcMaxSwH(ycMaxSwH);
forecastProject.setYcMaxRkQ(ycMaxRkQ);
forecastProject.setYcMaxCkQ(ycMaxCkQ);
forecastProject.setYcSumFlood(ycSumFlood);
}
}
}