zbj//1.单位指标告警统计_月统计 算法
This commit is contained in:
@@ -0,0 +1,132 @@
|
||||
package com.njcn.prepare.harmonic.pojo.po;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 区域告警统计(月)
|
||||
* @TableName r_stat_area_alarm_count_m
|
||||
*/
|
||||
@Data
|
||||
@TableName("r_stat_area_alarm_count_m")
|
||||
public class RStatAreaAlarmCountM {
|
||||
|
||||
/**
|
||||
* 单位ID
|
||||
*/
|
||||
@MppMultiId(value = "org_no")
|
||||
private String orgNo;
|
||||
|
||||
/**
|
||||
* 生成数据的时间,每月统计一次
|
||||
*/
|
||||
@MppMultiId(value = "data_date")
|
||||
private Date dataDate;
|
||||
|
||||
/**
|
||||
* 数据类型(0:主网 1:配网)
|
||||
*/
|
||||
@MppMultiId(value = "data_type")
|
||||
private String dataType;
|
||||
|
||||
/**
|
||||
* 电压偏差告警情况(0:否 1:是)
|
||||
*/
|
||||
@TableField(value = "vdev_alarm_info")
|
||||
private Integer vdevAlarmInfo;
|
||||
|
||||
/**
|
||||
* 电压偏差告警超标占比
|
||||
*/
|
||||
@TableField(value = "vdev_alarm_ratio")
|
||||
private Float vdevAlarmRatio;
|
||||
|
||||
/**
|
||||
* 频率偏差告警情况(0:否 1:是)
|
||||
*/
|
||||
@TableField(value = "freq_alarm_info")
|
||||
private Integer freqAlarmInfo;
|
||||
|
||||
/**
|
||||
* 频率偏差告警超标占比
|
||||
*/
|
||||
@TableField(value = "freq_alarm_ratio")
|
||||
private Float freqAlarmRatio;
|
||||
|
||||
/**
|
||||
* 三相电压不平衡度告警情况(0:否 1:是)
|
||||
*/
|
||||
@TableField(value = "unbalance_alarm_info")
|
||||
private Integer unbalanceAlarmInfo;
|
||||
|
||||
/**
|
||||
* 三相电压不平衡度告警超标占比
|
||||
*/
|
||||
@TableField(value = "unbalance_alarm_ratio")
|
||||
private Float unbalanceAlarmRatio;
|
||||
|
||||
/**
|
||||
* 谐波电压告警情况(0:否 1:是)
|
||||
*/
|
||||
@TableField(value = "v_alarm_info")
|
||||
private Integer vAlarmInfo;
|
||||
|
||||
/**
|
||||
* 谐波电压告警超标占比
|
||||
*/
|
||||
@TableField(value = "v_alarm_ratio")
|
||||
private Float vAlarmRatio;
|
||||
|
||||
/**
|
||||
* 闪变告警情况(0:否 1:是)
|
||||
*/
|
||||
@TableField(value = "flicker_alarm_info")
|
||||
private Integer flickerAlarmInfo;
|
||||
|
||||
/**
|
||||
* 闪变告警超标占比
|
||||
*/
|
||||
@TableField(value = "flicker_alarm_ratio")
|
||||
private Float flickerAlarmRatio;
|
||||
|
||||
/**
|
||||
* 电压暂降告警情况(0:否 1:是)
|
||||
*/
|
||||
@TableField(value = "sag_alarm_info")
|
||||
private Integer sagAlarmInfo;
|
||||
|
||||
/**
|
||||
* 电压暂降告警平均发生次数
|
||||
*/
|
||||
@TableField(value = "sag_alarm_avg_count")
|
||||
private Integer sagAlarmAvgCount;
|
||||
|
||||
/**
|
||||
* 短时中断告警情况(0:否 1:是)
|
||||
*/
|
||||
@TableField(value = "interrupt_alarm_info")
|
||||
private Integer interruptAlarmInfo;
|
||||
|
||||
/**
|
||||
* 短时中断告警平均发生次数
|
||||
*/
|
||||
@TableField(value = "interrupt_alarm_avg_count")
|
||||
private Integer interruptAlarmAvgCount;
|
||||
|
||||
/**
|
||||
* 稳态指标评级结果(0 较差 1中等 2较好)
|
||||
*/
|
||||
@TableField(value = "harmonic_type_grade")
|
||||
private Integer harmonicTypeGrade;
|
||||
|
||||
/**
|
||||
* 暂态指标评级结果(0 较差 1中等 2较好)
|
||||
*/
|
||||
@TableField(value = "event_type_grade")
|
||||
private Integer eventTypeGrade;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,136 @@
|
||||
package com.njcn.prepare.harmonic.pojo.po;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 区域告警统计(月)
|
||||
* @TableName r_stat_area_alarm_count_m
|
||||
*/
|
||||
@Data
|
||||
@TableName("r_stat_area_alarm_count_m")
|
||||
public class RStatAreaAlarmCountMPO {
|
||||
|
||||
/**
|
||||
* 单位ID
|
||||
*/
|
||||
@MppMultiId(value = "org_no")
|
||||
private String orgNo;
|
||||
|
||||
/**
|
||||
* 生成数据的时间,每月统计一次
|
||||
*/
|
||||
@MppMultiId(value = "data_date")
|
||||
private Date dataDate;
|
||||
|
||||
/**
|
||||
* 数据类型(0:主网 1:配网)
|
||||
*/
|
||||
@MppMultiId(value = "data_type")
|
||||
private String dataType;
|
||||
|
||||
/**
|
||||
* 电压偏差告警情况(0:否 1:是)
|
||||
*/
|
||||
@TableField(value = "vdev_alarm_info")
|
||||
private Integer vdevAlarmInfo;
|
||||
|
||||
/**
|
||||
* 电压偏差告警超标占比
|
||||
*/
|
||||
@TableField(value = "vdev_alarm_ratio")
|
||||
private Float vdevAlarmRatio;
|
||||
|
||||
/**
|
||||
* 频率偏差告警情况(0:否 1:是)
|
||||
*/
|
||||
@TableField(value = "freq_alarm_info")
|
||||
private Integer freqAlarmInfo;
|
||||
|
||||
/**
|
||||
* 频率偏差告警超标占比
|
||||
*/
|
||||
@TableField(value = "freq_alarm_ratio")
|
||||
private Float freqAlarmRatio;
|
||||
|
||||
/**
|
||||
* 三相电压不平衡度告警情况(0:否 1:是)
|
||||
*/
|
||||
@TableField(value = "unbalance_alarm_info")
|
||||
private Integer unbalanceAlarmInfo;
|
||||
|
||||
/**
|
||||
* 三相电压不平衡度告警超标占比
|
||||
*/
|
||||
@TableField(value = "unbalance_alarm_ratio")
|
||||
private Float unbalanceAlarmRatio;
|
||||
|
||||
/**
|
||||
* 谐波电压告警情况(0:否 1:是)
|
||||
*/
|
||||
@TableField(value = "v_alarm_info")
|
||||
private Integer vAlarmInfo;
|
||||
|
||||
/**
|
||||
* 谐波电压告警超标占比
|
||||
*/
|
||||
@TableField(value = "v_alarm_ratio")
|
||||
private Float vAlarmRatio;
|
||||
|
||||
/**
|
||||
* 闪变告警情况(0:否 1:是)
|
||||
*/
|
||||
@TableField(value = "flicker_alarm_info")
|
||||
private Integer flickerAlarmInfo;
|
||||
|
||||
/**
|
||||
* 闪变告警超标占比
|
||||
*/
|
||||
@TableField(value = "flicker_alarm_ratio")
|
||||
private Float flickerAlarmRatio;
|
||||
|
||||
/**
|
||||
* 电压暂降告警情况(0:否 1:是)
|
||||
*/
|
||||
@TableField(value = "sag_alarm_info")
|
||||
private Integer sagAlarmInfo;
|
||||
|
||||
/**
|
||||
* 电压暂降告警平均发生次数
|
||||
*/
|
||||
@TableField(value = "sag_alarm_avg_count")
|
||||
private Integer sagAlarmAvgCount;
|
||||
|
||||
/**
|
||||
* 短时中断告警情况(0:否 1:是)
|
||||
*/
|
||||
@TableField(value = "interrupt_alarm_info")
|
||||
private Integer interruptAlarmInfo;
|
||||
|
||||
/**
|
||||
* 短时中断告警平均发生次数
|
||||
*/
|
||||
@TableField(value = "interrupt_alarm_avg_count")
|
||||
private Integer interruptAlarmAvgCount;
|
||||
|
||||
/**
|
||||
* 稳态指标评级结果(0 较差 1中等 2较好)
|
||||
*/
|
||||
@TableField(value = "harmonic_type_grade")
|
||||
private Integer harmonicTypeGrade;
|
||||
|
||||
/**
|
||||
* 暂态指标评级结果(0 较差 1中等 2较好)
|
||||
*/
|
||||
@TableField(value = "event_type_grade")
|
||||
private Integer eventTypeGrade;
|
||||
|
||||
private Float wtCount;
|
||||
|
||||
private Float ztCount;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.njcn.prepare.harmonic.mapper.mysql.newalgorithm;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.po.RStatAreaAlarmCountM;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* Description:
|
||||
* 接口文档访问地址:http://serverIP:port/swagger-ui.html
|
||||
* Date: 2022/12/13 15:39【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Mapper
|
||||
public interface RStatAreaAlarmCountMPOMapper extends MppBaseMapper<RStatAreaAlarmCountM> {
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.newalgorithm;
|
||||
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||
import com.njcn.prepare.harmonic.pojo.po.RStatAreaAlarmCountM;
|
||||
|
||||
/**
|
||||
* @author zbj
|
||||
* @since 2023-06-14
|
||||
*/
|
||||
|
||||
public interface RStatAreaAlarmCountMPOService extends IMppService<RStatAreaAlarmCountM> {
|
||||
}
|
||||
@@ -4,26 +4,29 @@ import cn.hutool.core.date.DateUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
|
||||
import com.njcn.device.pms.pojo.po.RMpMonitorAlarmCountM;
|
||||
import com.njcn.harmonic.pojo.po.*;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RMpMonitorAlarmCountMMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RMpTargetWarnDMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.po.RMpEventDetailDNewPO;
|
||||
import com.njcn.prepare.harmonic.pojo.po.RStatPwAlarmCountWPO;
|
||||
import com.njcn.prepare.harmonic.pojo.po.RStatZwAlarmCountWPO;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RAlarmCountService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatEventVoltageService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatPwAlarmCountWPOService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatZwAlarmCountWPOService;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgMMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.po.*;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.*;
|
||||
import com.njcn.system.api.DicDataFeignClient;
|
||||
import com.njcn.system.enums.DicDataEnum;
|
||||
import com.njcn.system.enums.DicDataTypeEnum;
|
||||
import com.njcn.system.pojo.po.DictData;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.time.DayOfWeek;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -39,10 +42,18 @@ public class RAlarmCountServiceImpl implements RAlarmCountService {
|
||||
|
||||
private final RMpTargetWarnDMapper rMpTargetWarnDMapper;
|
||||
|
||||
private final RMpMonitorAlarmCountMMapper rMpMonitorAlarmCountMMapper;
|
||||
|
||||
private final RStatZwAlarmCountWPOService rStatZwAlarmCountWPOService;
|
||||
|
||||
private final RStatPwAlarmCountWPOService rStatPwAlarmCountWPOService;
|
||||
|
||||
private final RStatAreaAlarmCountMPOService rStatAreaAlarmCountMPOService;
|
||||
|
||||
private final DicDataFeignClient dicDataFeignClient;
|
||||
|
||||
private final RStatOrgMMapper rStatOrgMMapper;
|
||||
|
||||
@Override
|
||||
public void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
|
||||
switch (type) {
|
||||
@@ -134,9 +145,9 @@ public class RAlarmCountServiceImpl implements RAlarmCountService {
|
||||
|
||||
List<RMpTargetWarnDPO> rMpTargetWarnDPOList = rMpTargetWarnDMapper.selectList(rMpTargetWarnDPOQueryWrapper);
|
||||
|
||||
//获取告警监测点数
|
||||
long count = rMpTargetWarnDPOList.stream().filter(alarm -> alarm.getIsWarn() == 1).count();
|
||||
|
||||
|
||||
RStatPwAlarmCountWPO rStatPwAlarmCountWPO = new RStatPwAlarmCountWPO();
|
||||
rStatPwAlarmCountWPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatPwAlarmCountWPO.setDataDate(localDate);
|
||||
@@ -157,66 +168,529 @@ public class RAlarmCountServiceImpl implements RAlarmCountService {
|
||||
|
||||
//月表
|
||||
public void rAlarmCountMHandler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
|
||||
List<RStatAreaAlarmCountMPO> rStatAreaAlarmCountMPOS = new ArrayList<>();
|
||||
List<RStatAreaAlarmCountM> result = new ArrayList<>();
|
||||
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
|
||||
//获取日期
|
||||
Date localDate = DateUtil.parse(dataDate);
|
||||
|
||||
/*获取数据类型*/
|
||||
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
|
||||
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
|
||||
QueryWrapper<RMpMonitorAlarmCountMPO> rMpMonitorAlarmCountMQueryWrapper = new QueryWrapper<>();
|
||||
//org表
|
||||
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
|
||||
|
||||
data.forEach(deptGetChildrenMoreDTO -> {
|
||||
|
||||
/*主网*/
|
||||
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
|
||||
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
|
||||
List<String> collect1 = lineBaseList.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
|
||||
//日表
|
||||
QueryWrapper<RMpTargetWarnDPO> rMpTargetWarnDPOQueryWrapper = new QueryWrapper<>();
|
||||
rMpTargetWarnDPOQueryWrapper.clear();
|
||||
rMpTargetWarnDPOQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')", dataDate.substring(0, 7));
|
||||
|
||||
List<RMpTargetWarnDPO> rMpTargetWarnDPOList = rMpTargetWarnDMapper.selectList(rMpTargetWarnDPOQueryWrapper);
|
||||
|
||||
//月表
|
||||
rMpMonitorAlarmCountMQueryWrapper.clear();
|
||||
rMpMonitorAlarmCountMQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')", dataDate.substring(0, 7)).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
List<RMpMonitorAlarmCountMPO> rMpMonitorAlarmCountMPOS = rMpMonitorAlarmCountMMapper.selectList(rMpMonitorAlarmCountMQueryWrapper);
|
||||
|
||||
//org表
|
||||
rStatOrgMPOQueryWrapper.clear();
|
||||
rStatOrgMPOQueryWrapper.select("effective_measurement_accrued").
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')", dataDate.substring(0, 7)).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper);
|
||||
|
||||
//所有告警次数集合
|
||||
Map<String, Long> resultCount = new HashMap<>();
|
||||
long vdevAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getVdevAlarmInfo() == 1).count();
|
||||
long freqAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getFreqAlarmInfo() == 1).count();
|
||||
long unbalanceAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getUnbalanceAlarmInfo() == 1).count();
|
||||
long vAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getVAlarmInfo() == 1).count();
|
||||
long flickerAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getFlickerAlarmInfo() == 1).count();
|
||||
long sagAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getSagAlarmInfo() == 1).count();
|
||||
long interruptAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getInterruptAlarmInfo() == 1).count();
|
||||
if (vdevAlarmInfoCount != 0){
|
||||
resultCount.put("vdevAlarmInfo",vdevAlarmInfoCount);
|
||||
}
|
||||
if (freqAlarmInfoCount!=0){
|
||||
resultCount.put("freqAlarmInfo",freqAlarmInfoCount);
|
||||
}
|
||||
if (unbalanceAlarmInfoCount!=0){
|
||||
resultCount.put("unbalanceAlarmInfo",unbalanceAlarmInfoCount);
|
||||
}
|
||||
if (vAlarmInfoCount!=0){
|
||||
resultCount.put("vAlarmInfo",vAlarmInfoCount);
|
||||
}
|
||||
if (flickerAlarmInfoCount!=0){
|
||||
resultCount.put("flickerAlarmInfo",flickerAlarmInfoCount);
|
||||
}
|
||||
if (sagAlarmInfoCount!=0){
|
||||
resultCount.put("sagAlarmInfo",sagAlarmInfoCount);
|
||||
}
|
||||
if (interruptAlarmInfoCount!=0){
|
||||
resultCount.put("interruptAlarmInfo",interruptAlarmInfoCount);
|
||||
}
|
||||
|
||||
|
||||
//获取电压暂降告警次数
|
||||
long sagCount = rMpTargetWarnDPOList.stream().filter(alarm -> alarm.getIsSagWarn() == 1).count();
|
||||
//获取电压暂降监测点数(id去重)
|
||||
long sagMCount = rMpTargetWarnDPOList.stream().filter(obj -> obj.getIsSagWarn() == 1).map(obj -> obj.getMeasurementPointId()).distinct().count();
|
||||
|
||||
//获取短时中断告警次数
|
||||
long iaaCount = rMpTargetWarnDPOList.stream().filter(alarm -> alarm.getIsInterruptWarn() == 1).count();
|
||||
//获取短时中断监测点数(id去重)
|
||||
long iaaMCount = rMpTargetWarnDPOList.stream().filter(obj -> obj.getIsInterruptWarn() == 1).map(obj -> obj.getMeasurementPointId()).distinct().count();
|
||||
|
||||
//获取在线监测点数
|
||||
int size = rMpTargetWarnDPOList.size();
|
||||
//获取稳态告警监测点数
|
||||
long wtCount = rMpMonitorAlarmCountMPOS.stream()
|
||||
.filter(obj -> obj.getVdevAlarmInfo() == 1 || obj.getFreqAlarmInfo() == 1 || obj.getUnbalanceAlarmInfo() == 1
|
||||
|| obj.getVAlarmInfo() == 1 || obj.getFlickerAlarmInfo() == 1).count();
|
||||
//获取暂态告警监测点数
|
||||
long ztCount = rMpMonitorAlarmCountMPOS.stream()
|
||||
.filter(obj -> obj.getSagAlarmInfo() == 1 || obj.getInterruptAlarmInfo() == 1).count();
|
||||
|
||||
RStatAreaAlarmCountMPO rStatAreaAlarmCountMPO = new RStatAreaAlarmCountMPO();
|
||||
rStatAreaAlarmCountMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatAreaAlarmCountMPO.setDataDate(localDate);
|
||||
rStatAreaAlarmCountMPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
rStatAreaAlarmCountMPO.setVdevAlarmInfo(resultCount.containsKey("vdevAlarmInfo") ? 1 : 0);
|
||||
rStatAreaAlarmCountMPO.setFreqAlarmInfo(resultCount.containsKey("freqAlarmInfo") ? 1 : 0);
|
||||
rStatAreaAlarmCountMPO.setUnbalanceAlarmInfo(resultCount.containsKey("unbalanceAlarmInfo") ? 1 : 0);
|
||||
rStatAreaAlarmCountMPO.setVAlarmInfo(resultCount.containsKey("vAlarmInfo") ? 1 : 0);
|
||||
rStatAreaAlarmCountMPO.setFlickerAlarmInfo(resultCount.containsKey("flickerAlarmInfo") ? 1 : 0);
|
||||
rStatAreaAlarmCountMPO.setSagAlarmInfo(resultCount.containsKey("sagAlarmInfo") ? 1 : 0);
|
||||
rStatAreaAlarmCountMPO.setInterruptAlarmInfo(resultCount.containsKey("interruptAlarmInfo") ? 1 : 0);
|
||||
|
||||
//稳态指标评级结果(0 较差 1中等 2较好)/ 暂态指标评级结果(0 较差 1中等 2较好)
|
||||
if (size == 0) {
|
||||
rStatAreaAlarmCountMPO.setWtCount(0.00f);
|
||||
rStatAreaAlarmCountMPO.setZtCount(0.00f);
|
||||
} else {
|
||||
Float wtf = wtCount / Float.parseFloat(size + "");
|
||||
rStatAreaAlarmCountMPO.setWtCount(wtf);
|
||||
Float ztf = ztCount / Float.parseFloat(size + "");
|
||||
rStatAreaAlarmCountMPO.setZtCount(ztf);
|
||||
}
|
||||
|
||||
if (sagMCount == 0) {
|
||||
rStatAreaAlarmCountMPO.setSagAlarmAvgCount(0);
|
||||
} else {
|
||||
Float f = sagCount / Float.parseFloat(sagMCount + "");
|
||||
rStatAreaAlarmCountMPO.setSagAlarmAvgCount(f.intValue());
|
||||
}
|
||||
if (iaaMCount == 0) {
|
||||
rStatAreaAlarmCountMPO.setInterruptAlarmAvgCount(0);
|
||||
} else {
|
||||
Float f = iaaCount / Float.parseFloat(iaaMCount + "");
|
||||
rStatAreaAlarmCountMPO.setInterruptAlarmAvgCount(f.intValue());
|
||||
}
|
||||
|
||||
if (Objects.isNull(rStatOrgMPO)) {
|
||||
rStatAreaAlarmCountMPO.setVdevAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setFreqAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setUnbalanceAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setVAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setFlickerAlarmRatio(1.00f);
|
||||
} else {
|
||||
if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) {
|
||||
rStatAreaAlarmCountMPO.setVdevAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setFreqAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setUnbalanceAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setVAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setFlickerAlarmRatio(1.00f);
|
||||
} else {
|
||||
//电压偏差告警占比
|
||||
if (resultCount.containsKey("vdevAlarmInfo")) {
|
||||
String value = df.format(resultCount.get("vdevAlarmInfo") / rStatOrgMPO.getEffectiveMeasurementAccrued());
|
||||
rStatAreaAlarmCountMPO.setVdevAlarmRatio(Float.parseFloat(value));
|
||||
} else {
|
||||
rStatAreaAlarmCountMPO.setVdevAlarmRatio(1.00f);
|
||||
}
|
||||
//频率偏差告警占比
|
||||
if (resultCount.containsKey("freqAlarmInfo")) {
|
||||
String value = df.format(resultCount.get("freqAlarmInfo") / rStatOrgMPO.getEffectiveMeasurementAccrued());
|
||||
rStatAreaAlarmCountMPO.setFreqAlarmRatio(Float.parseFloat(value));
|
||||
} else {
|
||||
rStatAreaAlarmCountMPO.setFreqAlarmRatio(1.00f);
|
||||
}
|
||||
//三项电压不平衡度告警占比
|
||||
if (resultCount.containsKey("unbalanceAlarmInfo")) {
|
||||
String value = df.format(resultCount.get("unbalanceAlarmInfo") / rStatOrgMPO.getEffectiveMeasurementAccrued());
|
||||
rStatAreaAlarmCountMPO.setUnbalanceAlarmRatio(Float.parseFloat(value));
|
||||
} else {
|
||||
rStatAreaAlarmCountMPO.setUnbalanceAlarmRatio(1.00f);
|
||||
}
|
||||
//谐波电压告警占比
|
||||
if (resultCount.containsKey("vAlarmInfo")) {
|
||||
String value = df.format(resultCount.get("vAlarmInfo") / rStatOrgMPO.getEffectiveMeasurementAccrued());
|
||||
rStatAreaAlarmCountMPO.setVAlarmRatio(Float.parseFloat(value));
|
||||
} else {
|
||||
rStatAreaAlarmCountMPO.setVAlarmRatio(1.00f);
|
||||
}
|
||||
//闪変告警占比
|
||||
if (resultCount.containsKey("flickerAlarmInfo")) {
|
||||
String value = df.format(resultCount.get("flickerAlarmInfo") / rStatOrgMPO.getEffectiveMeasurementAccrued());
|
||||
rStatAreaAlarmCountMPO.setFlickerAlarmRatio(Float.parseFloat(value));
|
||||
} else {
|
||||
rStatAreaAlarmCountMPO.setFlickerAlarmRatio(1.00f);
|
||||
}
|
||||
}
|
||||
}
|
||||
rStatAreaAlarmCountMPOS.add(rStatAreaAlarmCountMPO);
|
||||
}
|
||||
|
||||
|
||||
/*配网*/
|
||||
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())) {
|
||||
List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
|
||||
List<String> collect1 = pwMonitorIds.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
|
||||
//日表
|
||||
QueryWrapper<RMpTargetWarnDPO> rMpTargetWarnDPOQueryWrapper = new QueryWrapper<>();
|
||||
rMpTargetWarnDPOQueryWrapper.clear();
|
||||
rMpTargetWarnDPOQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')", dataDate.substring(0, 7));
|
||||
|
||||
List<RMpTargetWarnDPO> rMpTargetWarnDPOList = rMpTargetWarnDMapper.selectList(rMpTargetWarnDPOQueryWrapper);
|
||||
|
||||
//月表
|
||||
rMpMonitorAlarmCountMQueryWrapper.clear();
|
||||
rMpMonitorAlarmCountMQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')", dataDate.substring(0, 7)).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
|
||||
List<RMpMonitorAlarmCountMPO> rMpMonitorAlarmCountMPOS = rMpMonitorAlarmCountMMapper.selectList(rMpMonitorAlarmCountMQueryWrapper);
|
||||
|
||||
//org表
|
||||
rStatOrgMPOQueryWrapper.clear();
|
||||
rStatOrgMPOQueryWrapper.select("effective_measurement_accrued").
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')", dataDate.substring(0, 7)).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
|
||||
RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper);
|
||||
|
||||
//所有告警次数集合
|
||||
Map<String, Long> resultCount = new HashMap<>();
|
||||
long vdevAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getVdevAlarmInfo() == 1).count();
|
||||
long freqAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getFreqAlarmInfo() == 1).count();
|
||||
long unbalanceAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getUnbalanceAlarmInfo() == 1).count();
|
||||
long vAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getVAlarmInfo() == 1).count();
|
||||
long flickerAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getFlickerAlarmInfo() == 1).count();
|
||||
long sagAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getSagAlarmInfo() == 1).count();
|
||||
long interruptAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getInterruptAlarmInfo() == 1).count();
|
||||
if (vdevAlarmInfoCount != 0){
|
||||
resultCount.put("vdevAlarmInfo",vdevAlarmInfoCount);
|
||||
}
|
||||
if (freqAlarmInfoCount!=0){
|
||||
resultCount.put("freqAlarmInfo",freqAlarmInfoCount);
|
||||
}
|
||||
if (unbalanceAlarmInfoCount!=0){
|
||||
resultCount.put("unbalanceAlarmInfo",unbalanceAlarmInfoCount);
|
||||
}
|
||||
if (vAlarmInfoCount!=0){
|
||||
resultCount.put("vAlarmInfo",vAlarmInfoCount);
|
||||
}
|
||||
if (flickerAlarmInfoCount!=0){
|
||||
resultCount.put("flickerAlarmInfo",flickerAlarmInfoCount);
|
||||
}
|
||||
if (sagAlarmInfoCount!=0){
|
||||
resultCount.put("sagAlarmInfo",sagAlarmInfoCount);
|
||||
}
|
||||
if (interruptAlarmInfoCount!=0){
|
||||
resultCount.put("interruptAlarmInfo",interruptAlarmInfoCount);
|
||||
}
|
||||
|
||||
//获取电压暂降告警次数
|
||||
long sagCount = rMpTargetWarnDPOList.stream().filter(alarm -> alarm.getIsSagWarn() == 1).count();
|
||||
//获取电压暂降监测点数(id去重)
|
||||
long sagMCount = rMpTargetWarnDPOList.stream().filter(obj -> obj.getIsSagWarn() == 1).map(obj -> obj.getMeasurementPointId()).distinct().count();
|
||||
|
||||
//获取短时中断告警次数
|
||||
long iaaCount = rMpTargetWarnDPOList.stream().filter(alarm -> alarm.getIsInterruptWarn() == 1).count();
|
||||
//获取短时中断监测点数(id去重)
|
||||
long iaaMCount = rMpTargetWarnDPOList.stream().filter(obj -> obj.getIsInterruptWarn() == 1).map(obj -> obj.getMeasurementPointId()).distinct().count();
|
||||
|
||||
//获取在线监测点数
|
||||
int size = rMpTargetWarnDPOList.size();
|
||||
//获取稳态告警监测点数
|
||||
long wtCount = rMpMonitorAlarmCountMPOS.stream()
|
||||
.filter(obj -> obj.getVdevAlarmInfo() == 1 || obj.getFreqAlarmInfo() == 1 || obj.getUnbalanceAlarmInfo() == 1
|
||||
|| obj.getVAlarmInfo() == 1 || obj.getFlickerAlarmInfo() == 1).count();
|
||||
//获取暂态告警监测点数
|
||||
long ztCount = rMpMonitorAlarmCountMPOS.stream()
|
||||
.filter(obj -> obj.getSagAlarmInfo() == 1 || obj.getInterruptAlarmInfo() == 1).count();
|
||||
|
||||
RStatAreaAlarmCountMPO rStatAreaAlarmCountMPO = new RStatAreaAlarmCountMPO();
|
||||
rStatAreaAlarmCountMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatAreaAlarmCountMPO.setDataDate(localDate);
|
||||
rStatAreaAlarmCountMPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
|
||||
rStatAreaAlarmCountMPO.setVdevAlarmInfo(resultCount.containsKey("vdevAlarmInfo") ? 1 : 0);
|
||||
rStatAreaAlarmCountMPO.setFreqAlarmInfo(resultCount.containsKey("freqAlarmInfo") ? 1 : 0);
|
||||
rStatAreaAlarmCountMPO.setUnbalanceAlarmInfo(resultCount.containsKey("unbalanceAlarmInfo") ? 1 : 0);
|
||||
rStatAreaAlarmCountMPO.setVAlarmInfo(resultCount.containsKey("vAlarmInfo") ? 1 : 0);
|
||||
rStatAreaAlarmCountMPO.setFlickerAlarmInfo(resultCount.containsKey("flickerAlarmInfo") ? 1 : 0);
|
||||
rStatAreaAlarmCountMPO.setSagAlarmInfo(resultCount.containsKey("sagAlarmInfo") ? 1 : 0);
|
||||
rStatAreaAlarmCountMPO.setInterruptAlarmInfo(resultCount.containsKey("interruptAlarmInfo") ? 1 : 0);
|
||||
|
||||
//稳态指标评级结果(0 较差 1中等 2较好)/ 暂态指标评级结果(0 较差 1中等 2较好)
|
||||
if (size == 0) {
|
||||
rStatAreaAlarmCountMPO.setWtCount(0.00f);
|
||||
rStatAreaAlarmCountMPO.setZtCount(0.00f);
|
||||
} else {
|
||||
Float wtf = wtCount / Float.parseFloat(size + "");
|
||||
rStatAreaAlarmCountMPO.setWtCount(wtf);
|
||||
Float ztf = ztCount / Float.parseFloat(size + "");
|
||||
rStatAreaAlarmCountMPO.setZtCount(ztf);
|
||||
}
|
||||
|
||||
if (sagMCount == 0) {
|
||||
rStatAreaAlarmCountMPO.setSagAlarmAvgCount(0);
|
||||
} else {
|
||||
Float f = sagCount / Float.parseFloat(sagMCount + "");
|
||||
rStatAreaAlarmCountMPO.setSagAlarmAvgCount(f.intValue());
|
||||
}
|
||||
if (iaaMCount == 0) {
|
||||
rStatAreaAlarmCountMPO.setInterruptAlarmAvgCount(0);
|
||||
} else {
|
||||
Float f = iaaCount / Float.parseFloat(iaaMCount + "");
|
||||
rStatAreaAlarmCountMPO.setInterruptAlarmAvgCount(f.intValue());
|
||||
}
|
||||
|
||||
if (Objects.isNull(rStatOrgMPO)) {
|
||||
rStatAreaAlarmCountMPO.setVdevAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setFreqAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setUnbalanceAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setVAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setFlickerAlarmRatio(1.00f);
|
||||
} else {
|
||||
if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) {
|
||||
rStatAreaAlarmCountMPO.setVdevAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setFreqAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setUnbalanceAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setVAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setFlickerAlarmRatio(1.00f);
|
||||
} else {
|
||||
//电压偏差告警占比
|
||||
if (resultCount.containsKey("vdevAlarmInfo")) {
|
||||
String value = df.format(resultCount.get("vdevAlarmInfo") / rStatOrgMPO.getEffectiveMeasurementAccrued());
|
||||
rStatAreaAlarmCountMPO.setVdevAlarmRatio(Float.parseFloat(value));
|
||||
} else {
|
||||
rStatAreaAlarmCountMPO.setVdevAlarmRatio(1.00f);
|
||||
}
|
||||
//频率偏差告警占比
|
||||
if (resultCount.containsKey("freqAlarmInfo")) {
|
||||
String value = df.format(resultCount.get("freqAlarmInfo") / rStatOrgMPO.getEffectiveMeasurementAccrued());
|
||||
rStatAreaAlarmCountMPO.setFreqAlarmRatio(Float.parseFloat(value));
|
||||
} else {
|
||||
rStatAreaAlarmCountMPO.setFreqAlarmRatio(1.00f);
|
||||
}
|
||||
//三项电压不平衡度告警占比
|
||||
if (resultCount.containsKey("unbalanceAlarmInfo")) {
|
||||
String value = df.format(resultCount.get("unbalanceAlarmInfo") / rStatOrgMPO.getEffectiveMeasurementAccrued());
|
||||
rStatAreaAlarmCountMPO.setUnbalanceAlarmRatio(Float.parseFloat(value));
|
||||
} else {
|
||||
rStatAreaAlarmCountMPO.setUnbalanceAlarmRatio(1.00f);
|
||||
}
|
||||
//谐波电压告警占比
|
||||
if (resultCount.containsKey("vAlarmInfo")) {
|
||||
String value = df.format(resultCount.get("vAlarmInfo") / rStatOrgMPO.getEffectiveMeasurementAccrued());
|
||||
rStatAreaAlarmCountMPO.setVAlarmRatio(Float.parseFloat(value));
|
||||
} else {
|
||||
rStatAreaAlarmCountMPO.setVAlarmRatio(1.00f);
|
||||
}
|
||||
//闪変告警占比
|
||||
if (resultCount.containsKey("flickerAlarmInfo")) {
|
||||
String value = df.format(resultCount.get("flickerAlarmInfo") / rStatOrgMPO.getEffectiveMeasurementAccrued());
|
||||
rStatAreaAlarmCountMPO.setFlickerAlarmRatio(Float.parseFloat(value));
|
||||
} else {
|
||||
rStatAreaAlarmCountMPO.setFlickerAlarmRatio(1.00f);
|
||||
}
|
||||
}
|
||||
}
|
||||
rStatAreaAlarmCountMPOS.add(rStatAreaAlarmCountMPO);
|
||||
}
|
||||
});
|
||||
|
||||
if (!CollectionUtils.isEmpty(rStatAreaAlarmCountMPOS)) {
|
||||
//主网集合
|
||||
//稳态数据排序(大->小)
|
||||
List<RStatAreaAlarmCountMPO> zwwtResult = rStatAreaAlarmCountMPOS.stream().filter(obj -> obj.getDataType().equals(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId())).sorted(Comparator.comparing(RStatAreaAlarmCountMPO::getWtCount).reversed()).collect(Collectors.toList());
|
||||
List<RStatAreaAlarmCountMPO> zwztResult = rStatAreaAlarmCountMPOS.stream().filter(obj -> obj.getDataType().equals(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId())).sorted(Comparator.comparing(RStatAreaAlarmCountMPO::getZtCount).reversed()).collect(Collectors.toList());
|
||||
List<RStatAreaAlarmCountMPO> zwResult = new ArrayList<>();
|
||||
//配网集合
|
||||
List<RStatAreaAlarmCountMPO> pwwtResult = rStatAreaAlarmCountMPOS.stream().filter(obj -> obj.getDataType().equals(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId())).sorted(Comparator.comparing(RStatAreaAlarmCountMPO::getWtCount).reversed()).collect(Collectors.toList());
|
||||
List<RStatAreaAlarmCountMPO> pwztResult = rStatAreaAlarmCountMPOS.stream().filter(obj -> obj.getDataType().equals(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId())).sorted(Comparator.comparing(RStatAreaAlarmCountMPO::getZtCount).reversed()).collect(Collectors.toList());
|
||||
List<RStatAreaAlarmCountMPO> pwResult = new ArrayList<>();
|
||||
|
||||
int i = 0;
|
||||
//主网稳态
|
||||
if (!CollectionUtils.isEmpty(zwwtResult)) {
|
||||
if (zwwtResult.size() == 1) {
|
||||
zwwtResult.get(0).setHarmonicTypeGrade(0);
|
||||
} else if (zwwtResult.size() == 2) {
|
||||
zwwtResult.get(0).setHarmonicTypeGrade(0);
|
||||
zwwtResult.get(1).setHarmonicTypeGrade(1);
|
||||
} else {
|
||||
i = (int) (zwwtResult.size() * 0.3);
|
||||
if (i < 1) {
|
||||
i = 1;
|
||||
}
|
||||
//循环较差的
|
||||
for (int i1 = 0; i1 < i; i1++) {
|
||||
zwwtResult.get(i1).setHarmonicTypeGrade(0);
|
||||
}
|
||||
//循环较好的
|
||||
List<RStatAreaAlarmCountMPO> list = zwwtResult.subList(zwwtResult.size() - i, zwwtResult.size());
|
||||
for (RStatAreaAlarmCountMPO rStatAreaAlarmCountMPO : list) {
|
||||
rStatAreaAlarmCountMPO.setHarmonicTypeGrade(2);
|
||||
}
|
||||
//循环中等的
|
||||
for (RStatAreaAlarmCountMPO rStatAreaAlarmCountMPO : zwwtResult) {
|
||||
if (Objects.isNull(rStatAreaAlarmCountMPO.getHarmonicTypeGrade())) {
|
||||
rStatAreaAlarmCountMPO.setHarmonicTypeGrade(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
zwResult.addAll(zwwtResult);
|
||||
}
|
||||
//主网暂态
|
||||
if (!CollectionUtils.isEmpty(zwztResult)) {
|
||||
if (zwztResult.size() == 1) {
|
||||
zwztResult.get(0).setEventTypeGrade(0);
|
||||
} else if (zwztResult.size() == 2) {
|
||||
zwztResult.get(0).setEventTypeGrade(0);
|
||||
zwztResult.get(1).setEventTypeGrade(1);
|
||||
} else {
|
||||
i = (int) (zwztResult.size() * 0.3);
|
||||
if (i < 1) {
|
||||
i = 1;
|
||||
}
|
||||
//循环较差的
|
||||
for (int i1 = 0; i1 < i; i1++) {
|
||||
zwztResult.get(i1).setEventTypeGrade(0);
|
||||
}
|
||||
//循环较好的
|
||||
List<RStatAreaAlarmCountMPO> list = zwztResult.subList(zwztResult.size() - i, zwztResult.size());
|
||||
for (RStatAreaAlarmCountMPO rStatAreaAlarmCountMPO : list) {
|
||||
rStatAreaAlarmCountMPO.setEventTypeGrade(2);
|
||||
}
|
||||
//循环中等的
|
||||
for (RStatAreaAlarmCountMPO rStatAreaAlarmCountMPO : zwztResult) {
|
||||
if (Objects.isNull(rStatAreaAlarmCountMPO.getEventTypeGrade())) {
|
||||
rStatAreaAlarmCountMPO.setEventTypeGrade(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (RStatAreaAlarmCountMPO po : zwResult) {
|
||||
for (RStatAreaAlarmCountMPO po1 : zwztResult) {
|
||||
if (Objects.equals(po.getOrgNo(), po1.getOrgNo())) {
|
||||
po.setEventTypeGrade(po1.getEventTypeGrade());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//配网稳态
|
||||
if (!CollectionUtils.isEmpty(pwwtResult)) {
|
||||
if (pwwtResult.size() == 1) {
|
||||
pwwtResult.get(0).setHarmonicTypeGrade(0);
|
||||
} else if (pwwtResult.size() == 2) {
|
||||
pwwtResult.get(0).setHarmonicTypeGrade(0);
|
||||
pwwtResult.get(1).setHarmonicTypeGrade(1);
|
||||
} else {
|
||||
i = (int) (pwwtResult.size() * 0.3);
|
||||
if (i < 1) {
|
||||
i = 1;
|
||||
}
|
||||
//循环较差的
|
||||
for (int i1 = 0; i1 < i; i1++) {
|
||||
pwwtResult.get(i1).setHarmonicTypeGrade(0);
|
||||
}
|
||||
//循环较好的
|
||||
List<RStatAreaAlarmCountMPO> list = pwwtResult.subList(pwwtResult.size() - i, pwwtResult.size());
|
||||
for (RStatAreaAlarmCountMPO rStatAreaAlarmCountMPO : list) {
|
||||
rStatAreaAlarmCountMPO.setHarmonicTypeGrade(2);
|
||||
}
|
||||
//循环中等的
|
||||
for (RStatAreaAlarmCountMPO rStatAreaAlarmCountMPO : pwwtResult) {
|
||||
if (Objects.isNull(rStatAreaAlarmCountMPO.getHarmonicTypeGrade())) {
|
||||
rStatAreaAlarmCountMPO.setHarmonicTypeGrade(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
pwResult.addAll(pwwtResult);
|
||||
}
|
||||
//配网暂态
|
||||
if (!CollectionUtils.isEmpty(pwztResult)) {
|
||||
if (pwztResult.size() == 1) {
|
||||
pwztResult.get(0).setEventTypeGrade(0);
|
||||
} else if (pwztResult.size() == 2) {
|
||||
pwztResult.get(0).setEventTypeGrade(0);
|
||||
pwztResult.get(1).setEventTypeGrade(1);
|
||||
} else {
|
||||
i = (int) (pwztResult.size() * 0.3);
|
||||
if (i < 1) {
|
||||
i = 1;
|
||||
}
|
||||
//循环较差的
|
||||
for (int i1 = 0; i1 < i; i1++) {
|
||||
pwztResult.get(i1).setEventTypeGrade(0);
|
||||
}
|
||||
//循环较好的
|
||||
List<RStatAreaAlarmCountMPO> list = pwztResult.subList(pwztResult.size() - i, pwztResult.size());
|
||||
for (RStatAreaAlarmCountMPO rStatAreaAlarmCountMPO : list) {
|
||||
rStatAreaAlarmCountMPO.setEventTypeGrade(2);
|
||||
}
|
||||
//循环中等的
|
||||
for (RStatAreaAlarmCountMPO rStatAreaAlarmCountMPO : pwztResult) {
|
||||
if (Objects.isNull(rStatAreaAlarmCountMPO.getHarmonicTypeGrade())) {
|
||||
rStatAreaAlarmCountMPO.setEventTypeGrade(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (RStatAreaAlarmCountMPO po : pwResult) {
|
||||
for (RStatAreaAlarmCountMPO po1 : pwztResult) {
|
||||
if (Objects.equals(po.getOrgNo(), po1.getOrgNo())) {
|
||||
po.setEventTypeGrade(po1.getEventTypeGrade());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
zwResult.addAll(pwResult);
|
||||
|
||||
//拷贝
|
||||
for (RStatAreaAlarmCountMPO po : zwResult) {
|
||||
RStatAreaAlarmCountM m = new RStatAreaAlarmCountM();
|
||||
BeanUtils.copyProperties(po,m);
|
||||
result.add(m);
|
||||
}
|
||||
|
||||
if (!CollectionUtils.isEmpty(result)) {
|
||||
rStatAreaAlarmCountMPOService.saveOrUpdateBatchByMultiId(result, 500);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//获取监测点类型 1/2/3类字典id
|
||||
private String getmeasurementType(Integer k, Map<String, DictData> lineSortMap) {
|
||||
String value = "";
|
||||
switch (k) {
|
||||
case 1:
|
||||
value = lineSortMap.get(DicDataEnum.ONE_LINE.getCode()).getId();
|
||||
break;
|
||||
case 2:
|
||||
value = lineSortMap.get(DicDataEnum.TWO_LINE.getCode()).getId();
|
||||
break;
|
||||
case 3:
|
||||
value = lineSortMap.get(DicDataEnum.THREE_LINE.getCode()).getId();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
//获取暂态各个类型发生的监测点数量及发生次数
|
||||
private List<Integer> getTransientStatisData(DictData dictData, List<RMpEventDetailDNewPO> list) {
|
||||
List<Integer> result = new ArrayList<>(2);
|
||||
Integer value = 0;
|
||||
Integer count = 0;
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.VOLTAGE_DIP.getCode())) {
|
||||
value = Integer.valueOf(list.stream().filter(temp -> temp.getSagTimes() > 0).count() + "");
|
||||
count = Integer.valueOf(list.stream().mapToInt(RMpEventDetailDNewPO::getSagTimes).sum() + "");
|
||||
}
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.VOLTAGE_RISE.getCode())) {
|
||||
value = Integer.valueOf(list.stream().filter(temp -> temp.getSwellTimes() > 0).count() + "");
|
||||
count = Integer.valueOf(list.stream().mapToInt(RMpEventDetailDNewPO::getSwellTimes).sum() + "");
|
||||
}
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.SHORT_INTERRUPTIONS.getCode())) {
|
||||
value = Integer.valueOf(list.stream().filter(temp -> temp.getInterruptTimes() > 0).count() + "");
|
||||
count = Integer.valueOf(list.stream().mapToInt(RMpEventDetailDNewPO::getInterruptTimes).sum() + "");
|
||||
}
|
||||
result.add(value);
|
||||
result.add(count);
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
//获取暂态各个类型发生的监测点数量
|
||||
private Integer getStatisData(DictData dictData, String voltage, List<RMpEventDetailMNewPO> list) {
|
||||
Integer value = 0;
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.VOLTAGE_DIP.getCode())) {
|
||||
value = Integer.valueOf(list.stream().filter(temp -> temp.getSagTimes() > 0 && Objects.equals(temp.getVoltage(), voltage)).count() + "");
|
||||
}
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.VOLTAGE_RISE.getCode())) {
|
||||
value = Integer.valueOf(list.stream().filter(temp -> temp.getSwellTimes() > 0 && Objects.equals(temp.getVoltage(), voltage)).count() + "");
|
||||
}
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.SHORT_INTERRUPTIONS.getCode())) {
|
||||
value = Integer.valueOf(list.stream().filter(temp -> temp.getInterruptTimes() > 0 && Objects.equals(temp.getVoltage(), voltage)).count() + "");
|
||||
}
|
||||
|
||||
return value;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatAreaAlarmCountMPOMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatZwAlarmCountWPOMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.po.RStatAreaAlarmCountM;
|
||||
import com.njcn.prepare.harmonic.pojo.po.RStatAreaAlarmCountMPO;
|
||||
import com.njcn.prepare.harmonic.pojo.po.RStatZwAlarmCountWPO;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatAreaAlarmCountMPOService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatZwAlarmCountWPOService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 终端检测监督
|
||||
* </p>
|
||||
*
|
||||
* @author zbj
|
||||
* @since 2023-06-14
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class RStatAreaAlarmCountMPOServiceImpl extends MppServiceImpl<RStatAreaAlarmCountMPOMapper, RStatAreaAlarmCountM> implements RStatAreaAlarmCountMPOService {
|
||||
}
|
||||
Reference in New Issue
Block a user