1.调整稳态电能质量水平评估返回默认信息

This commit is contained in:
wr
2025-05-12 16:10:51 +08:00
parent 1e3af78bb5
commit e6d75386aa
4 changed files with 330 additions and 351 deletions

View File

@@ -8,14 +8,6 @@ import com.njcn.common.utils.HttpResultUtil;
import com.njcn.device.pq.pojo.param.DevRunEvaluateParam;
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
import com.njcn.device.pq.pojo.vo.DeviceRunEvaluateVO;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.device.pq.pojo.dto.DevComFlagDTO;
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
import com.njcn.device.pq.pojo.po.Device;
import com.njcn.device.pq.pojo.vo.TerminalEvaluateAreaVO;
import com.njcn.device.pq.service.DeviceRunEvaluateService;
import com.njcn.web.controller.BaseController;
@@ -28,10 +20,6 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Objects;
import java.util.List;
@@ -60,7 +48,7 @@ public class DeviceRunEvaluateController extends BaseController {
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@PostMapping("/getRunEvaluateDetail")
@ApiOperation("终端运行评价")
@ApiOperation("异常终端详情")
public HttpResult<List<DeviceRunEvaluateVO>> getRunEvaluateDetail(@RequestBody @Validated DevRunEvaluateParam param) {
String methodDescribe = getMethodDescribe("getRunEvaluateDetail");
List<DeviceRunEvaluateVO> runEvaluate = deviceRunEvaluateService.getRunEvaluateDetail(param);
@@ -78,7 +66,6 @@ public class DeviceRunEvaluateController extends BaseController {
}
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
@PostMapping("/lastWeekTrend")
@ApiOperation("最近一周终端评价趋势")

View File

@@ -32,9 +32,7 @@ import com.njcn.harmonic.api.RStatLimitRateDClient;
import com.njcn.harmonic.pojo.param.RStatLimitQueryParam;
import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO;
import com.njcn.supervision.api.UserLedgerFeignClient;
import com.njcn.supervision.pojo.param.user.UserReportParam;
import com.njcn.supervision.pojo.vo.user.NewUserReportVO;
import com.njcn.supervision.pojo.vo.user.UserLedgerVO;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@@ -134,29 +132,11 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
List<RStatLimitRateDPO> limitRateDPOS = limitRateList.stream().filter(x -> lineIds.contains(x.getLineId())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(limitRateDPOS)) {
double overTime = limitRateDPOS.stream().mapToDouble(x -> (x.getUaberranceOvertime() +
x.getUharm2Overtime() +
x.getUharm3Overtime() +
x.getUharm4Overtime() +
x.getUharm5Overtime() +
x.getUharm6Overtime() +
x.getUharm7Overtime() +
x.getUharm8Overtime() +
x.getUharm9Overtime() +
x.getUharm10Overtime() +
x.getUharm11Overtime() +
x.getUharm12Overtime() +
x.getUharm13Overtime() +
x.getUharm14Overtime() +
x.getUharm15Overtime() +
x.getUharm16Overtime() +
x.getUharm17Overtime() +
x.getUharm18Overtime() +
x.getUharm19Overtime() +
x.getUharm20Overtime() +
x.getUharm21Overtime() +
x.getUharm22Overtime() +
x.getUharm23Overtime() +
x.getUharm24Overtime() +
x.getUharm2Overtime() + x.getUharm3Overtime() + x.getUharm4Overtime() + x.getUharm5Overtime() +
x.getUharm6Overtime() + x.getUharm7Overtime() + x.getUharm8Overtime() + x.getUharm9Overtime() +
x.getUharm10Overtime() + x.getUharm11Overtime() + x.getUharm12Overtime() + x.getUharm13Overtime() + x.getUharm14Overtime() +
x.getUharm15Overtime() + x.getUharm16Overtime() + x.getUharm17Overtime() + x.getUharm18Overtime() + x.getUharm19Overtime() +
x.getUharm20Overtime() + x.getUharm21Overtime() + x.getUharm22Overtime() + x.getUharm23Overtime() + x.getUharm24Overtime() +
x.getUharm25Overtime())).sum();
double allTime = limitRateDPOS.stream().mapToDouble(x -> x.getAllTime() * 25.0).sum();
if (allTime == 0) {
@@ -225,8 +205,6 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
}
@Override
public List<TerminalEvaluateAreaVO> areaTerminalStatistic(DeviceInfoParam.BusinessParam businessParam) {
List<TerminalEvaluateAreaVO> result = new ArrayList<>();
@@ -236,30 +214,30 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
//已经最底层,展示电站和用户场站
List<MonitorInfoDTO> lineDetailList = lineMapper.getLineListByIds(generalDeviceDTOList.get(0).getLineIndexes());
List<String> ids = lineDetailList.stream().map(MonitorInfoDTO::getId).distinct().collect(Collectors.toList());
List<String> devIds = lineDetailList.stream().map(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.DEVICE_LEVEL.getCode()]).distinct().collect(Collectors.toList());
List<String> devIds = lineDetailList.stream().map(it -> it.getPids().split(StrUtil.COMMA)[LineBaseEnum.DEVICE_LEVEL.getCode()]).distinct().collect(Collectors.toList());
List<RStatIntegrityD> rStatIntegrityDList = new ArrayList<>();
List<RStatOnlinerateD> rStatOnlinerateDList = new ArrayList<>();
List<RStatLimitRateDPO> rStatLimitRateDPOList = new ArrayList<>();
getData(rStatIntegrityDList,rStatOnlinerateDList,rStatLimitRateDPOList,ids,devIds,businessParam.getSearchBeginTime(),businessParam.getSearchEndTime());
getData(rStatIntegrityDList, rStatOnlinerateDList, rStatLimitRateDPOList, ids, devIds, businessParam.getSearchBeginTime(), businessParam.getSearchEndTime());
List<MonitorInfoDTO> detailList = lineDetailList.stream().filter(it -> StrUtil.isNotBlank(it.getObjId())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(detailList)) {
List<String> objIds = detailList.stream().map(MonitorInfoDTO::getObjId).distinct().collect(Collectors.toList());
Map<String,NewUserReportVO> userReportVOMap = getUserLedgerByObjIds(objIds);
Map<String, NewUserReportVO> userReportVOMap = getUserLedgerByObjIds(objIds);
Map<String, List<MonitorInfoDTO>> map = detailList.stream().collect(Collectors.groupingBy(MonitorInfoDTO::getObjId));
map.forEach((objId, list) -> {
NewUserReportVO userLedgerVO = userReportVOMap.get(objId);
commDataCat(list,rStatIntegrityDList,rStatOnlinerateDList,rStatLimitRateDPOList,result,userLedgerVO.getProjectName());
commDataCat(list, rStatIntegrityDList, rStatOnlinerateDList, rStatLimitRateDPOList, result, userLedgerVO.getProjectName());
});
}
List<MonitorInfoDTO> otherDetailList = lineDetailList.stream().filter(it -> StrUtil.isBlank(it.getObjId())).collect(Collectors.toList());
if(CollUtil.isNotEmpty(otherDetailList)){
List<String> subIds = otherDetailList.stream().map(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.SUB_LEVEL.getCode()]).collect(Collectors.toList());
List<Line> subList = lineMapper.selectList(new LambdaQueryWrapper<Line>().in(Line::getId,subIds));
Map<String,Line> subMap = subList.stream().collect(Collectors.toMap(Line::getId,Function.identity()));
Map<String, List<MonitorInfoDTO>> map = otherDetailList.stream().collect(Collectors.groupingBy(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.SUB_LEVEL.getCode()]));
if (CollUtil.isNotEmpty(otherDetailList)) {
List<String> subIds = otherDetailList.stream().map(it -> it.getPids().split(StrUtil.COMMA)[LineBaseEnum.SUB_LEVEL.getCode()]).collect(Collectors.toList());
List<Line> subList = lineMapper.selectList(new LambdaQueryWrapper<Line>().in(Line::getId, subIds));
Map<String, Line> subMap = subList.stream().collect(Collectors.toMap(Line::getId, Function.identity()));
Map<String, List<MonitorInfoDTO>> map = otherDetailList.stream().collect(Collectors.groupingBy(it -> it.getPids().split(StrUtil.COMMA)[LineBaseEnum.SUB_LEVEL.getCode()]));
map.forEach((subId, list) -> {
String name = subMap.get(subId).getName();
commDataCat(list,rStatIntegrityDList,rStatOnlinerateDList,rStatLimitRateDPOList,result,name);
commDataCat(list, rStatIntegrityDList, rStatOnlinerateDList, rStatLimitRateDPOList, result, name);
});
}
} else {
@@ -267,8 +245,8 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
List<RStatIntegrityD> rStatIntegrityDList = new ArrayList<>();
List<RStatOnlinerateD> rStatOnlinerateDList = new ArrayList<>();
List<RStatLimitRateDPO> rStatLimitRateDPOList = new ArrayList<>();
getData(rStatIntegrityDList,rStatOnlinerateDList,rStatLimitRateDPOList,generalDeviceDTO.getLineIndexes(),generalDeviceDTO.getDeviceIndexes(),businessParam.getSearchBeginTime(),businessParam.getSearchEndTime());
result.add(getScoreData(generalDeviceDTO.getName(),generalDeviceDTO.getDeviceIndexes(),rStatIntegrityDList,rStatOnlinerateDList,rStatLimitRateDPOList));
getData(rStatIntegrityDList, rStatOnlinerateDList, rStatLimitRateDPOList, generalDeviceDTO.getLineIndexes(), generalDeviceDTO.getDeviceIndexes(), businessParam.getSearchBeginTime(), businessParam.getSearchEndTime());
result.add(getScoreData(generalDeviceDTO.getName(), generalDeviceDTO.getDeviceIndexes(), rStatIntegrityDList, rStatOnlinerateDList, rStatLimitRateDPOList));
}
}
}
@@ -284,41 +262,41 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
List<GeneralDeviceDTO> generalDeviceDTOList = generalDeviceService.getDeviceInfo(businessParam, Stream.of(RunFlagEnum.RUNNING.getStatus()).collect(Collectors.toList()), Stream.of(PowerFlagEnum.REAL_DEVICE.getCode()).collect(Collectors.toList()));
if (CollectionUtil.isNotEmpty(generalDeviceDTOList)) {
DateTime end = DateUtil.parse(businessParam.getSearchBeginTime(), DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN));
DateTime start = DateUtil.offsetDay(end,-7);
DateTime start = DateUtil.offsetDay(end, -7);
List<DateTime> dateRange = DateUtil.rangeToList(start, end, DateField.DAY_OF_MONTH);
for (DateTime dateTime :dateRange){
dateList.add(DateUtil.format(dateTime,DatePattern.NORM_DATE_PATTERN));
for (DateTime dateTime : dateRange) {
dateList.add(DateUtil.format(dateTime, DatePattern.NORM_DATE_PATTERN));
}
if (generalDeviceDTOList.size() == 1 && generalDeviceDTOList.get(0).getIndex().equals(businessParam.getDeptIndex())) {
List<MonitorInfoDTO> lineDetailList = lineMapper.getLineListByIds(generalDeviceDTOList.get(0).getLineIndexes());
List<RStatIntegrityD> rStatIntegrityDList = new ArrayList<>();
List<RStatOnlinerateD> rStatOnlinerateDList = new ArrayList<>();
List<RStatLimitRateDPO> rStatLimitRateDPOList = new ArrayList<>();
getRangeData2(rStatIntegrityDList,rStatOnlinerateDList,rStatLimitRateDPOList,generalDeviceDTOList.get(0).getLineIndexes(),generalDeviceDTOList.get(0).getDeviceIndexes(),DateUtil.format(start,DatePattern.NORM_DATE_PATTERN),DateUtil.format(end,DatePattern.NORM_DATE_PATTERN));
Map<String,List<MonitorInfoDTO>> lineMap = lineDetailList.stream().collect(Collectors.groupingBy(MonitorInfoDTO::getObjId));
lineMap.forEach((key,detailList)->{
getRangeData2(rStatIntegrityDList, rStatOnlinerateDList, rStatLimitRateDPOList, generalDeviceDTOList.get(0).getLineIndexes(), generalDeviceDTOList.get(0).getDeviceIndexes(), DateUtil.format(start, DatePattern.NORM_DATE_PATTERN), DateUtil.format(end, DatePattern.NORM_DATE_PATTERN));
Map<String, List<MonitorInfoDTO>> lineMap = lineDetailList.stream().collect(Collectors.groupingBy(MonitorInfoDTO::getObjId));
lineMap.forEach((key, detailList) -> {
if (StrUtil.isNotBlank(key)) {
List<String> objIds = detailList.stream().map(MonitorInfoDTO::getObjId).distinct().collect(Collectors.toList());
Map<String,NewUserReportVO> userReportVOMap = getUserLedgerByObjIds(objIds);
Map<String, NewUserReportVO> userReportVOMap = getUserLedgerByObjIds(objIds);
Map<String, List<MonitorInfoDTO>> map = detailList.stream().collect(Collectors.groupingBy(MonitorInfoDTO::getObjId));
map.forEach((objId, list) -> {
NewUserReportVO userLedgerVO = userReportVOMap.get(objId);
nameList.add(userLedgerVO.getProjectName());
rangeCatData(list,dateRange,rStatIntegrityDList,rStatOnlinerateDList,rStatLimitRateDPOList,scoreList);
rangeCatData(list, dateRange, rStatIntegrityDList, rStatOnlinerateDList, rStatLimitRateDPOList, scoreList);
});
} else {
List<String> subIds = detailList.stream().map(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.SUB_LEVEL.getCode()]).collect(Collectors.toList());
List<Line> subList = lineMapper.selectList(new LambdaQueryWrapper<Line>().in(Line::getId,subIds));
Map<String,Line> subMap = subList.stream().collect(Collectors.toMap(Line::getId,Function.identity()));
Map<String, List<MonitorInfoDTO>> map = detailList.stream().collect(Collectors.groupingBy(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.SUB_LEVEL.getCode()]));
List<String> subIds = detailList.stream().map(it -> it.getPids().split(StrUtil.COMMA)[LineBaseEnum.SUB_LEVEL.getCode()]).collect(Collectors.toList());
List<Line> subList = lineMapper.selectList(new LambdaQueryWrapper<Line>().in(Line::getId, subIds));
Map<String, Line> subMap = subList.stream().collect(Collectors.toMap(Line::getId, Function.identity()));
Map<String, List<MonitorInfoDTO>> map = detailList.stream().collect(Collectors.groupingBy(it -> it.getPids().split(StrUtil.COMMA)[LineBaseEnum.SUB_LEVEL.getCode()]));
map.forEach((subId, list) -> {
String name = subMap.get(subId).getName();
nameList.add(name);
rangeCatData(list,dateRange,rStatIntegrityDList,rStatOnlinerateDList,rStatLimitRateDPOList,scoreList);
rangeCatData(list, dateRange, rStatIntegrityDList, rStatOnlinerateDList, rStatLimitRateDPOList, scoreList);
});
}
});
}else {
} else {
for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) {
if (CollUtil.isEmpty(generalDeviceDTO.getLineIndexes())) {
continue;
@@ -346,21 +324,21 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
return lastWeekTrendVO;
}
private Map<String,NewUserReportVO> getUserLedgerByObjIds(List<String> objIds){
private Map<String, NewUserReportVO> getUserLedgerByObjIds(List<String> objIds) {
List<NewUserReportVO> userReportVOList = userLedgerFeignClient.getUserReportByIds(objIds).getData();
return userReportVOList.stream().collect(Collectors.toMap(NewUserReportVO::getId, Function.identity()));
}
private void commDataCat(List<MonitorInfoDTO> list,List<RStatIntegrityD> rStatIntegrityDList,List<RStatOnlinerateD> rStatOnlinerateDList,List<RStatLimitRateDPO> rStatLimitRateDPOList,List<TerminalEvaluateAreaVO> result,String name){
private void commDataCat(List<MonitorInfoDTO> list, List<RStatIntegrityD> rStatIntegrityDList, List<RStatOnlinerateD> rStatOnlinerateDList, List<RStatLimitRateDPO> rStatLimitRateDPOList, List<TerminalEvaluateAreaVO> result, String name) {
List<String> lineIds = list.stream().map(MonitorInfoDTO::getId).collect(Collectors.toList());
List<String> devList = list.stream().map(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.DEVICE_LEVEL.getCode()]).collect(Collectors.toList());
List<RStatIntegrityD> temIntegrityList = rStatIntegrityDList.stream().filter(it->lineIds.contains(it.getLineIndex())).collect(Collectors.toList());
List<RStatLimitRateDPO> temlimitList = rStatLimitRateDPOList.stream().filter(it->lineIds.contains(it.getLineId())).collect(Collectors.toList());
List<RStatOnlinerateD> onlineList = rStatOnlinerateDList.stream().filter(it->devList.contains(it.getDevIndex())).collect(Collectors.toList());
result.add(getScoreData(name,devList,temIntegrityList,onlineList,temlimitList));
List<String> devList = list.stream().map(it -> it.getPids().split(StrUtil.COMMA)[LineBaseEnum.DEVICE_LEVEL.getCode()]).collect(Collectors.toList());
List<RStatIntegrityD> temIntegrityList = rStatIntegrityDList.stream().filter(it -> lineIds.contains(it.getLineIndex())).collect(Collectors.toList());
List<RStatLimitRateDPO> temlimitList = rStatLimitRateDPOList.stream().filter(it -> lineIds.contains(it.getLineId())).collect(Collectors.toList());
List<RStatOnlinerateD> onlineList = rStatOnlinerateDList.stream().filter(it -> devList.contains(it.getDevIndex())).collect(Collectors.toList());
result.add(getScoreData(name, devList, temIntegrityList, onlineList, temlimitList));
}
private TerminalEvaluateAreaVO getScoreData(String name,List<String> devIds,List<RStatIntegrityD> rStatIntegrityDList,List<RStatOnlinerateD> rStatOnlinerateDList,List<RStatLimitRateDPO> rStatLimitRateDPOList) {
private TerminalEvaluateAreaVO getScoreData(String name, List<String> devIds, List<RStatIntegrityD> rStatIntegrityDList, List<RStatOnlinerateD> rStatOnlinerateDList, List<RStatLimitRateDPO> rStatLimitRateDPOList) {
double integrityRate = 0;
double onlineRate = 0;
double qualifiedRate = 0;
@@ -370,11 +348,11 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
terminalEvaluateAreaVO.setCount(devIds.size());
if (CollectionUtil.isNotEmpty(rStatIntegrityDList)) {
integrityRate = rStatIntegrityDList.stream().mapToDouble(it -> (double) it.getRealTime() / it.getDueTime()).average().orElse(0);
terminalEvaluateAreaVO.setIntegrity(NumberUtil.round(integrityRate*100,2).doubleValue());
terminalEvaluateAreaVO.setIntegrity(NumberUtil.round(integrityRate * 100, 2).doubleValue());
}
if (CollectionUtil.isNotEmpty(rStatOnlinerateDList)) {
onlineRate = rStatOnlinerateDList.stream().mapToDouble(it -> (double) it.getOnlineMin() / (it.getOnlineMin() + it.getOfflineMin())).average().orElse(0);
terminalEvaluateAreaVO.setOnline(NumberUtil.round(onlineRate*100,2).doubleValue());
terminalEvaluateAreaVO.setOnline(NumberUtil.round(onlineRate * 100, 2).doubleValue());
}
if (CollectionUtil.isNotEmpty(rStatLimitRateDPOList)) {
qualifiedRate = rStatLimitRateDPOList.stream().mapToDouble(it -> {
@@ -389,20 +367,20 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
return 1 - ((double) (limit) / it.getAllTime() * 25);
}
}).average().orElse(0);
terminalEvaluateAreaVO.setQualified(NumberUtil.round(qualifiedRate*100,2).doubleValue());
terminalEvaluateAreaVO.setQualified(NumberUtil.round(qualifiedRate * 100, 2).doubleValue());
}
pingFen = integrityRate * 0.5 + onlineRate * 0.2 + qualifiedRate * 0.3;
terminalEvaluateAreaVO.setScore(BigDecimal.valueOf(pingFen*100).setScale(2, RoundingMode.HALF_UP).doubleValue());
terminalEvaluateAreaVO.setScore(BigDecimal.valueOf(pingFen * 100).setScale(2, RoundingMode.HALF_UP).doubleValue());
return terminalEvaluateAreaVO;
}
private void rangeCatData(List<MonitorInfoDTO> list,List<DateTime> dateRange,List<RStatIntegrityD> rStatIntegrityDList,List<RStatOnlinerateD> rStatOnlinerateDList,List<RStatLimitRateDPO> rStatLimitRateDPOList,List<List<Double>> scoreList){
private void rangeCatData(List<MonitorInfoDTO> list, List<DateTime> dateRange, List<RStatIntegrityD> rStatIntegrityDList, List<RStatOnlinerateD> rStatOnlinerateDList, List<RStatLimitRateDPO> rStatLimitRateDPOList, List<List<Double>> scoreList) {
List<String> lineIds = list.stream().map(MonitorInfoDTO::getId).collect(Collectors.toList());
List<String> devList = list.stream().map(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.DEVICE_LEVEL.getCode()]).collect(Collectors.toList());
List<String> devList = list.stream().map(it -> it.getPids().split(StrUtil.COMMA)[LineBaseEnum.DEVICE_LEVEL.getCode()]).collect(Collectors.toList());
List<Double> scoreDetailList = new ArrayList<>();
for (DateTime day : dateRange) {
List<RStatIntegrityD> temIntegrityList = rStatIntegrityDList.stream().filter(it -> it.getTimeId().equals(day.toLocalDateTime().toLocalDate()) && lineIds.contains(it.getLineIndex())).collect(Collectors.toList());
List<RStatOnlinerateD> temOnlinerateList = rStatOnlinerateDList.stream().filter(it -> it.getTimeId().equals(day.toLocalDateTime().toLocalDate())&& devList.contains(it.getDevIndex())).collect(Collectors.toList());
List<RStatOnlinerateD> temOnlinerateList = rStatOnlinerateDList.stream().filter(it -> it.getTimeId().equals(day.toLocalDateTime().toLocalDate()) && devList.contains(it.getDevIndex())).collect(Collectors.toList());
List<RStatLimitRateDPO> temLimitRateList = rStatLimitRateDPOList.stream().filter(it -> it.getTime().equals(day.toLocalDateTime().toLocalDate()) && lineIds.contains(it.getLineId())).collect(Collectors.toList());
TerminalEvaluateAreaVO terminalEvaluateAreaVO = getScoreData("", new ArrayList<>(), temIntegrityList, temOnlinerateList, temLimitRateList);
scoreDetailList.add(terminalEvaluateAreaVO.getScore());
@@ -411,12 +389,12 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
}
private void getData(List<RStatIntegrityD> rStatIntegrityDList,List<RStatOnlinerateD> rStatOnlinerateDList,List<RStatLimitRateDPO> rStatLimitRateDPOList,List<String> lineIds,List<String> devIds,String startTime,String endTime){
if(CollUtil.isNotEmpty(lineIds)){
private void getData(List<RStatIntegrityD> rStatIntegrityDList, List<RStatOnlinerateD> rStatOnlinerateDList, List<RStatLimitRateDPO> rStatLimitRateDPOList, List<String> lineIds, List<String> devIds, String startTime, String endTime) {
if (CollUtil.isNotEmpty(lineIds)) {
rStatIntegrityDList.addAll(integrityDMapper.selectList(new QueryWrapper<RStatIntegrityD>()
.select("sum(real_time) as realTime,sum(due_time) as dueTime,line_index as lineIndex")
.in("line_index", lineIds)
.between("time_id",startTime,endTime)
.between("time_id", startTime, endTime)
.groupBy("line_index")));
RStatLimitQueryParam rStatLimitQueryParam = new RStatLimitQueryParam();
rStatLimitQueryParam.setIds(lineIds);
@@ -424,22 +402,22 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
rStatLimitQueryParam.setEndDate(endTime);
rStatLimitRateDPOList.addAll(rStatLimitRateDClient.monitorIdsGetLimitInfo(rStatLimitQueryParam).getData());
}
if(CollectionUtil.isNotEmpty(devIds)) {
if (CollectionUtil.isNotEmpty(devIds)) {
rStatOnlinerateDList.addAll(onLineRateDMapper.selectList(new QueryWrapper<RStatOnlinerateD>()
.select("sum(online_min) as onlineMin,sum(offline_min) as offlineMin,dev_index as devIndex")
.in( "dev_index", devIds)
.between("time_id",startTime,endTime)
.in("dev_index", devIds)
.between("time_id", startTime, endTime)
.groupBy("dev_index")));
}
}
private void getRangeData(List<RStatIntegrityD> rStatIntegrityDList,List<RStatOnlinerateD> rStatOnlinerateDList,List<RStatLimitRateDPO> rStatLimitRateDPOList,List<String> lineIds,List<String> devIds,String startTime,String endTime){
if(CollUtil.isNotEmpty(lineIds)){
private void getRangeData(List<RStatIntegrityD> rStatIntegrityDList, List<RStatOnlinerateD> rStatOnlinerateDList, List<RStatLimitRateDPO> rStatLimitRateDPOList, List<String> lineIds, List<String> devIds, String startTime, String endTime) {
if (CollUtil.isNotEmpty(lineIds)) {
rStatIntegrityDList.addAll(integrityDMapper.selectList(new QueryWrapper<RStatIntegrityD>()
.select("time_id as timeId,sum(real_time) as realTime,sum(due_time) as dueTime")
.in("line_index", lineIds)
.between("time_id",startTime,endTime)
.between("time_id", startTime, endTime)
.groupBy("time_id")));
RStatLimitQueryParam rStatLimitQueryParam = new RStatLimitQueryParam();
@@ -448,21 +426,21 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
rStatLimitQueryParam.setEndDate(endTime);
rStatLimitRateDPOList.addAll(rStatLimitRateDClient.monitorIdsGetLimitInfo(rStatLimitQueryParam).getData());
}
if(CollectionUtil.isNotEmpty(devIds)) {
if (CollectionUtil.isNotEmpty(devIds)) {
rStatOnlinerateDList.addAll(onLineRateDMapper.selectList(new QueryWrapper<RStatOnlinerateD>()
.select("time_id as timeId,sum(online_min) as onlineMin,sum(offline_min) as offlineMin")
.in( "dev_index", devIds)
.between("time_id",startTime,endTime)
.in("dev_index", devIds)
.between("time_id", startTime, endTime)
.groupBy("time_id")));
}
}
private void getRangeData2(List<RStatIntegrityD> rStatIntegrityDList,List<RStatOnlinerateD> rStatOnlinerateDList,List<RStatLimitRateDPO> rStatLimitRateDPOList,List<String> lineIds,List<String> devIds,String startTime,String endTime){
if(CollUtil.isNotEmpty(lineIds)){
private void getRangeData2(List<RStatIntegrityD> rStatIntegrityDList, List<RStatOnlinerateD> rStatOnlinerateDList, List<RStatLimitRateDPO> rStatLimitRateDPOList, List<String> lineIds, List<String> devIds, String startTime, String endTime) {
if (CollUtil.isNotEmpty(lineIds)) {
rStatIntegrityDList.addAll(integrityDMapper.selectList(new QueryWrapper<RStatIntegrityD>()
.select("time_id as timeId,line_index as lineIndex,sum(real_time) as realTime,sum(due_time) as dueTime")
.in("line_index", lineIds)
.between("time_id",startTime,endTime)
.between("time_id", startTime, endTime)
.groupBy("time_id,line_index")));
RStatLimitQueryParam rStatLimitQueryParam = new RStatLimitQueryParam();
@@ -471,16 +449,13 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
rStatLimitQueryParam.setEndDate(endTime);
rStatLimitRateDPOList.addAll(rStatLimitRateDClient.monitorIdsGetLimitInfo(rStatLimitQueryParam).getData());
}
if(CollectionUtil.isNotEmpty(devIds)) {
if (CollectionUtil.isNotEmpty(devIds)) {
rStatOnlinerateDList.addAll(onLineRateDMapper.selectList(new QueryWrapper<RStatOnlinerateD>()
.select("time_id as timeId,dev_index as devIndex,sum(online_min) as onlineMin,sum(offline_min) as offlineMin")
.in( "dev_index", devIds)
.between("time_id",startTime,endTime)
.in("dev_index", devIds)
.between("time_id", startTime, endTime)
.groupBy("time_id,dev_index")));
}
}
}

View File

@@ -169,7 +169,7 @@ public class GridDiagramServiceImpl implements GridDiagramService {
//终端id集合
List<String> devIds = lineBaseList.stream().filter(x -> value.equals(x.getVoltageLevel())).map(LineDevGetDTO::getDevId).distinct().collect(Collectors.toList());
gridDiagramAdd(statisticsData, onlineRateByDevIds,value, onIntegrityByIds, devIds, lineIds, onLineNumIds);
gridDiagramAdd(statisticsData, onlineRateByDevIds, value, onIntegrityByIds, devIds, lineIds, onLineNumIds);
}
@@ -180,10 +180,10 @@ public class GridDiagramServiceImpl implements GridDiagramService {
List<String> lineIdsAll = lineBaseList.stream().map(LineDevGetDTO::getPointId).distinct().collect(Collectors.toList());
List<String> onLineNumAll = lineBaseList.stream().filter(x -> 1 == x.getComFlag()).map(LineDevGetDTO::getPointId).distinct().collect(Collectors.toList());
gridDiagramAdd(statisticsData, onlineRateByDevIds,null, onIntegrityByIds, devIdsAll, lineIdsAll, onLineNumAll);
gridDiagramAdd(statisticsData, onlineRateByDevIds, null, onIntegrityByIds, devIdsAll, lineIdsAll, onLineNumAll);
}
private void gridDiagramAdd(List<GridDiagramVO.LineStatisticsData> statisticsData, List<RStatOnlinerateD> onlineRateByDevIds,String value, List<RStatIntegrityD> onIntegrityByIds, List<String> devIdsAll, List<String> lineIdsAll, List<String> onLineNumAll) {
private void gridDiagramAdd(List<GridDiagramVO.LineStatisticsData> statisticsData, List<RStatOnlinerateD> onlineRateByDevIds, String value, List<RStatIntegrityD> onIntegrityByIds, List<String> devIdsAll, List<String> lineIdsAll, List<String> onLineNumAll) {
GridDiagramVO.LineStatisticsData lineStatisticsData = new GridDiagramVO.LineStatisticsData();
lineStatisticsData.setColumnName(value);
lineStatisticsData.setNum(lineIdsAll.size());
@@ -214,7 +214,7 @@ public class GridDiagramServiceImpl implements GridDiagramService {
List<String> lineIdsAll = lineBaseList.stream().filter(x -> 1 == x.getIsUpToGrid()).map(LineDevGetDTO::getPointId).distinct().collect(Collectors.toList());
List<String> onLineNumAll = lineBaseList.stream().filter(x -> 1 == x.getComFlag() && 1 == x.getIsUpToGrid()).map(LineDevGetDTO::getPointId).distinct().collect(Collectors.toList());
gridDiagramAdd(statisticsData, onlineRateByDevIds,null, onIntegrityByIds, devIdsAll, lineIdsAll, onLineNumAll);
gridDiagramAdd(statisticsData, onlineRateByDevIds, null, onIntegrityByIds, devIdsAll, lineIdsAll, onLineNumAll);
}
private void onLineAndIntegrity(List<String> lineIds, List<RStatIntegrityD> onIntegrityByIds, List<String> devIds, List<RStatOnlinerateD> onlineRateByDevIds, GridDiagramVO.LineStatisticsData lineStatisticsData) {
@@ -247,10 +247,10 @@ public class GridDiagramServiceImpl implements GridDiagramService {
List<DictData> v = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.PANORAMIC_VOLTAGE.getCode()).getData();
List<String> voltageIds;
//获取电压等级550 220 110 35
if(CollUtil.isNotEmpty(v)){
if (CollUtil.isNotEmpty(v)) {
List<String> vName = v.stream().map(DictData::getName).collect(Collectors.toList());
voltageIds = dictDataList.stream().filter(item -> vName.contains(item.getName())).sorted(Comparator.comparing(DictData::getSort).reversed()).map(DictData::getId).collect(Collectors.toList());
}else{
} else {
voltageIds = dictDataList.stream().filter(item -> Objects.equals(DicDataEnum.DY_500KV.getCode(), item.getCode()) || Objects.equals(DicDataEnum.DY_220KV.getCode(), item.getCode()) || Objects.equals(DicDataEnum.DY_110KV.getCode(), item.getCode()) || Objects.equals(DicDataEnum.DY_35KV.getCode(), item.getCode())).sorted(Comparator.comparing(DictData::getSort).reversed()).map(DictData::getId).collect(Collectors.toList());
}
@@ -297,7 +297,7 @@ public class GridDiagramServiceImpl implements GridDiagramService {
@Override
public Map<String, Long> getGridDiagramDevTendency(GridDiagramParam param, Integer type) {
param.getDeviceInfoParam().setLineRunFlag(0);
if(type==3){
if (type == 3) {
param.getDeviceInfoParam().setPowerFlag(0);
}
List<GeneralDeviceDTO> generalDeviceDTOList = generalDeviceService.getDeviceInfo(param.getDeviceInfoParam(), Stream.of(0).collect(Collectors.toList()), Stream.of(1).collect(Collectors.toList()));
@@ -330,27 +330,27 @@ public class GridDiagramServiceImpl implements GridDiagramService {
List<Line> list = lineService.list(new LambdaQueryWrapper<Line>().in(CollUtil.isNotEmpty(ids), Line::getId, ids).eq(Line::getState, DataStateEnum.ENABLE.getCode()).eq(Line::getLevel, type));
times = list.stream().map(x -> Date.from(x.getCreateTime().atZone(ZoneId.systemDefault()).toInstant())).collect(Collectors.toList());
}
long num =0;
long num = 0;
for (int i = 0; i < dateTimes.size(); i++) {
if(i==0){
if (i == 0) {
if (1 == param.getType()) {
long count = times.stream().filter(x -> DateUtil.isIn(x, DateUtil.beginOfYear(DateUtil.parse("1970-01-01 00:00:00")), DateUtil.endOfYear(dateTimes.get(0)))).count();
num=num+count;
num = num + count;
map.put(dateTimes.get(0).toString().substring(0, 4), num);
} else {
long count = times.stream().filter(x -> DateUtil.isIn(x, DateUtil.beginOfYear(DateUtil.parse("1970-01-01 00:00:00")), DateUtil.endOfMonth(dateTimes.get(0)))).count();
num=num+count;
num = num + count;
map.put(dateTimes.get(0).toString().substring(0, 7), num);
}
}else{
} else {
int finalI = i;
if (1 == param.getType()) {
long count = times.stream().filter(x -> DateUtil.isIn(x, DateUtil.beginOfYear(dateTimes.get(finalI)), DateUtil.endOfYear(dateTimes.get(finalI)))).count();
num=num+count;
num = num + count;
map.put(dateTimes.get(finalI).toString().substring(0, 4), num);
} else {
long count = times.stream().filter(x -> DateUtil.isIn(x, DateUtil.beginOfMonth(dateTimes.get(finalI)), DateUtil.endOfMonth(dateTimes.get(finalI)))).count();
num=num+count;
num = num + count;
map.put(dateTimes.get(finalI).toString().substring(0, 7), num);
}
}
@@ -424,10 +424,10 @@ public class GridDiagramServiceImpl implements GridDiagramService {
list.add(String.valueOf(devices.size()));
//当终端信息是0标识需要进行在线率查询并进行赋值
if (i == 0) {
if(CollUtil.isNotEmpty(devices)) {
if (CollUtil.isNotEmpty(devices)) {
onlineRateParam.setIds(devices);
list.add(String.valueOf(onLineRateDMapper.getTotalOnlineRates(onlineRateParam)));
}else {
} else {
list.add("0");
}
}
@@ -495,9 +495,9 @@ public class GridDiagramServiceImpl implements GridDiagramService {
details.setOnLineNum(onIds.size());
details.setOnLineNumList(onIds);
baseQueryParam.setLineIds(ids);
if(CollUtil.isNotEmpty(ids)){
if (CollUtil.isNotEmpty(ids)) {
details.setIntegrityRate(integrityDMapper.selectTotalIntegrityByLineIds(baseQueryParam));
}else{
} else {
details.setIntegrityRate(0.0f);
}
return details;

View File

@@ -153,7 +153,7 @@ public class GridServiceImpl implements IGridService {
List<String> ll = lineDetailMap.get(item.getArea()).stream().map(LineDetail::getId).collect(Collectors.toList());
AssessDetailVo comAssess = getAssessData(item.getId(), item.getName(), ll, list1, list2, list3);
result.add(comAssess);
}else{
} else {
AssessVo assessVo = new AssessVo();
assessVo.setName(item.getName());
List<String> ll = lineDetailList.stream().map(LineDetail::getId).collect(Collectors.toList());
@@ -343,40 +343,40 @@ public class GridServiceImpl implements IGridService {
EvaluationLevelVo vo5 = new EvaluationLevelVo();
vo5.setTargetName(DicDataEnum.FLICKER.getName());
if (CollUtil.isNotEmpty(lineList)) {
List<RStatDataVD> list1 = getList1(lineList,param.getStartTime(),param.getEndTime());
List<RStatDataVD> list2 = getList2(lineList,param.getStartTime(),param.getEndTime());
List<RStatDataVD> list3 = getList3(lineList,param.getStartTime(),param.getEndTime());
List<RStatDataPltDPO> list4 = getList4(lineList,param.getStartTime(),param.getEndTime());
List<RStatDataVD> list5 = getList5(lineList,param.getStartTime(),param.getEndTime());
List<RStatDataVD> list1 = getList1(lineList, param.getStartTime(), param.getEndTime());
List<RStatDataVD> list2 = getList2(lineList, param.getStartTime(), param.getEndTime());
List<RStatDataVD> list3 = getList3(lineList, param.getStartTime(), param.getEndTime());
List<RStatDataPltDPO> list4 = getList4(lineList, param.getStartTime(), param.getEndTime());
List<RStatDataVD> list5 = getList5(lineList, param.getStartTime(), param.getEndTime());
if (CollUtil.isNotEmpty(list1)) {
List<Double> d = list1.stream().map(o->o.getFreqDev().doubleValue()).collect(Collectors.toList());
double avg = d.stream().collect(Collectors.averagingDouble(x->x));
vo1.setAvg(PubUtils.doubleRound(2,avg));
vo1.setSd(targetSd(d,avg));
List<Double> d = list1.stream().map(o -> o.getFreqDev().doubleValue()).collect(Collectors.toList());
double avg = d.stream().collect(Collectors.averagingDouble(x -> x));
vo1.setAvg(PubUtils.doubleRound(2, avg));
vo1.setSd(targetSd(d, avg));
}
if (CollUtil.isNotEmpty(list2)) {
List<Double> d = list2.stream().map(o->o.getVuDev().doubleValue()).collect(Collectors.toList());
double avg = d.stream().collect(Collectors.averagingDouble(x->x));
vo2.setAvg(PubUtils.doubleRound(2,avg));
vo2.setSd(targetSd(d,avg));
List<Double> d = list2.stream().map(o -> o.getVuDev().doubleValue()).collect(Collectors.toList());
double avg = d.stream().collect(Collectors.averagingDouble(x -> x));
vo2.setAvg(PubUtils.doubleRound(2, avg));
vo2.setSd(targetSd(d, avg));
}
if (CollUtil.isNotEmpty(list3)){
List<Double> d = list3.stream().map(o->o.getVThd().doubleValue()).collect(Collectors.toList());
double avg = d.stream().collect(Collectors.averagingDouble(x->x));
vo3.setAvg(PubUtils.doubleRound(2,avg));
vo3.setSd(targetSd(d,avg));
if (CollUtil.isNotEmpty(list3)) {
List<Double> d = list3.stream().map(o -> o.getVThd().doubleValue()).collect(Collectors.toList());
double avg = d.stream().collect(Collectors.averagingDouble(x -> x));
vo3.setAvg(PubUtils.doubleRound(2, avg));
vo3.setSd(targetSd(d, avg));
}
if (CollUtil.isNotEmpty(list5)) {
List<Double> d = list1.stream().map(o -> o.getVUnbalance().doubleValue()).collect(Collectors.toList());
double avg = d.stream().collect(Collectors.averagingDouble(x -> x));
vo4.setAvg(PubUtils.doubleRound(2,avg));
vo4.setSd(targetSd(d,avg));
vo4.setAvg(PubUtils.doubleRound(2, avg));
vo4.setSd(targetSd(d, avg));
}
if (CollUtil.isNotEmpty(list4)) {
List<Double> d = list4.stream().map(RStatDataPltDPO::getPlt).collect(Collectors.toList());
double avg = d.stream().collect(Collectors.averagingDouble(x -> x));
vo5.setAvg(PubUtils.doubleRound(2,avg));
vo5.setSd(targetSd(d,avg));
vo5.setAvg(PubUtils.doubleRound(2, avg));
vo5.setSd(targetSd(d, avg));
}
}
Stream.of(vo1, vo2, vo3, vo4, vo5).forEach(result::add);
@@ -429,9 +429,9 @@ public class GridServiceImpl implements IGridService {
long plt = overLimitList.stream().filter(obj -> obj.getFlickerOvertime() > 0).count();
long uHarm = overLimitList.stream().filter(x->getLimitRateStats(x,2,26,"uharm","Overtime")).count();
long iHarm = overLimitList.stream().filter(x->getLimitRateStats(x,2,26,"iharm","Overtime")).count();
long inuHarm = overLimitList.stream().filter(x->getLimitRateStats(x,1,16,"inuharm","Overtime")).count();
long uHarm = overLimitList.stream().filter(x -> getLimitRateStats(x, 2, 26, "uharm", "Overtime")).count();
long iHarm = overLimitList.stream().filter(x -> getLimitRateStats(x, 2, 26, "iharm", "Overtime")).count();
long inuHarm = overLimitList.stream().filter(x -> getLimitRateStats(x, 1, 16, "inuharm", "Overtime")).count();
long iNeg = overLimitList.stream().filter(obj -> obj.getINegOvertime() > 0).count();
vo.setRatioList(Arrays.asList(PubUtils.doubleRound(2, freqDev * 100.0 / overLimitList.size()),
PubUtils.doubleRound(2, vDev * 100.0 / overLimitList.size()),
@@ -450,7 +450,6 @@ public class GridServiceImpl implements IGridService {
}
/**
*
* @param limitRateDPO 对象
* @param startNum 循环开始
* @param endNum 循环结束
@@ -458,15 +457,15 @@ public class GridServiceImpl implements IGridService {
* @param end 属性名结束
* @return
*/
public Boolean getLimitRateStats(RStatLimitRateDPO limitRateDPO,Integer startNum,Integer endNum,String start,String end){
public Boolean getLimitRateStats(RStatLimitRateDPO limitRateDPO, Integer startNum, Integer endNum, String start, String end) {
try {
for (int i = startNum; i < endNum; i++) {
String fieldName = start+i+end;
String fieldName = start + i + end;
Field field = limitRateDPO.getClass().getDeclaredField(fieldName);
//设置对象的访问权限保证对private的属性的访问
field.setAccessible(true);
int v = Integer.parseInt(field.get(limitRateDPO).toString());
if(v>0){
if (v > 0) {
return true;
}
}
@@ -477,8 +476,6 @@ public class GridServiceImpl implements IGridService {
}
@Override
public List<EvaluationLevelVo.EvaluationDetail> getEvaluationDetail(AssessParam param) {
List<EvaluationLevelVo.EvaluationDetail> result = new ArrayList<>();
@@ -487,109 +484,128 @@ public class GridServiceImpl implements IGridService {
deptGetLineParam.setLineRunFlag(0);
List<DeptGetChildrenMoreDTO> list = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData();
//获取监测点集合
Map<String,List<String>> lineMap = this.getLineMap(list, param.getIsUpToGrid(), null);
Map<String, List<String>> lineMap = this.getLineMap(list, param.getIsUpToGrid(), null);
List<String> lineList = lineMap.values().stream()
.flatMap(List::stream)
.distinct()
.collect(Collectors.toList());
List<RStatLimitTargetVO> overLimitList = new ArrayList<>();
if (CollUtil.isNotEmpty(lineList)) {
//获取监测点越限集合
List<RStatLimitTargetVO> overLimitList = rStatLimitTargetDMapper.getSumTargetDetails(lineList,
overLimitList .addAll(rStatLimitTargetDMapper.getSumTargetDetails(lineList,
param.getStartTime(),
param.getEndTime());
param.getEndTime())) ;
}
//获取部门
List<DeptDTO> deptList = deptFeignClient.getDepSonDetailByDeptId(param.getDeptIndex()).getData();
deptList.forEach(item->{
if (lineMap.containsKey(item.getId())) {
deptList.forEach(item -> {
EvaluationLevelVo.EvaluationDetail detail = new EvaluationLevelVo.EvaluationDetail();
detail.setDeptId(item.getId());
detail.setDeptName(item.getName());
EvaluationLevelVo.TargetDetail detail1 = new EvaluationLevelVo.TargetDetail();
detail1.setTargetName(DicDataEnum.FREQUENCY_DEV.getName());
detail1.setOverDay(0);
detail1.setOverNum(0);
EvaluationLevelVo.TargetDetail detail2 = new EvaluationLevelVo.TargetDetail();
detail2.setTargetName(DicDataEnum.VOLTAGE_DEV.getName());
detail2.setOverDay(0);
detail2.setOverNum(0);
EvaluationLevelVo.TargetDetail detail3 = new EvaluationLevelVo.TargetDetail();
detail3.setTargetName(DicDataEnum.THD_V.getName());
detail3.setOverDay(0);
detail3.setOverNum(0);
EvaluationLevelVo.TargetDetail detail4 = new EvaluationLevelVo.TargetDetail();
detail4.setTargetName(DicDataEnum.FLICKER.getName());
detail4.setOverDay(0);
detail4.setOverNum(0);
EvaluationLevelVo.TargetDetail detail5 = new EvaluationLevelVo.TargetDetail();
detail5.setTargetName(DicDataEnum.phase_Voltage.getName());
detail5.setOverDay(0);
detail5.setOverNum(0);
EvaluationLevelVo.TargetDetail detail6 = new EvaluationLevelVo.TargetDetail();
detail6.setTargetName(DicDataEnum.NEG_CURRENT.getName());
detail6.setOverDay(0);
detail6.setOverNum(0);
EvaluationLevelVo.TargetDetail detail7 = new EvaluationLevelVo.TargetDetail();
detail7.setTargetName(DicDataEnum.HARMONIC_CURRENT.getName());
detail7.setOverDay(0);
detail7.setOverNum(0);
EvaluationLevelVo.TargetDetail detail8 = new EvaluationLevelVo.TargetDetail();
detail8.setTargetName(DicDataEnum.HARMONIC_VOLTAGE.getName());
detail8.setOverDay(0);
detail8.setOverNum(0);
EvaluationLevelVo.TargetDetail detail9 = new EvaluationLevelVo.TargetDetail();
detail9.setTargetName(DicDataEnum.INTERHARMONIC_VOLTAGE.getName());
detail9.setOverDay(0);
detail9.setOverNum(0);
if (lineMap.containsKey(item.getId())) {
if (CollUtil.isNotEmpty(lineMap.get(item.getId()))) {
List<String> ll = lineMap.get(item.getId());
detail.setOnlineNum(ll.size());
//筛选当前部门下监测点的超标数据
List<RStatLimitTargetVO> list2 = overLimitList.stream().filter(it->ll.contains(it.getLineId())).collect(Collectors.toList());
EvaluationLevelVo.TargetDetail detail1 = new EvaluationLevelVo.TargetDetail();
detail1.setTargetName(DicDataEnum.FREQUENCY_DEV.getName());
EvaluationLevelVo.TargetDetail detail2 = new EvaluationLevelVo.TargetDetail();
detail2.setTargetName(DicDataEnum.VOLTAGE_DEV.getName());
EvaluationLevelVo.TargetDetail detail3 = new EvaluationLevelVo.TargetDetail();
detail3.setTargetName(DicDataEnum.THD_V.getName());
EvaluationLevelVo.TargetDetail detail4 = new EvaluationLevelVo.TargetDetail();
detail4.setTargetName(DicDataEnum.FLICKER.getName());
EvaluationLevelVo.TargetDetail detail5 = new EvaluationLevelVo.TargetDetail();
detail5.setTargetName(DicDataEnum.phase_Voltage.getName());
EvaluationLevelVo.TargetDetail detail6 = new EvaluationLevelVo.TargetDetail();
detail6.setTargetName(DicDataEnum.NEG_CURRENT.getName());
EvaluationLevelVo.TargetDetail detail7 = new EvaluationLevelVo.TargetDetail();
detail7.setTargetName(DicDataEnum.HARMONIC_CURRENT.getName());
EvaluationLevelVo.TargetDetail detail8 = new EvaluationLevelVo.TargetDetail();
detail8.setTargetName(DicDataEnum.HARMONIC_VOLTAGE.getName());
EvaluationLevelVo.TargetDetail detail9 = new EvaluationLevelVo.TargetDetail();
detail9.setTargetName(DicDataEnum.INTERHARMONIC_VOLTAGE.getName());
List<RStatLimitTargetVO> list2 = overLimitList.stream().filter(it -> ll.contains(it.getLineId())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(list2)) {
//筛选出9项指标(电压偏差、频率偏差、电压总谐波畸变率、电压闪变、三相电压不平衡度、负序电流、谐波电流、间谐波电压、谐波电压)超标监测点
long allNum = list2.stream().filter(o->o.getAllOvertime() > 0|| o.getFlickerAllTime()>0).count();
long allNum = list2.stream().filter(o -> o.getAllOvertime() > 0 || o.getFlickerAllTime() > 0).count();
detail.setOverNum((int) allNum);
detail.setOverRatio(PubUtils.doubleRound(2,detail.getOverNum()*100.0/detail.getOnlineNum()));
detail.setOverRatio(PubUtils.doubleRound(2, detail.getOverNum() * 100.0 / detail.getOnlineNum()));
//筛选出电压偏差超标监测点
long num1 = list2.stream().filter(o->o.getFreqDevOvertime() > 0).count();
long num1 = list2.stream().filter(o -> o.getFreqDevOvertime() > 0).count();
Integer day1 = list2.stream().max(Comparator.comparingInt(RStatLimitTargetVO::getFreqDevOvertime)).get().getFreqDevOvertime();
detail1.setOverNum((int) num1);
detail1.setOverDay(day1);
//筛选出频率偏差超标监测点
long num2 = list2.stream().filter(o->o.getVoltageDevOvertime() > 0).count();
long num2 = list2.stream().filter(o -> o.getVoltageDevOvertime() > 0).count();
Integer day2 = list2.stream().max(Comparator.comparingInt(RStatLimitTargetVO::getVoltageDevOvertime)).get().getVoltageDevOvertime();
detail2.setOverNum((int) num2);
detail2.setOverDay(day2);
//筛选出电压总谐波畸变率超标监测点
long num3 = list2.stream().filter(o->o.getUaberranceOvertime() > 0).count();
long num3 = list2.stream().filter(o -> o.getUaberranceOvertime() > 0).count();
Integer day3 = list2.stream().max(Comparator.comparingInt(RStatLimitTargetVO::getUaberranceOvertime)).get().getUaberranceOvertime();
detail3.setOverNum((int) num3);
detail3.setOverDay(day3);
//筛选出电压闪变超标监测点
long num4 = list2.stream().filter(o->o.getFlickerOvertime() > 0).count();
long num4 = list2.stream().filter(o -> o.getFlickerOvertime() > 0).count();
Integer day4 = list2.stream().max(Comparator.comparingInt(RStatLimitTargetVO::getFlickerOvertime)).get().getFlickerOvertime();
detail4.setOverNum((int) num4);
detail4.setOverDay(day4);
//筛选出三相电压不平衡度超标监测点
long num5 = list2.stream().filter(o->o.getUbalanceOvertime() > 0).count();
long num5 = list2.stream().filter(o -> o.getUbalanceOvertime() > 0).count();
Integer day5 = list2.stream().max(Comparator.comparingInt(RStatLimitTargetVO::getUbalanceOvertime)).get().getUbalanceOvertime();
detail5.setOverNum((int) num5);
detail5.setOverDay(day5);
//筛选出负序电流超标监测点
long num6 = list2.stream().filter(o->o.getINegOvertime() > 0).count();
long num6 = list2.stream().filter(o -> o.getINegOvertime() > 0).count();
Integer day6 = list2.stream().max(Comparator.comparingInt(RStatLimitTargetVO::getINegOvertime)).get().getINegOvertime();
detail6.setOverNum((int) num6);
detail6.setOverDay(day6);
long num7 = list2.stream().filter(o->o.getIharmOvertime() > 0).count();
long num7 = list2.stream().filter(o -> o.getIharmOvertime() > 0).count();
Integer day7 = list2.stream().max(Comparator.comparingInt(RStatLimitTargetVO::getIharmOvertime)).get().getIharmOvertime();
detail7.setOverNum((int) num7);
detail7.setOverDay(day7);
long num8 = list2.stream().filter(o->o.getUharmOvertime() > 0).count();
long num8 = list2.stream().filter(o -> o.getUharmOvertime() > 0).count();
Integer day8 = list2.stream().max(Comparator.comparingInt(RStatLimitTargetVO::getUharmOvertime)).get().getUharmOvertime();
detail8.setOverNum((int) num8);
detail8.setOverDay(day8);
long num9 = list2.stream().filter(o->o.getInuharmOvertime() > 0).count();
long num9 = list2.stream().filter(o -> o.getInuharmOvertime() > 0).count();
Integer day9 = list2.stream().max(Comparator.comparingInt(RStatLimitTargetVO::getInuharmOvertime)).get().getInuharmOvertime();
detail9.setOverNum((int) num9);
detail9.setOverDay(day9);
}
}
}
List<EvaluationLevelVo.TargetDetail> details = Arrays.asList(detail1, detail2, detail3, detail4, detail5, detail6, detail7, detail8, detail9);
detail.setList(details);
}
result.add(detail);
}
});
}
return result;
}
@@ -601,7 +617,7 @@ public class GridServiceImpl implements IGridService {
deptGetLineParam.setLineRunFlag(0);
List<DeptGetChildrenMoreDTO> list = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData();
//获取监测点集合
Map<String,List<String>> lineMap = this.getLineMap(list, param.getIsUpToGrid(), null);
Map<String, List<String>> lineMap = this.getLineMap(list, param.getIsUpToGrid(), null);
List<String> lineList = lineMap.values().stream()
.flatMap(List::stream)
.distinct()
@@ -609,9 +625,9 @@ public class GridServiceImpl implements IGridService {
//获取基础台账信息
List<BaseLineInfo> baseLineInfos = generalDeviceInfoClient.getBaseLineInfo(lineList).getData();
//获取越限详情
List<RStatLimitRateDPO> overLimitList = rStatLimitRateDMapper.getAssessTargetRate(lineList,param.getStartTime(),param.getEndTime());
Map<String, RStatLimitRateDPO> map = overLimitList.stream().collect(Collectors.toMap(RStatLimitRateDPO::getLineId,Function.identity()));
baseLineInfos.forEach(item->{
List<RStatLimitRateDPO> overLimitList = rStatLimitRateDMapper.getAssessTargetRate(lineList, param.getStartTime(), param.getEndTime());
Map<String, RStatLimitRateDPO> map = overLimitList.stream().collect(Collectors.toMap(RStatLimitRateDPO::getLineId, Function.identity()));
baseLineInfos.forEach(item -> {
EvaluationLevelVo.QualifiedDetail qualifiedDetail = new EvaluationLevelVo.QualifiedDetail();
qualifiedDetail.setAreaName(item.getGdName());
qualifiedDetail.setLineName(item.getLineName());
@@ -637,7 +653,7 @@ public class GridServiceImpl implements IGridService {
public EvaluationLevelVo.QualifiedDetail getLineQualifiedDetail(String lineId, String startTime, String endTime) {
EvaluationLevelVo.QualifiedDetail detail = new EvaluationLevelVo.QualifiedDetail();
List<String> lineList = Collections.singletonList(lineId);
List<RStatLimitRateDPO> overLimitList = rStatLimitRateDMapper.getAssessTargetRate(lineList,startTime,endTime);
List<RStatLimitRateDPO> overLimitList = rStatLimitRateDMapper.getAssessTargetRate(lineList, startTime, endTime);
if (CollUtil.isNotEmpty(overLimitList)) {
RStatLimitRateDPO dpo = overLimitList.get(0);
addQualifiedDetail(detail, dpo);
@@ -652,17 +668,17 @@ public class GridServiceImpl implements IGridService {
qualifiedDetail.setVThd(PubUtils.doubleRound(2, 100.0 - (item2.getUaberranceOvertime() * 100.0 / item2.getAllTime())));
qualifiedDetail.setUbalance(PubUtils.doubleRound(2, 100.0 - (item2.getUbalanceOvertime() * 100.0 / item2.getAllTime())));
//谐波电压
List<Integer> list1 = getList(2,25,"getUharm",item2);
List<Integer> list1 = getList(2, 25, "getUharm", item2);
Integer maxValue1 = list1.stream().max(Integer::compareTo).orElse(null);
qualifiedDetail.setUHarm(Objects.isNull(maxValue1) ? null : PubUtils.doubleRound(2,100.0 - (maxValue1*100.0 / item2.getAllTime())));
qualifiedDetail.setUHarm(Objects.isNull(maxValue1) ? null : PubUtils.doubleRound(2, 100.0 - (maxValue1 * 100.0 / item2.getAllTime())));
//谐波电流
List<Integer> list2 = getList(2,25,"getIharm",item2);
List<Integer> list2 = getList(2, 25, "getIharm", item2);
Integer maxValue2 = list2.stream().max(Integer::compareTo).orElse(null);
qualifiedDetail.setIHarm(Objects.isNull(maxValue2) ? null : PubUtils.doubleRound(2,100.0 - (maxValue2*100.0 / item2.getAllTime())));
qualifiedDetail.setIHarm(Objects.isNull(maxValue2) ? null : PubUtils.doubleRound(2, 100.0 - (maxValue2 * 100.0 / item2.getAllTime())));
//间谐波电压
List<Integer> list3 = getList(1,16,"getInuharm",item2);
List<Integer> list3 = getList(1, 16, "getInuharm", item2);
Integer maxValue3 = list3.stream().max(Integer::compareTo).orElse(null);
qualifiedDetail.setInuHarm(Objects.isNull(maxValue3) ? null : PubUtils.doubleRound(2,100.0 - (maxValue3*100.0 / item2.getAllTime())));
qualifiedDetail.setInuHarm(Objects.isNull(maxValue3) ? null : PubUtils.doubleRound(2, 100.0 - (maxValue3 * 100.0 / item2.getAllTime())));
qualifiedDetail.setINeg(PubUtils.doubleRound(2, 100.0 - (item2.getINegOvertime() * 100.0 / item2.getAllTime())));
}
if (item2.getFlickerAllTime() > 0) {
@@ -696,63 +712,63 @@ public class GridServiceImpl implements IGridService {
* 获取监测点频率偏差 T相最大值
*/
public List<RStatDataVD> getList1(List<String> lineList, String startTime, String endTime) {
return statDataVDMapper.getFreqDev(lineList,startTime,endTime);
return statDataVDMapper.getFreqDev(lineList, startTime, endTime);
}
/**
* 获取监测点电压偏差 使用电压上偏差A、B、C三相最大值的平均值
*/
public List<RStatDataVD> getList2(List<String> lineList, String startTime, String endTime) {
return statDataVDMapper.getVuDev(lineList,startTime,endTime);
return statDataVDMapper.getVuDev(lineList, startTime, endTime);
}
/**
* 获取监测点电压总谐波畸变率 A、B、C三相Cp95的平均值
*/
public List<RStatDataVD> getList3(List<String> lineList, String startTime, String endTime) {
return statDataVDMapper.getVthd(lineList,startTime,endTime);
return statDataVDMapper.getVthd(lineList, startTime, endTime);
}
/**
* 获取监测点闪变 A、B、C三相最大值的平均值
*/
public List<RStatDataPltDPO> getList4(List<String> lineList, String startTime, String endTime) {
return statDataPltDMapper.getPlt(lineList,startTime,endTime);
return statDataPltDMapper.getPlt(lineList, startTime, endTime);
}
/**
* 获取监测点三相电压不平衡度 T相 CP95
*/
public List<RStatDataVD> getList5(List<String> lineList, String startTime, String endTime) {
return statDataVDMapper.getUnbalance(lineList,startTime,endTime);
return statDataVDMapper.getUnbalance(lineList, startTime, endTime);
}
/**
* 谐波电压含有率 A、B、C三相最大值的平均值
*/
private List<RStatDataVD> getList6(List<String> lineList, String startTime, String endTime) {
return statDataVDMapper.getV(lineList,startTime,endTime);
return statDataVDMapper.getV(lineList, startTime, endTime);
}
/**
* 谐波电流 A、B、C三相最大值的平均值
*/
private List<RStatDataIDPO> getList7(List<String> lineList, String startTime, String endTime) {
return statDataIDMapper.getI(lineList,startTime,endTime);
return statDataIDMapper.getI(lineList, startTime, endTime);
}
/**
* 间谐波电压含有率 A、B、C三相最大值的平均值
*/
private List<RStatDataInharmVDPO> getList8(List<String> lineList, String startTime, String endTime) {
return rStatDataInharmVDMapper.getV(lineList,startTime,endTime);
return rStatDataInharmVDMapper.getV(lineList, startTime, endTime);
}
/**
* 获取监测点负序电流 A、B、C三相最大值的平均值
*/
public List<RStatDataIDPO> getList9(List<String> lineList, String startTime, String endTime) {
return statDataIDMapper.getINeg(lineList,startTime,endTime);
return statDataIDMapper.getINeg(lineList, startTime, endTime);
}
/**
@@ -761,7 +777,7 @@ public class GridServiceImpl implements IGridService {
public Double targetSd(List<Double> list, Double avg) {
double sum = list.stream().mapToDouble(number -> Math.pow(number - avg, 2)).sum();
double variance = sum / list.size();
return PubUtils.doubleRound(2,Math.sqrt(variance));
return PubUtils.doubleRound(2, Math.sqrt(variance));
}
@@ -775,70 +791,70 @@ public class GridServiceImpl implements IGridService {
List<RStatLimitRateDPO> filteredList0 = limitRateList.stream()
.filter(data -> data.getFreqDevOvertime() + data.getVoltageDevOvertime() + data.getFlickerOvertime() + data.getUaberranceOvertime() + data.getUbalanceOvertime() > 0)
.collect(Collectors.toList());
children.setRatio(PubUtils.doubleRound(2,filteredList0.size()*100.0/limitRateList.size()));
children.setRatio(PubUtils.doubleRound(2, filteredList0.size() * 100.0 / limitRateList.size()));
break;
//电压偏差
case 1:
List<RStatLimitRateDPO> filteredList1 = limitRateList.stream()
.filter(data -> data.getVoltageDevOvertime() > 0)
.collect(Collectors.toList());
children.setRatio(PubUtils.doubleRound(2,filteredList1.size()*100.0/limitRateList.size()));
children.setRatio(PubUtils.doubleRound(2, filteredList1.size() * 100.0 / limitRateList.size()));
break;
//频率偏差
case 2:
List<RStatLimitRateDPO> filteredList2 = limitRateList.stream()
.filter(data -> data.getFreqDevOvertime() > 0)
.collect(Collectors.toList());
children.setRatio(PubUtils.doubleRound(2,filteredList2.size()*100.0/limitRateList.size()));
children.setRatio(PubUtils.doubleRound(2, filteredList2.size() * 100.0 / limitRateList.size()));
break;
//电压总谐波畸变率
case 3:
List<RStatLimitRateDPO> filteredList3 = limitRateList.stream()
.filter(data -> data.getUaberranceOvertime() > 0)
.collect(Collectors.toList());
children.setRatio(PubUtils.doubleRound(2,filteredList3.size()*100.0/limitRateList.size()));
children.setRatio(PubUtils.doubleRound(2, filteredList3.size() * 100.0 / limitRateList.size()));
break;
//电压闪变
case 4:
List<RStatLimitRateDPO> filteredList4 = limitRateList.stream()
.filter(data -> data.getFlickerOvertime() > 0)
.collect(Collectors.toList());
children.setRatio(PubUtils.doubleRound(2,filteredList4.size()*100.0/limitRateList.size()));
children.setRatio(PubUtils.doubleRound(2, filteredList4.size() * 100.0 / limitRateList.size()));
break;
//三相电压不平衡度
case 5:
List<RStatLimitRateDPO> filteredList5 = limitRateList.stream()
.filter(data -> data.getUbalanceOvertime() > 0)
.collect(Collectors.toList());
children.setRatio(PubUtils.doubleRound(2,filteredList5.size()*100.0/limitRateList.size()));
children.setRatio(PubUtils.doubleRound(2, filteredList5.size() * 100.0 / limitRateList.size()));
break;
//谐波电压
case 6:
List<RStatLimitRateDPO> filteredList6 = limitRateList.stream()
.filter(x->getLimitRateStats(x,2,26,"uharm","Overtime"))
.filter(x -> getLimitRateStats(x, 2, 26, "uharm", "Overtime"))
.collect(Collectors.toList());
children.setRatio(PubUtils.doubleRound(2,filteredList6.size()*100.0/limitRateList.size()));
children.setRatio(PubUtils.doubleRound(2, filteredList6.size() * 100.0 / limitRateList.size()));
break;
//谐波电流
case 7:
List<RStatLimitRateDPO> filteredList7 = limitRateList.stream()
.filter(x->getLimitRateStats(x,2,26,"iharm","Overtime"))
.filter(x -> getLimitRateStats(x, 2, 26, "iharm", "Overtime"))
.collect(Collectors.toList());
children.setRatio(PubUtils.doubleRound(2,filteredList7.size()*100.0/limitRateList.size()));
children.setRatio(PubUtils.doubleRound(2, filteredList7.size() * 100.0 / limitRateList.size()));
break;
//间谐波电压
case 8:
List<RStatLimitRateDPO> filteredList8 = limitRateList.stream()
.filter(x->getLimitRateStats(x,1,16,"inuharm","Overtime"))
.filter(x -> getLimitRateStats(x, 1, 16, "inuharm", "Overtime"))
.collect(Collectors.toList());
children.setRatio(PubUtils.doubleRound(2,filteredList8.size()*100.0/limitRateList.size()));
children.setRatio(PubUtils.doubleRound(2, filteredList8.size() * 100.0 / limitRateList.size()));
break;
//负序电流
case 9:
List<RStatLimitRateDPO> filteredList9 = limitRateList.stream()
.filter(data -> data.getINegOvertime() > 0)
.collect(Collectors.toList());
children.setRatio(PubUtils.doubleRound(2,filteredList9.size()*100.0/limitRateList.size()));
children.setRatio(PubUtils.doubleRound(2, filteredList9.size() * 100.0 / limitRateList.size()));
break;
default:
break;
@@ -850,25 +866,25 @@ public class GridServiceImpl implements IGridService {
comAssess.setDeptId(deptId);
comAssess.setDeptName(deptName);
//处理区域各个指标的稳态评估
if (CollUtil.isNotEmpty(list1)){
List<RStatAssesDPO> list11 = list1.stream().filter(it->lineList.contains(it.getLineId())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(list1)) {
List<RStatAssesDPO> list11 = list1.stream().filter(it -> lineList.contains(it.getLineId())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(list11)) {
this.chanelTargetAssess(list11,comAssess);
this.chanelTargetAssess(list11, comAssess);
}
}
//处理区域综合稳态评估
if (CollUtil.isNotEmpty(list2)){
List<PQSComAssesPO> list22 = list2.stream().filter(it->lineList.contains(it.getLineId())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(list22)){
List<PqsComasses> communicateList = BeanUtil.copyToList(list22,PqsComasses.class);
if (CollUtil.isNotEmpty(list2)) {
List<PQSComAssesPO> list22 = list2.stream().filter(it -> lineList.contains(it.getLineId())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(list22)) {
List<PqsComasses> communicateList = BeanUtil.copyToList(list22, PqsComasses.class);
float synData = comAssesUtil.getAllComAss(communicateList);
comAssess.setAssessData(PubUtils.floatRound(2,synData));
comAssess.setAssessData(PubUtils.floatRound(2, synData));
comAssess.setAssessLevel(getLevel(synData));
}
}
//处理区域总指标合格率、各个指标合格率
if (CollUtil.isNotEmpty(list3)){
List<RStatLimitRateDPO> list33 = list3.stream().filter(it->lineList.contains(it.getLineId())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(list3)) {
List<RStatLimitRateDPO> list33 = list3.stream().filter(it -> lineList.contains(it.getLineId())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(list33)) {
//总指标次数
int allTime = list33.stream()
@@ -894,12 +910,12 @@ public class GridServiceImpl implements IGridService {
int ubalanceTime = list33.stream()
.mapToInt(RStatLimitRateDPO::getUbalanceOvertime)
.sum();
comAssess.setQualifyData(allTime <= 0 ? 3.14159:PubUtils.doubleRound(2,100-(devTime+freqTime+thdTime+pltTime+ubalanceTime)*100.0/(allTime*5)));
comAssess.setVDevQualifyData(allTime <= 0 ? 3.14159:PubUtils.doubleRound(2,100-devTime*100.0/allTime));
comAssess.setFreqQualifyData(allTime <= 0 ? 3.14159:PubUtils.doubleRound(2,100-freqTime*100.0/allTime));
comAssess.setHarmQualifyData(allTime <= 0 ? 3.14159:PubUtils.doubleRound(2,100-thdTime*100.0/allTime));
comAssess.setFlickerQualifyData(allTime <= 0 ? 3.14159:PubUtils.doubleRound(2,100-pltTime*100.0/allTime));
comAssess.setUnbalanceQualifyData(allTime <= 0 ? 3.14159:PubUtils.doubleRound(2,100-ubalanceTime*100.0/allTime));
comAssess.setQualifyData(allTime <= 0 ? 3.14159 : PubUtils.doubleRound(2, 100 - (devTime + freqTime + thdTime + pltTime + ubalanceTime) * 100.0 / (allTime * 5)));
comAssess.setVDevQualifyData(allTime <= 0 ? 3.14159 : PubUtils.doubleRound(2, 100 - devTime * 100.0 / allTime));
comAssess.setFreqQualifyData(allTime <= 0 ? 3.14159 : PubUtils.doubleRound(2, 100 - freqTime * 100.0 / allTime));
comAssess.setHarmQualifyData(allTime <= 0 ? 3.14159 : PubUtils.doubleRound(2, 100 - thdTime * 100.0 / allTime));
comAssess.setFlickerQualifyData(allTime <= 0 ? 3.14159 : PubUtils.doubleRound(2, 100 - pltTime * 100.0 / allTime));
comAssess.setUnbalanceQualifyData(allTime <= 0 ? 3.14159 : PubUtils.doubleRound(2, 100 - ubalanceTime * 100.0 / allTime));
}
}
return comAssess;
@@ -910,32 +926,32 @@ public class GridServiceImpl implements IGridService {
.mapToDouble(RStatAssesDPO::getVuDev)
.average()
.orElse(0.0);
comAssess.setVDevAssessData(PubUtils.doubleRound(2,vuDev));
comAssess.setVDevAssessLevel(getLevel(vuDev,0f,2.5f,5f,7.5f,10f,12.5f,15f,17.5f));
comAssess.setVDevAssessData(PubUtils.doubleRound(2, vuDev));
comAssess.setVDevAssessLevel(getLevel(vuDev, 0f, 2.5f, 5f, 7.5f, 10f, 12.5f, 15f, 17.5f));
double freqDev = list.stream()
.mapToDouble(RStatAssesDPO::getFreqDev)
.average()
.orElse(0.0);
comAssess.setFreqAssessData(PubUtils.doubleRound(2,freqDev));
comAssess.setFreqAssessLevel(getLevel(freqDev,0f,0.05f,0.1f,0.15f,0.2f,0.25f,0.30f,0.35f));
comAssess.setFreqAssessData(PubUtils.doubleRound(2, freqDev));
comAssess.setFreqAssessLevel(getLevel(freqDev, 0f, 0.05f, 0.1f, 0.15f, 0.2f, 0.25f, 0.30f, 0.35f));
double dataPlt = list.stream()
.mapToDouble(RStatAssesDPO::getDataPlt)
.average()
.orElse(0.0);
comAssess.setFlickerAssessData(PubUtils.doubleRound(2,dataPlt));
comAssess.setFlickerAssessLevel(getLevel(dataPlt,0f,0.05f,0.1f,0.15f,0.2f,0.25f,0.30f,0.35f));
comAssess.setFlickerAssessData(PubUtils.doubleRound(2, dataPlt));
comAssess.setFlickerAssessLevel(getLevel(dataPlt, 0f, 0.05f, 0.1f, 0.15f, 0.2f, 0.25f, 0.30f, 0.35f));
double vUnbalanceCp95 = list.stream()
.mapToDouble(RStatAssesDPO::getVUnbalanceCp95)
.average()
.orElse(0.0);
comAssess.setUnbalanceAssessData(PubUtils.doubleRound(2,vUnbalanceCp95));
comAssess.setUnbalanceAssessLevel(getLevel(vUnbalanceCp95,0f,0.5f,1f,1.5f,2f,2.5f,3f,3.5f));
comAssess.setUnbalanceAssessData(PubUtils.doubleRound(2, vUnbalanceCp95));
comAssess.setUnbalanceAssessLevel(getLevel(vUnbalanceCp95, 0f, 0.5f, 1f, 1.5f, 2f, 2.5f, 3f, 3.5f));
double vThdCp95 = list.stream()
.mapToDouble(RStatAssesDPO::getVThdCp95)
.average()
.orElse(0.0);
comAssess.setHarmAssessData(PubUtils.doubleRound(2,vThdCp95));
comAssess.setHarmAssessLevel(getLevel(vThdCp95,0f,0.5f,1f,1.5f,2f,2.5f,3f,3.5f));
comAssess.setHarmAssessData(PubUtils.doubleRound(2, vThdCp95));
comAssess.setHarmAssessLevel(getLevel(vThdCp95, 0f, 0.5f, 1f, 1.5f, 2f, 2.5f, 3f, 3.5f));
}
@@ -943,18 +959,18 @@ public class GridServiceImpl implements IGridService {
* 获取综合评估等级
*/
private String getLevel(float synDatas) {
if(synDatas==3.14159f){
if (synDatas == 3.14159f) {
return "暂无数据";
}
if(0<=synDatas&&synDatas<2){
if (0 <= synDatas && synDatas < 2) {
return "极差";
}else if(2<=synDatas&&synDatas<3){
} else if (2 <= synDatas && synDatas < 3) {
return "较差";
}else if(3<=synDatas&&synDatas<4){
} else if (3 <= synDatas && synDatas < 4) {
return "合格";
}else if(4<=synDatas&&synDatas<4.5){
} else if (4 <= synDatas && synDatas < 4.5) {
return "良好";
}else{
} else {
return "优质";
}
}
@@ -963,41 +979,42 @@ public class GridServiceImpl implements IGridService {
/**
* 获取各个指标对应的等级
*/
private String getLevel(double value,float f1,float f2,float f3,float f4,float f5,float f6,float f7,float f8) {
private String getLevel(double value, float f1, float f2, float f3, float f4, float f5, float f6, float f7, float f8) {
String level;
if(f1<=value&&value<=f2){
level="特质";
}else if(f2<value&&value<=f3){
level="优质";
}else if(f3<value&&value<=f4){
level="优良";
}else if(f4<value&&value<=f5){
level="良好";
}else if(f5<value&&value<=f6){
if (f1 <= value && value <= f2) {
level = "特质";
} else if (f2 < value && value <= f3) {
level = "优质";
} else if (f3 < value && value <= f4) {
level = "优良";
} else if (f4 < value && value <= f5) {
level = "良好";
} else if (f5 < value && value <= f6) {
// level="轻度污染";
level="合格";
}else if(f6<value&&value<=f7){
level = "合格";
} else if (f6 < value && value <= f7) {
// level="中度污染";
level="较差";
}else if(f7<value&&value<=f8){
level = "较差";
} else if (f7 < value && value <= f8) {
// level="重度污染";
level="";
}else{
level = "";
} else {
// level="极度污染";
level="极差";
level = "极差";
}
return level;
}
/**
* 过滤监测点
*
* @param list
* @param type
* @return
*/
public Map<String,List<String>> getLineMap(List<DeptGetChildrenMoreDTO> list, Integer type, String voltage) {
Map<String,List<String>> map = new HashMap<>();
list.forEach(it->{
public Map<String, List<String>> getLineMap(List<DeptGetChildrenMoreDTO> list, Integer type, String voltage) {
Map<String, List<String>> map = new HashMap<>();
list.forEach(it -> {
// 默认不过滤
Predicate<LineDevGetDTO> uploadFilter = item -> true;
if (Objects.equals(type, 1)) {
@@ -1005,12 +1022,12 @@ public class GridServiceImpl implements IGridService {
}
Predicate<LineDevGetDTO> voltageFilter = item -> true;
if (!Objects.isNull(voltage) && !Objects.equals(voltage,"")) {
if (!Objects.isNull(voltage) && !Objects.equals(voltage, "")) {
voltageFilter = item -> Objects.equals(item.getVoltageLevel(), voltage);
}
// 组合两个过滤条件
Predicate<LineDevGetDTO> combinedFilter = uploadFilter.and(voltageFilter);
map.put(it.getUnitId(),it.getLineBaseList().stream()
map.put(it.getUnitId(), it.getLineBaseList().stream()
.filter(combinedFilter)
.map(LineDevGetDTO::getPointId)
.distinct()