1.功能bug调整
2.算法添加部分指标异常数据判断
This commit is contained in:
@@ -47,41 +47,41 @@
|
||||
linedetail.Short_Capacity as shortCapacity,
|
||||
linedetail.Dev_Capacity as devCapacity,
|
||||
linedetail.Deal_Capacity as dealCapacity,
|
||||
over.Freq_Dev as freqDev,
|
||||
over.Voltage_Dev as voltageDev,
|
||||
over.Uvoltage_Dev as uvoltageDev,
|
||||
over.Ubalance as ubalance,
|
||||
over.I_Neg as iNeg,
|
||||
over.Flicker as flicker,
|
||||
over.Uaberrance as uaberrance,
|
||||
over.Uharm_3 as oddHarm,
|
||||
over.Uharm_2 as evenHarm,
|
||||
over.Iharm_2 as iharm2,
|
||||
over.Iharm_3 as iharm3,
|
||||
over.Iharm_4 as iharm4,
|
||||
over.Iharm_5 as iharm5,
|
||||
over.Iharm_6 as iharm6,
|
||||
over.Iharm_7 as iharm7,
|
||||
over.Iharm_8 as iharm8,
|
||||
over.Iharm_9 as iharm9,
|
||||
over.Iharm_10 as iharm10,
|
||||
over.Iharm_11 as iharm11,
|
||||
over.Iharm_12 as iharm12,
|
||||
over.Iharm_13 as iharm13,
|
||||
over.Iharm_14 as iharm14,
|
||||
over.Iharm_15 as iharm15,
|
||||
over.Iharm_16 as iharm16,
|
||||
over.Iharm_17 as iharm17,
|
||||
over.Iharm_18 as iharm18,
|
||||
over.Iharm_19 as iharm19,
|
||||
over.Iharm_20 as iharm20,
|
||||
over.Iharm_21 as iharm21,
|
||||
over.Iharm_22 as iharm22,
|
||||
over.Iharm_23 as iharm23,
|
||||
over.Iharm_24 as iharm24,
|
||||
over.Iharm_25 as iharm25,
|
||||
over.InUharm_1 as inUharm,
|
||||
over.InUharm_16 as inUharm16
|
||||
overlimit.Freq_Dev as freqDev,
|
||||
overlimit.Voltage_Dev as voltageDev,
|
||||
overlimit.Uvoltage_Dev as uvoltageDev,
|
||||
overlimit.Ubalance as ubalance,
|
||||
overlimit.I_Neg as iNeg,
|
||||
overlimit.Flicker as flicker,
|
||||
overlimit.Uaberrance as uaberrance,
|
||||
overlimit.Uharm_3 as oddHarm,
|
||||
overlimit.Uharm_2 as evenHarm,
|
||||
overlimit.Iharm_2 as iharm2,
|
||||
overlimit.Iharm_3 as iharm3,
|
||||
overlimit.Iharm_4 as iharm4,
|
||||
overlimit.Iharm_5 as iharm5,
|
||||
overlimit.Iharm_6 as iharm6,
|
||||
overlimit.Iharm_7 as iharm7,
|
||||
overlimit.Iharm_8 as iharm8,
|
||||
overlimit.Iharm_9 as iharm9,
|
||||
overlimit.Iharm_10 as iharm10,
|
||||
overlimit.Iharm_11 as iharm11,
|
||||
overlimit.Iharm_12 as iharm12,
|
||||
overlimit.Iharm_13 as iharm13,
|
||||
overlimit.Iharm_14 as iharm14,
|
||||
overlimit.Iharm_15 as iharm15,
|
||||
overlimit.Iharm_16 as iharm16,
|
||||
overlimit.Iharm_17 as iharm17,
|
||||
overlimit.Iharm_18 as iharm18,
|
||||
overlimit.Iharm_19 as iharm19,
|
||||
overlimit.Iharm_20 as iharm20,
|
||||
overlimit.Iharm_21 as iharm21,
|
||||
overlimit.Iharm_22 as iharm22,
|
||||
overlimit.Iharm_23 as iharm23,
|
||||
overlimit.Iharm_24 as iharm24,
|
||||
overlimit.Iharm_25 as iharm25,
|
||||
overlimit.InUharm_1 as inUharm,
|
||||
overlimit.InUharm_16 as inUharm16
|
||||
FROM pq_line line
|
||||
INNER JOIN pq_line vol ON vol.Id = line.Pid
|
||||
INNER JOIN pq_line dev ON dev.Id = vol.Pid
|
||||
@@ -89,7 +89,7 @@
|
||||
INNER JOIN pq_line gd ON gd.Id = sub.Pid
|
||||
INNER JOIN pq_line areaId ON areaId.Id = gd.Pid
|
||||
INNER JOIN sys_area area ON area.Id = areaId.NAME
|
||||
INNER JOIN pq_overlimit over ON over.Id = line.Id
|
||||
INNER JOIN pq_overlimit overlimit ON overlimit.Id = line.Id
|
||||
INNER JOIN pq_voltage voltage ON voltage.Id = vol.Id
|
||||
INNER JOIN sys_dict_data scaleId ON scaleId.Id = voltage.Scale
|
||||
INNER JOIN pq_device device ON device.Id = dev.Id
|
||||
|
||||
@@ -74,7 +74,7 @@ public class RunManageServiceImpl implements RunManageService {
|
||||
List<GeneralDeviceDTO> generalDeviceDTOList = generalDeviceService.getDeviceInfo(deviceInfoParam, runManageParam.getRunFlag(), Stream.of(1).collect(Collectors.toList()));
|
||||
List<String> lineIndexes = generalDeviceDTOList.stream().flatMap(list -> list.getLineIndexes().stream()).collect(Collectors.toList());
|
||||
if (!CollectionUtils.isEmpty(lineIndexes)) {
|
||||
return deviceMapper.getRunManageList(lineIndexes, runManageParam.getComFlag(), runManageParam.getSearchValue());
|
||||
return deviceMapper.getRunManageList(lineIndexes, runManageParam.getComFlag(), Objects.isNull(runManageParam.getSearchValue())?null:runManageParam.getSearchValue());
|
||||
} else {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
@@ -19,6 +19,9 @@ public class AssessVo implements Serializable {
|
||||
@ApiModelProperty("名称")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty("地市code")
|
||||
private String code;
|
||||
|
||||
@ApiModelProperty("评估分数")
|
||||
private Float score = 3.14159f;
|
||||
|
||||
|
||||
@@ -31,4 +31,9 @@ public interface RStatDataVDMapper extends BaseMapper<RStatDataVD> {
|
||||
*/
|
||||
List<RStatDataVD> getVthd(@Param("list") List<String> lineList, @Param("startTime") String startTime, @Param("endTime") String endTime);
|
||||
|
||||
/**
|
||||
* 获取三相电压不平衡度
|
||||
*/
|
||||
List<RStatDataVD> getUnbalance(@Param("list") List<String> lineList, @Param("startTime") String startTime, @Param("endTime") String endTime);
|
||||
|
||||
}
|
||||
|
||||
@@ -63,4 +63,24 @@
|
||||
`time`,line_id
|
||||
</select>
|
||||
|
||||
<select id="getUnbalance" resultType="com.njcn.harmonic.pojo.po.RStatDataVD">
|
||||
select
|
||||
`time` time,
|
||||
line_id lineId,
|
||||
avg(v_unbalance) vUnbalance
|
||||
from
|
||||
r_stat_data_v_d
|
||||
where
|
||||
`time` between #{startTime} and #{endTime}
|
||||
and phasic_type = 'T'
|
||||
and value_type = 'CP95'
|
||||
and line_id IN
|
||||
<foreach collection="list" item="item" separator="," open="(" close=")">
|
||||
#{item}
|
||||
</foreach>
|
||||
and quality_flag = 0
|
||||
group by
|
||||
`time`,line_id
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
@@ -91,6 +91,7 @@ public class GridServiceImpl implements IGridService {
|
||||
if (lineDetailMap.containsKey(item.getArea())) {
|
||||
AssessVo assessVo = new AssessVo();
|
||||
assessVo.setName(item.getName());
|
||||
assessVo.setCode(item.getCode());
|
||||
List<String> ll = lineDetailMap.get(item.getArea()).stream().map(LineDetail::getId).collect(Collectors.toList());
|
||||
List<PQSComAssesPO> deptAssessList = assesList.stream().filter(it->ll.contains(it.getLineId())).collect(Collectors.toList());
|
||||
List<PqsComasses> communicateList = BeanUtil.copyToList(deptAssessList,PqsComasses.class);
|
||||
@@ -310,6 +311,7 @@ public class GridServiceImpl implements IGridService {
|
||||
List<RStatDataVD> list2 = getList2(lineList,param.getStartTime(),param.getEndTime());
|
||||
List<RStatDataVD> list3 = getList3(lineList,param.getStartTime(),param.getEndTime());
|
||||
List<RStatDataPltDPO> list4 = getList4(lineList,param.getStartTime(),param.getEndTime());
|
||||
List<RStatDataVD> list5 = getList5(lineList,param.getStartTime(),param.getEndTime());
|
||||
if (CollUtil.isNotEmpty(list1)) {
|
||||
List<Double> d = list1.stream().map(o->o.getFreqDev().doubleValue()).collect(Collectors.toList());
|
||||
double avg = d.stream().collect(Collectors.averagingDouble(x->x));
|
||||
@@ -328,7 +330,7 @@ public class GridServiceImpl implements IGridService {
|
||||
vo3.setAvg(PubUtils.doubleRound(2,avg));
|
||||
vo3.setSd(targetSd(d,avg));
|
||||
}
|
||||
if (CollUtil.isNotEmpty(list1)) {
|
||||
if (CollUtil.isNotEmpty(list5)) {
|
||||
List<Double> d = list1.stream().map(o -> o.getVUnbalance().doubleValue()).collect(Collectors.toList());
|
||||
double avg = d.stream().collect(Collectors.averagingDouble(x -> x));
|
||||
vo4.setAvg(PubUtils.doubleRound(2,avg));
|
||||
@@ -545,7 +547,7 @@ public class GridServiceImpl implements IGridService {
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取监测点频率偏差 T相最大值\获取监测点三相电压不平衡度 T相最大值
|
||||
* 获取监测点频率偏差 T相最大值
|
||||
*/
|
||||
public List<RStatDataVD> getList1(List<String> lineList, String startTime, String endTime) {
|
||||
return statDataVDMapper.getFreqDev(lineList,startTime,endTime);
|
||||
@@ -572,6 +574,13 @@ public class GridServiceImpl implements IGridService {
|
||||
return statDataPltDMapper.getPlt(lineList,startTime,endTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取监测点三相电压不平衡度 T相 CP95
|
||||
*/
|
||||
public List<RStatDataVD> getList5(List<String> lineList, String startTime, String endTime) {
|
||||
return statDataVDMapper.getUnbalance(lineList,startTime,endTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算标准差
|
||||
*/
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.line;
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import com.alibaba.nacos.client.naming.utils.CollectionUtils;
|
||||
import com.njcn.common.utils.HarmonicTimesUtil;
|
||||
import com.njcn.harmonic.pojo.po.day.*;
|
||||
@@ -19,7 +20,6 @@ import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.ListUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -113,7 +113,10 @@ public class DayDataServiceImpl implements DayDataService {
|
||||
RStatDataVDPO po1 = new RStatDataVDPO();
|
||||
BeanUtils.copyProperties(item, po1);
|
||||
po1.setTime(LocalDate.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_FORMATTER));
|
||||
//todo 此数据质量标记为influxdb查询得出,数据转换时未做数据异常判断,因前置那边未做判断,系统先做判断拦截,后期前置应该加判断
|
||||
po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
|
||||
//fixme 因现场数据异常,先处理频率偏差、电压偏差、电压总谐波畸变率、三相电压不平衡度、长时闪变异常数据拦截
|
||||
po1.setQualityFlag(DataAnomalyDetectio(po1,null));
|
||||
dataVPOList.add(po1);
|
||||
DayV dayV = new DayV();
|
||||
BeanUtils.copyProperties(item, dayV);
|
||||
@@ -580,6 +583,7 @@ public class DayDataServiceImpl implements DayDataService {
|
||||
BeanUtils.copyProperties(item, po1);
|
||||
po1.setTime(LocalDate.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_FORMATTER));
|
||||
po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
|
||||
po1.setQualityFlag(DataAnomalyDetectio(null,po1));
|
||||
dataPltPOList.add(po1);
|
||||
|
||||
DayPlt dayPlt = new DayPlt();
|
||||
@@ -1864,4 +1868,23 @@ public class DayDataServiceImpl implements DayDataService {
|
||||
result.addAll(result4);
|
||||
return result;
|
||||
}
|
||||
|
||||
public Integer DataAnomalyDetectio(RStatDataVDPO po1, RStatDataPltDPO po2) {
|
||||
int result = 0;
|
||||
if (ObjUtil.isNotNull(po1)) {
|
||||
if (Math.abs(po1.getFreqDev()) > 7.5
|
||||
|| Math.abs(po1.getVlDev()) > 20
|
||||
|| Math.abs(po1.getVuDev()) > 20
|
||||
|| po1.getVThd() > 30
|
||||
|| po1.getVUnbalance() > 40) {
|
||||
result = 1;
|
||||
}
|
||||
}
|
||||
if (ObjUtil.isNotNull(po2)) {
|
||||
if (po2.getPlt() > 20) {
|
||||
result = 1;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user