diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RMpEventDetailMNewPO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RMpEventDetailMNewPO.java new file mode 100644 index 000000000..39cb97587 --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RMpEventDetailMNewPO.java @@ -0,0 +1,51 @@ +package com.njcn.harmonic.pojo.po; + +import lombok.Data; + +import java.util.Date; + +/** + * + * Description: + * 接口文档访问地址:http://serverIP:port/swagger-ui.html + * Date: 2022/12/28 14:58【需求编号】 + * + * @author clam + * @version V1.0.0 + */ + +/** + * 监测点暂态指标超标明细月表 + */ +@Data +public class RMpEventDetailMNewPO { + /** + * 监测点ID + */ + private String measurementPointId; + + /** + * 时间 + */ + private Date dataDate; + + /** + * 电压暂升发生次数 + */ + private Integer swellTimes; + + /** + * 电压暂降发生次数 + */ + private Integer sagTimes; + + /** + * 短时中断发生次数 + */ + private Integer interruptTimes; + + /** + * 电压等级 + */ + private String voltage; +} diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatEventVoltageMPO.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatEventVoltageMPO.java new file mode 100644 index 000000000..99daab53a --- /dev/null +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatEventVoltageMPO.java @@ -0,0 +1,57 @@ +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-12 + */ +@Data +@TableName("r_stat_event_voltage_m") +public class RStatEventVoltageMPO { + + @MppMultiId(value = "org_no") + private String orgNo; + + @MppMultiId(value = "data_date") + private LocalDate dataDate; + + @MppMultiId(value = "measurement_type_class") + private String measurementTypeClass; + + @MppMultiId(value = "event_type") + private String eventType; + + @MppMultiId(value = "voltage_type") + private String voltageType; + + @TableField(value = "event_measurement_average") + private Float eventMeasurementAverage; + + @TableField(value = "event_measurement_accrued") + private Integer eventMeasurementAccrued; + + @TableField(value = "event_freq") + private Float eventFreq; + + @TableField(value = "event_count") + private Integer eventCount; + + @TableField(value = "event_measurement_ratio_average") + private Float eventMeasurementRatioAverage; + + @TableField(value = "event_measurement_ratio_accrued") + private Float eventMeasurementRatioAccrued; + + @MppMultiId(value = "data_type") + private String dataType; +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatEventVoltageMPOMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatEventVoltageMPOMapper.java new file mode 100644 index 000000000..38ccd44ee --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatEventVoltageMPOMapper.java @@ -0,0 +1,18 @@ +package com.njcn.prepare.harmonic.mapper.mysql.newalgorithm; + +import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; +import com.njcn.prepare.harmonic.pojo.po.RStatEventMPO; +import com.njcn.prepare.harmonic.pojo.po.RStatEventVoltageMPO; +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 RStatEventVoltageMPOMapper extends MppBaseMapper { +} \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatEventVoltageMPOService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatEventVoltageMPOService.java new file mode 100644 index 000000000..635f2194f --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatEventVoltageMPOService.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.RStatEventVoltageMPO; + + +/** + * @author zbj + * @since 2023-06-12 + */ + +public interface RStatEventVoltageMPOService extends IMppService { +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventVoltageMPOServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventVoltageMPOServiceImpl.java new file mode 100644 index 000000000..fa2b3b9cc --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventVoltageMPOServiceImpl.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.RStatEventVoltageMPOMapper; +import com.njcn.prepare.harmonic.pojo.po.RStatEventVoltageMPO; +import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatEventVoltageMPOService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +/** + *

+ * 终端检测监督 + *

+ * + * @author zbj + * @since 2023-06-08 + */ +@Service +@RequiredArgsConstructor +public class RStatEventVoltageMPOServiceImpl extends MppServiceImpl implements RStatEventVoltageMPOService { +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventVoltageServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventVoltageServiceImpl.java index 9fc0cd826..592ea7381 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventVoltageServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventVoltageServiceImpl.java @@ -4,15 +4,13 @@ import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; import com.njcn.device.biz.pojo.dto.LineDevGetDTO; -import com.njcn.harmonic.pojo.po.RMpEventDetailDPO; -import com.njcn.harmonic.pojo.po.RMpEventDetailMPO; -import com.njcn.harmonic.pojo.po.RStatOrgDPO; -import com.njcn.harmonic.pojo.po.RStatOrgMPO; +import com.njcn.harmonic.pojo.po.*; 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.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.RStatEventVoltageDPOMapper; import com.njcn.prepare.harmonic.pojo.po.*; import com.njcn.prepare.harmonic.service.mysql.newalgorithm.*; import com.njcn.system.api.DicDataFeignClient; @@ -53,9 +51,9 @@ public class RStatEventVoltageServiceImpl implements RStatEventVoltageService { private final RStatEventVoltageDPOService rStatEventVoltageDPOService; - private final RStatEventMPOService rStatEventMPOService; + private final RStatEventVoltageMPOService rStatEventVoltageMPOService; - private final RStatEventDPOMapper rStatEventDPOMapper; + private final RStatEventVoltageDPOMapper rStatEventVoltageDPOMapper; private final RStatOrgDMapper rStatOrgDMapper; @@ -260,7 +258,7 @@ public class RStatEventVoltageServiceImpl implements RStatEventVoltageService { //月表 public void rStartEventVoltageMHandler(List data, String dataDate, Integer type) { - List rStatEventMPOList = new ArrayList<>(); + List rStatEventVoltageMPOS = new ArrayList<>(); DecimalFormat df = new DecimalFormat("0.00"); Date date = DateUtil.parse(dataDate); LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); @@ -276,12 +274,16 @@ public class RStatEventVoltageServiceImpl implements RStatEventVoltageService { List lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData(); Map lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData)); + /*获取监测点电压等级*/ + List voltageList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE_STAND.getCode()).getData(); + Map voltageMap = voltageList.stream().collect(Collectors.toMap(DictData::getValue, dictData -> dictData)); + //详情表 QueryWrapper rMpEventDetailMPOQueryWrapper = new QueryWrapper<>(); //org表 QueryWrapper rStatOrgMPOQueryWrapper = new QueryWrapper<>(); //天表 - QueryWrapper rStatEventDPOQueryWrapper = new QueryWrapper<>(); + QueryWrapper rStatEventVoltageDPOQueryWrapper = new QueryWrapper<>(); data.forEach(deptGetChildrenMoreDTO -> { @@ -307,32 +309,49 @@ public class RStatEventVoltageServiceImpl implements RStatEventVoltageService { RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper); //天表 - rStatEventDPOQueryWrapper.clear(); - rStatEventDPOQueryWrapper. + rStatEventVoltageDPOQueryWrapper.clear(); + rStatEventVoltageDPOQueryWrapper. eq("org_no", deptGetChildrenMoreDTO.getUnitId()). eq("DATE_FORMAT( data_date ,'%Y-%m')", dataDate.substring(0, 7)). eq("measurement_type_class", getmeasurementType(k, lineSortMap)). eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()); - List rStatEventDPO = rStatEventDPOMapper.selectList(rStatEventDPOQueryWrapper); + List rStatEventVoltageDPOS = rStatEventVoltageDPOMapper.selectList(rStatEventVoltageDPOQueryWrapper); //求各个类型的平均值 - Map avgEM = rStatEventDPO.stream() - .collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.averagingInt(RStatEventDPO::getEventMeasurement))); + Map> avgEM = rStatEventVoltageDPOS.stream() + .collect(Collectors.groupingBy(RStatEventVoltageDPO::getEventType, + Collectors.groupingBy(RStatEventVoltageDPO::getVoltageType, Collectors.averagingInt(RStatEventVoltageDPO::getEventMeasurement)))); //event_measurement的和 - Map sumEM = rStatEventDPO.stream() - .collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventMeasurement))); + Map> sumEM = rStatEventVoltageDPOS.stream() + .collect(Collectors.groupingBy(RStatEventVoltageDPO::getEventType, + Collectors.groupingBy(RStatEventVoltageDPO::getVoltageType, Collectors.summingInt(RStatEventVoltageDPO::getEventMeasurement)))); //event_count - Map sumEC = rStatEventDPO.stream() - .collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventCount))); + Map> sumEC = rStatEventVoltageDPOS.stream() + .collect(Collectors.groupingBy(RStatEventVoltageDPO::getEventType, + Collectors.groupingBy(RStatEventVoltageDPO::getVoltageType, Collectors.summingInt(RStatEventVoltageDPO::getEventCount)))); //event_measurement_ratio - Map avgEMR = rStatEventDPO.stream() - .collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.averagingDouble(RStatEventDPO::getEventMeasurementRatio))); - + Map> avgEMR = rStatEventVoltageDPOS.stream() + .collect(Collectors.groupingBy(RStatEventVoltageDPO::getEventType, + Collectors.groupingBy(RStatEventVoltageDPO::getVoltageType, Collectors.averagingDouble(RStatEventVoltageDPO::getEventMeasurementRatio)))); + //循环拷贝 + List poList = new ArrayList<>(); + for (RMpEventDetailMPO rMpEventDetailMPO : rMpEventDetailMPOS) { + RMpEventDetailMNewPO po = new RMpEventDetailMNewPO(); + BeanUtils.copyProperties(rMpEventDetailMPO, po); + poList.add(po); + } + for (RMpEventDetailMNewPO rMpEventDetailMNewPO : poList) { + for (LineDevGetDTO lineDevGetDTO : v) { + if (Objects.equals(lineDevGetDTO.getPointId(), rMpEventDetailMNewPO.getMeasurementPointId())) { + rMpEventDetailMNewPO.setVoltage(lineDevGetDTO.getVoltageLevel()); + } + } + } eventStatis.forEach(dictData -> { if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode()) || Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode()) @@ -340,37 +359,46 @@ public class RStatEventVoltageServiceImpl implements RStatEventVoltageService { || Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) { return; } - //累计发生暂态监测点数 - Integer statisData = getStatisData(dictData, rMpEventDetailMPOS); - - RStatEventMPO rStatEventMPO = new RStatEventMPO(); - rStatEventMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); - rStatEventMPO.setDataDate(localDate); - rStatEventMPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap)); - rStatEventMPO.setEventType(dictData.getId()); - rStatEventMPO.setEventMeasurementAverage(Float.parseFloat(df.format(avgEM.get(dictData.getId())))); - rStatEventMPO.setEventMeasurementAccrued(statisData); - rStatEventMPO.setEventCount(sumEC.get(dictData.getId())); - rStatEventMPO.setEventMeasurementRatioAverage(Float.parseFloat(df.format(avgEMR.get(dictData.getId())))); - rStatEventMPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()); - - if (sumEM.get(dictData.getId()) == 0) { - rStatEventMPO.setEventFreq(1.00f); - } else { - String value = df.format(sumEC.get(dictData.getId()) / sumEM.get(dictData.getId())); - rStatEventMPO.setEventFreq(Float.parseFloat(value)); - } - if (Objects.isNull(rStatOrgMPO)) { - rStatEventMPO.setEventMeasurementRatioAccrued(1.00f); - } else { - if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) { - rStatEventMPO.setEventMeasurementRatioAccrued(1.00f); - } else { - String value = df.format(statisData / rStatOrgMPO.getEffectiveMeasurementAccrued()); - rStatEventMPO.setEventMeasurementRatioAccrued(Float.parseFloat(value)); + //电压 + voltageMap.forEach((k1, v1) -> { + List poResult = poList.stream().filter(p -> Objects.equals(p.getVoltage(), k1)).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(poResult)) { + return; } - } - rStatEventMPOList.add(rStatEventMPO); + //累计发生暂态监测点数 + Integer statisData = getStatisData(dictData, k1, poResult); + + RStatEventVoltageMPO rStatEventVoltageMPO = new RStatEventVoltageMPO(); + rStatEventVoltageMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); + rStatEventVoltageMPO.setDataDate(localDate); + rStatEventVoltageMPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap)); + rStatEventVoltageMPO.setEventType(dictData.getId()); + rStatEventVoltageMPO.setVoltageType(v1.getId()); + + rStatEventVoltageMPO.setEventMeasurementAverage(Float.parseFloat(df.format(avgEM.get(dictData.getId()).get(v1.getId())))); + rStatEventVoltageMPO.setEventMeasurementAccrued(statisData); + rStatEventVoltageMPO.setEventCount(sumEC.get(dictData.getId()).get(v1.getId())); + rStatEventVoltageMPO.setEventMeasurementRatioAverage(Float.parseFloat(df.format(avgEMR.get(dictData.getId()).get(v1.getId())))); + rStatEventVoltageMPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()); + + if (sumEM.get(dictData.getId()).get(v1.getId()) == 0) { + rStatEventVoltageMPO.setEventFreq(1.00f); + } else { + String value = df.format(sumEC.get(dictData.getId()).get(v1.getId()) / sumEM.get(dictData.getId()).get(v1.getId())); + rStatEventVoltageMPO.setEventFreq(Float.parseFloat(value)); + } + if (Objects.isNull(rStatOrgMPO)) { + rStatEventVoltageMPO.setEventMeasurementRatioAccrued(1.00f); + } else { + if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) { + rStatEventVoltageMPO.setEventMeasurementRatioAccrued(1.00f); + } else { + String value = df.format(statisData / rStatOrgMPO.getEffectiveMeasurementAccrued()); + rStatEventVoltageMPO.setEventMeasurementRatioAccrued(Float.parseFloat(value)); + } + } + rStatEventVoltageMPOS.add(rStatEventVoltageMPO); + }); }); }); } @@ -381,7 +409,6 @@ public class RStatEventVoltageServiceImpl implements RStatEventVoltageService { Map> collect = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType)); collect.forEach((k, v) -> { List collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); - rMpEventDetailMPOQueryWrapper.clear(); rMpEventDetailMPOQueryWrapper. in("measurement_point_id", collect1). @@ -397,32 +424,49 @@ public class RStatEventVoltageServiceImpl implements RStatEventVoltageService { RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper); //天表 - rStatEventDPOQueryWrapper.clear(); - rStatEventDPOQueryWrapper. + rStatEventVoltageDPOQueryWrapper.clear(); + rStatEventVoltageDPOQueryWrapper. eq("org_no", deptGetChildrenMoreDTO.getUnitId()). eq("DATE_FORMAT( data_date ,'%Y-%m')", dataDate.substring(0, 7)). eq("measurement_type_class", getmeasurementType(k, lineSortMap)). eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()); - List rStatEventDPO = rStatEventDPOMapper.selectList(rStatEventDPOQueryWrapper); + List rStatEventVoltageDPOS = rStatEventVoltageDPOMapper.selectList(rStatEventVoltageDPOQueryWrapper); //求各个类型的平均值 - Map avgEM = rStatEventDPO.stream() - .collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.averagingInt(RStatEventDPO::getEventMeasurement))); + Map> avgEM = rStatEventVoltageDPOS.stream() + .collect(Collectors.groupingBy(RStatEventVoltageDPO::getEventType, + Collectors.groupingBy(RStatEventVoltageDPO::getVoltageType, Collectors.averagingInt(RStatEventVoltageDPO::getEventMeasurement)))); //event_measurement的和 - Map sumEM = rStatEventDPO.stream() - .collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventMeasurement))); + Map> sumEM = rStatEventVoltageDPOS.stream() + .collect(Collectors.groupingBy(RStatEventVoltageDPO::getEventType, + Collectors.groupingBy(RStatEventVoltageDPO::getVoltageType, Collectors.summingInt(RStatEventVoltageDPO::getEventMeasurement)))); //event_count - Map sumEC = rStatEventDPO.stream() - .collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventCount))); + Map> sumEC = rStatEventVoltageDPOS.stream() + .collect(Collectors.groupingBy(RStatEventVoltageDPO::getEventType, + Collectors.groupingBy(RStatEventVoltageDPO::getVoltageType, Collectors.summingInt(RStatEventVoltageDPO::getEventCount)))); //event_measurement_ratio - Map avgEMR = rStatEventDPO.stream() - .collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.averagingDouble(RStatEventDPO::getEventMeasurementRatio))); - + Map> avgEMR = rStatEventVoltageDPOS.stream() + .collect(Collectors.groupingBy(RStatEventVoltageDPO::getEventType, + Collectors.groupingBy(RStatEventVoltageDPO::getVoltageType, Collectors.averagingDouble(RStatEventVoltageDPO::getEventMeasurementRatio)))); + //循环拷贝 + List poList = new ArrayList<>(); + for (RMpEventDetailMPO rMpEventDetailMPO : rMpEventDetailMPOS) { + RMpEventDetailMNewPO po = new RMpEventDetailMNewPO(); + BeanUtils.copyProperties(rMpEventDetailMPO, po); + poList.add(po); + } + for (RMpEventDetailMNewPO rMpEventDetailMNewPO : poList) { + for (LineDevGetDTO lineDevGetDTO : v) { + if (Objects.equals(lineDevGetDTO.getPointId(), rMpEventDetailMNewPO.getMeasurementPointId())) { + rMpEventDetailMNewPO.setVoltage(lineDevGetDTO.getVoltageLevel()); + } + } + } eventStatis.forEach(dictData -> { if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode()) || Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode()) @@ -430,44 +474,53 @@ public class RStatEventVoltageServiceImpl implements RStatEventVoltageService { || Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) { return; } - //累计发生暂态监测点数 - Integer statisData = getStatisData(dictData, rMpEventDetailMPOS); - - RStatEventMPO rStatEventMPO = new RStatEventMPO(); - rStatEventMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); - rStatEventMPO.setDataDate(localDate); - rStatEventMPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap)); - rStatEventMPO.setEventType(dictData.getId()); - rStatEventMPO.setEventMeasurementAverage(Float.parseFloat(df.format(avgEM.get(dictData.getId())))); - rStatEventMPO.setEventMeasurementAccrued(statisData); - rStatEventMPO.setEventCount(sumEC.get(dictData.getId())); - rStatEventMPO.setEventMeasurementRatioAverage(Float.parseFloat(df.format(avgEMR.get(dictData.getId())))); - rStatEventMPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()); - - if (sumEM.get(dictData.getId()) == 0) { - rStatEventMPO.setEventFreq(1.00f); - } else { - String value = df.format(sumEC.get(dictData.getId()) / sumEM.get(dictData.getId())); - rStatEventMPO.setEventFreq(Float.parseFloat(value)); - } - if (Objects.isNull(rStatOrgMPO)) { - rStatEventMPO.setEventMeasurementRatioAccrued(1.00f); - } else { - if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) { - rStatEventMPO.setEventMeasurementRatioAccrued(1.00f); - } else { - String value = df.format(statisData / rStatOrgMPO.getEffectiveMeasurementAccrued()); - rStatEventMPO.setEventMeasurementRatioAccrued(Float.parseFloat(value)); + //电压 + voltageMap.forEach((k1, v1) -> { + List poResult = poList.stream().filter(p -> Objects.equals(p.getVoltage(), k1)).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(poResult)) { + return; } - } - rStatEventMPOList.add(rStatEventMPO); + //累计发生暂态监测点数 + Integer statisData = getStatisData(dictData, k1, poResult); + + RStatEventVoltageMPO rStatEventVoltageMPO = new RStatEventVoltageMPO(); + rStatEventVoltageMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); + rStatEventVoltageMPO.setDataDate(localDate); + rStatEventVoltageMPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap)); + rStatEventVoltageMPO.setEventType(dictData.getId()); + rStatEventVoltageMPO.setVoltageType(v1.getId()); + + rStatEventVoltageMPO.setEventMeasurementAverage(Float.parseFloat(df.format(avgEM.get(dictData.getId()).get(v1.getId())))); + rStatEventVoltageMPO.setEventMeasurementAccrued(statisData); + rStatEventVoltageMPO.setEventCount(sumEC.get(dictData.getId()).get(v1.getId())); + rStatEventVoltageMPO.setEventMeasurementRatioAverage(Float.parseFloat(df.format(avgEMR.get(dictData.getId()).get(v1.getId())))); + rStatEventVoltageMPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()); + + if (sumEM.get(dictData.getId()).get(v1.getId()) == 0) { + rStatEventVoltageMPO.setEventFreq(1.00f); + } else { + String value = df.format(sumEC.get(dictData.getId()).get(v1.getId()) / sumEM.get(dictData.getId()).get(v1.getId())); + rStatEventVoltageMPO.setEventFreq(Float.parseFloat(value)); + } + if (Objects.isNull(rStatOrgMPO)) { + rStatEventVoltageMPO.setEventMeasurementRatioAccrued(1.00f); + } else { + if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) { + rStatEventVoltageMPO.setEventMeasurementRatioAccrued(1.00f); + } else { + String value = df.format(statisData / rStatOrgMPO.getEffectiveMeasurementAccrued()); + rStatEventVoltageMPO.setEventMeasurementRatioAccrued(Float.parseFloat(value)); + } + } + rStatEventVoltageMPOS.add(rStatEventVoltageMPO); + }); }); }); } }); - if (!CollectionUtils.isEmpty(rStatEventMPOList)) { - rStatEventMPOService.saveOrUpdateBatchByMultiId(rStatEventMPOList, 500); + if (!CollectionUtils.isEmpty(rStatEventVoltageMPOS)) { + rStatEventVoltageMPOService.saveOrUpdateBatchByMultiId(rStatEventVoltageMPOS, 500); } } @@ -515,16 +568,16 @@ public class RStatEventVoltageServiceImpl implements RStatEventVoltageService { } //获取暂态各个类型发生的监测点数量 - private Integer getStatisData(DictData dictData, List list) { + private Integer getStatisData(DictData dictData, String voltage, List list) { Integer value = 0; if (Objects.equals(dictData.getCode(), DicDataEnum.VOLTAGE_DIP.getCode())) { - value = Integer.valueOf(list.stream().filter(temp -> temp.getSagTimes() > 0).count() + ""); + value = Integer.valueOf(list.stream().filter(temp -> temp.getSagTimes() > 0 && Objects.equals(temp.getVoltage(), voltage)).count() + ""); } if (Objects.equals(dictData.getCode(), DicDataEnum.VOLTAGE_RISE.getCode())) { - value = Integer.valueOf(list.stream().filter(temp -> temp.getSwellTimes() > 0).count() + ""); + value = Integer.valueOf(list.stream().filter(temp -> temp.getSwellTimes() > 0 && Objects.equals(temp.getVoltage(), voltage)).count() + ""); } if (Objects.equals(dictData.getCode(), DicDataEnum.SHORT_INTERRUPTIONS.getCode())) { - value = Integer.valueOf(list.stream().filter(temp -> temp.getInterruptTimes() > 0).count() + ""); + value = Integer.valueOf(list.stream().filter(temp -> temp.getInterruptTimes() > 0 && Objects.equals(temp.getVoltage(), voltage)).count() + ""); } return value;