优化终端在线率算法
This commit is contained in:
@@ -3,16 +3,18 @@ package com.njcn.algorithm.serviceimpl.line;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUnit;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
||||
import com.njcn.algorithm.service.line.IDataOnlineRateService;
|
||||
import com.njcn.dataProcess.api.DataIntegrityFeignClient;
|
||||
import com.njcn.dataProcess.api.DataOnlineRateFeignClient;
|
||||
import com.njcn.dataProcess.api.DataVFeignClient;
|
||||
import com.njcn.dataProcess.api.PqsCommunicateFeignClient;
|
||||
import com.njcn.dataProcess.param.LineCountEvaluateParam;
|
||||
import com.njcn.dataProcess.pojo.dto.DataIntegrityDto;
|
||||
import com.njcn.dataProcess.pojo.dto.DataOnlineRateDto;
|
||||
import com.njcn.dataProcess.pojo.dto.PqsCommunicateDto;
|
||||
import com.njcn.dataProcess.util.TimeUtils;
|
||||
@@ -61,7 +63,8 @@ public class IDataOnlineRateServiceImpl implements IDataOnlineRateService {
|
||||
private CommTerminalGeneralClient commTerminalGeneralClient;
|
||||
@Resource
|
||||
private DeptFeignClient deptFeignClient;
|
||||
|
||||
@Resource
|
||||
private DataIntegrityFeignClient dataIntegrityFeignClient;
|
||||
|
||||
|
||||
@Override
|
||||
@@ -73,8 +76,6 @@ public class IDataOnlineRateServiceImpl implements IDataOnlineRateService {
|
||||
List<String> devIdList = calculatedParam.getIdList();
|
||||
|
||||
List<DataOnlineRateDto.Detail> list = new ArrayList<>();
|
||||
if(ObjectUtil.isNotNull(calculatedParam.getType())){
|
||||
if(calculatedParam.getType()==1){
|
||||
DeptGetLineParam deptGetLineParam = new DeptGetLineParam();
|
||||
Dept dept = deptFeignClient.getRootDept().getData();
|
||||
deptGetLineParam.setDeptId(dept.getId());
|
||||
@@ -84,6 +85,7 @@ public class IDataOnlineRateServiceImpl implements IDataOnlineRateService {
|
||||
Map<String, List<LineDevGetDTO>> LineDevGetMap = devList.stream()
|
||||
.filter(x -> devIdList.contains(x.getDevId()))
|
||||
.collect(Collectors.groupingBy(LineDevGetDTO::getDevId));
|
||||
if (ObjectUtil.isNotNull(calculatedParam.getType())&&calculatedParam.getType() == 1) {
|
||||
LineDevGetMap.forEach((key, value) -> {
|
||||
DataOnlineRateDto.Detail onlineRateDpo = new DataOnlineRateDto.Detail();
|
||||
List<String> collect = value.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
@@ -100,7 +102,6 @@ public class IDataOnlineRateServiceImpl implements IDataOnlineRateService {
|
||||
}
|
||||
list.add(onlineRateDpo);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
List<PqsCommunicateDto> outCommunicateData = new ArrayList<>();
|
||||
for (String s : devIdList) {
|
||||
@@ -120,6 +121,35 @@ public class IDataOnlineRateServiceImpl implements IDataOnlineRateService {
|
||||
onlineRateDpo.setOfflineMin(onLineRate.getOfflineMin());
|
||||
list.add(onlineRateDpo);
|
||||
}
|
||||
LineDevGetMap.forEach((key, value) -> {
|
||||
DataOnlineRateDto.Detail onlineRateDpo = new DataOnlineRateDto.Detail();
|
||||
long count = list.stream().filter(x -> x.getDevIndex().equals(key)).count();
|
||||
if (count < 1) {
|
||||
onlineRateDpo.setTimeId(calculatedParam.getDataDate());
|
||||
onlineRateDpo.setDevIndex(key);
|
||||
List<String> lineIds = value.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
lineParam.setLineId(lineIds);
|
||||
List<DataIntegrityDto> integrityDS = dataIntegrityFeignClient.getRawData(lineParam).getData();
|
||||
Double max=0.0;
|
||||
if(CollUtil.isNotEmpty(integrityDS)){
|
||||
List<Double> info=new ArrayList<>();
|
||||
for (DataIntegrityDto integrityD : integrityDS) {
|
||||
double realTime = integrityD.getRealTime();
|
||||
double dueTime = integrityD.getDueTime();
|
||||
Double decimal = 0.0;
|
||||
if (dueTime != 0) {
|
||||
decimal = NumberUtil.round(Math.min(realTime / dueTime, 1), 6).doubleValue();
|
||||
}
|
||||
info.add(decimal);
|
||||
}
|
||||
max = info.stream().max(Comparator.naturalOrder()).orElse(0.0);
|
||||
}
|
||||
int v = (int)Math.ceil(InfluxDBPublicParam.DAY_MINUTE * max);
|
||||
onlineRateDpo.setOnlineMin(v);
|
||||
onlineRateDpo.setOfflineMin(InfluxDBPublicParam.DAY_MINUTE - v);
|
||||
list.add(onlineRateDpo);
|
||||
}
|
||||
});
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(list)) {
|
||||
onlineRateFeignClient.batchInsertion(list);
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
import com.njcn.dataProcess.dao.relation.mapper.RStatLimitRateDetailRelationMapper;
|
||||
import com.njcn.dataProcess.pojo.dto.*;
|
||||
import com.njcn.dataProcess.param.LineCountEvaluateParam;
|
||||
import com.njcn.dataProcess.pojo.po.RStatLimitRateD;
|
||||
import com.njcn.dataProcess.pojo.po.RStatLimitRateDetailD;
|
||||
import com.njcn.dataProcess.service.IDataLimitRateDetail;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -81,7 +82,9 @@ public class RelationDataLimitRateDetailImpl extends MppServiceImpl<RStatLimitRa
|
||||
LambdaQueryWrapper<RStatLimitRateDetailD> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.in(CollUtil.isNotEmpty(lineParam.getLineId()), RStatLimitRateDetailD::getLineId, lineParam.getLineId())
|
||||
.ge(RStatLimitRateDetailD::getTime, lineParam.getStartTime())
|
||||
.le(RStatLimitRateDetailD::getTime, lineParam.getEndTime());
|
||||
.le(RStatLimitRateDetailD::getTime, lineParam.getEndTime())
|
||||
.orderByAsc(RStatLimitRateDetailD::getTime)
|
||||
;
|
||||
|
||||
List<RStatLimitRateDetailD> list = this.list(lambdaQueryWrapper);
|
||||
DataLimitRateDetailTimeDto dto;
|
||||
|
||||
@@ -49,7 +49,9 @@ public class RelationDataLimitRateImpl extends MppServiceImpl<RStatLimitRateRela
|
||||
lambdaQueryWrapper.in(CollUtil.isNotEmpty(lineParam.getLineId()),RStatLimitRateD::getLineId,lineParam.getLineId())
|
||||
.ge(RStatLimitRateD::getTime,lineParam.getStartTime())
|
||||
.le(RStatLimitRateD::getTime,lineParam.getEndTime())
|
||||
.eq(RStatLimitRateD::getPhasicType, PhaseType.PHASE_T);
|
||||
.eq(RStatLimitRateD::getPhasicType, PhaseType.PHASE_T)
|
||||
.orderByAsc(RStatLimitRateD::getTime)
|
||||
;
|
||||
List<RStatLimitRateD> list = this.list(lambdaQueryWrapper);
|
||||
|
||||
list.forEach(item->{
|
||||
|
||||
Reference in New Issue
Block a user