@@ -16,10 +16,7 @@ import com.njcn.harmonic.pojo.param.hebeinorth.AssessParam;
import com.njcn.harmonic.pojo.po.PQSComAssesPO ;
import com.njcn.harmonic.pojo.po.PqsComasses ;
import com.njcn.harmonic.pojo.po.RStatDataVD ;
import com.njcn.harmonic.pojo.po.day.RStatAssesDPO ;
import com.njcn.harmonic.pojo.po.day.RStatDataPltDPO ;
import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO ;
import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO ;
import com.njcn.harmonic.pojo.po.day.* ;
import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO ;
import com.njcn.harmonic.pojo.vo.hebeinorth.AssessDetailVo ;
import com.njcn.harmonic.pojo.vo.hebeinorth.AssessVo ;
@@ -34,6 +31,7 @@ import com.njcn.user.pojo.dto.DeptDTO;
import lombok.RequiredArgsConstructor ;
import org.springframework.stereotype.Service ;
import java.lang.reflect.Field ;
import java.time.LocalDate ;
import java.time.Year ;
import java.time.YearMonth ;
@@ -62,7 +60,9 @@ public class GridServiceImpl implements IGridService {
private final ComAssesUtil comAssesUtil ;
private final LineFeignClient lineFeignClient ;
private final RStatDataVDMapper statDataVDMapper ;
private final RStatDataIDMapper statDataIDMapper ;
private final RStatDataPltDMapper statDataPltDMapper ;
private final RStatDataInharmVDMapper rStatDataInharmVDMapper ;
private final RStatLimitTargetDMapper rStatLimitTargetDMapper ;
private final GeneralDeviceInfoClient generalDeviceInfoClient ;
private final DeptFeignClient deptFeignClient ;
@@ -76,7 +76,7 @@ public class GridServiceImpl implements IGridService {
deptGetLineParam . setLineRunFlag ( 0 ) ;
List < DeptGetChildrenMoreDTO > list = commTerminalGeneralClient . deptGetLine ( deptGetLineParam ) . getData ( ) ;
//获取监测点集合
Map < String , List < String > > lineMap = this . getLineMap ( list , param . getIsUpToGrid ( ) , null ) ;
Map < String , List < String > > lineMap = this . getLineMap ( list , param . getIsUpToGrid ( ) , null ) ;
List < String > lineList = lineMap . values ( ) . stream ( )
. flatMap ( List : : stream )
. distinct ( )
@@ -85,22 +85,22 @@ public class GridServiceImpl implements IGridService {
List < PqsComasses > comasses = new ArrayList < > ( ) ;
//获取监测点详细信息
List < LineDetail > lineDetailList = lineFeignClient . getLineDetail ( lineList ) . getData ( ) ;
Map < String , List < LineDetail > > lineDetailMap = lineDetailList . stream ( ) . collect ( Collectors . groupingBy ( LineDetail : : getActualArea ) ) ;
Map < String , List < LineDetail > > lineDetailMap = lineDetailList . stream ( ) . collect ( Collectors . groupingBy ( LineDetail : : getActualArea ) ) ;
//获取综合评估
List < PQSComAssesPO > assesList = rStatComassesDMapper . getAvgCount ( lineList , param . getStartTime ( ) , param . getEndTime ( ) ) ;
List < PQSComAssesPO > assesList = rStatComassesDMapper . getAvgCount ( lineList , param . getStartTime ( ) , param . getEndTime ( ) ) ;
//获取部门
List < DeptDTO > deptList = deptFeignClient . getDepSonDetailByDeptId ( param . getDeptIndex ( ) ) . getData ( ) ;
deptList . forEach ( item - > {
deptList . forEach ( item - > {
if ( lineDetailMap . containsKey ( item . getArea ( ) ) ) {
AssessVo assessVo = new AssessVo ( ) ;
assessVo . setName ( item . getName ( ) ) ;
assessVo . setCode ( item . getCode ( ) ) ;
List < String > ll = lineDetailMap . get ( item . getArea ( ) ) . stream ( ) . map ( LineDetail : : getId ) . collect ( Collectors . toList ( ) ) ;
List < PQSComAssesPO > deptAssessList = assesList . stream ( ) . filter ( it - > ll . contains ( it . getLineId ( ) ) ) . collect ( Collectors . toList ( ) ) ;
List < PqsComasses > communicateList = BeanUtil . copyToList ( deptAssessList , PqsComasses . class ) ;
if ( CollUtil . isNotEmpty ( communicateList ) ) {
List < PQSComAssesPO > deptAssessList = assesList . stream ( ) . filter ( it - > ll . contains ( it . getLineId ( ) ) ) . collect ( Collectors . toList ( ) ) ;
List < PqsComasses > communicateList = BeanUtil . copyToList ( deptAssessList , PqsComasses . class ) ;
if ( CollUtil . isNotEmpty ( communicateList ) ) {
float synData = comAssesUtil . getAllComAss ( communicateList ) ;
assessVo . setScore ( PubUtils . floatRound ( 2 , synData ) ) ;
assessVo . setScore ( PubUtils . floatRound ( 2 , synData ) ) ;
assessVo . setLevel ( getLevel ( synData ) ) ;
comasses . addAll ( communicateList ) ;
}
@@ -110,7 +110,7 @@ public class GridServiceImpl implements IGridService {
//计算冀北整体
if ( CollUtil . isNotEmpty ( comasses ) ) {
float synData = comAssesUtil . getAllComAss ( comasses ) ;
overview . setScore ( PubUtils . floatRound ( 2 , synData ) ) ;
overview . setScore ( PubUtils . floatRound ( 2 , synData ) ) ;
overview . setLevel ( getLevel ( synData ) ) ;
}
overview . setChildren ( children ) ;
@@ -127,30 +127,30 @@ public class GridServiceImpl implements IGridService {
deptGetLineParam . setLineRunFlag ( 0 ) ;
List < DeptGetChildrenMoreDTO > list = commTerminalGeneralClient . deptGetLine ( deptGetLineParam ) . getData ( ) ;
//获取监测点集合
Map < String , List < String > > lineMap = this . getLineMap ( list , param . getIsUpToGrid ( ) , null ) ;
Map < String , List < String > > lineMap = this . getLineMap ( list , param . getIsUpToGrid ( ) , null ) ;
List < String > lineList = lineMap . values ( ) . stream ( )
. flatMap ( List : : stream )
. distinct ( )
. collect ( Collectors . toList ( ) ) ;
if ( CollUtil . isNotEmpty ( lineList ) ) {
if ( CollUtil . isNotEmpty ( lineList ) ) {
//获取监测点详细信息
List < LineDetail > lineDetailList = lineFeignClient . getLineDetail ( lineList ) . getData ( ) ;
Map < String , List < LineDetail > > lineDetailMap = lineDetailList . stream ( ) . collect ( Collectors . groupingBy ( LineDetail : : getActualArea ) ) ;
Map < String , List < LineDetail > > lineDetailMap = lineDetailList . stream ( ) . collect ( Collectors . groupingBy ( LineDetail : : getActualArea ) ) ;
//获取部门
List < DeptDTO > deptList = deptFeignClient . getDepSonDetailByDeptId ( param . getDeptIndex ( ) ) . getData ( ) ;
//获取所有监测点r_stat_asses_d数据
List < RStatAssesDPO > list1 = rStatAssesDMapper . getData ( param . getStartTime ( ) , param . getEndTime ( ) , lineList ) ;
List < RStatAssesDPO > list1 = rStatAssesDMapper . getData ( param . getStartTime ( ) , param . getEndTime ( ) , lineList ) ;
//获取所有监测点r_stat_comasses_d数据
List < PQSComAssesPO > list2 = rStatComassesDMapper . getAvgCount ( lineList , param . getStartTime ( ) , param . getEndTime ( ) ) ;
List < PQSComAssesPO > list2 = rStatComassesDMapper . getAvgCount ( lineList , param . getStartTime ( ) , param . getEndTime ( ) ) ;
//获取所有监测点r_stat_limit_rate_d数据
List < RStatLimitRateDPO > list3 = rStatLimitRateDMapper . getAssessTargetRate ( lineList , param . getStartTime ( ) , param . getEndTime ( ) ) ;
List < RStatLimitRateDPO > list3 = rStatLimitRateDMapper . getAssessTargetRate ( lineList , param . getStartTime ( ) , param . getEndTime ( ) ) ;
//数据处理
deptList . forEach ( item - > {
deptList . forEach ( item - > {
if ( lineDetailMap . containsKey ( item . getArea ( ) ) ) {
AssessVo assessVo = new AssessVo ( ) ;
assessVo . setName ( item . getName ( ) ) ;
List < String > ll = lineDetailMap . get ( item . getArea ( ) ) . stream ( ) . map ( LineDetail : : getId ) . collect ( Collectors . toList ( ) ) ;
AssessDetailVo comAssess = getAssessData ( item . getId ( ) , item . getName ( ) , ll , list1 , list2 , list3 ) ;
AssessDetailVo comAssess = getAssessData ( item . getId ( ) , item . getName ( ) , ll , list1 , list2 , list3 ) ;
result . add ( comAssess ) ;
}
} ) ;
@@ -161,74 +161,74 @@ public class GridServiceImpl implements IGridService {
@Override
public List < AssessVo . AssessTrendVo > getAssessTrend ( AssessParam param ) {
List < AssessVo . AssessTrendVo > result = new ArrayList < > ( ) ;
LinkedHashMap < String , List < PQSComAssesPO > > map = new LinkedHashMap < > ( ) ;
LinkedHashMap < String , List < PQSComAssesPO > > map = new LinkedHashMap < > ( ) ;
//查询部门监测点关系
DeptGetLineParam deptGetLineParam = new DeptGetLineParam ( ) ;
deptGetLineParam . setDeptId ( param . getDeptIndex ( ) ) ;
deptGetLineParam . setLineRunFlag ( 0 ) ;
List < DeptGetChildrenMoreDTO > list = commTerminalGeneralClient . deptGetLine ( deptGetLineParam ) . getData ( ) ;
//获取监测点集合
Map < String , List < String > > lineMap = this . getLineMap ( list , param . getIsUpToGrid ( ) , null ) ;
Map < String , List < String > > lineMap = this . getLineMap ( list , param . getIsUpToGrid ( ) , null ) ;
List < String > lineList = lineMap . values ( ) . stream ( )
. flatMap ( List : : stream )
. distinct ( )
. collect ( Collectors . toList ( ) ) ;
if ( CollUtil . isNotEmpty ( lineList ) ) {
if ( CollUtil . isNotEmpty ( lineList ) ) {
//获取监测点详细信息
List < LineDetail > lineDetailList = lineFeignClient . getLineDetail ( lineList ) . getData ( ) ;
Map < String , List < LineDetail > > lineDetailMap = lineDetailList . stream ( ) . collect ( Collectors . groupingBy ( LineDetail : : getActualArea ) ) ;
Map < String , List < LineDetail > > lineDetailMap = lineDetailList . stream ( ) . collect ( Collectors . groupingBy ( LineDetail : : getActualArea ) ) ;
//获取部门
List < DeptDTO > deptList = deptFeignClient . getDepSonDetailByDeptId ( param . getDeptIndex ( ) ) . getData ( ) ;
//按月、年来展示数据
if ( Objects . equals ( param . getType ( ) , 1 ) ) {
if ( Objects . equals ( param . getType ( ) , 1 ) ) {
List < Integer > yearList = TimeUtil . getLastFiveYear ( 2 ) ;
yearList . forEach ( year - > {
yearList . forEach ( year - > {
String firstDayOfYear = TimeUtil . getYearFirst ( year ) ;
String lastDayOfYear = TimeUtil . getYearLast ( year ) ;
List < PQSComAssesPO > comAssesList = rStatComassesDMapper . getAvgCount ( lineList , firstDayOfYear , lastDayOfYear ) ;
map . put ( year . toString ( ) , comAssesList ) ;
List < PQSComAssesPO > comAssesList = rStatComassesDMapper . getAvgCount ( lineList , firstDayOfYear , lastDayOfYear ) ;
map . put ( year . toString ( ) , comAssesList ) ;
} ) ;
} else if ( Objects . equals ( param . getType ( ) , 3 ) ) {
} else if ( Objects . equals ( param . getType ( ) , 3 ) ) {
List < YearMonth > monthList = TimeUtil . getLastThreeMonth ( 5 ) ;
monthList . forEach ( month - > {
monthList . forEach ( month - > {
String firstDayOfMonth = month . atDay ( 1 ) . format ( DateTimeFormatter . ofPattern ( " yyyy-MM-dd " ) ) ;
String lastDayOfMonth = month . atEndOfMonth ( ) . format ( DateTimeFormatter . ofPattern ( " yyyy-MM-dd " ) ) ;
List < PQSComAssesPO > comAssesList = rStatComassesDMapper . getAvgCount ( lineList , firstDayOfMonth , lastDayOfMonth ) ;
map . put ( month . toString ( ) , comAssesList ) ;
String lastDayOfMonth = month . atEndOfMonth ( ) . format ( DateTimeFormatter . ofPattern ( " yyyy-MM-dd " ) ) ;
List < PQSComAssesPO > comAssesList = rStatComassesDMapper . getAvgCount ( lineList , firstDayOfMonth , lastDayOfMonth ) ;
map . put ( month . toString ( ) , comAssesList ) ;
} ) ;
}
//数据处理
if ( param . getAreaType ( ) = = 0 ) {
AssessVo . AssessTrendVo vo = new AssessVo . AssessTrendVo ( ) ;
AssessVo . AssessTrendVo vo = new AssessVo . AssessTrendVo ( ) ;
vo . setDeptId ( param . getDeptIndex ( ) ) ;
vo . setDeptName ( " 冀北 " ) ;
List < AssessVo > children = new ArrayList < > ( ) ;
map . forEach ( ( k1 , v1 ) - > {
map . forEach ( ( k1 , v1 ) - > {
AssessVo assessVo = new AssessVo ( ) ;
assessVo . setDataTime ( k1 ) ;
List < PqsComasses > communicateList = BeanUtil . copyToList ( v1 , PqsComasses . class ) ;
List < PqsComasses > communicateList = BeanUtil . copyToList ( v1 , PqsComasses . class ) ;
float synData = comAssesUtil . getAllComAss ( communicateList ) ;
assessVo . setScore ( CollUtil . isEmpty ( communicateList ) ? 3 . 14159f : PubUtils . floatRound ( 2 , synData ) ) ;
assessVo . setScore ( CollUtil . isEmpty ( communicateList ) ? 3 . 14159f : PubUtils . floatRound ( 2 , synData ) ) ;
assessVo . setLevel ( getLevel ( assessVo . getScore ( ) ) ) ;
children . add ( assessVo ) ;
} ) ;
vo . setChildren ( children ) ;
result . add ( vo ) ;
} else {
deptList . forEach ( item - > {
deptList . forEach ( item - > {
if ( lineDetailMap . containsKey ( item . getArea ( ) ) ) {
AssessVo . AssessTrendVo vo = new AssessVo . AssessTrendVo ( ) ;
AssessVo . AssessTrendVo vo = new AssessVo . AssessTrendVo ( ) ;
vo . setDeptId ( item . getId ( ) ) ;
vo . setDeptName ( item . getName ( ) ) ;
List < AssessVo > children = new ArrayList < > ( ) ;
List < String > ll = lineDetailMap . get ( item . getArea ( ) ) . stream ( ) . map ( LineDetail : : getId ) . collect ( Collectors . toList ( ) ) ;
map . forEach ( ( k1 , v1 ) - > {
map . forEach ( ( k1 , v1 ) - > {
AssessVo assessVo = new AssessVo ( ) ;
assessVo . setDataTime ( k1 ) ;
List < PQSComAssesPO > poList = v1 . stream ( ) . filter ( it - > ll . contains ( it . getLineId ( ) ) ) . collect ( Collectors . toList ( ) ) ;
List < PqsComasses > communicateList = BeanUtil . copyToList ( poList , PqsComasses . class ) ;
List < PQSComAssesPO > poList = v1 . stream ( ) . filter ( it - > ll . contains ( it . getLineId ( ) ) ) . collect ( Collectors . toList ( ) ) ;
List < PqsComasses > communicateList = BeanUtil . copyToList ( poList , PqsComasses . class ) ;
float synData = comAssesUtil . getAllComAss ( communicateList ) ;
assessVo . setScore ( CollUtil . isEmpty ( communicateList ) ? 3 . 14159f : PubUtils . floatRound ( 2 , synData ) ) ;
assessVo . setScore ( CollUtil . isEmpty ( communicateList ) ? 3 . 14159f : PubUtils . floatRound ( 2 , synData ) ) ;
assessVo . setLevel ( getLevel ( assessVo . getScore ( ) ) ) ;
children . add ( assessVo ) ;
} ) ;
@@ -247,16 +247,16 @@ public class GridServiceImpl implements IGridService {
vo . setDeptId ( lineId ) ;
List < String > lineList = Collections . singletonList ( lineId ) ;
//获取监测点r_stat_asses_d数据 各指标评估
List < RStatAssesDPO > list1 = rStatAssesDMapper . getData ( startTime , endTime , lineList ) ;
List < RStatAssesDPO > list1 = rStatAssesDMapper . getData ( startTime , endTime , lineList ) ;
//获取监测点r_stat_comasses_d数据 综合评估
List < PQSComAssesPO > list2 = rStatComassesDMapper . getAvgCount ( lineList , startTime , endTime ) ;
List < PQSComAssesPO > list2 = rStatComassesDMapper . getAvgCount ( lineList , startTime , endTime ) ;
if ( CollUtil . isNotEmpty ( list1 ) ) {
this . chanelTargetAssess ( list1 , vo ) ;
this . chanelTargetAssess ( list1 , vo ) ;
}
if ( CollUtil . isNotEmpty ( list2 ) ) {
List < PqsComasses > communicateList = BeanUtil . copyToList ( list2 , PqsComasses . class ) ;
List < PqsComasses > communicateList = BeanUtil . copyToList ( list2 , PqsComasses . class ) ;
float synData = comAssesUtil . getAllComAss ( communicateList ) ;
vo . setAssessData ( PubUtils . floatRound ( 2 , synData ) ) ;
vo . setAssessData ( PubUtils . floatRound ( 2 , synData ) ) ;
vo . setAssessLevel ( getLevel ( synData ) ) ;
}
return vo ;
@@ -271,26 +271,26 @@ public class GridServiceImpl implements IGridService {
deptGetLineParam . setLineRunFlag ( 0 ) ;
List < DeptGetChildrenMoreDTO > list = commTerminalGeneralClient . deptGetLine ( deptGetLineParam ) . getData ( ) ;
//获取监测点集合
Map < String , List < String > > lineMap = this . getLineMap ( list , param . getIsUpToGrid ( ) , null ) ;
Map < String , List < String > > lineMap = this . getLineMap ( list , param . getIsUpToGrid ( ) , null ) ;
List < String > lineList = lineMap . values ( ) . stream ( )
. flatMap ( List : : stream )
. distinct ( )
. collect ( Collectors . toList ( ) ) ;
if ( CollUtil . isNotEmpty ( lineList ) ) {
//获取监测点所有指标数据
List < RStatLimitRateDPO > limitRateList = rStatLimitRateDMapper . getAssessTargetRate ( lineList , param . getStartTime ( ) , param . getEndTime ( ) ) ;
List < RStatLimitRateDPO > limitRateList = rStatLimitRateDMapper . getAssessTargetRate ( lineList , param . getStartTime ( ) , param . getEndTime ( ) ) ;
//获取部门
List < DeptDTO > deptList = deptFeignClient . getDepSonDetailByDeptId ( param . getDeptIndex ( ) ) . getData ( ) ;
deptList . forEach ( item - > {
deptList . forEach ( item - > {
if ( lineMap . containsKey ( item . getId ( ) ) ) {
EvaluationVo . Children children = new EvaluationVo . Children ( ) ;
children . setDeptId ( item . getId ( ) ) ;
children . setDeptName ( item . getName ( ) ) ;
List < String > ll = lineMap . get ( item . getId ( ) ) ;
if ( CollUtil . isNotEmpty ( limitRateList ) ) {
List < RStatLimitRateDPO > l1 = limitRateList . stream ( ) . filter ( it - > ll . contains ( it . getLineId ( ) ) ) . collect ( Collectors . toList ( ) ) ;
if ( CollUtil . isNotEmpty ( l1 ) ) {
this . getDataByTarget ( param . getHarmonicType ( ) , l1 , children ) ;
List < RStatLimitRateDPO > l1 = limitRateList . stream ( ) . filter ( it - > ll . contains ( it . getLineId ( ) ) ) . collect ( Collectors . toList ( ) ) ;
if ( CollUtil . isNotEmpty ( l1 ) ) {
this . getDataByTarget ( param . getHarmonicType ( ) , l1 , children ) ;
}
}
childrenList . add ( children ) ;
@@ -319,7 +319,7 @@ public class GridServiceImpl implements IGridService {
deptGetLineParam . setLineRunFlag ( 0 ) ;
List < DeptGetChildrenMoreDTO > list = commTerminalGeneralClient . deptGetLine ( deptGetLineParam ) . getData ( ) ;
//获取监测点集合
Map < String , List < String > > lineMap = this . getLineMap ( list , param . getIsUpToGrid ( ) , param . getVoltageLevel ( ) ) ;
Map < String , List < String > > lineMap = this . getLineMap ( list , param . getIsUpToGrid ( ) , param . getVoltageLevel ( ) ) ;
List < String > lineList = lineMap . values ( ) . stream ( )
. flatMap ( List : : stream )
. distinct ( )
@@ -384,7 +384,7 @@ public class GridServiceImpl implements IGridService {
deptGetLineParam . setLineRunFlag ( 0 ) ;
List < DeptGetChildrenMoreDTO > list = commTerminalGeneralClient . deptGetLine ( deptGetLineParam ) . getData ( ) ;
//获取监测点集合
Map < String , List < String > > lineMap = this . getLineMap ( list , param . getIsUpToGrid ( ) , null ) ;
Map < String , List < String > > lineMap = this . getLineMap ( list , param . getIsUpToGrid ( ) , null ) ;
List < String > lineList = lineMap . values ( ) . stream ( )
. flatMap ( List : : stream )
. distinct ( )
@@ -394,32 +394,84 @@ public class GridServiceImpl implements IGridService {
// 获取当前年份
int currentYear = currentDate . getYear ( ) ;
LocalDate beginDay = LocalDate . of ( currentYear , 1 , 1 ) ;
List < YearMonth > monthList = TimeUtil . getMonthsBetween ( beginDay , currentDate ) ;
List < YearMonth > monthList = TimeUtil . getMonthsBetween ( beginDay , currentDate ) ;
for ( YearMonth month : monthList ) {
String firstDayOfMonth = month . atDay ( 1 ) . format ( DateTimeFormatter . ofPattern ( " yyyy-MM-dd " ) ) ;
String lastDayOfMonth = month . atEndOfMonth ( ) . format ( DateTimeFormatter . ofPattern ( " yyyy-MM-dd " ) ) ;
String lastDayOfMonth = month . atEndOfMonth ( ) . format ( DateTimeFormatter . ofPattern ( " yyyy-MM-dd " ) ) ;
EvaluationLevelVo . EvaluationRatio vo = new EvaluationLevelVo . EvaluationRatio ( ) ;
vo . setTime ( month . toString ( ) ) ;
vo . setTargetList ( Arrays . asList ( DicDataEnum . FREQUENCY_DEV . getName ( ) , DicDataEnum . VOLTAGE_DEV . getName ( ) , DicDataEnum . THD_V . getName ( ) , DicDataEnum . phase_Voltage . getName ( ) , DicDataEnum . FLICKER . getName ( ) ) ) ;
vo . setTargetList ( Arrays . asList ( DicDataEnum . FREQUENCY_DEV . getName ( ) ,
DicDataEnum . VOLTAGE_DEV . getName ( ) ,
DicDataEnum . THD_V . getName ( ) ,
DicDataEnum . phase_Voltage . getName ( ) ,
DicDataEnum . FLICKER . getName ( ) ,
DicDataEnum . HARMONIC_VOLTAGE . getName ( ) ,
DicDataEnum . HARMONIC_CURRENT . getName ( ) ,
DicDataEnum . INTERHARMONIC_VOLTAGE . getName ( ) ,
DicDataEnum . NEG_CURRENT . getName ( )
) ) ;
//获取监测点越限集合
List < RStatLimitRateDPO > overLimitList = rStatLimitRateDMapper . getAssessTargetRate ( lineList , firstDayOfMonth , lastDayOfMonth ) ;
List < RStatLimitRateDPO > overLimitList = rStatLimitRateDMapper . getAssessTargetRate ( lineList , firstDayOfMonth , lastDayOfMonth ) ;
if ( CollUtil . isNotEmpty ( overLimitList ) ) {
long freqDev = overLimitList . stream ( ) . filter ( obj - > obj . getFreqDevOvertime ( ) > 0 ) . count ( ) ;
long vDev = overLimitList . stream ( ) . filter ( obj - > obj . getVoltageDevOvertime ( ) > 0 ) . count ( ) ;
long vThd = overLimitList . stream ( ) . filter ( obj - > obj . getUaberranceOvertime ( ) > 0 ) . count ( ) ;
long ubalance = overLimitList . stream ( ) . filter ( obj - > obj . getUbalanceOvertime ( ) > 0 ) . count ( ) ;
long plt = overLimitList . stream ( ) . filter ( obj - > obj . getFlickerOvertime ( ) > 0 ) . count ( ) ;
vo . setRatioList ( Arrays . asList ( PubUtils . doubleRound ( 2 , freqDev * 100 . 0 / overLimitList . size ( ) )
, PubUtils . doubleRound ( 2 , vDev * 100 . 0 / overLimitList . size ( ) )
, PubUtils . doubleRound ( 2 , vThd * 100 . 0 / o verL imitList . size ( ) )
, PubUtils . doubleRound ( 2 , ubalance * 100 . 0 / over LimitList . size ( ) )
, PubUtils . doubleRound ( 2 , plt * 100 . 0 / over LimitList . size ( ) ) ) ) ;
long uHarm = overLimitList . stream ( ) . filter ( x - > getLimitRateStats ( x , 2 , 26 , " uharm " , " O vert ime " ) ) . count ( ) ;
long iHarm = overLimitList . stream ( ) . filter ( x - > get LimitRateStats ( x , 2 , 26 , " iharm " , " Overtime " ) ) . count ( ) ;
long inuHarm = overLimitList . stream ( ) . filter ( x - > get LimitRateStats ( x , 1 , 16 , " inuharm " , " Overtime " ) ) . count ( ) ;
long iNeg = overLimitList . stream ( ) . filter ( obj - > obj . getINegOvertime ( ) > 0 ) . count ( ) ;
vo . setRatioList ( Arrays . asList ( PubUtils . doubleRound ( 2 , freqDev * 100 . 0 / overLimitList . size ( ) ) ,
PubUtils . doubleRound ( 2 , vDev * 100 . 0 / overLimitList . size ( ) ) ,
PubUtils . doubleRound ( 2 , vThd * 100 . 0 / overLimitList . size ( ) ) ,
PubUtils . doubleRound ( 2 , ubalance * 100 . 0 / overLimitList . size ( ) ) ,
PubUtils . doubleRound ( 2 , plt * 100 . 0 / overLimitList . size ( ) ) ,
PubUtils . doubleRound ( 2 , uHarm * 100 . 0 / overLimitList . size ( ) ) ,
PubUtils . doubleRound ( 2 , iHarm * 100 . 0 / overLimitList . size ( ) ) ,
PubUtils . doubleRound ( 2 , inuHarm * 100 . 0 / overLimitList . size ( ) ) ,
PubUtils . doubleRound ( 2 , iNeg * 100 . 0 / overLimitList . size ( ) ) ) ) ;
}
result . add ( vo ) ;
}
return result ;
}
/**
*
* @param limitRateDPO 对象
* @param startNum 循环开始
* @param endNum 循环结束
* @param start 属性名开始
* @param end 属性名结束
* @return
*/
public Boolean getLimitRateStats ( RStatLimitRateDPO limitRateDPO , Integer startNum , Integer endNum , String start , String end ) {
try {
for ( int i = startNum ; i < endNum ; i + + ) {
String fieldName = start + i + end ;
Field field = limitRateDPO . getClass ( ) . getDeclaredField ( fieldName ) ;
//设置对象的访问权限, 保证对private的属性的访问
field . setAccessible ( true ) ;
int v = Integer . parseInt ( field . get ( field ) . toString ( ) ) ;
if ( v > 0 ) {
return true ;
}
}
} catch ( Exception e ) {
throw new RuntimeException ( e ) ;
}
return false ;
}
@Override
public List < EvaluationLevelVo . EvaluationDetail > getEvaluationDetail ( AssessParam param ) {
List < EvaluationLevelVo . EvaluationDetail > result = new ArrayList < > ( ) ;
@@ -558,15 +610,7 @@ public class GridServiceImpl implements IGridService {
if ( map . containsKey ( item . getId ( ) ) ) {
RStatLimitRateDPO item2 = map . get ( item . getId ( ) ) ;
if ( ! Objects . isNull ( item2 ) & & item2 . getAllTime ( ) > 0 ) {
if ( item2 . getAllTime ( ) > 0 ) {
qualifiedDetail . setFreqDev ( PubUtils . doubleRound ( 2 , 100 . 0 - ( item2 . getFreqDevOvertime ( ) * 100 . 0 / item2 . getAllTime ( ) ) ) ) ;
qualifiedDetail . setVDev ( PubUtils . doubleRound ( 2 , 100 . 0 - ( item2 . getVoltageDevOvertime ( ) * 100 . 0 / item2 . getAllTime ( ) ) ) ) ;
qualifiedDetail . setVThd ( PubUtils . doubleRound ( 2 , 100 . 0 - ( item2 . getUaberranceOvertime ( ) * 100 . 0 / item2 . getAllTime ( ) ) ) ) ;
qualifiedDetail . setUbalance ( PubUtils . doubleRound ( 2 , 100 . 0 - ( item2 . getUbalanceOvertime ( ) * 100 . 0 / item2 . getAllTime ( ) ) ) ) ;
}
if ( item2 . getFlickerAllTime ( ) > 0 ) {
qualifiedDetail . setPlt ( PubUtils . doubleRound ( 2 , 100 . 0 - ( item2 . getFlickerOvertime ( ) * 100 . 0 / item2 . getFlickerAllTime ( ) ) ) ) ;
}
addQualifiedDetail ( qualifiedDetail , item2 ) ;
}
}
result . add ( qualifiedDetail ) ;
@@ -579,6 +623,7 @@ public class GridServiceImpl implements IGridService {
return result ;
}
@Override
public EvaluationLevelVo . QualifiedDetail getLineQualifiedDetail ( String lineId , String startTime , String endTime ) {
EvaluationLevelVo . QualifiedDetail detail = new EvaluationLevelVo . QualifiedDetail ( ) ;
@@ -586,19 +631,86 @@ public class GridServiceImpl implements IGridService {
List < RStatLimitRateDPO > overLimitList = rStatLimitRateDMapper . getAssessTargetRate ( lineList , startTime , endTime ) ;
if ( CollUtil . isNotEmpty ( overLimitList ) ) {
RStatLimitRateDPO dpo = overLimitList . get ( 0 ) ;
if ( dpo . getAllTime ( ) > 0 ) {
detail . setFreqDev ( PubUtils . doubleRound ( 2 , 100 . 0 - ( dpo . getFreqDevOvertime ( ) * 100 . 0 / dpo . getAllTime ( ) ) ) ) ;
detail . setVDev ( PubUtils . doubleRound ( 2 , 100 . 0 - ( dpo . getVoltageDevOvertime ( ) * 100 . 0 / dpo . getAllTime ( ) ) ) ) ;
detail . setVThd ( PubUtils . doubleRound ( 2 , 100 . 0 - ( dpo . getUaberranceOvertime ( ) * 100 . 0 / dpo . getAllTime ( ) ) ) ) ;
detail . setUbalance ( PubUtils . doubleRound ( 2 , 100 . 0 - ( dpo . getUbalanceOvertime ( ) * 100 . 0 / dpo . getAllTime ( ) ) ) ) ;
}
if ( dpo . getFlickerAllTime ( ) > 0 ) {
detail . setPlt ( PubUtils . doubleRound ( 2 , 100 . 0 - ( dpo . getFlickerOvertime ( ) * 100 . 0 / dpo . getFlickerAllTime ( ) ) ) ) ;
}
addQualifiedDetail ( detail , dpo ) ;
}
return detail ;
}
private void addQualifiedDetail ( EvaluationLevelVo . QualifiedDetail qualifiedDetail , RStatLimitRateDPO item2 ) {
if ( item2 . getAllTime ( ) > 0 ) {
qualifiedDetail . setFreqDev ( PubUtils . doubleRound ( 2 , 100 . 0 - ( item2 . getFreqDevOvertime ( ) * 100 . 0 / item2 . getAllTime ( ) ) ) ) ;
qualifiedDetail . setVDev ( PubUtils . doubleRound ( 2 , 100 . 0 - ( item2 . getVoltageDevOvertime ( ) * 100 . 0 / item2 . getAllTime ( ) ) ) ) ;
qualifiedDetail . setVThd ( PubUtils . doubleRound ( 2 , 100 . 0 - ( item2 . getUaberranceOvertime ( ) * 100 . 0 / item2 . getAllTime ( ) ) ) ) ;
qualifiedDetail . setUbalance ( PubUtils . doubleRound ( 2 , 100 . 0 - ( item2 . getUbalanceOvertime ( ) * 100 . 0 / item2 . getAllTime ( ) ) ) ) ;
qualifiedDetail . setUHarm ( PubUtils . doubleRound ( 2 , 100 . 0 - ( ( item2 . getUharm2Overtime ( ) +
item2 . getUharm3Overtime ( ) +
item2 . getUharm4Overtime ( ) +
item2 . getUharm5Overtime ( ) +
item2 . getUharm6Overtime ( ) +
item2 . getUharm7Overtime ( ) +
item2 . getUharm8Overtime ( ) +
item2 . getUharm9Overtime ( ) +
item2 . getUharm10Overtime ( ) +
item2 . getUharm11Overtime ( ) +
item2 . getUharm12Overtime ( ) +
item2 . getUharm13Overtime ( ) +
item2 . getUharm14Overtime ( ) +
item2 . getUharm15Overtime ( ) +
item2 . getUharm16Overtime ( ) +
item2 . getUharm17Overtime ( ) +
item2 . getUharm18Overtime ( ) +
item2 . getUharm19Overtime ( ) +
item2 . getUharm20Overtime ( ) +
item2 . getUharm21Overtime ( ) +
item2 . getUharm22Overtime ( ) +
item2 . getUharm23Overtime ( ) +
item2 . getUharm24Overtime ( ) +
item2 . getUharm25Overtime ( ) ) * 100 . 0 / item2 . getAllTime ( ) ) ) ) ;
qualifiedDetail . setIHarm ( PubUtils . doubleRound ( 2 , 100 . 0 - ( ( item2 . getIharm2Overtime ( ) +
item2 . getIharm4Overtime ( ) +
item2 . getIharm5Overtime ( ) +
item2 . getIharm6Overtime ( ) +
item2 . getIharm7Overtime ( ) +
item2 . getIharm8Overtime ( ) +
item2 . getIharm9Overtime ( ) +
item2 . getIharm10Overtime ( ) +
item2 . getIharm11Overtime ( ) +
item2 . getIharm12Overtime ( ) +
item2 . getIharm13Overtime ( ) +
item2 . getIharm14Overtime ( ) +
item2 . getIharm15Overtime ( ) +
item2 . getIharm16Overtime ( ) +
item2 . getIharm17Overtime ( ) +
item2 . getIharm18Overtime ( ) +
item2 . getIharm19Overtime ( ) +
item2 . getIharm20Overtime ( ) +
item2 . getIharm21Overtime ( ) +
item2 . getIharm22Overtime ( ) +
item2 . getIharm23Overtime ( ) +
item2 . getIharm24Overtime ( ) +
item2 . getIharm25Overtime ( ) ) * 100 . 0 / item2 . getAllTime ( ) ) ) ) ;
qualifiedDetail . setInuHarm ( PubUtils . doubleRound ( 2 , 100 . 0 - ( ( item2 . getInuharm1Overtime ( ) +
item2 . getInuharm2Overtime ( ) +
item2 . getInuharm3Overtime ( ) +
item2 . getInuharm4Overtime ( ) +
item2 . getInuharm5Overtime ( ) +
item2 . getInuharm6Overtime ( ) +
item2 . getInuharm7Overtime ( ) +
item2 . getInuharm8Overtime ( ) +
item2 . getInuharm9Overtime ( ) +
item2 . getInuharm10Overtime ( ) +
item2 . getInuharm11Overtime ( ) +
item2 . getInuharm12Overtime ( ) +
item2 . getInuharm13Overtime ( ) +
item2 . getInuharm14Overtime ( ) +
item2 . getInuharm15Overtime ( ) +
item2 . getInuharm16Overtime ( ) ) * 100 . 0 / item2 . getAllTime ( ) ) ) ) ;
qualifiedDetail . setINeg ( PubUtils . doubleRound ( 2 , 100 . 0 - ( item2 . getINegOvertime ( ) * 100 . 0 / item2 . getAllTime ( ) ) ) ) ;
}
if ( item2 . getFlickerAllTime ( ) > 0 ) {
qualifiedDetail . setPlt ( PubUtils . doubleRound ( 2 , 100 . 0 - ( item2 . getFlickerOvertime ( ) * 100 . 0 / item2 . getFlickerAllTime ( ) ) ) ) ;
}
}
/**
* 获取监测点频率偏差 T相最大值
*/
@@ -634,6 +746,34 @@ public class GridServiceImpl implements IGridService {
return statDataVDMapper . getUnbalance ( lineList , startTime , endTime ) ;
}
/**
* 谐波电压含有率 A、B、C三相最大值的平均值
*/
private List < RStatDataVD > getList6 ( List < String > lineList , String startTime , String endTime ) {
return statDataVDMapper . getV ( lineList , startTime , endTime ) ;
}
/**
* 谐波电流 A、B、C三相最大值的平均值
*/
private List < RStatDataIDPO > getList7 ( List < String > lineList , String startTime , String endTime ) {
return statDataIDMapper . getI ( lineList , startTime , endTime ) ;
}
/**
* 间谐波电压含有率 A、B、C三相最大值的平均值
*/
private List < RStatDataInharmVDPO > getList8 ( List < String > lineList , String startTime , String endTime ) {
return rStatDataInharmVDMapper . getV ( lineList , startTime , endTime ) ;
}
/**
* 获取监测点负序电流 A、B、C三相最大值的平均值
*/
public List < RStatDataIDPO > getList9 ( List < String > lineList , String startTime , String endTime ) {
return statDataIDMapper . getINeg ( lineList , startTime , endTime ) ;
}
/**
* 计算标准差
*/
@@ -691,6 +831,34 @@ public class GridServiceImpl implements IGridService {
. collect ( Collectors . toList ( ) ) ;
children . setRatio ( PubUtils . doubleRound ( 2 , filteredList5 . size ( ) * 100 . 0 / limitRateList . size ( ) ) ) ;
break ;
//谐波电压
case 6 :
List < RStatLimitRateDPO > filteredList6 = limitRateList . stream ( )
. filter ( x - > getLimitRateStats ( x , 2 , 26 , " uharm " , " Overtime " ) )
. collect ( Collectors . toList ( ) ) ;
children . setRatio ( PubUtils . doubleRound ( 2 , filteredList6 . size ( ) * 100 . 0 / limitRateList . size ( ) ) ) ;
break ;
//谐波电流
case 7 :
List < RStatLimitRateDPO > filteredList7 = limitRateList . stream ( )
. filter ( x - > getLimitRateStats ( x , 2 , 26 , " iharm " , " Overtime " ) )
. collect ( Collectors . toList ( ) ) ;
children . setRatio ( PubUtils . doubleRound ( 2 , filteredList7 . size ( ) * 100 . 0 / limitRateList . size ( ) ) ) ;
break ;
//间谐波电压
case 8 :
List < RStatLimitRateDPO > filteredList8 = limitRateList . stream ( )
. filter ( x - > getLimitRateStats ( x , 1 , 16 , " inuharm " , " Overtime " ) )
. collect ( Collectors . toList ( ) ) ;
children . setRatio ( PubUtils . doubleRound ( 2 , filteredList8 . size ( ) * 100 . 0 / limitRateList . size ( ) ) ) ;
break ;
//负序电流
case 9 :
List < RStatLimitRateDPO > filteredList9 = limitRateList . stream ( )
. filter ( data - > data . getINegOvertime ( ) > 0 )
. collect ( Collectors . toList ( ) ) ;
children . setRatio ( PubUtils . doubleRound ( 2 , filteredList9 . size ( ) * 100 . 0 / limitRateList . size ( ) ) ) ;
break ;
default :
break ;
}