@@ -2,6 +2,7 @@ package com.njcn.harmonic.service.impl;
import cn.hutool.core.bean.BeanUtil ;
import cn.hutool.core.collection.CollUtil ;
import cn.hutool.core.collection.CollectionUtil ;
import cn.hutool.core.date.DateUtil ;
import cn.hutool.core.io.FileUtil ;
@@ -16,7 +17,7 @@ import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO;
import com.njcn.device.pq.pojo.dto.OverLimitLineDTO ;
import com.njcn.device.pq.pojo.dto.PollutionParamDTO ;
import com.njcn.device.pq.pojo.dto.WarningSubstationDTO ;
import com.njcn.d evice.pq.pojo.vo.AreaLineInfoVO ;
import com.njcn.event.api.EventDetailFeignClient ;
import com.njcn.harmonic.constant.Param ;
import com.njcn.harmonic.mapper.RStatLimitRateDMapper ;
import com.njcn.harmonic.mapper.RStatLimitTargetMapper ;
@@ -27,7 +28,6 @@ import com.njcn.harmonic.pojo.excel.monitor.OverLimitDays;
import com.njcn.harmonic.pojo.excel.monitor.UTimes ;
import com.njcn.harmonic.pojo.excel.substation.SubstationExcel ;
import com.njcn.harmonic.pojo.po.EventDetail ;
import com.njcn.harmonic.pojo.po.LimitRate ;
import com.njcn.harmonic.pojo.po.LimitTarget ;
import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO ;
import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO ;
@@ -38,6 +38,10 @@ import com.njcn.harmonic.pojo.vo.WarningSubstationVO;
import com.njcn.harmonic.service.IAnalyzeService ;
import com.njcn.influxdb.utils.InfluxDbUtils ;
import com.njcn.poi.excel.ExcelUtil ;
import com.njcn.system.api.DicDataFeignClient ;
import com.njcn.system.enums.DicDataEnum ;
import com.njcn.system.enums.DicDataTypeEnum ;
import com.njcn.system.pojo.po.DictData ;
import com.njcn.web.utils.RequestUtil ;
import lombok.AllArgsConstructor ;
import lombok.extern.slf4j.Slf4j ;
@@ -78,31 +82,33 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
private final RStatLimitRateDMapper rateDMapper ;
private final RStatLimitTargetMapper targetMapper ;
private final EventDetailFeignClient eventDetailFeignClient ;
private final DicDataFeignClient dicDataFeignClient ;
@Override
public Page < OverAreaLimitVO > getAreaData ( OverAreaVO param ) {
public Page < OverAreaLimitVO > getAreaData ( OverAreaVO param ) {
Page < OverAreaLimitVO > page = new Page < > ( ) ;
page . setSize ( param . getPageSize ( ) ) ;
page . setCurrent ( param . getPageNum ( ) ) ;
List < OverAreaLimitVO > list = new ArrayList < > ( ) ;
param . setServerName ( generalInfo . getMicroServiceName ( ) ) ;
List < GeneralDeviceDTO > deptList = generalDeviceInfoClient . getPracticalRunDeviceInfo ( param ) . getData ( ) ;
if ( ! CollectionUtils . isEmpty ( deptList ) ) {
if ( ! CollectionUtils . isEmpty ( deptList ) ) {
page . setTotal ( deptList . size ( ) ) ;
int pages = ( int ) Math . ceil ( deptList . size ( ) * 1 . 0 / param . getPageSize ( ) ) ;
int pages = ( int ) Math . ceil ( deptList . size ( ) * 1 . 0 / param . getPageSize ( ) ) ;
page . setPages ( pages ) ;
List < List < GeneralDeviceDTO > > pageList = Lists . partition ( deptList , param . getPageSize ( ) ) ;
List < GeneralDeviceDTO > temList = pageList . get ( param . getPageNum ( ) - 1 ) ;
temList . forEach ( item - > {
List < List < GeneralDeviceDTO > > pageList = Lists . partition ( deptList , param . getPageSize ( ) ) ;
List < GeneralDeviceDTO > temList = pageList . get ( param . getPageNum ( ) - 1 ) ;
temList . forEach ( item - > {
OverAreaLimitVO overAreaLimitVO = new OverAreaLimitVO ( ) ;
if ( ! CollectionUtils . isEmpty ( item . getLineIndexes ( ) ) ) {
List < LimitTarget > limitTargetList = harmonicService . getLimitTarget ( item . getLineIndexes ( ) , param . getSearchBeginTime ( ) , param . getSearchEndTime ( ) ) ;
overAreaLimitVO = handleAreaData ( limitTargetList , item . getLineIndexes ( ) , param ) ;
if ( ! CollectionUtils . isEmpty ( item . getLineIndexes ( ) ) ) {
List < LimitTarget > limitTargetList = harmonicService . getLimitTarget ( item . getLineIndexes ( ) , param . getSearchBeginTime ( ) , param . getSearchEndTime ( ) ) ;
overAreaLimitVO = handleAreaData ( limitTargetList , item . getLineIndexes ( ) , param ) ;
}
overAreaLimitVO . setName ( item . getName ( ) ) ;
list . add ( overAreaLimitVO ) ;
} ) ;
if ( ! CollectionUtils . isEmpty ( list ) ) {
if ( ! CollectionUtils . isEmpty ( list ) ) {
List < OverAreaLimitVO > recordList = new ArrayList < > ( ) ;
//默认 根据在线监测点个数 倒叙排序
recordList = list . stream ( ) . sorted ( Comparator . comparing ( OverAreaLimitVO : : getOnlineMonitorNumber ) . reversed ( ) . thenComparing ( OverAreaLimitVO : : getName ) ) . collect ( Collectors . toList ( ) ) ;
@@ -116,157 +122,170 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
@Override
@SuppressWarnings ( " unchecked " )
public Page < WarningSubstationVO > getWarningSubstation ( OverAreaVO param ) {
//获取暂态统计指标
List < DictData > eventStatis = dicDataFeignClient . getDicDataByTypeCode (
DicDataTypeEnum . EVENT_STATIS . getCode ( ) ) . getData ( ) ;
Page < WarningSubstationVO > page = new Page < > ( ) ;
page . setSize ( param . getPageSize ( ) ) ;
page . setCurrent ( param . getPageNum ( ) ) ;
List < String > line = new ArrayList < > ( ) , subInfo = new ArrayList < > ( ) ;
List < String > line = new ArrayList < > ( ) , subInfo = new ArrayList < > ( ) ;
List < WarningSubstationDTO > substationDTOList = new ArrayList < > ( ) ;
Map < String , List < LimitRate > > map = new HashMap < > ( ) ;
Map < String , List < EventDetail > > map2 = new HashMap < > ( ) ;
Map < String , List < RStat LimitRateDPO > > map = new HashMap < > ( ) ;
Map < String , List < com . njcn . event . pojo . po . EventDetail> > map2 = new HashMap < > ( ) ;
param . setServerName ( generalInfo . getMicroServiceName ( ) ) ;
List < WarningSubstationVO > list = new ArrayList < > ( ) ;
List < GeneralDeviceDTO > subList = generalDeviceInfoClient . getPracticalRunDeviceInfoAsSubstation ( param ) . getData ( ) ;
if ( ! CollectionUtils . isEmpty ( subList ) ) {
if ( ! CollectionUtils . isEmpty ( subList ) ) {
page . setTotal ( subList . size ( ) ) ;
int pages = ( int ) Math . ceil ( subList . size ( ) * 1 . 0 / param . getPageSize ( ) ) ;
int pages = ( int ) Math . ceil ( subList . size ( ) * 1 . 0 / param . getPageSize ( ) ) ;
page . setPages ( pages ) ;
List < List < GeneralDeviceDTO > > pageList = Lists . partition ( subList , param . getPageSize ( ) ) ;
List < GeneralDeviceDTO > temList = pageList . get ( param . getPageNum ( ) - 1 ) ;
temList . forEach ( item - > {
List < List < GeneralDeviceDTO > > pageList = Lists . partition ( subList , param . getPageSize ( ) ) ;
List < GeneralDeviceDTO > temList = pageList . get ( param . getPageNum ( ) - 1 ) ;
temList . forEach ( item - > {
line . addAll ( item . getLineIndexes ( ) ) ;
subInfo . add ( item . getIndex ( ) ) ;
} ) ;
if ( ! CollectionUtils . isEmpty ( line ) ) {
substationDTOList = lineFeignClient . getWarningSub ( subInfo ) . getData ( ) ;
List < LimitRate > limitRateList = ( List < LimitRate > ) getAllData ( line , param . getSearchBeginTime ( ) , param . getSearchEndTime ( ) , Param . LIMIT_RATE ) ;
if ( ! CollectionUtils . isEmpty ( limitRateList ) ) {
map = limitRateList . stream ( ) . collect ( Collectors . groupingBy ( LimitRate : : getLineId ) ) ;
if ( ! CollectionUtils . isEmpty ( line ) ) {
substationDTOList = lineFeignClient . getWarningSub ( subInfo ) . getData ( ) ;
List < RStat LimitRateDPO > limitRateList = ( List < RStat LimitRateDPO > ) getAllData ( line , param . getSearchBeginTime ( ) , param . getSearchEndTime ( ) , Param . LIMIT_RATE ) ;
if ( ! CollectionUtils . isEmpty ( limitRateList ) ) {
map = limitRateList . stream ( ) . collect ( Collectors . groupingBy ( RStat LimitRateDPO : : getLineId ) ) ;
}
List < EventDetail > eventDetailList = getEventDetail ( line , param . getSearchBeginTime ( ) , param . getSearchEndTime ( ) ) ;
if ( ! CollectionUtils . isEmpty ( eventDetailList ) ) {
map2 = eventDetailList . stream ( ) . collect ( Collectors . groupingBy ( EventDetail : : getLineId ) ) ;
List < com . njcn . event . pojo . po . EventDetail> eventDetailList = getEventDetail ( line , param . getSearchBeginTime ( ) , param . getSearchEndTime ( ) ) ;
if ( ! CollectionUtils . isEmpty ( eventDetailList ) ) {
map2 = eventDetailList . stream ( ) . collect ( Collectors . groupingBy ( com . njcn . event . pojo . po . EventDetail: : getLineId ) ) ;
}
}
for ( GeneralDeviceDTO item : temList ) {
int onlineMonitorCount = 0 , alertMonitorCount = 0 , alertCount = 0 , freqCount = 0 , voltageCount = 0 , ubalanceCount = 0 , flickerCount = 0 , iNegCount = 0 , uharmCount = 0 , iharmCount = 0 , inuharmCount = 0 ;
int freqCounts = 0 , voltageCounts = 0 , uharmCounts = 0 , iharmCounts = 0 , ubalanceCounts = 0 , flickerCounts = 0 , inuharmCounts = 0 , iNegCounts = 0 ;
int eventUp = 0 , eventDown = 0 , eventInterrupt = 0 , eventUps = 0 , eventDowns = 0 , eventInterrupts = 0 ;
int onlineMonitorCount = 0 , alertMonitorCount = 0 , alertCount = 0 , freqCount = 0 , voltageCount = 0 , ubalanceCount = 0 , flickerCount = 0 , iNegCount = 0 , uharmCount = 0 , iharmCount = 0 , inuharmCount = 0 ;
int freqCounts = 0 , voltageCounts = 0 , uharmCounts = 0 , iharmCounts = 0 , ubalanceCounts = 0 , flickerCounts = 0 , inuharmCounts = 0 , iNegCounts = 0 ;
int eventUp = 0 , eventDown = 0 , eventInterrupt = 0 , eventUps = 0 , eventDowns = 0 , eventInterrupts = 0 ;
WarningSubstationVO warningSubstationVO = new WarningSubstationVO ( ) ;
//电站id
warningSubstationVO . setId ( item . getIndex ( ) ) ;
//电站名称
warningSubstationVO . setPlantName ( item . getName ( ) ) ;
List < String > lineList = item . getLineIndexes ( ) ;
if ( ! CollectionUtils . isEmpty ( lineList ) ) {
if ( ! CollectionUtils . isEmpty ( lineList ) ) {
for ( String item2 : lineList ) {
//谐波统计
if ( ! CollectionUtils . isEmpty ( map . get ( item2 ) ) ) {
LimitRate limitRate = map . get ( item2 ) . get ( 0 ) ;
if ( ! Objects . isNull ( limitRate ) ) {
if ( ! CollectionUtils . isEmpty ( map . get ( item2 ) ) ) {
RStat LimitRateDPO limitRate = map . get ( item2 ) . get ( 0 ) ;
if ( ! Objects . isNull ( limitRate ) ) {
onlineMonitorCount + + ;
if ( limitRate . getFreqDevOverT ime ( ) > 0 | | limitRate . getVoltageDevOverT ime ( ) > 0 | | limitRate . getUB alanceOverT ime ( ) > 0 | | limitRate . getFlickerOverT ime ( ) > 0 | | limitRate . getINegOverT ime ( ) > 0 | | limitRate . getUH arm2OverT ime ( ) > 0 | | limitRate . getIH arm2OverT ime ( ) > 0 | | limitRate . getInuH arm1OverT ime ( ) > 0 ) {
if ( limitRate . getFreqDevOvert ime ( ) > 0 | | limitRate . getVoltageDevOvert ime ( ) > 0 | | limitRate . getUb alanceOvert ime ( ) > 0 | | limitRate . getFlickerOvert ime ( ) > 0 | | limitRate . getINegOvert ime ( ) > 0 | | limitRate . getUh arm2Overt ime ( ) > 0 | | limitRate . getIh arm2Overt ime ( ) > 0 | | limitRate . getInuh arm1Overt ime ( ) > 0 ) {
alertMonitorCount + + ;
}
if ( limitRate . getFreqDevOverT ime ( ) > 0 ) {
if ( limitRate . getFreqDevOvert ime ( ) > 0 ) {
freqCount + + ;
freqCounts = freqCounts + limitRate . getFreqDevOverT ime ( ) ;
freqCounts = freqCounts + limitRate . getFreqDevOvert ime ( ) ;
}
if ( limitRate . getVoltageDevOverT ime ( ) > 0 ) {
if ( limitRate . getVoltageDevOvert ime ( ) > 0 ) {
voltageCount + + ;
voltageCounts = voltageCounts + limitRate . getVoltageDevOverT ime ( ) ;
voltageCounts = voltageCounts + limitRate . getVoltageDevOvert ime ( ) ;
}
if ( limitRate . getUH arm2OverT ime ( ) > 0 ) {
if ( limitRate . getUh arm2Overt ime ( ) > 0 ) {
uharmCount + + ;
uharmCounts = uharmCounts + limitRate . getUH arm2OverT ime ( ) ;
uharmCounts = uharmCounts + limitRate . getUh arm2Overt ime ( ) ;
}
if ( limitRate . getIH arm2OverT ime ( ) > 0 ) {
if ( limitRate . getIh arm2Overt ime ( ) > 0 ) {
iharmCount + + ;
iharmCounts = iharmCounts + limitRate . getIH arm2OverT ime ( ) ;
iharmCounts = iharmCounts + limitRate . getIh arm2Overt ime ( ) ;
}
if ( limitRate . getUB alanceOverT ime ( ) > 0 ) {
if ( limitRate . getUb alanceOvert ime ( ) > 0 ) {
ubalanceCount + + ;
ubalanceCounts = ubalanceCounts + limitRate . getUB alanceOverT ime ( ) ;
ubalanceCounts = ubalanceCounts + limitRate . getUb alanceOvert ime ( ) ;
}
if ( limitRate . getFlickerOverT ime ( ) > 0 ) {
if ( limitRate . getFlickerOvert ime ( ) > 0 ) {
flickerCount + + ;
flickerCounts = flickerCounts + limitRate . getFlickerOverT ime ( ) ;
flickerCounts = flickerCounts + limitRate . getFlickerOvert ime ( ) ;
}
if ( limitRate . getInuH arm1OverT ime ( ) > 0 ) {
if ( limitRate . getInuh arm1Overt ime ( ) > 0 ) {
inuharmCount + + ;
inuharmCounts = inuharmCounts + limitRate . getInuH arm1OverT ime ( ) ;
inuharmCounts = inuharmCounts + limitRate . getInuh arm1Overt ime ( ) ;
}
if ( limitRate . getINegOverT ime ( ) > 0 ) {
if ( limitRate . getINegOvert ime ( ) > 0 ) {
iNegCount + + ;
iNegCounts = iNegCounts + limitRate . getINegOverT ime ( ) ;
iNegCounts = iNegCounts + limitRate . getINegOvert ime ( ) ;
}
alertCount = limitRate . getFreqDevOverT ime ( ) + limitRate . getVoltageDevOverT ime ( ) + limitRate . getUB alanceOverT ime ( ) + limitRate . getFlickerOverT ime ( ) + limitRate . getINegOverT ime ( ) + limitRate . getUH arm2OverT ime ( ) + limitRate . getIH arm2OverT ime ( ) + limitRate . getInuH arm1OverT ime ( ) ;
alertCount = limitRate . getFreqDevOvert ime ( ) + limitRate . getVoltageDevOvert ime ( ) + limitRate . getUb alanceOvert ime ( ) + limitRate . getFlickerOvert ime ( ) + limitRate . getINegOvert ime ( ) + limitRate . getUh arm2Overt ime ( ) + limitRate . getIh arm2Overt ime ( ) + limitRate . getInuh arm1Overt ime ( ) ;
}
}
//暂降统计
if ( ! CollectionUtils . isEmpty ( map2 . get ( item2 ) ) ) {
List < EventDetail > eventDetailList = map2 . get ( item2 ) ;
if ( ! CollectionUtils . isEmpty ( eventDetailList ) ) {
for ( EventDetail item3 : eventDetailList ) {
if ( item3 . getWave Type ( ) = = 1 ) {
eventDowns + + ;
} else if ( item3 . getWaveType ( ) = = 2 ) {
eventUps + + ;
} else if ( item3 . getWaveTyp e ( ) = = 3 ) {
eventInterrupt s + + ;
if ( ! CollectionUtils . isEmpty ( map2 . get ( item2 ) ) ) {
List < com . njcn . event . pojo . po . EventDetail> eventDetailList = map2 . get ( item2 ) ;
if ( ! CollectionUtils . isEmpty ( eventDetailList ) ) {
for ( com . njcn . event . pojo . po . EventDetail item3 : eventDetailList ) {
String eventType = item3 . getEvent Type ( ) ;
List < String > code = eventStatis . stream ( ) . filter ( x - > x . getId ( ) . equals ( eventType ) )
. map ( DictData : : getCode ) . collect ( Collectors . toList ( ) ) ;
if ( CollUtil . isNotEmpty ( code ) ) {
if ( DicDataEnum . VOLTAGE_DIP . getCod e ( ) . equals ( code . get ( 0 ) ) ) {
eventDown s + + ;
}
if ( DicDataEnum . VOLTAGE_RISE . getCode ( ) . equals ( code . get ( 0 ) ) ) {
eventUps + + ;
}
if ( DicDataEnum . SHORT_INTERRUPTIONS . getCode ( ) . equals ( code . get ( 0 ) ) ) {
eventInterrupts + + ;
}
}
}
}
}
if ( eventDowns > 0 ) {
if ( eventDowns > 0 ) {
eventDown + + ;
}
if ( eventUps > 0 ) {
if ( eventUps > 0 ) {
eventUp + + ;
}
if ( eventInterrupts > 0 ) {
if ( eventInterrupts > 0 ) {
eventInterrupt + + ;
}
}
}
//在线监测点数量(个)
warningSubstationVO . setOnlineMonitorCounts ( onlineMonitorCount ) ;
if ( onlineMonitorCount ! = 0 ) {
if ( onlineMonitorCount ! = 0 ) {
//告警监测点数量(个)
warningSubstationVO . setAlertMonitorCounts ( alertMonitorCount ) ;
//告警次数
warningSubstationVO . setAlertCounts ( alertCount ) ;
//告警频次(次/点)
warningSubstationVO . setAlertAlarmFrequency ( alertMonitorCount = = 0 ? 0 : BigDecimal . valueOf ( alertCount * 1 . 0 / alertMonitorCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
warningSubstationVO . setAlertAlarmFrequency ( alertMonitorCount = = 0 ? 0 : BigDecimal . valueOf ( alertCount * 1 . 0 / alertMonitorCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
//频率偏差
warningSubstationVO . setFrequencyDeviation ( freqCount = = 0 ? 0 : BigDecimal . valueOf ( freqCounts * 1 . 0 / freqCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
warningSubstationVO . setFrequencyDeviation ( freqCount = = 0 ? 0 : BigDecimal . valueOf ( freqCounts * 1 . 0 / freqCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
//电压偏差
warningSubstationVO . setVoltageDeviation ( voltageCount = = 0 ? 0 : BigDecimal . valueOf ( voltageCounts * 1 . 0 / voltageCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
warningSubstationVO . setVoltageDeviation ( voltageCount = = 0 ? 0 : BigDecimal . valueOf ( voltageCounts * 1 . 0 / voltageCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
//谐波电压
warningSubstationVO . setHarmonicVoltage ( uharmCount = = 0 ? 0 : BigDecimal . valueOf ( uharmCounts * 1 . 0 / uharmCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
warningSubstationVO . setHarmonicVoltage ( uharmCount = = 0 ? 0 : BigDecimal . valueOf ( uharmCounts * 1 . 0 / uharmCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
//谐波电流
warningSubstationVO . setHarmonicCurrent ( iharmCount = = 0 ? 0 : BigDecimal . valueOf ( iharmCounts * 1 . 0 / iharmCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
warningSubstationVO . setHarmonicCurrent ( iharmCount = = 0 ? 0 : BigDecimal . valueOf ( iharmCounts * 1 . 0 / iharmCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
//三相电压不平衡
warningSubstationVO . setThreePhaseVoltageUnbalance ( ubalanceCount = = 0 ? 0 : BigDecimal . valueOf ( ubalanceCounts * 1 . 0 / ubalanceCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
warningSubstationVO . setThreePhaseVoltageUnbalance ( ubalanceCount = = 0 ? 0 : BigDecimal . valueOf ( ubalanceCounts * 1 . 0 / ubalanceCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
//闪变
warningSubstationVO . setFlicker ( flickerCount = = 0 ? 0 : BigDecimal . valueOf ( flickerCounts * 1 . 0 / flickerCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
warningSubstationVO . setFlicker ( flickerCount = = 0 ? 0 : BigDecimal . valueOf ( flickerCounts * 1 . 0 / flickerCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
//间谐波电压
warningSubstationVO . setInterHarmonic ( inuharmCount = = 0 ? 0 : BigDecimal . valueOf ( inuharmCounts * 1 . 0 / inuharmCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
warningSubstationVO . setInterHarmonic ( inuharmCount = = 0 ? 0 : BigDecimal . valueOf ( inuharmCounts * 1 . 0 / inuharmCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
//负序电流
warningSubstationVO . setNegative ( iNegCount = = 0 ? 0 : BigDecimal . valueOf ( iNegCounts * 1 . 0 / iNegCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
warningSubstationVO . setNegative ( iNegCount = = 0 ? 0 : BigDecimal . valueOf ( iNegCounts * 1 . 0 / iNegCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
//电压暂降
warningSubstationVO . setVoltageDip ( eventDown = = 0 ? 0 : BigDecimal . valueOf ( eventDowns * 1 . 0 / eventDown ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
warningSubstationVO . setVoltageDip ( eventDown = = 0 ? 0 : BigDecimal . valueOf ( eventDowns * 1 . 0 / eventDown ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
//电压暂升
warningSubstationVO . setVoltageSwell ( eventUp = = 0 ? 0 : BigDecimal . valueOf ( eventUps * 1 . 0 / eventUp ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
warningSubstationVO . setVoltageSwell ( eventUp = = 0 ? 0 : BigDecimal . valueOf ( eventUps * 1 . 0 / eventUp ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
//短时中断
warningSubstationVO . setShortInterruption ( eventInterrupt = = 0 ? 0 : BigDecimal . valueOf ( eventInterrupts * 1 . 0 / eventInterrupt ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
warningSubstationVO . setShortInterruption ( eventInterrupt = = 0 ? 0 : BigDecimal . valueOf ( eventInterrupts * 1 . 0 / eventInterrupt ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
}
list . add ( warningSubstationVO ) ;
}
}
if ( ! CollectionUtils . isEmpty ( list ) ) {
if ( ! CollectionUtils . isEmpty ( list ) ) {
for ( WarningSubstationVO item1 : list ) {
for ( WarningSubstationDTO item2 : substationDTOList ) {
if ( Objects . equals ( item1 . getId ( ) , item2 . getId ( ) ) ) {
if ( Objects . equals ( item1 . getId ( ) , item2 . getId ( ) ) ) {
item1 . setProvinceCompany ( item2 . getProvince ( ) ) ;
item1 . setCityCompany ( item2 . getCity ( ) ) ;
item1 . setPlantVoltageLevel ( item2 . getScale ( ) ) ;
@@ -291,12 +310,12 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
List < String > lineList = new ArrayList < > ( ) ;
List < GeneralDeviceDTO > deptList = generalDeviceInfoClient . getPracticalRunDeviceInfo ( param ) . getData ( ) ;
if ( ! CollectionUtils . isEmpty ( deptList ) ) {
deptList . forEach ( item - > {
deptList . forEach ( item - > {
lineList . addAll ( item . getLineIndexes ( ) ) ;
} ) ;
}
if ( CollectionUtil . isNotEmpty ( lineList ) ) {
page = targetMapper . getSumLimitTargetPage ( page , lineList , DateUtil . beginOfDay ( DateUtil . parse ( param . getSearchBeginTime ( ) ) ) ,
page = targetMapper . getSumLimitTargetPage ( page , lineList , DateUtil . beginOfDay ( DateUtil . parse ( param . getSearchBeginTime ( ) ) ) ,
DateUtil . endOfDay ( DateUtil . parse ( param . getSearchEndTime ( ) ) ) ) ;
List < MonitorOverLimitVO > pageRecords = page . getRecords ( ) ;
if ( CollectionUtils . isEmpty ( pageRecords ) ) {
@@ -309,12 +328,12 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
pollutionParamDTO . setLineList ( list ) ;
List < OverLimitLineDTO > overLimitLineList = lineFeignClient . getOverLimitLineInfo ( pollutionParamDTO ) . getData ( ) ;
List < RStatLimitTargetDPO > rStatLimitTargetDPOS = targetMapper . selectList ( new QueryWrapper < RStatLimitTargetDPO > ( )
. in ( " r_stat_limit_target_d.my_index " , list ) . between ( " r_stat_limit_target_d.time_id " , DateUtil . beginOfDay ( DateUtil . parse ( param . getSearchBeginTime ( ) ) ) ,
. in ( " r_stat_limit_target_d.my_index " , list ) . between ( " r_stat_limit_target_d.time_id " , DateUtil . beginOfDay ( DateUtil . parse ( param . getSearchBeginTime ( ) ) ) ,
DateUtil . endOfDay ( DateUtil . parse ( param . getSearchEndTime ( ) ) ) ) ) ;
Map < String , List < RStatLimitTargetDPO > > rsMap = rStatLimitTargetDPOS . stream ( ) . collect ( Collectors . groupingBy ( RStatLimitTargetDPO : : getLineId ) ) ;
for ( OverLimitLineDTO vo : overLimitLineList ) {
MonitorOverLimitVO monitorOverLimitVO = new MonitorOverLimitVO ( ) ;
BeanUtil . copyProperties ( vo , monitorOverLimitVO ) ;
BeanUtil . copyProperties ( vo , monitorOverLimitVO ) ;
MonitorOverLimitVO source = monMap . get ( vo . getId ( ) ) . get ( 0 ) ;
monitorOverLimitVO . setOverDay ( source . getOverDay ( ) ) ;
monitorOverLimitVO . setVolDevOverDay ( source . getVolDevOverDay ( ) ) ;
@@ -356,7 +375,7 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
}
}
if ( ! CollectionUtils . isEmpty ( result ) ) {
if ( ! CollectionUtils . isEmpty ( result ) ) {
//默认 根据在线监测点个数 倒叙排序
List < MonitorOverLimitVO > recordList = result . stream ( ) . sorted ( Comparator . comparing ( MonitorOverLimitVO : : getOverDay ) . reversed ( ) ) . collect ( Collectors . toList ( ) ) ;
page . setRecords ( recordList ) ;
@@ -509,15 +528,15 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
private boolean filterNotQualifiedHarmVolData ( RStatLimitTargetDPO t ) {
// 电压畸变率+谐波电压含有率( 2-25次)
int i = t . getUaberranceOvertime ( ) + t . getUharm2Overtime ( ) + t . getUharm3Overtime ( ) + t . getUharm4Overtime ( ) + t . getUharm5Overtime ( ) + t . getUharm6Overtime ( ) + t . getUharm7Overtime ( ) + t . getUharm8Overtime ( ) + t . getUharm9Overtime ( ) + t . getUharm10Overtime ( ) + t . getUharm11Overtime ( ) + t . getUharm12Overtime ( ) + t . getUharm13Overtime ( ) + t . getUharm14Overtime ( ) + t . getUharm15Overtime ( ) + t . getUharm16Overtime ( ) + t . getUharm17Overtime ( ) + t . getUharm18Overtime ( ) + t . getUharm19Overtime ( ) + t . getUharm20Overtime ( ) + t . getUharm21Overtime ( ) + t . getUharm22Overtime ( ) + t . getUharm23Overtime ( ) + t . getUharm24Overtime ( ) + t . getUharm25Overtime ( ) ;
if ( i > 0 ) {
if ( i > 0 ) {
return true ;
}
return false ;
}
private boolean filterNotQualifiedInuharmData ( RStatLimitTargetDPO t ) {
int i = t . getInuharm1Overtime ( ) + t . getInuharm2Overtime ( ) + t . getInuharm3Overtime ( ) + t . getInuharm4Overtime ( ) + t . getInuharm5Overtime ( ) + t . getInuharm6Overtime ( ) + t . getInuharm7Overtime ( ) + t . getInuharm8Overtime ( ) + t . getInuharm9Overtime ( ) + t . getInuharm10Overtime ( ) + t . getInuharm11Overtime ( ) + t . getInuharm12Overtime ( ) + t . getInuharm13Overtime ( ) + t . getInuharm14Overtime ( ) + t . getInuharm15Overtime ( ) + t . getInuharm16Overtime ( ) ;
if ( i > 0 ) {
int i = t . getInuharm1Overtime ( ) + t . getInuharm2Overtime ( ) + t . getInuharm3Overtime ( ) + t . getInuharm4Overtime ( ) + t . getInuharm5Overtime ( ) + t . getInuharm6Overtime ( ) + t . getInuharm7Overtime ( ) + t . getInuharm8Overtime ( ) + t . getInuharm9Overtime ( ) + t . getInuharm10Overtime ( ) + t . getInuharm11Overtime ( ) + t . getInuharm12Overtime ( ) + t . getInuharm13Overtime ( ) + t . getInuharm14Overtime ( ) + t . getInuharm15Overtime ( ) + t . getInuharm16Overtime ( ) ;
if ( i > 0 ) {
return true ;
}
return false ;
@@ -525,14 +544,14 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
private boolean filterNotQualifiedIharmData ( RStatLimitTargetDPO t ) {
int i = t . getIharm2Overtime ( ) + t . getIharm3Overtime ( ) + t . getIharm4Overtime ( ) + t . getIharm5Overtime ( ) + t . getIharm6Overtime ( ) + t . getIharm7Overtime ( ) + t . getIharm8Overtime ( ) + t . getIharm9Overtime ( ) + t . getIharm10Overtime ( ) + t . getIharm11Overtime ( ) + t . getIharm12Overtime ( ) + t . getIharm13Overtime ( ) + t . getIharm14Overtime ( ) + t . getIharm15Overtime ( ) + t . getIharm16Overtime ( ) + t . getIharm17Overtime ( ) + t . getIharm18Overtime ( ) + t . getIharm19Overtime ( ) + t . getIharm20Overtime ( ) + t . getIharm21Overtime ( ) + t . getIharm22Overtime ( ) + t . getIharm23Overtime ( ) + t . getIharm24Overtime ( ) + t . getIharm25Overtime ( ) ;
if ( i > 0 ) {
if ( i > 0 ) {
return true ;
}
return false ;
}
private boolean filterNotQualifiedUharmData ( RStatLimitTargetDPO t ) {
if ( t . getUharm2Overtime ( ) ! = 0 | | t . getUharm3Overtime ( ) ! = 0 | | t . getUharm4Overtime ( ) ! = 0 | | t . getUharm5Overtime ( ) ! = 0 | | t . getUharm6Overtime ( ) ! = 0 | | t . getUharm7Overtime ( ) ! = 0 | | t . getUharm8Overtime ( ) ! = 0 | | t . getUharm9Overtime ( ) ! = 0 | | t . getUharm10Overtime ( ) ! = 0 | | t . getUharm11Overtime ( ) ! = 0 | | t . getUharm12Overtime ( ) ! = 0 | | t . getUharm13Overtime ( ) ! = 0 | | t . getUharm14Overtime ( ) ! = 0 | | t . getUharm15Overtime ( ) ! = 0 | | t . getUharm16Overtime ( ) ! = 0 | | t . getUharm17Overtime ( ) ! = 0 | | t . getUharm18Overtime ( ) ! = 0 | | t . getUharm19Overtime ( ) ! = 0 | | t . getUharm20Overtime ( ) ! = 0 | | t . getUharm21Overtime ( ) ! = 0 | | t . getUharm22Overtime ( ) ! = 0 | | t . getUharm23Overtime ( ) ! = 0 | | t . getUharm24Overtime ( ) ! = 0 | | t . getUharm25Overtime ( ) ! = 0 ) {
if ( t . getUharm2Overtime ( ) ! = 0 | | t . getUharm3Overtime ( ) ! = 0 | | t . getUharm4Overtime ( ) ! = 0 | | t . getUharm5Overtime ( ) ! = 0 | | t . getUharm6Overtime ( ) ! = 0 | | t . getUharm7Overtime ( ) ! = 0 | | t . getUharm8Overtime ( ) ! = 0 | | t . getUharm9Overtime ( ) ! = 0 | | t . getUharm10Overtime ( ) ! = 0 | | t . getUharm11Overtime ( ) ! = 0 | | t . getUharm12Overtime ( ) ! = 0 | | t . getUharm13Overtime ( ) ! = 0 | | t . getUharm14Overtime ( ) ! = 0 | | t . getUharm15Overtime ( ) ! = 0 | | t . getUharm16Overtime ( ) ! = 0 | | t . getUharm17Overtime ( ) ! = 0 | | t . getUharm18Overtime ( ) ! = 0 | | t . getUharm19Overtime ( ) ! = 0 | | t . getUharm20Overtime ( ) ! = 0 | | t . getUharm21Overtime ( ) ! = 0 | | t . getUharm22Overtime ( ) ! = 0 | | t . getUharm23Overtime ( ) ! = 0 | | t . getUharm24Overtime ( ) ! = 0 | | t . getUharm25Overtime ( ) ! = 0 ) {
return true ;
}
return false ;
@@ -541,16 +560,16 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
@Override
public String exportArea ( OverAreaVO param , String methodDescribe ) {
List < AreaExcel > result = new ArrayList < > ( ) ;
String fileName = methodDescribe + CharUtil . UNDERLINE + param . getSearchBeginTime ( ) + CharUtil . DASHED + param . getSearchEndTime ( ) + CharUtil . UNDERLINE + param . getStatisticalType ( ) . getName ( ) + " .xlsx " ;
String fileName = methodDescribe + CharUtil . UNDERLINE + param . getSearchBeginTime ( ) + CharUtil . DASHED + param . getSearchEndTime ( ) + CharUtil . UNDERLINE + param . getStatisticalType ( ) . getName ( ) + " .xlsx " ;
String targetDir = generalInfo . getBusinessTempPath ( ) + File . separator + RequestUtil . getUserIndex ( ) ;
log . error ( " 文件路径 " + targetDir ) ;
log . error ( " 文件名 " + fileName ) ;
File excel = new File ( targetDir , fileName ) ;
List < OverAreaLimitVO > list = getAreaData ( param ) . getRecords ( ) ;
if ( ! CollectionUtil . isEmpty ( list ) ) {
list . forEach ( item - > {
list . forEach ( item - > {
AreaExcel areaExcel = new AreaExcel ( ) ;
BeanUtil . copyProperties ( item , areaExcel ) ;
BeanUtil . copyProperties ( item , areaExcel ) ;
result . add ( areaExcel ) ;
} ) ;
}
@@ -561,16 +580,16 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
@Override
public String exportSubstation ( OverAreaVO param , String methodDescribe ) {
List < SubstationExcel > result = new ArrayList < > ( ) ;
String fileName = methodDescribe + CharUtil . UNDERLINE + param . getSearchBeginTime ( ) + CharUtil . DASHED + param . getSearchEndTime ( ) + CharUtil . UNDERLINE + param . getStatisticalType ( ) . getName ( ) + " .xlsx " ;
String fileName = methodDescribe + CharUtil . UNDERLINE + param . getSearchBeginTime ( ) + CharUtil . DASHED + param . getSearchEndTime ( ) + CharUtil . UNDERLINE + param . getStatisticalType ( ) . getName ( ) + " .xlsx " ;
String targetDir = generalInfo . getBusinessTempPath ( ) + File . separator + RequestUtil . getUserIndex ( ) ;
log . error ( " 文件路径 " + targetDir ) ;
log . error ( " 文件名 " + fileName ) ;
File excel = new File ( targetDir , fileName ) ;
List < WarningSubstationVO > list = getWarningSubstation ( param ) . getRecords ( ) ;
if ( ! CollectionUtil . isEmpty ( list ) ) {
list . forEach ( item - > {
list . forEach ( item - > {
SubstationExcel substationExcel = new SubstationExcel ( ) ;
BeanUtil . copyProperties ( item , substationExcel ) ;
BeanUtil . copyProperties ( item , substationExcel ) ;
result . add ( substationExcel ) ;
} ) ;
}
@@ -581,32 +600,32 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
@Override
public String exportMonitor ( OverAreaVO param , String methodDescribe ) {
List < MonitorExcel > result = new ArrayList < > ( ) ;
String fileName = methodDescribe + CharUtil . UNDERLINE + param . getSearchBeginTime ( ) + CharUtil . DASHED + param . getSearchEndTime ( ) + CharUtil . UNDERLINE + param . getStatisticalType ( ) . getName ( ) + " .xlsx " ;
String fileName = methodDescribe + CharUtil . UNDERLINE + param . getSearchBeginTime ( ) + CharUtil . DASHED + param . getSearchEndTime ( ) + CharUtil . UNDERLINE + param . getStatisticalType ( ) . getName ( ) + " .xlsx " ;
String targetDir = generalInfo . getBusinessTempPath ( ) + File . separator + RequestUtil . getUserIndex ( ) ;
log . error ( " 文件路径 " + targetDir ) ;
log . error ( " 文件名 " + fileName ) ;
File excel = new File ( targetDir , fileName ) ;
List < MonitorOverLimitVO > list = monitorOverLimitVO ( param ) . getRecords ( ) ;
if ( ! CollectionUtil . isEmpty ( list ) ) {
list . forEach ( item - > {
list . forEach ( item - > {
MonitorExcel monitorExcel = new MonitorExcel ( ) ;
BeanUtil . copyProperties ( item , monitorExcel ) ;
BeanUtil . copyProperties ( item , monitorExcel ) ;
OverLimitDays overLimitDays = new OverLimitDays ( ) ;
List < UTimes > list1 = new ArrayList < > ( ) ;
UTimes uTimes = new UTimes ( ) ;
BeanUtil . copyProperties ( item , uTimes ) ;
BeanUtil . copyProperties ( item , uTimes ) ;
list1 . add ( uTimes ) ;
overLimitDays . setUTimes ( list1 ) ;
List < ITimes > list2 = new ArrayList < > ( ) ;
ITimes iTimes = new ITimes ( ) ;
BeanUtil . copyProperties ( item , iTimes ) ;
BeanUtil . copyProperties ( item , iTimes ) ;
list2 . add ( iTimes ) ;
overLimitDays . setITimes ( list2 ) ;
List < OverLimitDays > list3 = new ArrayList < > ( ) ;
BeanUtil . copyProperties ( item , overLimitDays ) ;
BeanUtil . copyProperties ( item , overLimitDays ) ;
list3 . add ( overLimitDays ) ;
monitorExcel . setOverLimitDays ( list3 ) ;
result . add ( monitorExcel ) ;
@@ -619,177 +638,142 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
/**
* 功能描述: 处理区域(变电站)在线监测点数、超标监测点数、平均超标天数、占比
*
* @param list 集合
* type 类型
* type 类型
* @return
* @author xy
* @date 2022/2/25 15:05
*/
@SuppressWarnings ( " unchecked " )
public OverAreaLimitVO handleAreaData ( List < LimitTarget > list , List < String > line , OverAreaVO param ) {
int onlineCount = 0 , overLineCount = 0 , freqCount = 0 , voltageCount = 0 , ubalanceCount = 0 , flickerCount = 0 , iNegCount = 0 , uharmCount = 0 , iharmCount = 0 , inuharmCount = 0 ;
int freqOverDay = 0 , voltageOverDay = 0 , ubalanceOverDay = 0 , flickerOverDay = 0 , iNegOverDay = 0 , uharmOverDay = 0 , iharmOverDay = 0 , inuharmOverDay = 0 ;
int onlineCount = 0 , overLineCount = 0 , freqCount = 0 , voltageCount = 0 , ubalanceCount = 0 , flickerCount = 0 , iNegCount = 0 , uharmCount = 0 , iharmCount = 0 , inuharmCount = 0 ;
int freqOverDay = 0 , voltageOverDay = 0 , ubalanceOverDay = 0 , flickerOverDay = 0 , iNegOverDay = 0 , uharmOverDay = 0 , iharmOverDay = 0 , inuharmOverDay = 0 ;
OverAreaLimitVO overAreaLimitVO = new OverAreaLimitVO ( ) ;
if ( ! CollectionUtils . isEmpty ( list ) ) {
List < LimitTarget > data = ( List < LimitTarget > ) getAllData ( line , param . getSearchBeginTime ( ) , param . getSearchEndTime ( ) , Param . LIMIT_TARGET ) ;
if ( ! CollectionUtils . isEmpty ( list ) ) {
List < RStat LimitTargetDPO > data = ( List < RStat LimitTargetDPO > ) getAllData ( line , param . getSearchBeginTime ( ) , param . getSearchEndTime ( ) , Param . LIMIT_TARGET ) ;
if ( ! CollectionUtils . isEmpty ( data ) ) {
onlineCount = data . size ( ) ;
//在线监测点个数
overAreaLimitVO . setOnlineMonitorNumber ( onlineCount ) ;
for ( LimitTarget item : data ) {
if ( item . getFreqDevOverT ime ( ) > 0 | | item . getVoltageDevOverT ime ( ) > 0 | | item . getUB alanceOverT ime ( ) > 0 | | item . getFlickerOverT ime ( ) > 0 | | item . getINegOverT ime ( ) > 0 | | item . getUH arm2OverT ime ( ) > 0 | | item . getIH arm2OverT ime ( ) > 0 | | item . getInuH arm1OverT ime ( ) > 0 ) {
for ( RStat LimitTargetDPO item : data ) {
if ( item . getFreqDevOvert ime ( ) > 0 | | item . getVoltageDevOvert ime ( ) > 0 | | item . getUb alanceOvert ime ( ) > 0 | | item . getFlickerOvert ime ( ) > 0 | | item . getINegOvert ime ( ) > 0 | | item . getUh arm2Overt ime ( ) > 0 | | item . getIh arm2Overt ime ( ) > 0 | | item . getInuh arm1Overt ime ( ) > 0 ) {
overLineCount + + ;
}
if ( item . getFreqDevOverT ime ( ) > 0 ) {
if ( item . getFreqDevOvert ime ( ) > 0 ) {
freqCount + + ;
}
if ( item . getVoltageDevOverT ime ( ) > 0 ) {
if ( item . getVoltageDevOvert ime ( ) > 0 ) {
voltageCount + + ;
}
if ( item . getUB alanceOverT ime ( ) > 0 ) {
if ( item . getUb alanceOvert ime ( ) > 0 ) {
ubalanceCount + + ;
}
if ( item . getFlickerOverT ime ( ) > 0 ) {
if ( item . getFlickerOvert ime ( ) > 0 ) {
flickerCount + + ;
}
if ( item . getINegOverT ime ( ) > 0 ) {
if ( item . getINegOvert ime ( ) > 0 ) {
iNegCount + + ;
}
if ( item . getUH arm2OverT ime ( ) > 0 ) {
if ( item . getUh arm2Overt ime ( ) > 0 ) {
uharmCount + + ;
}
if ( item . getIH arm2OverT ime ( ) > 0 ) {
if ( item . getIh arm2Overt ime ( ) > 0 ) {
iharmCount + + ;
}
if ( item . getInuH arm1OverT ime ( ) > 0 ) {
if ( item . getInuh arm1Overt ime ( ) > 0 ) {
inuharmCount + + ;
}
}
//超标监测点个数
overAreaLimitVO . setOverLimitMonitorNumber ( overLineCount ) ;
//超标监测点数占比
overAreaLimitVO . setOverBiLi ( BigDecimal . valueOf ( overLineCount * 1 . 0 / data . size ( ) * 100 ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
overAreaLimitVO . setOverBiLi ( BigDecimal . valueOf ( overLineCount * 1 . 0 / data . size ( ) * 100 ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
//频率偏差
overAreaLimitVO . setFrequencyMonitorNumber ( freqCount ) ;
overAreaLimitVO . setFrequencyBiLi ( BigDecimal . valueOf ( freqCount * 1 . 0 / data . size ( ) * 100 ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
overAreaLimitVO . setFrequencyBiLi ( BigDecimal . valueOf ( freqCount * 1 . 0 / data . size ( ) * 100 ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
//电压偏差
overAreaLimitVO . setVoltageMonitorNumber ( voltageCount ) ;
overAreaLimitVO . setVoltageBiLi ( BigDecimal . valueOf ( voltageCount * 1 . 0 / data . size ( ) * 100 ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
overAreaLimitVO . setVoltageBiLi ( BigDecimal . valueOf ( voltageCount * 1 . 0 / data . size ( ) * 100 ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
//谐波电压
overAreaLimitVO . setHarmonicVoltageMonitorNumber ( uharmCount ) ;
overAreaLimitVO . setHarmonicVoltageBiLi ( BigDecimal . valueOf ( uharmCount * 1 . 0 / data . size ( ) * 100 ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
overAreaLimitVO . setHarmonicVoltageBiLi ( BigDecimal . valueOf ( uharmCount * 1 . 0 / data . size ( ) * 100 ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
//谐波电流
overAreaLimitVO . setHarmonicCurrentMonitorNumber ( iharmCount ) ;
overAreaLimitVO . setHarmonicCurrentBiLi ( BigDecimal . valueOf ( iharmCount * 1 . 0 / data . size ( ) * 100 ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
overAreaLimitVO . setHarmonicCurrentBiLi ( BigDecimal . valueOf ( iharmCount * 1 . 0 / data . size ( ) * 100 ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
//三相电压不平衡度
overAreaLimitVO . setThreePhaseVoltageMonitorNumber ( ubalanceCount ) ;
overAreaLimitVO . setThreePhaseVoltageBiLi ( BigDecimal . valueOf ( ubalanceCount * 1 . 0 / data . size ( ) * 100 ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
overAreaLimitVO . setThreePhaseVoltageBiLi ( BigDecimal . valueOf ( ubalanceCount * 1 . 0 / data . size ( ) * 100 ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
//闪变
overAreaLimitVO . setFlickerMonitorNumber ( flickerCount ) ;
overAreaLimitVO . setFlickerBiLi ( BigDecimal . valueOf ( flickerCount * 1 . 0 / data . size ( ) * 100 ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
overAreaLimitVO . setFlickerBiLi ( BigDecimal . valueOf ( flickerCount * 1 . 0 / data . size ( ) * 100 ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
//负序电流
overAreaLimitVO . setNegativeMonitorNumber ( iNegCount ) ;
overAreaLimitVO . setNegativeBiLi ( BigDecimal . valueOf ( iNegCount * 1 . 0 / data . size ( ) * 100 ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
overAreaLimitVO . setNegativeBiLi ( BigDecimal . valueOf ( iNegCount * 1 . 0 / data . size ( ) * 100 ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
//间谐波电压
overAreaLimitVO . setInterHarmonicMonitorNumber ( inuharmCount ) ;
overAreaLimitVO . setInterHarmonicBiLi ( BigDecimal . valueOf ( inuharmCount * 1 . 0 / data . size ( ) * 100 ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
overAreaLimitVO . setInterHarmonicBiLi ( BigDecimal . valueOf ( inuharmCount * 1 . 0 / data . size ( ) * 100 ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
}
}
Map < Instant , List < LimitTarget > > map = list . stream ( ) . collect ( Collectors . groupingBy ( LimitTarget : : getTime ) ) ;
Map < Instant , List < LimitTarget > > map = list . stream ( ) . collect ( Collectors . groupingBy ( LimitTarget : : getTime ) ) ;
for ( Instant key : map . keySet ( ) ) {
List < LimitTarget > l = map . get ( key ) ;
for ( LimitTarget pojo : l ) {
if ( pojo . getFreqDevOverTime ( ) > 0 ) {
if ( pojo . getFreqDevOverTime ( ) > 0 ) {
freqOverDay + + ;
}
if ( pojo . getVoltageDevOverTime ( ) > 0 ) {
if ( pojo . getVoltageDevOverTime ( ) > 0 ) {
voltageOverDay + + ;
}
if ( pojo . getUBalanceOverTime ( ) > 0 ) {
if ( pojo . getUBalanceOverTime ( ) > 0 ) {
ubalanceOverDay + + ;
}
if ( pojo . getFlickerOverTime ( ) > 0 ) {
if ( pojo . getFlickerOverTime ( ) > 0 ) {
flickerOverDay + + ;
}
if ( pojo . getINegOverTime ( ) > 0 ) {
if ( pojo . getINegOverTime ( ) > 0 ) {
iNegOverDay + + ;
}
if ( pojo . getUHarm2OverTime ( ) > 0 ) {
if ( pojo . getUHarm2OverTime ( ) > 0 ) {
uharmOverDay + + ;
}
if ( pojo . getIHarm2OverTime ( ) > 0 ) {
if ( pojo . getIHarm2OverTime ( ) > 0 ) {
iharmOverDay + + ;
}
if ( pojo . getInuHarm1OverTime ( ) > 0 ) {
if ( pojo . getInuHarm1OverTime ( ) > 0 ) {
inuharmOverDay + + ;
}
}
}
if ( onlineCount ! = 0 ) {
overAreaLimitVO . setFrequencyOverDayBiLi ( freqCount = = 0 ? 0 . 0 : BigDecimal . valueOf ( freqOverDay * 1 . 0 / freqCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
overAreaLimitVO . setVoltageOverDayBiLi ( voltageCount = = 0 ? 0 . 0 : BigDecimal . valueOf ( voltageOverDay * 1 . 0 / voltageCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
overAreaLimitVO . setThreePhaseVoltageOverDayBiLi ( ubalanceCount = = 0 ? 0 . 0 : BigDecimal . valueOf ( ubalanceOverDay * 1 . 0 / ubalanceCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
overAreaLimitVO . setFlickerOverDayBiLi ( flickerCount = = 0 ? 0 . 0 : BigDecimal . valueOf ( flickerOverDay * 1 . 0 / flickerCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
overAreaLimitVO . setNegativeOverDayBiLi ( iNegCount = = 0 ? 0 . 0 : BigDecimal . valueOf ( iNegOverDay * 1 . 0 / iNegCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
overAreaLimitVO . setHarmonicVoltageOverDayBiLi ( uharmCount = = 0 ? 0 . 0 : BigDecimal . valueOf ( uharmOverDay * 1 . 0 / uharmCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
overAreaLimitVO . setHarmonicCurrentOverDayBiLi ( iharmCount = = 0 ? 0 . 0 : BigDecimal . valueOf ( iharmOverDay * 1 . 0 / iharmCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
overAreaLimitVO . setInterHarmonicOverDayBiLi ( inuharmCount = = 0 ? 0 . 0 : BigDecimal . valueOf ( inuharmOverDay * 1 . 0 / inuharmCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
if ( onlineCount ! = 0 ) {
overAreaLimitVO . setFrequencyOverDayBiLi ( freqCount = = 0 ? 0 . 0 : BigDecimal . valueOf ( freqOverDay * 1 . 0 / freqCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
overAreaLimitVO . setVoltageOverDayBiLi ( voltageCount = = 0 ? 0 . 0 : BigDecimal . valueOf ( voltageOverDay * 1 . 0 / voltageCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
overAreaLimitVO . setThreePhaseVoltageOverDayBiLi ( ubalanceCount = = 0 ? 0 . 0 : BigDecimal . valueOf ( ubalanceOverDay * 1 . 0 / ubalanceCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
overAreaLimitVO . setFlickerOverDayBiLi ( flickerCount = = 0 ? 0 . 0 : BigDecimal . valueOf ( flickerOverDay * 1 . 0 / flickerCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
overAreaLimitVO . setNegativeOverDayBiLi ( iNegCount = = 0 ? 0 . 0 : BigDecimal . valueOf ( iNegOverDay * 1 . 0 / iNegCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
overAreaLimitVO . setHarmonicVoltageOverDayBiLi ( uharmCount = = 0 ? 0 . 0 : BigDecimal . valueOf ( uharmOverDay * 1 . 0 / uharmCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
overAreaLimitVO . setHarmonicCurrentOverDayBiLi ( iharmCount = = 0 ? 0 . 0 : BigDecimal . valueOf ( iharmOverDay * 1 . 0 / iharmCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
overAreaLimitVO . setInterHarmonicOverDayBiLi ( inuharmCount = = 0 ? 0 . 0 : BigDecimal . valueOf ( inuharmOverDay * 1 . 0 / inuharmCount ) . setScale ( 2 , RoundingMode . HALF_UP ) . doubleValue ( ) ) ;
}
return overAreaLimitVO ;
}
/**
* 功能描述: 处理区域在线监测点数、超标监测点数
*
* @param list 集合
* @return
* @author xy
* @date 2022/2/25 15:05
*/
private List < ? > getAllData ( List < String > list , String startTime , String endTime , String databaseName ) {
private List < ? > getAllData ( List < String > list , String startTime , String endTime , String databaseName ) {
List < ? > result = new ArrayList < > ( ) ;
StringBuilder stringBuilder = new StringBuilder ( ) ;
StringBuilder stringBuilder1 = new StringBuilder ( ) ;
stringBuilder . append ( Param . TIME + " >= ' " ) . append ( startTime ) . append ( " ' and " ) . append ( Param . TIME ) . append ( " <= ' " ) . append ( endTime ) . append ( " ' and ( " ) ;
for ( int i = 0 ; i < list . size ( ) ; i + + ) {
if ( list . size ( ) - i ! = 1 ) {
stringBuilder . append ( Param . LINE_ID + " =' " ) . append ( list . get ( i ) ) . append ( " ' or " ) ;
} else {
stringBuilder . append ( Param . LINE_ID + " =' " ) . append ( list . get ( i ) ) . append ( " ') " ) ;
}
}
stringBuilder . append ( " group by line_id tz('Asia/Shanghai') " ) ;
stringBuilder1 . append ( " sum(freq_dev_overtime) AS freq_dev_overtime,sum(voltage_dev_overtime) AS voltage_dev_overtime,sum(ubalance_overtime) AS ubalance_overtime,sum(flicker_overtime) AS flicker_overtime,sum(i_neg_overtime) AS i_neg_overtime, " ) ;
stringBuilder1 . append ( " sum(uaberrance_overtime)+ " ) ;
for ( int i = 2 ; i < = 25 ; i + + ) {
if ( i = = 25 ) {
stringBuilder1 . append ( " sum(uharm_ " ) . append ( i ) . append ( " _overtime) AS " ) . append ( " uharm_2 " ) . append ( " _overtime, " ) ;
} else {
stringBuilder1 . append ( " sum(uharm_ " ) . append ( i ) . append ( " _overtime)+ " ) ;
}
}
for ( int i = 2 ; i < = 25 ; i + + ) {
if ( i = = 25 ) {
stringBuilder1 . append ( " sum(iharm_ " ) . append ( i ) . append ( " _overtime) AS " ) . append ( " iharm_2 " ) . append ( " _overtime, " ) ;
} else {
stringBuilder1 . append ( " sum(iharm_ " ) . append ( i ) . append ( " _overtime)+ " ) ;
}
}
for ( int i = 1 ; i < = 16 ; i + + ) {
if ( i = = 16 ) {
stringBuilder1 . append ( " sum(inuharm_ " ) . append ( i ) . append ( " _overtime) AS " ) . append ( " inuharm_1 " ) . append ( " _overtime " ) ;
} else {
stringBuilder1 . append ( " sum(inuharm_ " ) . append ( i ) . append ( " _overtime)+ " ) ;
}
}
String sql = " select " + stringBuilder1 + " from " + databaseName + " where " + stringBuilder ;
QueryResult sqlResult = influxDbUtils . query ( sql ) ;
InfluxDBResultMapper resultMapper = new InfluxDBResultMapper ( ) ;
switch ( databaseName ) {
case Param . LIMIT_TARGET :
result = resul tMapper. toPOJO ( sqlResult , LimitTarget . class ) ;
result = targe tMapper. getSumTargetList ( list , startTime , endTime ) ;
break ;
case Param . LIMIT_RATE :
result = result Mapper . toPOJO ( sqlResult , LimitRate . class ) ;
result = rateD Mapper . getSumPassRateList ( list , startTime , endTime ) ;
break ;
default :
break ;
@@ -797,29 +781,16 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
return result ;
}
public List < EventDetail > getEventDetail ( List < String > list , String startTime , String endTime ) {
StringBuilder stringBuilder = new StringBuilder ( ) ;
stringBuilder . append ( Param . TIME + " >= ' " ) . append ( startTime ) . append ( " ' and " ) . append ( Param . TIME ) . append ( " <= ' " ) . append ( endTime ) . append ( " ' and ( " ) ;
for ( int i = 0 ; i < list . size ( ) ; i + + ) {
if ( list . size ( ) - i ! = 1 ) {
stringBuilder . append ( Param . LINE_ID + " =' " ) . append ( list . get ( i ) ) . append ( " ' or " ) ;
} else {
stringBuilder . append ( Param . LINE_ID + " =' " ) . append ( list . get ( i ) ) . append ( " ') " ) ;
}
}
stringBuilder . append ( " group by line_id tz('Asia/Shanghai') " ) ;
String sql = " select * from pqs_eventdetail where " + stringBuilder ;
QueryResult sqlResult = influxDbUtils . query ( sql ) ;
InfluxDBResultMapper resultMapper = new InfluxDBResultMapper ( ) ;
return resultMapper . toPOJO ( sqlResult , EventDetail . class ) ;
public List < com . njcn . event . pojo . po . EventDetail> getEventDetail ( List < String > list , String startTime , String endTime ) {
return eventDetailFeignClient . getEventDetail ( list , startTime , endTime ) . getData ( ) ;
}
public List < LimitTarget > getOverDays ( List < String > list , String startTime , String endTime ) {
public List < LimitTarget > getOverDays ( List < String > list , String startTime , String endTime ) {
StringBuilder stringBuilder = new StringBuilder ( ) ;
StringBuilder stringBuilder1 = new StringBuilder ( ) ;
stringBuilder . append ( Param . TIME + " >= ' " ) . append ( startTime ) . append ( " ' and " ) . append ( Param . TIME ) . append ( " <= ' " ) . append ( endTime ) . append ( " ' and ( " ) ;
for ( int i = 0 ; i < list . size ( ) ; i + + ) {
if ( list . size ( ) - i ! = 1 ) {
for ( int i = 0 ; i < list . size ( ) ; i + + ) {
if ( list . size ( ) - i ! = 1 ) {
stringBuilder . append ( Param . LINE_ID + " =' " ) . append ( list . get ( i ) ) . append ( " ' or " ) ;
} else {
stringBuilder . append ( Param . LINE_ID + " =' " ) . append ( list . get ( i ) ) . append ( " ') " ) ;
@@ -828,21 +799,21 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
stringBuilder . append ( " group by line_id tz('Asia/Shanghai') " ) ;
stringBuilder1 . append ( " freq_dev_overtime AS freq_dev_overtime,voltage_dev_overtime AS voltage_dev_overtime,ubalance_overtime AS ubalance_overtime,flicker_overtime AS flicker_overtime,i_neg_overtime AS i_neg_overtime,uaberrance_overtime AS uaberrance_overtime, " ) ;
for ( int i = 2 ; i < = 25 ; i + + ) {
if ( i = = 25 ) {
if ( i = = 25 ) {
stringBuilder1 . append ( " uharm_ " ) . append ( i ) . append ( " _overtime AS uharm_all_overtime, " ) ;
} else {
stringBuilder1 . append ( " uharm_ " ) . append ( i ) . append ( " _overtime+ " ) ;
}
}
for ( int i = 2 ; i < = 25 ; i + + ) {
if ( i = = 25 ) {
if ( i = = 25 ) {
stringBuilder1 . append ( " iharm_ " ) . append ( i ) . append ( " _overtime AS iharm_all_overtime, " ) ;
} else {
stringBuilder1 . append ( " iharm_ " ) . append ( i ) . append ( " _overtime+ " ) ;
}
}
for ( int i = 1 ; i < = 16 ; i + + ) {
if ( i = = 16 ) {
if ( i = = 16 ) {
stringBuilder1 . append ( " inuharm_ " ) . append ( i ) . append ( " _overtime AS inuharm_all_overtime, " ) ;
} else {
stringBuilder1 . append ( " inuharm_ " ) . append ( i ) . append ( " _overtime+ " ) ;
@@ -850,8 +821,8 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
}
stringBuilder1 . append ( " uharm_3_overtime,uharm_5_overtime,uharm_7_overtime,uharm_11_overtime,uharm_13_overtime,uharm_23_overtime,uharm_25_overtime, " ) ;
for ( int i = 2 ; i < = 25 ; i + + ) {
if ( i ! = 3 & & i ! = 5 & & i ! = 7 & & i ! = 11 & & i ! = 13 & & i ! = 23 & & i ! = 25 ) {
if ( i = = 24 ) {
if ( i ! = 3 & & i ! = 5 & & i ! = 7 & & i ! = 11 & & i ! = 13 & & i ! = 23 & & i ! = 25 ) {
if ( i = = 24 ) {
stringBuilder1 . append ( " uharm_ " ) . append ( i ) . append ( " _overtime AS uOtherTimes, " ) ;
} else {
stringBuilder1 . append ( " uharm_ " ) . append ( i ) . append ( " _overtime+ " ) ;
@@ -860,15 +831,15 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
}
stringBuilder1 . append ( " iharm_3_overtime,iharm_5_overtime,iharm_7_overtime,iharm_11_overtime,iharm_13_overtime,iharm_23_overtime,iharm_25_overtime, " ) ;
for ( int i = 2 ; i < = 25 ; i + + ) {
if ( i ! = 3 & & i ! = 5 & & i ! = 7 & & i ! = 11 & & i ! = 13 & & i ! = 23 & & i ! = 25 ) {
if ( i = = 24 ) {
if ( i ! = 3 & & i ! = 5 & & i ! = 7 & & i ! = 11 & & i ! = 13 & & i ! = 23 & & i ! = 25 ) {
if ( i = = 24 ) {
stringBuilder1 . append ( " iharm_ " ) . append ( i ) . append ( " _overtime AS iOtherTimes " ) ;
} else {
stringBuilder1 . append ( " iharm_ " ) . append ( i ) . append ( " _overtime+ " ) ;
}
}
}
String sql = " select " + stringBuilder1 + " from limit_target where " + stringBuilder ;
String sql = " select " + stringBuilder1 + " from limit_target where " + stringBuilder ;
QueryResult sqlResult = influxDbUtils . query ( sql ) ;
InfluxDBResultMapper resultMapper = new InfluxDBResultMapper ( ) ;
return resultMapper . toPOJO ( sqlResult , LimitTarget . class ) ;