zbj//1.变电站指标统计_月统计 算法

This commit is contained in:
zhangbaojian
2023-06-20 16:06:26 +08:00
parent d68b89763b
commit 29a6dfe038
11 changed files with 760 additions and 127 deletions

View File

@@ -0,0 +1,116 @@
package com.njcn.prepare.harmonic.pojo.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDate;
/**
*
* @author zbj
* @since 2023-06-20
*/
@Data
@TableName("r_stat_substation_m")
public class RStatSubstationMPO {
@MppMultiId(value = "data_date")
private LocalDate dataDate;
@MppMultiId(value = "substation_id")
private String substationId;
@TableField(value = "effective_measurement_average")
private Float effectiveMeasurementAverage;
@TableField(value = "effective_measurement_accrued")
private Integer effectiveMeasurementAccrued;
@TableField(value = "harmonic_over_day")
private Float harmonicOverDay;
@TableField(value = "harmonic_count")
private Integer harmonicCount;
@TableField(value = "freq_over_day")
private Float freqOverDay;
@TableField(value = "freq_count")
private Integer freqCount;
@TableField(value = "v_dev_over_day")
private Float vDevOverDay;
@TableField(value = "v_dev_count")
private Integer vDevCount;
@TableField(value = "v_over_day")
private Float vOverDay;
@TableField(value = "v_count")
private Integer vCount;
@TableField(value = "i_over_day")
private Float iOverDay;
@TableField(value = "i_count")
private Integer iCount;
@TableField(value = "unbalance_over_day")
private Float unbalanceOverDay;
@TableField(value = "unbalance_count")
private Integer unbalanceCount;
@TableField(value = "i_neg_over_day")
private Float iNegOverDay;
@TableField(value = "i_neg_count")
private Integer iNegCount;
@TableField(value = "flicker_over_day")
private Float flickerOverDay;
@TableField(value = "flicker_count")
private Integer flickerCount;
@TableField(value = "inuharm_over_day")
private Float inuharmOverDay;
@TableField(value = "inuharm_count")
private Integer inuharmCount;
@TableField(value = "event_count")
private Integer eventCount;
@TableField(value = "event_freq")
private Float eventFreq;
@TableField(value = "sag_count")
private Integer sagCount;
@TableField(value = "sag_freq")
private Float sagFreq;
@TableField(value = "swell_count")
private Integer swellCount;
@TableField(value = "swell_freq")
private Float swellFreq;
@TableField(value = "interrupt_count")
private Integer interruptCount;
@TableField(value = "interrupt_freq")
private Float interruptFreq;
}

View File

@@ -5,6 +5,7 @@ import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailM;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* RMpPartHarmonicDetailMMapper
@@ -17,4 +18,6 @@ public interface RMpPartHarmonicDetailMMapper extends MppBaseMapper<RMpPartHarmo
List<RMpPartHarmonicDetailM> getHarmonicDetailMonthOne(@Param("startTime") String startTime, @Param("endTime")String endTime, @Param("lineList") List<String> lineList);
Map<String, Object> getPartSum(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("lineIds") List<String> lineIds);
}

View File

@@ -6,6 +6,7 @@ import com.njcn.harmonic.pojo.po.RMpSurplusHarmonicDetailM;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* RMpSurplusHarmonicDetailMMapper
@@ -18,4 +19,6 @@ public interface RMpSurplusHarmonicDetailMMapper extends MppBaseMapper<RMpSurplu
List<RMpSurplusHarmonicDetailM> getHarmonicDetailMonthTwo(@Param("startTime") String startTime,@Param("endTime") String endTime, @Param("lineList") List<String> lineList);
Map<String, Object> getSurplusSum(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("lineIds") List<String> lineIds);
}

View File

