162 lines
6.5 KiB
Java
162 lines
6.5 KiB
Java
package com.gunshi.project.hsz.controller;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.gunshi.core.annotation.Get;
|
|
import com.gunshi.core.annotation.Post;
|
|
import com.gunshi.core.result.R;
|
|
import com.gunshi.project.hsz.common.model.StPptnR;
|
|
import com.gunshi.project.hsz.common.model.StRsvrR;
|
|
import com.gunshi.project.hsz.common.model.StStbprpB;
|
|
import com.gunshi.project.hsz.entity.so.DataQueryCommonSo;
|
|
import com.gunshi.project.hsz.entity.so.PicQuerySo;
|
|
import com.gunshi.project.hsz.entity.so.ReservoirWaterCommonSo;
|
|
import com.gunshi.project.hsz.entity.vo.*;
|
|
import com.gunshi.project.hsz.model.*;
|
|
import com.gunshi.project.hsz.service.*;
|
|
import io.swagger.v3.oas.annotations.media.Schema;
|
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.validation.annotation.Validated;
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
import java.math.BigDecimal;
|
|
import java.util.Calendar;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* Description:
|
|
* Created by wanyan on 2024/2/20
|
|
*
|
|
* @author wanyan
|
|
* @version 1.0
|
|
*/
|
|
@RestController
|
|
@RequestMapping("/reservoir/water")
|
|
@Tag(name = "水库水情")
|
|
public class ReservoirWaterController {
|
|
|
|
|
|
@Autowired
|
|
private ReservoirWaterService reservoirWaterService;
|
|
|
|
@Autowired
|
|
private RealRainService realRainService;
|
|
|
|
@Autowired
|
|
private StWaterRRealService stWaterRRealService;
|
|
|
|
@Autowired
|
|
private ResMonthEcoFlowService resMonthEcoFlowService;
|
|
|
|
@Autowired
|
|
private StRsvrRService stRsvrRService;
|
|
|
|
@Autowired
|
|
private StPptnRService stPptnRService;
|
|
|
|
@Autowired
|
|
private RiverWaterService riverWaterService;
|
|
|
|
@Post(path = "/rz", summary = "水库水位")
|
|
public R<StRsvrVo> rz(@RequestBody ReservoirWaterCommonSo reservoirWaterCommonSo) {
|
|
return R.ok(reservoirWaterService.rz(reservoirWaterCommonSo));
|
|
}
|
|
|
|
@Post(path = "/list", summary = "水库水情列表")
|
|
public R<List<AttResBaseVo>> list() {
|
|
return R.ok(reservoirWaterService.list());
|
|
}
|
|
|
|
|
|
@Post(path = "/listV2", summary = "水库水情列表")
|
|
public R<List<AttResBaseVo>> listV2() {
|
|
return R.ok(reservoirWaterService.listV2());
|
|
}
|
|
|
|
@Get(path = "/image/channel", summary = "图像监测视角下拉")
|
|
public R<List<StStbprpB>> channel(@Schema(name = "resCode") @RequestParam("resCode") String resCode) {
|
|
return R.ok(reservoirWaterService.channel(resCode));
|
|
}
|
|
|
|
@Post(path = "/image/info", summary = "图片信息")
|
|
public R<Page<StImgR>> imageInfo(@RequestBody @Validated PicQuerySo picQuerySo) {
|
|
return R.ok(reservoirWaterService.imageInfo(picQuerySo));
|
|
}
|
|
|
|
@Post(path = "/real/img", summary = "水库实时图像")
|
|
public R<List<StImgRReal>> realImg(@RequestBody ReservoirWaterCommonSo reservoirWaterCommonSo) {
|
|
return R.ok(reservoirWaterService.realImg(reservoirWaterCommonSo));
|
|
}
|
|
|
|
@Post(path = "/monitor/data", summary = "监测数据")
|
|
public R<List<AttResMonitorVo>> monitorData(@RequestBody @Validated DataQueryCommonSo dataQueryCommonSo) {
|
|
return R.ok(reservoirWaterService.monitorData(dataQueryCommonSo));
|
|
}
|
|
|
|
@Post(path = "/data", summary = "闸阀总览-库容曲线")
|
|
public R<List<AttResMonitorVo>> data(@RequestBody @Validated DataQueryCommonSo dataQueryCommonSo) {
|
|
dataQueryCommonSo.setStcd("232");//黑石咀水库
|
|
return R.ok(reservoirWaterService.data(dataQueryCommonSo));
|
|
}
|
|
|
|
@Post(path = "/waterInfo", summary = "闸阀总览-库容曲线")
|
|
public R<AttResMonitorVo> waterInfo(@RequestBody DataQueryCommonSo dataQueryCommonSo) {
|
|
AttResMonitorVo attResMonitorVo = new AttResMonitorVo();
|
|
|
|
LambdaQueryWrapper<StRsvrR> qw = new LambdaQueryWrapper<>();
|
|
qw.eq(StRsvrR::getStcd,dataQueryCommonSo.getStcd()).orderByDesc(StRsvrR::getTm).last(" limit 1");
|
|
List<StRsvrR> list1 = stRsvrRService.list(qw);
|
|
if(CollectionUtils.isNotEmpty(list1)){
|
|
attResMonitorVo.setRz(new BigDecimal(list1.get(0).getRz()));
|
|
attResMonitorVo.setTm(list1.get(0).getTm());
|
|
}
|
|
LambdaQueryWrapper<StPptnR> qw2= new LambdaQueryWrapper<>();
|
|
qw2.eq(StPptnR::getStcd,dataQueryCommonSo.getStcd()).orderByDesc(StPptnR::getTm).last(" limit 1");
|
|
List<StPptnR> list3 = stPptnRService.list(qw2);
|
|
if(CollectionUtils.isNotEmpty(list3)){
|
|
attResMonitorVo.setTodayRainNum(new BigDecimal(list3.get(0).getDrp()));
|
|
attResMonitorVo.setTodayRainNumTm(list3.get(0).getTm());
|
|
}
|
|
|
|
List<StWaterRReal> list2 = stWaterRRealService.listRelated();
|
|
if(CollectionUtils.isNotEmpty(list2)){
|
|
// 获取当月核定流量
|
|
ResMonthEcoFlow resMonthEcoFlow = resMonthEcoFlowService.getOne(new QueryWrapper<ResMonthEcoFlow>().eq("month", Calendar.getInstance().get(Calendar.MONTH) + 1));
|
|
if(ObjectUtils.isNotEmpty(resMonthEcoFlow)){
|
|
for(StWaterRReal real : list2){
|
|
real.setResMonthEcoFlow(resMonthEcoFlow);
|
|
}
|
|
}
|
|
StWaterRReal stWaterRReal = list2.stream().max((o1, o2) -> o1.getTm().compareTo(o2.getTm())).orElse(new StWaterRReal());
|
|
attResMonitorVo.setOutPowerNum(stWaterRReal.getQ());
|
|
attResMonitorVo.setOutPowerNumTm(stWaterRReal.getTm());
|
|
}
|
|
return R.ok(attResMonitorVo);
|
|
}
|
|
|
|
@Post(path = "/data/page", summary = "分页库容曲线")
|
|
public R<Page<AttResMonitorVo>> dataPage(@RequestBody @Validated PicQuerySo picQuerySo) {
|
|
return R.ok(reservoirWaterService.dataPage(picQuerySo));
|
|
}
|
|
|
|
@Get(path = "/detail", summary = "监测详细数据(下方表格)")
|
|
public R<AttRvMonitorDetailVo> detail(@Schema(name = "stcd") @RequestParam("stcd") String stcd) {
|
|
AttRvMonitorDetailVo detail;
|
|
List<String> riverStcd = riverWaterService.getRiverStcd();
|
|
if(riverStcd.contains(stcd)){
|
|
detail = riverWaterService.detail(stcd);
|
|
}else{
|
|
detail = reservoirWaterService.detail(stcd);
|
|
}
|
|
return R.ok(detail);
|
|
}
|
|
}
|