diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/MonitorOverLimitVO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/MonitorOverLimitVO.java index 903f1059f..25da796d0 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/MonitorOverLimitVO.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/vo/MonitorOverLimitVO.java @@ -128,4 +128,15 @@ public class MonitorOverLimitVO { @ApiModelProperty("监测点编号") private String monitorNumber; + @Data + public static class DataVO { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("日期") + private String time; + + @ApiModelProperty("数据") + private Double data; + + } } diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/utils/PubUtils.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/utils/PubUtils.java index 7c46467d7..9d248672c 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/utils/PubUtils.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/utils/PubUtils.java @@ -1,12 +1,13 @@ package com.njcn.harmonic.utils; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import java.io.File; import java.io.IOException; import java.io.InputStream; -import java.net.Socket; -import java.util.Properties; +import java.text.SimpleDateFormat; +import java.util.*; /** * @author wr @@ -89,4 +90,131 @@ public class PubUtils { public static Double dataLimits(Double data){ return data>100?100:data; } + + @SneakyThrows + public static List getIntervalTime(String startTime, String endTime) { + List times = new ArrayList<>(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); + Date start = sdf.parse(startTime); + Date end = sdf.parse(endTime); + // 同月 + if (start.getTime() == end.getTime()) { + String time = startTime.substring(0, 7); + times.add(time); + } else if (start.getYear() == end.getYear()) { + // 同年 + int startM = start.getMonth() + 1; + int endM = end.getMonth() + 1; + int temp = endM - startM; + for (int i = 0; i <= temp; i++) { + String time = start.getYear() + 1900 + ""; + int month = startM + i; + if (month < 10) { + time = time + "-0" + month; + } else { + time = time + "-" + month; + } + times.add(time); + } + } else { + // 不同年!!!!这里忽略了年份之间跨年的情况 + int startY = start.getYear() + 1900; + int startM = start.getMonth() + 1; + int endY = end.getYear() + 1900; + int endM = end.getMonth() + 1; + int tempS = 12 - startM; + // 连续的年份 + if (endY - startY == 1) { + // 第一年的时间获取 + for (int i = 0; i <= tempS; i++) { + int month = startM + i; + String time = startY + "-"; + if (month < 10) { + time = time + "0" + month; + } else { + time = time + month; + } + times.add(time); + } + // 第二年的时间获取 + + for (int i = 1; i <= endM; i++) { + String time = endY + "-"; + if (i < 10) { + time = time + "0" + i; + } else { + time = time + i; + } + times.add(time); + } + } else { + // 不连续的年份 + // 第一年的时间获取 + for (int i = 0; i <= tempS; i++) { + int month = startM + i; + String time = startY + "-"; + if (month < 10) { + time = time + "0" + month; + } else { + time = time + month; + } + times.add(time); + } + int tempY = endY - startY; + // 中间年份的时间 + for (int i = 1; i < tempY; i++) { + for (int j = 1; j <= 12; j++) { + String time = startY + i + "-"; + if (j < 10) { + time = time + "0" + j; + } else { + time = time + j; + } + times.add(time); + } + } + // 最后一年的时间获取 + for (int i = 1; i <= endM; i++) { + String time = endY + "-"; + if (i < 10) { + time = time + "0" + i; + } else { + time = time + i; + } + times.add(time); + } + } + + } + return times; + } + + @SneakyThrows + public static List getIntervalDateTime(Integer startTime, Integer endTime, Integer dd) { + List list = new ArrayList<>(); + Calendar calendar = Calendar.getInstance(Locale.CHINA); + calendar.set(startTime, endTime - 1, 1); + //年份 + int year = calendar.get(Calendar.YEAR); + //月份 + int month = calendar.get(Calendar.MONTH) + 1; + for (int i = 1; i <= dd; i++) { + String date = null; + if (month < 10 && i < 10) { + date = year + "-0" + month + "-0" + i; + } + if (month < 10 && i >= 10) { + date = year + "-0" + month + "-" + i; + } + if (month >= 10 && i < 10) { + date = year + "-" + month + "-0" + i; + } + if (month >= 10 && i >= 10) { + date = year + "-" + month + "-" + i; + } + + list.add(date); + } + return list; + } } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatLimitRateDMapper.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatLimitRateDMapper.java index 2ba594935..11ca7157c 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatLimitRateDMapper.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/RStatLimitRateDMapper.java @@ -8,6 +8,7 @@ import com.njcn.harmonic.pojo.vo.RStatLimitRateDVO; import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** *

@@ -34,4 +35,9 @@ public interface RStatLimitRateDMapper extends BaseMapper { @Param("ids") List lineIndexes, @Param("statTime") String searchBeginTime, @Param("endTime") String searchEndTime); + + List getPercentages( + @Param("ids") List lineIndexes, + @Param("statTime") String searchBeginTime, + @Param("endTime") String searchEndTime); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatLimitRateDMapper.xml b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatLimitRateDMapper.xml index 885ea675a..a338270ec 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatLimitRateDMapper.xml +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/mapping/RStatLimitRateDMapper.xml @@ -183,4 +183,31 @@ GROUP BY my_index + diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/SteadyExceedRateServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/SteadyExceedRateServiceImpl.java index 9f7b65c14..46ca6de60 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/SteadyExceedRateServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/SteadyExceedRateServiceImpl.java @@ -6,6 +6,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -13,10 +14,15 @@ import com.njcn.device.pq.api.GeneralDeviceInfoClient; import com.njcn.device.pq.enums.LineBaseEnum; import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO; import com.njcn.device.pq.pojo.param.DeviceInfoParam; +import com.njcn.device.pq.utils.PublicDateUtil; +import com.njcn.harmonic.mapper.RStatLimitRateDMapper; import com.njcn.harmonic.mapper.SteadyExceedRateMapper; import com.njcn.harmonic.pojo.dto.SteadyQualifyDTO; import com.njcn.harmonic.pojo.po.LimitRatePO; +import com.njcn.harmonic.pojo.po.RStatHarmonicD; import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; +import com.njcn.harmonic.pojo.vo.MonitorOverLimitVO; +import com.njcn.harmonic.pojo.vo.RHarmonicPolylineVO; import com.njcn.harmonic.pojo.vo.SteadyExceedRateCensusVO; import com.njcn.harmonic.pojo.vo.SteadyExceedRateVO; import com.njcn.harmonic.service.IRStatLimitRateDService; @@ -25,11 +31,13 @@ import com.njcn.harmonic.utils.PubUtils; import com.njcn.influxdb.param.InfluxDBPublicParam; import com.njcn.influxdb.utils.InfluxDbUtils; import lombok.AllArgsConstructor; +import lombok.SneakyThrows; import org.influxdb.dto.QueryResult; import org.influxdb.impl.InfluxDBResultMapper; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import java.text.SimpleDateFormat; import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; @@ -53,6 +61,7 @@ public class SteadyExceedRateServiceImpl implements SteadyExceedRateService { private final InfluxDbUtils influxDbUtils; private final IRStatLimitRateDService rateDService; + private final RStatLimitRateDMapper rateDMapper; @Override public List getSteadyExceedRateData(DeviceInfoParam.BusinessParam steadyExceedParam) { @@ -67,20 +76,18 @@ public class SteadyExceedRateServiceImpl implements SteadyExceedRateService { SteadyExceedRateVO steadyExceedRateVO = new SteadyExceedRateVO(); steadyExceedRateVO.setId(generalDeviceDTO.getIndex()); steadyExceedRateVO.setName(generalDeviceDTO.getName()); - List qualifiesRate = getQualifiesRate(lineIndexes, steadyExceedParam.getSearchBeginTime(), steadyExceedParam.getSearchEndTime()); - SteadyExceedRateVO dataMoreMonitorMoreDay = getDataMoreMonitorMoreDay(qualifiesRate); - steadyExceedRateVO.setSteadyExceedRate(PubUtils.dataLimits(dataMoreMonitorMoreDay.getSteadyExceedRate())); - - //组装父级数据树 + //组装子集数据树 List treeList = getTreeData(lineIndexes, steadyExceedParam); - steadyExceedRateVO.setChildren(treeList); + //父级数据 + steadyExceedRateVO.setSteadyExceedRate(PubUtils.dataLimits(NumberUtil.round(treeList.stream().mapToDouble(SteadyExceedRateVO::getSteadyExceedRate).average().orElse(0), 2).doubleValue())); + steadyExceedRateVO.setChildren(treeList); steadyExceedRateVOS.add(steadyExceedRateVO); } return steadyExceedRateVOS; } - + @SneakyThrows @Override public SteadyExceedRateCensusVO getSteadyExceedRateCensus(DeviceInfoParam.BusinessParam steadyExceedCensusParam) { SteadyExceedRateCensusVO steadyExceedRateCensusVO = new SteadyExceedRateCensusVO(); @@ -91,10 +98,14 @@ public class SteadyExceedRateServiceImpl implements SteadyExceedRateService { //按部门分类的实际运行终端综合信息 List deviceDataList = generalDeviceInfoClient.getPracticalRunDeviceInfo(steadyExceedCensusParam).getData(); if (!CollectionUtils.isEmpty(deviceDataList)) { + List> maps=new ArrayList<>(); for (GeneralDeviceDTO generalDeviceDTO: deviceDataList) { type.add(generalDeviceDTO.getName()); List lineIndexes = generalDeviceDTO.getLineIndexes(); + List percentages = rateDMapper.getPercentages(lineIndexes, steadyExceedCensusParam.getSearchBeginTime(), steadyExceedCensusParam.getSearchEndTime()); + Map collect = percentages.stream().collect(Collectors.toMap(MonitorOverLimitVO.DataVO::getTime, MonitorOverLimitVO.DataVO::getData)); + maps.add(collect); //按部门分类的监测点索引集 tempIndex.add(lineIndexes); } @@ -102,6 +113,7 @@ public class SteadyExceedRateServiceImpl implements SteadyExceedRateService { int timed = 0; switch (steadyExceedCensusParam.getTimeFlag()) { case 0: + //查询是年 time = getSteadyTimesByMouth(steadyExceedCensusParam.getSearchBeginTime(), steadyExceedCensusParam.getSearchEndTime()); timed = getSteadyByMouth(steadyExceedCensusParam.getSearchBeginTime(), steadyExceedCensusParam.getSearchEndTime()); for (int i =0; i steadyExceedRate = new ArrayList<>(); - for (List lineIndexes: tempIndex) { - if (!CollectionUtils.isEmpty(lineIndexes)) { - List qualifiesRate = getQualifiesRate(lineIndexes, steadyExceedCensusParam.getSearchBeginTime(), steadyExceedCensusParam.getSearchEndTime()); - if (!CollectionUtils.isEmpty(qualifiesRate)) { - SteadyExceedRateVO dataMoreMonitorSingleDay = getDataMoreMonitorSingleDay(qualifiesRate, lineIndexes, time.get(i)); - steadyExceedRate.add(dataMoreMonitorSingleDay.getSteadyExceedRate()); - }else { - steadyExceedRate.add(3.14159); + //查询是天 + List intervalTime = PubUtils.getIntervalTime(steadyExceedCensusParam.getSearchBeginTime(),steadyExceedCensusParam.getSearchEndTime()); + for (String interTime : intervalTime) { + String startTime = PublicDateUtil.getFisrtDayOfMonth(Integer.parseInt(interTime.substring(0, 4)), Integer.parseInt(interTime.substring(5))); + String endTime = PublicDateUtil.getLastDayOfMonth(Integer.parseInt(interTime.substring(0, 4)), Integer.parseInt(interTime.substring(5))); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + Date dt = simpleDateFormat.parse(startTime); + Date dtDate = simpleDateFormat.parse(endTime); + Integer year = Integer.valueOf(String.format("%tY", dt)); + Integer mon = Integer.valueOf(String.format("%tm", dt)); + Integer day = Integer.valueOf(String.format("%td", dtDate)); + List dayTime = PubUtils.getIntervalDateTime(year, mon, day); + for (String s : dayTime) { + List steadyExceedRate = new ArrayList<>(); + for (int i = 0; i < tempIndex.size(); i++) { + + if (CollUtil.isNotEmpty(maps.get(i))) { + if (maps.get(i).containsKey(s)) { + Double data = maps.get(i).get(s); + steadyExceedRate.add(data); + } else { + steadyExceedRate.add(3.14159); + } + } else { + steadyExceedRate.add(3.1415); } - } else { - steadyExceedRate.add(3.1415); } + steadyExceedList.add(steadyExceedRate); + time.add(s); } - steadyExceedList.add(steadyExceedRate); } break; case 2: @@ -200,7 +224,7 @@ public class SteadyExceedRateServiceImpl implements SteadyExceedRateService { } - private List getSteadyTimesByDay(String searchBeginTime, String searchEndTime) { + public static List getSteadyTimesByDay(String searchBeginTime, String searchEndTime) { List string = new ArrayList<>(); int beginTime = Integer.parseInt(searchBeginTime.substring(8, 10)); int endTime = Integer.parseInt(searchEndTime.substring(8, 10)); @@ -234,9 +258,15 @@ public class SteadyExceedRateServiceImpl implements SteadyExceedRateService { List powerCompanyList = steadyExceedRateMapper.getLineInfoByList(substationList.stream().map(SteadyExceedRateVO::getPid).distinct().collect(Collectors.toList())); List qualifiesRate = getQualifiesRate(lineIndexes, steadyExceedParam.getSearchBeginTime(), steadyExceedParam.getSearchEndTime()); + //根据监测点分组 + Map> lineList = qualifiesRate.stream().collect(Collectors.groupingBy(LimitRatePO::getLineId)); monitorList.forEach(steadyExceedRateVO -> { - SteadyExceedRateVO dataSingleMonitorMoreDay = getDataSingleMonitorMoreDay(qualifiesRate, steadyExceedRateVO.getId()); - steadyExceedRateVO.setSteadyExceedRate(PubUtils.dataLimits(dataSingleMonitorMoreDay.getSteadyExceedRate())); + if(lineList.containsKey(steadyExceedRateVO.getId())){ + SteadyExceedRateVO dataSingleMonitorMoreDay = getDataSingleMonitorMoreDay(lineList.get(steadyExceedRateVO.getId())); + steadyExceedRateVO.setSteadyExceedRate(PubUtils.dataLimits(dataSingleMonitorMoreDay.getSteadyExceedRate())); + }else{ + steadyExceedRateVO.setSteadyExceedRate(3.14159); + } }); setChildesList(substationList,monitorList); setFatherDistortion(substationList); @@ -294,20 +324,29 @@ public class SteadyExceedRateServiceImpl implements SteadyExceedRateService { /** * 计算一个监测点日统计占比率 */ - public SteadyExceedRateVO getDataSingleMonitorSingeDay(List qualifiesRate, String lineId, String time) { + public List getDataSingleMonitorSingeDay(List qualifiesRate) { + List list=new ArrayList<>(); SteadyExceedRateVO steadyExceedRateVO = new SteadyExceedRateVO(); - LimitRatePO limitRatePO; - List limitRatePOList = qualifiesRate.stream().filter( - temp -> temp.getLineId().equals(lineId) && temp.getDayStr().equals(time) - ).collect(Collectors.toList()); - if (!CollectionUtil.isEmpty(limitRatePOList)) { - limitRatePO = limitRatePOList.get(0); - if ((limitRatePO.getFlickerOverTime()+ limitRatePO.getFreqDevOverTime()+ limitRatePO.getINegOverTime()+ limitRatePO.getUAberranceOverTime()+ limitRatePO.getUBalanceOverTime()+ limitRatePO.getVoltageDevOverTime()+ limitRatePO.getIHarm2OverTime()+ limitRatePO.getIHarm3OverTime()+ limitRatePO.getIHarm4OverTime()+ limitRatePO.getIHarm5OverTime()+ limitRatePO.getIHarm6OverTime()+ limitRatePO.getIHarm7OverTime()+ limitRatePO.getIHarm8OverTime()+ limitRatePO.getIHarm9OverTime()+ limitRatePO.getIHarm10OverTime()+ limitRatePO.getIHarm11OverTime()+ limitRatePO.getIHarm12OverTime()+ limitRatePO.getIHarm13OverTime()+ limitRatePO.getIHarm14OverTime()+ limitRatePO.getIHarm15OverTime()+ limitRatePO.getIHarm16OverTime()+ limitRatePO.getIHarm17OverTime()+ limitRatePO.getIHarm18OverTime()+ limitRatePO.getIHarm19OverTime()+ limitRatePO.getIHarm20OverTime()+ limitRatePO.getIHarm21OverTime()+ limitRatePO.getIHarm22OverTime()+ limitRatePO.getIHarm23OverTime()+ limitRatePO.getIHarm24OverTime()+ limitRatePO.getIHarm25OverTime()+ limitRatePO.getUHarm2OverTime()+ limitRatePO.getUHarm3OverTime()+ limitRatePO.getUHarm4OverTime()+ limitRatePO.getUHarm5OverTime()+ limitRatePO.getUHarm6OverTime()+ limitRatePO.getUHarm7OverTime()+ limitRatePO.getUHarm8OverTime()+ limitRatePO.getUHarm9OverTime()+ limitRatePO.getUHarm10OverTime()+ limitRatePO.getUHarm11OverTime()+ limitRatePO.getUHarm12OverTime()+ limitRatePO.getUHarm13OverTime()+ limitRatePO.getUHarm14OverTime()+ limitRatePO.getUHarm15OverTime()+ limitRatePO.getUHarm16OverTime()+ limitRatePO.getUHarm17OverTime()+ limitRatePO.getUHarm18OverTime()+ limitRatePO.getUHarm19OverTime()+ limitRatePO.getUHarm20OverTime()+ limitRatePO.getUHarm21OverTime()+ limitRatePO.getUHarm22OverTime()+ limitRatePO.getUHarm23OverTime()+ limitRatePO.getUHarm24OverTime()+ limitRatePO.getUHarm25OverTime()+ limitRatePO.getInUHARM1OverTime()+ limitRatePO.getInUHARM2OverTime()+ limitRatePO.getInUHARM3OverTime()+ limitRatePO.getInUHARM4OverTime()+ limitRatePO.getInUHARM5OverTime()+ limitRatePO.getInUHARM6OverTime()+ limitRatePO.getInUHARM7OverTime()+ limitRatePO.getInUHARM8OverTime()+ limitRatePO.getInUHARM9OverTime()+ limitRatePO.getInUHARM10OverTime()+ limitRatePO.getInUHARM11OverTime()+ limitRatePO.getInUHARM12OverTime()+ limitRatePO.getInUHARM13OverTime()+ limitRatePO.getInUHARM14OverTime()+ limitRatePO.getInUHARM15OverTime()+ limitRatePO.getInUHARM16OverTime()) > 0){ - steadyExceedRateVO.setSteadyExceedRate(100.00); - } else { steadyExceedRateVO.setSteadyExceedRate(0.00); } + if (!CollectionUtil.isEmpty(qualifiesRate)) { + for (LimitRatePO limitRatePO : qualifiesRate) { + steadyExceedRateVO = new SteadyExceedRateVO(); + double calculate = calculate(limitRatePO.getAllTime(), + limitRatePO.getFlickerOverTime() + + limitRatePO.getFreqDevOverTime() + + limitRatePO.getINegOverTime() + + limitRatePO.getUAberranceOverTime() + + limitRatePO.getUBalanceOverTime() + + limitRatePO.getVoltageDevOverTime() + + limitRatePO.getFlickerAllTime() + + limitRatePO.getIHarm2OverTime() + limitRatePO.getIHarm3OverTime() + limitRatePO.getIHarm4OverTime() + limitRatePO.getIHarm5OverTime() + limitRatePO.getIHarm6OverTime() + limitRatePO.getIHarm7OverTime() + limitRatePO.getIHarm8OverTime() + limitRatePO.getIHarm9OverTime() + limitRatePO.getIHarm10OverTime() + limitRatePO.getIHarm11OverTime() + limitRatePO.getIHarm12OverTime() + limitRatePO.getIHarm13OverTime() + limitRatePO.getIHarm14OverTime() + limitRatePO.getIHarm15OverTime() + limitRatePO.getIHarm16OverTime() + limitRatePO.getIHarm17OverTime() + limitRatePO.getIHarm18OverTime() + limitRatePO.getIHarm19OverTime() + limitRatePO.getIHarm20OverTime() + limitRatePO.getIHarm21OverTime() + limitRatePO.getIHarm22OverTime() + limitRatePO.getIHarm23OverTime() + limitRatePO.getIHarm24OverTime() + limitRatePO.getIHarm25OverTime() + + limitRatePO.getUHarm2OverTime() + limitRatePO.getUHarm3OverTime() + limitRatePO.getUHarm4OverTime() + limitRatePO.getUHarm5OverTime() + limitRatePO.getUHarm6OverTime() + limitRatePO.getUHarm7OverTime() + limitRatePO.getUHarm8OverTime() + limitRatePO.getUHarm9OverTime() + limitRatePO.getUHarm10OverTime() + limitRatePO.getUHarm11OverTime() + limitRatePO.getUHarm12OverTime() + limitRatePO.getUHarm13OverTime() + limitRatePO.getUHarm14OverTime() + limitRatePO.getUHarm15OverTime() + limitRatePO.getUHarm16OverTime() + limitRatePO.getUHarm17OverTime() + limitRatePO.getUHarm18OverTime() + limitRatePO.getUHarm19OverTime() + limitRatePO.getUHarm20OverTime() + limitRatePO.getUHarm21OverTime() + limitRatePO.getUHarm22OverTime() + limitRatePO.getUHarm23OverTime() + limitRatePO.getUHarm24OverTime() + limitRatePO.getUHarm25OverTime() + + limitRatePO.getInUHARM1OverTime() + limitRatePO.getInUHARM2OverTime() + limitRatePO.getInUHARM3OverTime() + limitRatePO.getInUHARM4OverTime() + limitRatePO.getInUHARM5OverTime() + limitRatePO.getInUHARM6OverTime() + limitRatePO.getInUHARM7OverTime() + limitRatePO.getInUHARM8OverTime() + limitRatePO.getInUHARM9OverTime() + limitRatePO.getInUHARM10OverTime() + limitRatePO.getInUHARM11OverTime() + limitRatePO.getInUHARM12OverTime() + limitRatePO.getInUHARM13OverTime() + limitRatePO.getInUHARM14OverTime() + limitRatePO.getInUHARM15OverTime() + limitRatePO.getInUHARM16OverTime()); + steadyExceedRateVO.setSteadyExceedRate(calculate); + list.add(steadyExceedRateVO); + } } - return steadyExceedRateVO; + return list; } /** * 计算一个监测点月统计占比率 @@ -320,36 +359,38 @@ public class SteadyExceedRateServiceImpl implements SteadyExceedRateService { ).collect(Collectors.toList()); if (!CollectionUtil.isEmpty(limitRatePOList)) { limitRatePO = limitRatePOList.get(0); - if ((limitRatePO.getFlickerOverTime()+ limitRatePO.getFreqDevOverTime()+ limitRatePO.getINegOverTime()+ limitRatePO.getUAberranceOverTime()+ limitRatePO.getUBalanceOverTime()+ limitRatePO.getVoltageDevOverTime()+ limitRatePO.getIHarm2OverTime()+ limitRatePO.getIHarm3OverTime()+ limitRatePO.getIHarm4OverTime()+ limitRatePO.getIHarm5OverTime()+ limitRatePO.getIHarm6OverTime()+ limitRatePO.getIHarm7OverTime()+ limitRatePO.getIHarm8OverTime()+ limitRatePO.getIHarm9OverTime()+ limitRatePO.getIHarm10OverTime()+ limitRatePO.getIHarm11OverTime()+ limitRatePO.getIHarm12OverTime()+ limitRatePO.getIHarm13OverTime()+ limitRatePO.getIHarm14OverTime()+ limitRatePO.getIHarm15OverTime()+ limitRatePO.getIHarm16OverTime()+ limitRatePO.getIHarm17OverTime()+ limitRatePO.getIHarm18OverTime()+ limitRatePO.getIHarm19OverTime()+ limitRatePO.getIHarm20OverTime()+ limitRatePO.getIHarm21OverTime()+ limitRatePO.getIHarm22OverTime()+ limitRatePO.getIHarm23OverTime()+ limitRatePO.getIHarm24OverTime()+ limitRatePO.getIHarm25OverTime()+ limitRatePO.getUHarm2OverTime()+ limitRatePO.getUHarm3OverTime()+ limitRatePO.getUHarm4OverTime()+ limitRatePO.getUHarm5OverTime()+ limitRatePO.getUHarm6OverTime()+ limitRatePO.getUHarm7OverTime()+ limitRatePO.getUHarm8OverTime()+ limitRatePO.getUHarm9OverTime()+ limitRatePO.getUHarm10OverTime()+ limitRatePO.getUHarm11OverTime()+ limitRatePO.getUHarm12OverTime()+ limitRatePO.getUHarm13OverTime()+ limitRatePO.getUHarm14OverTime()+ limitRatePO.getUHarm15OverTime()+ limitRatePO.getUHarm16OverTime()+ limitRatePO.getUHarm17OverTime()+ limitRatePO.getUHarm18OverTime()+ limitRatePO.getUHarm19OverTime()+ limitRatePO.getUHarm20OverTime()+ limitRatePO.getUHarm21OverTime()+ limitRatePO.getUHarm22OverTime()+ limitRatePO.getUHarm23OverTime()+ limitRatePO.getUHarm24OverTime()+ limitRatePO.getUHarm25OverTime()+ limitRatePO.getInUHARM1OverTime()+ limitRatePO.getInUHARM2OverTime()+ limitRatePO.getInUHARM3OverTime()+ limitRatePO.getInUHARM4OverTime()+ limitRatePO.getInUHARM5OverTime()+ limitRatePO.getInUHARM6OverTime()+ limitRatePO.getInUHARM7OverTime()+ limitRatePO.getInUHARM8OverTime()+ limitRatePO.getInUHARM9OverTime()+ limitRatePO.getInUHARM10OverTime()+ limitRatePO.getInUHARM11OverTime()+ limitRatePO.getInUHARM12OverTime()+ limitRatePO.getInUHARM13OverTime()+ limitRatePO.getInUHARM14OverTime()+ limitRatePO.getInUHARM15OverTime()+ limitRatePO.getInUHARM16OverTime()) > 0){ - steadyExceedRateVO.setSteadyExceedRate(100.00); - } else { steadyExceedRateVO.setSteadyExceedRate(0.00); } + double calculate = calculate(limitRatePO.getAllTime(), + limitRatePO.getFlickerOverTime() + + limitRatePO.getFreqDevOverTime() + + limitRatePO.getINegOverTime() + + limitRatePO.getUAberranceOverTime() + + limitRatePO.getUBalanceOverTime() + + limitRatePO.getVoltageDevOverTime() + + limitRatePO.getFlickerAllTime() + + limitRatePO.getIHarm2OverTime() + limitRatePO.getIHarm3OverTime() + limitRatePO.getIHarm4OverTime() + limitRatePO.getIHarm5OverTime() + limitRatePO.getIHarm6OverTime() + limitRatePO.getIHarm7OverTime() + limitRatePO.getIHarm8OverTime() + limitRatePO.getIHarm9OverTime() + limitRatePO.getIHarm10OverTime() + limitRatePO.getIHarm11OverTime() + limitRatePO.getIHarm12OverTime() + limitRatePO.getIHarm13OverTime() + limitRatePO.getIHarm14OverTime() + limitRatePO.getIHarm15OverTime() + limitRatePO.getIHarm16OverTime() + limitRatePO.getIHarm17OverTime() + limitRatePO.getIHarm18OverTime() + limitRatePO.getIHarm19OverTime() + limitRatePO.getIHarm20OverTime() + limitRatePO.getIHarm21OverTime() + limitRatePO.getIHarm22OverTime() + limitRatePO.getIHarm23OverTime() + limitRatePO.getIHarm24OverTime() + limitRatePO.getIHarm25OverTime() + + limitRatePO.getUHarm2OverTime() + limitRatePO.getUHarm3OverTime() + limitRatePO.getUHarm4OverTime() + limitRatePO.getUHarm5OverTime() + limitRatePO.getUHarm6OverTime() + limitRatePO.getUHarm7OverTime() + limitRatePO.getUHarm8OverTime() + limitRatePO.getUHarm9OverTime() + limitRatePO.getUHarm10OverTime() + limitRatePO.getUHarm11OverTime() + limitRatePO.getUHarm12OverTime() + limitRatePO.getUHarm13OverTime() + limitRatePO.getUHarm14OverTime() + limitRatePO.getUHarm15OverTime() + limitRatePO.getUHarm16OverTime() + limitRatePO.getUHarm17OverTime() + limitRatePO.getUHarm18OverTime() + limitRatePO.getUHarm19OverTime() + limitRatePO.getUHarm20OverTime() + limitRatePO.getUHarm21OverTime() + limitRatePO.getUHarm22OverTime() + limitRatePO.getUHarm23OverTime() + limitRatePO.getUHarm24OverTime() + limitRatePO.getUHarm25OverTime() + + limitRatePO.getInUHARM1OverTime() + limitRatePO.getInUHARM2OverTime() + limitRatePO.getInUHARM3OverTime() + limitRatePO.getInUHARM4OverTime() + limitRatePO.getInUHARM5OverTime() + limitRatePO.getInUHARM6OverTime() + limitRatePO.getInUHARM7OverTime() + limitRatePO.getInUHARM8OverTime() + limitRatePO.getInUHARM9OverTime() + limitRatePO.getInUHARM10OverTime() + limitRatePO.getInUHARM11OverTime() + limitRatePO.getInUHARM12OverTime() + limitRatePO.getInUHARM13OverTime() + limitRatePO.getInUHARM14OverTime() + limitRatePO.getInUHARM15OverTime() + limitRatePO.getInUHARM16OverTime()); + steadyExceedRateVO.setSteadyExceedRate(calculate); + } else { + steadyExceedRateVO.setSteadyExceedRate(0.00); } + return steadyExceedRateVO; } /** * 计算一个监测点时间范围统计占比率 */ - public SteadyExceedRateVO getDataSingleMonitorMoreDay(List qualifiesRate, String lineId) { + public SteadyExceedRateVO getDataSingleMonitorMoreDay(List qualifiesRate) { SteadyExceedRateVO steadyExceedRateVO = new SteadyExceedRateVO(); - List limitRatePOList; List steadyExceedRateVOS = new ArrayList<>(); - //从数据里筛选出指定监测点的数据 - limitRatePOList = qualifiesRate.stream().filter( - temp -> temp.getLineId().equalsIgnoreCase(lineId)).collect(Collectors.toList()); - if (CollectionUtil.isNotEmpty(limitRatePOList)) { - Map> timeMap; - //获取出时间和id,获取日统计占比率 - for (LimitRatePO po: limitRatePOList) { - SteadyExceedRateVO dataSingleMonitorSingeDay = getDataSingleMonitorSingeDay(qualifiesRate, lineId, po.getDayStr()); - - Double rate = dataSingleMonitorSingeDay.getSteadyExceedRate(); - steadyExceedRateVO.setSteadyExceedRate(rate); - steadyExceedRateVOS.add(steadyExceedRateVO); - } + if (CollectionUtil.isNotEmpty(qualifiesRate)) { + //直接把所有的时间的信息返回出来 + steadyExceedRateVOS.addAll(getDataSingleMonitorSingeDay(qualifiesRate)); //求时间范围的占比率平均值 - steadyExceedRateVO.setSteadyExceedRate(NumberUtil.round(steadyExceedRateVOS.stream().mapToDouble(SteadyExceedRateVO::getSteadyExceedRate).average().orElse(0), 2).doubleValue()); + steadyExceedRateVO.setSteadyExceedRate(NumberUtil.round(steadyExceedRateVOS.stream().filter(x->x.getSteadyExceedRate()!=3.14159) + .mapToDouble(SteadyExceedRateVO::getSteadyExceedRate).average().orElse(0), 2).doubleValue()); } return steadyExceedRateVO; @@ -362,17 +403,21 @@ public class SteadyExceedRateServiceImpl implements SteadyExceedRateService { SteadyExceedRateVO steadyExceedRateVO = new SteadyExceedRateVO(); List steadyResults = new ArrayList<>(); //以时间分组的各项数据 - Map> groupByTimeData = qualifiesRate.stream().collect(Collectors.groupingBy(LimitRatePO::getDayStr)); - if (CollectionUtil.isNotEmpty(groupByTimeData)) { - Set times = groupByTimeData.keySet(); - for (String time : times) { - List ids = groupByTimeData.get(time).stream().map(LimitRatePO::getLineId).collect(Collectors.toList()); - steadyResults.add(getDataMoreMonitorSingleDay(qualifiesRate, ids, time)); - } +// Map> groupByTimeData = qualifiesRate.stream().collect(Collectors.groupingBy(LimitRatePO::getDayStr)); +// if (CollectionUtil.isNotEmpty(groupByTimeData)) { +// Set times = groupByTimeData.keySet(); +// for (String time : times) { +// List ids = groupByTimeData.get(time).stream().map(LimitRatePO::getLineId).collect(Collectors.toList()); +// steadyResults.add(getDataMoreMonitorSingleDay(qualifiesRate, ids, time)); +// } +// } + if(CollUtil.isNotEmpty(qualifiesRate)){ + steadyResults.add(getDataMoreMonitorSingleDay(qualifiesRate,null,null)); } if (CollectionUtil.isNotEmpty(steadyResults)) { //求区域监测点多天的平均值 - steadyExceedRateVO.setSteadyExceedRate(PubUtils.dataLimits(NumberUtil.round(steadyResults.stream().mapToDouble(SteadyExceedRateVO::getSteadyExceedRate).average().orElse(0), 2).doubleValue())); + steadyExceedRateVO.setSteadyExceedRate(PubUtils.dataLimits(NumberUtil.round(steadyResults.stream().filter(item -> item.getSteadyExceedRate()!=3.14159) + .mapToDouble(SteadyExceedRateVO::getSteadyExceedRate).average().orElse(0), 2).doubleValue())); } return steadyExceedRateVO; } @@ -383,9 +428,11 @@ public class SteadyExceedRateServiceImpl implements SteadyExceedRateService { public SteadyExceedRateVO getDataMoreMonitorSingleDay(List qualifiesRate, List lineIds, String time) { SteadyExceedRateVO steadyExceedRateVO = new SteadyExceedRateVO(); List steadyResults = new ArrayList<>(); - for (String lineId : lineIds) { - steadyResults.add(getDataSingleMonitorSingeDay(qualifiesRate, lineId, time)); - } +// for (String lineId : lineIds) { +// steadyResults.add(getDataSingleMonitorSingeDay(qualifiesRate, lineId, time)); +// } + //直接统计当前部门下面的全部监测点信息 + steadyResults.addAll(getDataSingleMonitorSingeDay(qualifiesRate)); steadyResults = steadyResults.stream().filter(item -> item.getSteadyExceedRate()!=3.14159).collect(Collectors.toList()); if (CollectionUtil.isNotEmpty(steadyResults)) { //求多个监测点的平均值 @@ -515,4 +562,19 @@ public class SteadyExceedRateServiceImpl implements SteadyExceedRateService { } + /** + * 总占比 + * + * @param allTime + * @param overTime + * @return + */ + private static double calculate(Integer allTime, Integer overTime) { + if (allTime == 0) { + return 3.14159; + } else { + return NumberUtil.round((1 - (overTime / (allTime * 71.0))) * 100, 2).doubleValue(); + } + } + } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/SteadyQualifyServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/SteadyQualifyServiceImpl.java index 4bfff7a35..37ca67e09 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/SteadyQualifyServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/SteadyQualifyServiceImpl.java @@ -1,6 +1,5 @@ package com.njcn.harmonic.service.impl; -import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; @@ -13,24 +12,16 @@ import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO; import com.njcn.device.pq.pojo.param.DeviceInfoParam; import com.njcn.harmonic.mapper.SteadyQualifyMapper; import com.njcn.harmonic.pojo.dto.SteadyQualifyDTO; -import com.njcn.harmonic.pojo.po.LimitRate; import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; import com.njcn.harmonic.pojo.vo.SteadyQualifyCensusVO; import com.njcn.harmonic.pojo.vo.SteadyQualifyVO; import com.njcn.harmonic.service.IRStatLimitRateDService; import com.njcn.harmonic.service.SteadyQualifyService; import com.njcn.harmonic.utils.PubUtils; -import com.njcn.influxdb.param.InfluxDBPublicParam; -import com.njcn.influxdb.utils.InfluxDbUtils; import lombok.AllArgsConstructor; -import org.influxdb.dto.QueryResult; -import org.influxdb.impl.InfluxDBResultMapper; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -47,8 +38,6 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService { private final SteadyQualifyMapper steadyQualifyMapper; - private final InfluxDbUtils influxDbUtils; - private final IRStatLimitRateDService rateDService; @Override @@ -58,7 +47,7 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService { //按照条件获取实际运行终端综合信息 List deviceDataList = generalDeviceInfoClient.getPracticalRunDeviceInfo(steadyParam).getData(); //组装监测点Top层集合 - for (GeneralDeviceDTO generalDeviceDTO: deviceDataList) { + for (GeneralDeviceDTO generalDeviceDTO : deviceDataList) { List lineIndexes = generalDeviceDTO.getLineIndexes(); if (CollectionUtils.isEmpty(lineIndexes)) { continue; @@ -68,19 +57,43 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService { steadyQualifyVO.setName(generalDeviceDTO.getName()); // List lineData = steadyQualifyMapper.getSteadyQualifyData(lineIndexes); List qualifiesRate = getQualifiesRate(lineIndexes, steadyParam.getSearchBeginTime(), steadyParam.getSearchEndTime()); - if (!CollectionUtils.isEmpty(qualifiesRate)) { - SteadyQualifyVO dataMoreMonitorMoreDay = getDataMoreMonitorMoreDay(qualifiesRate); - steadyQualifyVO.setFlicker(dataMoreMonitorMoreDay.getFlicker()); - steadyQualifyVO.setFreqOffset(dataMoreMonitorMoreDay.getFreqOffset()); - steadyQualifyVO.setVoltageOffset(dataMoreMonitorMoreDay.getVoltageOffset()); - steadyQualifyVO.setVoltageUnbalance(dataMoreMonitorMoreDay.getVoltageUnbalance()); - steadyQualifyVO.setNegativeCurrent(dataMoreMonitorMoreDay.getNegativeCurrent()); - steadyQualifyVO.setHarmonicVoltage(dataMoreMonitorMoreDay.getHarmonicVoltage()); - steadyQualifyVO.setHarmonicCurrent(dataMoreMonitorMoreDay.getHarmonicCurrent()); - steadyQualifyVO.setInterHarmonic(dataMoreMonitorMoreDay.getInterHarmonic()); + //组装子集级数据树 + List treeList = getTreeData(qualifiesRate, lineIndexes); + if (CollectionUtil.isNotEmpty(treeList)) { + List flicker = treeList.stream().filter(s -> s.getFlicker() != 3.14159).collect(Collectors.toList()); + List freqOffset = treeList.stream().filter(s -> s.getFreqOffset() != 3.14159).collect(Collectors.toList()); + List voltageOffset = treeList.stream().filter(s -> s.getVoltageOffset() != 3.14159).collect(Collectors.toList()); + List voltageUnbalance = treeList.stream().filter(s -> s.getVoltageUnbalance() != 3.14159).collect(Collectors.toList()); + List negativeCurrent = treeList.stream().filter(s -> s.getNegativeCurrent() != 3.14159).collect(Collectors.toList()); + List harmonicVoltage = treeList.stream().filter(s -> s.getHarmonicVoltage() != 3.14159).collect(Collectors.toList()); + List harmonicCurrent = treeList.stream().filter(s -> s.getHarmonicCurrent() != 3.14159).collect(Collectors.toList()); + List interHarmonic = treeList.stream().filter(s -> s.getInterHarmonic() != 3.14159).collect(Collectors.toList()); + //求各项平均值 + if (!CollectionUtils.isEmpty(flicker)) { + steadyQualifyVO.setFlicker(PubUtils.dataLimits(NumberUtil.round(flicker.stream().mapToDouble(SteadyQualifyVO::getFlicker).average().orElse(100), 2).doubleValue())); + } + if (!CollectionUtils.isEmpty(freqOffset)) { + steadyQualifyVO.setFreqOffset(PubUtils.dataLimits(NumberUtil.round(freqOffset.stream().mapToDouble(SteadyQualifyVO::getFreqOffset).average().orElse(100), 2).doubleValue())); + } + if (!CollectionUtils.isEmpty(voltageOffset)) { + steadyQualifyVO.setVoltageOffset(PubUtils.dataLimits(NumberUtil.round(voltageOffset.stream().mapToDouble(SteadyQualifyVO::getVoltageOffset).average().orElse(100), 2).doubleValue())); + } + if (!CollectionUtils.isEmpty(voltageUnbalance)) { + steadyQualifyVO.setVoltageUnbalance(PubUtils.dataLimits(NumberUtil.round(voltageUnbalance.stream().mapToDouble(SteadyQualifyVO::getVoltageUnbalance).average().orElse(100), 2).doubleValue())); + } + if (!CollectionUtils.isEmpty(negativeCurrent)) { + steadyQualifyVO.setNegativeCurrent(PubUtils.dataLimits(NumberUtil.round(negativeCurrent.stream().mapToDouble(SteadyQualifyVO::getNegativeCurrent).average().orElse(100), 2).doubleValue())); + } + if (!CollectionUtils.isEmpty(harmonicVoltage)) { + steadyQualifyVO.setHarmonicVoltage(PubUtils.dataLimits(NumberUtil.round(harmonicVoltage.stream().mapToDouble(SteadyQualifyVO::getHarmonicVoltage).average().orElse(100), 2).doubleValue())); + } + if (!CollectionUtils.isEmpty(harmonicCurrent)) { + steadyQualifyVO.setHarmonicCurrent(PubUtils.dataLimits(NumberUtil.round(harmonicCurrent.stream().mapToDouble(SteadyQualifyVO::getHarmonicCurrent).average().orElse(100), 2).doubleValue())); + } + if (!CollectionUtils.isEmpty(interHarmonic)) { + steadyQualifyVO.setInterHarmonic(PubUtils.dataLimits(NumberUtil.round(interHarmonic.stream().mapToDouble(SteadyQualifyVO::getInterHarmonic).average().orElse(100), 2).doubleValue())); + } } - //组装父级数据树 - List treeList = getTreeData(lineIndexes, steadyParam); steadyQualifyVO.setChildren(treeList); steadyQualifyList.add(steadyQualifyVO); } @@ -98,7 +111,7 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService { harmonicCurrent = new ArrayList<>(), negativeCurrent = new ArrayList<>(), freqOffset = new ArrayList<>(), flicker = new ArrayList<>(); if (!CollectionUtils.isEmpty(deviceDataList)) { - for (GeneralDeviceDTO generalDeviceDTO: deviceDataList){ + for (GeneralDeviceDTO generalDeviceDTO : deviceDataList) { List lineIndexes = generalDeviceDTO.getLineIndexes(); if (CollectionUtils.isEmpty(lineIndexes)) { continue; @@ -132,7 +145,7 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService { /** * 获取父级每层数据 */ - private List getTreeData(List lineIndexes, DeviceInfoParam.BusinessParam steadyParam) { + private List getTreeData(List qualifiesRate, List lineIndexes) { //监测点集合 List monitorList = steadyQualifyMapper.getSteadyQualifyData(lineIndexes); //母线集合 @@ -144,7 +157,7 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService { //供电公司集合 List powerCompanyList = steadyQualifyMapper.getLineInfoByList(substationList.stream().map(SteadyQualifyVO::getPid).distinct().collect(Collectors.toList())); - List qualifiesRate = getQualifiesRate(lineIndexes, steadyParam.getSearchBeginTime(), steadyParam.getSearchEndTime()); +// List qualifiesRate = getQualifiesRate(lineIndexes, steadyParam.getSearchBeginTime(), steadyParam.getSearchEndTime()); monitorList.forEach(steadyQualifyVO -> { SteadyQualifyVO dataSingleMonitorMoreDay = getDataSingleMonitorMoreDay(qualifiesRate, steadyQualifyVO.getId()); steadyQualifyVO.setFlicker(PubUtils.dataLimits(dataSingleMonitorMoreDay.getFlicker())); @@ -156,7 +169,7 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService { steadyQualifyVO.setHarmonicCurrent(PubUtils.dataLimits(dataSingleMonitorMoreDay.getHarmonicCurrent())); steadyQualifyVO.setInterHarmonic(PubUtils.dataLimits(dataSingleMonitorMoreDay.getInterHarmonic())); }); - setChildesList(substationList,monitorList); + setChildesList(substationList, monitorList); setFatherDistortion(substationList); powerCompanyList.stream().peek(item -> item.setChildren(getChildCategoryList(item, substationList))).collect(Collectors.toList()); @@ -212,6 +225,7 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService { private List getChildCategoryList(SteadyQualifyVO item, List child) { return child.stream().filter(allItem -> allItem.getPid().equals(item.getId())).collect(Collectors.toList()); } + private void setChildesList(List item, List childes) { Map> groupLine; groupLine = childes.stream().collect(Collectors.groupingBy(steadyQualifyVO -> { @@ -228,31 +242,33 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService { /** * 计算监测点日统计合格率 */ - public SteadyQualifyVO getDataSingleMonitorSingeDay(List qualifiesRate, String lineId, String time) { + public List getDataSingleMonitorSingeDay(List qualifiesRate) { + List list = new ArrayList<>(); SteadyQualifyVO steadyQualifyVO = new SteadyQualifyVO(); - List steadyQualifyDTOList = qualifiesRate.stream().filter( - temp -> temp.getMYINDEX().equalsIgnoreCase(lineId) && temp.getTime().equalsIgnoreCase(time) - ).collect(Collectors.toList()); - if (!CollectionUtil.isEmpty(steadyQualifyDTOList)) { - SteadyQualifyDTO steadyQualifyDTO = steadyQualifyDTOList.get(0); - //闪变合格率 - steadyQualifyVO.setFlicker(calculate(steadyQualifyDTO.getFlicker_AllTime(), steadyQualifyDTO.getFlicker_OverTime())); - //频率偏差合格率 - steadyQualifyVO.setFreqOffset(calculate(steadyQualifyDTO.getAllTime(), steadyQualifyDTO.getFreq_Dev_OverTime())); - //计算电压偏差 - steadyQualifyVO.setVoltageOffset(calculate(steadyQualifyDTO.getAllTime(), steadyQualifyDTO.getVoltage_Dev_OverTime())); - //相电压不平衡度 - steadyQualifyVO.setVoltageUnbalance(calculate(steadyQualifyDTO.getAllTime(), steadyQualifyDTO.getUBalance_OverTime())); - //负序电流 - steadyQualifyVO.setNegativeCurrent(calculate(steadyQualifyDTO.getAllTime(), steadyQualifyDTO.getI_Neg_OverTime())); - //谐波电压 - steadyQualifyVO.setHarmonicVoltage(calculate(steadyQualifyDTO.getAllTime(), NumberUtil.max(steadyQualifyDTO.getUAberrance_OverTime(), steadyQualifyDTO.getUHarm_2_OverTime(), steadyQualifyDTO.getUHarm_3_OverTime(), steadyQualifyDTO.getUHarm_4_OverTime(), steadyQualifyDTO.getUHarm_5_OverTime(), steadyQualifyDTO.getUHarm_6_OverTime(), steadyQualifyDTO.getUHarm_7_OverTime(), steadyQualifyDTO.getUHarm_8_OverTime(), steadyQualifyDTO.getUHarm_9_OverTime(), steadyQualifyDTO.getUHarm_10_OverTime(), steadyQualifyDTO.getUHarm_11_OverTime(), steadyQualifyDTO.getUHarm_12_OverTime(), steadyQualifyDTO.getUHarm_13_OverTime(), steadyQualifyDTO.getUHarm_14_OverTime(), steadyQualifyDTO.getUHarm_15_OverTime(), steadyQualifyDTO.getUHarm_16_OverTime(), steadyQualifyDTO.getUHarm_17_OverTime(), steadyQualifyDTO.getUHarm_18_OverTime(), steadyQualifyDTO.getUHarm_19_OverTime(), steadyQualifyDTO.getUHarm_20_OverTime(), steadyQualifyDTO.getUHarm_21_OverTime(), steadyQualifyDTO.getUHarm_22_OverTime(), steadyQualifyDTO.getUHarm_23_OverTime(), steadyQualifyDTO.getUHarm_24_OverTime(), steadyQualifyDTO.getUHarm_25_OverTime()))); - //谐波电流 - steadyQualifyVO.setHarmonicCurrent(calculate(steadyQualifyDTO.getAllTime(), NumberUtil.max(steadyQualifyDTO.getIHarm_2_OverTime(), steadyQualifyDTO.getIHarm_3_OverTime(), steadyQualifyDTO.getIHarm_4_OverTime(), steadyQualifyDTO.getIHarm_5_OverTime(), steadyQualifyDTO.getIHarm_6_OverTime(), steadyQualifyDTO.getIHarm_7_OverTime(), steadyQualifyDTO.getIHarm_8_OverTime(), steadyQualifyDTO.getIHarm_9_OverTime(), steadyQualifyDTO.getIHarm_10_OverTime(), steadyQualifyDTO.getIHarm_11_OverTime(), steadyQualifyDTO.getIHarm_12_OverTime(), steadyQualifyDTO.getIHarm_13_OverTime(), steadyQualifyDTO.getIHarm_14_OverTime(), steadyQualifyDTO.getIHarm_15_OverTime(), steadyQualifyDTO.getIHarm_16_OverTime(), steadyQualifyDTO.getIHarm_17_OverTime(), steadyQualifyDTO.getIHarm_18_OverTime(), steadyQualifyDTO.getIHarm_19_OverTime(), steadyQualifyDTO.getIHarm_20_OverTime(), steadyQualifyDTO.getIHarm_21_OverTime(), steadyQualifyDTO.getIHarm_22_OverTime(), steadyQualifyDTO.getIHarm_23_OverTime(), steadyQualifyDTO.getIHarm_24_OverTime(), steadyQualifyDTO.getIHarm_25_OverTime()))); - //间谐波电压含有率 - steadyQualifyVO.setInterHarmonic(calculate(steadyQualifyDTO.getAllTime(), NumberUtil.max(steadyQualifyDTO.getInUHARM_1_OverTime(), steadyQualifyDTO.getInUHARM_2_OverTime(), steadyQualifyDTO.getInUHARM_3_OverTime(), steadyQualifyDTO.getInUHARM_4_OverTime(), steadyQualifyDTO.getInUHARM_5_OverTime(), steadyQualifyDTO.getInUHARM_6_OverTime(), steadyQualifyDTO.getInUHARM_7_OverTime(), steadyQualifyDTO.getInUHARM_8_OverTime(), steadyQualifyDTO.getInUHARM_9_OverTime(), steadyQualifyDTO.getInUHARM_10_OverTime(), steadyQualifyDTO.getInUHARM_11_OverTime(), steadyQualifyDTO.getInUHARM_12_OverTime(), steadyQualifyDTO.getInUHARM_13_OverTime(), steadyQualifyDTO.getInUHARM_14_OverTime(), steadyQualifyDTO.getInUHARM_15_OverTime(), steadyQualifyDTO.getInUHARM_16_OverTime()))); + + if (!CollectionUtil.isEmpty(qualifiesRate)) { + for (SteadyQualifyDTO steadyQualifyDTO : qualifiesRate) { + steadyQualifyVO = new SteadyQualifyVO(); + //闪变合格率 + steadyQualifyVO.setFlicker(calculate(steadyQualifyDTO.getFlicker_AllTime(), steadyQualifyDTO.getFlicker_OverTime())); + //频率偏差合格率 + steadyQualifyVO.setFreqOffset(calculate(steadyQualifyDTO.getAllTime(), steadyQualifyDTO.getFreq_Dev_OverTime())); + //计算电压偏差 + steadyQualifyVO.setVoltageOffset(calculate(steadyQualifyDTO.getAllTime(), steadyQualifyDTO.getVoltage_Dev_OverTime())); + //相电压不平衡度 + steadyQualifyVO.setVoltageUnbalance(calculate(steadyQualifyDTO.getAllTime(), steadyQualifyDTO.getUBalance_OverTime())); + //负序电流 + steadyQualifyVO.setNegativeCurrent(calculate(steadyQualifyDTO.getAllTime(), steadyQualifyDTO.getI_Neg_OverTime())); + //谐波电压 + steadyQualifyVO.setHarmonicVoltage(calculateV(steadyQualifyDTO.getAllTime(), (steadyQualifyDTO.getUAberrance_OverTime() + steadyQualifyDTO.getUHarm_2_OverTime() + steadyQualifyDTO.getUHarm_3_OverTime() + steadyQualifyDTO.getUHarm_4_OverTime() + steadyQualifyDTO.getUHarm_5_OverTime() + steadyQualifyDTO.getUHarm_6_OverTime() + steadyQualifyDTO.getUHarm_7_OverTime() + steadyQualifyDTO.getUHarm_8_OverTime() + steadyQualifyDTO.getUHarm_9_OverTime() + steadyQualifyDTO.getUHarm_10_OverTime() + steadyQualifyDTO.getUHarm_11_OverTime() + steadyQualifyDTO.getUHarm_12_OverTime() + steadyQualifyDTO.getUHarm_13_OverTime() + steadyQualifyDTO.getUHarm_14_OverTime() + steadyQualifyDTO.getUHarm_15_OverTime() + steadyQualifyDTO.getUHarm_16_OverTime() + steadyQualifyDTO.getUHarm_17_OverTime() + steadyQualifyDTO.getUHarm_18_OverTime() + steadyQualifyDTO.getUHarm_19_OverTime() + steadyQualifyDTO.getUHarm_20_OverTime() + steadyQualifyDTO.getUHarm_21_OverTime() + steadyQualifyDTO.getUHarm_22_OverTime() + steadyQualifyDTO.getUHarm_23_OverTime() + steadyQualifyDTO.getUHarm_24_OverTime() + steadyQualifyDTO.getUHarm_25_OverTime()))); + //谐波电流 + steadyQualifyVO.setHarmonicCurrent(calculateI(steadyQualifyDTO.getAllTime(), (steadyQualifyDTO.getIHarm_2_OverTime() + steadyQualifyDTO.getIHarm_3_OverTime() + steadyQualifyDTO.getIHarm_4_OverTime() + steadyQualifyDTO.getIHarm_5_OverTime() + steadyQualifyDTO.getIHarm_6_OverTime() + steadyQualifyDTO.getIHarm_7_OverTime() + steadyQualifyDTO.getIHarm_8_OverTime() + steadyQualifyDTO.getIHarm_9_OverTime() + steadyQualifyDTO.getIHarm_10_OverTime() + steadyQualifyDTO.getIHarm_11_OverTime() + steadyQualifyDTO.getIHarm_12_OverTime() + steadyQualifyDTO.getIHarm_13_OverTime() + steadyQualifyDTO.getIHarm_14_OverTime() + steadyQualifyDTO.getIHarm_15_OverTime() + steadyQualifyDTO.getIHarm_16_OverTime() + steadyQualifyDTO.getIHarm_17_OverTime() + steadyQualifyDTO.getIHarm_18_OverTime() + steadyQualifyDTO.getIHarm_19_OverTime() + steadyQualifyDTO.getIHarm_20_OverTime() + steadyQualifyDTO.getIHarm_21_OverTime() + steadyQualifyDTO.getIHarm_22_OverTime() + steadyQualifyDTO.getIHarm_23_OverTime() + steadyQualifyDTO.getIHarm_24_OverTime() + steadyQualifyDTO.getIHarm_25_OverTime()))); + //间谐波电压含有率 + steadyQualifyVO.setInterHarmonic(calculateIN(steadyQualifyDTO.getAllTime(), (steadyQualifyDTO.getInUHARM_1_OverTime() + steadyQualifyDTO.getInUHARM_2_OverTime() + steadyQualifyDTO.getInUHARM_3_OverTime() + steadyQualifyDTO.getInUHARM_4_OverTime() + steadyQualifyDTO.getInUHARM_5_OverTime() + steadyQualifyDTO.getInUHARM_6_OverTime() + steadyQualifyDTO.getInUHARM_7_OverTime() + steadyQualifyDTO.getInUHARM_8_OverTime() + steadyQualifyDTO.getInUHARM_9_OverTime() + steadyQualifyDTO.getInUHARM_10_OverTime() + steadyQualifyDTO.getInUHARM_11_OverTime() + steadyQualifyDTO.getInUHARM_12_OverTime() + steadyQualifyDTO.getInUHARM_13_OverTime() + steadyQualifyDTO.getInUHARM_14_OverTime() + steadyQualifyDTO.getInUHARM_15_OverTime() + steadyQualifyDTO.getInUHARM_16_OverTime()))); + list.add(steadyQualifyVO); + } } - return steadyQualifyVO; + return list; } /** @@ -265,10 +281,8 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService { temp -> temp.getMYINDEX().equalsIgnoreCase(lineId)).collect(Collectors.toList()); if (CollectionUtil.isNotEmpty(steadyQualifyDTOList)) { List steadyQualifyVOS = new ArrayList<>(); - //获取出时间和id,调用第一个方法 - for (SteadyQualifyDTO steadyQualifyDTO : steadyQualifyDTOList) { - steadyQualifyVOS.add(getDataSingleMonitorSingeDay(qualifiesRate, lineId, steadyQualifyDTO.getTime())); - } + //获取出时间和id,调用第一个方法(改展示一条数据,可以不用每天都统计) + steadyQualifyVOS.addAll(getDataSingleMonitorSingeDay(steadyQualifyDTOList)); if (CollectionUtil.isNotEmpty(steadyQualifyVOS)) { List flicker = steadyQualifyVOS.stream().filter(s -> s.getFlicker() != 3.14159).collect(Collectors.toList()); List freqOffset = steadyQualifyVOS.stream().filter(s -> s.getFreqOffset() != 3.14159).collect(Collectors.toList()); @@ -280,28 +294,28 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService { List interHarmonic = steadyQualifyVOS.stream().filter(s -> s.getInterHarmonic() != 3.14159).collect(Collectors.toList()); //求各项平均值 if (!CollectionUtils.isEmpty(flicker)) { - steadyQualifyVO.setFlicker(NumberUtil.round(steadyQualifyVOS.stream().mapToDouble(SteadyQualifyVO::getFlicker).average().orElse(100), 2).doubleValue()); + steadyQualifyVO.setFlicker(NumberUtil.round(flicker.stream().mapToDouble(SteadyQualifyVO::getFlicker).average().orElse(100), 2).doubleValue()); } if (!CollectionUtils.isEmpty(freqOffset)) { - steadyQualifyVO.setFreqOffset(NumberUtil.round(steadyQualifyVOS.stream().mapToDouble(SteadyQualifyVO::getFreqOffset).average().orElse(100), 2).doubleValue()); + steadyQualifyVO.setFreqOffset(NumberUtil.round(freqOffset.stream().mapToDouble(SteadyQualifyVO::getFreqOffset).average().orElse(100), 2).doubleValue()); } if (!CollectionUtils.isEmpty(voltageOffset)) { - steadyQualifyVO.setVoltageOffset(NumberUtil.round(steadyQualifyVOS.stream().mapToDouble(SteadyQualifyVO::getVoltageOffset).average().orElse(100), 2).doubleValue()); + steadyQualifyVO.setVoltageOffset(NumberUtil.round(voltageOffset.stream().mapToDouble(SteadyQualifyVO::getVoltageOffset).average().orElse(100), 2).doubleValue()); } if (!CollectionUtils.isEmpty(voltageUnbalance)) { - steadyQualifyVO.setVoltageUnbalance(NumberUtil.round(steadyQualifyVOS.stream().mapToDouble(SteadyQualifyVO::getVoltageUnbalance).average().orElse(100), 2).doubleValue()); + steadyQualifyVO.setVoltageUnbalance(NumberUtil.round(voltageUnbalance.stream().mapToDouble(SteadyQualifyVO::getVoltageUnbalance).average().orElse(100), 2).doubleValue()); } if (!CollectionUtils.isEmpty(negativeCurrent)) { - steadyQualifyVO.setNegativeCurrent(NumberUtil.round(steadyQualifyVOS.stream().mapToDouble(SteadyQualifyVO::getNegativeCurrent).average().orElse(100), 2).doubleValue()); + steadyQualifyVO.setNegativeCurrent(NumberUtil.round(negativeCurrent.stream().mapToDouble(SteadyQualifyVO::getNegativeCurrent).average().orElse(100), 2).doubleValue()); } if (!CollectionUtils.isEmpty(harmonicVoltage)) { - steadyQualifyVO.setHarmonicVoltage(NumberUtil.round(steadyQualifyVOS.stream().mapToDouble(SteadyQualifyVO::getHarmonicVoltage).average().orElse(100), 2).doubleValue()); + steadyQualifyVO.setHarmonicVoltage(NumberUtil.round(harmonicVoltage.stream().mapToDouble(SteadyQualifyVO::getHarmonicVoltage).average().orElse(100), 2).doubleValue()); } if (!CollectionUtils.isEmpty(harmonicCurrent)) { - steadyQualifyVO.setHarmonicCurrent(NumberUtil.round(steadyQualifyVOS.stream().mapToDouble(SteadyQualifyVO::getHarmonicCurrent).average().orElse(100), 2).doubleValue()); + steadyQualifyVO.setHarmonicCurrent(NumberUtil.round(harmonicCurrent.stream().mapToDouble(SteadyQualifyVO::getHarmonicCurrent).average().orElse(100), 2).doubleValue()); } if (!CollectionUtils.isEmpty(flicker)) { - steadyQualifyVO.setInterHarmonic(NumberUtil.round(steadyQualifyVOS.stream().mapToDouble(SteadyQualifyVO::getInterHarmonic).average().orElse(100), 2).doubleValue()); + steadyQualifyVO.setInterHarmonic(NumberUtil.round(interHarmonic.stream().mapToDouble(SteadyQualifyVO::getInterHarmonic).average().orElse(100), 2).doubleValue()); } } } @@ -314,15 +328,8 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService { public SteadyQualifyVO getDataMoreMonitorMoreDay(List qualifiesRate) { SteadyQualifyVO steadyQualifyVO = new SteadyQualifyVO(); List steadyResults = new ArrayList<>(); - //以时间分组的各项数据 - Map> groupByTimeData = qualifiesRate.stream().collect(Collectors.groupingBy(SteadyQualifyDTO::getTime)); - if (CollectionUtil.isNotEmpty(groupByTimeData)) { - Set times = groupByTimeData.keySet(); - for (String time : times) { - List ids = groupByTimeData.get(time).stream().map(SteadyQualifyDTO::getMYINDEX).collect(Collectors.toList()); - steadyResults.add(getDataMoreMonitorSingleDay(qualifiesRate, ids, time)); - } - } + //获取所有监测点每天信息(根本不需要时间分组,只是要所有的统计) + steadyResults.addAll(getDataSingleMonitorSingeDay(qualifiesRate)); if (CollectionUtil.isNotEmpty(steadyResults)) { List flicker = steadyResults.stream().filter(s -> s.getFlicker() != 3.14159).collect(Collectors.toList()); List freqOffset = steadyResults.stream().filter(s -> s.getFreqOffset() != 3.14159).collect(Collectors.toList()); @@ -364,53 +371,54 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService { /** * 计算区域监测点日统计合格率 */ - public SteadyQualifyVO getDataMoreMonitorSingleDay(List qualifiesRate, List lineIds, String time) { - SteadyQualifyVO steadyQualifyVO = new SteadyQualifyVO(); - List steadyResults = new ArrayList<>(); - for (String lineId : lineIds) { - steadyResults.add(getDataSingleMonitorSingeDay(qualifiesRate, lineId, time)); - } - if (CollectionUtil.isNotEmpty(steadyResults)) { - List flicker = steadyResults.stream().filter(s -> s.getFlicker() != 3.14159).collect(Collectors.toList()); - List freqOffset = steadyResults.stream().filter(s -> s.getFreqOffset() != 3.14159).collect(Collectors.toList()); - List voltageOffset = steadyResults.stream().filter(s -> s.getVoltageOffset() != 3.14159).collect(Collectors.toList()); - List voltageUnbalance = steadyResults.stream().filter(s -> s.getVoltageUnbalance() != 3.14159).collect(Collectors.toList()); - List negativeCurrent = steadyResults.stream().filter(s -> s.getNegativeCurrent() != 3.14159).collect(Collectors.toList()); - List harmonicVoltage = steadyResults.stream().filter(s -> s.getHarmonicVoltage() != 3.14159).collect(Collectors.toList()); - List harmonicCurrent = steadyResults.stream().filter(s -> s.getHarmonicCurrent() != 3.14159).collect(Collectors.toList()); - List interHarmonic = steadyResults.stream().filter(s -> s.getInterHarmonic() != 3.14159).collect(Collectors.toList()); - //求各项平均值 - if (!CollectionUtils.isEmpty(flicker)) { - steadyQualifyVO.setFlicker(NumberUtil.round(steadyResults.stream().mapToDouble(SteadyQualifyVO::getFlicker).average().orElse(100), 2).doubleValue()); - } - if (!CollectionUtils.isEmpty(freqOffset)) { - steadyQualifyVO.setFreqOffset(NumberUtil.round(steadyResults.stream().mapToDouble(SteadyQualifyVO::getFreqOffset).average().orElse(100), 2).doubleValue()); - } - if (!CollectionUtils.isEmpty(voltageOffset)) { - steadyQualifyVO.setVoltageOffset(NumberUtil.round(steadyResults.stream().mapToDouble(SteadyQualifyVO::getVoltageOffset).average().orElse(100), 2).doubleValue()); - } - if (!CollectionUtils.isEmpty(voltageUnbalance)) { - steadyQualifyVO.setVoltageUnbalance(NumberUtil.round(steadyResults.stream().mapToDouble(SteadyQualifyVO::getVoltageUnbalance).average().orElse(100), 2).doubleValue()); - } - if (!CollectionUtils.isEmpty(negativeCurrent)) { - steadyQualifyVO.setNegativeCurrent(NumberUtil.round(steadyResults.stream().mapToDouble(SteadyQualifyVO::getNegativeCurrent).average().orElse(100), 2).doubleValue()); - } - if (!CollectionUtils.isEmpty(harmonicVoltage)) { - steadyQualifyVO.setHarmonicVoltage(NumberUtil.round(steadyResults.stream().mapToDouble(SteadyQualifyVO::getHarmonicVoltage).average().orElse(100), 2).doubleValue()); - } - if (!CollectionUtils.isEmpty(harmonicCurrent)) { - steadyQualifyVO.setHarmonicCurrent(NumberUtil.round(steadyResults.stream().mapToDouble(SteadyQualifyVO::getHarmonicCurrent).average().orElse(100), 2).doubleValue()); - } - if (!CollectionUtils.isEmpty(interHarmonic)) { - steadyQualifyVO.setInterHarmonic(NumberUtil.round(steadyResults.stream().mapToDouble(SteadyQualifyVO::getInterHarmonic).average().orElse(100), 2).doubleValue()); - } - } - return steadyQualifyVO; - } +// public SteadyQualifyVO getDataMoreMonitorSingleDay(List qualifiesRate, List lineIds, String time) { +// SteadyQualifyVO steadyQualifyVO = new SteadyQualifyVO(); +// List steadyResults = new ArrayList<>(); +// for (String lineId : lineIds) { +// steadyResults.addAll(getDataSingleMonitorSingeDay(qualifiesRate, lineId, time)); +// } +// if (CollectionUtil.isNotEmpty(steadyResults)) { +// List flicker = steadyResults.stream().filter(s -> s.getFlicker() != 3.14159).collect(Collectors.toList()); +// List freqOffset = steadyResults.stream().filter(s -> s.getFreqOffset() != 3.14159).collect(Collectors.toList()); +// List voltageOffset = steadyResults.stream().filter(s -> s.getVoltageOffset() != 3.14159).collect(Collectors.toList()); +// List voltageUnbalance = steadyResults.stream().filter(s -> s.getVoltageUnbalance() != 3.14159).collect(Collectors.toList()); +// List negativeCurrent = steadyResults.stream().filter(s -> s.getNegativeCurrent() != 3.14159).collect(Collectors.toList()); +// List harmonicVoltage = steadyResults.stream().filter(s -> s.getHarmonicVoltage() != 3.14159).collect(Collectors.toList()); +// List harmonicCurrent = steadyResults.stream().filter(s -> s.getHarmonicCurrent() != 3.14159).collect(Collectors.toList()); +// List interHarmonic = steadyResults.stream().filter(s -> s.getInterHarmonic() != 3.14159).collect(Collectors.toList()); +// //求各项平均值 +// if (!CollectionUtils.isEmpty(flicker)) { +// steadyQualifyVO.setFlicker(NumberUtil.round(steadyResults.stream().mapToDouble(SteadyQualifyVO::getFlicker).average().orElse(100), 2).doubleValue()); +// } +// if (!CollectionUtils.isEmpty(freqOffset)) { +// steadyQualifyVO.setFreqOffset(NumberUtil.round(steadyResults.stream().mapToDouble(SteadyQualifyVO::getFreqOffset).average().orElse(100), 2).doubleValue()); +// } +// if (!CollectionUtils.isEmpty(voltageOffset)) { +// steadyQualifyVO.setVoltageOffset(NumberUtil.round(steadyResults.stream().mapToDouble(SteadyQualifyVO::getVoltageOffset).average().orElse(100), 2).doubleValue()); +// } +// if (!CollectionUtils.isEmpty(voltageUnbalance)) { +// steadyQualifyVO.setVoltageUnbalance(NumberUtil.round(steadyResults.stream().mapToDouble(SteadyQualifyVO::getVoltageUnbalance).average().orElse(100), 2).doubleValue()); +// } +// if (!CollectionUtils.isEmpty(negativeCurrent)) { +// steadyQualifyVO.setNegativeCurrent(NumberUtil.round(steadyResults.stream().mapToDouble(SteadyQualifyVO::getNegativeCurrent).average().orElse(100), 2).doubleValue()); +// } +// if (!CollectionUtils.isEmpty(harmonicVoltage)) { +// steadyQualifyVO.setHarmonicVoltage(NumberUtil.round(steadyResults.stream().mapToDouble(SteadyQualifyVO::getHarmonicVoltage).average().orElse(100), 2).doubleValue()); +// } +// if (!CollectionUtils.isEmpty(harmonicCurrent)) { +// steadyQualifyVO.setHarmonicCurrent(NumberUtil.round(steadyResults.stream().mapToDouble(SteadyQualifyVO::getHarmonicCurrent).average().orElse(100), 2).doubleValue()); +// } +// if (!CollectionUtils.isEmpty(interHarmonic)) { +// steadyQualifyVO.setInterHarmonic(NumberUtil.round(steadyResults.stream().mapToDouble(SteadyQualifyVO::getInterHarmonic).average().orElse(100), 2).doubleValue()); +// } +// } +// return steadyQualifyVO; +// } /** * influxDB查询稳态监测点相关信息 + * * @param lineIndexes * @param startTime * @param endTime @@ -419,13 +427,14 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService { List qualifyDTOList = new ArrayList<>(); List limitRates = rateDService.list(new LambdaQueryWrapper() .in(RStatLimitRateDPO::getLineId, lineIndexes) + .eq(RStatLimitRateDPO::getPhasicType, "T") .ge(StrUtil.isNotBlank(startTime), RStatLimitRateDPO::getTime, DateUtil.beginOfDay(DateUtil.parse(startTime))) .le(StrUtil.isNotBlank(endTime), RStatLimitRateDPO::getTime, DateUtil.endOfDay(DateUtil.parse(endTime))) ); - if(CollUtil.isNotEmpty(limitRates)){ - limitRates.forEach(list ->{ + if (CollUtil.isNotEmpty(limitRates)) { + limitRates.forEach(list -> { SteadyQualifyDTO steadyQualifyDTO = new SteadyQualifyDTO(); - steadyQualifyDTO.setTime(DateUtil.format(list.getTime(),"yyyy-MM-dd HH:mm:ss.SSS")); + steadyQualifyDTO.setTime(DateUtil.format(list.getTime(), "yyyy-MM-dd HH:mm:ss.SSS")); steadyQualifyDTO.setMYINDEX(list.getLineId()); steadyQualifyDTO.setPhasic_Type(list.getPhasicType()); steadyQualifyDTO.setAllTime(Double.parseDouble(list.getAllTime().toString())); @@ -505,120 +514,72 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService { } return qualifyDTOList; -// //组装sql语句 -// StringBuilder timeId = new StringBuilder(); -// timeId.append(InfluxDBPublicParam.TIME + " >= '" + startTime + InfluxDBPublicParam.START_TIME + "' and " + InfluxDBPublicParam.TIME + " <= '" + endTime + InfluxDBPublicParam.END_TIME + "' and "); -// for (int i = 0; i < lineIndexes.size(); i++) { -// if (lineIndexes.size() - i != 1) { -// timeId.append(InfluxDBPublicParam.LINE_ID + "='").append(lineIndexes.get(i)).append("' or "); -// } else { -// timeId.append(InfluxDBPublicParam.LINE_ID + "='").append(lineIndexes.get(i)).append("' tz('Asia/Shanghai')"); -// } -// } -// //sql语句 -// String sql = "SELECT * FROM "+ InfluxDBPublicParam.LIMIT_RATE +" WHERE " + timeId; -// //结果集 -// QueryResult result = influxDbUtils.query(sql); -// //结果集映射到对象中 -// InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper(); -// List limitRates = influxDBResultMapper.toPOJO(result, LimitRate.class); -// limitRates.forEach(list ->{ -// SteadyQualifyDTO steadyQualifyDTO = new SteadyQualifyDTO(); -// LocalDateTime localDateTime = LocalDateTime.ofInstant(list.getTime(), ZoneId.systemDefault()); -// DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); -// steadyQualifyDTO.setTime(dateTimeFormatter.format(localDateTime)); -// steadyQualifyDTO.setMYINDEX(list.getLineId()); -// steadyQualifyDTO.setPhasic_Type(list.getPhasicType()); -// steadyQualifyDTO.setAllTime(Double.parseDouble(list.getAllTime().toString())); -// steadyQualifyDTO.setFlicker_AllTime(Double.parseDouble(list.getFlickerAllTime().toString())); -// steadyQualifyDTO.setFlicker_OverTime(Double.parseDouble(list.getFlickerOverTime().toString())); -// steadyQualifyDTO.setFreq_Dev_OverTime(Double.parseDouble(list.getFreqDevOverTime().toString())); -// steadyQualifyDTO.setIHarm_2_OverTime(Double.parseDouble(list.getIHarm2OverTime().toString())); -// steadyQualifyDTO.setIHarm_3_OverTime(Double.parseDouble(list.getIHarm3OverTime().toString())); -// steadyQualifyDTO.setIHarm_4_OverTime(Double.parseDouble(list.getIHarm4OverTime().toString())); -// steadyQualifyDTO.setIHarm_5_OverTime(Double.parseDouble(list.getIHarm5OverTime().toString())); -// steadyQualifyDTO.setIHarm_6_OverTime(Double.parseDouble(list.getIHarm6OverTime().toString())); -// steadyQualifyDTO.setIHarm_7_OverTime(Double.parseDouble(list.getIHarm7OverTime().toString())); -// steadyQualifyDTO.setIHarm_8_OverTime(Double.parseDouble(list.getIHarm8OverTime().toString())); -// steadyQualifyDTO.setIHarm_9_OverTime(Double.parseDouble(list.getIHarm9OverTime().toString())); -// steadyQualifyDTO.setIHarm_10_OverTime(Double.parseDouble(list.getIHarm10OverTime().toString())); -// steadyQualifyDTO.setIHarm_11_OverTime(Double.parseDouble(list.getIHarm11OverTime().toString())); -// steadyQualifyDTO.setIHarm_12_OverTime(Double.parseDouble(list.getIHarm12OverTime().toString())); -// steadyQualifyDTO.setIHarm_13_OverTime(Double.parseDouble(list.getIHarm13OverTime().toString())); -// steadyQualifyDTO.setIHarm_14_OverTime(Double.parseDouble(list.getIHarm14OverTime().toString())); -// steadyQualifyDTO.setIHarm_15_OverTime(Double.parseDouble(list.getIHarm15OverTime().toString())); -// steadyQualifyDTO.setIHarm_16_OverTime(Double.parseDouble(list.getIHarm16OverTime().toString())); -// steadyQualifyDTO.setIHarm_17_OverTime(Double.parseDouble(list.getIHarm17OverTime().toString())); -// steadyQualifyDTO.setIHarm_18_OverTime(Double.parseDouble(list.getIHarm18OverTime().toString())); -// steadyQualifyDTO.setIHarm_19_OverTime(Double.parseDouble(list.getIHarm19OverTime().toString())); -// steadyQualifyDTO.setIHarm_20_OverTime(Double.parseDouble(list.getIHarm20OverTime().toString())); -// steadyQualifyDTO.setIHarm_21_OverTime(Double.parseDouble(list.getIHarm21OverTime().toString())); -// steadyQualifyDTO.setIHarm_22_OverTime(Double.parseDouble(list.getIHarm22OverTime().toString())); -// steadyQualifyDTO.setIHarm_23_OverTime(Double.parseDouble(list.getIHarm23OverTime().toString())); -// steadyQualifyDTO.setIHarm_24_OverTime(Double.parseDouble(list.getIHarm24OverTime().toString())); -// steadyQualifyDTO.setIHarm_25_OverTime(Double.parseDouble(list.getIHarm25OverTime().toString())); -// steadyQualifyDTO.setI_Neg_OverTime(Double.parseDouble(list.getINegOverTime().toString())); -// steadyQualifyDTO.setInUHARM_1_OverTime(Double.parseDouble(list.getInuHarm1OverTime().toString())); -// steadyQualifyDTO.setInUHARM_2_OverTime(Double.parseDouble(list.getInuHarm2OverTime().toString())); -// steadyQualifyDTO.setInUHARM_3_OverTime(Double.parseDouble(list.getInuHarm3OverTime().toString())); -// steadyQualifyDTO.setInUHARM_4_OverTime(Double.parseDouble(list.getInuHarm4OverTime().toString())); -// steadyQualifyDTO.setInUHARM_5_OverTime(Double.parseDouble(list.getInuHarm5OverTime().toString())); -// steadyQualifyDTO.setInUHARM_6_OverTime(Double.parseDouble(list.getInuHarm6OverTime().toString())); -// steadyQualifyDTO.setInUHARM_7_OverTime(Double.parseDouble(list.getInuHarm7OverTime().toString())); -// steadyQualifyDTO.setInUHARM_8_OverTime(Double.parseDouble(list.getInuHarm8OverTime().toString())); -// steadyQualifyDTO.setInUHARM_9_OverTime(Double.parseDouble(list.getInuHarm9OverTime().toString())); -// steadyQualifyDTO.setInUHARM_10_OverTime(Double.parseDouble(list.getInuHarm10OverTime().toString())); -// steadyQualifyDTO.setInUHARM_11_OverTime(Double.parseDouble(list.getInuHarm11OverTime().toString())); -// steadyQualifyDTO.setInUHARM_12_OverTime(Double.parseDouble(list.getInuHarm12OverTime().toString())); -// steadyQualifyDTO.setInUHARM_13_OverTime(Double.parseDouble(list.getInuHarm13OverTime().toString())); -// steadyQualifyDTO.setInUHARM_14_OverTime(Double.parseDouble(list.getInuHarm14OverTime().toString())); -// steadyQualifyDTO.setInUHARM_15_OverTime(Double.parseDouble(list.getInuHarm15OverTime().toString())); -// steadyQualifyDTO.setInUHARM_16_OverTime(Double.parseDouble(list.getInuHarm16OverTime().toString())); -// steadyQualifyDTO.setUAberrance_OverTime(Double.parseDouble(list.getUAberranceOverTime().toString())); -// steadyQualifyDTO.setUBalance_OverTime(Double.parseDouble(list.getUBalanceOverTime().toString())); -// steadyQualifyDTO.setUHarm_2_OverTime(Double.parseDouble(list.getUHarm2OverTime().toString())); -// steadyQualifyDTO.setUHarm_3_OverTime(Double.parseDouble(list.getUHarm3OverTime().toString())); -// steadyQualifyDTO.setUHarm_4_OverTime(Double.parseDouble(list.getUHarm4OverTime().toString())); -// steadyQualifyDTO.setUHarm_5_OverTime(Double.parseDouble(list.getUHarm5OverTime().toString())); -// steadyQualifyDTO.setUHarm_6_OverTime(Double.parseDouble(list.getUHarm6OverTime().toString())); -// steadyQualifyDTO.setUHarm_7_OverTime(Double.parseDouble(list.getUHarm7OverTime().toString())); -// steadyQualifyDTO.setUHarm_8_OverTime(Double.parseDouble(list.getUHarm8OverTime().toString())); -// steadyQualifyDTO.setUHarm_9_OverTime(Double.parseDouble(list.getUHarm9OverTime().toString())); -// steadyQualifyDTO.setUHarm_10_OverTime(Double.parseDouble(list.getUHarm10OverTime().toString())); -// steadyQualifyDTO.setUHarm_11_OverTime(Double.parseDouble(list.getUHarm11OverTime().toString())); -// steadyQualifyDTO.setUHarm_12_OverTime(Double.parseDouble(list.getUHarm12OverTime().toString())); -// steadyQualifyDTO.setUHarm_13_OverTime(Double.parseDouble(list.getUHarm13OverTime().toString())); -// steadyQualifyDTO.setUHarm_14_OverTime(Double.parseDouble(list.getUHarm14OverTime().toString())); -// steadyQualifyDTO.setUHarm_15_OverTime(Double.parseDouble(list.getUHarm15OverTime().toString())); -// steadyQualifyDTO.setUHarm_16_OverTime(Double.parseDouble(list.getUHarm16OverTime().toString())); -// steadyQualifyDTO.setUHarm_17_OverTime(Double.parseDouble(list.getUHarm17OverTime().toString())); -// steadyQualifyDTO.setUHarm_18_OverTime(Double.parseDouble(list.getUHarm18OverTime().toString())); -// steadyQualifyDTO.setUHarm_19_OverTime(Double.parseDouble(list.getUHarm19OverTime().toString())); -// steadyQualifyDTO.setUHarm_20_OverTime(Double.parseDouble(list.getUHarm20OverTime().toString())); -// steadyQualifyDTO.setUHarm_21_OverTime(Double.parseDouble(list.getUHarm21OverTime().toString())); -// steadyQualifyDTO.setUHarm_22_OverTime(Double.parseDouble(list.getUHarm22OverTime().toString())); -// steadyQualifyDTO.setUHarm_23_OverTime(Double.parseDouble(list.getUHarm23OverTime().toString())); -// steadyQualifyDTO.setUHarm_24_OverTime(Double.parseDouble(list.getUHarm24OverTime().toString())); -// steadyQualifyDTO.setUHarm_25_OverTime(Double.parseDouble(list.getUHarm25OverTime().toString())); -// steadyQualifyDTO.setVoltage_Dev_OverTime(Double.parseDouble(list.getVoltageDevOverTime().toString())); -// qualifyDTOList.add(steadyQualifyDTO); -// }); -// -// -// return qualifyDTOList; } - private static double calculate(Double allTime, Double overTime) { if (allTime == 0) { return 3.14159; } else { - if (allTime >= overTime){ + if (allTime >= overTime) { return NumberUtil.round((allTime - overTime) / allTime * 100, 2).doubleValue(); } return 0.0; } } + /** + * 电压 + * + * @param allTime 总条数 + * @param overTime 相加 + * @return + */ + private static double calculateV(Double allTime, Double overTime) { + if (allTime == 0) { + return 3.14159; + } else { + if (allTime >= overTime) { + return NumberUtil.round((1 - (overTime / (allTime * 25))) * 100, 2).doubleValue(); + } + return 0.0; + } + } + + /** + * 电流 + * + * @param allTime + * @param overTime + * @return + */ + private static double calculateI(Double allTime, Double overTime) { + if (allTime == 0) { + return 3.14159; + } else { + if (allTime >= overTime) { + return NumberUtil.round((1 - (overTime / (allTime * 24))) * 100, 2).doubleValue(); + } + return 0.0; + } + } + + /** + * 间谐波 + * + * @param allTime + * @param overTime + * @return + */ + private static double calculateIN(Double allTime, Double overTime) { + if (allTime == 0) { + return 3.14159; + } else { + if (allTime >= overTime) { + return NumberUtil.round((1 - (overTime / (allTime * 16))) * 100, 2).doubleValue(); + } + return 0.0; + } + } + }