From cb04e33a6ac53086270e86e6fc96126e9b9bece5 Mon Sep 17 00:00:00 2001 From: zhangbaojian <1065122561@qq.com> Date: Fri, 9 Jun 2023 11:16:11 +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=E6=97=A5/=E6=9C=88/=E5=AD=A3=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/RStatEventMPO.java | 54 ++ .../harmonic/pojo/po/RStatEventQPO.java | 54 ++ .../prepare/harmonic/pojo/po/RStatOrgQPO.java | 85 ++ ...troller.java => RStatEventController.java} | 22 +- .../mapper/mysql/area/RStatOrgQMapper.java | 18 + ...tDMapper.java => RStatEventMPOMapper.java} | 5 +- .../mysql/newalgorithm/RStatEventMapper.java | 15 + .../newalgorithm/RStatEventQPOMapper.java | 17 + ...tEventDMapper.xml => RStatEventMapper.xml} | 2 +- .../newalgorithm/RStatEventDService.java | 18 - .../newalgorithm/RStatEventMPOService.java | 14 + .../newalgorithm/RStatEventQPOService.java | 14 + .../mysql/newalgorithm/RStatEventService.java | 16 + .../impl/RStatEventDServiceImpl.java | 228 ----- .../impl/RStatEventMPOServiceImpl.java | 24 + .../impl/RStatEventQPOServiceImpl.java | 24 + .../impl/RStatEventServiceImpl.java | 846 ++++++++++++++++++ 17 files changed, 1196 insertions(+), 260 deletions(-) create mode 100644 pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatEventMPO.java create mode 100644 pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatEventQPO.java create mode 100644 pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/RStatOrgQPO.java rename pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/newalgorithm/{RStatEventDController.java => RStatEventController.java} (80%) create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/RStatOrgQMapper.java rename pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/{RStatEventDMapper.java => RStatEventMPOMapper.java} (64%) create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatEventMapper.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/RStatEventQPOMapper.java rename pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/newalgorithm/mapping/{RStatEventDMapper.xml => RStatEventMapper.xml} (89%) delete mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatEventDService.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatEventMPOService.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatEventQPOService.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/RStatEventService.java delete mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventDServiceImpl.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventMPOServiceImpl.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventQPOServiceImpl.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/newalgorithm/impl/RStatEventServiceImpl.java 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; + + } +}