谐波监测-区域:稳态合格率统计和稳态超标占比

This commit is contained in:
wr
2023-04-20 20:42:23 +08:00
parent 75624b0b19
commit 4119696ff3
6 changed files with 484 additions and 289 deletions

View File

@@ -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;
}
}

View File

@@ -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<String> getIntervalTime(String startTime, String endTime) {
List<String> 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<String> getIntervalDateTime(Integer startTime, Integer endTime, Integer dd) {
List<String> 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;
}
}

View File

@@ -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;
/**
* <p>
@@ -34,4 +35,9 @@ public interface RStatLimitRateDMapper extends BaseMapper<RStatLimitRateDPO> {
@Param("ids") List<String> lineIndexes,
@Param("statTime") String searchBeginTime,
@Param("endTime") String searchEndTime);
List<MonitorOverLimitVO.DataVO> getPercentages(
@Param("ids") List<String> lineIndexes,
@Param("statTime") String searchBeginTime,
@Param("endTime") String searchEndTime);
}

View File

@@ -183,4 +183,31 @@
</where>
GROUP BY my_index
</select>
<select id="getPercentages" resultType="com.njcn.harmonic.pojo.vo.MonitorOverLimitVO$DataVO">
SELECT
DATE_FORMAT(time_id,'%Y-%m-%d') AS time,
IFNULL(TRUNCATE ((1- (
sum( flicker_overtime )+ sum( flicker_all_time )+ sum( freq_dev_overtime )+ sum( voltage_dev_overtime )+ sum( ubalance_overtime )+ sum( uaberrance_overtime )+ sum( i_neg_overtime )+ sum( uharm_2_overtime )+ sum( uharm_3_overtime )+ sum( uharm_4_overtime )+ sum( uharm_5_overtime )+ sum( uharm_6_overtime )+ sum( uharm_7_overtime )+ sum( uharm_8_overtime )+ sum( uharm_9_overtime )+ sum( uharm_10_overtime )+ sum( uharm_11_overtime )+ sum( uharm_12_overtime )+ sum( uharm_13_overtime )+ sum( uharm_14_overtime )+ sum( uharm_15_overtime )+ sum( uharm_16_overtime )+ sum( uharm_17_overtime )+ sum( uharm_18_overtime )+ sum( uharm_19_overtime )+ sum( uharm_20_overtime )+ sum( uharm_21_overtime )+ sum( uharm_22_overtime )+ sum( uharm_23_overtime )+ sum( uharm_24_overtime )+ sum( uharm_25_overtime )+ sum( iharm_2_overtime )+ sum( iharm_3_overtime )+ sum( iharm_4_overtime )+ sum( iharm_5_overtime )+ sum( iharm_6_overtime )+ sum( iharm_7_overtime )+ sum( iharm_8_overtime )+ sum( iharm_9_overtime )+ sum( iharm_10_overtime )+ sum( iharm_11_overtime )+ sum( iharm_12_overtime )+ sum( iharm_13_overtime )+ sum( iharm_14_overtime )+ sum( iharm_15_overtime )+ sum( iharm_16_overtime )+ sum( iharm_17_overtime )+ sum( iharm_18_overtime )+ sum( iharm_19_overtime )+ sum( iharm_20_overtime )+ sum( iharm_21_overtime )+ sum( iharm_22_overtime )+ sum( iharm_23_overtime )+ sum( iharm_24_overtime )+ sum( iharm_25_overtime )+ sum( inuharm_1_overtime )+ sum( inuharm_2_overtime )+ sum( inuharm_3_overtime )+ sum( inuharm_4_overtime )+ sum( inuharm_5_overtime )+ sum( inuharm_6_overtime )+ sum( inuharm_7_overtime )+ sum( inuharm_8_overtime )+ sum( inuharm_9_overtime )+ sum( inuharm_10_overtime )+ sum( inuharm_11_overtime )+ sum( inuharm_12_overtime )+ sum( inuharm_13_overtime )+ sum( inuharm_14_overtime )+ sum( inuharm_15_overtime )+ sum( inuharm_16_overtime )) /(
SUM( all_time )* 71 )
)* 100,2),0) `data`
FROM
r_stat_limit_rate_d
<where>
phasic_type = "T"
<if test=" ids != null and ids.size > 0">
AND my_index IN
<foreach collection='ids' item='item' index="index" open='(' separator=',' close=')'>
#{item}
</foreach>
</if>
<if test=" statTime != null and statTime !=''">
AND time_id >= #{statTime}
</if>
<if test="endTime != null and endTime != ''">
AND time_id &lt;= #{endTime}
</if>
</where>
GROUP BY
`time`
</select>
</mapper>

View File

@@ -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<SteadyExceedRateVO> 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<LimitRatePO> qualifiesRate = getQualifiesRate(lineIndexes, steadyExceedParam.getSearchBeginTime(), steadyExceedParam.getSearchEndTime());
SteadyExceedRateVO dataMoreMonitorMoreDay = getDataMoreMonitorMoreDay(qualifiesRate);
steadyExceedRateVO.setSteadyExceedRate(PubUtils.dataLimits(dataMoreMonitorMoreDay.getSteadyExceedRate()));
//组装父级数据树
//组装子集数据树
List<SteadyExceedRateVO> 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<GeneralDeviceDTO> deviceDataList = generalDeviceInfoClient.getPracticalRunDeviceInfo(steadyExceedCensusParam).getData();
if (!CollectionUtils.isEmpty(deviceDataList)) {
List<Map<String,Double>> maps=new ArrayList<>();
for (GeneralDeviceDTO generalDeviceDTO: deviceDataList) {
type.add(generalDeviceDTO.getName());
List<String> lineIndexes = generalDeviceDTO.getLineIndexes();
List<MonitorOverLimitVO.DataVO> percentages = rateDMapper.getPercentages(lineIndexes, steadyExceedCensusParam.getSearchBeginTime(), steadyExceedCensusParam.getSearchEndTime());
Map<String, Double> 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<timed; i++) {
@@ -123,16 +135,26 @@ public class SteadyExceedRateServiceImpl implements SteadyExceedRateService {
}
break;
case 1:
time = getSteadyTimesByDay(steadyExceedCensusParam.getSearchBeginTime(), steadyExceedCensusParam.getSearchEndTime());
timed = getSteadyByDay(steadyExceedCensusParam.getSearchBeginTime(), steadyExceedCensusParam.getSearchEndTime());
for (int i =0; i<timed; i++) {
//查询是天
List<String> 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<String> dayTime = PubUtils.getIntervalDateTime(year, mon, day);
for (String s : dayTime) {
List<Double> steadyExceedRate = new ArrayList<>();
for (List<String> lineIndexes: tempIndex) {
if (!CollectionUtils.isEmpty(lineIndexes)) {
List<LimitRatePO> qualifiesRate = getQualifiesRate(lineIndexes, steadyExceedCensusParam.getSearchBeginTime(), steadyExceedCensusParam.getSearchEndTime());
if (!CollectionUtils.isEmpty(qualifiesRate)) {
SteadyExceedRateVO dataMoreMonitorSingleDay = getDataMoreMonitorSingleDay(qualifiesRate, lineIndexes, time.get(i));
steadyExceedRate.add(dataMoreMonitorSingleDay.getSteadyExceedRate());
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);
}
@@ -141,6 +163,8 @@ public class SteadyExceedRateServiceImpl implements SteadyExceedRateService {
}
}
steadyExceedList.add(steadyExceedRate);
time.add(s);
}
}
break;
case 2:
@@ -200,7 +224,7 @@ public class SteadyExceedRateServiceImpl implements SteadyExceedRateService {
}
private List<String> getSteadyTimesByDay(String searchBeginTime, String searchEndTime) {
public static List<String> getSteadyTimesByDay(String searchBeginTime, String searchEndTime) {
List<String> 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<SteadyExceedRateVO> powerCompanyList = steadyExceedRateMapper.getLineInfoByList(substationList.stream().map(SteadyExceedRateVO::getPid).distinct().collect(Collectors.toList()));
List<LimitRatePO> qualifiesRate = getQualifiesRate(lineIndexes, steadyExceedParam.getSearchBeginTime(), steadyExceedParam.getSearchEndTime());
//根据监测点分组
Map<String, List<LimitRatePO>> lineList = qualifiesRate.stream().collect(Collectors.groupingBy(LimitRatePO::getLineId));
monitorList.forEach(steadyExceedRateVO -> {
SteadyExceedRateVO dataSingleMonitorMoreDay = getDataSingleMonitorMoreDay(qualifiesRate, steadyExceedRateVO.getId());
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<LimitRatePO> qualifiesRate, String lineId, String time) {
public List<SteadyExceedRateVO> getDataSingleMonitorSingeDay(List<LimitRatePO> qualifiesRate) {
List<SteadyExceedRateVO> list=new ArrayList<>();
SteadyExceedRateVO steadyExceedRateVO = new SteadyExceedRateVO();
LimitRatePO limitRatePO;
List<LimitRatePO> 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<LimitRatePO> qualifiesRate, String lineId) {
public SteadyExceedRateVO getDataSingleMonitorMoreDay(List<LimitRatePO> qualifiesRate) {
SteadyExceedRateVO steadyExceedRateVO = new SteadyExceedRateVO();
List<LimitRatePO> limitRatePOList;
List<SteadyExceedRateVO> steadyExceedRateVOS = new ArrayList<>();
//从数据里筛选出指定监测点的数据
limitRatePOList = qualifiesRate.stream().filter(
temp -> temp.getLineId().equalsIgnoreCase(lineId)).collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(limitRatePOList)) {
Map<String, List<SteadyExceedRateVO>> 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<SteadyExceedRateVO> steadyResults = new ArrayList<>();
//以时间分组的各项数据
Map<String, List<LimitRatePO>> groupByTimeData = qualifiesRate.stream().collect(Collectors.groupingBy(LimitRatePO::getDayStr));
if (CollectionUtil.isNotEmpty(groupByTimeData)) {
Set<String> times = groupByTimeData.keySet();
for (String time : times) {
List<String> ids = groupByTimeData.get(time).stream().map(LimitRatePO::getLineId).collect(Collectors.toList());
steadyResults.add(getDataMoreMonitorSingleDay(qualifiesRate, ids, time));
}
// Map<String, List<LimitRatePO>> groupByTimeData = qualifiesRate.stream().collect(Collectors.groupingBy(LimitRatePO::getDayStr));
// if (CollectionUtil.isNotEmpty(groupByTimeData)) {
// Set<String> times = groupByTimeData.keySet();
// for (String time : times) {
// List<String> 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<LimitRatePO> qualifiesRate, List<String> lineIds, String time) {
SteadyExceedRateVO steadyExceedRateVO = new SteadyExceedRateVO();
List<SteadyExceedRateVO> 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();
}
}
}

View File

@@ -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
@@ -68,19 +57,43 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService {
steadyQualifyVO.setName(generalDeviceDTO.getName());
// List<SteadyQualifyVO> lineData = steadyQualifyMapper.getSteadyQualifyData(lineIndexes);
List<SteadyQualifyDTO> 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<SteadyQualifyVO> treeList = getTreeData(qualifiesRate, lineIndexes);
if (CollectionUtil.isNotEmpty(treeList)) {
List<SteadyQualifyVO> flicker = treeList.stream().filter(s -> s.getFlicker() != 3.14159).collect(Collectors.toList());
List<SteadyQualifyVO> freqOffset = treeList.stream().filter(s -> s.getFreqOffset() != 3.14159).collect(Collectors.toList());
List<SteadyQualifyVO> voltageOffset = treeList.stream().filter(s -> s.getVoltageOffset() != 3.14159).collect(Collectors.toList());
List<SteadyQualifyVO> voltageUnbalance = treeList.stream().filter(s -> s.getVoltageUnbalance() != 3.14159).collect(Collectors.toList());
List<SteadyQualifyVO> negativeCurrent = treeList.stream().filter(s -> s.getNegativeCurrent() != 3.14159).collect(Collectors.toList());
List<SteadyQualifyVO> harmonicVoltage = treeList.stream().filter(s -> s.getHarmonicVoltage() != 3.14159).collect(Collectors.toList());
List<SteadyQualifyVO> harmonicCurrent = treeList.stream().filter(s -> s.getHarmonicCurrent() != 3.14159).collect(Collectors.toList());
List<SteadyQualifyVO> 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<SteadyQualifyVO> treeList = getTreeData(lineIndexes, steadyParam);
steadyQualifyVO.setChildren(treeList);
steadyQualifyList.add(steadyQualifyVO);
}
@@ -132,7 +145,7 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService {
/**
* 获取父级每层数据
*/
private List<SteadyQualifyVO> getTreeData(List<String> lineIndexes, DeviceInfoParam.BusinessParam steadyParam) {
private List<SteadyQualifyVO> getTreeData(List<SteadyQualifyDTO> qualifiesRate, List<String> lineIndexes) {
//监测点集合
List<SteadyQualifyVO> monitorList = steadyQualifyMapper.getSteadyQualifyData(lineIndexes);
//母线集合
@@ -144,7 +157,7 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService {
//供电公司集合
List<SteadyQualifyVO> powerCompanyList = steadyQualifyMapper.getLineInfoByList(substationList.stream().map(SteadyQualifyVO::getPid).distinct().collect(Collectors.toList()));
List<SteadyQualifyDTO> qualifiesRate = getQualifiesRate(lineIndexes, steadyParam.getSearchBeginTime(), steadyParam.getSearchEndTime());
// List<SteadyQualifyDTO> qualifiesRate = getQualifiesRate(lineIndexes, steadyParam.getSearchBeginTime(), steadyParam.getSearchEndTime());
monitorList.forEach(steadyQualifyVO -> {
SteadyQualifyVO dataSingleMonitorMoreDay = getDataSingleMonitorMoreDay(qualifiesRate, steadyQualifyVO.getId());
steadyQualifyVO.setFlicker(PubUtils.dataLimits(dataSingleMonitorMoreDay.getFlicker()));
@@ -212,6 +225,7 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService {
private List<SteadyQualifyVO> getChildCategoryList(SteadyQualifyVO item, List<SteadyQualifyVO> child) {
return child.stream().filter(allItem -> allItem.getPid().equals(item.getId())).collect(Collectors.toList());
}
private void setChildesList(List<SteadyQualifyVO> item, List<SteadyQualifyVO> childes) {
Map<String, List<SteadyQualifyVO>> groupLine;
groupLine = childes.stream().collect(Collectors.groupingBy(steadyQualifyVO -> {
@@ -228,13 +242,13 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService {
/**
* 计算监测点日统计合格率
*/
public SteadyQualifyVO getDataSingleMonitorSingeDay(List<SteadyQualifyDTO> qualifiesRate, String lineId, String time) {
public List<SteadyQualifyVO> getDataSingleMonitorSingeDay(List<SteadyQualifyDTO> qualifiesRate) {
List<SteadyQualifyVO> list = new ArrayList<>();
SteadyQualifyVO steadyQualifyVO = new SteadyQualifyVO();
List<SteadyQualifyDTO> 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);
if (!CollectionUtil.isEmpty(qualifiesRate)) {
for (SteadyQualifyDTO steadyQualifyDTO : qualifiesRate) {
steadyQualifyVO = new SteadyQualifyVO();
//闪变合格率
steadyQualifyVO.setFlicker(calculate(steadyQualifyDTO.getFlicker_AllTime(), steadyQualifyDTO.getFlicker_OverTime()));
//频率偏差合格率
@@ -246,13 +260,15 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService {
//负序电流
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.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(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.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(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())));
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<SteadyQualifyVO> 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<SteadyQualifyVO> flicker = steadyQualifyVOS.stream().filter(s -> s.getFlicker() != 3.14159).collect(Collectors.toList());
List<SteadyQualifyVO> freqOffset = steadyQualifyVOS.stream().filter(s -> s.getFreqOffset() != 3.14159).collect(Collectors.toList());
@@ -280,28 +294,28 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService {
List<SteadyQualifyVO> 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<SteadyQualifyDTO> qualifiesRate) {
SteadyQualifyVO steadyQualifyVO = new SteadyQualifyVO();
List<SteadyQualifyVO> steadyResults = new ArrayList<>();
//以时间分组的各项数据
Map<String, List<SteadyQualifyDTO>> groupByTimeData = qualifiesRate.stream().collect(Collectors.groupingBy(SteadyQualifyDTO::getTime));
if (CollectionUtil.isNotEmpty(groupByTimeData)) {
Set<String> times = groupByTimeData.keySet();
for (String time : times) {
List<String> 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<SteadyQualifyVO> flicker = steadyResults.stream().filter(s -> s.getFlicker() != 3.14159).collect(Collectors.toList());
List<SteadyQualifyVO> 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<SteadyQualifyDTO> qualifiesRate, List<String> lineIds, String time) {
SteadyQualifyVO steadyQualifyVO = new SteadyQualifyVO();
List<SteadyQualifyVO> steadyResults = new ArrayList<>();
for (String lineId : lineIds) {
steadyResults.add(getDataSingleMonitorSingeDay(qualifiesRate, lineId, time));
}
if (CollectionUtil.isNotEmpty(steadyResults)) {
List<SteadyQualifyVO> flicker = steadyResults.stream().filter(s -> s.getFlicker() != 3.14159).collect(Collectors.toList());
List<SteadyQualifyVO> freqOffset = steadyResults.stream().filter(s -> s.getFreqOffset() != 3.14159).collect(Collectors.toList());
List<SteadyQualifyVO> voltageOffset = steadyResults.stream().filter(s -> s.getVoltageOffset() != 3.14159).collect(Collectors.toList());
List<SteadyQualifyVO> voltageUnbalance = steadyResults.stream().filter(s -> s.getVoltageUnbalance() != 3.14159).collect(Collectors.toList());
List<SteadyQualifyVO> negativeCurrent = steadyResults.stream().filter(s -> s.getNegativeCurrent() != 3.14159).collect(Collectors.toList());
List<SteadyQualifyVO> harmonicVoltage = steadyResults.stream().filter(s -> s.getHarmonicVoltage() != 3.14159).collect(Collectors.toList());
List<SteadyQualifyVO> harmonicCurrent = steadyResults.stream().filter(s -> s.getHarmonicCurrent() != 3.14159).collect(Collectors.toList());
List<SteadyQualifyVO> 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<SteadyQualifyDTO> qualifiesRate, List<String> lineIds, String time) {
// SteadyQualifyVO steadyQualifyVO = new SteadyQualifyVO();
// List<SteadyQualifyVO> steadyResults = new ArrayList<>();
// for (String lineId : lineIds) {
// steadyResults.addAll(getDataSingleMonitorSingeDay(qualifiesRate, lineId, time));
// }
// if (CollectionUtil.isNotEmpty(steadyResults)) {
// List<SteadyQualifyVO> flicker = steadyResults.stream().filter(s -> s.getFlicker() != 3.14159).collect(Collectors.toList());
// List<SteadyQualifyVO> freqOffset = steadyResults.stream().filter(s -> s.getFreqOffset() != 3.14159).collect(Collectors.toList());
// List<SteadyQualifyVO> voltageOffset = steadyResults.stream().filter(s -> s.getVoltageOffset() != 3.14159).collect(Collectors.toList());
// List<SteadyQualifyVO> voltageUnbalance = steadyResults.stream().filter(s -> s.getVoltageUnbalance() != 3.14159).collect(Collectors.toList());
// List<SteadyQualifyVO> negativeCurrent = steadyResults.stream().filter(s -> s.getNegativeCurrent() != 3.14159).collect(Collectors.toList());
// List<SteadyQualifyVO> harmonicVoltage = steadyResults.stream().filter(s -> s.getHarmonicVoltage() != 3.14159).collect(Collectors.toList());
// List<SteadyQualifyVO> harmonicCurrent = steadyResults.stream().filter(s -> s.getHarmonicCurrent() != 3.14159).collect(Collectors.toList());
// List<SteadyQualifyVO> 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,6 +427,7 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService {
List<SteadyQualifyDTO> qualifyDTOList = new ArrayList<>();
List<RStatLimitRateDPO> limitRates = rateDService.list(new LambdaQueryWrapper<RStatLimitRateDPO>()
.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)))
);
@@ -505,111 +514,9 @@ 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<LimitRate> 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;
@@ -621,4 +528,58 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService {
}
}
/**
* 电压
*
* @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;
}
}
}