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 rz(@RequestBody ReservoirWaterCommonSo reservoirWaterCommonSo) { return R.ok(reservoirWaterService.rz(reservoirWaterCommonSo)); } @Post(path = "/list", summary = "水库水情列表") public R> list() { return R.ok(reservoirWaterService.list()); } @Post(path = "/listV2", summary = "水库水情列表") public R> listV2() { return R.ok(reservoirWaterService.listV2()); } @Get(path = "/image/channel", summary = "图像监测视角下拉") public R> channel(@Schema(name = "resCode") @RequestParam("resCode") String resCode) { return R.ok(reservoirWaterService.channel(resCode)); } @Post(path = "/image/info", summary = "图片信息") public R> imageInfo(@RequestBody @Validated PicQuerySo picQuerySo) { return R.ok(reservoirWaterService.imageInfo(picQuerySo)); } @Post(path = "/real/img", summary = "水库实时图像") public R> realImg(@RequestBody ReservoirWaterCommonSo reservoirWaterCommonSo) { return R.ok(reservoirWaterService.realImg(reservoirWaterCommonSo)); } @Post(path = "/monitor/data", summary = "监测数据") public R> monitorData(@RequestBody @Validated DataQueryCommonSo dataQueryCommonSo) { return R.ok(reservoirWaterService.monitorData(dataQueryCommonSo)); } @Post(path = "/data", summary = "闸阀总览-库容曲线") public R> data(@RequestBody @Validated DataQueryCommonSo dataQueryCommonSo) { dataQueryCommonSo.setStcd("232");//黑石咀水库 return R.ok(reservoirWaterService.data(dataQueryCommonSo)); } @Post(path = "/waterInfo", summary = "闸阀总览-库容曲线") public R waterInfo(@RequestBody DataQueryCommonSo dataQueryCommonSo) { AttResMonitorVo attResMonitorVo = new AttResMonitorVo(); LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); qw.eq(StRsvrR::getStcd,dataQueryCommonSo.getStcd()).orderByDesc(StRsvrR::getTm).last(" limit 1"); List list1 = stRsvrRService.list(qw); if(CollectionUtils.isNotEmpty(list1)){ attResMonitorVo.setRz(new BigDecimal(list1.get(0).getRz())); attResMonitorVo.setTm(list1.get(0).getTm()); } LambdaQueryWrapper qw2= new LambdaQueryWrapper<>(); qw2.eq(StPptnR::getStcd,dataQueryCommonSo.getStcd()).orderByDesc(StPptnR::getTm).last(" limit 1"); List list3 = stPptnRService.list(qw2); if(CollectionUtils.isNotEmpty(list3)){ attResMonitorVo.setTodayRainNum(new BigDecimal(list3.get(0).getDrp())); attResMonitorVo.setTodayRainNumTm(list3.get(0).getTm()); } List list2 = stWaterRRealService.listRelated(); if(CollectionUtils.isNotEmpty(list2)){ // 获取当月核定流量 ResMonthEcoFlow resMonthEcoFlow = resMonthEcoFlowService.getOne(new QueryWrapper().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> dataPage(@RequestBody @Validated PicQuerySo picQuerySo) { return R.ok(reservoirWaterService.dataPage(picQuerySo)); } @Get(path = "/detail", summary = "监测详细数据(下方表格)") public R detail(@Schema(name = "stcd") @RequestParam("stcd") String stcd) { AttRvMonitorDetailVo detail; List riverStcd = riverWaterService.getRiverStcd(); if(riverStcd.contains(stcd)){ detail = riverWaterService.detail(stcd); }else{ detail = reservoirWaterService.detail(stcd); } return R.ok(detail); } }