@@ -12,18 +12,13 @@ import com.njcn.harmonic.pojo.po.RStatOrgMPO;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgDMapper ;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgMMapper ;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgQMapper ;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgYMapper ;
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailDMapper ;
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailMMapper ;
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatEventDPOMapper ;
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatEventMPOMapper ;
import com.njcn.prepare.harmonic.pojo.po.RStatEventDPO ;
import com.njcn.prepare.harmonic.pojo.po.RStatEventMPO ;
import com.njcn.prepare.harmonic.pojo.po.RStatEventQPO ;
import com.njcn.prepare.harmonic.pojo.po.RStatOrgQPO ;
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatEventDPOService ;
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatEventMPOService ;
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatEventQPOService ;
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatEventService ;
import com.njcn.prepare.harmonic.pojo.po.* ;
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.* ;
import com.njcn.system.api.DicDataFeignClient ;
import com.njcn.system.enums.DicDataEnum ;
import com.njcn.system.enums.DicDataTypeEnum ;
@@ -36,6 +31,7 @@ import org.springframework.util.CollectionUtils;
import java.text.DecimalFormat ;
import java.time.LocalDate ;
import java.time.ZoneId ;
import java.time.format.DateTimeFormatter ;
import java.util.* ;
import java.util.function.Function ;
import java.util.stream.Collectors ;
@@ -66,18 +62,22 @@ public class RStatEventServiceImpl implements RStatEventService {
private final RStatEventMPOService rStatEventMPOService ;
private final RStatEventQPOService rStatEventQPOService ;
private final RStatEventDPOMapper rStatEventDPOMapper ;
private final RStatEventMPOMapper rStatEventMPOMapper ;
private final RStatEventQPOService rStatEventQPOService ;
private final RStatEventYPOService rStatEventYPOService ;
private final RStatOrgDMapper rStatOrgDMapper ;
private final RStatOrgMMapper rStatOrgMMapper ;
private final RStatOrgQMapper rStatOrgQMapper ;
private final RStatOrgYMapper rStatOrgYMapper ;
@Override
public void handler ( List < DeptGetChildrenMoreDTO > data , String dataDate , Integer type ) {
switch ( type ) {
@@ -703,11 +703,14 @@ public class RStatEventServiceImpl implements RStatEventService {
//年表
public void rStartEventYHandler ( List < DeptGetChildrenMoreDTO > data , String dataDate , Integer type ) {
List < RStatEventD PO > rStatEventD POList = new ArrayList < > ( ) ;
List < RStatEventY PO > rStatEventY POList = new ArrayList < > ( ) ;
DecimalFormat df = new DecimalFormat ( " 0.00 " ) ;
Date date = DateUtil . parse ( dataDate ) ;
LocalDate localDate = date . toInstant ( ) . atZone ( ZoneId . systemDefault ( ) ) . toLocalDate ( ) ;
// 获取当前年的起始日期和结束日期
LocalDate date1 = LocalDate . parse ( dataDate , DateTimeFormatter . ISO_LOCAL_DATE ) ;
LocalDate startDate = date1 . withDayOfYear ( 1 ) ;
LocalDate endDate = date1 . withDayOfYear ( 365 ) . plusDays ( 1 ) ;
/*获取暂态统计指标*/
List < DictData > eventStatis = dicDataFeignClient . getDicDataByTypeCode ( DicDataTypeEnum . EVENT_STATIS . getCode ( ) ) . getData ( ) ;
@@ -719,8 +722,14 @@ public class RStatEventServiceImpl implements RStatEventService {
List < DictData > lineSortList = dicDataFeignClient . getDicDataByTypeCode ( DicDataTypeEnum . LINE_SORT . getCode ( ) ) . getData ( ) ;
Map < String , DictData > lineSortMap = lineSortList . stream ( ) . collect ( Collectors . toMap ( DictData : : getCode , dictData - > dictData ) ) ;
QueryWrapper < RMpEventDetailDPO > rMpEventDetailDPOQueryWrapper = new QueryWrapper < > ( ) ;
QueryWrapper < RStatOrgDPO > rStatOrgD POQueryWrapper = new QueryWrapper < > ( ) ;
//详情表
QueryWrapper < RMpEventDetailMPO > rMpEventDetailM POQueryWrapper = new QueryWrapper < > ( ) ;
//org年表
QueryWrapper < RStatOrgYPO > rStatOrgYPOQueryWrapper = new QueryWrapper < > ( ) ;
//天表
QueryWrapper < RStatEventDPO > rStatEventDPOQueryWrapper = new QueryWrapper < > ( ) ;
//月表
QueryWrapper < RStatEventMPO > rStatEventMPOQueryWrapper = new QueryWrapper < > ( ) ;
data . forEach ( deptGetChildrenMoreDTO - > {
@@ -731,6 +740,101 @@ public class RStatEventServiceImpl implements RStatEventService {
collect . forEach ( ( k , v ) - > {
List < String > collect1 = v . stream ( ) . map ( LineDevGetDTO : : getPointId ) . collect ( Collectors . toList ( ) ) ;
rMpEventDetailMPOQueryWrapper . clear ( ) ;
rMpEventDetailMPOQueryWrapper .
in ( " measurement_point_id " , collect1 ) .
between ( " data_date " , startDate , endDate ) ;
List < RMpEventDetailMPO > rMpEventDetailMPOS = rMpEventDetailMMapper . selectList ( rMpEventDetailMPOQueryWrapper ) ;
//年表
rStatOrgYPOQueryWrapper . clear ( ) ;
rStatOrgYPOQueryWrapper . select ( " effective_measurement_accrued " ) .
eq ( " org_no " , deptGetChildrenMoreDTO . getUnitId ( ) ) .
eq ( " measurement_type_class " , getmeasurementType ( k , lineSortMap ) ) .
eq ( " data_type " , dataTypeMap . get ( DicDataEnum . MAINNET_POINT . getCode ( ) ) . getId ( ) ) .
between ( " data_date " , startDate , endDate ) ;
RStatOrgYPO rStatOrgYPO = rStatOrgYMapper . selectOne ( rStatOrgYPOQueryWrapper ) ;
//天表
rStatEventDPOQueryWrapper . clear ( ) ;
rStatEventDPOQueryWrapper .
eq ( " org_no " , deptGetChildrenMoreDTO . getUnitId ( ) ) .
between ( " data_date " , startDate , endDate ) .
eq ( " measurement_type_class " , getmeasurementType ( k , lineSortMap ) ) .
eq ( " data_type " , dataTypeMap . get ( DicDataEnum . MAINNET_POINT . getCode ( ) ) . getId ( ) ) ;
List < RStatEventDPO > rStatEventDPO = rStatEventDPOMapper . selectList ( rStatEventDPOQueryWrapper ) ;
//月表
rStatEventMPOQueryWrapper . clear ( ) ;
rStatEventMPOQueryWrapper .
eq ( " org_no " , deptGetChildrenMoreDTO . getUnitId ( ) ) .
between ( " data_date " , startDate , endDate ) .
eq ( " measurement_type_class " , getmeasurementType ( k , lineSortMap ) ) .
eq ( " data_type " , dataTypeMap . get ( DicDataEnum . MAINNET_POINT . getCode ( ) ) . getId ( ) ) ;
List < RStatEventMPO > rStatEventMPO = rStatEventMPOMapper . selectList ( rStatEventMPOQueryWrapper ) ;
//求各个类型的平均值(月表)
Map < String , Double > avgEMM = rStatEventMPO . stream ( )
. collect ( Collectors . groupingBy ( RStatEventMPO : : getEventType , Collectors . averagingDouble ( RStatEventMPO : : getEventMeasurementAverage ) ) ) ;
//event_measurement的和
Map < String , Integer > sumEM = rStatEventDPO . stream ( )
. collect ( Collectors . groupingBy ( RStatEventDPO : : getEventType , Collectors . summingInt ( RStatEventDPO : : getEventMeasurement ) ) ) ;
//event_count( 天表)
Map < String , Integer > sumEC = rStatEventDPO . stream ( )
. collect ( Collectors . groupingBy ( RStatEventDPO : : getEventType , Collectors . summingInt ( RStatEventDPO : : getEventCount ) ) ) ;
//event_count( 月表)
Map < String , Integer > sumECM = rStatEventMPO . stream ( )
. collect ( Collectors . groupingBy ( RStatEventMPO : : getEventType , Collectors . summingInt ( RStatEventMPO : : getEventCount ) ) ) ;
//event_measurement_ratio_average( 月表)
Map < String , Double > avgEMRM = rStatEventMPO . stream ( )
. collect ( Collectors . groupingBy ( RStatEventMPO : : getEventType , Collectors . averagingDouble ( RStatEventMPO : : getEventMeasurementRatioAverage ) ) ) ;
eventStatis . forEach ( dictData - > {
if ( Objects . equals ( dictData . getCode ( ) , DicDataEnum . DISTURBANCE . getCode ( ) )
| | Objects . equals ( dictData . getCode ( ) , DicDataEnum . OTHER . getCode ( ) )
| | Objects . equals ( dictData . getCode ( ) , DicDataEnum . RECORDING_WAVE . getCode ( ) )
| | Objects . equals ( dictData . getCode ( ) , DicDataEnum . TOTAL_INDICATORS . getCode ( ) ) ) {
return ;
}
//累计发生暂态监测点数
Integer statisData = getStatisQData ( dictData , rMpEventDetailMPOS ) ;
RStatEventYPO rStatEventYPO = new RStatEventYPO ( ) ;
rStatEventYPO . setOrgNo ( deptGetChildrenMoreDTO . getUnitId ( ) ) ;
rStatEventYPO . setDataDate ( localDate ) ;
rStatEventYPO . setMeasurementTypeClass ( getmeasurementType ( k , lineSortMap ) ) ;
rStatEventYPO . setEventType ( dictData . getId ( ) ) ;
rStatEventYPO . setEventMeasurementAverage ( Float . parseFloat ( df . format ( avgEMM . get ( dictData . getId ( ) ) ) ) ) ;
// todo
rStatEventYPO . setEventMeasurementAccrued ( statisData ) ;
rStatEventYPO . setEventCount ( sumECM . get ( dictData . getId ( ) ) ) ;
rStatEventYPO . setEventMeasurementRatioAverage ( Float . parseFloat ( df . format ( avgEMRM . get ( dictData . getId ( ) ) ) ) ) ;
rStatEventYPO . setDataType ( dataTypeMap . get ( DicDataEnum . MAINNET_POINT . getCode ( ) ) . getId ( ) ) ;
if ( sumEM . get ( dictData . getId ( ) ) = = 0 ) {
rStatEventYPO . setEventFreq ( 1 . 00f ) ;
} else {
String value = df . format ( sumEC . get ( dictData . getId ( ) ) / sumEM . get ( dictData . getId ( ) ) ) ;
rStatEventYPO . setEventFreq ( Float . parseFloat ( value ) ) ;
}
if ( Objects . isNull ( rStatOrgYPO ) ) {
rStatEventYPO . setEventMeasurementRatioAccrued ( 1 . 00f ) ;
} else {
if ( rStatOrgYPO . getEffectiveMeasurementAccrued ( ) = = 0 ) {
rStatEventYPO . setEventMeasurementRatioAccrued ( 1 . 00f ) ;
} else {
String value = df . format ( statisData / rStatOrgYPO . getEffectiveMeasurementAccrued ( ) ) ;
rStatEventYPO . setEventMeasurementRatioAccrued ( Float . parseFloat ( value ) ) ;
}
}
rStatEventYPOList . add ( rStatEventYPO ) ;
} ) ;
} ) ;
}
@@ -741,12 +845,107 @@ public class RStatEventServiceImpl implements RStatEventService {
collect . forEach ( ( k , v ) - > {
List < String > collect1 = v . stream ( ) . map ( LineDevGetDTO : : getPointId ) . collect ( Collectors . toList ( ) ) ;
rMpEventDetailMPOQueryWrapper . clear ( ) ;
rMpEventDetailMPOQueryWrapper .
in ( " measurement_point_id " , collect1 ) .
between ( " data_date " , startDate , endDate ) ;
List < RMpEventDetailMPO > rMpEventDetailMPOS = rMpEventDetailMMapper . selectList ( rMpEventDetailMPOQueryWrapper ) ;
//年表
rStatOrgYPOQueryWrapper . clear ( ) ;
rStatOrgYPOQueryWrapper . select ( " effective_measurement_accrued " ) .
eq ( " org_no " , deptGetChildrenMoreDTO . getUnitId ( ) ) .
eq ( " measurement_type_class " , getmeasurementType ( k , lineSortMap ) ) .
eq ( " data_type " , dataTypeMap . get ( DicDataEnum . DISTRIBUTION_POINT . getCode ( ) ) . getId ( ) ) .
between ( " data_date " , startDate , endDate ) ;
RStatOrgYPO rStatOrgYPO = rStatOrgYMapper . selectOne ( rStatOrgYPOQueryWrapper ) ;
//天表
rStatEventDPOQueryWrapper . clear ( ) ;
rStatEventDPOQueryWrapper .
eq ( " org_no " , deptGetChildrenMoreDTO . getUnitId ( ) ) .
between ( " data_date " , startDate , endDate ) .
eq ( " measurement_type_class " , getmeasurementType ( k , lineSortMap ) ) .
eq ( " data_type " , dataTypeMap . get ( DicDataEnum . DISTRIBUTION_POINT . getCode ( ) ) . getId ( ) ) ;
List < RStatEventDPO > rStatEventDPO = rStatEventDPOMapper . selectList ( rStatEventDPOQueryWrapper ) ;
//月表
rStatEventMPOQueryWrapper . clear ( ) ;
rStatEventMPOQueryWrapper .
eq ( " org_no " , deptGetChildrenMoreDTO . getUnitId ( ) ) .
between ( " data_date " , startDate , endDate ) .
eq ( " measurement_type_class " , getmeasurementType ( k , lineSortMap ) ) .
eq ( " data_type " , dataTypeMap . get ( DicDataEnum . DISTRIBUTION_POINT . getCode ( ) ) . getId ( ) ) ;
List < RStatEventMPO > rStatEventMPO = rStatEventMPOMapper . selectList ( rStatEventMPOQueryWrapper ) ;
//求各个类型的平均值(月表)
Map < String , Double > avgEMM = rStatEventMPO . stream ( )
. collect ( Collectors . groupingBy ( RStatEventMPO : : getEventType , Collectors . averagingDouble ( RStatEventMPO : : getEventMeasurementAverage ) ) ) ;
//event_measurement的和
Map < String , Integer > sumEM = rStatEventDPO . stream ( )
. collect ( Collectors . groupingBy ( RStatEventDPO : : getEventType , Collectors . summingInt ( RStatEventDPO : : getEventMeasurement ) ) ) ;
//event_count( 天表)
Map < String , Integer > sumEC = rStatEventDPO . stream ( )
. collect ( Collectors . groupingBy ( RStatEventDPO : : getEventType , Collectors . summingInt ( RStatEventDPO : : getEventCount ) ) ) ;
//event_count( 月表)
Map < String , Integer > sumECM = rStatEventMPO . stream ( )
. collect ( Collectors . groupingBy ( RStatEventMPO : : getEventType , Collectors . summingInt ( RStatEventMPO : : getEventCount ) ) ) ;
//event_measurement_ratio_average( 月表)
Map < String , Double > avgEMRM = rStatEventMPO . stream ( )
. collect ( Collectors . groupingBy ( RStatEventMPO : : getEventType , Collectors . averagingDouble ( RStatEventMPO : : getEventMeasurementRatioAverage ) ) ) ;
eventStatis . forEach ( dictData - > {
if ( Objects . equals ( dictData . getCode ( ) , DicDataEnum . DISTURBANCE . getCode ( ) )
| | Objects . equals ( dictData . getCode ( ) , DicDataEnum . OTHER . getCode ( ) )
| | Objects . equals ( dictData . getCode ( ) , DicDataEnum . RECORDING_WAVE . getCode ( ) )
| | Objects . equals ( dictData . getCode ( ) , DicDataEnum . TOTAL_INDICATORS . getCode ( ) ) ) {
return ;
}
//累计发生暂态监测点数
Integer statisData = getStatisQData ( dictData , rMpEventDetailMPOS ) ;
RStatEventYPO rStatEventYPO = new RStatEventYPO ( ) ;
rStatEventYPO . setOrgNo ( deptGetChildrenMoreDTO . getUnitId ( ) ) ;
rStatEventYPO . setDataDate ( localDate ) ;
rStatEventYPO . setMeasurementTypeClass ( getmeasurementType ( k , lineSortMap ) ) ;
rStatEventYPO . setEventType ( dictData . getId ( ) ) ;
rStatEventYPO . setEventMeasurementAverage ( Float . parseFloat ( df . format ( avgEMM . get ( dictData . getId ( ) ) ) ) ) ;
// todo
rStatEventYPO . setEventMeasurementAccrued ( statisData ) ;
rStatEventYPO . setEventCount ( sumECM . get ( dictData . getId ( ) ) ) ;
rStatEventYPO . setEventMeasurementRatioAverage ( Float . parseFloat ( df . format ( avgEMRM . get ( dictData . getId ( ) ) ) ) ) ;
rStatEventYPO . setDataType ( dataTypeMap . get ( DicDataEnum . DISTRIBUTION_POINT . getCode ( ) ) . getId ( ) ) ;
if ( sumEM . get ( dictData . getId ( ) ) = = 0 ) {
rStatEventYPO . setEventFreq ( 1 . 00f ) ;
} else {
String value = df . format ( sumEC . get ( dictData . getId ( ) ) / sumEM . get ( dictData . getId ( ) ) ) ;
rStatEventYPO . setEventFreq ( Float . parseFloat ( value ) ) ;
}
if ( Objects . isNull ( rStatOrgYPO ) ) {
rStatEventYPO . setEventMeasurementRatioAccrued ( 1 . 00f ) ;
} else {
if ( rStatOrgYPO . getEffectiveMeasurementAccrued ( ) = = 0 ) {
rStatEventYPO . setEventMeasurementRatioAccrued ( 1 . 00f ) ;
} else {
String value = df . format ( statisData / rStatOrgYPO . getEffectiveMeasurementAccrued ( ) ) ;
rStatEventYPO . setEventMeasurementRatioAccrued ( Float . parseFloat ( value ) ) ;
}
}
rStatEventYPOList . add ( rStatEventYPO ) ;
} ) ;
} ) ;
}
} ) ;
if ( ! CollectionUtils . isEmpty ( rStatEventD POList ) ) {
rStatEventD POService . saveOrUpdateBatchByMultiId ( rStatEventD POList , 500 ) ;
if ( ! CollectionUtils . isEmpty ( rStatEventY POList ) ) {
rStatEventY POService . saveOrUpdateBatchByMultiId ( rStatEventY POList , 500 ) ;
}
}