@@ -4,127 +4,146 @@
<select id="getHarmonicDetailMonthOne" resultType="com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailM">
select
measurement_point_id measurementPointId,
sum(is_harmonic) measurementOverDay,
sum(is_freq) freqOverDay,
sum(is_v_dev_up) vDevUpOverDay,
sum(is_v_dev_low) vDevLowOverDay,
sum(is_v_dev) vDevOverDay,
sum(is_v_thd) vThdOverDay,
sum(is_v) vOverDay,
sum(is_i) iOverDay,
sum(is_v_2) v2OverDay,
sum(is_v_3) v3OverDay,
sum(is_v_4) v4OverDay,
sum(is_v_5) v5OverDay,
sum(is_v_6) v6OverDay,
sum(is_v_7) v7OverDay,
sum(is_v_8) v8OverDay,
sum(is_v_9) v9OverDay,
sum(is_v_10) v10OverDay,
sum(is_v_11) v11OverDay,
sum(is_v_12) v12OverDay,
sum(is_v_13) v13OverDay,
sum(is_v_14) v14OverDay,
sum(is_v_15) v15OverDay,
sum(is_v_16) v16OverDay,
sum(is_v_17) v17OverDay,
sum(is_v_18) v18OverDay,
sum(is_v_19) v19OverDay,
sum(is_v_20) v20OverDay,
sum(is_v_21) v21OverDay,
sum(is_v_22) v22OverDay,
sum(is_v_23) v23OverDay,
sum(is_v_24) v24OverDay,
sum(is_v_25) v25OverDay,
sum(is_v_26) v26OverDay,
sum(is_v_27) v27OverDay,
sum(is_v_28) v28OverDay,
sum(is_v_29) v29OverDay,
sum(is_v_30) v30OverDay,
sum(is_v_31) v31OverDay,
sum(is_v_32) v32OverDay,
sum(is_v_33) v33OverDay,
sum(is_v_34) v34OverDay,
sum(is_v_35) v35OverDay,
sum(is_v_36) v36OverDay,
sum(is_v_37) v37OverDay,
sum(is_v_38) v38OverDay,
sum(is_v_39) v39OverDay,
sum(is_v_40) v40OverDay,
sum(is_v_41) v41OverDay,
sum(is_v_42) v42OverDay,
sum(is_v_43) v43OverDay,
sum(is_v_44) v44OverDay,
sum(is_v_45) v45OverDay,
sum(is_v_46) v46OverDay,
sum(is_v_47) v47OverDay,
sum(is_v_48) v48OverDay,
sum(is_v_49) v49OverDay,
sum(is_v_50) v50OverDay,
sum(is_i_2) i2OverDay,
sum(is_i_3) i3OverDay,
sum(is_i_4) i4OverDay,
sum(is_i_5) i5OverDay,
sum(is_i_6) i6OverDay,
sum(is_i_7) i7OverDay,
sum(is_i_8) i8OverDay,
sum(is_i_9) i9OverDay,
sum(is_i_10) i10OverDay,
sum(is_i_11) i11OverDay,
sum(is_i_12) i12OverDay,
sum(is_i_13) i13OverDay,
sum(is_i_14) i14OverDay,
sum(is_i_15) i15OverDay,
sum(is_i_16) i16OverDay,
sum(is_i_17) i17OverDay,
sum(is_i_18) i18OverDay,
sum(is_i_19) i19OverDay,
sum(is_i_20) i20OverDay,
sum(is_i_21) i21OverDay,
sum(is_i_22) i22OverDay,
sum(is_i_23) i23OverDay,
sum(is_i_24) i24OverDay,
sum(is_i_25) i25OverDay,
sum(is_i_26) i26OverDay,
sum(is_i_27) i27OverDay,
sum(is_i_28) i28OverDay,
sum(is_i_29) i29OverDay,
sum(is_i_30) i30OverDay,
sum(is_i_31) i31OverDay,
sum(is_i_32) i32OverDay,
sum(is_i_33) i33OverDay,
sum(is_i_34) i34OverDay,
sum(is_i_35) i35OverDay,
sum(is_i_36) i36OverDay,
sum(is_i_37) i37OverDay,
sum(is_i_38) i38OverDay,
sum(is_i_39) i39OverDay,
sum(is_i_40) i40OverDay,
sum(is_i_41) i41OverDay,
sum(is_i_42) i42OverDay,
sum(is_i_43) i43OverDay,
sum(is_i_44) i44OverDay,
sum(is_i_45) i45OverDay,
sum(is_i_46) i46OverDay,
sum(is_i_47) i47OverDay,
sum(is_i_48) i48OverDay,
sum(is_i_49) i49OverDay,
sum(is_i_50) i50OverDay,
sum(is_unbalance),
sum(is_i_neg)
measurement_point_id measurementPointId,
sum(is_harmonic) measurementOverDay,
sum(is_freq) freqOverDay,
sum(is_v_dev_up) vDevUpOverDay,
sum(is_v_dev_low) vDevLowOverDay,
sum(is_v_dev) vDevOverDay,
sum(is_v_thd) vThdOverDay,
sum(is_v) vOverDay,
sum(is_i) iOverDay,
sum(is_v_2) v2OverDay,
sum(is_v_3) v3OverDay,
sum(is_v_4) v4OverDay,
sum(is_v_5) v5OverDay,
sum(is_v_6) v6OverDay,
sum(is_v_7) v7OverDay,
sum(is_v_8) v8OverDay,
sum(is_v_9) v9OverDay,
sum(is_v_10) v10OverDay,
sum(is_v_11) v11OverDay,
sum(is_v_12) v12OverDay,
sum(is_v_13) v13OverDay,
sum(is_v_14) v14OverDay,
sum(is_v_15) v15OverDay,
sum(is_v_16) v16OverDay,
sum(is_v_17) v17OverDay,
sum(is_v_18) v18OverDay,
sum(is_v_19) v19OverDay,
sum(is_v_20) v20OverDay,
sum(is_v_21) v21OverDay,
sum(is_v_22) v22OverDay,
sum(is_v_23) v23OverDay,
sum(is_v_24) v24OverDay,
sum(is_v_25) v25OverDay,
sum(is_v_26) v26OverDay,
sum(is_v_27) v27OverDay,
sum(is_v_28) v28OverDay,
sum(is_v_29) v29OverDay,
sum(is_v_30) v30OverDay,
sum(is_v_31) v31OverDay,
sum(is_v_32) v32OverDay,
sum(is_v_33) v33OverDay,
sum(is_v_34) v34OverDay,
sum(is_v_35) v35OverDay,
sum(is_v_36) v36OverDay,
sum(is_v_37) v37OverDay,
sum(is_v_38) v38OverDay,
sum(is_v_39) v39OverDay,
sum(is_v_40) v40OverDay,
sum(is_v_41) v41OverDay,
sum(is_v_42) v42OverDay,
sum(is_v_43) v43OverDay,
sum(is_v_44) v44OverDay,
sum(is_v_45) v45OverDay,
sum(is_v_46) v46OverDay,
sum(is_v_47) v47OverDay,
sum(is_v_48) v48OverDay,
sum(is_v_49) v49OverDay,
sum(is_v_50) v50OverDay,
sum(is_i_2) i2OverDay,
sum(is_i_3) i3OverDay,
sum(is_i_4) i4OverDay,
sum(is_i_5) i5OverDay,
sum(is_i_6) i6OverDay,
sum(is_i_7) i7OverDay,
sum(is_i_8) i8OverDay,
sum(is_i_9) i9OverDay,
sum(is_i_10) i10OverDay,
sum(is_i_11) i11OverDay,
sum(is_i_12) i12OverDay,
sum(is_i_13) i13OverDay,
sum(is_i_14) i14OverDay,
sum(is_i_15) i15OverDay,
sum(is_i_16) i16OverDay,
sum(is_i_17) i17OverDay,
sum(is_i_18) i18OverDay,
sum(is_i_19) i19OverDay,
sum(is_i_20) i20OverDay,
sum(is_i_21) i21OverDay,
sum(is_i_22) i22OverDay,
sum(is_i_23) i23OverDay,
sum(is_i_24) i24OverDay,
sum(is_i_25) i25OverDay,
sum(is_i_26) i26OverDay,
sum(is_i_27) i27OverDay,
sum(is_i_28) i28OverDay,
sum(is_i_29) i29OverDay,
sum(is_i_30) i30OverDay,
sum(is_i_31) i31OverDay,
sum(is_i_32) i32OverDay,
sum(is_i_33) i33OverDay,
sum(is_i_34) i34OverDay,
sum(is_i_35) i35OverDay,
sum(is_i_36) i36OverDay,
sum(is_i_37) i37OverDay,
sum(is_i_38) i38OverDay,
sum(is_i_39) i39OverDay,
sum(is_i_40) i40OverDay,
sum(is_i_41) i41OverDay,
sum(is_i_42) i42OverDay,
sum(is_i_43) i43OverDay,
sum(is_i_44) i44OverDay,
sum(is_i_45) i45OverDay,
sum(is_i_46) i46OverDay,
sum(is_i_47) i47OverDay,
sum(is_i_48) i48OverDay,
sum(is_i_49) i49OverDay,
sum(is_i_50) i50OverDay,
sum(is_unbalance),
sum(is_i_neg)
from
r_mp_part_harmonic_detail_d
r_mp_part_harmonic_detail_d
where
data_date between #{startTime} and #{endTime}
<if test="lineList != null and lineList.size() > 0">
and measurement_point_id in
<foreach collection="lineList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
data_date between #{startTime} and #{endTime}
<if test="lineList != null and lineList.size() > 0">
and measurement_point_id in
<foreach collection="lineList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
group by
measurement_point_id
measurement_point_id
</select>
<select id="getPartSum" resultType="java.util.Map">
SELECT
count( CASE WHEN measurement_over_day > 0 THEN 1 END ) "measurementOverDayCount",
count( CASE WHEN freq_over_day > 0 THEN 1 END ) "freqOverDayCount",
count( CASE WHEN v_dev_over_day > 0 THEN 1 END ) "vDevOverDayCount",
count( CASE WHEN v_over_day > 0 THEN 1 END ) "vOverDayCount",
count( CASE WHEN i_over_day > 0 THEN 1 END ) "iOverDayCount",
count( CASE WHEN unbalance_over_day > 0 THEN 1 END ) "unbalanceOverDayCount",
count( CASE WHEN i_neg_over_day > 0 THEN 1 END ) "iNegOverDayCount"
FROM
r_mp_part_harmonic_detail_m
WHERE
measurement_point_id in
<foreach collection="lineIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
AND data_date between #{startTime} and #{endTime}
</select>
</mapper>

