diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/DeviceMapper.xml b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/DeviceMapper.xml
index 4b0380c18..8282033fe 100644
--- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/DeviceMapper.xml
+++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/DeviceMapper.xml
@@ -18,70 +18,70 @@
+
+
diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/GridServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/GridServiceImpl.java
index a93b6cfde..e5ac3169b 100644
--- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/GridServiceImpl.java
+++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/GridServiceImpl.java
@@ -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 ll = lineDetailMap.get(item.getArea()).stream().map(LineDetail::getId).collect(Collectors.toList());
List deptAssessList = assesList.stream().filter(it->ll.contains(it.getLineId())).collect(Collectors.toList());
List communicateList = BeanUtil.copyToList(deptAssessList,PqsComasses.class);
@@ -310,6 +311,7 @@ public class GridServiceImpl implements IGridService {
List list2 = getList2(lineList,param.getStartTime(),param.getEndTime());
List list3 = getList3(lineList,param.getStartTime(),param.getEndTime());
List list4 = getList4(lineList,param.getStartTime(),param.getEndTime());
+ List list5 = getList5(lineList,param.getStartTime(),param.getEndTime());
if (CollUtil.isNotEmpty(list1)) {
List 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 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 getList1(List 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 getList5(List lineList, String startTime, String endTime) {
+ return statDataVDMapper.getUnbalance(lineList,startTime,endTime);
+ }
+
/**
* 计算标准差
*/
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/DayDataServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/DayDataServiceImpl.java
index b5ac1c617..92e851c1f 100644
--- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/DayDataServiceImpl.java
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/DayDataServiceImpl.java
@@ -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;
+ }
}