From 389ab0ec99c2e961afa5209335f53cfc9bcf460a Mon Sep 17 00:00:00 2001
From: zhangbaojian <1065122561@qq.com>
Date: Fri, 9 Jun 2023 13:38:27 +0800
Subject: [PATCH] =?UTF-8?q?zbj//1.=E5=8D=95=E4=BD=8D=E7=9B=91=E6=B5=8B?=
=?UTF-8?q?=E7=82=B9=E6=9A=82=E6=80=81=E6=8C=87=E6=A0=87=E7=BB=9F=E8=AE=A1?=
=?UTF-8?q?=20=E5=B9=B4=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/RStatEventYPO.java | 54 ++++
.../prepare/harmonic/pojo/po/RStatOrgYPO.java | 85 +++++++
.../mapper/mysql/area/RStatOrgYMapper.java | 19 ++
.../newalgorithm/RStatEventYPOMapper.java | 17 ++
.../newalgorithm/RStatEventYPOService.java | 14 ++
.../impl/RStatEventServiceImpl.java | 231 ++++++++++++++++--
.../impl/RStatEventYPOServiceImpl.java | 24 ++
7 files changed, 428 insertions(+), 16 deletions(-)
create mode 100644 pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatEventYPO.java
create mode 100644 pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatOrgYPO.java
create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/RStatOrgYMapper.java
create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatEventYPOMapper.java
create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatEventYPOService.java
create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventYPOServiceImpl.java
diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatEventYPO.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatEventYPO.java
new file mode 100644
index 000000000..c9751c2a5
--- /dev/null
+++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatEventYPO.java
@@ -0,0 +1,54 @@
+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-09
+ */
+@Data
+@TableName("r_stat_event_y")
+public class RStatEventYPO {
+
+ @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;
+
+ @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-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatOrgYPO.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatOrgYPO.java
new file mode 100644
index 000000000..e64fdff24
--- /dev/null
+++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatOrgYPO.java
@@ -0,0 +1,85 @@
+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-09
+ */
+@Data
+@TableName("r_stat_org_y")
+public class RStatOrgYPO {
+
+ @MppMultiId(value = "org_no")
+ private String orgNo;
+
+ @MppMultiId(value = "data_date")
+ private LocalDate dataDate;
+
+ @MppMultiId(value = "measurement_type_class")
+ private String measurementTypeClass;
+
+ @TableField(value = "all_count")
+ private Integer allCount;
+
+ @TableField(value = "effective_measurement_average")
+ private Integer effectiveMeasurementAverage;
+
+ @TableField(value = "effective_measurement_accrued")
+ private Integer effectiveMeasurementAccrued;
+
+ @TableField(value = "harmonic_measurement_average")
+ private Integer harmonicMeasurementAverage;
+
+ @TableField(value = "harmonic_measurement_accrued")
+ private Integer harmonicMeasurementAccrued;
+
+ @TableField(value = "harmonic_measurement_ratio_average")
+ private Float harmonicMeasurementRatioAverage;
+
+ @TableField(value = "average_over_day")
+ private Float averageOverDay;
+
+ @TableField(value = "freq_pass_rate")
+ private Float freqPassRate;
+
+ @TableField(value = "v_dev_pass_rate")
+ private Float vDevPassRate;
+
+ @TableField(value = "flicker_pass_rate")
+ private Float flickerPassRate;
+
+ @TableField(value = "event_measurement_average")
+ private Integer eventMeasurementAverage;
+
+ @TableField(value = "event_measurement_accrued")
+ private Integer eventMeasurementAccrued;
+
+ @TableField(value = "event_measurement_average")
+ private Float eventMeasurementRatioAverage;
+
+ @TableField(value = "event_freq")
+ private Float eventFreq;
+
+ @TableField(value = "event_count")
+ private Integer eventCount;
+
+ @TableField(value = "should_count")
+ private Integer shouldCount;
+
+ @TableField(value = "warn_count")
+ private Integer warnCount;
+
+ @MppMultiId(value = "data_type")
+ private String dataType;
+
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/RStatOrgYMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/RStatOrgYMapper.java
new file mode 100644
index 000000000..1a9848818
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/RStatOrgYMapper.java
@@ -0,0 +1,19 @@
+package com.njcn.prepare.harmonic.mapper.mysql.area;
+
+import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
+import com.njcn.prepare.harmonic.pojo.po.RStatOrgQPO;
+import com.njcn.prepare.harmonic.pojo.po.RStatOrgYPO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ *
+ * Description:
+ * 接口文档访问地址:http://serverIP:port/swagger-ui.html
+ * Date: 2022/12/14 16:17【需求编号】
+ *
+ * @author clam
+ * @version V1.0.0
+ */
+@Mapper
+public interface RStatOrgYMapper 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/RStatEventYPOMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatEventYPOMapper.java
new file mode 100644
index 000000000..e0f8a1eef
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatEventYPOMapper.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.RStatEventYPO;
+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 RStatEventYPOMapper 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/RStatEventYPOService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatEventYPOService.java
new file mode 100644
index 000000000..be368742a
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatEventYPOService.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.RStatEventYPO;
+
+
+/**
+ * @author zbj
+ * @since 2023-06-09
+ */
+
+public interface RStatEventYPOService extends IMppService {
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventServiceImpl.java
index dab416ec5..abf30ca15 100644
--- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventServiceImpl.java
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventServiceImpl.java
@@ -12,18 +12,13 @@ import com.njcn.harmonic.pojo.po.RStatOrgMPO;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgDMapper;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgMMapper;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgQMapper;
+import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgYMapper;
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailDMapper;
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailMMapper;
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatEventDPOMapper;
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatEventMPOMapper;
-import com.njcn.prepare.harmonic.pojo.po.RStatEventDPO;
-import com.njcn.prepare.harmonic.pojo.po.RStatEventMPO;
-import com.njcn.prepare.harmonic.pojo.po.RStatEventQPO;
-import com.njcn.prepare.harmonic.pojo.po.RStatOrgQPO;
-import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatEventDPOService;
-import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatEventMPOService;
-import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatEventQPOService;
-import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatEventService;
+import com.njcn.prepare.harmonic.pojo.po.*;
+import com.njcn.prepare.harmonic.service.mysql.newalgorithm.*;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.enums.DicDataTypeEnum;
@@ -36,6 +31,7 @@ import org.springframework.util.CollectionUtils;
import java.text.DecimalFormat;
import java.time.LocalDate;
import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -66,18 +62,22 @@ public class RStatEventServiceImpl implements RStatEventService {
private final RStatEventMPOService rStatEventMPOService;
- private final RStatEventQPOService rStatEventQPOService;
-
private final RStatEventDPOMapper rStatEventDPOMapper;
private final RStatEventMPOMapper rStatEventMPOMapper;
+ private final RStatEventQPOService rStatEventQPOService;
+
+ private final RStatEventYPOService rStatEventYPOService;
+
private final RStatOrgDMapper rStatOrgDMapper;
private final RStatOrgMMapper rStatOrgMMapper;
private final RStatOrgQMapper rStatOrgQMapper;
+ private final RStatOrgYMapper rStatOrgYMapper;
+
@Override
public void handler(List data, String dataDate, Integer type) {
switch (type) {
@@ -703,11 +703,14 @@ public class RStatEventServiceImpl implements RStatEventService {
//年表
public void rStartEventYHandler(List data, String dataDate, Integer type) {
- List rStatEventDPOList = new ArrayList<>();
+ List rStatEventYPOList = new ArrayList<>();
DecimalFormat df = new DecimalFormat("0.00");
Date date = DateUtil.parse(dataDate);
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
-
+ // 获取当前年的起始日期和结束日期
+ LocalDate date1 = LocalDate.parse(dataDate, DateTimeFormatter.ISO_LOCAL_DATE);
+ LocalDate startDate = date1.withDayOfYear(1);
+ LocalDate endDate = date1.withDayOfYear(365).plusDays(1);
/*获取暂态统计指标*/
List eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
@@ -719,8 +722,14 @@ public class RStatEventServiceImpl implements RStatEventService {
List lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
Map lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
- QueryWrapper rMpEventDetailDPOQueryWrapper = new QueryWrapper<>();
- QueryWrapper rStatOrgDPOQueryWrapper = new QueryWrapper<>();
+ //详情表
+ QueryWrapper rMpEventDetailMPOQueryWrapper = new QueryWrapper<>();
+ //org年表
+ QueryWrapper rStatOrgYPOQueryWrapper = new QueryWrapper<>();
+ //天表
+ QueryWrapper rStatEventDPOQueryWrapper = new QueryWrapper<>();
+ //月表
+ QueryWrapper rStatEventMPOQueryWrapper = new QueryWrapper<>();
data.forEach(deptGetChildrenMoreDTO -> {
@@ -731,6 +740,101 @@ public class RStatEventServiceImpl implements RStatEventService {
collect.forEach((k, v) -> {
List collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
+ rMpEventDetailMPOQueryWrapper.clear();
+ rMpEventDetailMPOQueryWrapper.
+ in("measurement_point_id", collect1).
+ between("data_date", startDate, endDate);
+ List rMpEventDetailMPOS = rMpEventDetailMMapper.selectList(rMpEventDetailMPOQueryWrapper);
+
+ //年表
+ rStatOrgYPOQueryWrapper.clear();
+ rStatOrgYPOQueryWrapper.select("effective_measurement_accrued").
+ eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
+ eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
+ eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
+ between("data_date", startDate, endDate);
+
+ RStatOrgYPO rStatOrgYPO = rStatOrgYMapper.selectOne(rStatOrgYPOQueryWrapper);
+
+ //天表
+ rStatEventDPOQueryWrapper.clear();
+ rStatEventDPOQueryWrapper.
+ eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
+ between("data_date", startDate, endDate).
+ eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
+ eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
+ List rStatEventDPO = rStatEventDPOMapper.selectList(rStatEventDPOQueryWrapper);
+
+ //月表
+ rStatEventMPOQueryWrapper.clear();
+ rStatEventMPOQueryWrapper.
+ eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
+ between("data_date", startDate, endDate).
+ eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
+ eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
+ List rStatEventMPO = rStatEventMPOMapper.selectList(rStatEventMPOQueryWrapper);
+
+ //求各个类型的平均值(月表)
+ Map avgEMM = rStatEventMPO.stream()
+ .collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.averagingDouble(RStatEventMPO::getEventMeasurementAverage)));
+
+ //event_measurement的和
+ Map sumEM = rStatEventDPO.stream()
+ .collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventMeasurement)));
+
+ //event_count(天表)
+ Map sumEC = rStatEventDPO.stream()
+ .collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventCount)));
+
+ //event_count(月表)
+ Map sumECM = rStatEventMPO.stream()
+ .collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.summingInt(RStatEventMPO::getEventCount)));
+
+ //event_measurement_ratio_average(月表)
+ Map avgEMRM = rStatEventMPO.stream()
+ .collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.averagingDouble(RStatEventMPO::getEventMeasurementRatioAverage)));
+
+
+ eventStatis.forEach(dictData -> {
+ if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
+ || Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
+ || Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
+ || Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
+ return;
+ }
+ //累计发生暂态监测点数
+ Integer statisData = getStatisQData(dictData, rMpEventDetailMPOS);
+
+ RStatEventYPO rStatEventYPO = new RStatEventYPO();
+ rStatEventYPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
+ rStatEventYPO.setDataDate(localDate);
+ rStatEventYPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
+ rStatEventYPO.setEventType(dictData.getId());
+ rStatEventYPO.setEventMeasurementAverage(Float.parseFloat(df.format(avgEMM.get(dictData.getId()))));
+ // todo
+ rStatEventYPO.setEventMeasurementAccrued(statisData);
+ rStatEventYPO.setEventCount(sumECM.get(dictData.getId()));
+ rStatEventYPO.setEventMeasurementRatioAverage(Float.parseFloat(df.format(avgEMRM.get(dictData.getId()))));
+ rStatEventYPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
+
+ if (sumEM.get(dictData.getId()) == 0) {
+ rStatEventYPO.setEventFreq(1.00f);
+ } else {
+ String value = df.format(sumEC.get(dictData.getId()) / sumEM.get(dictData.getId()));
+ rStatEventYPO.setEventFreq(Float.parseFloat(value));
+ }
+ if (Objects.isNull(rStatOrgYPO)) {
+ rStatEventYPO.setEventMeasurementRatioAccrued(1.00f);
+ } else {
+ if (rStatOrgYPO.getEffectiveMeasurementAccrued() == 0) {
+ rStatEventYPO.setEventMeasurementRatioAccrued(1.00f);
+ } else {
+ String value = df.format(statisData / rStatOrgYPO.getEffectiveMeasurementAccrued());
+ rStatEventYPO.setEventMeasurementRatioAccrued(Float.parseFloat(value));
+ }
+ }
+ rStatEventYPOList.add(rStatEventYPO);
+ });
});
}
@@ -741,12 +845,107 @@ public class RStatEventServiceImpl implements RStatEventService {
collect.forEach((k, v) -> {
List collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
+ rMpEventDetailMPOQueryWrapper.clear();
+ rMpEventDetailMPOQueryWrapper.
+ in("measurement_point_id", collect1).
+ between("data_date", startDate, endDate);
+ List rMpEventDetailMPOS = rMpEventDetailMMapper.selectList(rMpEventDetailMPOQueryWrapper);
+
+ //年表
+ rStatOrgYPOQueryWrapper.clear();
+ rStatOrgYPOQueryWrapper.select("effective_measurement_accrued").
+ eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
+ eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
+ eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()).
+ between("data_date", startDate, endDate);
+
+ RStatOrgYPO rStatOrgYPO = rStatOrgYMapper.selectOne(rStatOrgYPOQueryWrapper);
+
+ //天表
+ rStatEventDPOQueryWrapper.clear();
+ rStatEventDPOQueryWrapper.
+ eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
+ between("data_date", startDate, endDate).
+ eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
+ eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
+ List rStatEventDPO = rStatEventDPOMapper.selectList(rStatEventDPOQueryWrapper);
+
+ //月表
+ rStatEventMPOQueryWrapper.clear();
+ rStatEventMPOQueryWrapper.
+ eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
+ between("data_date", startDate, endDate).
+ eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
+ eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
+ List rStatEventMPO = rStatEventMPOMapper.selectList(rStatEventMPOQueryWrapper);
+
+ //求各个类型的平均值(月表)
+ Map avgEMM = rStatEventMPO.stream()
+ .collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.averagingDouble(RStatEventMPO::getEventMeasurementAverage)));
+
+ //event_measurement的和
+ Map sumEM = rStatEventDPO.stream()
+ .collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventMeasurement)));
+
+ //event_count(天表)
+ Map sumEC = rStatEventDPO.stream()
+ .collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventCount)));
+
+ //event_count(月表)
+ Map sumECM = rStatEventMPO.stream()
+ .collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.summingInt(RStatEventMPO::getEventCount)));
+
+ //event_measurement_ratio_average(月表)
+ Map avgEMRM = rStatEventMPO.stream()
+ .collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.averagingDouble(RStatEventMPO::getEventMeasurementRatioAverage)));
+
+
+ eventStatis.forEach(dictData -> {
+ if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
+ || Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
+ || Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
+ || Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
+ return;
+ }
+ //累计发生暂态监测点数
+ Integer statisData = getStatisQData(dictData, rMpEventDetailMPOS);
+
+ RStatEventYPO rStatEventYPO = new RStatEventYPO();
+ rStatEventYPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
+ rStatEventYPO.setDataDate(localDate);
+ rStatEventYPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
+ rStatEventYPO.setEventType(dictData.getId());
+ rStatEventYPO.setEventMeasurementAverage(Float.parseFloat(df.format(avgEMM.get(dictData.getId()))));
+ // todo
+ rStatEventYPO.setEventMeasurementAccrued(statisData);
+ rStatEventYPO.setEventCount(sumECM.get(dictData.getId()));
+ rStatEventYPO.setEventMeasurementRatioAverage(Float.parseFloat(df.format(avgEMRM.get(dictData.getId()))));
+ rStatEventYPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
+
+ if (sumEM.get(dictData.getId()) == 0) {
+ rStatEventYPO.setEventFreq(1.00f);
+ } else {
+ String value = df.format(sumEC.get(dictData.getId()) / sumEM.get(dictData.getId()));
+ rStatEventYPO.setEventFreq(Float.parseFloat(value));
+ }
+ if (Objects.isNull(rStatOrgYPO)) {
+ rStatEventYPO.setEventMeasurementRatioAccrued(1.00f);
+ } else {
+ if (rStatOrgYPO.getEffectiveMeasurementAccrued() == 0) {
+ rStatEventYPO.setEventMeasurementRatioAccrued(1.00f);
+ } else {
+ String value = df.format(statisData / rStatOrgYPO.getEffectiveMeasurementAccrued());
+ rStatEventYPO.setEventMeasurementRatioAccrued(Float.parseFloat(value));
+ }
+ }
+ rStatEventYPOList.add(rStatEventYPO);
+ });
});
}
});
- if (!CollectionUtils.isEmpty(rStatEventDPOList)) {
- rStatEventDPOService.saveOrUpdateBatchByMultiId(rStatEventDPOList, 500);
+ if (!CollectionUtils.isEmpty(rStatEventYPOList)) {
+ rStatEventYPOService.saveOrUpdateBatchByMultiId(rStatEventYPOList, 500);
}
}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventYPOServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventYPOServiceImpl.java
new file mode 100644
index 000000000..a57266087
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventYPOServiceImpl.java
@@ -0,0 +1,24 @@
+package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl;
+
+import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
+import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatEventQPOMapper;
+import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatEventYPOMapper;
+import com.njcn.prepare.harmonic.pojo.po.RStatEventQPO;
+import com.njcn.prepare.harmonic.pojo.po.RStatEventYPO;
+import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatEventQPOService;
+import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatEventYPOService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 终端检测监督
+ *
+ *
+ * @author zbj
+ * @since 2023-06-09
+ */
+@Service
+@RequiredArgsConstructor
+public class RStatEventYPOServiceImpl extends MppServiceImpl implements RStatEventYPOService {
+}