|
|
@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper; |
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|
|
|
import com.kms.yg.cz.domain.MonitorConfig; |
|
|
|
import com.kms.yg.cz.dto.CharInfoDto; |
|
|
|
import com.kms.yg.cz.dto.CurrentWaterMonitorDto; |
|
|
@ -11,9 +12,11 @@ import com.kms.yg.cz.dto.MonitorConfigDto; |
|
|
|
import com.kms.yg.cz.dto.MonitorQueDto; |
|
|
|
import com.kms.yg.cz.enmu.MonitorSourceEnum; |
|
|
|
import com.kms.yg.cz.mapper.MonitorConfigMapper; |
|
|
|
import com.kms.yxgh.base.domain.monitor.*; |
|
|
|
import com.kms.yxgh.common.dto.OperatorDto; |
|
|
|
import com.kms.yxgh.util.BeanCopyUtils; |
|
|
|
import com.kms.yxgh.util.DataCenterRestTemplateUtils; |
|
|
|
import com.shuili.common.utils.StringUtils; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.beans.factory.annotation.Value; |
|
|
@ -23,6 +26,7 @@ import java.util.Collections; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.concurrent.CompletableFuture; |
|
|
|
import java.util.function.Function; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
@ -63,8 +67,48 @@ public class MonitorService { |
|
|
|
} |
|
|
|
|
|
|
|
public CurrentWaterMonitorDto watter(MonitorQueDto sp) { |
|
|
|
CompletableFuture<MsHdmRsvr> currentWatterFuture = CompletableFuture.supplyAsync(() -> queryDataOne(MonitorSourceEnum.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(() -> queryDataOne(MonitorSourceEnum.MS_HDM_OBP, sp)); |
|
|
|
CompletableFuture<List<MsHdmPstat>> avFlowFuture = CompletableFuture.supplyAsync(() -> queryDataList(MonitorSourceEnum.MS_HDM_PSTAT, sp)); |
|
|
|
CompletableFuture.allOf(currentWatterFuture, avWatterFuture, mxWatterFuture, currentFlowFuture, avFlowFuture).join(); |
|
|
|
|
|
|
|
return null; |
|
|
|
MsHdmRsvr currentWatter = currentWatterFuture.join(); |
|
|
|
MsHdmRsvrav avWatter = avWatterFuture.join(); |
|
|
|
MsHdmRsvrevs mxWatter = mxWatterFuture.join(); |
|
|
|
List<MsHdmObp> currentFlow = currentFlowFuture.join(); |
|
|
|
|
|
|
|
CurrentWaterMonitorDto currentWaterMonitorDto = new CurrentWaterMonitorDto(); |
|
|
|
if (currentWatter != null) { |
|
|
|
currentWaterMonitorDto.setCurrentRz(currentWatter.getRz()); |
|
|
|
currentWaterMonitorDto.setCurrentW(currentWatter.getW()); |
|
|
|
} |
|
|
|
if (avWatter != null) { |
|
|
|
currentWaterMonitorDto.setAvgRz(avWatter.getAvrz()); |
|
|
|
} |
|
|
|
if (mxWatter != null) { |
|
|
|
currentWaterMonitorDto.setMaxRz(mxWatter.getHtrz()); |
|
|
|
currentWaterMonitorDto.setMaxRzTime(mxWatter.getHtrztm()); |
|
|
|
currentWaterMonitorDto.setMinRz(mxWatter.getLtrz()); |
|
|
|
currentWaterMonitorDto.setMinRzTime(mxWatter.getLtrztm()); |
|
|
|
} |
|
|
|
if (currentFlow != null && !currentFlow.isEmpty()) { |
|
|
|
currentWaterMonitorDto.setDyp(currentFlow.get(0).getDyp()); |
|
|
|
currentWaterMonitorDto.setAvgDyp(currentFlow.stream() |
|
|
|
.filter(item -> StringUtils.isNotBlank(item.getDrp())) |
|
|
|
.mapToDouble(item -> Double.parseDouble(item.getDrp())) |
|
|
|
.average().orElse(0) + ""); |
|
|
|
currentFlow.stream().max((o1, o2) -> { |
|
|
|
double d1 = StringUtils.isNotBlank(o1.getDrp()) ? Double.parseDouble(o1.getDrp()) : 0; |
|
|
|
double d2 = StringUtils.isNotBlank(o2.getDrp()) ? Double.parseDouble(o2.getDrp()) : 0; |
|
|
|
return Double.compare(d1, d2); |
|
|
|
}).ifPresent(item -> { |
|
|
|
currentWaterMonitorDto.setMaxDyp(item.getDrp()); |
|
|
|
currentWaterMonitorDto.setMaxDypTime(item.getTm()); |
|
|
|
}); |
|
|
|
} |
|
|
|
return currentWaterMonitorDto; |
|
|
|
} |
|
|
|
|
|
|
|
public MonitorConfigDto config(MonitorConfigDto sp) { |
|
|
@ -95,4 +139,38 @@ public class MonitorService { |
|
|
|
}).collect(Collectors.toList()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private <T> T queryDataOne(MonitorSourceEnum source, MonitorQueDto queDto) { |
|
|
|
queDto.setPageNum(1); |
|
|
|
queDto.setPageSize(1); |
|
|
|
IPage<Object> page = queryDataPage(source, queDto); |
|
|
|
List<Object> records = page.getRecords(); |
|
|
|
if (records == null || records.isEmpty()) { |
|
|
|
return null; |
|
|
|
} |
|
|
|
return (T) records.get(0); |
|
|
|
} |
|
|
|
|
|
|
|
private <T> List<T> queryDataList(MonitorSourceEnum source, MonitorQueDto queDto) { |
|
|
|
queDto.setPageNum(1); |
|
|
|
queDto.setPageSize(1000); |
|
|
|
IPage<Object> page = queryDataPage(source, queDto); |
|
|
|
return (List<T>) page.getRecords(); |
|
|
|
} |
|
|
|
|
|
|
|
private <T> IPage<T> queryDataPage(MonitorSourceEnum source, MonitorQueDto queDto) { |
|
|
|
MonitorSourceEnum.ResultWrapper resultWrapper = new MonitorSourceEnum.ResultWrapper(); |
|
|
|
resultWrapper.setQueDto(queDto); |
|
|
|
String path = paths.get(source.getTableName()); |
|
|
|
if (path == null) { |
|
|
|
resultWrapper.setResultJson(source.getMockData()); |
|
|
|
log.error("未找到对应的路径配置, table:{}", source); |
|
|
|
return new Page<>(); |
|
|
|
} |
|
|
|
String json = dataCenterRestTemplateUtils.doPostRequest(dataSyncUrl + path, queDto); |
|
|
|
resultWrapper.setResultJson(json); |
|
|
|
return (IPage<T>) source.getRecords().apply(resultWrapper); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|