|
@ -2,7 +2,6 @@ package com.kms.yg.cz.service; |
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSON; |
|
|
import com.alibaba.fastjson.JSON; |
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper; |
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper; |
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
import com.kms.yg.cz.domain.MonitorConfig; |
|
|
import com.kms.yg.cz.domain.MonitorConfig; |
|
@ -14,14 +13,16 @@ import com.kms.yg.cz.enmu.*; |
|
|
import com.kms.yg.cz.enmu.MonitorTypeEnum; |
|
|
import com.kms.yg.cz.enmu.MonitorTypeEnum; |
|
|
import com.kms.yg.cz.mapper.MonitorConfigMapper; |
|
|
import com.kms.yg.cz.mapper.MonitorConfigMapper; |
|
|
import com.kms.yg.sk.domain.AttResRspp; |
|
|
import com.kms.yg.sk.domain.AttResRspp; |
|
|
import com.kms.yxgh.base.domain.monitor.att.AttResRsppJsonModel; |
|
|
|
|
|
import com.kms.yxgh.base.domain.monitor.att.AttResSwJsonMode; |
|
|
|
|
|
import com.kms.yg.sk.dto.AttResTaskViewDto; |
|
|
import com.kms.yg.sk.dto.AttResTaskViewDto; |
|
|
import com.kms.yxgh.base.domain.monitor.MsHdmObp; |
|
|
import com.kms.yxgh.base.domain.monitor.MsHdmObp; |
|
|
import com.kms.yxgh.base.domain.monitor.MsHdmRsvr; |
|
|
import com.kms.yxgh.base.domain.monitor.MsHdmRsvr; |
|
|
import com.kms.yxgh.base.domain.monitor.MsHdmRsvrav; |
|
|
import com.kms.yxgh.base.domain.monitor.MsHdmRsvrav; |
|
|
import com.kms.yxgh.base.domain.monitor.MsHdmRsvrevs; |
|
|
import com.kms.yxgh.base.domain.monitor.MsHdmRsvrevs; |
|
|
|
|
|
import com.kms.yxgh.base.domain.sk.AttResSw; |
|
|
|
|
|
import com.kms.yxgh.base.domain.sk.SkAttDamBase; |
|
|
|
|
|
import com.kms.yxgh.base.domain.sk.SkRelStRes; |
|
|
import com.kms.yxgh.common.dto.OperatorDto; |
|
|
import com.kms.yxgh.common.dto.OperatorDto; |
|
|
|
|
|
import com.kms.yxgh.common.service.BsSgcSkStatisticsService; |
|
|
import com.kms.yxgh.util.BeanCopyUtils; |
|
|
import com.kms.yxgh.util.BeanCopyUtils; |
|
|
import com.kms.yxgh.util.DataCenterRestTemplateUtils; |
|
|
import com.kms.yxgh.util.DataCenterRestTemplateUtils; |
|
|
import com.shuili.common.utils.StringUtils; |
|
|
import com.shuili.common.utils.StringUtils; |
|
@ -29,6 +30,7 @@ import lombok.extern.slf4j.Slf4j; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.beans.factory.annotation.Value; |
|
|
import org.springframework.beans.factory.annotation.Value; |
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
import org.springframework.util.CollectionUtils; |
|
|
|
|
|
|
|
|
import java.util.*; |
|
|
import java.util.*; |
|
|
import java.util.concurrent.CompletableFuture; |
|
|
import java.util.concurrent.CompletableFuture; |
|
@ -52,12 +54,24 @@ public class MonitorService { |
|
|
@Value("${dataSync.url:}") |
|
|
@Value("${dataSync.url:}") |
|
|
private String dataSyncUrl; |
|
|
private String dataSyncUrl; |
|
|
@Value("#{${dataSync.paths:{}}}") |
|
|
@Value("#{${dataSync.paths:{}}}") |
|
|
private Map<String, String> paths = new HashMap<>(); |
|
|
private Map<String, String> paths = new HashMap<>(); |
|
|
|
|
|
|
|
|
|
|
|
// todo 临时
|
|
|
|
|
|
private void initPath (Map<String, String> map) { |
|
|
|
|
|
paths.put("att_res_sw","/ZHSL_ZY/jck/yggx/dws_att_res_sw"); |
|
|
|
|
|
paths.put("att_res_rspp","/ZHSL_ZY/jck/ytjgx/dws_att_res_rspp"); |
|
|
|
|
|
paths.put("att_dam_base","/ZHSL_ZY/jck/yggx/dws_att_dam_base"); |
|
|
|
|
|
paths.put("ms_hdm_rsvr","/ZHSL_ZY/bzjck/ms_hdm_rsvr"); |
|
|
|
|
|
paths.put("dws_rel_st_res","/ZHSL_ZY/jck/ytjgx/dws_rel_st_res"); |
|
|
|
|
|
paths.put("ms_hdm_obp","/ZHSL_ZY/bzjck/ms_hdm_obp"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public IPage<Object> pageQuery(MonitorQueDto queDto) { |
|
|
public IPage<Object> pageQuery(MonitorQueDto queDto) { |
|
|
MonitorSourceEnum table = queDto.getMonitorType(); |
|
|
MonitorSourceEnum table = queDto.getMonitorType(); |
|
|
String path = paths.get(table.getTableName()); |
|
|
String path = paths.get(table.getTableName()); |
|
|
|
|
|
// todo 水库总揽临时 等淮哥来
|
|
|
|
|
|
initPath(paths); |
|
|
if (path == null) { |
|
|
if (path == null) { |
|
|
log.error("未找到对应的路径配置, table:{}", table); |
|
|
log.error("未找到对应的路径配置, table:{}", table); |
|
|
return table.getMockData(queDto); |
|
|
return table.getMockData(queDto); |
|
@ -288,33 +302,115 @@ public class MonitorService { |
|
|
MonitorQueDto sp=new MonitorQueDto(); |
|
|
MonitorQueDto sp=new MonitorQueDto(); |
|
|
sp.setResCode(dto.getResCode()); |
|
|
sp.setResCode(dto.getResCode()); |
|
|
|
|
|
|
|
|
CompletableFuture<AttResSwJsonMode> currentWatterFuture = CompletableFuture.supplyAsync(() -> queryDataOne(ATT_RES_SW, sp)); |
|
|
CompletableFuture<AttResSw> currentWatterFuture = CompletableFuture.supplyAsync(() -> queryDataOne(MonitorSourceEnum.ATT_RES_SW, sp)); |
|
|
AttResSwJsonMode attResSw = currentWatterFuture.join(); |
|
|
AttResSw attResSw = currentWatterFuture.join(); |
|
|
// 堰顶高程
|
|
|
// 堰顶高程
|
|
|
if (!Objects.isNull(attResSw)) { |
|
|
if (!Objects.isNull(attResSw)) { |
|
|
attResTaskViewDto.setElevationWeirCrest(attResSw.getWrcrel()); |
|
|
attResTaskViewDto.setElevationWeirCrest(attResSw.getWrcrel()); |
|
|
} |
|
|
} |
|
|
// 设计洪水位、校核洪水位
|
|
|
// 设计洪水位、校核洪水位
|
|
|
CompletableFuture<AttResRsppJsonModel> attResRsppJsonModelFuture = CompletableFuture.supplyAsync(() -> queryDataOne(ATT_RES_RSPP, sp)); |
|
|
CompletableFuture<AttResRspp> attResRsppJsonModelFuture = CompletableFuture.supplyAsync(() -> queryDataOne(MonitorSourceEnum.ATT_RES_RSPP, sp)); |
|
|
AttResRsppJsonModel attResRsppJsonModel = attResRsppJsonModelFuture.join(); |
|
|
AttResRspp attResRsppJsonModel = attResRsppJsonModelFuture.join(); |
|
|
if (!Objects.isNull(attResRsppJsonModel)) { |
|
|
if (!Objects.isNull(attResRsppJsonModel)) { |
|
|
attResTaskViewDto.setDesignLevel(attResRsppJsonModel.getDsfllv()); |
|
|
attResTaskViewDto.setDesignLevel(attResRsppJsonModel.getDsfllv()); |
|
|
attResTaskViewDto.setCheckWaterLevel(attResRsppJsonModel.getChfllv()); |
|
|
attResTaskViewDto.setCheckWaterLevel(attResRsppJsonModel.getChfllv()); |
|
|
} |
|
|
} |
|
|
|
|
|
// 坝顶高程
|
|
|
|
|
|
CompletableFuture<List<SkAttDamBase>> attDamBaseJsonMoldeFuture = CompletableFuture.supplyAsync(() -> queryDataList(MonitorSourceEnum.ATT_DAM_BASE, sp)); |
|
|
|
|
|
List<SkAttDamBase> attDamBaseJsonMoldeList = attDamBaseJsonMoldeFuture.join(); |
|
|
|
|
|
if (!CollectionUtils.isEmpty(attDamBaseJsonMoldeList)) { |
|
|
|
|
|
attDamBaseJsonMoldeList.stream() |
|
|
|
|
|
.map(SkAttDamBase::getDamTopElev) |
|
|
|
|
|
.filter(e-> !StringUtils.isNotEmpty(e)) |
|
|
|
|
|
.mapToDouble(Double::parseDouble) |
|
|
|
|
|
.max() |
|
|
|
|
|
.ifPresent(aDouble -> attResTaskViewDto.setCrestElevation(String.format("%.2f", aDouble))); |
|
|
|
|
|
} |
|
|
|
|
|
// 代表站
|
|
|
|
|
|
CompletableFuture<SkRelStRes> relStResJsonModeFuture = CompletableFuture.supplyAsync(() -> queryDataOne(MonitorSourceEnum.DWS_REL_ST_RES, sp)); |
|
|
|
|
|
SkRelStRes relStResJsonMode = relStResJsonModeFuture.join(); |
|
|
|
|
|
if (Objects.isNull(relStResJsonMode)) { |
|
|
|
|
|
return attResTaskViewDto; |
|
|
|
|
|
} |
|
|
|
|
|
attResTaskViewDto.setStationName(relStResJsonMode.getStName()); |
|
|
|
|
|
attResTaskViewDto.setStationCode(relStResJsonMode.getStCode()); |
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
// CompletableFuture<MsHdmRsvr> currentWatterFuture = CompletableFuture.supplyAsync(() -> queryDataOne(MS_HDM_RSVR, sp));
|
|
|
|
|
|
//
|
|
|
|
|
|
// CompletableFuture<MsHdmRsvrav> avWatterFuture = CompletableFuture.supplyAsync(() -> queryDataOne(MonitorSourceEnum.MS_HDM_RSVRAV, sp));
|
|
|
|
|
|
// CompletableFuture<MsHdmRsvrevs> mxWatterFuture = CompletableFuture.supplyAsync(() -> queryDataOne(MonitorSourceEnum.MS_HDM_RSVREVS, sp));
|
|
|
|
|
|
// CompletableFuture<List<MsHdmObp>> currentFlowFuture = CompletableFuture.supplyAsync(() -> queryDataList(MonitorSourceEnum.MS_HDM_OBP, sp));
|
|
|
|
|
|
// CompletableFuture.allOf(currentWatterFuture, avWatterFuture, mxWatterFuture, currentFlowFuture).join();
|
|
|
|
|
|
//
|
|
|
|
|
|
// MsHdmRsvr currentWatter = currentWatterFuture.join();
|
|
|
|
|
|
// MsHdmRsvrav avWatter = avWatterFuture.join();
|
|
|
|
|
|
// MsHdmRsvrevs mxWatter = mxWatterFuture.join();
|
|
|
|
|
|
// List<MsHdmObp> currentFlow = currentFlowFuture.join();
|
|
|
|
|
|
|
|
|
|
|
|
return null; |
|
|
// 当前水位
|
|
|
|
|
|
sp.setStcd(relStResJsonMode.getStCode()); |
|
|
|
|
|
sp.setStartTime(BsSgcSkStatisticsService.getStartOfDay()); |
|
|
|
|
|
sp.setEndTime(BsSgcSkStatisticsService.getStartOfNextDay()); |
|
|
|
|
|
CompletableFuture<List<MsHdmRsvr>> msHdmRsvrFuture = CompletableFuture.supplyAsync(() -> queryDataList(MonitorSourceEnum.MS_HDM_RSVR, sp)); |
|
|
|
|
|
List<MsHdmRsvr> msHdmRsvrFutureList = msHdmRsvrFuture.join(); |
|
|
|
|
|
if (!CollectionUtils.isEmpty(msHdmRsvrFutureList)) { |
|
|
|
|
|
// 当前水位
|
|
|
|
|
|
MsHdmRsvr msHdmRsvr = msHdmRsvrFutureList.stream() |
|
|
|
|
|
.filter(e->!Objects.isNull(e.getTm())) |
|
|
|
|
|
.max(Comparator.comparing(MsHdmRsvr::getTm)).orElse(null); |
|
|
|
|
|
if (!Objects.isNull(msHdmRsvr)) { |
|
|
|
|
|
attResTaskViewDto.setCurrentWaterLevel(msHdmRsvr.getRz()); |
|
|
|
|
|
// 入库流量
|
|
|
|
|
|
attResTaskViewDto.setIncomingFlow(msHdmRsvr.getInq()); |
|
|
|
|
|
// 出库流量
|
|
|
|
|
|
attResTaskViewDto.setOutboundFlow(msHdmRsvr.getOtq()); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 去年今日
|
|
|
|
|
|
sp.setStartTime(BsSgcSkStatisticsService.getLastYearTodayStartOfDay()); |
|
|
|
|
|
sp.setEndTime(BsSgcSkStatisticsService.getLastYearTomorrowStartOfDay()); |
|
|
|
|
|
CompletableFuture<List<MsHdmRsvr>> msHdmRsvrLastFuture = CompletableFuture.supplyAsync(() -> queryDataList(MonitorSourceEnum.MS_HDM_RSVR, sp)); |
|
|
|
|
|
List<MsHdmRsvr> msHdmRsvrLastFutureList = msHdmRsvrLastFuture.join(); |
|
|
|
|
|
if (!CollectionUtils.isEmpty(msHdmRsvrLastFutureList)) { |
|
|
|
|
|
MsHdmRsvr msHdmRsvr = msHdmRsvrFutureList.stream() |
|
|
|
|
|
.filter(e->!Objects.isNull(e.getTm())) |
|
|
|
|
|
.max(Comparator.comparing(MsHdmRsvr::getTm)).orElse(null); |
|
|
|
|
|
if (!Objects.isNull(msHdmRsvr)) { |
|
|
|
|
|
// 去年今日
|
|
|
|
|
|
attResTaskViewDto.setLastYearToday(msHdmRsvr.getRz()); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 近一个小时
|
|
|
|
|
|
sp.setStartTime(BsSgcSkStatisticsService.getTimeBeforeHours(1)); |
|
|
|
|
|
sp.setEndTime(BsSgcSkStatisticsService.getCurrentTime()); |
|
|
|
|
|
CompletableFuture<List<MsHdmObp>> msHdmObpOneListFuture = CompletableFuture.supplyAsync(() -> queryDataList(MS_HDM_OBP, sp)); |
|
|
|
|
|
List<MsHdmObp> msHdmObpOneList = msHdmObpOneListFuture.join(); |
|
|
|
|
|
if (!CollectionUtils.isEmpty(msHdmObpOneList)) { |
|
|
|
|
|
// 近一个小时
|
|
|
|
|
|
attResTaskViewDto.setNearlyAnHour(BsSgcSkStatisticsService.getSum(msHdmObpOneList)); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 近6个小时
|
|
|
|
|
|
sp.setStartTime(BsSgcSkStatisticsService.getTimeBeforeHours(6)); |
|
|
|
|
|
sp.setEndTime(BsSgcSkStatisticsService.getCurrentTime()); |
|
|
|
|
|
CompletableFuture<List<MsHdmObp>> msHdmObpSixListFuture = CompletableFuture.supplyAsync(() -> queryDataList(MS_HDM_OBP, sp)); |
|
|
|
|
|
List<MsHdmObp> msHdmObpSixList = msHdmObpSixListFuture.join(); |
|
|
|
|
|
if (!CollectionUtils.isEmpty(msHdmObpSixList)) { |
|
|
|
|
|
// 近6个小时
|
|
|
|
|
|
attResTaskViewDto.setNearlySixHours(BsSgcSkStatisticsService.getSum(msHdmObpSixList)); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 近9个小时
|
|
|
|
|
|
sp.setStartTime(BsSgcSkStatisticsService.getTimeBeforeHours(9)); |
|
|
|
|
|
sp.setEndTime(BsSgcSkStatisticsService.getCurrentTime()); |
|
|
|
|
|
CompletableFuture<List<MsHdmObp>> msHdmObpNineListFuture = CompletableFuture.supplyAsync(() -> queryDataList(MS_HDM_OBP, sp)); |
|
|
|
|
|
List<MsHdmObp> msHdmObpNineList = msHdmObpNineListFuture.join(); |
|
|
|
|
|
if (!CollectionUtils.isEmpty(msHdmObpNineList)) { |
|
|
|
|
|
// 近9个小时
|
|
|
|
|
|
attResTaskViewDto.setNearlyNineHours(BsSgcSkStatisticsService.getSum(msHdmObpNineList)); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 近12个小时
|
|
|
|
|
|
sp.setStartTime(BsSgcSkStatisticsService.getTimeBeforeHours(12)); |
|
|
|
|
|
sp.setEndTime(BsSgcSkStatisticsService.getCurrentTime()); |
|
|
|
|
|
CompletableFuture<List<MsHdmObp>> msHdmObpTwelveListFuture = CompletableFuture.supplyAsync(() -> queryDataList(MS_HDM_OBP, sp)); |
|
|
|
|
|
List<MsHdmObp> msHdmObpTwelveList = msHdmObpTwelveListFuture.join(); |
|
|
|
|
|
if (!CollectionUtils.isEmpty(msHdmObpTwelveList)) { |
|
|
|
|
|
// 近12个小时
|
|
|
|
|
|
attResTaskViewDto.setNearlyTwelveHours(BsSgcSkStatisticsService.getSum(msHdmObpNineList)); |
|
|
|
|
|
} |
|
|
|
|
|
return attResTaskViewDto; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|