diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatEventMPO.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatEventMPO.java
new file mode 100644
index 000000000..a6a12ff44
--- /dev/null
+++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatEventMPO.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-08
+ */
+@Data
+@TableName("r_stat_event_m")
+public class RStatEventMPO {
+
+ @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/RStatEventQPO.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatEventQPO.java
new file mode 100644
index 000000000..0257cf32e
--- /dev/null
+++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatEventQPO.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-08
+ */
+@Data
+@TableName("r_stat_event_q")
+public class RStatEventQPO {
+
+ @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/RStatOrgQPO.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatOrgQPO.java
new file mode 100644
index 000000000..a926e0e5d
--- /dev/null
+++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatOrgQPO.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_q")
+public class RStatOrgQPO {
+
+ @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/controller/newalgorithm/RStatEventDController.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/RStatEventController.java
similarity index 80%
rename from pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/RStatEventDController.java
rename to pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/RStatEventController.java
index 4f31e3064..9fe04c9ae 100644
--- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/RStatEventDController.java
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/RStatEventController.java
@@ -10,7 +10,7 @@ import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
import com.njcn.prepare.harmonic.pojo.param.OrgParam;
-import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatEventDService;
+import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatEventService;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.po.Dept;
import com.njcn.web.controller.BaseController;
@@ -38,13 +38,13 @@ import java.util.List;
* @version V1.0.0
*/
@Slf4j
-@Api(tags = "暂态指标日统计")
+@Api(tags = "暂态指标统计")
@RestController
-@RequestMapping("/rStartEventD")
+@RequestMapping("/rStartEvent")
@RequiredArgsConstructor
-public class RStatEventDController extends BaseController {
+public class RStatEventController extends BaseController {
- private final RStatEventDService rStatEventDService;
+ private final RStatEventService rStatEventDService;
private final CommTerminalGeneralClient commTerminalGeneralClient;
@@ -52,12 +52,12 @@ public class RStatEventDController extends BaseController {
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
- @PostMapping("/rStartEventDHandler")
- @ApiOperation("暂态指标日统计")
+ @PostMapping("/rStartEventHandler")
+ @ApiOperation("暂态指标统计")
@ApiImplicitParam(name = "orgParam", value = "参数", required = true)
- public HttpResult rStartEventDHandler(@RequestBody @Validated OrgParam orgParam) {
- log.info(LocalDateTime.now() + "rStartEventDHandler始执行");
- String methodDescribe = getMethodDescribe("rStartEventDHandler");
+ public HttpResult rStartEventHandler(@RequestBody @Validated OrgParam orgParam) {
+ log.info(LocalDateTime.now() + "rStartEventHandler始执行");
+ String methodDescribe = getMethodDescribe("rStartEventHandler");
/**
* 支持补录
*/
@@ -72,7 +72,7 @@ public class RStatEventDController extends BaseController {
deptGetLineParam.setServerName(ServerInfo.PREPARE_BOOT);
List data = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData();
- rStatEventDService.rStartEventDHandler(data,orgParam.getDataDate(),orgParam.getType());
+ rStatEventDService.handler(data,orgParam.getDataDate(),orgParam.getType());
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/RStatOrgQMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/RStatOrgQMapper.java
new file mode 100644
index 000000000..4a69d539e
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/RStatOrgQMapper.java
@@ -0,0 +1,18 @@
+package com.njcn.prepare.harmonic.mapper.mysql.area;
+
+import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
+import com.njcn.prepare.harmonic.pojo.po.RStatOrgQPO;
+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 RStatOrgQMapper 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/RStatEventDMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatEventMPOMapper.java
similarity index 64%
rename from pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatEventDMapper.java
rename to pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatEventMPOMapper.java
index c8d2524e9..c9d6ec90c 100644
--- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatEventDMapper.java
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatEventMPOMapper.java
@@ -1,7 +1,8 @@
package com.njcn.prepare.harmonic.mapper.mysql.newalgorithm;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.prepare.harmonic.pojo.po.RStatEventDPO;
+import com.njcn.prepare.harmonic.pojo.po.RStatEventMPO;
import org.apache.ibatis.annotations.Mapper;
/**
@@ -13,5 +14,5 @@ import org.apache.ibatis.annotations.Mapper;
* @version V1.0.0
*/
@Mapper
-public interface RStatEventDMapper extends BaseMapper {
+public interface RStatEventMPOMapper 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/RStatEventMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatEventMapper.java
new file mode 100644
index 000000000..e1e4ec379
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatEventMapper.java
@@ -0,0 +1,15 @@
+package com.njcn.prepare.harmonic.mapper.mysql.newalgorithm;
+
+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 RStatEventMapper {
+}
\ No newline at end of file
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatEventQPOMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatEventQPOMapper.java
new file mode 100644
index 000000000..8e38d18b7
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatEventQPOMapper.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.RStatEventQPO;
+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 RStatEventQPOMapper 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/RStatEventDMapper.xml b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/mapping/RStatEventMapper.xml
similarity index 89%
rename from pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/mapping/RStatEventDMapper.xml
rename to pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/mapping/RStatEventMapper.xml
index d87bb4cd5..9bf6d95ed 100644
--- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/mapping/RStatEventDMapper.xml
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/mapping/RStatEventMapper.xml
@@ -1,5 +1,5 @@
-
+
\ No newline at end of file
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatEventDService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatEventDService.java
deleted file mode 100644
index 8364d7729..000000000
--- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatEventDService.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.njcn.prepare.harmonic.service.mysql.newalgorithm;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
-import com.njcn.prepare.harmonic.pojo.po.RStatEventDPO;
-
-import java.util.List;
-
-/**
- * @author zbj
- * @since 2023-06-06
- */
-
-public interface RStatEventDService extends IService {
-
- void rStartEventDHandler(List data, String dataDate, Integer type);
-
-}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatEventMPOService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatEventMPOService.java
new file mode 100644
index 000000000..e4ba6e2cb
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatEventMPOService.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.RStatEventMPO;
+
+
+/**
+ * @author zbj
+ * @since 2023-06-08
+ */
+
+public interface RStatEventMPOService extends IMppService {
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatEventQPOService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatEventQPOService.java
new file mode 100644
index 000000000..8df8124fb
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatEventQPOService.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.RStatEventQPO;
+
+
+/**
+ * @author zbj
+ * @since 2023-06-09
+ */
+
+public interface RStatEventQPOService extends IMppService {
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatEventService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatEventService.java
new file mode 100644
index 000000000..f6a8d2801
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatEventService.java
@@ -0,0 +1,16 @@
+package com.njcn.prepare.harmonic.service.mysql.newalgorithm;
+
+import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
+
+import java.util.List;
+
+/**
+ * @author zbj
+ * @since 2023-06-06
+ */
+
+public interface RStatEventService {
+
+ void handler(List data, String dataDate, Integer type);
+
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventDServiceImpl.java
deleted file mode 100644
index e7076eecb..000000000
--- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventDServiceImpl.java
+++ /dev/null
@@ -1,228 +0,0 @@
-package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl;
-
-import cn.hutool.core.date.DateUtil;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
-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.RStatOrgDPO;
-import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgDMapper;
-import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailDMapper;
-import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatEventDMapper;
-import com.njcn.prepare.harmonic.pojo.po.RStatEventDPO;
-import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatEventDPOService;
-import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatEventDService;
-import com.njcn.system.api.DicDataFeignClient;
-import com.njcn.system.enums.DicDataEnum;
-import com.njcn.system.enums.DicDataTypeEnum;
-import com.njcn.system.pojo.po.DictData;
-import com.njcn.user.api.DeptFeignClient;
-import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-
-import java.text.DecimalFormat;
-import java.time.LocalDate;
-import java.time.ZoneId;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- *
- * 终端检测监督
- *
- *
- * @author zbj
- * @since 2023-06-06
- */
-@Service
-@RequiredArgsConstructor
-public class RStatEventDServiceImpl extends ServiceImpl implements RStatEventDService {
-
- private final CommTerminalGeneralClient commTerminalGeneralClient;
-
- private final DeptFeignClient deptFeignClient;
-
- private final DicDataFeignClient dicDataFeignClient;
-
- private final RStatEventDMapper rStatEventDMapper;
-
- private final RMpEventDetailDMapper rMpEventDetailDMapper;
-
- private final RStatEventDPOService rStatEventDPOService;
-
- private final RStatOrgDMapper rStatOrgDMapper;
-
- @Override
- public void rStartEventDHandler(List data, String dataDate, Integer type) {
- List rStatEventDPOList = new ArrayList<>();
- DecimalFormat df = new DecimalFormat("0.00");
- Date date = DateUtil.parse(dataDate);
- LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
-
- /*获取暂态统计指标*/
- List eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
-
- /*获取数据类型*/
- List dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
- Map dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
-
- /*获取监测点类型类型*/
- 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<>();
-
- data.forEach(deptGetChildrenMoreDTO -> {
-
- /*主网*/
- if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
- List lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
- Map> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
- collect.forEach((k, v) -> {
- List collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
-
- rMpEventDetailDPOQueryWrapper.clear();
- rMpEventDetailDPOQueryWrapper.
- in("measurement_point_id", collect1).
- eq("DATE_FORMAT( data_date ,'%Y-%m-%d')", dataDate);
- List rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper);
-
- rStatOrgDPOQueryWrapper.clear();
- rStatOrgDPOQueryWrapper.select("effective_measurement").
- eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
- eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
- eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
- eq("DATE_FORMAT( data_date ,'%Y-%m-%d')", dataDate);
- RStatOrgDPO rStatOrgDPO = rStatOrgDMapper.selectOne(rStatOrgDPOQueryWrapper);
-
- 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;
- }
- List transientStatisData = getTransientStatisData(dictData, rMpEventDetailDPOS);
- RStatEventDPO rStatEventDPO = new RStatEventDPO();
- rStatEventDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
- rStatEventDPO.setDataDate(localDate);
- rStatEventDPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
- rStatEventDPO.setEventType(dictData.getId());
- rStatEventDPO.setEventMeasurement(transientStatisData.get(0));
- rStatEventDPO.setEventCount(transientStatisData.get(1));
- rStatEventDPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
- if (rStatOrgDPO.getEffectiveMeasurement() == 0) {
- rStatEventDPO.setEventMeasurementRatio(1.00f);
-
- } else {
- String value = df.format(rStatEventDPO.getEventMeasurement() / rStatOrgDPO.getEffectiveMeasurement());
- rStatEventDPO.setEventMeasurementRatio(Float.parseFloat(value));
- }
- rStatEventDPOList.add(rStatEventDPO);
- }
- );
- });
- }
-
- /*配网*/
- if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())) {
- List pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
- Map> collect = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
- collect.forEach((k, v) -> {
- List collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
-
- rMpEventDetailDPOQueryWrapper.clear();
- rMpEventDetailDPOQueryWrapper.
- in("measurement_point_id", collect1).
- eq("DATE_FORMAT( data_date ,'%Y-%m-%d')", dataDate);
- List rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper);
-
- rStatOrgDPOQueryWrapper.clear();
- rStatOrgDPOQueryWrapper.select("effective_measurement").
- eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
- eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
- eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()).
- eq("DATE_FORMAT( data_date ,'%Y-%m-%d')", dataDate);
- RStatOrgDPO rStatOrgDPO = rStatOrgDMapper.selectOne(rStatOrgDPOQueryWrapper);
-
- 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;
- }
- List transientStatisData = getTransientStatisData(dictData, rMpEventDetailDPOS);
- RStatEventDPO rStatEventDPO = new RStatEventDPO();
- rStatEventDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
- rStatEventDPO.setDataDate(localDate);
- rStatEventDPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
- rStatEventDPO.setEventType(dictData.getId());
- rStatEventDPO.setEventMeasurement(transientStatisData.get(0));
- rStatEventDPO.setEventCount(transientStatisData.get(1));
- rStatEventDPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
- if (rStatOrgDPO.getEffectiveMeasurement() == 0) {
- rStatEventDPO.setEventMeasurementRatio(1.00f);
- } else {
- String value = df.format(rStatEventDPO.getEventMeasurement() / rStatOrgDPO.getEffectiveMeasurement());
- rStatEventDPO.setEventMeasurementRatio(Float.parseFloat(value));
- }
- rStatEventDPOList.add(rStatEventDPO);
- }
- );
- });
- }
-
- });
- if (!CollectionUtils.isEmpty(rStatEventDPOList)) {
- rStatEventDPOService.saveOrUpdateBatchByMultiId(rStatEventDPOList, 500);
- }
- }
-
- //获取监测点类型 1/2/3类字典id
- private String getmeasurementType(Integer k, Map lineSortMap) {
- String value = "";
- switch (k) {
- case 1:
- value = lineSortMap.get(DicDataEnum.ONE_LINE.getCode()).getId();
- break;
- case 2:
- value = lineSortMap.get(DicDataEnum.TWO_LINE.getCode()).getId();
- break;
- case 3:
- value = lineSortMap.get(DicDataEnum.THREE_LINE.getCode()).getId();
- break;
- default:
- break;
- }
- return value;
- }
-
- //获取暂态各个类型发生的监测点数量及发生次数
- private List getTransientStatisData(DictData dictData, List list) {
- List result = new ArrayList<>(2);
- Integer value = 0;
- Integer count = 0;
- if (Objects.equals(dictData.getCode(), DicDataEnum.VOLTAGE_DIP.getCode())) {
- value = Integer.valueOf(list.stream().filter(temp -> temp.getSagTimes() > 0).count() + "");
- count = Integer.valueOf(list.stream().mapToInt(obj -> obj.getSagTimes()).sum() + "");
- }
- if (Objects.equals(dictData.getCode(), DicDataEnum.VOLTAGE_RISE.getCode())) {
- value = Integer.valueOf(list.stream().filter(temp -> temp.getSwellTimes() > 0).count() + "");
- count = Integer.valueOf(list.stream().mapToInt(obj -> obj.getSwellTimes()).sum() + "");
- }
- if (Objects.equals(dictData.getCode(), DicDataEnum.SHORT_INTERRUPTIONS.getCode())) {
- value = Integer.valueOf(list.stream().filter(temp -> temp.getInterruptTimes() > 0).count() + "");
- count = Integer.valueOf(list.stream().mapToInt(obj -> obj.getInterruptTimes()).sum() + "");
- }
- result.add(value);
- result.add(count);
- return result;
-
- }
-
-}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventMPOServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventMPOServiceImpl.java
new file mode 100644
index 000000000..815f9923e
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventMPOServiceImpl.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.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.service.mysql.newalgorithm.RStatEventDPOService;
+import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatEventMPOService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 终端检测监督
+ *
+ *
+ * @author zbj
+ * @since 2023-06-08
+ */
+@Service
+@RequiredArgsConstructor
+public class RStatEventMPOServiceImpl extends MppServiceImpl implements RStatEventMPOService {
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventQPOServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventQPOServiceImpl.java
new file mode 100644
index 000000000..2fed94ca1
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventQPOServiceImpl.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.RStatEventMPOMapper;
+import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatEventQPOMapper;
+import com.njcn.prepare.harmonic.pojo.po.RStatEventMPO;
+import com.njcn.prepare.harmonic.pojo.po.RStatEventQPO;
+import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatEventMPOService;
+import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatEventQPOService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 终端检测监督
+ *
+ *
+ * @author zbj
+ * @since 2023-06-09
+ */
+@Service
+@RequiredArgsConstructor
+public class RStatEventQPOServiceImpl extends MppServiceImpl implements RStatEventQPOService {
+}
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
new file mode 100644
index 000000000..dab416ec5
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventServiceImpl.java
@@ -0,0 +1,846 @@
+package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl;
+
+import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
+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.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.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.system.api.DicDataFeignClient;
+import com.njcn.system.enums.DicDataEnum;
+import com.njcn.system.enums.DicDataTypeEnum;
+import com.njcn.system.pojo.po.DictData;
+import com.njcn.user.api.DeptFeignClient;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.text.DecimalFormat;
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * 终端检测监督
+ *
+ *
+ * @author zbj
+ * @since 2023-06-06
+ */
+@Service
+@RequiredArgsConstructor
+public class RStatEventServiceImpl implements RStatEventService {
+
+ private final CommTerminalGeneralClient commTerminalGeneralClient;
+
+ private final DeptFeignClient deptFeignClient;
+
+ private final DicDataFeignClient dicDataFeignClient;
+
+ private final RMpEventDetailDMapper rMpEventDetailDMapper;
+
+ private final RMpEventDetailMMapper rMpEventDetailMMapper;
+
+ private final RStatEventDPOService rStatEventDPOService;
+
+ private final RStatEventMPOService rStatEventMPOService;
+
+ private final RStatEventQPOService rStatEventQPOService;
+
+ private final RStatEventDPOMapper rStatEventDPOMapper;
+
+ private final RStatEventMPOMapper rStatEventMPOMapper;
+
+ private final RStatOrgDMapper rStatOrgDMapper;
+
+ private final RStatOrgMMapper rStatOrgMMapper;
+
+ private final RStatOrgQMapper rStatOrgQMapper;
+
+ @Override
+ public void handler(List data, String dataDate, Integer type) {
+ switch (type) {
+ case 1:
+ this.rStartEventYHandler (data, dataDate, type);
+ break;
+ case 2:
+ this.rStartEventQHandler(data, dataDate, type);
+ break;
+ case 3:
+ this.rStartEventMHandler(data, dataDate, type);
+ break;
+ case 5:
+ this.rStartEventDHandler(data, dataDate, type);
+ break;
+ default:
+ break;
+ }
+ }
+
+ //天表
+ public void rStartEventDHandler(List data, String dataDate, Integer type) {
+ List rStatEventDPOList = new ArrayList<>();
+ DecimalFormat df = new DecimalFormat("0.00");
+ Date date = DateUtil.parse(dataDate);
+ LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+
+ /*获取暂态统计指标*/
+ List eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
+
+ /*获取数据类型*/
+ List dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
+ Map dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
+
+ /*获取监测点类型类型*/
+ 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<>();
+
+ data.forEach(deptGetChildrenMoreDTO -> {
+
+ /*主网*/
+ if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
+ List lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
+ Map> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
+ collect.forEach((k, v) -> {
+ List collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
+
+ rMpEventDetailDPOQueryWrapper.clear();
+ rMpEventDetailDPOQueryWrapper.
+ in("measurement_point_id", collect1).
+ eq("DATE_FORMAT( data_date ,'%Y-%m-%d')", dataDate);
+ List rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper);
+
+ rStatOrgDPOQueryWrapper.clear();
+ rStatOrgDPOQueryWrapper.select("effective_measurement").
+ eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
+ eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
+ eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
+ eq("DATE_FORMAT( data_date ,'%Y-%m-%d')", dataDate);
+ RStatOrgDPO rStatOrgDPO = rStatOrgDMapper.selectOne(rStatOrgDPOQueryWrapper);
+
+ 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;
+ }
+ List transientStatisData = getTransientStatisData(dictData, rMpEventDetailDPOS);
+ RStatEventDPO rStatEventDPO = new RStatEventDPO();
+ rStatEventDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
+ rStatEventDPO.setDataDate(localDate);
+ rStatEventDPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
+ rStatEventDPO.setEventType(dictData.getId());
+ rStatEventDPO.setEventMeasurement(transientStatisData.get(0));
+ rStatEventDPO.setEventCount(transientStatisData.get(1));
+ rStatEventDPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
+ if (Objects.isNull(rStatOrgDPO)) {
+ rStatEventDPO.setEventMeasurementRatio(1.00f);
+ } else {
+ if (rStatOrgDPO.getEffectiveMeasurement() == 0) {
+ rStatEventDPO.setEventMeasurementRatio(1.00f);
+ } else {
+ String value = df.format(rStatEventDPO.getEventMeasurement() / rStatOrgDPO.getEffectiveMeasurement());
+ rStatEventDPO.setEventMeasurementRatio(Float.parseFloat(value));
+ }
+ }
+
+ rStatEventDPOList.add(rStatEventDPO);
+ }
+ );
+ });
+ }
+
+ /*配网*/
+ if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())) {
+ List pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
+ Map> collect = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
+ collect.forEach((k, v) -> {
+ List collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
+
+ rMpEventDetailDPOQueryWrapper.clear();
+ rMpEventDetailDPOQueryWrapper.
+ in("measurement_point_id", collect1).
+ eq("DATE_FORMAT( data_date ,'%Y-%m-%d')", dataDate);
+ List rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper);
+
+ rStatOrgDPOQueryWrapper.clear();
+ rStatOrgDPOQueryWrapper.select("effective_measurement").
+ eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
+ eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
+ eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()).
+ eq("DATE_FORMAT( data_date ,'%Y-%m-%d')", dataDate);
+ RStatOrgDPO rStatOrgDPO = rStatOrgDMapper.selectOne(rStatOrgDPOQueryWrapper);
+
+ 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;
+ }
+ List transientStatisData = getTransientStatisData(dictData, rMpEventDetailDPOS);
+ RStatEventDPO rStatEventDPO = new RStatEventDPO();
+ rStatEventDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
+ rStatEventDPO.setDataDate(localDate);
+ rStatEventDPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
+ rStatEventDPO.setEventType(dictData.getId());
+ rStatEventDPO.setEventMeasurement(transientStatisData.get(0));
+ rStatEventDPO.setEventCount(transientStatisData.get(1));
+ rStatEventDPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
+ if (Objects.isNull(rStatOrgDPO)) {
+ rStatEventDPO.setEventMeasurementRatio(1.00f);
+ } else {
+ if (rStatOrgDPO.getEffectiveMeasurement() == 0) {
+ rStatEventDPO.setEventMeasurementRatio(1.00f);
+ } else {
+ String value = df.format(rStatEventDPO.getEventMeasurement() / rStatOrgDPO.getEffectiveMeasurement());
+ rStatEventDPO.setEventMeasurementRatio(Float.parseFloat(value));
+ }
+ }
+ rStatEventDPOList.add(rStatEventDPO);
+ }
+ );
+ });
+ }
+
+ });
+ if (!CollectionUtils.isEmpty(rStatEventDPOList)) {
+ rStatEventDPOService.saveOrUpdateBatchByMultiId(rStatEventDPOList, 500);
+ }
+ }
+
+ //月表
+ public void rStartEventMHandler(List data, String dataDate, Integer type) {
+ List rStatEventMPOList = new ArrayList<>();
+ DecimalFormat df = new DecimalFormat("0.00");
+ Date date = DateUtil.parse(dataDate);
+ LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+
+ /*获取暂态统计指标*/
+ List eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
+
+ /*获取数据类型*/
+ List dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
+ Map dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
+
+ /*获取监测点类型类型*/
+ List lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
+ Map lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
+
+ //详情表
+ QueryWrapper rMpEventDetailMPOQueryWrapper = new QueryWrapper<>();
+ //org表
+ QueryWrapper rStatOrgMPOQueryWrapper = new QueryWrapper<>();
+ //天表
+ QueryWrapper rStatEventDPOQueryWrapper = new QueryWrapper<>();
+
+ data.forEach(deptGetChildrenMoreDTO -> {
+
+ /*主网*/
+ if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
+ List lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
+ Map> collect = lineBaseList.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).
+ eq("DATE_FORMAT( data_date ,'%Y-%m')", dataDate.substring(0, 7));
+ List rMpEventDetailMPOS = rMpEventDetailMMapper.selectList(rMpEventDetailMPOQueryWrapper);
+
+ rStatOrgMPOQueryWrapper.clear();
+ rStatOrgMPOQueryWrapper.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()).
+ eq("DATE_FORMAT( data_date ,'%Y-%m')", dataDate.substring(0, 7));
+ RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper);
+
+ //天表
+ rStatEventDPOQueryWrapper.clear();
+ rStatEventDPOQueryWrapper.
+ 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);
+
+
+ //求各个类型的平均值
+ Map avgEM = rStatEventDPO.stream()
+ .collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.averagingInt(RStatEventDPO::getEventMeasurement)));
+
+ //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_measurement_ratio
+ Map avgEMR = rStatEventDPO.stream()
+ .collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.averagingDouble(RStatEventDPO::getEventMeasurementRatio)));
+
+
+ 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 = 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));
+ }
+ }
+ rStatEventMPOList.add(rStatEventMPO);
+ });
+ });
+ }
+
+ /*配网*/
+ if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())) {
+ List pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
+ 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).
+ eq("DATE_FORMAT( data_date ,'%Y-%m')", dataDate.substring(0, 7));
+ List rMpEventDetailMPOS = rMpEventDetailMMapper.selectList(rMpEventDetailMPOQueryWrapper);
+
+ rStatOrgMPOQueryWrapper.clear();
+ rStatOrgMPOQueryWrapper.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()).
+ eq("DATE_FORMAT( data_date ,'%Y-%m')", dataDate.substring(0, 7));
+ RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper);
+
+ //天表
+ rStatEventDPOQueryWrapper.clear();
+ rStatEventDPOQueryWrapper.
+ 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);
+
+
+ //求各个类型的平均值
+ Map avgEM = rStatEventDPO.stream()
+ .collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.averagingInt(RStatEventDPO::getEventMeasurement)));
+
+ //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_measurement_ratio
+ Map avgEMR = rStatEventDPO.stream()
+ .collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.averagingDouble(RStatEventDPO::getEventMeasurementRatio)));
+
+
+ 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 = 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));
+ }
+ }
+ rStatEventMPOList.add(rStatEventMPO);
+ });
+ });
+ }
+
+ });
+ if (!CollectionUtils.isEmpty(rStatEventMPOList)) {
+ rStatEventMPOService.saveOrUpdateBatchByMultiId(rStatEventMPOList, 500);
+ }
+ }
+
+ //季表
+ public void rStartEventQHandler(List data, String dataDate, Integer type) {
+ List rStatEventQPOList = new ArrayList<>();
+ DecimalFormat df = new DecimalFormat("0.00");
+ Date date = DateUtil.parse(dataDate);
+ LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+ // 计算季度的开始日期和结束日期
+ 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); // 设置季度开始的日期
+ Date startDate = calendar.getTime(); // 季度开始日期
+ calendar.add(Calendar.MONTH, 2); // 添加两个月,使其到季度结束的月份
+ calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); // 设置季度结束的日期 - 月份最后一天
+ Date endDate = calendar.getTime(); // 季度结束日期
+
+ /*获取暂态统计指标*/
+ List eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
+
+ /*获取数据类型*/
+ List dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
+ Map dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
+
+ /*获取监测点类型类型*/
+ List lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
+ Map lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
+
+ //详情表
+ QueryWrapper rMpEventDetailMPOQueryWrapper = new QueryWrapper<>();
+ //org季表
+ QueryWrapper rStatOrgQPOQueryWrapper = new QueryWrapper<>();
+ //天表
+ QueryWrapper rStatEventDPOQueryWrapper = new QueryWrapper<>();
+ //月表
+ QueryWrapper rStatEventMPOQueryWrapper = new QueryWrapper<>();
+
+ data.forEach(deptGetChildrenMoreDTO -> {
+
+ /*主网*/
+ if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
+ List lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
+ Map> collect = lineBaseList.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).
+ between("data_date", startDate, endDate);
+ List rMpEventDetailMPOS = rMpEventDetailMMapper.selectList(rMpEventDetailMPOQueryWrapper);
+
+ //季表
+ rStatOrgQPOQueryWrapper.clear();
+ rStatOrgQPOQueryWrapper.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);
+ ;
+ RStatOrgQPO rStatOrgQPO = rStatOrgQMapper.selectOne(rStatOrgQPOQueryWrapper);
+
+ //天表
+ 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);
+
+ RStatEventQPO rStatEventQPO = new RStatEventQPO();
+ rStatEventQPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
+ rStatEventQPO.setDataDate(localDate);
+ rStatEventQPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
+ rStatEventQPO.setEventType(dictData.getId());
+ rStatEventQPO.setEventMeasurementAverage(Float.parseFloat(df.format(avgEMM.get(dictData.getId()))));
+ // todo
+ rStatEventQPO.setEventMeasurementAccrued(statisData);
+ rStatEventQPO.setEventCount(sumECM.get(dictData.getId()));
+ rStatEventQPO.setEventMeasurementRatioAverage(Float.parseFloat(df.format(avgEMRM.get(dictData.getId()))));
+ rStatEventQPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
+
+ if (sumEM.get(dictData.getId()) == 0) {
+ rStatEventQPO.setEventFreq(1.00f);
+ } else {
+ String value = df.format(sumEC.get(dictData.getId()) / sumEM.get(dictData.getId()));
+ rStatEventQPO.setEventFreq(Float.parseFloat(value));
+ }
+ if (Objects.isNull(rStatOrgQPO)) {
+ rStatEventQPO.setEventMeasurementRatioAccrued(1.00f);
+ } else {
+ if (rStatOrgQPO.getEffectiveMeasurementAccrued() == 0) {
+ rStatEventQPO.setEventMeasurementRatioAccrued(1.00f);
+ } else {
+ String value = df.format(statisData / rStatOrgQPO.getEffectiveMeasurementAccrued());
+ rStatEventQPO.setEventMeasurementRatioAccrued(Float.parseFloat(value));
+ }
+ }
+ rStatEventQPOList.add(rStatEventQPO);
+ });
+ });
+ }
+
+ /*配网*/
+ if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())) {
+ List pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
+ 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).
+ between("data_date", startDate, endDate);
+ List rMpEventDetailMPOS = rMpEventDetailMMapper.selectList(rMpEventDetailMPOQueryWrapper);
+
+ //季表
+ rStatOrgQPOQueryWrapper.clear();
+ rStatOrgQPOQueryWrapper.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);
+ ;
+ RStatOrgQPO rStatOrgQPO = rStatOrgQMapper.selectOne(rStatOrgQPOQueryWrapper);
+
+ //天表
+ rStatEventDPOQueryWrapper.clear();
+ rStatEventDPOQueryWrapper.
+ in("measurement_point_id", collect1).
+ 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.
+ in("measurement_point_id", collect1).
+ 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);
+
+ RStatEventQPO rStatEventQPO = new RStatEventQPO();
+ rStatEventQPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
+ rStatEventQPO.setDataDate(localDate);
+ rStatEventQPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
+ rStatEventQPO.setEventType(dictData.getId());
+ rStatEventQPO.setEventMeasurementAverage(Float.parseFloat(df.format(avgEMM.get(dictData.getId()))));
+ // todo
+ rStatEventQPO.setEventMeasurementAccrued(statisData);
+ rStatEventQPO.setEventCount(sumECM.get(dictData.getId()));
+ rStatEventQPO.setEventMeasurementRatioAverage(Float.parseFloat(df.format(avgEMRM.get(dictData.getId()))));
+ rStatEventQPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
+
+ if (sumEM.get(dictData.getId()) == 0) {
+ rStatEventQPO.setEventFreq(1.00f);
+ } else {
+ String value = df.format(sumEC.get(dictData.getId()) / sumEM.get(dictData.getId()));
+ rStatEventQPO.setEventFreq(Float.parseFloat(value));
+ }
+ if (Objects.isNull(rStatOrgQPO)) {
+ rStatEventQPO.setEventMeasurementRatioAccrued(1.00f);
+ } else {
+ if (rStatOrgQPO.getEffectiveMeasurementAccrued() == 0) {
+ rStatEventQPO.setEventMeasurementRatioAccrued(1.00f);
+ } else {
+ String value = df.format(statisData / rStatOrgQPO.getEffectiveMeasurementAccrued());
+ rStatEventQPO.setEventMeasurementRatioAccrued(Float.parseFloat(value));
+ }
+ }
+ rStatEventQPOList.add(rStatEventQPO);
+ });
+ });
+ }
+
+ });
+ if (!CollectionUtils.isEmpty(rStatEventQPOList)) {
+ rStatEventQPOService.saveOrUpdateBatchByMultiId(rStatEventQPOList, 500);
+ }
+ }
+
+ //年表
+ public void rStartEventYHandler(List data, String dataDate, Integer type) {
+ List rStatEventDPOList = new ArrayList<>();
+ DecimalFormat df = new DecimalFormat("0.00");
+ Date date = DateUtil.parse(dataDate);
+ LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+
+ /*获取暂态统计指标*/
+ List eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
+
+ /*获取数据类型*/
+ List dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
+ Map dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
+
+ /*获取监测点类型类型*/
+ 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<>();
+
+ data.forEach(deptGetChildrenMoreDTO -> {
+
+ /*主网*/
+ if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
+ List lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
+ Map> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
+ collect.forEach((k, v) -> {
+ List collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
+
+ });
+ }
+
+ /*配网*/
+ if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())) {
+ List pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
+ Map> collect = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
+ collect.forEach((k, v) -> {
+ List collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
+
+ });
+ }
+
+ });
+ if (!CollectionUtils.isEmpty(rStatEventDPOList)) {
+ rStatEventDPOService.saveOrUpdateBatchByMultiId(rStatEventDPOList, 500);
+ }
+ }
+
+ //获取监测点类型 1/2/3类字典id
+ private String getmeasurementType(Integer k, Map lineSortMap) {
+ String value = "";
+ switch (k) {
+ case 1:
+ value = lineSortMap.get(DicDataEnum.ONE_LINE.getCode()).getId();
+ break;
+ case 2:
+ value = lineSortMap.get(DicDataEnum.TWO_LINE.getCode()).getId();
+ break;
+ case 3:
+ value = lineSortMap.get(DicDataEnum.THREE_LINE.getCode()).getId();
+ break;
+ default:
+ break;
+ }
+ return value;
+ }
+
+ //获取暂态各个类型发生的监测点数量及发生次数
+ private List getTransientStatisData(DictData dictData, List list) {
+ List result = new ArrayList<>(2);
+ Integer value = 0;
+ Integer count = 0;
+ if (Objects.equals(dictData.getCode(), DicDataEnum.VOLTAGE_DIP.getCode())) {
+ value = Integer.valueOf(list.stream().filter(temp -> temp.getSagTimes() > 0).count() + "");
+ count = Integer.valueOf(list.stream().mapToInt(RMpEventDetailDPO::getSagTimes).sum() + "");
+ }
+ if (Objects.equals(dictData.getCode(), DicDataEnum.VOLTAGE_RISE.getCode())) {
+ value = Integer.valueOf(list.stream().filter(temp -> temp.getSwellTimes() > 0).count() + "");
+ count = Integer.valueOf(list.stream().mapToInt(RMpEventDetailDPO::getSwellTimes).sum() + "");
+ }
+ if (Objects.equals(dictData.getCode(), DicDataEnum.SHORT_INTERRUPTIONS.getCode())) {
+ value = Integer.valueOf(list.stream().filter(temp -> temp.getInterruptTimes() > 0).count() + "");
+ count = Integer.valueOf(list.stream().mapToInt(RMpEventDetailDPO::getInterruptTimes).sum() + "");
+ }
+ result.add(value);
+ result.add(count);
+ return result;
+
+ }
+
+ //获取暂态各个类型发生的监测点数量
+ private Integer getStatisData(DictData dictData, 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() + "");
+ }
+ if (Objects.equals(dictData.getCode(), DicDataEnum.VOLTAGE_RISE.getCode())) {
+ value = Integer.valueOf(list.stream().filter(temp -> temp.getSwellTimes() > 0).count() + "");
+ }
+ if (Objects.equals(dictData.getCode(), DicDataEnum.SHORT_INTERRUPTIONS.getCode())) {
+ value = Integer.valueOf(list.stream().filter(temp -> temp.getInterruptTimes() > 0).count() + "");
+ }
+
+ return value;
+
+ }
+
+ //季表(月表相同id去重)
+ private Integer getStatisQData(DictData dictData, List list) {
+ Integer value = 0;
+ if (Objects.equals(dictData.getCode(), DicDataEnum.VOLTAGE_DIP.getCode())) {
+ Map idToObjectMap = list.stream()
+ .filter(obj -> obj.getSagTimes() > 0) // 筛选count大于0的对象
+ .collect(Collectors.toMap(RMpEventDetailMPO::getMeasurementPointId, Function.identity(),
+ (existing, replacement) -> existing.getSagTimes() > 0 ? existing : replacement)); // 对id去重,仅保留计数大于0的对象
+ for (RMpEventDetailMPO obj : idToObjectMap.values()) {
+ value += (obj.getSagTimes() > 0 ? 1 : 0);
+ }
+ }
+ if (Objects.equals(dictData.getCode(), DicDataEnum.VOLTAGE_RISE.getCode())) {
+ Map idToObjectMap = list.stream()
+ .filter(obj -> obj.getSwellTimes() > 0) // 筛选count大于0的对象
+ .collect(Collectors.toMap(RMpEventDetailMPO::getMeasurementPointId, Function.identity(),
+ (existing, replacement) -> existing.getSwellTimes() > 0 ? existing : replacement)); // 对id去重,仅保留计数大于0的对象
+ for (RMpEventDetailMPO obj : idToObjectMap.values()) {
+ value += (obj.getSwellTimes() > 0 ? 1 : 0);
+ }
+ }
+ if (Objects.equals(dictData.getCode(), DicDataEnum.SHORT_INTERRUPTIONS.getCode())) {
+ Map idToObjectMap = list.stream()
+ .filter(obj -> obj.getInterruptTimes() > 0) // 筛选count大于0的对象
+ .collect(Collectors.toMap(RMpEventDetailMPO::getMeasurementPointId, Function.identity(),
+ (existing, replacement) -> existing.getInterruptTimes() > 0 ? existing : replacement)); // 对id去重,仅保留计数大于0的对象
+ for (RMpEventDetailMPO obj : idToObjectMap.values()) {
+ value += (obj.getInterruptTimes() > 0 ? 1 : 0);
+ }
+ }
+
+ return value;
+
+ }
+}