监测点指标告警日统计算法
This commit is contained in:
@@ -0,0 +1,22 @@
|
|||||||
|
package com.njcn.prepare.harmonic.pojo.dto;
|
||||||
|
|
||||||
|
import com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpTargetDiffDPO;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 类的介绍:
|
||||||
|
*
|
||||||
|
* @author xuyang
|
||||||
|
* @version 1.0.0
|
||||||
|
* @createTime 2023/5/9 10:00
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class RMpTargetWarnDDTO extends RMpTargetDiffDPO {
|
||||||
|
|
||||||
|
private Integer isEffective;
|
||||||
|
|
||||||
|
private Integer isHarmonic;
|
||||||
|
|
||||||
|
private Integer isEvent;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -39,12 +39,9 @@ public class RMpTargetWarnDController extends BaseController {
|
|||||||
|
|
||||||
private final RMpTargetWarnDService rMpTargetWarnDService;
|
private final RMpTargetWarnDService rMpTargetWarnDService;
|
||||||
|
|
||||||
/**
|
|
||||||
* @author xuyang
|
|
||||||
*/
|
|
||||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.ADD)
|
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.ADD)
|
||||||
@PostMapping("/alarmDay")
|
@PostMapping("/alarmDay")
|
||||||
@ApiOperation("监测点指标告警日统计")
|
@ApiOperation("监测点指标告警日统计(新)")
|
||||||
@ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true)
|
@ApiImplicitParam(name = "lineParam", value = "算法通用查询参数", required = true)
|
||||||
public HttpResult<Boolean> alarmDay(@RequestBody @Validated LineParam lineParam) {
|
public HttpResult<Boolean> alarmDay(@RequestBody @Validated LineParam lineParam) {
|
||||||
String methodDescribe = getMethodDescribe("alarmDay");
|
String methodDescribe = getMethodDescribe("alarmDay");
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package com.njcn.prepare.harmonic.mapper.mysql.day;
|
|||||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||||
import com.njcn.harmonic.pojo.po.day.RStatDataVDPO;
|
import com.njcn.harmonic.pojo.po.day.RStatDataVDPO;
|
||||||
import com.njcn.prepare.harmonic.pojo.dto.AlarmDetailDayDTO;
|
import com.njcn.prepare.harmonic.pojo.dto.AlarmDetailDayDTO;
|
||||||
|
import com.njcn.prepare.harmonic.pojo.dto.RMpTargetWarnDDTO;
|
||||||
import com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpTargetDiffDPO;
|
import com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpTargetDiffDPO;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
@@ -22,4 +23,5 @@ public interface RStatDataVDMapper extends MppBaseMapper<RStatDataVDPO> {
|
|||||||
*/
|
*/
|
||||||
List<AlarmDetailDayDTO> getAvgDayData(@Param("startTime") String time, @Param("endTime") String endTime);
|
List<AlarmDetailDayDTO> getAvgDayData(@Param("startTime") String time, @Param("endTime") String endTime);
|
||||||
|
|
||||||
|
List<RMpTargetWarnDDTO> getTargetWarnD(@Param("time") String time);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
`time`,
|
`time`,
|
||||||
line_id
|
line_id
|
||||||
) B
|
) B
|
||||||
on A.time = B.time and A.lineId = B.lineId
|
on A.lineId = B.lineId
|
||||||
left join
|
left join
|
||||||
(
|
(
|
||||||
select
|
select
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
`time`,
|
`time`,
|
||||||
line_id
|
line_id
|
||||||
) C
|
) C
|
||||||
on A.time = C.time and A.lineId = C.lineId
|
on A.lineId = C.lineId
|
||||||
left join
|
left join
|
||||||
(
|
(
|
||||||
select
|
select
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
where
|
where
|
||||||
data_date = #{time}
|
data_date = #{time}
|
||||||
) D
|
) D
|
||||||
on A.time = D.dataDate and A.lineId = D.lineId
|
on A.lineId = D.lineId
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="getAvgDayData" resultType="com.njcn.prepare.harmonic.pojo.dto.AlarmDetailDayDTO">
|
<select id="getAvgDayData" resultType="com.njcn.prepare.harmonic.pojo.dto.AlarmDetailDayDTO">
|
||||||
@@ -125,9 +125,7 @@
|
|||||||
`time` between #{startTime} and #{endTime} and value_type = 'MAX'
|
`time` between #{startTime} and #{endTime} and value_type = 'MAX'
|
||||||
group by `time`,line_id
|
group by `time`,line_id
|
||||||
) B
|
) B
|
||||||
on
|
on A.lineId = B.lineId
|
||||||
A.time = B.time
|
|
||||||
and A.lineId = B.lineId
|
|
||||||
left join
|
left join
|
||||||
(
|
(
|
||||||
select
|
select
|
||||||
@@ -140,9 +138,7 @@
|
|||||||
`time` between #{startTime} and #{endTime} and value_type = 'MAX'
|
`time` between #{startTime} and #{endTime} and value_type = 'MAX'
|
||||||
group by `time`,line_id
|
group by `time`,line_id
|
||||||
) C
|
) C
|
||||||
on
|
on A.lineId = C.lineId
|
||||||
A.time = C.time
|
|
||||||
and A.lineId = C.lineId
|
|
||||||
left join
|
left join
|
||||||
(
|
(
|
||||||
select
|
select
|
||||||
@@ -155,9 +151,124 @@
|
|||||||
where
|
where
|
||||||
data_date between #{startTime} and #{endTime}
|
data_date between #{startTime} and #{endTime}
|
||||||
) D
|
) D
|
||||||
on
|
on A.lineId = D.lineId
|
||||||
A.time = D.dataDate and A.lineId = D.lineId
|
|
||||||
) Y
|
) Y
|
||||||
group by Y.lineId
|
group by Y.lineId
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="getTargetWarnD" resultType="com.njcn.prepare.harmonic.pojo.dto.RMpTargetWarnDDTO">
|
||||||
|
select
|
||||||
|
A.time,
|
||||||
|
A.lineId,
|
||||||
|
coalesce(A.vUnbalance, 0) vUnbalance,
|
||||||
|
coalesce(A.v, 0) vHarmonic,
|
||||||
|
coalesce(B.vlDev, 0) vlDev,
|
||||||
|
coalesce(B.freqDev, 0) freqDev,
|
||||||
|
coalesce(C.plt, 0) plt,
|
||||||
|
coalesce(D.sagTimes, 0) sagTimes,
|
||||||
|
coalesce(D.interruptTimes, 0) interruptTimes,
|
||||||
|
case when (E.rate > 0.95 and E.isUnusual = 1) then 1 else 0 end isEffective,
|
||||||
|
coalesce(F.isHarmonic, 0) isHarmonic,
|
||||||
|
case when (G.swellTimes > 0 or G.sagTimes > 0 or G.interruptTimes > 0) then 1 else 0 end isEvent
|
||||||
|
from
|
||||||
|
(
|
||||||
|
select
|
||||||
|
`time`,
|
||||||
|
line_id lineId,
|
||||||
|
max(v_unbalance) vUnbalance,
|
||||||
|
max(greatest(v_thd, v_1, v_2, v_3, v_4, v_5, v_6, v_7, v_8, v_9, v_10, v_11, v_12, v_13, v_14, v_15, v_16, v_17, v_18, v_19, v_20, v_21, v_22, v_23, v_24, v_25, v_26, v_27, v_28, v_29, v_30, v_31, v_32, v_33, v_34, v_35, v_36, v_37, v_38, v_39, v_40, v_41, v_42, v_43, v_44, v_45, v_46, v_47, v_48, v_49, v_50)) v
|
||||||
|
from
|
||||||
|
r_stat_data_v_d t0
|
||||||
|
where
|
||||||
|
`time` = #{time} and value_type = 'CP95'
|
||||||
|
group by
|
||||||
|
`time`,
|
||||||
|
line_id
|
||||||
|
) A
|
||||||
|
left join
|
||||||
|
(
|
||||||
|
select
|
||||||
|
`time`,
|
||||||
|
line_id lineId,
|
||||||
|
max(abs(vl_dev)) vlDev,
|
||||||
|
max(abs(freq_dev)) freqDev
|
||||||
|
from
|
||||||
|
r_stat_data_v_d t0
|
||||||
|
where
|
||||||
|
`time` = #{time} and value_type = 'MAX'
|
||||||
|
group by
|
||||||
|
`time`,
|
||||||
|
line_id
|
||||||
|
) B
|
||||||
|
on
|
||||||
|
A.lineId = B.lineId
|
||||||
|
left join
|
||||||
|
(
|
||||||
|
select
|
||||||
|
`time` ,
|
||||||
|
line_id lineId,
|
||||||
|
max(plt) plt
|
||||||
|
from
|
||||||
|
r_stat_data_plt_d
|
||||||
|
where
|
||||||
|
`time` = #{time} and value_type = 'MAX'
|
||||||
|
group by
|
||||||
|
`time`,
|
||||||
|
line_id
|
||||||
|
) C
|
||||||
|
on
|
||||||
|
A.lineId = C.lineId
|
||||||
|
left join
|
||||||
|
(
|
||||||
|
select
|
||||||
|
measurement_point_id lineId,
|
||||||
|
data_date dataDate,
|
||||||
|
sag_times sagTimes,
|
||||||
|
interrupt_times interruptTimes
|
||||||
|
from
|
||||||
|
r_mp_event_detail_d
|
||||||
|
where
|
||||||
|
data_date = #{time}
|
||||||
|
) D
|
||||||
|
on
|
||||||
|
A.lineId = D.lineId
|
||||||
|
left join
|
||||||
|
(
|
||||||
|
select
|
||||||
|
data_date dataDate,
|
||||||
|
measurement_point_id lineId,
|
||||||
|
data_integrity_rate rate,
|
||||||
|
is_unusual isUnusual
|
||||||
|
from
|
||||||
|
r_operating_monitor_d
|
||||||
|
where
|
||||||
|
data_date = #{time}
|
||||||
|
) E
|
||||||
|
on A.lineId = E.lineId
|
||||||
|
left join
|
||||||
|
(
|
||||||
|
select
|
||||||
|
measurement_point_id lineId,
|
||||||
|
is_harmonic isHarmonic
|
||||||
|
from
|
||||||
|
r_mp_part_harmonic_detail_d
|
||||||
|
where
|
||||||
|
data_date = #{time}
|
||||||
|
) F
|
||||||
|
on A.lineId = F.lineId
|
||||||
|
left join
|
||||||
|
(
|
||||||
|
select
|
||||||
|
measurement_point_id lineId,
|
||||||
|
swell_times swellTimes,
|
||||||
|
sag_times sagTimes,
|
||||||
|
interrupt_times interruptTimes
|
||||||
|
from
|
||||||
|
r_mp_event_detail_d
|
||||||
|
where
|
||||||
|
data_date = #{time}
|
||||||
|
) G
|
||||||
|
on A.lineId = G.lineId
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
@@ -3,22 +3,24 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.area;
|
|||||||
import com.baomidou.dynamic.datasource.annotation.DS;
|
import com.baomidou.dynamic.datasource.annotation.DS;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||||
|
import com.njcn.device.pq.api.LineFeignClient;
|
||||||
import com.njcn.harmonic.pojo.po.RMpTargetWarnDPO;
|
import com.njcn.harmonic.pojo.po.RMpTargetWarnDPO;
|
||||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RMpTargetWarnDMapper;
|
import com.njcn.prepare.harmonic.mapper.mysql.area.RMpTargetWarnDMapper;
|
||||||
import com.njcn.prepare.harmonic.mapper.mysql.day.RStatDataVDMapper;
|
import com.njcn.prepare.harmonic.mapper.mysql.day.RStatDataVDMapper;
|
||||||
import com.njcn.prepare.harmonic.pojo.dto.AlarmDetailDayDTO;
|
import com.njcn.prepare.harmonic.pojo.dto.AlarmDetailDayDTO;
|
||||||
|
import com.njcn.prepare.harmonic.pojo.dto.RMpTargetWarnDDTO;
|
||||||
import com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpTargetDiffDPO;
|
import com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpTargetDiffDPO;
|
||||||
import com.njcn.prepare.harmonic.pojo.param.LineParam;
|
import com.njcn.prepare.harmonic.pojo.param.LineParam;
|
||||||
import com.njcn.prepare.harmonic.service.mysql.area.RMpTargetWarnDService;
|
import com.njcn.prepare.harmonic.service.mysql.area.RMpTargetWarnDService;
|
||||||
import com.njcn.prepare.harmonic.service.mysql.line.AlarmDetailService;
|
import com.njcn.prepare.harmonic.service.mysql.line.AlarmDetailService;
|
||||||
import com.njcn.prepare.harmonic.utils.PublicUtil;
|
import com.njcn.prepare.harmonic.utils.PublicUtil;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.*;
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -32,6 +34,7 @@ import java.util.stream.Collectors;
|
|||||||
@Service
|
@Service
|
||||||
@DS("master")
|
@DS("master")
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
|
@Slf4j
|
||||||
public class RMpTargetWarnDServiceImpl extends MppServiceImpl<RMpTargetWarnDMapper, RMpTargetWarnDPO> implements RMpTargetWarnDService {
|
public class RMpTargetWarnDServiceImpl extends MppServiceImpl<RMpTargetWarnDMapper, RMpTargetWarnDPO> implements RMpTargetWarnDService {
|
||||||
|
|
||||||
|
|
||||||
@@ -42,6 +45,8 @@ public class RMpTargetWarnDServiceImpl extends MppServiceImpl<RMpTargetWarnDMapp
|
|||||||
|
|
||||||
private final RStatDataVDMapper rStatDataVDMapper;
|
private final RStatDataVDMapper rStatDataVDMapper;
|
||||||
|
|
||||||
|
private final LineFeignClient lineFeignClient;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param monitorIdList
|
* @param monitorIdList
|
||||||
* @param dataDate
|
* @param dataDate
|
||||||
@@ -69,51 +74,186 @@ public class RMpTargetWarnDServiceImpl extends MppServiceImpl<RMpTargetWarnDMapp
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void alarmDay(LineParam lineParam) {
|
public void alarmDay(LineParam lineParam) {
|
||||||
List<AlarmDetailDayDTO> rlList,uclList;
|
List<RMpTargetWarnDPO> list = new ArrayList<>();
|
||||||
//本年的rm值
|
//月处理
|
||||||
List<AlarmDetailDayDTO> rmList = alarmDetailService.getAvgDiffData(lineParam);
|
if (lineParam.getType() == 3){
|
||||||
//本年的CL值
|
int year = Integer.parseInt(lineParam.getDataDate().split("-")[0]);
|
||||||
List<AlarmDetailDayDTO> clList = rStatDataVDMapper.getAvgDayData(lineParam.getDataDate(), PublicUtil.getLastYearDay(lineParam.getDataDate()));
|
int month = Integer.parseInt(lineParam.getDataDate().split("-")[1]);
|
||||||
//本年的RL值
|
List<String> dayList = PublicUtil.getDayByMonth(year,month);
|
||||||
if (!CollectionUtils.isEmpty(rmList)){
|
for (String item : dayList) {
|
||||||
rlList = rmList.stream().map(item->{
|
log.info(item+"-->开始执行");
|
||||||
AlarmDetailDayDTO alarmDetailDayDTO = new AlarmDetailDayDTO();
|
List<RMpTargetWarnDPO> day = getData(item);
|
||||||
alarmDetailDayDTO.setLineId(item.getLineId());
|
if (!CollectionUtils.isEmpty(day)){
|
||||||
alarmDetailDayDTO.setVlDev(item.getVlDev()*3.3);
|
list.addAll(day);
|
||||||
alarmDetailDayDTO.setFreqDev(item.getFreqDev()*3.3);
|
}
|
||||||
alarmDetailDayDTO.setVUnbalance(item.getVUnbalance()*3.3);
|
}
|
||||||
alarmDetailDayDTO.setVHarmonic(item.getVHarmonic()*3.3);
|
|
||||||
alarmDetailDayDTO.setSagTimes(item.getSagTimes()*3.3);
|
|
||||||
alarmDetailDayDTO.setInterruptTimes(item.getInterruptTimes()*3.3);
|
|
||||||
return alarmDetailDayDTO;
|
|
||||||
}).collect(Collectors.toList());
|
|
||||||
}
|
}
|
||||||
//本年的UCL值
|
//日处理
|
||||||
if (!CollectionUtils.isEmpty(rmList) && !CollectionUtils.isEmpty(clList)){
|
else {
|
||||||
uclList = rmList.stream().map(map->clList.stream().filter(m-> Objects.equals(m.getLineId(),map.getLineId())).findFirst().map(m->{
|
list = getData(lineParam.getDataDate());
|
||||||
AlarmDetailDayDTO alarmDetailDayDTO = new AlarmDetailDayDTO();
|
}
|
||||||
alarmDetailDayDTO.setLineId(map.getLineId());
|
if (!CollectionUtils.isEmpty(list)){
|
||||||
alarmDetailDayDTO.setVlDev(m.getVlDev()+map.getVlDev()*3);
|
this.saveOrUpdateBatchByMultiId(list,50);
|
||||||
alarmDetailDayDTO.setFreqDev(m.getFreqDev()+map.getFreqDev()*3);
|
|
||||||
alarmDetailDayDTO.setVUnbalance(m.getVUnbalance()+map.getVUnbalance()*3);
|
|
||||||
alarmDetailDayDTO.setVHarmonic(m.getVHarmonic()+map.getVHarmonic()*3);
|
|
||||||
alarmDetailDayDTO.setSagTimes(m.getSagTimes()+map.getSagTimes()*3);
|
|
||||||
alarmDetailDayDTO.setInterruptTimes(m.getInterruptTimes()+map.getInterruptTimes()*3);
|
|
||||||
return alarmDetailDayDTO;
|
|
||||||
}).orElse(null)).filter(Objects::nonNull).collect(Collectors.toList());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
String yesterday = PublicUtil.getYesterday(lineParam.getDataDate());
|
|
||||||
List<RMpTargetDiffDPO> todayList = rStatDataVDMapper.getDayData(lineParam.getDataDate());
|
|
||||||
List<RMpTargetDiffDPO> yesterdayList = rStatDataVDMapper.getDayData(yesterday);
|
|
||||||
List<RMpTargetDiffDPO> theDayBeforeYesterday = rStatDataVDMapper.getDayData(PublicUtil.getYesterday(yesterday));
|
|
||||||
List<RMpTargetDiffDPO> threeDaysAgo = rStatDataVDMapper.getDayData(PublicUtil.getYesterday(PublicUtil.getYesterday(yesterday)));
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void alarmMonth(LineParam lineParam) {
|
public void alarmMonth(LineParam lineParam) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<RMpTargetWarnDPO> getData(String time){
|
||||||
|
List<RMpTargetWarnDPO> result = new ArrayList<>();
|
||||||
|
List<AlarmDetailDayDTO> rlList = new ArrayList<>(),uclList = new ArrayList<>();
|
||||||
|
//基础数据
|
||||||
|
String yesterday = PublicUtil.getYesterday(time);
|
||||||
|
List<RMpTargetWarnDDTO> todayList = rStatDataVDMapper.getTargetWarnD(time + " 00:00:00");
|
||||||
|
List<RMpTargetWarnDDTO> yesterdayList = rStatDataVDMapper.getTargetWarnD(yesterday + " 00:00:00");
|
||||||
|
List<RMpTargetWarnDDTO> theDayBeforeYesterday = rStatDataVDMapper.getTargetWarnD(PublicUtil.getYesterday(yesterday) + " 00:00:00");
|
||||||
|
List<RMpTargetWarnDDTO> threeDaysAgo = rStatDataVDMapper.getTargetWarnD(PublicUtil.getYesterday(PublicUtil.getYesterday(yesterday)) + " 00:00:00");
|
||||||
|
if (!CollectionUtils.isEmpty(todayList)){
|
||||||
|
Map<String,List<RMpTargetWarnDDTO>> map2 = new HashMap<>(),map3 = new HashMap<>(),map4 = new HashMap<>();
|
||||||
|
//本年的rm值
|
||||||
|
List<AlarmDetailDayDTO> rmList = alarmDetailService.getAvgDiffData(time);
|
||||||
|
//本年的CL值
|
||||||
|
List<AlarmDetailDayDTO> clList = rStatDataVDMapper.getAvgDayData(PublicUtil.getLastYearDay(time),time);
|
||||||
|
//本年的RL值
|
||||||
|
if (!CollectionUtils.isEmpty(rmList)){
|
||||||
|
rlList = rmList.stream().map(item->{
|
||||||
|
AlarmDetailDayDTO alarmDetailDayDTO = new AlarmDetailDayDTO();
|
||||||
|
alarmDetailDayDTO.setLineId(item.getLineId());
|
||||||
|
alarmDetailDayDTO.setVlDev(item.getVlDev()*3.3);
|
||||||
|
alarmDetailDayDTO.setFreqDev(item.getFreqDev()*3.3);
|
||||||
|
alarmDetailDayDTO.setVUnbalance(item.getVUnbalance()*3.3);
|
||||||
|
alarmDetailDayDTO.setVHarmonic(item.getVHarmonic()*3.3);
|
||||||
|
alarmDetailDayDTO.setPlt(item.getPlt()*3.3);
|
||||||
|
alarmDetailDayDTO.setSagTimes(item.getSagTimes()*3.3);
|
||||||
|
alarmDetailDayDTO.setInterruptTimes(item.getInterruptTimes()*3.3);
|
||||||
|
return alarmDetailDayDTO;
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
//本年的UCL值
|
||||||
|
if (!CollectionUtils.isEmpty(rmList) && !CollectionUtils.isEmpty(clList)){
|
||||||
|
uclList = rmList.stream().map(map->clList.stream().filter(m-> Objects.equals(m.getLineId(),map.getLineId())).findFirst().map(m->{
|
||||||
|
AlarmDetailDayDTO alarmDetailDayDTO = new AlarmDetailDayDTO();
|
||||||
|
alarmDetailDayDTO.setLineId(map.getLineId());
|
||||||
|
alarmDetailDayDTO.setVlDev(m.getVlDev()+map.getVlDev()*3);
|
||||||
|
alarmDetailDayDTO.setFreqDev(m.getFreqDev()+map.getFreqDev()*3);
|
||||||
|
alarmDetailDayDTO.setVUnbalance(m.getVUnbalance()+map.getVUnbalance()*3);
|
||||||
|
alarmDetailDayDTO.setVHarmonic(m.getVHarmonic()+map.getVHarmonic()*3);
|
||||||
|
alarmDetailDayDTO.setPlt(m.getPlt()+map.getPlt()*3);
|
||||||
|
alarmDetailDayDTO.setSagTimes(m.getSagTimes()+map.getSagTimes()*3);
|
||||||
|
alarmDetailDayDTO.setInterruptTimes(m.getInterruptTimes()+map.getInterruptTimes()*3);
|
||||||
|
return alarmDetailDayDTO;
|
||||||
|
}).orElse(null)).filter(Objects::nonNull).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
//数据处理
|
||||||
|
Map<String,List<RMpTargetWarnDDTO>> map1 = todayList.stream().collect(Collectors.groupingBy(RMpTargetWarnDDTO::getLineId));
|
||||||
|
if (!CollectionUtils.isEmpty(yesterdayList)){
|
||||||
|
map2 = yesterdayList.stream().collect(Collectors.groupingBy(RMpTargetWarnDDTO::getLineId));
|
||||||
|
}
|
||||||
|
if (!CollectionUtils.isEmpty(theDayBeforeYesterday)){
|
||||||
|
map3 = theDayBeforeYesterday.stream().collect(Collectors.groupingBy(RMpTargetWarnDDTO::getLineId));
|
||||||
|
}
|
||||||
|
if (!CollectionUtils.isEmpty(threeDaysAgo)){
|
||||||
|
map4 = threeDaysAgo.stream().collect(Collectors.groupingBy(RMpTargetWarnDDTO::getLineId));
|
||||||
|
}
|
||||||
|
Map<String,List<AlarmDetailDayDTO>> map5 = rlList.stream().collect(Collectors.groupingBy(AlarmDetailDayDTO::getLineId));
|
||||||
|
Map<String,List<AlarmDetailDayDTO>> map6 = uclList.stream().collect(Collectors.groupingBy(AlarmDetailDayDTO::getLineId));
|
||||||
|
for (Map.Entry<String, List<RMpTargetWarnDDTO>> entry : map1.entrySet()) {
|
||||||
|
RMpTargetWarnDPO rMpTargetWarnDpo = new RMpTargetWarnDPO();
|
||||||
|
rMpTargetWarnDpo.setDataDate(entry.getValue().get(0).getTime());
|
||||||
|
rMpTargetWarnDpo.setMeasurementPointId(entry.getValue().get(0).getLineId());
|
||||||
|
rMpTargetWarnDpo.setIsEffective(entry.getValue().get(0).getIsEffective());
|
||||||
|
rMpTargetWarnDpo.setIsHarmonic(entry.getValue().get(0).getIsHarmonic());
|
||||||
|
rMpTargetWarnDpo.setIsEvent(entry.getValue().get(0).getIsEvent());
|
||||||
|
rMpTargetWarnDpo.setIsWarn(0);
|
||||||
|
rMpTargetWarnDpo.setIsVDevWarn(0);
|
||||||
|
rMpTargetWarnDpo.setIsFreqWarn(0);
|
||||||
|
rMpTargetWarnDpo.setIsUnbalanceWarn(0);
|
||||||
|
rMpTargetWarnDpo.setIsVWarn(0);
|
||||||
|
rMpTargetWarnDpo.setIsFlickerWarn(0);
|
||||||
|
rMpTargetWarnDpo.setIsSagWarn(0);
|
||||||
|
rMpTargetWarnDpo.setIsInterruptWarn(0);
|
||||||
|
//情况1--》
|
||||||
|
if (!CollectionUtils.isEmpty(map2.get(entry.getKey())) && !CollectionUtils.isEmpty(map6.get(entry.getKey()))){
|
||||||
|
//电压偏差告警
|
||||||
|
if (entry.getValue().get(0).getVlDev() > map6.get(entry.getKey()).get(0).getVlDev() && entry.getValue().get(0).getVlDev() > map2.get(entry.getKey()).get(0).getVlDev()){
|
||||||
|
rMpTargetWarnDpo.setIsVDevWarn(1);
|
||||||
|
rMpTargetWarnDpo.setIsWarn(1);
|
||||||
|
}
|
||||||
|
//频率偏差告警
|
||||||
|
if (entry.getValue().get(0).getFreqDev() > map6.get(entry.getKey()).get(0).getFreqDev() && entry.getValue().get(0).getFreqDev() > map2.get(entry.getKey()).get(0).getFreqDev()){
|
||||||
|
rMpTargetWarnDpo.setIsFreqWarn(1);
|
||||||
|
rMpTargetWarnDpo.setIsWarn(1);
|
||||||
|
}
|
||||||
|
//三相电压不平衡告警
|
||||||
|
if (entry.getValue().get(0).getVUnbalance() > map6.get(entry.getKey()).get(0).getVUnbalance() && entry.getValue().get(0).getVUnbalance() > map2.get(entry.getKey()).get(0).getVUnbalance()){
|
||||||
|
rMpTargetWarnDpo.setIsUnbalanceWarn(1);
|
||||||
|
rMpTargetWarnDpo.setIsWarn(1);
|
||||||
|
}
|
||||||
|
//谐波电压告警
|
||||||
|
if (entry.getValue().get(0).getVHarmonic() > map6.get(entry.getKey()).get(0).getVHarmonic() && entry.getValue().get(0).getVHarmonic() > map2.get(entry.getKey()).get(0).getVHarmonic()){
|
||||||
|
rMpTargetWarnDpo.setIsHarmonic(1);
|
||||||
|
rMpTargetWarnDpo.setIsWarn(1);
|
||||||
|
}
|
||||||
|
//长时电压闪变告警
|
||||||
|
if (entry.getValue().get(0).getPlt() > map6.get(entry.getKey()).get(0).getPlt() && entry.getValue().get(0).getPlt() > map2.get(entry.getKey()).get(0).getPlt()){
|
||||||
|
rMpTargetWarnDpo.setIsFlickerWarn(1);
|
||||||
|
rMpTargetWarnDpo.setIsWarn(1);
|
||||||
|
}
|
||||||
|
//电压暂降告警
|
||||||
|
if (entry.getValue().get(0).getSagTimes() > map6.get(entry.getKey()).get(0).getSagTimes() && entry.getValue().get(0).getSagTimes() > map2.get(entry.getKey()).get(0).getSagTimes()){
|
||||||
|
rMpTargetWarnDpo.setIsSagWarn(1);
|
||||||
|
rMpTargetWarnDpo.setIsWarn(1);
|
||||||
|
}
|
||||||
|
//电压短时中断告警
|
||||||
|
if (entry.getValue().get(0).getInterruptTimes() > map6.get(entry.getKey()).get(0).getInterruptTimes() && entry.getValue().get(0).getInterruptTimes() > map2.get(entry.getKey()).get(0).getInterruptTimes()){
|
||||||
|
rMpTargetWarnDpo.setIsInterruptWarn(1);
|
||||||
|
rMpTargetWarnDpo.setIsWarn(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//情况2--》
|
||||||
|
if (!CollectionUtils.isEmpty(map2.get(entry.getKey())) && !CollectionUtils.isEmpty(map3.get(entry.getKey())) && !CollectionUtils.isEmpty(map4.get(entry.getKey())) && !CollectionUtils.isEmpty(map5.get(entry.getKey()))){
|
||||||
|
//电压偏差告警
|
||||||
|
if (entry.getValue().get(0).getVlDev() > map2.get(entry.getKey()).get(0).getVlDev() && map2.get(entry.getKey()).get(0).getVlDev() > map3.get(entry.getKey()).get(0).getVlDev() && map3.get(entry.getKey()).get(0).getVlDev() > map4.get(entry.getKey()).get(0).getVlDev() && map4.get(entry.getKey()).get(0).getVlDev() > map5.get(entry.getKey()).get(0).getVlDev()){
|
||||||
|
rMpTargetWarnDpo.setIsVDevWarn(1);
|
||||||
|
rMpTargetWarnDpo.setIsWarn(1);
|
||||||
|
}
|
||||||
|
//频率偏差告警
|
||||||
|
if (entry.getValue().get(0).getFreqDev() > map2.get(entry.getKey()).get(0).getFreqDev() && map2.get(entry.getKey()).get(0).getFreqDev() > map3.get(entry.getKey()).get(0).getFreqDev() && map3.get(entry.getKey()).get(0).getFreqDev() > map4.get(entry.getKey()).get(0).getFreqDev() && map4.get(entry.getKey()).get(0).getFreqDev() > map5.get(entry.getKey()).get(0).getFreqDev()){
|
||||||
|
rMpTargetWarnDpo.setIsFreqWarn(1);
|
||||||
|
rMpTargetWarnDpo.setIsWarn(1);
|
||||||
|
}
|
||||||
|
//三相电压不平衡告警
|
||||||
|
if (entry.getValue().get(0).getVUnbalance() > map2.get(entry.getKey()).get(0).getVUnbalance() && map2.get(entry.getKey()).get(0).getVUnbalance() > map3.get(entry.getKey()).get(0).getVUnbalance() && map3.get(entry.getKey()).get(0).getVUnbalance() > map4.get(entry.getKey()).get(0).getVUnbalance() && map4.get(entry.getKey()).get(0).getVUnbalance() > map5.get(entry.getKey()).get(0).getVUnbalance()){
|
||||||
|
rMpTargetWarnDpo.setIsUnbalanceWarn(1);
|
||||||
|
rMpTargetWarnDpo.setIsWarn(1);
|
||||||
|
}
|
||||||
|
//谐波电压告警
|
||||||
|
if (entry.getValue().get(0).getVHarmonic() > map2.get(entry.getKey()).get(0).getVHarmonic() && map2.get(entry.getKey()).get(0).getVHarmonic() > map3.get(entry.getKey()).get(0).getVHarmonic() && map3.get(entry.getKey()).get(0).getVHarmonic() > map4.get(entry.getKey()).get(0).getVHarmonic() && map4.get(entry.getKey()).get(0).getVHarmonic() > map5.get(entry.getKey()).get(0).getVHarmonic()){
|
||||||
|
rMpTargetWarnDpo.setIsHarmonic(1);
|
||||||
|
rMpTargetWarnDpo.setIsWarn(1);
|
||||||
|
}
|
||||||
|
//长时电压闪变告警
|
||||||
|
if (entry.getValue().get(0).getPlt() > map2.get(entry.getKey()).get(0).getPlt() && map2.get(entry.getKey()).get(0).getPlt() > map3.get(entry.getKey()).get(0).getPlt() && map3.get(entry.getKey()).get(0).getPlt() > map4.get(entry.getKey()).get(0).getPlt() && map4.get(entry.getKey()).get(0).getPlt() > map5.get(entry.getKey()).get(0).getPlt()){
|
||||||
|
rMpTargetWarnDpo.setIsFlickerWarn(1);
|
||||||
|
rMpTargetWarnDpo.setIsWarn(1);
|
||||||
|
}
|
||||||
|
//电压暂降告警
|
||||||
|
if (entry.getValue().get(0).getSagTimes() > map2.get(entry.getKey()).get(0).getSagTimes() && map2.get(entry.getKey()).get(0).getSagTimes() > map3.get(entry.getKey()).get(0).getSagTimes() && map3.get(entry.getKey()).get(0).getSagTimes() > map4.get(entry.getKey()).get(0).getSagTimes() && map4.get(entry.getKey()).get(0).getSagTimes() > map5.get(entry.getKey()).get(0).getSagTimes()){
|
||||||
|
rMpTargetWarnDpo.setIsSagWarn(1);
|
||||||
|
rMpTargetWarnDpo.setIsWarn(1);
|
||||||
|
}
|
||||||
|
//电压短时中断告警
|
||||||
|
if (entry.getValue().get(0).getInterruptTimes() > map2.get(entry.getKey()).get(0).getInterruptTimes() && map2.get(entry.getKey()).get(0).getInterruptTimes() > map3.get(entry.getKey()).get(0).getInterruptTimes() && map3.get(entry.getKey()).get(0).getInterruptTimes() > map4.get(entry.getKey()).get(0).getInterruptTimes() && map4.get(entry.getKey()).get(0).getInterruptTimes() > map5.get(entry.getKey()).get(0).getInterruptTimes()){
|
||||||
|
rMpTargetWarnDpo.setIsInterruptWarn(1);
|
||||||
|
rMpTargetWarnDpo.setIsWarn(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
result.add(rMpTargetWarnDpo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -140,11 +140,10 @@ public class AlarmDetailServiceImpl extends MppServiceImpl<AlarmMapper, RMpTarge
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<AlarmDetailDayDTO> getAvgDiffData(LineParam lineParam) {
|
public List<AlarmDetailDayDTO> getAvgDiffData(String time) {
|
||||||
String startTime = lineParam.getDataDate();
|
String endTime = PublicUtil.getLastYearDay(time);
|
||||||
String endTime = PublicUtil.getLastYearDay(startTime);
|
|
||||||
//计算本年的rm值
|
//计算本年的rm值
|
||||||
return this.baseMapper.getAvgDiffData(startTime,endTime);
|
return this.baseMapper.getAvgDiffData(endTime,time);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -26,7 +26,15 @@ public interface RMpTargetWarnDService extends IMppService<RMpTargetWarnDPO> {
|
|||||||
*/
|
*/
|
||||||
Integer queryHarmonicMeasurementAccrued(List<String> monitorIdList, String dataDate);
|
Integer queryHarmonicMeasurementAccrued(List<String> monitorIdList, String dataDate);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: 监测点指标告警日统计
|
||||||
|
* @author: xuyang
|
||||||
|
*/
|
||||||
void alarmDay(LineParam lineParam);
|
void alarmDay(LineParam lineParam);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: 监测点指标告警月统计
|
||||||
|
* @author: xuyang
|
||||||
|
*/
|
||||||
void alarmMonth(LineParam lineParam);
|
void alarmMonth(LineParam lineParam);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,5 +24,5 @@ public interface AlarmDetailService {
|
|||||||
|
|
||||||
void targetDiff(LineParam lineParam);
|
void targetDiff(LineParam lineParam);
|
||||||
|
|
||||||
List<AlarmDetailDayDTO> getAvgDiffData(LineParam lineParam);
|
List<AlarmDetailDayDTO> getAvgDiffData(String time);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user