View File

@@ -71,4 +71,18 @@
measurement_point_id
</select>
<select id="getSurplusSum" resultType="java.util.Map">
SELECT
count( CASE WHEN flicker_over_day > 0 THEN 1 END ) "flickerOverDayCount",
count( CASE WHEN inuharm_over_day > 0 THEN 1 END ) "inuharmOverDayCount"
FROM
r_mp_surplus_harmonic_detail_m
WHERE
measurement_point_id in
<foreach collection="lineIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
AND data_date between #{startTime} and #{endTime}
</select>
</mapper>

View File

@@ -1,13 +1,12 @@
package com.njcn.prepare.harmonic.mapper.mysql.newalgorithm;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.prepare.harmonic.pojo.po.RStatEventDPO;
import com.njcn.prepare.harmonic.pojo.po.RStatEventDVO;
import com.njcn.prepare.harmonic.pojo.po.RStatSubstationDPO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* Description:
@@ -19,4 +18,7 @@ import java.util.List;
*/
@Mapper
public interface RStatSubstationDPOMapper extends MppBaseMapper<RStatSubstationDPO> {
Map<String, Object> getSumAndCount(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("substationId") String substationId);
}

View File

@@ -0,0 +1,17 @@
package com.njcn.prepare.harmonic.mapper.mysql.newalgorithm;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.prepare.harmonic.pojo.po.RStatSubstationMPO;
import org.apache.ibatis.annotations.Mapper;
/**
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/12/13 15:39【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Mapper
public interface RStatSubstationMPOMapper extends MppBaseMapper<RStatSubstationMPO> {
}

View File

@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatSubstationDPOMapper">
<select id="getSumAndCount" resultType="java.util.Map">
SELECT t.effectiveMeasurementCountAvg,
t.harmonicCountCount,
t.freqCountCount,
t.vDevCountCount,
t.vCountCount,
t.iCountCount,
t.unbalanceCountCount,
t.iNegCountCount,
t.flickerCountCount,
t.inuharmCountCount,
t.eventCountSum,
CASE
WHEN t.eventMeasurementCountSum = 0 THEN
0.00
ELSE round(t.eventCountSum / t.eventMeasurementCountSum, 2)
END "eventCountFrequency",
t.sagCountSum,
CASE
WHEN t.sagMeasurementCountSum = 0 THEN
0.00
ELSE round(t.sagCountSum / t.sagMeasurementCountSum, 2)
END "sagCountFrequency",
t.swellCountSum,
CASE
WHEN t.swellMeasurementCountSum = 0 THEN
0.00
ELSE round(t.swellCountSum / t.swellMeasurementCountSum, 2)
END "swellCountFrequency",
t.interruptCountSum,
CASE
WHEN t.interruptMeasurementCountSum = 0 THEN
0.00
ELSE round(t.interruptCountSum / t.interruptMeasurementCountSum, 2)
END "interruptCountFrequency"
FROM (
SELECT round(avg(effective_measurement_count), 2) "effectiveMeasurementCountAvg",
count(CASE WHEN harmonic_count > 0 THEN 1 END) "harmonicCountCount",
count(CASE WHEN freq_count > 0 THEN 1 END) "freqCountCount",
count(CASE WHEN v_dev_count > 0 THEN 1 END) "vDevCountCount",
count(CASE WHEN v_count > 0 THEN 1 END) "vCountCount",
count(CASE WHEN i_count > 0 THEN 1 END) "iCountCount",
count(CASE WHEN unbalance_count > 0 THEN 1 END) "unbalanceCountCount",
count(CASE WHEN i_neg_count > 0 THEN 1 END) "iNegCountCount",
count(CASE WHEN flicker_count > 0 THEN 1 END) "flickerCountCount",
count(CASE WHEN inuharm_count > 0 THEN 1 END) "inuharmCountCount",
sum(event_count) "eventCountSum",
sum(event_measurement_count) "eventMeasurementCountSum",
sum(sag_count) "sagCountSum",
sum(sag_measurement_count) "sagMeasurementCountSum",
sum(swell_count) "swellCountSum",
sum(swell_measurement_count) "swellMeasurementCountSum",
sum(interrupt_count) "interruptCountSum",
sum(interrupt_measurement_count) "interruptMeasurementCountSum"
FROM r_stat_substation_d
WHERE substation_id = #{substationId}
AND data_date between #{startTime} and #{endTime}
) t
</select>
</mapper>

View File

@@ -0,0 +1,15 @@
package com.njcn.prepare.harmonic.service.mysql.newalgorithm;
import com.github.jeffreyning.mybatisplus.service.IMppService;
import com.njcn.prepare.harmonic.pojo.po.RStatSubstationDPO;
import com.njcn.prepare.harmonic.pojo.po.RStatSubstationMPO;
/**
* @author zbj
* @since 2023-06-19
*/
public interface RStatSubstationMPOService extends IMppService<RStatSubstationMPO> {
}

