@@ -4,13 +4,12 @@ package com.njcn.algorithm.serviceimpl.line;
import cn.hutool.core.collection.CollUtil ;
import cn.hutool.core.collection.ListUtil ;
import cn.hutool.core.date.DatePattern ;
import cn.hutool.core.date.DateUtil ;
import cn.hutool.core.date.LocalDateTimeUtil ;
import cn.hutool.core.util.ObjectUtil ;
import cn.hutool.core.util.StrUtil ;
import com.alibaba.fastjson.JSON ;
import com.njcn.algorithm.pojo.bo.CalculatedParam ;
import com.njcn.algorithm.service.line.IDataCrossingService ;
import com.njcn.common.utils.PubUtils ;
import com.njcn.dataProcess.api.* ;
import com.njcn.dataProcess.constant.PhaseType ;
import com.njcn.dataProcess.enums.DataCleanEnum ;
@@ -25,14 +24,15 @@ import com.njcn.influx.pojo.constant.InfluxDBTableConstant;
import lombok.RequiredArgsConstructor ;
import lombok.extern.slf4j.Slf4j ;
import org.apache.commons.collections4.ListUtils ;
import org.jetbrains.annotations.NotNull ;
import org.slf4j.Logger ;
import org.slf4j.LoggerFactory ;
import org.springframework.stereotype.Component ;
import org.springframework.util.CollectionUtils ;
import javax.annotation.Resource ;
import java.lang.reflect.Field ;
import java.lang.reflect.Method ;
import java.time.LocalDate ;
import java.time.LocalDateTime ;
import java.util.* ;
import java.util.function.Function ;
@@ -68,6 +68,10 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
private DataLimitRateDetailFeignClient dataLimitRateDetailFeignClient ;
@Resource
private PqDataVerifyFeignClient pqDataVerifyFeignClient ;
@Resource
private DataLimitTargetFeignClient dataLimitTargetFeignClient ;
@Override
public void limitRateHandler ( CalculatedParam calculatedParam ) {
logger . info ( " {},limitRate表转r_stat_limit_rate_d算法开始=====》 " , LocalDateTime . now ( ) ) ;
@@ -210,17 +214,112 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
if ( CollUtil . isNotEmpty ( result ) ) {
//存储数据
List < DataLimitRateDto > dataLimitRate = result . stream ( ) . map ( DataLimitDetailDto : : getDataLimitRate ) . filter ( x - > ObjectUtil . isNotNull ( x ) ) . collect ( Collectors . toList ( ) ) ;
List < DataLimitRateDto > dataLimitRate = result . stream ( ) . map ( DataLimitDetailDto : : getDataLimitRate ) . filter ( x - > ObjectUtil . isNotNull ( x ) ) . collect ( Collectors . toList ( ) ) ;
dataLimitRateFeignClient . batchInsertion ( dataLimitRate ) ;
}
if ( CollUtil . isNotEmpty ( result ) ) {
//存储数据
List < DataLimitRateDetailDto > detail = result . stream ( ) . map ( DataLimitDetailDto : : getDataLimitRateDetail ) . filter ( x - > ObjectUtil . isNotNull ( x ) ) . collect ( Collectors . toList ( ) ) ;
List < DataLimitRateDetailDto > detail = result . stream ( ) . map ( DataLimitDetailDto : : getDataLimitRateDetail ) . filter ( x - > ObjectUtil . isNotNull ( x ) ) . collect ( Collectors . toList ( ) ) ;
dataLimitRateDetailFeignClient . batchInsertion ( detail ) ;
}
}
@Override
public void limitTargetHandler ( CalculatedParam calculatedParam ) {
log . info ( LocalDateTime . now ( ) + " r_stat_limit_target_d开始执行=======》 " ) ;
List < DataLimitTargetDto > list = new ArrayList < > ( ) ;
List < DataLimitRateDto > limitRateData = new ArrayList < > ( ) ;
//远程接口获取分钟数据
LineCountEvaluateParam lineParam = new LineCountEvaluateParam ( ) ;
lineParam . setStartTime ( TimeUtils . getBeginOfDay ( calculatedParam . getDataDate ( ) ) ) ;
lineParam . setEndTime ( TimeUtils . getEndOfDay ( calculatedParam . getDataDate ( ) ) ) ;
List < String > lineIds = calculatedParam . getIdList ( ) ;
//以尺寸100分片,查询数据
List < List < String > > pendingIds = ListUtils . partition ( lineIds , NUM ) ;
for ( List < String > pendingId : pendingIds ) {
lineParam . setLineId ( pendingId ) ;
limitRateData . addAll ( dataLimitRateFeignClient . getRawData ( lineParam ) . getData ( ) ) ;
}
if ( ! CollectionUtils . isEmpty ( limitRateData ) ) {
for ( DataLimitRateDto limitRate : limitRateData ) {
DataLimitTargetDto limitTarget = new DataLimitTargetDto ( ) ;
limitTarget . setTime ( LocalDateTimeUtil . parseDate ( calculatedParam . getDataDate ( ) , DatePattern . NORM_DATE_PATTERN ) ) ;
limitTarget . setLineId ( limitRate . getLineId ( ) ) ;
limitTarget . setPhasicType ( limitRate . getPhasicType ( ) ) ;
chanelData ( limitRate , limitTarget ) ;
list . add ( limitTarget ) ;
}
}
if ( CollUtil . isNotEmpty ( list ) ) {
dataLimitTargetFeignClient . batchInsertion ( list ) ;
}
}
@Override
public List < QualifiedDetail > limitQualifiedDayHandler ( CalculatedParam calculatedParam ) {
LineCountEvaluateParam lineParam = new LineCountEvaluateParam ( ) ;
lineParam . setStartTime ( TimeUtils . getBeginOfMonth ( calculatedParam . getDataDate ( ) ) ) ;
lineParam . setEndTime ( TimeUtils . getEndOfMonth ( calculatedParam . getDataDate ( ) ) ) ;
List < String > devIdList = calculatedParam . getIdList ( ) ;
List < QualifiedDetail > info = new ArrayList < > ( ) ;
List < List < String > > pendingIds = ListUtils . partition ( devIdList , NUM ) ;
for ( List < String > pendingId : pendingIds ) {
lineParam . setLineId ( pendingId ) ;
List < DataLimitRateDto > data = dataLimitRateFeignClient . getRawData ( lineParam ) . getData ( ) ;
Map < String , List < DataLimitRateDto > > limitRateMap = data . stream ( ) . collect ( Collectors . groupingBy ( DataLimitRateDto : : getLineId ) ) ;
limitRateMap . forEach ( ( key , value ) - > {
QualifiedDetail qualified = new QualifiedDetail ( ) ;
qualified . setLineId ( key ) ;
qualified . setTime ( calculatedParam . getDataDate ( ) ) ;
int all = value . stream ( ) . mapToInt ( DataLimitRateDto : : getAllTime ) . sum ( ) ;
if ( all > 0 ) {
qualified . setFreqDevOvertime ( PubUtils . doubleRound ( 2 , 100 . 0 - ( value . stream ( ) . mapToInt ( DataLimitRateDto : : getFreqDevOvertime ) . sum ( ) * 100 . 0 / all ) ) ) ;
qualified . setVoltageDevOvertime ( PubUtils . doubleRound ( 2 , 100 . 0 - ( value . stream ( ) . mapToInt ( DataLimitRateDto : : getVoltageDevOvertime ) . sum ( ) * 100 . 0 / all ) ) ) ;
qualified . setUbalanceOvertime ( PubUtils . doubleRound ( 2 , 100 . 0 - ( value . stream ( ) . mapToInt ( DataLimitRateDto : : getUbalanceOvertime ) . sum ( ) * 100 . 0 / all ) ) ) ;
qualified . setUaberranceOvertime ( PubUtils . doubleRound ( 2 , 100 . 0 - ( value . stream ( ) . mapToInt ( DataLimitRateDto : : getUaberranceOvertime ) . sum ( ) * 100 . 0 / all ) ) ) ;
qualified . setINegOvertime ( PubUtils . doubleRound ( 2 , 100 . 0 - ( value . stream ( ) . mapToInt ( DataLimitRateDto : : getINegOvertime ) . sum ( ) * 100 . 0 / all ) ) ) ;
setOverTime ( 2 , 25 , " getUharm " , value , qualified , all ) ;
setOverTime ( 2 , 25 , " getIharm " , value , qualified , all ) ;
setOverTime ( 1 , 16 , " getInuharm " , value , qualified , all ) ;
}
int flickerAll = value . stream ( ) . mapToInt ( DataLimitRateDto : : getFlickerAllTime ) . sum ( ) ;
if ( flickerAll > 0 ) {
qualified . setFlickerOvertime ( PubUtils . doubleRound ( 2 , 100 . 0 - ( value . stream ( ) . mapToInt ( DataLimitRateDto : : getFlickerOvertime ) . sum ( ) * 100 . 0 / flickerAll ) ) ) ;
}
info . add ( qualified ) ;
} ) ;
}
return info ;
}
private static void setOverTime ( Integer start , Integer end , String targetName , List < DataLimitRateDto > value , QualifiedDetail qualified , int all ) {
for ( int i = start ; i < = end ; i + + ) {
// 构造方法名
String methodName = targetName + i + " Overtime " ;
try {
Field finalField = DataLimitRateDto . class . getDeclaredField ( methodName ) ;
finalField . setAccessible ( true ) ;
finalField . set ( qualified , PubUtils . doubleRound ( 2 , 100 . 0 - ( value . stream ( ) . mapToInt ( temp - > {
Integer o ;
try {
o = ( Integer ) finalField . get ( temp ) ;
} catch ( IllegalAccessException e ) {
throw new RuntimeException ( e ) ;
}
return o . intValue ( ) ;
} ) . sum ( ) * 100 . 0 / all ) ) ) ;
} catch ( NoSuchFieldException | IllegalAccessException e ) {
throw new RuntimeException ( e ) ;
}
}
}
/**
* @Description: getData
@@ -230,18 +329,18 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
* @Date: 2022/10/18
*/
private List < DataLimitDetailDto > getData ( String dataDate ,
Overlimit overlimit ,
List < DataVDto > allTimeList ,
List < DataPltDto > flickerAllTimeList ,
List < DataHarmDto > dataHarmRateVPOList ,
List < DataIDto > dataIPOList ,
List < DataHarmDto > dataInHarmVPOList ,
List < DataVDto > dataVPOList ,
List < DataVDto > dataVPOUnbalanceList ,
List < DataIDto > dataIPONegList ,
List < DataVDto > dataVPOFreqList ,
List < DataVDto > dataVPODevList ,
List < DataPltDto > dataPltPOList ) {
Overlimit overlimit ,
List < DataVDto > allTimeList ,
List < DataPltDto > flickerAllTimeList ,
List < DataHarmDto > dataHarmRateVPOList ,
List < DataIDto > dataIPOList ,
List < DataHarmDto > dataInHarmVPOList ,
List < DataVDto > dataVPOList ,
List < DataVDto > dataVPOUnbalanceList ,
List < DataIDto > dataIPONegList ,
List < DataVDto > dataVPOFreqList ,
List < DataVDto > dataVPODevList ,
List < DataPltDto > dataPltPOList ) {
List < DataLimitDetailDto > result = new ArrayList < > ( ) ;
Map < String , List < DataHarmDto > > harmRateVByPhaseType = new HashMap < > ( ) ;
@@ -288,9 +387,10 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
result . add ( t ) ;
return result ;
}
/**
* @Description:
* @param lineParam
* @Description:
* @Author: wr
* @Date: 2025/3/11 9:04
*/
@@ -302,7 +402,7 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
Map < String , List < String > > timeMap = pqDataVerifies . stream ( )
. collect ( Collectors . groupingBy (
PqDataVerify : : getLineId ,
Collectors . mapping ( item - > TimeUtils . LocalDateTimeToString ( item . getTime ( ) ) , Collectors . toList ( ) )
Collectors . mapping ( item - > TimeUtils . LocalDateTimeToString ( item . getTime ( ) ) , Collectors . toList ( ) )
) ) ;
lineParam . setAbnormalTime ( timeMap ) ;
}
@@ -345,8 +445,8 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
// 获取 Overlimit 类的 getUharmx 方法
Method getUharmMethod = Overlimit . class . getMethod ( " getUharm " + i ) ;
float limit = ( float ) getUharmMethod . invoke ( overlimit ) ;
if ( value > limit ) {
addAbnormalData ( v [ i - 2 ] , item . getValueType ( ) , item . getPhasicType ( ) , item . getMinTime ( ) , value , limit ) ;
if ( value > limit ) {
addAbnormalData ( v [ i - 2 ] , item . getValueType ( ) , item . getPhasicType ( ) , item . getMinTime ( ) , value , limit ) ;
}
} catch ( Exception e ) {
e . printStackTrace ( ) ;
@@ -371,8 +471,8 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
// 获取 Overlimit 类的 getUharmx 方法
Method getUharmMethod = Overlimit . class . getMethod ( " getIharm " + j ) ;
float limit = ( float ) getUharmMethod . invoke ( overlimit ) ;
if ( value > limit ) {
addAbnormalData ( i [ j - 2 ] , item . getValueType ( ) , item . getPhasicType ( ) , item . getMinTime ( ) , value , limit ) ;
if ( value > limit ) {
addAbnormalData ( i [ j - 2 ] , item . getValueType ( ) , item . getPhasicType ( ) , item . getMinTime ( ) , value , limit ) ;
}
} catch ( Exception e ) {
e . printStackTrace ( ) ;
@@ -397,7 +497,7 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
Method getUharmMethod = Overlimit . class . getMethod ( " getInuharm " + j ) ;
float limit = ( float ) getUharmMethod . invoke ( overlimit ) ;
if ( value > limit ) {
addAbnormalData ( uHarm [ j - 1 ] , item . getPhasicType ( ) , item . getValueType ( ) , item . getMinTime ( ) , value , limit ) ;
addAbnormalData ( uHarm [ j - 1 ] , item . getPhasicType ( ) , item . getValueType ( ) , item . getMinTime ( ) , value , limit ) ;
}
} catch ( Exception e ) {
e . printStackTrace ( ) ;
@@ -409,7 +509,7 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
if ( ! CollectionUtils . isEmpty ( dataVPOList ) ) {
for ( DataVDto item : dataVPOList ) {
if ( item . getVThd ( ) > overlimit . getUaberrance ( ) ) {
addAbnormalData ( thd , item . getPhasicType ( ) , item . getValueType ( ) , item . getMinTime ( ) , item . getVThd ( ) , overlimit . getUaberrance ( ) ) ;
addAbnormalData ( thd , item . getPhasicType ( ) , item . getValueType ( ) , item . getMinTime ( ) , item . getVThd ( ) , overlimit . getUaberrance ( ) ) ;
}
}
}
@@ -418,11 +518,11 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
for ( DataVDto item : dataVPODevList ) {
if ( item . getVlDev ( ) > = 0 ) {
if ( item . getVlDev ( ) > overlimit . getVoltageDev ( ) ) {
addAbnormalData ( uDev , item . getPhasicType ( ) , item . getValueType ( ) , item . getMinTime ( ) , item . getVlDev ( ) , overlimit . getVoltageDev ( ) ) ;
addAbnormalData ( uDev , item . getPhasicType ( ) , item . getValueType ( ) , item . getMinTime ( ) , item . getVlDev ( ) , overlimit . getVoltageDev ( ) ) ;
}
} else {
if ( Math . abs ( item . getVuDev ( ) ) > Math . abs ( overlimit . getUvoltageDev ( ) ) ) {
addAbnormalData ( uDev , item . getPhasicType ( ) , item . getValueType ( ) , item . getMinTime ( ) , item . getVlDev ( ) , overlimit . getUvoltageDev ( ) ) ;
if ( Math . abs ( item . getVuDev ( ) ) > Math . abs ( overlimit . getUvoltageDev ( ) ) ) {
addAbnormalData ( uDev , item . getPhasicType ( ) , item . getValueType ( ) , item . getMinTime ( ) , item . getVlDev ( ) , overlimit . getUvoltageDev ( ) ) ;
}
}
}
@@ -430,8 +530,8 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
//长时间闪变
if ( ! CollectionUtils . isEmpty ( dataPltPOList ) ) {
for ( DataPltDto item : dataPltPOList ) {
if ( item . getPlt ( ) > overlimit . getFlicker ( ) ) {
addAbnormalData ( flicker , item . getPhasicType ( ) , item . getValueType ( ) , item . getMinTime ( ) , item . getPlt ( ) , overlimit . getFlicker ( ) ) ;
if ( item . getPlt ( ) > overlimit . getFlicker ( ) ) {
addAbnormalData ( flicker , item . getPhasicType ( ) , item . getValueType ( ) , item . getMinTime ( ) , item . getPlt ( ) , overlimit . getFlicker ( ) ) ;
}
}
}
@@ -488,7 +588,7 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
Method getUharmMethod = Overlimit . class . getMethod ( " getUharm " + i ) ;
float limit = ( float ) getUharmMethod . invoke ( overlimit ) ;
if ( value > limit ) {
addAbnormalData ( v [ i - 2 ] , item . getPhasicType ( ) , item . getValueType ( ) , item . getMinTime ( ) , value , limit ) ;
addAbnormalData ( v [ i - 2 ] , item . getPhasicType ( ) , item . getValueType ( ) , item . getMinTime ( ) , value , limit ) ;
}
} catch ( Exception e ) {
e . printStackTrace ( ) ;
@@ -513,8 +613,8 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
// 获取 Overlimit 类的 getUharmx 方法
Method getUharmMethod = Overlimit . class . getMethod ( " getIharm " + j ) ;
float limit = ( float ) getUharmMethod . invoke ( overlimit ) ;
if ( value > limit ) {
addAbnormalData ( i [ j - 2 ] , item . getPhasicType ( ) , item . getValueType ( ) , item . getMinTime ( ) , value , limit ) ;
if ( value > limit ) {
addAbnormalData ( i [ j - 2 ] , item . getPhasicType ( ) , item . getValueType ( ) , item . getMinTime ( ) , value , limit ) ;
}
} catch ( Exception e ) {
e . printStackTrace ( ) ;
@@ -538,8 +638,8 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
// 获取 Overlimit 类的 getUharmx 方法
Method getUharmMethod = Overlimit . class . getMethod ( " getInuharm " + j ) ;
float limit = ( float ) getUharmMethod . invoke ( overlimit ) ;
if ( value > limit ) {
addAbnormalData ( uHarm [ j - 1 ] , item . getPhasicType ( ) , item . getValueType ( ) , item . getMinTime ( ) , value , limit ) ;
if ( value > limit ) {
addAbnormalData ( uHarm [ j - 1 ] , item . getPhasicType ( ) , item . getValueType ( ) , item . getMinTime ( ) , value , limit ) ;
}
} catch ( Exception e ) {
e . printStackTrace ( ) ;
@@ -550,16 +650,16 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
//电压总谐波畸变率
if ( ! CollectionUtils . isEmpty ( dataVPOList ) ) {
for ( DataVDto item : dataVPOList ) {
if ( item . getVThd ( ) > overlimit . getUaberrance ( ) ) {
addAbnormalData ( thd , item . getPhasicType ( ) , item . getValueType ( ) , item . getMinTime ( ) , item . getVThd ( ) , overlimit . getUaberrance ( ) ) ;
if ( item . getVThd ( ) > overlimit . getUaberrance ( ) ) {
addAbnormalData ( thd , item . getPhasicType ( ) , item . getValueType ( ) , item . getMinTime ( ) , item . getVThd ( ) , overlimit . getUaberrance ( ) ) ;
}
}
}
//三相电压不平衡度
if ( ! CollectionUtils . isEmpty ( dataVPOUnbalanceList ) ) {
for ( DataVDto item : dataVPOUnbalanceList ) {
if ( item . getVUnbalance ( ) > overlimit . getUbalance ( ) ) {
addAbnormalData ( uAberrance , item . getPhasicType ( ) , item . getValueType ( ) , item . getMinTime ( ) , item . getVUnbalance ( ) , overlimit . getUbalance ( ) ) ;
if ( item . getVUnbalance ( ) > overlimit . getUbalance ( ) ) {
addAbnormalData ( uAberrance , item . getPhasicType ( ) , item . getValueType ( ) , item . getMinTime ( ) , item . getVUnbalance ( ) , overlimit . getUbalance ( ) ) ;
}
}
}
@@ -567,15 +667,15 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
if ( ! CollectionUtils . isEmpty ( dataIPONegList ) ) {
for ( DataIDto item : dataIPONegList ) {
if ( item . getINeg ( ) > overlimit . getINeg ( ) ) {
addAbnormalData ( iNeg , item . getPhasicType ( ) , item . getValueType ( ) , item . getMinTime ( ) , item . getINeg ( ) , overlimit . getINeg ( ) ) ;
addAbnormalData ( iNeg , item . getPhasicType ( ) , item . getValueType ( ) , item . getMinTime ( ) , item . getINeg ( ) , overlimit . getINeg ( ) ) ;
}
}
}
//频率偏差
if ( ! CollectionUtils . isEmpty ( dataVPOFreqList ) ) {
for ( DataVDto item : dataVPOFreqList ) {
if ( item . getFreqDev ( ) > overlimit . getFreqDev ( ) ) {
addAbnormalData ( freqDev , item . getPhasicType ( ) , item . getValueType ( ) , item . getMinTime ( ) , item . getFreqDev ( ) , overlimit . getFreqDev ( ) ) ;
if ( item . getFreqDev ( ) > overlimit . getFreqDev ( ) ) {
addAbnormalData ( freqDev , item . getPhasicType ( ) , item . getValueType ( ) , item . getMinTime ( ) , item . getFreqDev ( ) , overlimit . getFreqDev ( ) ) ;
}
}
}
@@ -584,12 +684,12 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
if ( ! CollectionUtils . isEmpty ( dataVPODevList ) ) {
for ( DataVDto item : dataVPODevList ) {
if ( item . getVlDev ( ) > = 0 ) {
if ( item . getVlDev ( ) > overlimit . getVoltageDev ( ) ) {
addAbnormalData ( uDev , item . getPhasicType ( ) , item . getMinTime ( ) , item . getValueType ( ) , item . getVlDev ( ) , overlimit . getVoltageDev ( ) ) ;
if ( item . getVlDev ( ) > overlimit . getVoltageDev ( ) ) {
addAbnormalData ( uDev , item . getPhasicType ( ) , item . getMinTime ( ) , item . getValueType ( ) , item . getVlDev ( ) , overlimit . getVoltageDev ( ) ) ;
}
} else {
if ( Math . abs ( item . getVuDev ( ) ) > Math . abs ( overlimit . getUvoltageDev ( ) ) ) {
addAbnormalData ( uDev , item . getPhasicType ( ) , item . getMinTime ( ) , item . getValueType ( ) , item . getVlDev ( ) , overlimit . getUvoltageDev ( ) ) ;
if ( Math . abs ( item . getVuDev ( ) ) > Math . abs ( overlimit . getUvoltageDev ( ) ) ) {
addAbnormalData ( uDev , item . getPhasicType ( ) , item . getMinTime ( ) , item . getValueType ( ) , item . getVlDev ( ) , overlimit . getUvoltageDev ( ) ) ;
}
}
}
@@ -597,8 +697,8 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
//长时间闪变
if ( ! CollectionUtils . isEmpty ( dataPltPOList ) ) {
for ( DataPltDto item : dataPltPOList ) {
if ( item . getPlt ( ) > overlimit . getFlicker ( ) ) {
addAbnormalData ( flicker , item . getPhasicType ( ) , item . getValueType ( ) , item . getMinTime ( ) , item . getPlt ( ) , overlimit . getFlicker ( ) ) ;
if ( item . getPlt ( ) > overlimit . getFlicker ( ) ) {
addAbnormalData ( flicker , item . getPhasicType ( ) , item . getValueType ( ) , item . getMinTime ( ) , item . getPlt ( ) , overlimit . getFlicker ( ) ) ;
}
}
}
@@ -683,7 +783,7 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
v [ 0 ] . size ( ) + v [ 1 ] . size ( ) + v [ 2 ] . size ( ) + v [ 3 ] . size ( ) + v [ 4 ] . size ( ) + v [ 5 ] . size ( ) + v [ 6 ] . size ( ) + v [ 7 ] . size ( ) + v [ 8 ] . size ( ) + v [ 9 ] . size ( ) + v [ 11 ] . size ( ) + v [ 12 ] . size ( ) + v [ 13 ] . size ( ) + v [ 14 ] . size ( ) + v [ 15 ] . size ( ) + v [ 16 ] . size ( ) + v [ 17 ] . size ( ) + v [ 18 ] . size ( ) + v [ 19 ] . size ( ) + v [ 20 ] . size ( ) + v [ 21 ] . size ( ) + v [ 22 ] . size ( ) + v [ 23 ] . size ( ) +
i [ 0 ] . size ( ) + i [ 1 ] . size ( ) + i [ 2 ] . size ( ) + i [ 3 ] . size ( ) + i [ 4 ] . size ( ) + i [ 5 ] . size ( ) + i [ 6 ] . size ( ) + i [ 7 ] . size ( ) + i [ 8 ] . size ( ) + i [ 9 ] . size ( ) + i [ 10 ] . size ( ) + i [ 11 ] . size ( ) + i [ 12 ] . size ( ) + i [ 13 ] . size ( ) + i [ 14 ] . size ( ) + i [ 15 ] . size ( ) + i [ 16 ] . size ( ) + i [ 17 ] . size ( ) + i [ 18 ] . size ( ) + i [ 19 ] . size ( ) + i [ 20 ] . size ( ) + i [ 21 ] . size ( ) + i [ 22 ] . size ( ) + i [ 23 ] . size ( ) +
uHarm [ 0 ] . size ( ) + uHarm [ 1 ] . size ( ) + uHarm [ 2 ] . size ( ) + uHarm [ 3 ] . size ( ) + uHarm [ 4 ] . size ( ) + uHarm [ 5 ] . size ( ) + uHarm [ 6 ] . size ( ) + uHarm [ 7 ] . size ( ) + uHarm [ 8 ] . size ( ) + uHarm [ 9 ] . size ( ) + uHarm [ 10 ] . size ( ) + uHarm [ 11 ] . size ( ) + uHarm [ 12 ] . size ( ) + uHarm [ 13 ] . size ( ) + uHarm [ 14 ] . size ( ) + uHarm [ 15 ] . size ( ) ;
if ( detailAllTime > 0 ) {
if ( detailAllTime > 0 ) {
DataLimitRateDetailDto detail = new DataLimitRateDetailDto ( ) ;
detail . setLineId ( lineId ) ;
detail . setTime ( LocalDateTimeUtil . parseDate ( dataDate , DatePattern . NORM_DATE_PATTERN ) ) ;
@@ -830,31 +930,32 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
limitRate . setInuharm16Overtime ( uHarm [ 15 ] . size ( ) ) ;
return limitRate ;
}
private String toJson ( List < AbnormalData > list ) {
Map < String , List < AbnormalData > > abnormalMap = list . stream ( ) . collect ( Collectors . groupingBy ( x - > x . getPhasic ( ) + " _ " + x . getValueType ( ) ) ) ;
List < AbnormalData . Json > info = new ArrayList < > ( ) ;
abnormalMap . forEach ( ( key , value ) - > {
Map < String , List < AbnormalData > > abnormalMap = list . stream ( ) . collect ( Collectors . groupingBy ( x - > x . getPhasic ( ) + " _ " + x . getValueType ( ) ) ) ;
List < AbnormalData . Json > info = new ArrayList < > ( ) ;
abnormalMap . forEach ( ( key , value ) - > {
String [ ] split = key . split ( " _ " ) ;
AbnormalData . Json json = new AbnormalData . Json ( ) ;
AbnormalData . Json json = new AbnormalData . Json ( ) ;
json . setPhasic ( split [ 0 ] ) ;
json . setValueType ( split [ 1 ] ) ;
json . setTime ( String . join ( " , " , value . stream ( )
. map ( abnormal - > abnormal . getTime ( ) )
. distinct ( )
. collect ( Collectors . toList ( ) ) ) ) ;
json . setValue ( String . join ( " , " , value . stream ( )
. map ( abnormal - > abnormal . getValue ( ) + " " )
. distinct ( )
. collect ( Collectors . toList ( ) ) ) ) ;
. map ( abnormal - > abnormal . getTime ( ) )
. distinct ( )
. collect ( Collectors . toList ( ) ) ) ) ;
json . setValue ( String . join ( " , " , value . stream ( )
. map ( abnormal - > abnormal . getValue ( ) + " " )
. distinct ( )
. collect ( Collectors . toList ( ) ) ) ) ;
info . add ( json ) ;
} ) ;
if ( CollUtil . isNotEmpty ( info ) ) {
if ( CollUtil . isNotEmpty ( info ) ) {
return JSON . toJSONString ( info ) ;
}
return " " ;
}
private void addAbnormalData ( List < AbnormalData > list , String phasicType , String valueType , String time , Double value , float overLimitValue ) {
private void addAbnormalData ( List < AbnormalData > list , String phasicType , String valueType , String time , Double value , float overLimitValue ) {
AbnormalData data = new AbnormalData ( ) ;
data . setTime ( time . substring ( 11 , time . length ( ) ) ) ;
data . setPhasic ( phasicType ) ;
@@ -863,4 +964,107 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
data . setOverLimitValue ( overLimitValue ) ;
list . add ( data ) ;
}
private void chanelData ( DataLimitRateDto limitRate , DataLimitTargetDto limitTarget ) {
//有一个指标超标, allTime则为1
int allTime = limitRate . getFreqDevOvertime ( ) + limitRate . getVoltageDevOvertime ( ) + limitRate . getUbalanceOvertime ( ) + limitRate . getUaberranceOvertime ( ) + limitRate . getINegOvertime ( ) ;
try {
Class < ? > clazz = limitRate . getClass ( ) ;
for ( int i = 2 ; i < = 25 ; i + + ) {
String methodName = " getUharm " + i + " Overtime " ;
String methodName2 = " getIharm " + i + " Overtime " ;
Method method = clazz . getMethod ( methodName ) ;
int overtime = ( int ) method . invoke ( limitRate ) ;
allTime + = overtime ;
Method method2 = clazz . getMethod ( methodName2 ) ;
int overtime2 = ( int ) method2 . invoke ( limitRate ) ;
allTime + = overtime2 ;
}
for ( int i = 1 ; i < = 16 ; i + + ) {
String methodName = " getInuharm " + i + " Overtime " ;
Method method = clazz . getMethod ( methodName ) ;
int overtime = ( int ) method . invoke ( limitRate ) ;
allTime + = overtime ;
}
} catch ( Exception e ) {
e . getMessage ( ) ;
}
limitTarget . setAllTime ( ( allTime > 0 ) ? 1 : 0 ) ;
//闪变指标超标, flickerAllTime则为1
limitTarget . setFlickerAllTime ( ( limitRate . getFlickerOvertime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setFreqDevOvertime ( ( limitRate . getFreqDevOvertime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setVoltageDevOvertime ( ( limitRate . getVoltageDevOvertime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setUbalanceOvertime ( ( limitRate . getUbalanceOvertime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setFlickerOvertime ( ( limitRate . getFlickerOvertime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setUaberranceOvertime ( ( limitRate . getUaberranceOvertime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setINegOvertime ( ( limitRate . getINegOvertime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setUharm2Overtime ( ( limitRate . getUharm2Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setUharm3Overtime ( ( limitRate . getUharm3Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setUharm4Overtime ( ( limitRate . getUharm4Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setUharm5Overtime ( ( limitRate . getUharm5Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setUharm6Overtime ( ( limitRate . getUharm6Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setUharm7Overtime ( ( limitRate . getUharm7Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setUharm8Overtime ( ( limitRate . getUharm8Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setUharm9Overtime ( ( limitRate . getUharm9Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setUharm10Overtime ( ( limitRate . getUharm10Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setUharm11Overtime ( ( limitRate . getUharm11Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setUharm12Overtime ( ( limitRate . getUharm12Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setUharm13Overtime ( ( limitRate . getUharm13Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setUharm14Overtime ( ( limitRate . getUharm14Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setUharm15Overtime ( ( limitRate . getUharm15Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setUharm16Overtime ( ( limitRate . getUharm16Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setUharm17Overtime ( ( limitRate . getUharm17Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setUharm18Overtime ( ( limitRate . getUharm18Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setUharm19Overtime ( ( limitRate . getUharm19Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setUharm20Overtime ( ( limitRate . getUharm20Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setUharm21Overtime ( ( limitRate . getUharm21Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setUharm22Overtime ( ( limitRate . getUharm22Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setUharm23Overtime ( ( limitRate . getUharm23Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setUharm24Overtime ( ( limitRate . getUharm24Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setUharm25Overtime ( ( limitRate . getUharm25Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setIharm2Overtime ( ( limitRate . getIharm2Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setIharm3Overtime ( ( limitRate . getIharm3Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setIharm4Overtime ( ( limitRate . getIharm4Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setIharm5Overtime ( ( limitRate . getIharm5Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setIharm6Overtime ( ( limitRate . getIharm6Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setIharm7Overtime ( ( limitRate . getIharm7Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setIharm8Overtime ( ( limitRate . getIharm8Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setIharm9Overtime ( ( limitRate . getIharm9Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setIharm10Overtime ( ( limitRate . getIharm10Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setIharm11Overtime ( ( limitRate . getIharm11Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setIharm12Overtime ( ( limitRate . getIharm12Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setIharm13Overtime ( ( limitRate . getIharm13Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setIharm14Overtime ( ( limitRate . getIharm14Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setIharm15Overtime ( ( limitRate . getIharm15Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setIharm16Overtime ( ( limitRate . getIharm16Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setIharm17Overtime ( ( limitRate . getIharm17Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setIharm18Overtime ( ( limitRate . getIharm18Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setIharm19Overtime ( ( limitRate . getIharm19Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setIharm20Overtime ( ( limitRate . getIharm20Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setIharm21Overtime ( ( limitRate . getIharm21Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setIharm22Overtime ( ( limitRate . getIharm22Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setIharm23Overtime ( ( limitRate . getIharm23Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setIharm24Overtime ( ( limitRate . getIharm24Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setIharm25Overtime ( ( limitRate . getIharm25Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setInuharm1Overtime ( ( limitRate . getInuharm1Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setInuharm2Overtime ( ( limitRate . getInuharm2Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setInuharm3Overtime ( ( limitRate . getInuharm3Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setInuharm4Overtime ( ( limitRate . getInuharm4Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setInuharm5Overtime ( ( limitRate . getInuharm5Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setInuharm6Overtime ( ( limitRate . getInuharm6Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setInuharm7Overtime ( ( limitRate . getInuharm7Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setInuharm8Overtime ( ( limitRate . getInuharm8Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setInuharm9Overtime ( ( limitRate . getInuharm9Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setInuharm10Overtime ( ( limitRate . getInuharm10Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setInuharm11Overtime ( ( limitRate . getInuharm11Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setInuharm12Overtime ( ( limitRate . getInuharm12Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setInuharm13Overtime ( ( limitRate . getInuharm13Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setInuharm14Overtime ( ( limitRate . getInuharm14Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setInuharm15Overtime ( ( limitRate . getInuharm15Overtime ( ) > 0 ) ? 1 : 0 ) ;
limitTarget . setInuharm16Overtime ( ( limitRate . getInuharm16Overtime ( ) > 0 ) ? 1 : 0 ) ;
}
}