From a3241bba7aa5808fd5829ecd9809bf67eca01b2e Mon Sep 17 00:00:00 2001 From: zhangbaojian <1065122561@qq.com> Date: Fri, 30 Jun 2023 15:39:36 +0800 Subject: [PATCH] =?UTF-8?q?zbj//1.=E5=8F=98=E7=94=B5=E7=AB=99=E6=8C=87?= =?UTF-8?q?=E6=A0=87=E7=BB=9F=E8=AE=A1=5F=E5=AD=A3/=E5=B9=B4=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=20=E7=AE=97=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../harmonic/pojo/po/RStatSubstationMPO.java | 6 - .../harmonic/pojo/po/RStatSubstationQPO.java | 81 +++ .../harmonic/pojo/po/RStatSubstationYPO.java | 81 +++ .../RStatSubstationDPOMapper.java | 2 + .../RStatSubstationMPOMapper.java | 6 + .../RStatSubstationQPOMapper.java | 17 + .../RStatSubstationYPOMapper.java | 17 + .../mapping/RStatSubstationDPOMapper.xml | 9 + .../mapping/RStatSubstationMPOMapper.xml | 96 +++ .../RStatSubstationQPOService.java | 14 + .../RStatSubstationYPOService.java | 14 + .../impl/RStatSubstationQPOServiceImpl.java | 18 + .../impl/RStatSubstationServiceImpl.java | 608 +++++++++++++++++- .../impl/RStatSubstationYPOServiceImpl.java | 21 + 14 files changed, 976 insertions(+), 14 deletions(-) create mode 100644 pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatSubstationQPO.java create mode 100644 pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatSubstationYPO.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatSubstationQPOMapper.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatSubstationYPOMapper.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/mapping/RStatSubstationMPOMapper.xml create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatSubstationQPOService.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatSubstationYPOService.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatSubstationQPOServiceImpl.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatSubstationYPOServiceImpl.java diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatSubstationMPO.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatSubstationMPO.java index 45eb5cecf..b5bf3a2bc 100644 --- a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatSubstationMPO.java +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatSubstationMPO.java @@ -1,16 +1,10 @@ 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; /** diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatSubstationQPO.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatSubstationQPO.java new file mode 100644 index 000000000..45975eb94 --- /dev/null +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatSubstationQPO.java @@ -0,0 +1,81 @@ +package com.njcn.prepare.harmonic.pojo.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; +import lombok.Data; + +import java.time.LocalDate; + +/** + * @author zbj + * @since 2023-06-30 + */ +@Data +@TableName("r_stat_substation_q") +public class RStatSubstationQPO { + + @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_average_over_day") + private Float harmonicAverageOverDay; + + @TableField(value = "freq_average_over_day") + private Float freqAverageOverDay; + + @TableField(value = "v_dev_average_over_day") + private Float vDevAverageOverDay; + + @TableField(value = "v_average_over_day") + private Float vAverageOverDay; + + @TableField(value = "i_average_over_day") + private Float iAverageOverDay; + + @TableField(value = "unbalance_average_over_day") + private Float unbalanceAverageOverDay; + + @TableField(value = "i_neg_average_over_day") + private Float iNegAverageOverDay; + + @TableField(value = "flicker_average_over_day") + private Float flickerAverageOverDay; + + @TableField(value = "inuharm_average_over_day") + private Float inuharmAverageOverDay; + + @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; + +} diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatSubstationYPO.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatSubstationYPO.java new file mode 100644 index 000000000..f69a04df7 --- /dev/null +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatSubstationYPO.java @@ -0,0 +1,81 @@ +package com.njcn.prepare.harmonic.pojo.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; +import lombok.Data; + +import java.time.LocalDate; + +/** + * @author zbj + * @since 2023-06-30 + */ +@Data +@TableName("r_stat_substation_y") +public class RStatSubstationYPO { + + @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 harmonicAverageOverDay; + + @TableField(value = "freq_average_over_day") + private Float freqAverageOverDay; + + @TableField(value = "v_dev_average_over_day") + private Float vDevAverageOverDay; + + @TableField(value = "v_average_over_day") + private Float vAverageOverDay; + + @TableField(value = "i_average_over_day") + private Float iAverageOverDay; + + @TableField(value = "unbalance_average_over_day") + private Float unbalanceAverageOverDay; + + @TableField(value = "i_neg_average_over_day") + private Float iNegAverageOverDay; + + @TableField(value = "flicker_average_over_day") + private Float flickerAverageOverDay; + + @TableField(value = "inuharm_average_over_day") + private Float inuharmAverageOverDay; + + @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; + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatSubstationDPOMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatSubstationDPOMapper.java index 9de5bf0fc..521285f4e 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatSubstationDPOMapper.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatSubstationDPOMapper.java @@ -21,4 +21,6 @@ public interface RStatSubstationDPOMapper extends MppBaseMapper getSumAndCount(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("substationId") String substationId); + Map getSumAndCountQ(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("substationId") String substationId); + } \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatSubstationMPOMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatSubstationMPOMapper.java index 32c36b9a6..be0864931 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatSubstationMPOMapper.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatSubstationMPOMapper.java @@ -3,6 +3,9 @@ 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; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; /** * Description: @@ -14,4 +17,7 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface RStatSubstationMPOMapper extends MppBaseMapper { + + Map getSumAndCount(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("substationId") String substationId); + } \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatSubstationQPOMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatSubstationQPOMapper.java new file mode 100644 index 000000000..5735bd3b1 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatSubstationQPOMapper.java @@ -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.RStatSubstationQPO; +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 RStatSubstationQPOMapper extends MppBaseMapper { +} \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatSubstationYPOMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatSubstationYPOMapper.java new file mode 100644 index 000000000..2f961f1e3 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatSubstationYPOMapper.java @@ -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.RStatSubstationYPO; +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 RStatSubstationYPOMapper extends MppBaseMapper { +} \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/mapping/RStatSubstationDPOMapper.xml b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/mapping/RStatSubstationDPOMapper.xml index 5daf1fcd8..b49a743ec 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/mapping/RStatSubstationDPOMapper.xml +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/mapping/RStatSubstationDPOMapper.xml @@ -66,4 +66,13 @@ ) t + + \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/mapping/RStatSubstationMPOMapper.xml b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/mapping/RStatSubstationMPOMapper.xml new file mode 100644 index 000000000..0b8cd6e30 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/mapping/RStatSubstationMPOMapper.xml @@ -0,0 +1,96 @@ + + + + + + + \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatSubstationQPOService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatSubstationQPOService.java new file mode 100644 index 000000000..29c01620c --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatSubstationQPOService.java @@ -0,0 +1,14 @@ +package com.njcn.prepare.harmonic.service.mysql.newalgorithm; + + +import com.github.jeffreyning.mybatisplus.service.IMppService; +import com.njcn.prepare.harmonic.pojo.po.RStatSubstationQPO; + + +/** + * @author zbj + * @since 2023-06-30 + */ + +public interface RStatSubstationQPOService extends IMppService { +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatSubstationYPOService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatSubstationYPOService.java new file mode 100644 index 000000000..68e04bdef --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatSubstationYPOService.java @@ -0,0 +1,14 @@ +package com.njcn.prepare.harmonic.service.mysql.newalgorithm; + + +import com.github.jeffreyning.mybatisplus.service.IMppService; +import com.njcn.prepare.harmonic.pojo.po.RStatSubstationYPO; + + +/** + * @author zbj + * @since 2023-06-30 + */ + +public interface RStatSubstationYPOService extends IMppService { +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatSubstationQPOServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatSubstationQPOServiceImpl.java new file mode 100644 index 000000000..03f452d6d --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatSubstationQPOServiceImpl.java @@ -0,0 +1,18 @@ +package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl; + +import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatSubstationQPOMapper; +import com.njcn.prepare.harmonic.pojo.po.RStatSubstationQPO; +import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatSubstationQPOService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +/** + * + * @author zbj + * @since 2023-06-19 + */ +@Service +@RequiredArgsConstructor +public class RStatSubstationQPOServiceImpl extends MppServiceImpl implements RStatSubstationQPOService { +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatSubstationServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatSubstationServiceImpl.java index 9f217cd6a..4982565f9 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatSubstationServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatSubstationServiceImpl.java @@ -16,6 +16,7 @@ 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.mapper.mysql.newalgorithm.RStatSubstationMPOMapper; import com.njcn.prepare.harmonic.pojo.po.*; import com.njcn.prepare.harmonic.service.mysql.newalgorithm.*; import com.njcn.system.api.DicDataFeignClient; @@ -65,17 +66,23 @@ public class RStatSubstationServiceImpl implements RStatSubstationService { private final RStatSubstationMPOService rStatSubstationMPOService; + private final RStatSubstationQPOService rStatSubstationQPOService; + + private final RStatSubstationYPOService rStatSubstationYPOService; + private final RStatSubstationDPOMapper rStatSubstationDPOMapper; + private final RStatSubstationMPOMapper rStatSubstationMPOMapper; + @Override public void handler(List data, String dataDate, Integer type) { switch (type) { - /* case 1: - this.rStartEventYHandler (data, dataDate, type); + case 1: + this.rStatSubstationYHandler(data, dataDate, type); break; case 2: - this.rStartEventQHandler(data, dataDate, type); - break;*/ + this.rStatSubstationQHandler(data, dataDate, type); + break; case 3: this.rStatSubstationMHandler(data, dataDate, type); break; @@ -377,9 +384,9 @@ public class RStatSubstationServiceImpl implements RStatSubstationService { //r_mp_part_harmonic_detail_m 表中字段求和 Map partSum = rMpPartHarmonicDetailMMapper.getPartSum(startTime, endTime, lineIds); //r_mp_surplus_harmonic_detail_m 表中字段求和 - Map surplusSum = mpSurplusHarmonicDetailMMapper.getSurplusSum(dataDate, dataDate, lineIds); + Map surplusSum = mpSurplusHarmonicDetailMMapper.getSurplusSum(startTime, endTime, lineIds); //r_stat_substation_d 表中字段求和及计数 - Map eventDetailSumAndCount = rStatSubstationDPOMapper.getSumAndCount(dataDate, dataDate, z); + Map eventDetailSumAndCount = rStatSubstationDPOMapper.getSumAndCount(startTime, endTime, z); RStatSubstationMPO rStatSubstationMPO = new RStatSubstationMPO(); rStatSubstationMPO.setDataDate(localDate); @@ -532,9 +539,9 @@ public class RStatSubstationServiceImpl implements RStatSubstationService { //r_mp_part_harmonic_detail_m 表中字段求和 Map partSum = rMpPartHarmonicDetailMMapper.getPartSum(startTime, endTime, lineIds); //r_mp_surplus_harmonic_detail_m 表中字段求和 - Map surplusSum = mpSurplusHarmonicDetailMMapper.getSurplusSum(dataDate, dataDate, lineIds); + Map surplusSum = mpSurplusHarmonicDetailMMapper.getSurplusSum(startTime, endTime, lineIds); //r_stat_substation_d 表中字段求和及计数 - Map eventDetailSumAndCount = rStatSubstationDPOMapper.getSumAndCount(dataDate, dataDate, p); + Map eventDetailSumAndCount = rStatSubstationDPOMapper.getSumAndCount(startTime, endTime, p); RStatSubstationMPO rStatSubstationMPO = new RStatSubstationMPO(); rStatSubstationMPO.setDataDate(localDate); @@ -677,4 +684,589 @@ public class RStatSubstationServiceImpl implements RStatSubstationService { } } + //季表 + public void rStatSubstationQHandler(List data, String dataDate, Integer type) { + List rStatSubstationQPOS = new ArrayList<>(); + Date date = DateUtil.parse(dataDate); + LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + DecimalFormat df = new DecimalFormat("0.00"); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + // 计算季度的开始日期和结束日期 + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + int quarter = (calendar.get(Calendar.MONTH) / 3) + 1; // 计算日期所在的季度 + calendar.set(Calendar.MONTH, (quarter - 1) * 3); // 设置季度开始的月份 + calendar.set(Calendar.DAY_OF_MONTH, 1); // 设置季度开始的日期 + String startTime = sdf.format(calendar.getTime());// 季度开始日期 + calendar.add(Calendar.MONTH, 2); // 添加两个月,使其到季度结束的月份 + calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); // 设置季度结束的日期 - 月份最后一天 + String endTime = sdf.format(calendar.getTime()); // 季度结束日期 + + List zwList = new ArrayList<>(); + List 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 zw = zwList.stream().distinct().collect(Collectors.toList()); + List pw = pwList.stream().distinct().collect(Collectors.toList()); + + //主网 + if (!CollectionUtils.isEmpty(zw)) { + + zw.forEach(z -> { + //获取监测点对象集合 + LineDevGetBandDTO lineDevGetDTOs = commTerminalGeneralClient.substationGetLine(z).getData(); + //获取监测点id集合 + List lineIds = lineDevGetDTOs.getZwList().stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); + //判空 + if (!CollectionUtils.isEmpty(lineIds)) { + //r_mp_target_warn_d 表中字段求和 + Map warnSum = rMpTargetWarnDMapper.getSumDate(startTime, endTime, lineIds); + //r_stat_substation_d 表中字段求和及计数 + Map eventDetailSumAndCountD = rStatSubstationDPOMapper.getSumAndCountQ(startTime, endTime, z); + //r_stat_substation_m 表中字段求和及计数 + Map eventDetailSumAndCountM = rStatSubstationMPOMapper.getSumAndCount(startTime, endTime, z); + + RStatSubstationQPO rStatSubstationQPO = new RStatSubstationQPO(); + rStatSubstationQPO.setDataDate(localDate); + rStatSubstationQPO.setSubstationId(z); + if (!CollectionUtils.isEmpty(warnSum)) { + rStatSubstationQPO.setEffectiveMeasurementAccrued(warnSum.containsKey("iECount") ? + Integer.parseInt(warnSum.get("iECount").toString()) : 0); + } else { + rStatSubstationQPO.setEffectiveMeasurementAccrued(0); + } + if (!CollectionUtils.isEmpty(eventDetailSumAndCountM)) { + + rStatSubstationQPO.setEffectiveMeasurementAverage(eventDetailSumAndCountM.containsKey("effectiveMeasurementCountAvg") ? + Float.parseFloat(eventDetailSumAndCountM.get("effectiveMeasurementCountAvg").toString()) : 0.0f); + + rStatSubstationQPO.setHarmonicAverageOverDay(eventDetailSumAndCountM.containsKey("harmonicAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("harmonicAverageOverDay").toString()) : 0.0f); + + rStatSubstationQPO.setFreqAverageOverDay(eventDetailSumAndCountM.containsKey("freqAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("freqAverageOverDay").toString()) : 0.0f); + + rStatSubstationQPO.setVDevAverageOverDay(eventDetailSumAndCountM.containsKey("vDevAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("vDevAverageOverDay").toString()) : 0.0f); + + rStatSubstationQPO.setVAverageOverDay(eventDetailSumAndCountM.containsKey("vAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("vAverageOverDay").toString()) : 0.0f); + + rStatSubstationQPO.setIAverageOverDay(eventDetailSumAndCountM.containsKey("iAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("iAverageOverDay").toString()) : 0.0f); + + rStatSubstationQPO.setUnbalanceAverageOverDay(eventDetailSumAndCountM.containsKey("unbalanceAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("unbalanceAverageOverDay").toString()) : 0.0f); + + rStatSubstationQPO.setINegAverageOverDay(eventDetailSumAndCountM.containsKey("iNegAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("iNegAverageOverDay").toString()) : 0.0f); + + rStatSubstationQPO.setFlickerAverageOverDay(eventDetailSumAndCountM.containsKey("flickerAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("flickerAverageOverDay").toString()) : 0.0f); + + rStatSubstationQPO.setInuharmAverageOverDay(eventDetailSumAndCountM.containsKey("inuharmAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("inuharmAverageOverDay").toString()) : 0.0f); + + rStatSubstationQPO.setEventCount(eventDetailSumAndCountM.containsKey("eventCountSum") ? + Integer.parseInt(eventDetailSumAndCountM.get("eventCountSum").toString()) : 0); + + if (!Objects.equals(0, eventDetailSumAndCountD.get("eventMeasurementCountSum"))) { + String value = df.format(Float.parseFloat(eventDetailSumAndCountM.get("eventCountSum").toString()) + / Float.parseFloat(eventDetailSumAndCountD.get("eventMeasurementCountSum").toString())); + rStatSubstationQPO.setEventFreq(Float.parseFloat(value)); + } else { + rStatSubstationQPO.setEventFreq(0.0f); + } + + rStatSubstationQPO.setSagCount(eventDetailSumAndCountM.containsKey("sagCountSum") ? + Integer.parseInt(eventDetailSumAndCountM.get("sagCountSum").toString()) : 0); + + if (!Objects.equals(0, eventDetailSumAndCountD.get("sagMeasurementCountSum"))) { + String value = df.format(Float.parseFloat(eventDetailSumAndCountM.get("sagCountSum").toString()) + / Float.parseFloat(eventDetailSumAndCountD.get("sagMeasurementCountSum").toString())); + rStatSubstationQPO.setSagFreq(Float.parseFloat(value)); + } else { + rStatSubstationQPO.setSagFreq(0.0f); + } + + rStatSubstationQPO.setSwellCount(eventDetailSumAndCountM.containsKey("swellCountSum") ? + Integer.parseInt(eventDetailSumAndCountM.get("swellCountSum").toString()) : 0); + + if (!Objects.equals(0, eventDetailSumAndCountD.get("swellMeasurementCountSum"))) { + String value = df.format(Float.parseFloat(eventDetailSumAndCountM.get("swellCountSum").toString()) + / Float.parseFloat(eventDetailSumAndCountD.get("swellMeasurementCountSum").toString())); + rStatSubstationQPO.setSwellFreq(Float.parseFloat(value)); + } else { + rStatSubstationQPO.setSwellFreq(0.0f); + } + + rStatSubstationQPO.setInterruptCount(eventDetailSumAndCountM.containsKey("interruptCountSum") ? + Integer.parseInt(eventDetailSumAndCountM.get("interruptCountSum").toString()) : 0); + + if (!Objects.equals(0, eventDetailSumAndCountD.get("interruptMeasurementCountSum"))) { + String value = df.format(Float.parseFloat(eventDetailSumAndCountM.get("interruptCountSum").toString()) + / Float.parseFloat(eventDetailSumAndCountD.get("interruptMeasurementCountSum").toString())); + rStatSubstationQPO.setInterruptFreq(Float.parseFloat(value)); + } else { + rStatSubstationQPO.setInterruptFreq(0.0f); + } + } else { + rStatSubstationQPO.setEffectiveMeasurementAverage(0.0f); + rStatSubstationQPO.setHarmonicAverageOverDay(0.0f); + rStatSubstationQPO.setFreqAverageOverDay(0.0f); + rStatSubstationQPO.setVDevAverageOverDay(0.0f); + rStatSubstationQPO.setVAverageOverDay(0.0f); + rStatSubstationQPO.setIAverageOverDay(0.0f); + rStatSubstationQPO.setUnbalanceAverageOverDay(0.0f); + rStatSubstationQPO.setINegAverageOverDay(0.0f); + rStatSubstationQPO.setFlickerAverageOverDay(0.0f); + rStatSubstationQPO.setInuharmAverageOverDay(0.0f); + rStatSubstationQPO.setEventCount(0); + rStatSubstationQPO.setEventFreq(0.0f); + rStatSubstationQPO.setSagCount(0); + rStatSubstationQPO.setSagFreq(0.0f); + rStatSubstationQPO.setSwellCount(0); + rStatSubstationQPO.setSwellFreq(0.0f); + rStatSubstationQPO.setInterruptCount(0); + rStatSubstationQPO.setInterruptFreq(0.0f); + } + rStatSubstationQPOS.add(rStatSubstationQPO); + } + }); + + } + + //配网 + if (!CollectionUtils.isEmpty(pw)) { + + pw.forEach(p -> { + //获取监测点对象集合 + LineDevGetBandDTO lineDevGetDTOs = commTerminalGeneralClient.substationGetLine(p).getData(); + //获取监测点id集合 + List lineIds = lineDevGetDTOs.getZwList().stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); + //判空 + if (!CollectionUtils.isEmpty(lineIds)) { + //r_mp_target_warn_d 表中字段求和 + Map warnSum = rMpTargetWarnDMapper.getSumDate(startTime, endTime, lineIds); + //r_stat_substation_d 表中字段求和及计数 + Map eventDetailSumAndCountD = rStatSubstationDPOMapper.getSumAndCountQ(startTime, endTime, p); + //r_stat_substation_m 表中字段求和及计数 + Map eventDetailSumAndCountM = rStatSubstationMPOMapper.getSumAndCount(startTime, endTime, p); + + RStatSubstationQPO rStatSubstationQPO = new RStatSubstationQPO(); + rStatSubstationQPO.setDataDate(localDate); + rStatSubstationQPO.setSubstationId(p); + if (!CollectionUtils.isEmpty(warnSum)) { + rStatSubstationQPO.setEffectiveMeasurementAccrued(warnSum.containsKey("iECount") ? + Integer.parseInt(warnSum.get("iECount").toString()) : 0); + } else { + rStatSubstationQPO.setEffectiveMeasurementAccrued(0); + } + if (!CollectionUtils.isEmpty(eventDetailSumAndCountM)) { + + rStatSubstationQPO.setEffectiveMeasurementAverage(eventDetailSumAndCountM.containsKey("effectiveMeasurementCountAvg") ? + Float.parseFloat(eventDetailSumAndCountM.get("effectiveMeasurementCountAvg").toString()) : 0.0f); + + rStatSubstationQPO.setHarmonicAverageOverDay(eventDetailSumAndCountM.containsKey("harmonicAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("harmonicAverageOverDay").toString()) : 0.0f); + + rStatSubstationQPO.setFreqAverageOverDay(eventDetailSumAndCountM.containsKey("freqAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("freqAverageOverDay").toString()) : 0.0f); + + rStatSubstationQPO.setVDevAverageOverDay(eventDetailSumAndCountM.containsKey("vDevAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("vDevAverageOverDay").toString()) : 0.0f); + + rStatSubstationQPO.setVAverageOverDay(eventDetailSumAndCountM.containsKey("vAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("vAverageOverDay").toString()) : 0.0f); + + rStatSubstationQPO.setIAverageOverDay(eventDetailSumAndCountM.containsKey("iAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("iAverageOverDay").toString()) : 0.0f); + + rStatSubstationQPO.setUnbalanceAverageOverDay(eventDetailSumAndCountM.containsKey("unbalanceAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("unbalanceAverageOverDay").toString()) : 0.0f); + + rStatSubstationQPO.setINegAverageOverDay(eventDetailSumAndCountM.containsKey("iNegAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("iNegAverageOverDay").toString()) : 0.0f); + + rStatSubstationQPO.setFlickerAverageOverDay(eventDetailSumAndCountM.containsKey("flickerAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("flickerAverageOverDay").toString()) : 0.0f); + + rStatSubstationQPO.setInuharmAverageOverDay(eventDetailSumAndCountM.containsKey("inuharmAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("inuharmAverageOverDay").toString()) : 0.0f); + + rStatSubstationQPO.setEventCount(eventDetailSumAndCountM.containsKey("eventCountSum") ? + Integer.parseInt(eventDetailSumAndCountM.get("eventCountSum").toString()) : 0); + + if (!Objects.equals(0, eventDetailSumAndCountD.get("eventMeasurementCountSum"))) { + String value = df.format(Float.parseFloat(eventDetailSumAndCountM.get("eventCountSum").toString()) + / Float.parseFloat(eventDetailSumAndCountD.get("eventMeasurementCountSum").toString())); + rStatSubstationQPO.setEventFreq(Float.parseFloat(value)); + } else { + rStatSubstationQPO.setEventFreq(0.0f); + } + + rStatSubstationQPO.setSagCount(eventDetailSumAndCountM.containsKey("sagCountSum") ? + Integer.parseInt(eventDetailSumAndCountM.get("sagCountSum").toString()) : 0); + + if (!Objects.equals(0, eventDetailSumAndCountD.get("sagMeasurementCountSum"))) { + String value = df.format(Float.parseFloat(eventDetailSumAndCountM.get("sagCountSum").toString()) + / Float.parseFloat(eventDetailSumAndCountD.get("sagMeasurementCountSum").toString())); + rStatSubstationQPO.setSagFreq(Float.parseFloat(value)); + } else { + rStatSubstationQPO.setSagFreq(0.0f); + } + + rStatSubstationQPO.setSwellCount(eventDetailSumAndCountM.containsKey("swellCountSum") ? + Integer.parseInt(eventDetailSumAndCountM.get("swellCountSum").toString()) : 0); + + if (!Objects.equals(0, eventDetailSumAndCountD.get("swellMeasurementCountSum"))) { + String value = df.format(Float.parseFloat(eventDetailSumAndCountM.get("swellCountSum").toString()) + / Float.parseFloat(eventDetailSumAndCountD.get("swellMeasurementCountSum").toString())); + rStatSubstationQPO.setSwellFreq(Float.parseFloat(value)); + } else { + rStatSubstationQPO.setSwellFreq(0.0f); + } + + rStatSubstationQPO.setInterruptCount(eventDetailSumAndCountM.containsKey("interruptCountSum") ? + Integer.parseInt(eventDetailSumAndCountM.get("interruptCountSum").toString()) : 0); + + if (!Objects.equals(0, eventDetailSumAndCountD.get("interruptMeasurementCountSum"))) { + String value = df.format(Float.parseFloat(eventDetailSumAndCountM.get("interruptCountSum").toString()) + / Float.parseFloat(eventDetailSumAndCountD.get("interruptMeasurementCountSum").toString())); + rStatSubstationQPO.setInterruptFreq(Float.parseFloat(value)); + } else { + rStatSubstationQPO.setInterruptFreq(0.0f); + } + } else { + rStatSubstationQPO.setEffectiveMeasurementAverage(0.0f); + rStatSubstationQPO.setHarmonicAverageOverDay(0.0f); + rStatSubstationQPO.setFreqAverageOverDay(0.0f); + rStatSubstationQPO.setVDevAverageOverDay(0.0f); + rStatSubstationQPO.setVAverageOverDay(0.0f); + rStatSubstationQPO.setIAverageOverDay(0.0f); + rStatSubstationQPO.setUnbalanceAverageOverDay(0.0f); + rStatSubstationQPO.setINegAverageOverDay(0.0f); + rStatSubstationQPO.setFlickerAverageOverDay(0.0f); + rStatSubstationQPO.setInuharmAverageOverDay(0.0f); + rStatSubstationQPO.setEventCount(0); + rStatSubstationQPO.setEventFreq(0.0f); + rStatSubstationQPO.setSagCount(0); + rStatSubstationQPO.setSagFreq(0.0f); + rStatSubstationQPO.setSwellCount(0); + rStatSubstationQPO.setSwellFreq(0.0f); + rStatSubstationQPO.setInterruptCount(0); + rStatSubstationQPO.setInterruptFreq(0.0f); + } + rStatSubstationQPOS.add(rStatSubstationQPO); + } + }); + + } + + if (!CollectionUtils.isEmpty(rStatSubstationQPOS)) { + rStatSubstationQPOService.saveOrUpdateBatchByMultiId(rStatSubstationQPOS, 500); + } + } + + //年表 + public void rStatSubstationYHandler(List data, String dataDate, Integer type) { + List rStatSubstationYPOS = new ArrayList<>(); + Date date = DateUtil.parse(dataDate); + LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + DecimalFormat df = new DecimalFormat("0.00"); + + // 获取当前年的起始日期和结束日期 + LocalDate date1 = LocalDate.parse(dataDate, DateTimeFormatter.ISO_DATE); // 将字符串解析为LocalDate对象 + + // 获取当年的开始天 + LocalDate yearStartDate = date1.withDayOfYear(1); + String startTime = yearStartDate.format(DateTimeFormatter.ISO_DATE); // 将LocalDate对象转换为字符串日期 + + // 获取当年的结束天 + LocalDate yearEndDate = date1.withDayOfYear(date1.lengthOfYear()); + String endTime = yearEndDate.format(DateTimeFormatter.ISO_DATE); // 将LocalDate对象转换为字符串日期 + + List zwList = new ArrayList<>(); + List 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 zw = zwList.stream().distinct().collect(Collectors.toList()); + List pw = pwList.stream().distinct().collect(Collectors.toList()); + + //主网 + if (!CollectionUtils.isEmpty(zw)) { + + zw.forEach(z -> { + //获取监测点对象集合 + LineDevGetBandDTO lineDevGetDTOs = commTerminalGeneralClient.substationGetLine(z).getData(); + //获取监测点id集合 + List lineIds = lineDevGetDTOs.getZwList().stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); + //判空 + if (!CollectionUtils.isEmpty(lineIds)) { + //r_mp_target_warn_d 表中字段求和 + Map warnSum = rMpTargetWarnDMapper.getSumDate(startTime, endTime, lineIds); + //r_stat_substation_d 表中字段求和及计数 + Map eventDetailSumAndCountD = rStatSubstationDPOMapper.getSumAndCountQ(startTime, endTime, z); + //r_stat_substation_m 表中字段求和及计数 + Map eventDetailSumAndCountM = rStatSubstationMPOMapper.getSumAndCount(startTime, endTime, z); + + RStatSubstationYPO rStatSubstationYPO = new RStatSubstationYPO(); + rStatSubstationYPO.setDataDate(localDate); + rStatSubstationYPO.setSubstationId(z); + if (!CollectionUtils.isEmpty(warnSum)) { + rStatSubstationYPO.setEffectiveMeasurementAccrued(warnSum.containsKey("iECount") ? + Integer.parseInt(warnSum.get("iECount").toString()) : 0); + } else { + rStatSubstationYPO.setEffectiveMeasurementAccrued(0); + } + if (!CollectionUtils.isEmpty(eventDetailSumAndCountM)) { + + rStatSubstationYPO.setEffectiveMeasurementAverage(eventDetailSumAndCountM.containsKey("effectiveMeasurementCountAvg") ? + Float.parseFloat(eventDetailSumAndCountM.get("effectiveMeasurementCountAvg").toString()) : 0.0f); + + rStatSubstationYPO.setHarmonicAverageOverDay(eventDetailSumAndCountM.containsKey("harmonicAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("harmonicAverageOverDay").toString()) : 0.0f); + + rStatSubstationYPO.setFreqAverageOverDay(eventDetailSumAndCountM.containsKey("freqAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("freqAverageOverDay").toString()) : 0.0f); + + rStatSubstationYPO.setVDevAverageOverDay(eventDetailSumAndCountM.containsKey("vDevAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("vDevAverageOverDay").toString()) : 0.0f); + + rStatSubstationYPO.setVAverageOverDay(eventDetailSumAndCountM.containsKey("vAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("vAverageOverDay").toString()) : 0.0f); + + rStatSubstationYPO.setIAverageOverDay(eventDetailSumAndCountM.containsKey("iAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("iAverageOverDay").toString()) : 0.0f); + + rStatSubstationYPO.setUnbalanceAverageOverDay(eventDetailSumAndCountM.containsKey("unbalanceAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("unbalanceAverageOverDay").toString()) : 0.0f); + + rStatSubstationYPO.setINegAverageOverDay(eventDetailSumAndCountM.containsKey("iNegAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("iNegAverageOverDay").toString()) : 0.0f); + + rStatSubstationYPO.setFlickerAverageOverDay(eventDetailSumAndCountM.containsKey("flickerAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("flickerAverageOverDay").toString()) : 0.0f); + + rStatSubstationYPO.setInuharmAverageOverDay(eventDetailSumAndCountM.containsKey("inuharmAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("inuharmAverageOverDay").toString()) : 0.0f); + + rStatSubstationYPO.setEventCount(eventDetailSumAndCountM.containsKey("eventCountSum") ? + Integer.parseInt(eventDetailSumAndCountM.get("eventCountSum").toString()) : 0); + + if (!Objects.equals(0, eventDetailSumAndCountD.get("eventMeasurementCountSum"))) { + String value = df.format(Float.parseFloat(eventDetailSumAndCountM.get("eventCountSum").toString()) + / Float.parseFloat(eventDetailSumAndCountD.get("eventMeasurementCountSum").toString())); + rStatSubstationYPO.setEventFreq(Float.parseFloat(value)); + } else { + rStatSubstationYPO.setEventFreq(0.0f); + } + + rStatSubstationYPO.setSagCount(eventDetailSumAndCountM.containsKey("sagCountSum") ? + Integer.parseInt(eventDetailSumAndCountM.get("sagCountSum").toString()) : 0); + + if (!Objects.equals(0, eventDetailSumAndCountD.get("sagMeasurementCountSum"))) { + String value = df.format(Float.parseFloat(eventDetailSumAndCountM.get("sagCountSum").toString()) + / Float.parseFloat(eventDetailSumAndCountD.get("sagMeasurementCountSum").toString())); + rStatSubstationYPO.setSagFreq(Float.parseFloat(value)); + } else { + rStatSubstationYPO.setSagFreq(0.0f); + } + + rStatSubstationYPO.setSwellCount(eventDetailSumAndCountM.containsKey("swellCountSum") ? + Integer.parseInt(eventDetailSumAndCountM.get("swellCountSum").toString()) : 0); + + if (!Objects.equals(0, eventDetailSumAndCountD.get("swellMeasurementCountSum"))) { + String value = df.format(Float.parseFloat(eventDetailSumAndCountM.get("swellCountSum").toString()) + / Float.parseFloat(eventDetailSumAndCountD.get("swellMeasurementCountSum").toString())); + rStatSubstationYPO.setSwellFreq(Float.parseFloat(value)); + } else { + rStatSubstationYPO.setSwellFreq(0.0f); + } + + rStatSubstationYPO.setInterruptCount(eventDetailSumAndCountM.containsKey("interruptCountSum") ? + Integer.parseInt(eventDetailSumAndCountM.get("interruptCountSum").toString()) : 0); + + if (!Objects.equals(0, eventDetailSumAndCountD.get("interruptMeasurementCountSum"))) { + String value = df.format(Float.parseFloat(eventDetailSumAndCountM.get("interruptCountSum").toString()) + / Float.parseFloat(eventDetailSumAndCountD.get("interruptMeasurementCountSum").toString())); + rStatSubstationYPO.setInterruptFreq(Float.parseFloat(value)); + } else { + rStatSubstationYPO.setInterruptFreq(0.0f); + } + } else { + rStatSubstationYPO.setEffectiveMeasurementAverage(0.0f); + rStatSubstationYPO.setHarmonicAverageOverDay(0.0f); + rStatSubstationYPO.setFreqAverageOverDay(0.0f); + rStatSubstationYPO.setVDevAverageOverDay(0.0f); + rStatSubstationYPO.setVAverageOverDay(0.0f); + rStatSubstationYPO.setIAverageOverDay(0.0f); + rStatSubstationYPO.setUnbalanceAverageOverDay(0.0f); + rStatSubstationYPO.setINegAverageOverDay(0.0f); + rStatSubstationYPO.setFlickerAverageOverDay(0.0f); + rStatSubstationYPO.setInuharmAverageOverDay(0.0f); + rStatSubstationYPO.setEventCount(0); + rStatSubstationYPO.setEventFreq(0.0f); + rStatSubstationYPO.setSagCount(0); + rStatSubstationYPO.setSagFreq(0.0f); + rStatSubstationYPO.setSwellCount(0); + rStatSubstationYPO.setSwellFreq(0.0f); + rStatSubstationYPO.setInterruptCount(0); + rStatSubstationYPO.setInterruptFreq(0.0f); + } + rStatSubstationYPOS.add(rStatSubstationYPO); + } + }); + + } + + //配网 + if (!CollectionUtils.isEmpty(pw)) { + + pw.forEach(p -> { + //获取监测点对象集合 + LineDevGetBandDTO lineDevGetDTOs = commTerminalGeneralClient.substationGetLine(p).getData(); + //获取监测点id集合 + List lineIds = lineDevGetDTOs.getZwList().stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); + //判空 + if (!CollectionUtils.isEmpty(lineIds)) { + //r_mp_target_warn_d 表中字段求和 + Map warnSum = rMpTargetWarnDMapper.getSumDate(startTime, endTime, lineIds); + //r_stat_substation_d 表中字段求和及计数 + Map eventDetailSumAndCountD = rStatSubstationDPOMapper.getSumAndCountQ(startTime, endTime, p); + //r_stat_substation_m 表中字段求和及计数 + Map eventDetailSumAndCountM = rStatSubstationMPOMapper.getSumAndCount(startTime, endTime, p); + + RStatSubstationYPO rStatSubstationYPO = new RStatSubstationYPO(); + rStatSubstationYPO.setDataDate(localDate); + rStatSubstationYPO.setSubstationId(p); + if (!CollectionUtils.isEmpty(warnSum)) { + rStatSubstationYPO.setEffectiveMeasurementAccrued(warnSum.containsKey("iECount") ? + Integer.parseInt(warnSum.get("iECount").toString()) : 0); + } else { + rStatSubstationYPO.setEffectiveMeasurementAccrued(0); + } + if (!CollectionUtils.isEmpty(eventDetailSumAndCountM)) { + + rStatSubstationYPO.setEffectiveMeasurementAverage(eventDetailSumAndCountM.containsKey("effectiveMeasurementCountAvg") ? + Float.parseFloat(eventDetailSumAndCountM.get("effectiveMeasurementCountAvg").toString()) : 0.0f); + + rStatSubstationYPO.setHarmonicAverageOverDay(eventDetailSumAndCountM.containsKey("harmonicAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("harmonicAverageOverDay").toString()) : 0.0f); + + rStatSubstationYPO.setFreqAverageOverDay(eventDetailSumAndCountM.containsKey("freqAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("freqAverageOverDay").toString()) : 0.0f); + + rStatSubstationYPO.setVDevAverageOverDay(eventDetailSumAndCountM.containsKey("vDevAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("vDevAverageOverDay").toString()) : 0.0f); + + rStatSubstationYPO.setVAverageOverDay(eventDetailSumAndCountM.containsKey("vAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("vAverageOverDay").toString()) : 0.0f); + + rStatSubstationYPO.setIAverageOverDay(eventDetailSumAndCountM.containsKey("iAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("iAverageOverDay").toString()) : 0.0f); + + rStatSubstationYPO.setUnbalanceAverageOverDay(eventDetailSumAndCountM.containsKey("unbalanceAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("unbalanceAverageOverDay").toString()) : 0.0f); + + rStatSubstationYPO.setINegAverageOverDay(eventDetailSumAndCountM.containsKey("iNegAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("iNegAverageOverDay").toString()) : 0.0f); + + rStatSubstationYPO.setFlickerAverageOverDay(eventDetailSumAndCountM.containsKey("flickerAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("flickerAverageOverDay").toString()) : 0.0f); + + rStatSubstationYPO.setInuharmAverageOverDay(eventDetailSumAndCountM.containsKey("inuharmAverageOverDay") ? + Float.parseFloat(eventDetailSumAndCountM.get("inuharmAverageOverDay").toString()) : 0.0f); + + rStatSubstationYPO.setEventCount(eventDetailSumAndCountM.containsKey("eventCountSum") ? + Integer.parseInt(eventDetailSumAndCountM.get("eventCountSum").toString()) : 0); + + if (!Objects.equals(0, eventDetailSumAndCountD.get("eventMeasurementCountSum"))) { + String value = df.format(Float.parseFloat(eventDetailSumAndCountM.get("eventCountSum").toString()) + / Float.parseFloat(eventDetailSumAndCountD.get("eventMeasurementCountSum").toString())); + rStatSubstationYPO.setEventFreq(Float.parseFloat(value)); + } else { + rStatSubstationYPO.setEventFreq(0.0f); + } + + rStatSubstationYPO.setSagCount(eventDetailSumAndCountM.containsKey("sagCountSum") ? + Integer.parseInt(eventDetailSumAndCountM.get("sagCountSum").toString()) : 0); + + if (!Objects.equals(0, eventDetailSumAndCountD.get("sagMeasurementCountSum"))) { + String value = df.format(Float.parseFloat(eventDetailSumAndCountM.get("sagCountSum").toString()) + / Float.parseFloat(eventDetailSumAndCountD.get("sagMeasurementCountSum").toString())); + rStatSubstationYPO.setSagFreq(Float.parseFloat(value)); + } else { + rStatSubstationYPO.setSagFreq(0.0f); + } + + rStatSubstationYPO.setSwellCount(eventDetailSumAndCountM.containsKey("swellCountSum") ? + Integer.parseInt(eventDetailSumAndCountM.get("swellCountSum").toString()) : 0); + + if (!Objects.equals(0, eventDetailSumAndCountD.get("swellMeasurementCountSum"))) { + String value = df.format(Float.parseFloat(eventDetailSumAndCountM.get("swellCountSum").toString()) + / Float.parseFloat(eventDetailSumAndCountD.get("swellMeasurementCountSum").toString())); + rStatSubstationYPO.setSwellFreq(Float.parseFloat(value)); + } else { + rStatSubstationYPO.setSwellFreq(0.0f); + } + + rStatSubstationYPO.setInterruptCount(eventDetailSumAndCountM.containsKey("interruptCountSum") ? + Integer.parseInt(eventDetailSumAndCountM.get("interruptCountSum").toString()) : 0); + + if (!Objects.equals(0, eventDetailSumAndCountD.get("interruptMeasurementCountSum"))) { + String value = df.format(Float.parseFloat(eventDetailSumAndCountM.get("interruptCountSum").toString()) + / Float.parseFloat(eventDetailSumAndCountD.get("interruptMeasurementCountSum").toString())); + rStatSubstationYPO.setInterruptFreq(Float.parseFloat(value)); + } else { + rStatSubstationYPO.setInterruptFreq(0.0f); + } + } else { + rStatSubstationYPO.setEffectiveMeasurementAverage(0.0f); + rStatSubstationYPO.setHarmonicAverageOverDay(0.0f); + rStatSubstationYPO.setFreqAverageOverDay(0.0f); + rStatSubstationYPO.setVDevAverageOverDay(0.0f); + rStatSubstationYPO.setVAverageOverDay(0.0f); + rStatSubstationYPO.setIAverageOverDay(0.0f); + rStatSubstationYPO.setUnbalanceAverageOverDay(0.0f); + rStatSubstationYPO.setINegAverageOverDay(0.0f); + rStatSubstationYPO.setFlickerAverageOverDay(0.0f); + rStatSubstationYPO.setInuharmAverageOverDay(0.0f); + rStatSubstationYPO.setEventCount(0); + rStatSubstationYPO.setEventFreq(0.0f); + rStatSubstationYPO.setSagCount(0); + rStatSubstationYPO.setSagFreq(0.0f); + rStatSubstationYPO.setSwellCount(0); + rStatSubstationYPO.setSwellFreq(0.0f); + rStatSubstationYPO.setInterruptCount(0); + rStatSubstationYPO.setInterruptFreq(0.0f); + } + rStatSubstationYPOS.add(rStatSubstationYPO); + } + }); + + } + + if (!CollectionUtils.isEmpty(rStatSubstationYPOS)) { + rStatSubstationYPOService.saveOrUpdateBatchByMultiId(rStatSubstationYPOS, 500); + } + } + } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatSubstationYPOServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatSubstationYPOServiceImpl.java new file mode 100644 index 000000000..9960ca909 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatSubstationYPOServiceImpl.java @@ -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.RStatSubstationQPOMapper; +import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatSubstationYPOMapper; +import com.njcn.prepare.harmonic.pojo.po.RStatSubstationQPO; +import com.njcn.prepare.harmonic.pojo.po.RStatSubstationYPO; +import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatSubstationQPOService; +import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatSubstationYPOService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +/** + * + * @author zbj + * @since 2023-06-30 + */ +@Service +@RequiredArgsConstructor +public class RStatSubstationYPOServiceImpl extends MppServiceImpl implements RStatSubstationYPOService { +}