View File

@@ -0,0 +1,21 @@
package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatSubstationDPOMapper;
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatSubstationMPOMapper;
import com.njcn.prepare.harmonic.pojo.po.RStatSubstationDPO;
import com.njcn.prepare.harmonic.pojo.po.RStatSubstationMPO;
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatSubstationDPOService;
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatSubstationMPOService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
/**
*
* @author zbj
* @since 2023-06-19
*/
@Service
@RequiredArgsConstructor
public class RStatSubstationMPOServiceImpl extends MppServiceImpl<RStatSubstationMPOMapper, RStatSubstationMPO> implements RStatSubstationMPOService {
}

View File

@@ -12,12 +12,10 @@ import com.njcn.harmonic.pojo.po.RMpEventDetailMPO;
import com.njcn.harmonic.pojo.po.RStatOrgDPO;
import com.njcn.harmonic.pojo.po.RStatOrgMPO;
import com.njcn.prepare.harmonic.mapper.mysql.area.*;
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.line.RMpPartHarmonicDetailDMapper;
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpSurplusHarmonicDetailDMapper;
import com.njcn.prepare.harmonic.mapper.mysql.line.*;
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatEventDPOMapper;
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatEventMPOMapper;
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatSubstationDPOMapper;
import com.njcn.prepare.harmonic.pojo.po.*;
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.*;
import com.njcn.system.api.DicDataFeignClient;
@@ -29,6 +27,7 @@ import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
@@ -54,12 +53,20 @@ public class RStatSubstationServiceImpl implements RStatSubstationService {
private final RMpPartHarmonicDetailDMapper rMpPartHarmonicDetailDMapper;
private final RMpPartHarmonicDetailMMapper rMpPartHarmonicDetailMMapper;
private final RMpSurplusHarmonicDetailDMapper mpSurplusHarmonicDetailDMapper;
private final RMpSurplusHarmonicDetailMMapper mpSurplusHarmonicDetailMMapper;
private final RMpEventDetailDMapper rMpEventDetailDMapper;
private final RStatSubstationDPOService rStatSubstationDPOService;
private final RStatSubstationMPOService rStatSubstationMPOService;
private final RStatSubstationDPOMapper rStatSubstationDPOMapper;
@Override
public void handler(List<DeptGetSubStationDTO> data, String dataDate, Integer type) {
switch (type) {
@@ -68,10 +75,10 @@ public class RStatSubstationServiceImpl implements RStatSubstationService {
break;
case 2:
this.rStartEventQHandler(data, dataDate, type);
break;
case 3:
this.rStartEventMHandler(data, dataDate, type);
break;*/
case 3:
this.rStatSubstationMHandler(data, dataDate, type);
break;
case 5:
this.rStatSubstationDHandler(data, dataDate, type);
break;
@@ -323,4 +330,351 @@ public class RStatSubstationServiceImpl implements RStatSubstationService {
}
}
//月表
public void rStatSubstationMHandler(List<DeptGetSubStationDTO> data, String dataDate, Integer type) {
List<RStatSubstationMPO> rStatSubstationMPOS = new ArrayList<>();
Date date = DateUtil.parse(dataDate);
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
//传入字符串日期获取月的起始日期与结束日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH, 1); // 将日期设置为当月的第一天
String startTime = sdf.format(calendar.getTime()); // 获取当月的起始日期
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); // 将日期设置为当月的最后一天
String endTime = sdf.format(calendar.getTime());// 获取当月的结束日期
List<String> zwList = new ArrayList<>();
List<String> pwList = new ArrayList<>();
for (DeptGetSubStationDTO datum : data) {
if (!CollectionUtils.isEmpty(datum.getStationIds())) {
zwList.addAll(datum.getStationIds());
}
if (!CollectionUtils.isEmpty(datum.getPwStationIds())) {
pwList.addAll(datum.getPwStationIds());
}
}
List<String> zw = zwList.stream().distinct().collect(Collectors.toList());
List<String> pw = pwList.stream().distinct().collect(Collectors.toList());
//主网
if (!CollectionUtils.isEmpty(zw)) {
zw.forEach(z -> {
//获取监测点对象集合
LineDevGetBandDTO lineDevGetDTOs = commTerminalGeneralClient.substationGetLine(z).getData();
//获取监测点id集合
List<String> lineIds = lineDevGetDTOs.getZwList().stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
//判空
if (!CollectionUtils.isEmpty(lineIds)) {
//r_mp_target_warn_d 表中字段求和
Map<String, Object> warnSum = rMpTargetWarnDMapper.getSumDate(startTime, endTime, lineIds);
//r_mp_part_harmonic_detail_m 表中字段求和
Map<String, Object> partSum = rMpPartHarmonicDetailMMapper.getPartSum(startTime, endTime, lineIds);
//r_mp_surplus_harmonic_detail_m 表中字段求和
Map<String, Object> surplusSum = mpSurplusHarmonicDetailMMapper.getSurplusSum(dataDate, dataDate, lineIds);
//r_stat_substation_d 表中字段求和及计数
Map<String, Object> eventDetailSumAndCount = rStatSubstationDPOMapper.getSumAndCount(dataDate, dataDate, z);
RStatSubstationMPO rStatSubstationMPO = new RStatSubstationMPO();
rStatSubstationMPO.setDataDate(localDate);
rStatSubstationMPO.setSubstationId(z);
if (!CollectionUtils.isEmpty(warnSum)) {
rStatSubstationMPO.setEffectiveMeasurementAccrued(warnSum.containsKey("iECount") ?
Integer.parseInt(warnSum.get("iECount").toString()) : 0);
} else {
rStatSubstationMPO.setEffectiveMeasurementAccrued(0);
}
if (!CollectionUtils.isEmpty(partSum)) {
rStatSubstationMPO.setHarmonicCount(partSum.containsKey("measurementOverDayCount") ?
Integer.parseInt(partSum.get("measurementOverDayCount").toString()) : 0);
rStatSubstationMPO.setFreqCount(partSum.containsKey("freqOverDayCount") ?
Integer.parseInt(partSum.get("freqOverDayCount").toString()) : 0);
rStatSubstationMPO.setVDevCount(partSum.containsKey("vDevOverDayCount") ?
Integer.parseInt(partSum.get("vDevOverDayCount").toString()) : 0);
rStatSubstationMPO.setVCount(partSum.containsKey("vOverDayCount") ?
Integer.parseInt(partSum.get("vOverDayCount").toString()) : 0);
rStatSubstationMPO.setICount(partSum.containsKey("iOverDayCount") ?
Integer.parseInt(partSum.get("iOverDayCount").toString()) : 0);
rStatSubstationMPO.setUnbalanceCount(partSum.containsKey("unbalanceOverDayCount") ?
Integer.parseInt(partSum.get("unbalanceOverDayCount").toString()) : 0);
rStatSubstationMPO.setINegCount(partSum.containsKey("iNegOverDayCount") ?
Integer.parseInt(partSum.get("iNegOverDayCount").toString()) : 0);
} else {
rStatSubstationMPO.setHarmonicCount(0);
rStatSubstationMPO.setFreqCount(0);
rStatSubstationMPO.setVDevCount(0);
rStatSubstationMPO.setVCount(0);
rStatSubstationMPO.setICount(0);
rStatSubstationMPO.setUnbalanceCount(0);
rStatSubstationMPO.setINegCount(0);
}
if (!CollectionUtils.isEmpty(surplusSum)) {
rStatSubstationMPO.setFlickerCount(surplusSum.containsKey("flickerOverDayCount") ?
Integer.parseInt(surplusSum.get("flickerOverDayCount").toString()) : 0);
rStatSubstationMPO.setInuharmCount(surplusSum.containsKey("inuharmOverDayCount") ?
Integer.parseInt(surplusSum.get("inuharmOverDayCount").toString()) : 0);
} else {
rStatSubstationMPO.setFlickerCount(0);
rStatSubstationMPO.setInuharmCount(0);
}
if (!CollectionUtils.isEmpty(eventDetailSumAndCount)) {
rStatSubstationMPO.setEffectiveMeasurementAverage(eventDetailSumAndCount.containsKey("effectiveMeasurementCountAvg") ?
Float.parseFloat(eventDetailSumAndCount.get("effectiveMeasurementCountAvg").toString()) : 0.0f);
rStatSubstationMPO.setHarmonicOverDay(eventDetailSumAndCount.containsKey("harmonicCountCount") ?
Float.parseFloat(eventDetailSumAndCount.get("harmonicCountCount").toString()) : 0.0f);
rStatSubstationMPO.setFreqOverDay(eventDetailSumAndCount.containsKey("freqCountCount") ?
Float.parseFloat(eventDetailSumAndCount.get("freqCountCount").toString()) : 0.0f);
rStatSubstationMPO.setVDevOverDay(eventDetailSumAndCount.containsKey("vDevCountCount") ?
Float.parseFloat(eventDetailSumAndCount.get("vDevCountCount").toString()) : 0.0f);
rStatSubstationMPO.setVOverDay(eventDetailSumAndCount.containsKey("vCountCount") ?
Float.parseFloat(eventDetailSumAndCount.get("vCountCount").toString()) : 0.0f);
rStatSubstationMPO.setIOverDay(eventDetailSumAndCount.containsKey("iCountCount") ?
Float.parseFloat(eventDetailSumAndCount.get("iCountCount").toString()) : 0.0f);
rStatSubstationMPO.setUnbalanceOverDay(eventDetailSumAndCount.containsKey("unbalanceCountCount") ?
Float.parseFloat(eventDetailSumAndCount.get("unbalanceCountCount").toString()) : 0.0f);
rStatSubstationMPO.setINegOverDay(eventDetailSumAndCount.containsKey("iNegCountCount") ?
Float.parseFloat(eventDetailSumAndCount.get("iNegCountCount").toString()) : 0.0f);
rStatSubstationMPO.setFlickerOverDay(eventDetailSumAndCount.containsKey("flickerCountCount") ?
Float.parseFloat(eventDetailSumAndCount.get("flickerCountCount").toString()) : 0.0f);
rStatSubstationMPO.setInuharmOverDay(eventDetailSumAndCount.containsKey("inuharmCountCount") ?
Float.parseFloat(eventDetailSumAndCount.get("inuharmCountCount").toString()) : 0.0f);
rStatSubstationMPO.setEventCount(eventDetailSumAndCount.containsKey("eventCountSum") ?
Integer.parseInt(eventDetailSumAndCount.get("eventCountSum").toString()) : 0);
rStatSubstationMPO.setEventFreq(eventDetailSumAndCount.containsKey("eventCountFrequency") ?
Float.parseFloat(eventDetailSumAndCount.get("eventCountFrequency").toString()) : 0.0f);
rStatSubstationMPO.setSagCount(eventDetailSumAndCount.containsKey("sagCountSum") ?
Integer.parseInt(eventDetailSumAndCount.get("sagCountSum").toString()) : 0);
rStatSubstationMPO.setSagFreq(eventDetailSumAndCount.containsKey("sagCountFrequency") ?
Float.parseFloat(eventDetailSumAndCount.get("sagCountFrequency").toString()) : 0.0f);
rStatSubstationMPO.setSwellCount(eventDetailSumAndCount.containsKey("swellCountSum") ?
Integer.parseInt(eventDetailSumAndCount.get("swellCountSum").toString()) : 0);
rStatSubstationMPO.setSwellFreq(eventDetailSumAndCount.containsKey("swellCountFrequency") ?
Float.parseFloat(eventDetailSumAndCount.get("swellCountFrequency").toString()) : 0.0f);
rStatSubstationMPO.setInterruptCount(eventDetailSumAndCount.containsKey("interruptCountSum") ?
Integer.parseInt(eventDetailSumAndCount.get("interruptCountSum").toString()) : 0);
rStatSubstationMPO.setInterruptFreq(eventDetailSumAndCount.containsKey("interruptCountFrequency") ?
Float.parseFloat(eventDetailSumAndCount.get("interruptCountFrequency").toString()) : 0.0f);
} else {
rStatSubstationMPO.setEffectiveMeasurementAverage(0.0f);
rStatSubstationMPO.setHarmonicOverDay(0.0f);
rStatSubstationMPO.setFreqOverDay(0.0f);
rStatSubstationMPO.setVDevOverDay(0.0f);
rStatSubstationMPO.setVOverDay(0.0f);
rStatSubstationMPO.setIOverDay(0.0f);
rStatSubstationMPO.setUnbalanceOverDay(0.0f);
rStatSubstationMPO.setINegOverDay(0.0f);
rStatSubstationMPO.setFlickerOverDay(0.0f);
rStatSubstationMPO.setInuharmOverDay(0.0f);
rStatSubstationMPO.setEventCount(0);
rStatSubstationMPO.setEventFreq(0.0f);
rStatSubstationMPO.setSagCount(0);
rStatSubstationMPO.setSagFreq(0.0f);
rStatSubstationMPO.setSwellCount(0);
rStatSubstationMPO.setSwellFreq(0.0f);
rStatSubstationMPO.setInterruptCount(0);
rStatSubstationMPO.setInterruptFreq(0.0f);
}
rStatSubstationMPOS.add(rStatSubstationMPO);
}
});
}
//配网
if (!CollectionUtils.isEmpty(pw)) {
pw.forEach(p -> {
//获取监测点对象集合
LineDevGetBandDTO lineDevGetDTOs = commTerminalGeneralClient.substationGetLine(p).getData();
//获取监测点id集合
List<String> lineIds = lineDevGetDTOs.getZwList().stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
//判空
if (!CollectionUtils.isEmpty(lineIds)) {
//r_mp_target_warn_d 表中字段求和
Map<String, Object> warnSum = rMpTargetWarnDMapper.getSumDate(startTime, endTime, lineIds);
//r_mp_part_harmonic_detail_m 表中字段求和
Map<String, Object> partSum = rMpPartHarmonicDetailMMapper.getPartSum(startTime, endTime, lineIds);
//r_mp_surplus_harmonic_detail_m 表中字段求和
Map<String, Object> surplusSum = mpSurplusHarmonicDetailMMapper.getSurplusSum(dataDate, dataDate, lineIds);
//r_stat_substation_d 表中字段求和及计数
Map<String, Object> eventDetailSumAndCount = rStatSubstationDPOMapper.getSumAndCount(dataDate, dataDate, p);
RStatSubstationMPO rStatSubstationMPO = new RStatSubstationMPO();
rStatSubstationMPO.setDataDate(localDate);
rStatSubstationMPO.setSubstationId(p);
if (!CollectionUtils.isEmpty(warnSum)) {
rStatSubstationMPO.setEffectiveMeasurementAccrued(warnSum.containsKey("iECount") ?
Integer.parseInt(warnSum.get("iECount").toString()) : 0);
} else {
rStatSubstationMPO.setEffectiveMeasurementAccrued(0);
}
if (!CollectionUtils.isEmpty(partSum)) {
rStatSubstationMPO.setHarmonicCount(partSum.containsKey("measurementOverDayCount") ?
Integer.parseInt(partSum.get("measurementOverDayCount").toString()) : 0);
rStatSubstationMPO.setFreqCount(partSum.containsKey("freqOverDayCount") ?
Integer.parseInt(partSum.get("freqOverDayCount").toString()) : 0);
rStatSubstationMPO.setVDevCount(partSum.containsKey("vDevOverDayCount") ?
Integer.parseInt(partSum.get("vDevOverDayCount").toString()) : 0);
rStatSubstationMPO.setVCount(partSum.containsKey("vOverDayCount") ?
Integer.parseInt(partSum.get("vOverDayCount").toString()) : 0);
rStatSubstationMPO.setICount(partSum.containsKey("iOverDayCount") ?
Integer.parseInt(partSum.get("iOverDayCount").toString()) : 0);
rStatSubstationMPO.setUnbalanceCount(partSum.containsKey("unbalanceOverDayCount") ?
Integer.parseInt(partSum.get("unbalanceOverDayCount").toString()) : 0);
rStatSubstationMPO.setINegCount(partSum.containsKey("iNegOverDayCount") ?
Integer.parseInt(partSum.get("iNegOverDayCount").toString()) : 0);
} else {
rStatSubstationMPO.setHarmonicCount(0);
rStatSubstationMPO.setFreqCount(0);
rStatSubstationMPO.setVDevCount(0);
rStatSubstationMPO.setVCount(0);
rStatSubstationMPO.setICount(0);
rStatSubstationMPO.setUnbalanceCount(0);
rStatSubstationMPO.setINegCount(0);
}
if (!CollectionUtils.isEmpty(surplusSum)) {
rStatSubstationMPO.setFlickerCount(surplusSum.containsKey("flickerOverDayCount") ?
Integer.parseInt(surplusSum.get("flickerOverDayCount").toString()) : 0);
rStatSubstationMPO.setInuharmCount(surplusSum.containsKey("inuharmOverDayCount") ?
Integer.parseInt(surplusSum.get("inuharmOverDayCount").toString()) : 0);
} else {
rStatSubstationMPO.setFlickerCount(0);
rStatSubstationMPO.setInuharmCount(0);
}
if (!CollectionUtils.isEmpty(eventDetailSumAndCount)) {
rStatSubstationMPO.setEffectiveMeasurementAverage(eventDetailSumAndCount.containsKey("effectiveMeasurementCountAvg") ?
Float.parseFloat(eventDetailSumAndCount.get("effectiveMeasurementCountAvg").toString()) : 0.0f);
rStatSubstationMPO.setHarmonicOverDay(eventDetailSumAndCount.containsKey("harmonicCountCount") ?
Float.parseFloat(eventDetailSumAndCount.get("harmonicCountCount").toString()) : 0.0f);
rStatSubstationMPO.setFreqOverDay(eventDetailSumAndCount.containsKey("freqCountCount") ?
Float.parseFloat(eventDetailSumAndCount.get("freqCountCount").toString()) : 0.0f);
rStatSubstationMPO.setVDevOverDay(eventDetailSumAndCount.containsKey("vDevCountCount") ?
Float.parseFloat(eventDetailSumAndCount.get("vDevCountCount").toString()) : 0.0f);
rStatSubstationMPO.setVOverDay(eventDetailSumAndCount.containsKey("vCountCount") ?
Float.parseFloat(eventDetailSumAndCount.get("vCountCount").toString()) : 0.0f);
rStatSubstationMPO.setIOverDay(eventDetailSumAndCount.containsKey("iCountCount") ?
Float.parseFloat(eventDetailSumAndCount.get("iCountCount").toString()) : 0.0f);
rStatSubstationMPO.setUnbalanceOverDay(eventDetailSumAndCount.containsKey("unbalanceCountCount") ?
Float.parseFloat(eventDetailSumAndCount.get("unbalanceCountCount").toString()) : 0.0f);
rStatSubstationMPO.setINegOverDay(eventDetailSumAndCount.containsKey("iNegCountCount") ?
Float.parseFloat(eventDetailSumAndCount.get("iNegCountCount").toString()) : 0.0f);
rStatSubstationMPO.setFlickerOverDay(eventDetailSumAndCount.containsKey("flickerCountCount") ?
Float.parseFloat(eventDetailSumAndCount.get("flickerCountCount").toString()) : 0.0f);
rStatSubstationMPO.setInuharmOverDay(eventDetailSumAndCount.containsKey("inuharmCountCount") ?
Float.parseFloat(eventDetailSumAndCount.get("inuharmCountCount").toString()) : 0.0f);
rStatSubstationMPO.setEventCount(eventDetailSumAndCount.containsKey("eventCountSum") ?
Integer.parseInt(eventDetailSumAndCount.get("eventCountSum").toString()) : 0);
rStatSubstationMPO.setEventFreq(eventDetailSumAndCount.containsKey("eventCountFrequency") ?
Float.parseFloat(eventDetailSumAndCount.get("eventCountFrequency").toString()) : 0.0f);
rStatSubstationMPO.setSagCount(eventDetailSumAndCount.containsKey("sagCountSum") ?
Integer.parseInt(eventDetailSumAndCount.get("sagCountSum").toString()) : 0);
rStatSubstationMPO.setSagFreq(eventDetailSumAndCount.containsKey("sagCountFrequency") ?
Float.parseFloat(eventDetailSumAndCount.get("sagCountFrequency").toString()) : 0.0f);
rStatSubstationMPO.setSwellCount(eventDetailSumAndCount.containsKey("swellCountSum") ?
Integer.parseInt(eventDetailSumAndCount.get("swellCountSum").toString()) : 0);
rStatSubstationMPO.setSwellFreq(eventDetailSumAndCount.containsKey("swellCountFrequency") ?
Float.parseFloat(eventDetailSumAndCount.get("swellCountFrequency").toString()) : 0.0f);
rStatSubstationMPO.setInterruptCount(eventDetailSumAndCount.containsKey("interruptCountSum") ?
Integer.parseInt(eventDetailSumAndCount.get("interruptCountSum").toString()) : 0);
rStatSubstationMPO.setInterruptFreq(eventDetailSumAndCount.containsKey("interruptCountFrequency") ?
Float.parseFloat(eventDetailSumAndCount.get("interruptCountFrequency").toString()) : 0.0f);
} else {
rStatSubstationMPO.setEffectiveMeasurementAverage(0.0f);
rStatSubstationMPO.setHarmonicOverDay(0.0f);
rStatSubstationMPO.setFreqOverDay(0.0f);
rStatSubstationMPO.setVDevOverDay(0.0f);
rStatSubstationMPO.setVOverDay(0.0f);
rStatSubstationMPO.setIOverDay(0.0f);
rStatSubstationMPO.setUnbalanceOverDay(0.0f);
rStatSubstationMPO.setINegOverDay(0.0f);
rStatSubstationMPO.setFlickerOverDay(0.0f);
rStatSubstationMPO.setInuharmOverDay(0.0f);
rStatSubstationMPO.setEventCount(0);
rStatSubstationMPO.setEventFreq(0.0f);
rStatSubstationMPO.setSagCount(0);
rStatSubstationMPO.setSagFreq(0.0f);
rStatSubstationMPO.setSwellCount(0);
rStatSubstationMPO.setSwellFreq(0.0f);
rStatSubstationMPO.setInterruptCount(0);
rStatSubstationMPO.setInterruptFreq(0.0f);
}
rStatSubstationMPOS.add(rStatSubstationMPO);
}
});
}
if (!CollectionUtils.isEmpty(rStatSubstationMPOS)) {
rStatSubstationMPOService.saveOrUpdateBatchByMultiId(rStatSubstationMPOS, 500);
}
}
}