1.修改全景稳态告警数据不一致问题 2.初步修改在线监测功能
This commit is contained in:
@@ -66,6 +66,10 @@ public interface RStatLimitTargetDMapper extends BaseMapper<RStatLimitTargetDPO>
|
||||
@Param("startTime") String startTime,
|
||||
@Param("endTime") String endTime);
|
||||
|
||||
List<RStatLimitTargetVO> getSumTargetDetails2(@Param("ids") List<String> ids,
|
||||
@Param("startTime") String startTime,
|
||||
@Param("endTime") String endTime);
|
||||
|
||||
List<RStatLimitTargetCountVO> getSumTargetCountDayes(@Param("ids") List<String> ids,
|
||||
@Param("startTime") String startTime,
|
||||
@Param("endTime") String endTime);
|
||||
|
||||
@@ -491,6 +491,149 @@
|
||||
GROUP BY time_id,my_index) A
|
||||
GROUP BY A.lineId
|
||||
</select>
|
||||
|
||||
<select id="getSumTargetDetails2" resultType="com.njcn.harmonic.pojo.vo.RStatLimitTargetVO">
|
||||
SELECT
|
||||
A.lineId,
|
||||
SUM(
|
||||
CASE
|
||||
WHEN A.freqDevOvertime > 0
|
||||
THEN 1
|
||||
ELSE 0
|
||||
END
|
||||
) freqDevOvertime,
|
||||
SUM(
|
||||
CASE
|
||||
WHEN A.flickerOvertime > 0
|
||||
THEN 1
|
||||
ELSE 0
|
||||
END
|
||||
) flickerOvertime,
|
||||
SUM(
|
||||
CASE
|
||||
WHEN A.voltageDevOvertime > 0
|
||||
THEN 1
|
||||
ELSE 0
|
||||
END
|
||||
) voltageDevOvertime,
|
||||
SUM(
|
||||
CASE
|
||||
WHEN A.ubalanceOvertime > 0
|
||||
THEN 1
|
||||
ELSE 0
|
||||
END
|
||||
) ubalanceOvertime,
|
||||
SUM(
|
||||
CASE
|
||||
WHEN A.uaberranceOvertime > 0
|
||||
THEN 1
|
||||
ELSE 0
|
||||
END
|
||||
) uaberranceOvertime,
|
||||
SUM(
|
||||
CASE
|
||||
WHEN A.iNegOvertime > 0
|
||||
THEN 1
|
||||
ELSE 0
|
||||
END
|
||||
) iNegOvertime,
|
||||
SUM(
|
||||
CASE
|
||||
WHEN A.uharmOvertime > 0
|
||||
THEN 1
|
||||
ELSE 0
|
||||
END
|
||||
) uharmOvertime,
|
||||
SUM(
|
||||
CASE
|
||||
WHEN A.iharmOvertime > 0
|
||||
THEN 1
|
||||
ELSE 0
|
||||
END
|
||||
) iharmOvertime,
|
||||
SUM(
|
||||
CASE
|
||||
WHEN A.inuharmOvertime > 0
|
||||
THEN 1
|
||||
ELSE 0
|
||||
END
|
||||
) inuharmOvertime,
|
||||
SUM(
|
||||
CASE
|
||||
WHEN A.allOvertime > 0
|
||||
THEN 1
|
||||
ELSE 0
|
||||
END
|
||||
) allOvertime,
|
||||
SUM(
|
||||
CASE
|
||||
WHEN A.flickerAllTime > 0
|
||||
THEN 1
|
||||
ELSE 0
|
||||
END
|
||||
) flickerAllTime
|
||||
FROM
|
||||
(SELECT
|
||||
DISTINCT my_index AS lineId,
|
||||
SUM(freq_dev_overtime) AS freqDevOvertime,
|
||||
SUM(flicker_overtime) AS flickerOvertime,
|
||||
SUM(voltage_dev_overtime) AS voltageDevOvertime,
|
||||
SUM(ubalance_overtime) AS ubalanceOvertime,
|
||||
SUM(uaberrance_overtime) AS uaberranceOvertime,
|
||||
SUM(i_neg_overtime) AS iNegOvertime,
|
||||
SUM(flicker_all_time) AS flickerAllTime,
|
||||
SUM(
|
||||
IF(
|
||||
(
|
||||
uaberrance_overtime + uharm_2_overtime + uharm_3_overtime + uharm_4_overtime + uharm_5_overtime + uharm_6_overtime + uharm_7_overtime + uharm_8_overtime + uharm_9_overtime + uharm_10_overtime + uharm_11_overtime + uharm_12_overtime + uharm_13_overtime + uharm_14_overtime + uharm_15_overtime + uharm_16_overtime + uharm_17_overtime + uharm_18_overtime + uharm_19_overtime + uharm_20_overtime + uharm_21_overtime + uharm_22_overtime + uharm_23_overtime + uharm_24_overtime + uharm_25_overtime
|
||||
) > 0,
|
||||
1,
|
||||
0
|
||||
)
|
||||
) AS uharmOvertime,
|
||||
SUM(
|
||||
IF(
|
||||
(
|
||||
iharm_2_overtime + iharm_3_overtime + iharm_4_overtime + iharm_5_overtime + iharm_6_overtime + iharm_7_overtime + iharm_8_overtime + iharm_9_overtime + iharm_10_overtime + iharm_11_overtime + iharm_12_overtime + iharm_13_overtime + iharm_14_overtime + iharm_15_overtime + iharm_16_overtime + iharm_17_overtime + iharm_18_overtime + iharm_19_overtime + iharm_20_overtime + iharm_21_overtime + iharm_22_overtime + iharm_23_overtime + iharm_24_overtime + iharm_25_overtime
|
||||
) > 0,
|
||||
1,
|
||||
0
|
||||
)
|
||||
) AS iharmOvertime,
|
||||
SUM(
|
||||
IF(
|
||||
(
|
||||
inuharm_1_overtime + inuharm_2_overtime + inuharm_3_overtime + inuharm_4_overtime + inuharm_5_overtime + inuharm_6_overtime + inuharm_7_overtime + inuharm_8_overtime + inuharm_9_overtime + inuharm_10_overtime + inuharm_11_overtime + inuharm_12_overtime + inuharm_13_overtime + inuharm_14_overtime + inuharm_15_overtime + inuharm_16_overtime
|
||||
) > 0,
|
||||
1,
|
||||
0
|
||||
)
|
||||
) AS inuharmOvertime,
|
||||
SUM(
|
||||
IF(
|
||||
(
|
||||
freq_dev_overtime + flicker_overtime + voltage_dev_overtime + ubalance_overtime + uaberrance_overtime + i_neg_overtime + uharm_2_overtime + uharm_3_overtime + uharm_4_overtime + uharm_5_overtime + uharm_6_overtime + uharm_7_overtime + uharm_8_overtime + uharm_9_overtime + uharm_10_overtime + uharm_11_overtime + uharm_12_overtime + uharm_13_overtime + uharm_14_overtime + uharm_15_overtime + uharm_16_overtime + uharm_17_overtime + uharm_18_overtime + uharm_19_overtime + uharm_20_overtime + uharm_21_overtime + uharm_22_overtime + uharm_23_overtime + uharm_24_overtime + uharm_25_overtime + iharm_2_overtime + iharm_3_overtime + iharm_4_overtime + iharm_5_overtime + iharm_6_overtime + iharm_7_overtime + iharm_8_overtime + iharm_9_overtime + iharm_10_overtime + iharm_11_overtime + iharm_12_overtime + iharm_13_overtime + iharm_14_overtime + iharm_15_overtime + iharm_16_overtime + iharm_17_overtime + iharm_18_overtime + iharm_19_overtime + iharm_20_overtime + iharm_21_overtime + iharm_22_overtime + iharm_23_overtime + iharm_24_overtime + iharm_25_overtime + inuharm_1_overtime + inuharm_2_overtime + inuharm_3_overtime + inuharm_4_overtime + inuharm_5_overtime + inuharm_6_overtime + inuharm_7_overtime + inuharm_8_overtime + inuharm_9_overtime + inuharm_10_overtime + inuharm_11_overtime + inuharm_12_overtime + inuharm_13_overtime + inuharm_14_overtime + inuharm_15_overtime + inuharm_16_overtime
|
||||
) > 0,
|
||||
1,
|
||||
0
|
||||
)
|
||||
) AS allOvertime
|
||||
FROM
|
||||
r_stat_limit_target_d
|
||||
<where>
|
||||
and time_id between #{startTime} and #{endTime}
|
||||
<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>
|
||||
</where>
|
||||
GROUP BY my_index) A
|
||||
GROUP BY A.lineId
|
||||
</select>
|
||||
|
||||
|
||||
<select id="getSumTargetCountDayes" resultType="com.njcn.harmonic.pojo.vo.RStatLimitTargetCountVO">
|
||||
SELECT
|
||||
A.lineId,
|
||||
|
||||
@@ -349,31 +349,51 @@ public class GridServiceImpl implements IGridService {
|
||||
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());
|
||||
//List<Double> d = list1.stream().map(o -> o.getFreqDev().doubleValue()).collect(Collectors.toList());
|
||||
List<Double> d = list1.stream()
|
||||
.map(o -> o.getFreqDev().doubleValue())
|
||||
.filter(value -> value >= -7.5 && value <= 7.5)
|
||||
.collect(Collectors.toList());
|
||||
double avg = d.stream().collect(Collectors.averagingDouble(x -> x));
|
||||
vo1.setAvg(PubUtils.doubleRound(2, avg));
|
||||
vo1.setSd(targetSd(d, avg));
|
||||
}
|
||||
if (CollUtil.isNotEmpty(list2)) {
|
||||
List<Double> d = list2.stream().map(o -> o.getVuDev().doubleValue()).collect(Collectors.toList());
|
||||
//List<Double> d = list2.stream().map(o -> o.getVuDev().doubleValue()).collect(Collectors.toList());
|
||||
List<Double> d = list2.stream()
|
||||
.map(o -> o.getVuDev().doubleValue())
|
||||
.filter(value -> value >= -90 && value <= 50)
|
||||
.collect(Collectors.toList());
|
||||
double avg = d.stream().collect(Collectors.averagingDouble(x -> x));
|
||||
vo2.setAvg(PubUtils.doubleRound(2, avg));
|
||||
vo2.setSd(targetSd(d, avg));
|
||||
}
|
||||
if (CollUtil.isNotEmpty(list3)) {
|
||||
List<Double> d = list3.stream().map(o -> o.getVThd().doubleValue()).collect(Collectors.toList());
|
||||
//List<Double> d = list3.stream().map(o -> o.getVThd().doubleValue()).collect(Collectors.toList());
|
||||
List<Double> d = list3.stream()
|
||||
.map(o -> o.getVThd().doubleValue())
|
||||
.filter(value -> value >= 0 && value <= 50)
|
||||
.collect(Collectors.toList());
|
||||
double avg = d.stream().collect(Collectors.averagingDouble(x -> x));
|
||||
vo3.setAvg(PubUtils.doubleRound(2, avg));
|
||||
vo3.setSd(targetSd(d, avg));
|
||||
}
|
||||
if (CollUtil.isNotEmpty(list5)) {
|
||||
List<Double> d = list1.stream().map(o -> o.getVUnbalance().doubleValue()).collect(Collectors.toList());
|
||||
//List<Double> d = list5.stream().map(o -> o.getVUnbalance().doubleValue()).collect(Collectors.toList());
|
||||
List<Double> d = list5.stream()
|
||||
.map(o -> o.getVUnbalance().doubleValue())
|
||||
.filter(value -> value >= 0 && value <= 40)
|
||||
.collect(Collectors.toList());
|
||||
double avg = d.stream().collect(Collectors.averagingDouble(x -> x));
|
||||
vo4.setAvg(PubUtils.doubleRound(2, avg));
|
||||
vo4.setSd(targetSd(d, avg));
|
||||
}
|
||||
if (CollUtil.isNotEmpty(list4)) {
|
||||
List<Double> d = list4.stream().map(RStatDataPltDPO::getPlt).collect(Collectors.toList());
|
||||
//List<Double> d = list4.stream().map(RStatDataPltDPO::getPlt).collect(Collectors.toList());
|
||||
List<Double> d = list4.stream()
|
||||
.map(RStatDataPltDPO::getPlt)
|
||||
.filter(value -> value >= 0 && value <= 20)
|
||||
.collect(Collectors.toList());
|
||||
double avg = d.stream().collect(Collectors.averagingDouble(x -> x));
|
||||
vo5.setAvg(PubUtils.doubleRound(2, avg));
|
||||
vo5.setSd(targetSd(d, avg));
|
||||
@@ -481,20 +501,25 @@ public class GridServiceImpl implements IGridService {
|
||||
List<EvaluationLevelVo.EvaluationDetail> result = new ArrayList<>();
|
||||
DeptGetLineParam deptGetLineParam = new DeptGetLineParam();
|
||||
deptGetLineParam.setDeptId(param.getDeptIndex());
|
||||
deptGetLineParam.setLineRunFlag(0);
|
||||
List<DeptGetChildrenMoreDTO> list = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData();
|
||||
List<DeptGetChildrenMoreDTO> list = commTerminalGeneralClient.deptGetAllLine(deptGetLineParam).getData();
|
||||
//获取监测点集合
|
||||
Map<String, List<String>> lineMap = this.getLineMap(list, param.getIsUpToGrid(), null);
|
||||
List<String> lineList = lineMap.values().stream()
|
||||
.flatMap(List::stream)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
Map<String, List<String>> lineMap2 = this.getLineMap(list, param.getIsUpToGrid(), null,0);
|
||||
List<String> lineList2 = lineMap2.values().stream()
|
||||
.flatMap(List::stream)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
List<RStatLimitTargetVO> overLimitList = new ArrayList<>();
|
||||
if (CollUtil.isNotEmpty(lineList)) {
|
||||
//获取监测点越限集合
|
||||
overLimitList .addAll(rStatLimitTargetDMapper.getSumTargetDetails(lineList,
|
||||
overLimitList.addAll(rStatLimitTargetDMapper.getSumTargetDetails2(lineList,
|
||||
param.getStartTime(),
|
||||
param.getEndTime())) ;
|
||||
param.getEndTime()));
|
||||
}
|
||||
//获取部门
|
||||
List<DeptDTO> deptList = deptFeignClient.getDepSonDetailByDeptId(param.getDeptIndex()).getData();
|
||||
@@ -541,12 +566,13 @@ public class GridServiceImpl implements IGridService {
|
||||
if (lineMap.containsKey(item.getId())) {
|
||||
if (CollUtil.isNotEmpty(lineMap.get(item.getId()))) {
|
||||
List<String> ll = lineMap.get(item.getId());
|
||||
detail.setOnlineNum(ll.size());
|
||||
List<String> lll = lineMap2.get(item.getId());
|
||||
detail.setOnlineNum(lll.size());
|
||||
//筛选当前部门下监测点的超标数据
|
||||
List<RStatLimitTargetVO> list2 = overLimitList.stream().filter(it -> ll.contains(it.getLineId())).collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(list2)) {
|
||||
//筛选出9项指标(电压偏差、频率偏差、电压总谐波畸变率、电压闪变、三相电压不平衡度、负序电流、谐波电流、间谐波电压、谐波电压)超标监测点
|
||||
long allNum = list2.stream().filter(o -> o.getAllOvertime() > 0 || o.getFlickerAllTime() > 0).count();
|
||||
long allNum = list2.stream().filter(o -> o.getAllOvertime() > 0 || o.getFlickerAllTime() > 0 ).count();
|
||||
detail.setOverNum((int) allNum);
|
||||
detail.setOverRatio(PubUtils.doubleRound(2, detail.getOverNum() * 100.0 / detail.getOnlineNum()));
|
||||
//筛选出电压偏差超标监测点
|
||||
@@ -599,6 +625,9 @@ public class GridServiceImpl implements IGridService {
|
||||
Integer day9 = list2.stream().max(Comparator.comparingInt(RStatLimitTargetVO::getInuharmOvertime)).get().getInuharmOvertime();
|
||||
detail9.setOverNum((int) num9);
|
||||
detail9.setOverDay(day9);
|
||||
} else {
|
||||
detail.setOverNum(0);
|
||||
detail.setOverRatio(0.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1043,4 +1072,35 @@ public class GridServiceImpl implements IGridService {
|
||||
return map;
|
||||
}
|
||||
|
||||
public Map<String, List<String>> getLineMap(List<DeptGetChildrenMoreDTO> list, Integer type, String voltage, Integer runFlag) {
|
||||
Map<String, List<String>> map = new HashMap<>();
|
||||
list.forEach(it -> {
|
||||
// 默认不过滤
|
||||
Predicate<LineDevGetDTO> uploadFilter = item -> true;
|
||||
if (Objects.equals(type, 1)) {
|
||||
uploadFilter = item -> Objects.equals(item.getIsUpToGrid(), 1);
|
||||
}
|
||||
|
||||
Predicate<LineDevGetDTO> voltageFilter = item -> true;
|
||||
if (!Objects.isNull(voltage) && !Objects.equals(voltage, "")) {
|
||||
voltageFilter = item -> Objects.equals(item.getVoltageLevel(), voltage);
|
||||
}
|
||||
|
||||
Predicate<LineDevGetDTO> runFlagFilter = item -> true;
|
||||
if (!Objects.isNull(runFlag)) {
|
||||
voltageFilter = item -> Objects.equals(item.getLineRunFlag(), runFlag);
|
||||
}
|
||||
|
||||
// 组合两个过滤条件
|
||||
Predicate<LineDevGetDTO> combinedFilter = uploadFilter.and(voltageFilter);
|
||||
Predicate<LineDevGetDTO> combinedFilter2 = combinedFilter.and(runFlagFilter);
|
||||
map.put(it.getUnitId(), it.getLineBaseList().stream()
|
||||
.filter(combinedFilter2)
|
||||
.map(LineDevGetDTO::getPointId)
|
||||
.distinct()
|
||||
.collect(Collectors.toList()));
|
||||
});
|
||||
return map;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -47,7 +47,10 @@ import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
Reference in New Issue
Block a user