From f934dc8336c07b6095c3169917e1b7e203c8a06b Mon Sep 17 00:00:00 2001 From: huangzj <826100833@qq.com> Date: Tue, 14 Nov 2023 13:12:36 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=97=E6=B3=95=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../harmonic/pojo/po/RMpPollutionDPO.java | 5 +- .../njcn/harmonic/pojo/po/RStatOrgDPO.java | 4 +- .../njcn/harmonic/pojo/po/RStatOrgMPO.java | 3 +- .../pojo/po/RStatPollutionOrgDPO.java | 3 +- .../pojo/po/RStatPollutionOrgMPO.java | 3 +- .../pojo/po/RStatPollutionOrgQPO.java | 3 +- .../pojo/po/RStatPollutionOrgYPO.java | 3 +- .../pojo/po/RStatPollutionSubstationDPO.java | 3 +- .../pojo/po/RStatPollutionSubstationM.java | 3 +- .../pojo/po/RStatPollutionSubstationQPO.java | 3 +- .../pojo/po/RStatPollutionSubstationYPO.java | 3 +- .../harmonic/pojo/mysql/po/RStatOrgQPO.java | 4 +- .../harmonic/pojo/mysql/po/RStatOrgYPO.java | 4 +- .../com/njcn/prepare/ExecutionCenter.java | 56 +- .../prepare/executor/MeasurementExecutor.java | 21 + .../prepare/executor/OrgPointExecutor.java | 78 ++ .../prepare/executor/SubStationExecutor.java | 65 ++ .../controller/area/AreaCountController.java | 1 + .../controller/line/PollutionController.java | 1 + .../mysql/Impl/area/AreaCountServiceImpl.java | 10 +- .../mysql/Impl/area/RStatOrgServiceImpl.java | 988 +++++++++++++++++- .../mysql/Impl/line/PollutionServiceImpl.java | 275 ++++- .../Impl/line/RMpPassRateDServiceImpl.java | 16 +- .../line/ROperatingMonitorDServiceImpl.java | 6 +- .../service/mysql/area/AreaCountService.java | 1 + .../service/mysql/area/RStatOrgService.java | 9 + .../service/mysql/line/PollutionService.java | 20 + 27 files changed, 1537 insertions(+), 54 deletions(-) create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/SubStationExecutor.java diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RMpPollutionDPO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RMpPollutionDPO.java index e70b445f5..ac662c121 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RMpPollutionDPO.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RMpPollutionDPO.java @@ -9,6 +9,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; +import java.time.LocalDate; import java.util.Date; /** @@ -34,7 +35,7 @@ public class RMpPollutionDPO implements Serializable { * 单位id */ @TableField(value = "line_id") - @ApiModelProperty(value = "单位id") + @ApiModelProperty(value = "监测点") private String lineId; /** @@ -42,7 +43,7 @@ public class RMpPollutionDPO implements Serializable { */ @TableField(value = "data_date") @ApiModelProperty(value = "时间") - private Date dataDate; + private LocalDate dataDate; /** * 污区图统计类型 diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatOrgDPO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatOrgDPO.java index 241eedcfd..db63333ac 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatOrgDPO.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatOrgDPO.java @@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import lombok.Data; +import org.apache.tomcat.jni.Local; +import java.time.LocalDate; import java.util.Date; /** @@ -33,7 +35,7 @@ public class RStatOrgDPO { * 生成数据的时间,每天统计一次 */ @MppMultiId(value = "data_date") - private Date dataDate; + private LocalDate dataDate; /** * 监测点类别ID、监测对象类型ID diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatOrgMPO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatOrgMPO.java index 22dfd0574..2da39bcbb 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatOrgMPO.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatOrgMPO.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import lombok.Data; +import java.time.LocalDate; import java.util.Date; /** @@ -38,7 +39,7 @@ public class RStatOrgMPO { * 生成数据的时间,每月统计一次 */ @MppMultiId(value = "data_date") - private Date dataDate; + private LocalDate dataDate; /** * 监测点类别ID、监测对象类型ID diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionOrgDPO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionOrgDPO.java index 82d5eecae..565ac0128 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionOrgDPO.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionOrgDPO.java @@ -9,6 +9,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; +import java.time.LocalDate; import java.util.Date; /** @@ -42,7 +43,7 @@ public class RStatPollutionOrgDPO implements Serializable { */ @TableField(value = "data_date") @ApiModelProperty(value="时间") - private Date dataDate; + private LocalDate dataDate; /** * 污区图统计类型 diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionOrgMPO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionOrgMPO.java index 6106d18ee..99369f6e8 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionOrgMPO.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionOrgMPO.java @@ -9,6 +9,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; +import java.time.LocalDate; import java.util.Date; /** @@ -42,7 +43,7 @@ public class RStatPollutionOrgMPO implements Serializable { */ @TableField(value = "data_date") @ApiModelProperty(value="时间") - private Date dataDate; + private LocalDate dataDate; /** * 污区图统计类型 diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionOrgQPO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionOrgQPO.java index eb651db42..c1db8e4ad 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionOrgQPO.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionOrgQPO.java @@ -9,6 +9,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; +import java.time.LocalDate; import java.util.Date; /** @@ -42,7 +43,7 @@ public class RStatPollutionOrgQPO implements Serializable { */ @TableField(value = "data_date") @ApiModelProperty(value="时间") - private Date dataDate; + private LocalDate dataDate; /** * 污区图统计类型 diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionOrgYPO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionOrgYPO.java index 8e876bada..2986d0a31 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionOrgYPO.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionOrgYPO.java @@ -9,6 +9,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; +import java.time.LocalDate; import java.util.Date; /** @@ -42,7 +43,7 @@ public class RStatPollutionOrgYPO implements Serializable { */ @TableField(value = "data_date") @ApiModelProperty(value="时间") - private Date dataDate; + private LocalDate dataDate; /** * 污区图统计类型 diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionSubstationDPO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionSubstationDPO.java index f9ee65654..45db0664c 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionSubstationDPO.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionSubstationDPO.java @@ -9,6 +9,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; +import java.time.LocalDate; import java.util.Date; /** @@ -42,7 +43,7 @@ public class RStatPollutionSubstationDPO implements Serializable { */ @TableField(value = "data_date") @ApiModelProperty(value="时间") - private Date dataDate; + private LocalDate dataDate; /** * 污区图统计类型 diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionSubstationM.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionSubstationM.java index 48644cf4e..74e42b10f 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionSubstationM.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionSubstationM.java @@ -9,6 +9,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; +import java.time.LocalDate; import java.util.Date; /** @@ -42,7 +43,7 @@ public class RStatPollutionSubstationM implements Serializable { */ @TableField(value = "data_date") @ApiModelProperty(value = "时间") - private Date dataDate; + private LocalDate dataDate; /** * 污区图统计类型 diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionSubstationQPO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionSubstationQPO.java index 5aec94dab..6adc394e5 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionSubstationQPO.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionSubstationQPO.java @@ -9,6 +9,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; +import java.time.LocalDate; import java.util.Date; /** @@ -42,7 +43,7 @@ public class RStatPollutionSubstationQPO implements Serializable { */ @TableField(value = "data_date") @ApiModelProperty(value="时间") - private Date dataDate; + private LocalDate dataDate; /** * 污区图统计类型 diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionSubstationYPO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionSubstationYPO.java index d1978e1ee..97c06fcff 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionSubstationYPO.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatPollutionSubstationYPO.java @@ -9,6 +9,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; +import java.time.LocalDate; import java.util.Date; /** @@ -42,7 +43,7 @@ public class RStatPollutionSubstationYPO implements Serializable { */ @TableField(value = "data_date") @ApiModelProperty(value="时间") - private Date dataDate; + private LocalDate dataDate; /** * 污区图统计类型 diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/po/RStatOrgQPO.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/po/RStatOrgQPO.java index 513487ca9..4d97c7e1a 100644 --- a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/po/RStatOrgQPO.java +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/po/RStatOrgQPO.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; + +import java.time.LocalDate; import java.util.Date; import com.github.jeffreyning.mybatisplus.anno.MppMultiId; @@ -30,7 +32,7 @@ public class RStatOrgQPO { * 生成数据的时间,每季统计一次 */ @MppMultiId(value = "data_date") - private Date dataDate; + private LocalDate dataDate; /** * 监测点类别ID、监测对象类型ID diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/po/RStatOrgYPO.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/po/RStatOrgYPO.java index 4ca8b711d..1a611e65c 100644 --- a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/po/RStatOrgYPO.java +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/po/RStatOrgYPO.java @@ -2,6 +2,8 @@ package com.njcn.prepare.harmonic.pojo.mysql.po; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; + +import java.time.LocalDate; import java.util.Date; import com.github.jeffreyning.mybatisplus.anno.MppMultiId; @@ -28,7 +30,7 @@ public class RStatOrgYPO { * 生成数据的时间,每年统计一次 */ @MppMultiId(value = "data_date") - private Date dataDate; + private LocalDate dataDate; /** * 监测点类别ID、监测对象类型ID diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/ExecutionCenter.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/ExecutionCenter.java index fa63721c5..9802e7af6 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/ExecutionCenter.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/ExecutionCenter.java @@ -16,6 +16,8 @@ import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; import com.njcn.device.biz.commApi.CommTerminalGeneralClient; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; +import com.njcn.device.biz.pojo.dto.DeptGetSubStationDTO; +import com.njcn.device.biz.pojo.dto.LineDevGetDTO; import com.njcn.device.biz.pojo.param.DeptGetLineParam; import com.njcn.prepare.bo.BaseParam; import com.njcn.prepare.bo.CalculatedParam; @@ -34,7 +36,7 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.util.CollectionUtils; +import org.apache.commons.collections.CollectionUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -43,10 +45,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.time.LocalDateTime; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -191,4 +190,51 @@ public class ExecutionCenter extends BaseController { } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @ApiOperation("变电站算法执行链") + @PostMapping("/substationExecutor") + public void substationExecutor(@RequestBody BaseParam baseParam) { + String methodDescribe = getMethodDescribe("substationExecutor"); + //手动判断参数是否合法, + CalculatedParam calculatedParam = judgeExecuteParam(baseParam); + // 测点索引 + DeptGetLineParam deptGetLineParam = new DeptGetLineParam(); + + if (CollectionUtils.isEmpty(calculatedParam.getIdList())) { + Dept data = deptFeignClient.getRootDept().getData(); + deptGetLineParam.setDeptId(data.getId()); + List data1 = commTerminalGeneralClient.deptSubStation(deptGetLineParam).getData(); + List stationIds = new ArrayList<>(); + for (DeptGetSubStationDTO deptGetSubStationDTO : data1) { + Collection union = CollectionUtils.union(Optional.ofNullable(deptGetSubStationDTO.getStationIds()).orElse(new ArrayList()), + Optional.ofNullable(deptGetSubStationDTO.getStationIds()).orElse(new ArrayList())); + List collect = union.stream().distinct().collect(Collectors.toList()); + stationIds.addAll(collect); + } + stationIds = stationIds.stream().distinct().collect(Collectors.toList()); + calculatedParam.setIdList(stationIds); + } + LiteflowResponse liteflowResponse; + if (baseParam.isRepair()) { + //补招时,起始日期、截止日期必填 + DateTime startDate = DateUtil.parse(baseParam.getBeginTime(), DatePattern.NORM_DATE_FORMAT); + DateTime endDate = DateUtil.parse(baseParam.getEndTime(), DatePattern.NORM_DATE_FORMAT); + long betweenDay = DateUtil.betweenDay(startDate, endDate, true); + //递增日期执行算法链 + for (int i = 0; i < betweenDay; i++) { + if (i != 0) { + startDate = DateUtil.offsetDay(startDate, 1); + } + calculatedParam.setDataDate(DateUtil.format(startDate, DatePattern.NORM_DATE_PATTERN)); + liteflowResponse = flowExecutor.execute2Resp("sub_station", calculatedParam); + dealResponse(calculatedParam, liteflowResponse, methodDescribe); + } + } else { + //非补招 + liteflowResponse = flowExecutor.execute2Resp("sub_station", calculatedParam); + dealResponse(calculatedParam, liteflowResponse, methodDescribe); + } + + } + } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/MeasurementExecutor.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/MeasurementExecutor.java index 952f52bdb..8853b6008 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/MeasurementExecutor.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/MeasurementExecutor.java @@ -3,6 +3,10 @@ package com.njcn.prepare.executor; import com.njcn.prepare.bo.CalculatedParam; import com.njcn.prepare.harmonic.service.mysql.area.IRMpMonitorAlarmCountMService; import com.njcn.prepare.harmonic.service.mysql.area.RMpTargetWarnDService; +import com.njcn.prepare.harmonic.service.mysql.line.DayDataService; +import com.njcn.prepare.harmonic.service.mysql.line.RMpEventDetailDService; +import com.njcn.prepare.harmonic.service.mysql.line.RMpEventDetailService; +import com.njcn.prepare.harmonic.service.mysql.line.RMpMonitorEvaluateDService; import com.njcn.prepare.harmonic.service.mysql.line.*; import com.yomahub.liteflow.annotation.LiteflowComponent; import com.yomahub.liteflow.annotation.LiteflowMethod; @@ -44,6 +48,7 @@ public class MeasurementExecutor extends BaseExecutor { private final RMpTargetWarnDService rMpTargetWarnDService; private final IRMpMonitorAlarmCountMService rMpMonitorAlarmCountMService; + private final PollutionService pollutionService; /** * 算法名: 3.3.1.1-----监测点评价 @@ -162,6 +167,22 @@ public class MeasurementExecutor extends BaseExecutor { } } + /* + * 3.4.1.12. 监测点污区图(新增) + * + * */ + @LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rMpPollutionD", nodeType = NodeTypeEnum.COMMON) + public boolean processRMpPollutionDEvaluateAccess(NodeComponent bindCmp) { + return isAccess(bindCmp); + } + @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rMpPollutionD", nodeType = NodeTypeEnum.COMMON) + public void processRMpPollutionDEvaluateProcess(NodeComponent bindCmp) { + CalculatedParam calculatedParam = bindCmp.getRequestData(); + + pollutionService.handleDay(calculatedParam); + } + + /********************************************算法负责人:xy***********************************************************/ /** diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/OrgPointExecutor.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/OrgPointExecutor.java index cb11c6467..21e91dc38 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/OrgPointExecutor.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/OrgPointExecutor.java @@ -2,6 +2,8 @@ package com.njcn.prepare.executor; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; import com.njcn.prepare.bo.CalculatedParam; +import com.njcn.prepare.harmonic.service.mysql.area.RStatOrgService; +import com.njcn.prepare.harmonic.service.mysql.line.PollutionService; import com.njcn.prepare.harmonic.service.mysql.newalgorithm.ROperatingIndexService; import com.yomahub.liteflow.annotation.LiteflowComponent; import com.yomahub.liteflow.annotation.LiteflowMethod; @@ -22,6 +24,9 @@ import lombok.RequiredArgsConstructor; public class OrgPointExecutor extends BaseExecutor{ private final ROperatingIndexService rOperatingIndexService; + private final RStatOrgService rStatOrgService; + + private final PollutionService pollutionService; /** @@ -54,4 +59,77 @@ public class OrgPointExecutor extends BaseExecutor{ } } } + + /** + * + * 3.4.2. 单位监测点统计 + */ + + @LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rStatOrg", nodeType = NodeTypeEnum.COMMON) + public boolean processRStatOrgAccess(NodeComponent bindCmp) { + return isAccess(bindCmp); + } + @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rStatOrg", nodeType = NodeTypeEnum.COMMON) + public void processRStatOrgProcess(NodeComponent bindCmp) { + String tag = bindCmp.getTag(); + CalculatedParam calculatedParam = bindCmp.getRequestData(); + if (tag.equalsIgnoreCase("r_stat_org_d")) { + //日表 + rStatOrgService.handleDay(calculatedParam); + } else if (tag.equalsIgnoreCase("r_stat_org_m")) { + //数据补招不执行非日表算法 + if (!calculatedParam.isRepair()) { + //月表 + rStatOrgService.handleMonth(calculatedParam); + } + }else if (tag.equalsIgnoreCase("r_stat_org_q")) { + //数据补招不执行非日表算法 + if (!calculatedParam.isRepair()) { + //季表 + rStatOrgService.handleQtr(calculatedParam); + } + }else if (tag.equalsIgnoreCase("r_stat_org_y")) { + //数据补招不执行非日表算法 + if (!calculatedParam.isRepair()) { + //年表 + rStatOrgService.handleYear(calculatedParam); + } + } + } + + /** + * 3.4.16. 单位污区图统计(新增) + * + */ + @LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rStatPollutionOrg", nodeType = NodeTypeEnum.COMMON) + public boolean processRStatPollutionOrgAccess(NodeComponent bindCmp) { + return isAccess(bindCmp); + } + @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rStatPollutionOrg", nodeType = NodeTypeEnum.COMMON) + public void processRStatPollutionOrgProcess(NodeComponent bindCmp) { + String tag = bindCmp.getTag(); + CalculatedParam calculatedParam = bindCmp.getRequestData(); + if (tag.equalsIgnoreCase("r_stat_pollution_org_d")) { + //日表 + pollutionService.handleOrgDay(calculatedParam); + } else if (tag.equalsIgnoreCase("r_stat_pollution_org_m")) { + //数据补招不执行非日表算法 + if (!calculatedParam.isRepair()) { + //月表 + pollutionService.handleOrgMonth(calculatedParam); + } + }else if (tag.equalsIgnoreCase("r_stat_pollution_org_q")) { + //数据补招不执行非日表算法 + if (!calculatedParam.isRepair()) { + //季表 + pollutionService.handleOrgQtr(calculatedParam); + } + }else if (tag.equalsIgnoreCase("r_stat_pollution_org_y")) { + //数据补招不执行非日表算法 + if (!calculatedParam.isRepair()) { + //年表 + pollutionService.handleOrgYear(calculatedParam); + } + } + } } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/SubStationExecutor.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/SubStationExecutor.java new file mode 100644 index 000000000..22370f29f --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/SubStationExecutor.java @@ -0,0 +1,65 @@ +package com.njcn.prepare.executor; + +import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; +import com.njcn.device.biz.pojo.dto.DeptGetSubStationDTO; +import com.njcn.prepare.bo.CalculatedParam; +import com.njcn.prepare.harmonic.service.mysql.area.RStatOrgService; +import com.njcn.prepare.harmonic.service.mysql.line.PollutionService; +import com.njcn.prepare.harmonic.service.mysql.newalgorithm.ROperatingIndexService; +import com.yomahub.liteflow.annotation.LiteflowComponent; +import com.yomahub.liteflow.annotation.LiteflowMethod; +import com.yomahub.liteflow.core.NodeComponent; +import com.yomahub.liteflow.enums.LiteFlowMethodEnum; +import com.yomahub.liteflow.enums.NodeTypeEnum; +import lombok.RequiredArgsConstructor; + +/** + * Description: + * Date: 2023/11/10 10:39【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@LiteflowComponent +@RequiredArgsConstructor +public class SubStationExecutor extends BaseExecutor{ + + private final PollutionService pollutionService; + + + /** + * 3.4.15. 变电站污区图统计(新增) + * + */ + @LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rStatPollutionSubstation", nodeType = NodeTypeEnum.COMMON) + public boolean processRStatPollutionSubstationAccess(NodeComponent bindCmp) { + return isAccess(bindCmp); + } + @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rStatPollutionSubstation", nodeType = NodeTypeEnum.COMMON) + public void processRStatPollutionSubstationProcess(NodeComponent bindCmp) { + String tag = bindCmp.getTag(); + CalculatedParam calculatedParam = bindCmp.getRequestData(); + if (tag.equalsIgnoreCase("r_stat_pollution_substation_d")) { + //日表 + pollutionService.handleSubstationDay(calculatedParam); + } else if (tag.equalsIgnoreCase("r_stat_pollution_substation_m")) { + //数据补招不执行非日表算法 + if (!calculatedParam.isRepair()) { + //月表 + pollutionService.handleSubstationMonth(calculatedParam); + } + }else if (tag.equalsIgnoreCase("r_stat_pollution_substation_q")) { + //数据补招不执行非日表算法 + if (!calculatedParam.isRepair()) { + //季表 + pollutionService.handleSubstationQtr(calculatedParam); + } + }else if (tag.equalsIgnoreCase("r_stat_pollution_substation_y")) { + //数据补招不执行非日表算法 + if (!calculatedParam.isRepair()) { + //年表 + pollutionService.handleSubstationYear(calculatedParam); + } + } + } +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/area/AreaCountController.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/area/AreaCountController.java index d9d7b8670..dd5bb177c 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/area/AreaCountController.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/area/AreaCountController.java @@ -40,6 +40,7 @@ import java.util.stream.Collectors; @RestController @RequestMapping("AreaCount") @RequiredArgsConstructor +@Deprecated public class AreaCountController extends BaseController { private final DeptFeignClient deptFeignClient; diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/line/PollutionController.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/line/PollutionController.java index b88278401..2fce0014b 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/line/PollutionController.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/line/PollutionController.java @@ -37,6 +37,7 @@ import java.util.List; @RestController @RequestMapping("/pollution") @RequiredArgsConstructor +@Deprecated public class PollutionController extends BaseController { private final PollutionService pollutionService; diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/AreaCountServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/AreaCountServiceImpl.java index 5f6d84c7b..90ce970ff 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/AreaCountServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/AreaCountServiceImpl.java @@ -26,6 +26,7 @@ import org.springframework.util.StringUtils; import java.math.BigDecimal; import java.text.SimpleDateFormat; +import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; @@ -41,6 +42,7 @@ import static com.njcn.system.pojo.constant.DicDataConstant.SPLIT_SIGN; * @version V1.0.0 */ @Service +@Deprecated public class AreaCountServiceImpl implements AreaCountService { @@ -155,7 +157,7 @@ public class AreaCountServiceImpl implements AreaCountService { RStatOrgMPO rStatOrgMPO = new RStatOrgMPO ( ); rStatOrgMPO.setOrgNo (orgid); rStatOrgMPO.setMeasurementTypeClass (entry.getKey ( )); - rStatOrgMPO.setDataDate (tempDate); + rStatOrgMPO.setDataDate (LocalDate.parse(dataDate)); rStatOrgMPO.setDataType ("01"); rStatOrgMPO.setHarmonicMeasurementAccrued (integer); rStatOrgMPOList.add (rStatOrgMPO); @@ -220,7 +222,7 @@ public class AreaCountServiceImpl implements AreaCountService { RStatOrgDPO rStatOrgDPO = new RStatOrgDPO ( ); rStatOrgDPO.setOrgNo (orgid); rStatOrgDPO.setMeasurementTypeClass (entry.getKey ( )); - rStatOrgDPO.setDataDate (tempDate); + rStatOrgDPO.setDataDate (LocalDate.parse(dataDate)); rStatOrgDPO.setDataType ("01"); rStatOrgDPO.setEffectiveMeasurement (integer); rStatOrgDPOList.add (rStatOrgDPO); @@ -254,7 +256,7 @@ public class AreaCountServiceImpl implements AreaCountService { Integer integer = rMpTargetWarnDService.queryHarmonicMeasurementAccrued (monitorIdList, dataDate); rStatOrgMPO.setOrgNo (orgid); rStatOrgMPO.setMeasurementTypeClass (lineTypeId); - rStatOrgMPO.setDataDate (tempDate); + rStatOrgMPO.setDataDate (LocalDate.parse(dataDate)); rStatOrgMPO.setDataType ("02"); rStatOrgMPO.setHarmonicMeasurementAccrued (integer); return rStatOrgMPO; @@ -278,7 +280,7 @@ public class AreaCountServiceImpl implements AreaCountService { Integer integer = this.queryEffectiveAccessMeasurementCount (monitorIdList, dataDate); rStatOrgDPO.setOrgNo (orgid); rStatOrgDPO.setMeasurementTypeClass (lineTypeId); - rStatOrgDPO.setDataDate (tempDate); + rStatOrgDPO.setDataDate (LocalDate.parse(dataDate)); rStatOrgDPO.setDataType ("02"); rStatOrgDPO.setEffectiveMeasurement (integer); diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/RStatOrgServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/RStatOrgServiceImpl.java index e35069582..7a79201a2 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/RStatOrgServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/RStatOrgServiceImpl.java @@ -1,13 +1,14 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.area; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.date.LocalDateTimeUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; import com.njcn.device.biz.pojo.dto.LineDevGetDTO; -import com.njcn.harmonic.pojo.po.RMpEventDetailDPO; -import com.njcn.harmonic.pojo.po.RMpTargetWarnDPO; -import com.njcn.harmonic.pojo.po.RStatOrgDPO; -import com.njcn.harmonic.pojo.po.RStatOrgMPO; +import com.njcn.harmonic.pojo.po.*; +import com.njcn.prepare.bo.CalculatedParam; import com.njcn.prepare.harmonic.mapper.mysql.area.RMpTargetWarnDMapper; import com.njcn.prepare.harmonic.mapper.mysql.line.*; import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO; @@ -90,9 +91,969 @@ public class RStatOrgServiceImpl implements RStatOrgService { } } + @Override + public void handleDay(CalculatedParam calculatedParam) { + List rStatOrgDPOList = new ArrayList<>(); + + + LocalDate localDate = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN); /*获取监测点类型类型*/ + /*获取数据类型*/ + + 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 rOperatingMonitorDPOQueryWrapper = new QueryWrapper<>(); + QueryWrapper rmpTargetWarnDPOQueryWrapper = new QueryWrapper<>(); + QueryWrapper rMpEventDetailDPOQueryWrapper = new QueryWrapper<>(); + + + for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : calculatedParam.getIdList()) { + if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) { + List lineBaseList = deptGetChildrenMoreDTO.getLineBaseList(); + Map> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag)); + collect.forEach((k, v)->{ + + List collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); + RStatOrgDPO rStatOrgDPO = new RStatOrgDPO(); + rStatOrgDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); + rStatOrgDPO.setDataDate(localDate); + rStatOrgDPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()); + rStatOrgDPO.setMeasurementTypeClass(k); + rStatOrgDPO.setAllCount(v.size()); + /*2、接入有效监测点数*/ + rOperatingMonitorDPOQueryWrapper.clear(); + rOperatingMonitorDPOQueryWrapper.select("1"). + in("measurement_point_id",collect1). + gt("effective_minute_count",0). + eq("data_date",localDate); + Integer integer = rOperatingMonitorDMapper.selectCount(rOperatingMonitorDPOQueryWrapper); + rStatOrgDPO.setEffectiveMeasurement(integer); + /*3、稳态超标监测点数*/ + rmpTargetWarnDPOQueryWrapper.clear(); + rmpTargetWarnDPOQueryWrapper.select("1"). + in("measurement_point_id",collect1). + eq("is_harmonic",1). + eq("data_date",localDate); + Integer integer1 = rMpTargetWarnDMapper.selectCount(rmpTargetWarnDPOQueryWrapper); + rStatOrgDPO.setHarmonicMeasurement(integer1); + /*4、发生暂态的监测点数,5、暂态指标发生次数*/ + rMpEventDetailDPOQueryWrapper.clear(); + rMpEventDetailDPOQueryWrapper. + in("measurement_point_id", collect1). + and(i-> i.gt("swell_times",0).or().gt("sag_times",0).or().gt("interrupt_times",0)). + eq("data_date",localDate); + List rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper); + Integer eventCount =0; + int sum = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getInterruptTimes).sum(); + int sum1 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSagTimes).sum(); + int sum2 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSwellTimes).sum(); + + rStatOrgDPO.setEventCount(sum+sum1+sum2); + rStatOrgDPO.setEventMeasurement(rMpEventDetailDPOS.size()); + /*todo这个指标不重要,后续根据配置来*/ + rStatOrgDPO.setShouldCount(8); + /*7、告警监测点数*/ + rOperatingMonitorDPOQueryWrapper.clear(); + rOperatingMonitorDPOQueryWrapper.select("1"). + in("measurement_point_id",collect1). + eq("is_unusual",1). + eq("data_date",localDate); + Integer integer2 = rOperatingMonitorDMapper.selectCount(rOperatingMonitorDPOQueryWrapper); + rStatOrgDPO.setWarnCount(integer2); + rStatOrgDPOList.add(rStatOrgDPO); + }); + + } + + + 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()); + RStatOrgDPO rStatOrgDPO = new RStatOrgDPO(); + rStatOrgDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); + rStatOrgDPO.setDataDate(localDate); + rStatOrgDPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()); + rStatOrgDPO.setMeasurementTypeClass(getmeasurementType(k,lineSortMap)); + rStatOrgDPO.setAllCount(v.size()); + /*2、接入有效监测点数*/ + rOperatingMonitorDPOQueryWrapper.clear(); + rOperatingMonitorDPOQueryWrapper.select("1"). + in("measurement_point_id",collect1). + gt("effective_minute_count",0). + eq("data_date",localDate); + Integer integer = rOperatingMonitorDMapper.selectCount(rOperatingMonitorDPOQueryWrapper); + rStatOrgDPO.setEffectiveMeasurement(integer); + /*3、稳态超标监测点数*/ + rmpTargetWarnDPOQueryWrapper.clear(); + rmpTargetWarnDPOQueryWrapper.select("1"). + in("measurement_point_id",collect1). + eq("is_harmonic",1). + eq("data_date",localDate); + Integer integer1 = rMpTargetWarnDMapper.selectCount(rmpTargetWarnDPOQueryWrapper); + rStatOrgDPO.setHarmonicMeasurement(integer1); + /*4、发生暂态的监测点数,5、暂态指标发生次数*/ + rMpEventDetailDPOQueryWrapper.clear(); + rMpEventDetailDPOQueryWrapper. + in("measurement_point_id", collect1). + and(i-> i.gt("swell_times",0).or().gt("sag_times",0).or().gt("interrupt_times",0)). + eq("data_date",localDate); + List rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper); + Integer eventCount =0; + int sum = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getInterruptTimes).sum(); + int sum1 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSagTimes).sum(); + int sum2 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSwellTimes).sum(); + + rStatOrgDPO.setEventCount(sum+sum1+sum2); + rStatOrgDPO.setEventMeasurement(rMpEventDetailDPOS.size()); + /*todo这个指标不重要,后续根据配置来*/ + rStatOrgDPO.setShouldCount(8); + /*7、告警监测点数*/ + rOperatingMonitorDPOQueryWrapper.clear(); + rOperatingMonitorDPOQueryWrapper.select("1"). + in("measurement_point_id",collect1). + eq("is_unusual",1). + eq("data_date",localDate); + Integer integer2 = rOperatingMonitorDMapper.selectCount(rOperatingMonitorDPOQueryWrapper); + rStatOrgDPO.setWarnCount(integer2); + rStatOrgDPOList.add(rStatOrgDPO); + }); + + } + + + } + if (!CollectionUtils.isEmpty(rStatOrgDPOList)){ + rStatOrgDService.saveOrUpdateBatchByMultiId(rStatOrgDPOList,500); + } + + } + + @Override + public void handleMonth(CalculatedParam calculatedParam) { + + List rStatOrgMPOList = new ArrayList<>(); + + + DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + DateTime end = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN); + + int days = localDate.lengthOfMonth(); + + /*获取数据类型*/ + + 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 rOperatingMonitorDPOQueryWrapper = new QueryWrapper<>(); + QueryWrapper rmpTargetWarnDPOQueryWrapper = new QueryWrapper<>(); + QueryWrapper rMpEventDetailDPOQueryWrapper = new QueryWrapper<>(); + QueryWrapper rMpPassRateMPOQueryWrapper = new QueryWrapper<>(); + + for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : calculatedParam.getIdList()) { + if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) { + List lineBaseList = deptGetChildrenMoreDTO.getLineBaseList(); + Map> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag)); + collect.forEach((k, v)->{ + + List collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); + RStatOrgMPO rStatOrgMPO = new RStatOrgMPO(); + rStatOrgMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); + rStatOrgMPO.setDataDate(localDate); + rStatOrgMPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()); + rStatOrgMPO.setMeasurementTypeClass(k); + rStatOrgMPO.setAllCount(v.size()); + /*2、2、日均有效接入监测点数2、日均有效接入监测点数*/ + rOperatingMonitorDPOQueryWrapper.clear(); + rOperatingMonitorDPOQueryWrapper.select("measurement_point_id"). + in("measurement_point_id",collect1). + gt("effective_minute_count",0). + between("data_date",begin,end); + List rOperatingMonitorDPOS = rOperatingMonitorDMapper.selectList(rOperatingMonitorDPOQueryWrapper); + String value = df.format((float)rOperatingMonitorDPOS.size()/ days); + + rStatOrgMPO.setEffectiveMeasurementAverage(Double.parseDouble(value)); + /*3、3、累计有效接入监测点数*/ + long count = rOperatingMonitorDPOS.stream().map(ROperatingMonitorDPO::getMeasurementPointId).distinct().count(); + rStatOrgMPO.setEffectiveMeasurementAccrued(Integer.valueOf(count+"")); + + /*4、日均稳态超标监测点数*/ + rmpTargetWarnDPOQueryWrapper.clear(); + rmpTargetWarnDPOQueryWrapper.select("measurement_point_id"). + in("measurement_point_id",collect1). + eq("is_harmonic",1). + between("data_date",begin,end); + List rMpTargetWarnDPOS = rMpTargetWarnDMapper.selectList(rmpTargetWarnDPOQueryWrapper); + String value1 = df.format((float)rMpTargetWarnDPOS.size()/ days); + rStatOrgMPO.setHarmonicMeasurementAverage(Double.parseDouble(value1)); + + /* 5、累计稳态超标监测点数*/ + long count1 = rMpTargetWarnDPOS.stream().map(RMpTargetWarnDPO::getMeasurementPointId).distinct().count(); + + rStatOrgMPO.setHarmonicMeasurementAccrued(Integer.valueOf(count1+"")); + + /*6、日均稳态超标监测点数占比*/ + String value2 = df.format(rStatOrgMPO.getHarmonicMeasurementAccrued() / rStatOrgMPO.getAllCount()); + rStatOrgMPO.setHarmonicMeasurementRatioAverage(Double.parseDouble(value2)); + + /*7、累计超标天数*/ + rStatOrgMPO.setOverDayAccrued(rMpTargetWarnDPOS.size()); + /*8、频率偏差合格率,9、电压偏差合格率,10、闪变合格率*/ + rMpPassRateMPOQueryWrapper.clear(); + rMpPassRateMPOQueryWrapper.select("avg(freq_pass_rate) as freq_pass_rate","avg(v_dev_pass_rate) as v_dev_pass_rate","avg(flicker_pass_rate) as flicker_pass_rate"). + in("measurement_point_id",collect1). + between("data_date",begin,end); + RMpPassRateMPO rMpPassRateMPO = rMpPassRateMMapper.selectOne(rMpPassRateMPOQueryWrapper); + //todo 这边有点问题,每日监测点信息从公共接口获取,当日监测点应该都一样,不存在表数据不一致的情况 +// if (!Objects.isNull(rMpPassRateMPO)){ + rStatOrgMPO.setFreqPassRate(rMpPassRateMPO.getFreqPassRate()); + rStatOrgMPO.setFlickerPassRate(rMpPassRateMPO.getFlickerPassRate()); + rStatOrgMPO.setVDevPassRate(rMpPassRateMPO.getVDevPassRate()); +// } + + /*11、日均监测到暂态指标的监测点数*/ + rMpEventDetailDPOQueryWrapper.clear(); + rMpEventDetailDPOQueryWrapper. + in("measurement_point_id", collect1). + and(i-> i.gt("swell_times",0).or().gt("sag_times",0).or().gt("interrupt_times",0)). + between("data_date",begin,end); + List rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper); + Integer eventCount =0; + int sum = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getInterruptTimes).sum(); + int sum1 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSagTimes).sum(); + int sum2 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSwellTimes).sum(); + String value3 = df.format((float)rMpEventDetailDPOS.size()/ days); + rStatOrgMPO.setEventMeasurementAverage(Double.valueOf(value3)); + /*12、累计监测到暂态指标的监测点数*/ + long count2 = rMpEventDetailDPOS.stream().map(RMpEventDetailDPO::getMeasurementPointId).distinct().count(); + + rStatOrgMPO.setEventMeasurementAccrued(Integer.valueOf(count2+"")); + /*13、日均暂态超标监测点数占比*/ + String value4 = df.format(rStatOrgMPO.getEventMeasurementAverage() / rStatOrgMPO.getAllCount()); + rStatOrgMPO.setEventMeasurementRatioAverage(Double.valueOf(value4)); + + /*15、暂态指标发生频次*/ + rStatOrgMPO.setEventCount(sum+sum1+sum2); + + /*14、暂态指标发生频次*/ + long count3 = rMpEventDetailDPOS.stream().map(RMpEventDetailDPO::getMeasurementPointId).distinct().count(); + if(count3==0){ + rStatOrgMPO.setEventFreq(0.00); + + }else { + String value5 = df.format((float)rStatOrgMPO.getEventCount() / count3); + + rStatOrgMPO.setEventFreq(Double.valueOf(value5)); + } + + + + + /*todo这个指标不重要,后续根据配置来*/ + /*17、告警监测点数*/ + rStatOrgMPO.setShouldCount(8); + rOperatingMonitorDPOQueryWrapper.clear(); + rOperatingMonitorDPOQueryWrapper.select("distinct(measurement_point_id)"). + in("measurement_point_id",collect1). + eq("is_unusual",1). + between("data_date",begin,end); + Integer integer2 = rOperatingMonitorDMapper.selectCount(rOperatingMonitorDPOQueryWrapper); + rStatOrgMPO.setWarnCount(integer2); + rStatOrgMPOList.add(rStatOrgMPO); + }); + + } + 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()); + RStatOrgMPO rStatOrgMPO = new RStatOrgMPO(); + rStatOrgMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); + rStatOrgMPO.setDataDate(localDate); + rStatOrgMPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()); + rStatOrgMPO.setMeasurementTypeClass(getmeasurementType(k,lineSortMap)); + rStatOrgMPO.setAllCount(v.size()); + /*2、2、日均有效接入监测点数2、日均有效接入监测点数*/ + rOperatingMonitorDPOQueryWrapper.clear(); + rOperatingMonitorDPOQueryWrapper.select("measurement_point_id"). + in("measurement_point_id",collect1). + gt("effective_minute_count",0). + between("data_date",begin,end); + List rOperatingMonitorDPOS = rOperatingMonitorDMapper.selectList(rOperatingMonitorDPOQueryWrapper); + String value = df.format((float)rOperatingMonitorDPOS.size()/ days); + + rStatOrgMPO.setEffectiveMeasurementAverage(Double.parseDouble(value)); + /*3、3、累计有效接入监测点数*/ + long count = rOperatingMonitorDPOS.stream().map(ROperatingMonitorDPO::getMeasurementPointId).distinct().count(); + rStatOrgMPO.setEffectiveMeasurementAccrued(Integer.valueOf(count+"")); + + /*4、日均稳态超标监测点数*/ + rmpTargetWarnDPOQueryWrapper.clear(); + rmpTargetWarnDPOQueryWrapper.select("measurement_point_id"). + in("measurement_point_id",collect1). + eq("is_harmonic",1). + between("data_date",begin,end); + List rMpTargetWarnDPOS = rMpTargetWarnDMapper.selectList(rmpTargetWarnDPOQueryWrapper); + String value1 = df.format((float)rMpTargetWarnDPOS.size()/ days); + rStatOrgMPO.setHarmonicMeasurementAverage(Double.parseDouble(value1)); + + /* 5、累计稳态超标监测点数*/ + long count1 = rMpTargetWarnDPOS.stream().map(RMpTargetWarnDPO::getMeasurementPointId).distinct().count(); + + rStatOrgMPO.setHarmonicMeasurementAccrued(Integer.valueOf(count1+"")); + + /*6、日均稳态超标监测点数占比*/ + String value2 = df.format(rStatOrgMPO.getHarmonicMeasurementAccrued() / rStatOrgMPO.getAllCount()); + rStatOrgMPO.setHarmonicMeasurementRatioAverage(Double.parseDouble(value2)); + + /*7、累计超标天数*/ + rStatOrgMPO.setOverDayAccrued(rMpTargetWarnDPOS.size()); + /*8、频率偏差合格率,9、电压偏差合格率,10、闪变合格率*/ + rMpPassRateMPOQueryWrapper.clear(); + rMpPassRateMPOQueryWrapper.select("avg(freq_pass_rate) as freq_pass_rate","avg(v_dev_pass_rate) as v_dev_pass_rate","avg(flicker_pass_rate) as flicker_pass_rate"). + in("measurement_point_id",collect1). + between("data_date",begin,end); + RMpPassRateMPO rMpPassRateMPO = rMpPassRateMMapper.selectOne(rMpPassRateMPOQueryWrapper); + rStatOrgMPO.setFreqPassRate(rMpPassRateMPO.getFreqPassRate()); + rStatOrgMPO.setFlickerPassRate(rMpPassRateMPO.getFlickerPassRate()); + rStatOrgMPO.setVDevPassRate(rMpPassRateMPO.getVDevPassRate()); + + + + /*11、日均监测到暂态指标的监测点数*/ + rMpEventDetailDPOQueryWrapper.clear(); + rMpEventDetailDPOQueryWrapper. + in("measurement_point_id", collect1). + and(i-> i.gt("swell_times",0).or().gt("sag_times",0).or().gt("interrupt_times",0)). + between("data_date",begin,end); + List rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper); + Integer eventCount =0; + int sum = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getInterruptTimes).sum(); + int sum1 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSagTimes).sum(); + int sum2 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSwellTimes).sum(); + String value3 = df.format((float)rMpEventDetailDPOS.size()/ days); + rStatOrgMPO.setEventMeasurementAverage(Double.valueOf(value3)); + /*12、累计监测到暂态指标的监测点数*/ + long count2 = rMpEventDetailDPOS.stream().map(RMpEventDetailDPO::getMeasurementPointId).distinct().count(); + + rStatOrgMPO.setEventMeasurementAccrued(Integer.valueOf(count2+"")); + /*13、日均暂态超标监测点数占比*/ + String value4 = df.format(rStatOrgMPO.getEventMeasurementAverage() / rStatOrgMPO.getAllCount()); + rStatOrgMPO.setEventMeasurementRatioAverage(Double.valueOf(value4)); + + /*15、暂态指标发生频次*/ + rStatOrgMPO.setEventCount(sum+sum1+sum2); + + /*14、暂态指标发生频次*/ + long count3 = rMpEventDetailDPOS.stream().map(RMpEventDetailDPO::getMeasurementPointId).distinct().count(); + if(count3==0){ + rStatOrgMPO.setEventFreq(0.00); + + }else{ + String value5 = df.format((float)rStatOrgMPO.getEventCount() / count3); + + rStatOrgMPO.setEventFreq(Double.valueOf(value5)); + + } + + + + /*todo这个指标不重要,后续根据配置来*/ + /*17、告警监测点数*/ + rStatOrgMPO.setShouldCount(8); + rOperatingMonitorDPOQueryWrapper.clear(); + rOperatingMonitorDPOQueryWrapper.select("distinct(measurement_point_id)"). + in("measurement_point_id",collect1). + eq("is_unusual",1). + between("data_date",begin,end); + Integer integer2 = rOperatingMonitorDMapper.selectCount(rOperatingMonitorDPOQueryWrapper); + rStatOrgMPO.setWarnCount(integer2); + + rStatOrgMPOList.add(rStatOrgMPO); + }); + + } + } + if (!CollectionUtils.isEmpty(rStatOrgMPOList)){ + rStatOrgMService.saveOrUpdateBatchByMultiId(rStatOrgMPOList,500); + } + + } + + @Override + public void handleQtr(CalculatedParam calculatedParam) { + List rStatOrgQPOList = new ArrayList<>(); + + DateTime begin = DateUtil.beginOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + DateTime end = DateUtil.endOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN); + + int days = PublicUtil.getQtrDays(localDate); + /*获取数据类型*/ + + 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 rOperatingMonitorDPOQueryWrapper = new QueryWrapper<>(); + QueryWrapper rmpTargetWarnDPOQueryWrapper = new QueryWrapper<>(); + QueryWrapper rMpEventDetailDPOQueryWrapper = new QueryWrapper<>(); + QueryWrapper rMpPassRateQPOQueryWrapper = new QueryWrapper<>(); + + + + for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : calculatedParam.getIdList()) { + + /*主网*/ + if(!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())){ + List lineBaseList = deptGetChildrenMoreDTO.getLineBaseList(); + Map> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag)); + collect.forEach((k, v)->{ + + List collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); + RStatOrgQPO rStatOrgQPO = new RStatOrgQPO(); + rStatOrgQPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); + rStatOrgQPO.setDataDate(localDate); + rStatOrgQPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()); + rStatOrgQPO.setMeasurementTypeClass(k); + rStatOrgQPO.setAllCount(v.size()); + /*2、2、日均有效接入监测点数2、日均有效接入监测点数*/ + rOperatingMonitorDPOQueryWrapper.clear(); + rOperatingMonitorDPOQueryWrapper.select("measurement_point_id"). + in("measurement_point_id",collect1). + gt("effective_minute_count",0). + between("data_date",begin,end); + List rOperatingMonitorDPOS = rOperatingMonitorDMapper.selectList(rOperatingMonitorDPOQueryWrapper); + String value = df.format((float)rOperatingMonitorDPOS.size()/ days); + + rStatOrgQPO.setEffectiveMeasurementAverage(Double.parseDouble(value)); + /*3、3、累计有效接入监测点数*/ + long count = rOperatingMonitorDPOS.stream().map(ROperatingMonitorDPO::getMeasurementPointId).distinct().count(); + rStatOrgQPO.setEffectiveMeasurementAccrued(Integer.valueOf(count+"")); + + /*4、日均稳态超标监测点数*/ + rmpTargetWarnDPOQueryWrapper.clear(); + rmpTargetWarnDPOQueryWrapper.select("measurement_point_id"). + in("measurement_point_id",collect1). + eq("is_harmonic",1). + between("data_date",begin,end); + List rMpTargetWarnDPOS = rMpTargetWarnDMapper.selectList(rmpTargetWarnDPOQueryWrapper); + String value1 = df.format((float)rMpTargetWarnDPOS.size()/ days); + rStatOrgQPO.setHarmonicMeasurementAverage(Double.parseDouble(value1)); + + /* 5、累计稳态超标监测点数*/ + long count1 = rMpTargetWarnDPOS.stream().map(RMpTargetWarnDPO::getMeasurementPointId).distinct().count(); + + rStatOrgQPO.setHarmonicMeasurementAccrued(Integer.valueOf(count1+"")); + + /*6、日均稳态超标监测点数占比*/ + String value2 = df.format(rStatOrgQPO.getHarmonicMeasurementAccrued() / rStatOrgQPO.getAllCount()); + rStatOrgQPO.setHarmonicMeasurementRatioAverage(Double.parseDouble(value2)); + + /*7、累计超标天数*/ + if(count1==0){ + rStatOrgQPO.setAverageOverDay(0.00); + + }else { + String format = df.format((float)rMpTargetWarnDPOS.size()/ count1); + + rStatOrgQPO.setAverageOverDay(Double.parseDouble(format)); + } + + /*8、频率偏差合格率,9、电压偏差合格率,10、闪变合格率*/ + rMpPassRateQPOQueryWrapper.clear(); + rMpPassRateQPOQueryWrapper.select("avg(freq_pass_rate) as freq_pass_rate","avg(v_dev_pass_rate) as v_dev_pass_rate","avg(flicker_pass_rate) as flicker_pass_rate"). + in("measurement_point_id",collect1). + between("data_date",begin,end); + RMpPassRateQPO rMpPassRateQPO = rMpPassRateQMapper.selectOne(rMpPassRateQPOQueryWrapper); + rStatOrgQPO.setFreqPassRate(rMpPassRateQPO.getFreqPassRate()); + rStatOrgQPO.setFlickerPassRate(rMpPassRateQPO.getFlickerPassRate()); + rStatOrgQPO.setVDevPassRate(rMpPassRateQPO.getVDevPassRate()); + + + + /*11、日均监测到暂态指标的监测点数*/ + rMpEventDetailDPOQueryWrapper.clear(); + rMpEventDetailDPOQueryWrapper. + in("measurement_point_id", collect1). + and(i-> i.gt("swell_times",0).or().gt("sag_times",0).or().gt("interrupt_times",0)). + between("data_date",begin,end); + List rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper); + Integer eventCount =0; + int sum = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getInterruptTimes).sum(); + int sum1 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSagTimes).sum(); + int sum2 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSwellTimes).sum(); + String value3 = df.format((float)rMpEventDetailDPOS.size()/ days); + rStatOrgQPO.setEventMeasurementAverage(Double.valueOf(value3)); + /*12、累计监测到暂态指标的监测点数*/ + long count2 = rMpEventDetailDPOS.stream().map(RMpEventDetailDPO::getMeasurementPointId).distinct().count(); + + rStatOrgQPO.setEventMeasurementAccrued(Integer.valueOf(count2+"")); + /*13、日均暂态超标监测点数占比*/ + String value4 = df.format(rStatOrgQPO.getEventMeasurementAverage() / rStatOrgQPO.getAllCount()); + rStatOrgQPO.setEventMeasurementRatioAverage(Double.valueOf(value4)); + + /*15、暂态指标发生频次*/ + rStatOrgQPO.setEventCount(sum+sum1+sum2); + + /*14、暂态指标发生频次*/ + long count3 = rMpEventDetailDPOS.stream().map(RMpEventDetailDPO::getMeasurementPointId).distinct().count(); + if(count3==0){ + rStatOrgQPO.setEventFreq(0.00); + + }else { + String value5 = df.format((float)rStatOrgQPO.getEventCount() / count3); + + rStatOrgQPO.setEventFreq(Double.valueOf(value5)); + } + + + + + /*todo这个指标不重要,后续根据配置来*/ + /*17、告警监测点数*/ + rStatOrgQPO.setShouldCount(8); + rOperatingMonitorDPOQueryWrapper.clear(); + rOperatingMonitorDPOQueryWrapper.select("distinct(measurement_point_id)"). + in("measurement_point_id",collect1). + eq("is_unusual",1). + between("data_date",begin,end); + Integer integer2 = rOperatingMonitorDMapper.selectCount(rOperatingMonitorDPOQueryWrapper); + rStatOrgQPO.setWarnCount(integer2); + + rStatOrgQPOList.add(rStatOrgQPO); + }); + + } + /*配网*/ + 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()); + RStatOrgQPO rStatOrgQPO = new RStatOrgQPO(); + rStatOrgQPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); + rStatOrgQPO.setDataDate(localDate); + rStatOrgQPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()); + rStatOrgQPO.setMeasurementTypeClass(getmeasurementType(k,lineSortMap)); + rStatOrgQPO.setAllCount(v.size()); + /*2、2、日均有效接入监测点数2、日均有效接入监测点数*/ + rOperatingMonitorDPOQueryWrapper.clear(); + rOperatingMonitorDPOQueryWrapper.select("measurement_point_id"). + in("measurement_point_id",collect1). + gt("effective_minute_count",0). + between("data_date",begin,end); + List rOperatingMonitorDPOS = rOperatingMonitorDMapper.selectList(rOperatingMonitorDPOQueryWrapper); + String value = df.format((float)rOperatingMonitorDPOS.size()/ days); + + rStatOrgQPO.setEffectiveMeasurementAverage(Double.parseDouble(value)); + /*3、3、累计有效接入监测点数*/ + long count = rOperatingMonitorDPOS.stream().map(ROperatingMonitorDPO::getMeasurementPointId).distinct().count(); + rStatOrgQPO.setEffectiveMeasurementAccrued(Integer.valueOf(count+"")); + + /*4、日均稳态超标监测点数*/ + rmpTargetWarnDPOQueryWrapper.clear(); + rmpTargetWarnDPOQueryWrapper.select("measurement_point_id"). + in("measurement_point_id",collect1). + eq("is_harmonic",1). + between("data_date",begin,end); + List rMpTargetWarnDPOS = rMpTargetWarnDMapper.selectList(rmpTargetWarnDPOQueryWrapper); + String value1 = df.format((float)rMpTargetWarnDPOS.size()/ days); + rStatOrgQPO.setHarmonicMeasurementAverage(Double.parseDouble(value1)); + + /* 5、累计稳态超标监测点数*/ + long count1 = rMpTargetWarnDPOS.stream().map(RMpTargetWarnDPO::getMeasurementPointId).distinct().count(); + + rStatOrgQPO.setHarmonicMeasurementAccrued(Integer.valueOf(count1+"")); + + /*6、日均稳态超标监测点数占比*/ + String value2 = df.format(rStatOrgQPO.getHarmonicMeasurementAccrued() / rStatOrgQPO.getAllCount()); + rStatOrgQPO.setHarmonicMeasurementRatioAverage(Double.parseDouble(value2)); + + /*7、累计超标天数*/ + if(count1==0) { + rStatOrgQPO.setAverageOverDay(0.00); + + }else{ + String format = df.format((float)rMpTargetWarnDPOS.size()/ count1); + + rStatOrgQPO.setAverageOverDay(Double.parseDouble(format)); + } + + /*8、频率偏差合格率,9、电压偏差合格率,10、闪变合格率*/ + rMpPassRateQPOQueryWrapper.clear(); + rMpPassRateQPOQueryWrapper.select("avg(freq_pass_rate) as freq_pass_rate","avg(v_dev_pass_rate) as v_dev_pass_rate","avg(flicker_pass_rate) as flicker_pass_rate"). + in("measurement_point_id",collect1). + between("data_date",begin,end); + RMpPassRateQPO rMpPassRateQPO = rMpPassRateQMapper.selectOne(rMpPassRateQPOQueryWrapper); + rStatOrgQPO.setFreqPassRate(rMpPassRateQPO.getFreqPassRate()); + rStatOrgQPO.setFlickerPassRate(rMpPassRateQPO.getFlickerPassRate()); + rStatOrgQPO.setVDevPassRate(rMpPassRateQPO.getVDevPassRate()); + + + + /*11、日均监测到暂态指标的监测点数*/ + rMpEventDetailDPOQueryWrapper.clear(); + rMpEventDetailDPOQueryWrapper. + in("measurement_point_id", collect1). + and(i-> i.gt("swell_times",0).or().gt("sag_times",0).or().gt("interrupt_times",0)). + between("data_date",begin,end); + List rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper); + Integer eventCount =0; + int sum = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getInterruptTimes).sum(); + int sum1 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSagTimes).sum(); + int sum2 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSwellTimes).sum(); + String value3 = df.format((float)rMpEventDetailDPOS.size()/ days); + rStatOrgQPO.setEventMeasurementAverage(Double.valueOf(value3)); + /*12、累计监测到暂态指标的监测点数*/ + long count2 = rMpEventDetailDPOS.stream().map(RMpEventDetailDPO::getMeasurementPointId).distinct().count(); + + rStatOrgQPO.setEventMeasurementAccrued(Integer.valueOf(count2+"")); + /*13、日均暂态超标监测点数占比*/ + String value4 = df.format(rStatOrgQPO.getEventMeasurementAverage() / rStatOrgQPO.getAllCount()); + rStatOrgQPO.setEventMeasurementRatioAverage(Double.valueOf(value4)); + + /*15、暂态指标发生频次*/ + rStatOrgQPO.setEventCount(sum+sum1+sum2); + + /*14、暂态指标发生频次*/ + long count3 = rMpEventDetailDPOS.stream().map(RMpEventDetailDPO::getMeasurementPointId).distinct().count(); + + if(count3==0){ + rStatOrgQPO.setEventFreq(0.00); + + }else{ + String value5 = df.format((float)rStatOrgQPO.getEventCount() / count3); + + rStatOrgQPO.setEventFreq(Double.valueOf(value5)); + } + + + + + /*todo这个指标不重要,后续根据配置来*/ + /*17、告警监测点数*/ + rStatOrgQPO.setShouldCount(8); + rOperatingMonitorDPOQueryWrapper.clear(); + rOperatingMonitorDPOQueryWrapper.select("distinct(measurement_point_id)"). + in("measurement_point_id",collect1). + eq("is_unusual",1). + between("data_date",begin,end); + Integer integer2 = rOperatingMonitorDMapper.selectCount(rOperatingMonitorDPOQueryWrapper); + rStatOrgQPO.setWarnCount(integer2); + + rStatOrgQPOList.add(rStatOrgQPO); + }); + + } + + }; + if (!CollectionUtils.isEmpty(rStatOrgQPOList)){ + rStatOrgQService.saveOrUpdateBatchByMultiId(rStatOrgQPOList,500); + } + + } + + @Override + public void handleYear(CalculatedParam calculatedParam) { + List rStatOrgYList = new ArrayList<>(); + + DateTime begin = DateUtil.beginOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + DateTime end = DateUtil.endOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN); + + + int days = localDate.lengthOfYear(); + /*获取数据类型*/ + + 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 rOperatingMonitorDPOQueryWrapper = new QueryWrapper<>(); + QueryWrapper rmpTargetWarnDPOQueryWrapper = new QueryWrapper<>(); + QueryWrapper rMpEventDetailDPOQueryWrapper = new QueryWrapper<>(); + QueryWrapper rMpPassRateYPOQueryWrapper = new QueryWrapper<>(); + + + + for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : calculatedParam.getIdList()) { + + /*主网*/ + if(!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())){ + List lineBaseList = deptGetChildrenMoreDTO.getLineBaseList(); + Map> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag)); + collect.forEach((k, v)->{ + + List collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); + RStatOrgYPO rStatOrgYPO = new RStatOrgYPO(); + rStatOrgYPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); + rStatOrgYPO.setDataDate(localDate); + rStatOrgYPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()); + rStatOrgYPO.setMeasurementTypeClass(k); + rStatOrgYPO.setAllCount(v.size()); + /*2、2、日均有效接入监测点数2、日均有效接入监测点数*/ + rOperatingMonitorDPOQueryWrapper.clear(); + rOperatingMonitorDPOQueryWrapper.select("measurement_point_id"). + in("measurement_point_id",collect1). + gt("effective_minute_count",0). + between("data_date",begin,end); + List rOperatingMonitorDPOS = rOperatingMonitorDMapper.selectList(rOperatingMonitorDPOQueryWrapper); + String value = df.format((float)rOperatingMonitorDPOS.size()/ days); + + rStatOrgYPO.setEffectiveMeasurementAverage(Double.valueOf(value)); + /*3、3、累计有效接入监测点数*/ + long count = rOperatingMonitorDPOS.stream().map(ROperatingMonitorDPO::getMeasurementPointId).distinct().count(); + rStatOrgYPO.setEffectiveMeasurementAccrued(Integer.valueOf(count+"")); + + /*4、日均稳态超标监测点数*/ + rmpTargetWarnDPOQueryWrapper.clear(); + rmpTargetWarnDPOQueryWrapper.select("measurement_point_id"). + in("measurement_point_id",collect1). + eq("is_harmonic",1). + between("data_date",begin,end); + List rMpTargetWarnDPOS = rMpTargetWarnDMapper.selectList(rmpTargetWarnDPOQueryWrapper); + String value1 = df.format((float)rMpTargetWarnDPOS.size()/ days); + rStatOrgYPO.setOverLimitMeasurementAverage(Double.parseDouble(value1)); + + /* 5、累计稳态超标监测点数*/ + long count1 = rMpTargetWarnDPOS.stream().map(RMpTargetWarnDPO::getMeasurementPointId).distinct().count(); + + rStatOrgYPO.setOverLimitMeasurementAccrued(Integer.valueOf(count1+"")); + + /*6、日均稳态超标监测点数占比*/ + + String value2 = df.format(rStatOrgYPO.getOverLimitMeasurementAccrued() / rStatOrgYPO.getAllCount()); + rStatOrgYPO.setHarmonicMeasurementRatioAverage(Double.parseDouble(value2)); + + /*7、稳态指标平均超标天数*/ + if(count1==0){ + rStatOrgYPO.setAverageOverDay(0.00); + }else{ + String format = df.format((float)rMpTargetWarnDPOS.size()/ count1); + rStatOrgYPO.setAverageOverDay(Double.parseDouble(format)); + + + } + + /*8、频率偏差合格率,9、电压偏差合格率,10、闪变合格率*/ + rMpPassRateYPOQueryWrapper.clear(); + rMpPassRateYPOQueryWrapper.select("avg(freq_pass_rate) as freq_pass_rate","avg(v_dev_pass_rate) as v_dev_pass_rate","avg(flicker_pass_rate) as flicker_pass_rate"). + in("measurement_point_id",collect1). + between("data_date",begin,end); + RMpPassRateYPO rMpPassRateYPO = rMpPassRateYMapper.selectOne(rMpPassRateYPOQueryWrapper); + rStatOrgYPO.setFreqPassRate(rMpPassRateYPO.getFreqPassRate()); + rStatOrgYPO.setFlickerPassRate(rMpPassRateYPO.getFlickerPassRate()); + rStatOrgYPO.setVDevPassRate(rMpPassRateYPO.getVDevPassRate()); + + + + /*11、日均监测到暂态指标的监测点数*/ + rMpEventDetailDPOQueryWrapper.clear(); + rMpEventDetailDPOQueryWrapper. + in("measurement_point_id", collect1). + and(i-> i.gt("swell_times",0).or().gt("sag_times",0).or().gt("interrupt_times",0)). + between("data_date",begin,end); + List rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper); + Integer eventCount =0; + int sum = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getInterruptTimes).sum(); + int sum1 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSagTimes).sum(); + int sum2 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSwellTimes).sum(); + String value3 = df.format((float)rMpEventDetailDPOS.size()/ days); + rStatOrgYPO.setEventMeasurementAverage(Double.valueOf(value3)); + /*12、累计监测到暂态指标的监测点数*/ + long count2 = rMpEventDetailDPOS.stream().map(RMpEventDetailDPO::getMeasurementPointId).distinct().count(); + + rStatOrgYPO.setEventMeasurementAccrued(Integer.valueOf(count2+"")); + /*13、日均暂态超标监测点数占比*/ + String value4 = df.format(rStatOrgYPO.getEventMeasurementAverage() / rStatOrgYPO.getAllCount()); + rStatOrgYPO.setEventMeasurementRatioAverage(Double.valueOf(value4)); + + /*15、暂态指标发生频次*/ + rStatOrgYPO.setEventCount(sum+sum1+sum2); + + /*14、暂态指标发生频次*/ + long count3 = rMpEventDetailDPOS.stream().map(RMpEventDetailDPO::getMeasurementPointId).distinct().count(); + if(count3==0){ + rStatOrgYPO.setEventFreq(0.00); + }else{ + String value5 = df.format((float)rStatOrgYPO.getEventCount() / count3); + + rStatOrgYPO.setEventFreq(Double.valueOf(value5)); + } + + + + + /*todo这个指标不重要,后续根据配置来*/ + /*17、告警监测点数*/ + rStatOrgYPO.setShouldCount(8); + rOperatingMonitorDPOQueryWrapper.clear(); + rOperatingMonitorDPOQueryWrapper.select("distinct(measurement_point_id)"). + in("measurement_point_id",collect1). + eq("is_unusual",1). + between("data_date",begin,end); + Integer integer2 = rOperatingMonitorDMapper.selectCount(rOperatingMonitorDPOQueryWrapper); + rStatOrgYPO.setWarnCount(integer2); + + rStatOrgYList.add(rStatOrgYPO); + }); + + } + /*配网*/ + 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()); + RStatOrgYPO rStatOrgYPO = new RStatOrgYPO(); + rStatOrgYPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); + rStatOrgYPO.setDataDate(localDate); + rStatOrgYPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()); + rStatOrgYPO.setMeasurementTypeClass(getmeasurementType(k,lineSortMap)); + rStatOrgYPO.setAllCount(v.size()); + /*2、2、日均有效接入监测点数2、日均有效接入监测点数*/ + rOperatingMonitorDPOQueryWrapper.clear(); + rOperatingMonitorDPOQueryWrapper.select("measurement_point_id"). + in("measurement_point_id",collect1). + gt("effective_minute_count",0). + between("data_date",begin,end); + List rOperatingMonitorDPOS = rOperatingMonitorDMapper.selectList(rOperatingMonitorDPOQueryWrapper); + String value = df.format((float)rOperatingMonitorDPOS.size()/ days); + + rStatOrgYPO.setEffectiveMeasurementAverage(Double.valueOf(value)); + /*3、3、累计有效接入监测点数*/ + long count = rOperatingMonitorDPOS.stream().map(ROperatingMonitorDPO::getMeasurementPointId).distinct().count(); + rStatOrgYPO.setEffectiveMeasurementAccrued(Integer.valueOf(count+"")); + + /*4、日均稳态超标监测点数*/ + rmpTargetWarnDPOQueryWrapper.clear(); + rmpTargetWarnDPOQueryWrapper.select("measurement_point_id"). + in("measurement_point_id",collect1). + eq("is_harmonic",1). + between("data_date",begin,end); + List rMpTargetWarnDPOS = rMpTargetWarnDMapper.selectList(rmpTargetWarnDPOQueryWrapper); + String value1 = df.format((float)rMpTargetWarnDPOS.size()/ days); + rStatOrgYPO.setOverLimitMeasurementAverage(Double.parseDouble(value1)); + + /* 5、累计稳态超标监测点数*/ + long count1 = rMpTargetWarnDPOS.stream().map(RMpTargetWarnDPO::getMeasurementPointId).distinct().count(); + + rStatOrgYPO.setOverLimitMeasurementAccrued(Integer.valueOf(count1+"")); + + /*6、日均稳态超标监测点数占比*/ + String value2 = df.format(rStatOrgYPO.getOverLimitMeasurementAccrued() / rStatOrgYPO.getAllCount()); + rStatOrgYPO.setHarmonicMeasurementRatioAverage(Double.parseDouble(value2)); + + /*7、稳态指标平均超标天数*/ + if(count1==0){ + rStatOrgYPO.setAverageOverDay(0.00); + + }else { + String format = df.format((float)rMpTargetWarnDPOS.size()/ count1); + + rStatOrgYPO.setAverageOverDay(Double.parseDouble(format)); + } + + /*8、频率偏差合格率,9、电压偏差合格率,10、闪变合格率*/ + rMpPassRateYPOQueryWrapper.clear(); + rMpPassRateYPOQueryWrapper.select("avg(freq_pass_rate) as freq_pass_rate","avg(v_dev_pass_rate) as v_dev_pass_rate","avg(flicker_pass_rate) as flicker_pass_rate"). + in("measurement_point_id",collect1). + between("data_date",begin,end); + RMpPassRateYPO rMpPassRateYPO = rMpPassRateYMapper.selectOne(rMpPassRateYPOQueryWrapper); + rStatOrgYPO.setFreqPassRate(rMpPassRateYPO.getFreqPassRate()); + rStatOrgYPO.setFlickerPassRate(rMpPassRateYPO.getFlickerPassRate()); + rStatOrgYPO.setVDevPassRate(rMpPassRateYPO.getVDevPassRate()); + + + + /*11、日均监测到暂态指标的监测点数*/ + rMpEventDetailDPOQueryWrapper.clear(); + rMpEventDetailDPOQueryWrapper. + in("measurement_point_id", collect1). + and(i-> i.gt("swell_times",0).or().gt("sag_times",0).or().gt("interrupt_times",0)). + between("data_date",begin,end); + List rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper); + Integer eventCount =0; + int sum = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getInterruptTimes).sum(); + int sum1 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSagTimes).sum(); + int sum2 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSwellTimes).sum(); + String value3 = df.format((float)rMpEventDetailDPOS.size()/ days); + rStatOrgYPO.setEventMeasurementAverage(Double.valueOf(value3)); + /*12、累计监测到暂态指标的监测点数*/ + long count2 = rMpEventDetailDPOS.stream().map(RMpEventDetailDPO::getMeasurementPointId).distinct().count(); + + rStatOrgYPO.setEventMeasurementAccrued(Integer.valueOf(count2+"")); + /*13、日均暂态超标监测点数占比*/ + String value4 = df.format(rStatOrgYPO.getEventMeasurementAverage() / rStatOrgYPO.getAllCount()); + rStatOrgYPO.setEventMeasurementRatioAverage(Double.valueOf(value4)); + + /*15、暂态指标发生频次*/ + rStatOrgYPO.setEventCount(sum+sum1+sum2); + + /*14、暂态指标发生频次*/ + + long count3 = rMpEventDetailDPOS.stream().map(RMpEventDetailDPO::getMeasurementPointId).distinct().count(); + if(count3==0){ + rStatOrgYPO.setEventFreq(0.00); + + }else { + String value5 = df.format((float)rStatOrgYPO.getEventCount() / count3); + + rStatOrgYPO.setEventFreq(Double.valueOf(value5)); + } + + + + + /*todo这个指标不重要,后续根据配置来*/ + /*17、告警监测点数*/ + rStatOrgYPO.setShouldCount(8); + rOperatingMonitorDPOQueryWrapper.clear(); + rOperatingMonitorDPOQueryWrapper.select("distinct(measurement_point_id)"). + in("measurement_point_id",collect1). + eq("is_unusual",1). + between("data_date",begin,end); + Integer integer2 = rOperatingMonitorDMapper.selectCount(rOperatingMonitorDPOQueryWrapper); + rStatOrgYPO.setWarnCount(integer2); + + rStatOrgYList.add(rStatOrgYPO); + }); + + } + + }; + if (!CollectionUtils.isEmpty(rStatOrgYList)){ + rStatOrgYService.saveOrUpdateBatchByMultiId(rStatOrgYList,500); + } + } + @Transactional(rollbackFor = {Exception.class}) @Async("asyncExecutor") @SneakyThrows + @Deprecated private void hanlderYear(List data, String dataDate, Integer type) { List rStatOrgYList = new ArrayList<>(); Date date = DateUtil.parse(dataDate); @@ -126,7 +1087,7 @@ public class RStatOrgServiceImpl implements RStatOrgService { List collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); RStatOrgYPO rStatOrgYPO = new RStatOrgYPO(); rStatOrgYPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); - rStatOrgYPO.setDataDate(date); + rStatOrgYPO.setDataDate(date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate()); rStatOrgYPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()); rStatOrgYPO.setMeasurementTypeClass(k); rStatOrgYPO.setAllCount(v.size()); @@ -247,7 +1208,7 @@ public class RStatOrgServiceImpl implements RStatOrgService { List collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); RStatOrgYPO rStatOrgYPO = new RStatOrgYPO(); rStatOrgYPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); - rStatOrgYPO.setDataDate(date); + rStatOrgYPO.setDataDate(date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate()); rStatOrgYPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()); rStatOrgYPO.setMeasurementTypeClass(getmeasurementType(k,lineSortMap)); rStatOrgYPO.setAllCount(v.size()); @@ -371,6 +1332,7 @@ public class RStatOrgServiceImpl implements RStatOrgService { @Transactional(rollbackFor = {Exception.class}) @Async("asyncExecutor") @SneakyThrows + @Deprecated private void hanlderQtr(List data, String dataDate, Integer type) { List rStatOrgQPOList = new ArrayList<>(); Date date = DateUtil.parse(dataDate); @@ -404,7 +1366,7 @@ public class RStatOrgServiceImpl implements RStatOrgService { List collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); RStatOrgQPO rStatOrgQPO = new RStatOrgQPO(); rStatOrgQPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); - rStatOrgQPO.setDataDate(date); + rStatOrgQPO.setDataDate(date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate()); rStatOrgQPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()); rStatOrgQPO.setMeasurementTypeClass(k); rStatOrgQPO.setAllCount(v.size()); @@ -525,7 +1487,7 @@ public class RStatOrgServiceImpl implements RStatOrgService { List collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); RStatOrgQPO rStatOrgQPO = new RStatOrgQPO(); rStatOrgQPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); - rStatOrgQPO.setDataDate(date); + rStatOrgQPO.setDataDate(date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate()); rStatOrgQPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()); rStatOrgQPO.setMeasurementTypeClass(getmeasurementType(k,lineSortMap)); rStatOrgQPO.setAllCount(v.size()); @@ -650,6 +1612,7 @@ public class RStatOrgServiceImpl implements RStatOrgService { @Transactional(rollbackFor = {Exception.class}) @Async("asyncExecutor") @SneakyThrows + @Deprecated private void hanlderMonth(List data, String dataDate, Integer type) { List rStatOrgMPOList = new ArrayList<>(); Date date = DateUtil.parse(dataDate); @@ -683,7 +1646,7 @@ public class RStatOrgServiceImpl implements RStatOrgService { List collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); RStatOrgMPO rStatOrgMPO = new RStatOrgMPO(); rStatOrgMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); - rStatOrgMPO.setDataDate(date); + rStatOrgMPO.setDataDate(date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate()); rStatOrgMPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()); rStatOrgMPO.setMeasurementTypeClass(k); rStatOrgMPO.setAllCount(v.size()); @@ -796,7 +1759,7 @@ public class RStatOrgServiceImpl implements RStatOrgService { List collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); RStatOrgMPO rStatOrgMPO = new RStatOrgMPO(); rStatOrgMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); - rStatOrgMPO.setDataDate(date); + rStatOrgMPO.setDataDate(date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate()); rStatOrgMPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()); rStatOrgMPO.setMeasurementTypeClass(getmeasurementType(k,lineSortMap)); rStatOrgMPO.setAllCount(v.size()); @@ -911,6 +1874,7 @@ public class RStatOrgServiceImpl implements RStatOrgService { @Transactional(rollbackFor = {Exception.class}) @Async("asyncExecutor") @SneakyThrows + @Deprecated private void hanlderDay(List data, String dataDate, Integer type) { List rStatOrgDPOList = new ArrayList<>(); Date date = DateUtil.parse(dataDate); @@ -940,7 +1904,7 @@ public class RStatOrgServiceImpl implements RStatOrgService { List collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); RStatOrgDPO rStatOrgDPO = new RStatOrgDPO(); rStatOrgDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); - rStatOrgDPO.setDataDate(date); + rStatOrgDPO.setDataDate(date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate()); rStatOrgDPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()); rStatOrgDPO.setMeasurementTypeClass(k); rStatOrgDPO.setAllCount(v.size()); @@ -997,7 +1961,7 @@ public class RStatOrgServiceImpl implements RStatOrgService { List collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); RStatOrgDPO rStatOrgDPO = new RStatOrgDPO(); rStatOrgDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); - rStatOrgDPO.setDataDate(date); + rStatOrgDPO.setDataDate(date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate()); rStatOrgDPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()); rStatOrgDPO.setMeasurementTypeClass(getmeasurementType(k,lineSortMap)); rStatOrgDPO.setAllCount(v.size()); diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/PollutionServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/PollutionServiceImpl.java index 491651961..5a7e88b9c 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/PollutionServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/PollutionServiceImpl.java @@ -1,9 +1,7 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.line; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.date.LocalDateTimeUtil; -import cn.hutool.core.date.TimeInterval; +import cn.hutool.core.date.*; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -12,13 +10,14 @@ import com.njcn.common.pojo.constant.ServerInfo; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.LogUtil; import com.njcn.device.biz.commApi.CommTerminalGeneralClient; -import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO; +import com.njcn.device.biz.pojo.dto.*; import com.njcn.device.biz.pojo.param.DeptGetLineParam; import com.njcn.device.pq.api.LineFeignClient; import com.njcn.device.biz.pojo.po.Overlimit; import com.njcn.harmonic.pojo.dto.PublicDTO; import com.njcn.harmonic.pojo.po.*; import com.njcn.harmonic.pojo.po.day.*; +import com.njcn.prepare.bo.CalculatedParam; import com.njcn.prepare.harmonic.mapper.mysql.line.*; import com.njcn.prepare.harmonic.pojo.dto.PollutionDTO; import com.njcn.prepare.harmonic.pojo.param.LineParam; @@ -31,11 +30,14 @@ import com.njcn.user.api.DeptFeignClient; import com.njcn.user.pojo.po.Dept; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.ListUtils; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; +import java.time.LocalDate; import java.time.LocalDateTime; import java.util.*; import java.util.function.BinaryOperator; @@ -84,15 +86,265 @@ public class PollutionServiceImpl implements PollutionService { private final IRStatDataIDService dataIDService; private final IRStatDataInharmVDService inharmVDService; private final IRStatDataPltDService pltDService; + /**-------------------------------监测点污区图-----------------------------------**/ + @Override + public void handleDay(CalculatedParam calculatedParam) { + List pollutionList ; + + List dictData = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.POLLUTION_STATIS.getCode()).getData(); + LocalDate local = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate()); + String beginDay =LocalDateTimeUtil.format(LocalDateTimeUtil.beginOfDay(LocalDateTimeUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)),DatePattern.NORM_DATETIME_PATTERN); + String endDay = LocalDateTimeUtil.format(LocalDateTimeUtil.endOfDay(LocalDateTimeUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)),DatePattern.NORM_DATETIME_PATTERN); + List idList = calculatedParam.getIdList(); + List overLimitList = new ArrayList<>(); + for (String lineId :idList){ + Overlimit overlimit = commTerminalGeneralClient.getOverLimitData(lineId).getData(); + overLimitList.add(overlimit); + } + //指标数据获取 + List harmonicVoltageList = getHarmonicVoltage(overLimitList,beginDay,endDay); + List harmonicCurrentList = getHarmonicCurrent(overLimitList,beginDay,endDay); + List frequencyDeviationList = getFrequencyDeviation(overLimitList,beginDay,endDay); + List voltageDeviationList = getVoltageDeviation(overLimitList,beginDay,endDay); + List threePhaseVoltageList = getThreePhaseVoltageUnbalance(overLimitList,beginDay,endDay); + List negativeSequenceList = getNegativeSequenceCurrent(overLimitList,beginDay,endDay); + List interHarmonicVoltageList = getInterharmonicVoltage(overLimitList,beginDay,endDay); + List voltageFlickerList = getVoltageFlicker(overLimitList,beginDay,endDay); + + List lineIdList = new ArrayList<>(); + idList.forEach(item->{ + PollutionDTO pollutionDTO = new PollutionDTO(); + pollutionDTO.setLineId(item); + lineIdList.add(pollutionDTO); + }); + pollutionList = processPollutionList(lineIdList,harmonicVoltageList,harmonicCurrentList,frequencyDeviationList,voltageDeviationList,threePhaseVoltageList,negativeSequenceList,interHarmonicVoltageList,voltageFlickerList); + insertPollutionDayMySql(pollutionList, dictData, local); + } + /*-------------------------------单位污区图------------------------------------*/ + @Override + public void handleOrgDay(CalculatedParam calculatedParam) { + LocalDate local = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate()); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + + for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : calculatedParam.getIdList()) { + Collection union = CollectionUtils.union(Optional.ofNullable(deptGetChildrenMoreDTO.getLineBaseList()).orElse(new ArrayList()), + Optional.ofNullable(deptGetChildrenMoreDTO.getPwMonitorIds()).orElse(new ArrayList())); + List collect = union.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(collect)){ + continue; + + } + queryWrapper.clear(); + queryWrapper.in( + "line_id",collect + ).eq("data_date",local); + List rMpPollutionDPOS = rMpPollutionDMapper.selectList(queryWrapper); + Map> collect1 = rMpPollutionDPOS.stream().collect(Collectors.groupingBy(RMpPollutionDPO::getPollutionType)); + collect1.forEach((k,v)->{ + Map inMap = new HashMap<>(); + inMap.put("orgId",deptGetChildrenMoreDTO.getUnitId()); + inMap.put("dataDate",local); + inMap.put("pollutionType",k); + inMap.put("value",v.stream().max(Comparator.comparing(RMpPollutionDPO::getValue)).get().getValue()); + rStatPollutionOrgDMapper.insertPollution(inMap); + }); + } + + } + + @Override + public void handleOrgMonth(CalculatedParam calculatedParam) { + + DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + DateTime end = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN); + + List substationD = rStatPollutionOrgDMapper.selectList(new LambdaQueryWrapper() + .ge(RStatPollutionOrgDPO::getDataDate, begin) + .le(RStatPollutionOrgDPO::getDataDate, end) + ); + Map> substationDMap = substationD.stream().collect(Collectors.groupingBy(temp -> temp.getOrgId() +"_"+ temp.getPollutionType())); + substationDMap.forEach((key,value)->{ + String[] split = key.split("_"); + Map inMap = new HashMap<>(); + inMap.put("orgId",split[0]); + inMap.put("dataDate",localDate); + inMap.put("pollutionType",split[1]); + inMap.put("value",value.stream().max(Comparator.comparing(RStatPollutionOrgDPO::getValue)).get().getValue()); + rStatPollutionOrgMMapper.insertPollution(inMap); + }); + + } + + @Override + public void handleOrgQtr(CalculatedParam calculatedParam) { + DateTime begin = DateUtil.beginOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + DateTime end = DateUtil.endOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN); /*获取监测点类型类型*/ + + List substationD = rStatPollutionOrgMMapper.selectList(new LambdaQueryWrapper() + .ge(RStatPollutionOrgMPO::getDataDate, begin) + .le(RStatPollutionOrgMPO::getDataDate, end) + ); + Map> substationDMap = substationD.stream().collect(Collectors.groupingBy(temp -> temp.getOrgId() +"_"+ temp.getPollutionType())); + substationDMap.forEach((key,value)->{ + String[] split = key.split("_"); + Map inMap = new HashMap<>(); + inMap.put("orgId",split[0]); + inMap.put("dataDate",localDate); + inMap.put("pollutionType",split[1]); + inMap.put("value",value.stream().max(Comparator.comparing(RStatPollutionOrgMPO::getValue)).get().getValue()); + rStatPollutionOrgQMapper.insertPollution(inMap); + }); + } + + @Override + public void handleOrgYear(CalculatedParam calculatedParam) { + DateTime begin = DateUtil.beginOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + DateTime end = DateUtil.endOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN); /*获取监测点类型类型*/ + + List substationD = rStatPollutionOrgQMapper.selectList(new LambdaQueryWrapper() + .ge(RStatPollutionOrgQPO::getDataDate, begin) + .le(RStatPollutionOrgQPO::getDataDate, end) + ); + Map> substationDMap = substationD.stream().collect(Collectors.groupingBy(temp -> temp.getOrgId() +"_"+ temp.getPollutionType())); + substationDMap.forEach((key,value)->{ + String[] split = key.split("_"); + Map inMap = new HashMap<>(); + inMap.put("orgId",split[0]); + inMap.put("dataDate",localDate); + inMap.put("pollutionType",split[1]); + inMap.put("value",value.stream().max(Comparator.comparing(RStatPollutionOrgQPO::getValue)).get().getValue()); + rStatPollutionOrgYMapper.insertPollution(inMap); + }); + + } + + + + /*----------------------------------------------变电站污区图----------------------------------------------------*/ + @Override + public void handleSubstationDay(CalculatedParam calculatedParam) { + LocalDate local = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate()); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + + for (String substationId : calculatedParam.getIdList()) { + LineDevGetBandDTO data = commTerminalGeneralClient.substationGetLine(substationId).getData(); + Collection union = CollectionUtils.union(Optional.ofNullable(data.getPwList()).orElse(new ArrayList<>()), + Optional.ofNullable(data.getZwList()).orElse(new ArrayList<>())); + List collect = union.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(collect)){ + continue; + } + queryWrapper.clear(); + queryWrapper.in( + "line_id",collect + ).eq("data_date",local); + List rMpPollutionDPOS = rMpPollutionDMapper.selectList(queryWrapper); + Map> collect1 = rMpPollutionDPOS.stream().collect(Collectors.groupingBy(RMpPollutionDPO::getPollutionType)); + collect1.forEach((k,v)->{ + Map inMap = new HashMap<>(); + inMap.put("substationId",substationId); + inMap.put("dataDate",local); + inMap.put("pollutionType",k); + inMap.put("value",v.stream().max(Comparator.comparing(RMpPollutionDPO::getValue)).get().getValue()); + rStatPollutionSubstationDMapper.insertPollution(inMap); + }); + } + + } + + @Override + public void handleSubstationMonth(CalculatedParam calculatedParam) { + + + DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + DateTime end = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN); + + List substationD = rStatPollutionSubstationDMapper.selectList(new LambdaQueryWrapper() + .ge(RStatPollutionSubstationDPO::getDataDate, begin) + .le(RStatPollutionSubstationDPO::getDataDate, end) + ); + Map> substationDMap = substationD.stream().collect(Collectors.groupingBy(temp -> temp.getSubstationId() +"_"+ temp.getPollutionType())); + substationDMap.forEach((key,value)->{ + String[] split = key.split("_"); + Map inMap = new HashMap<>(); + inMap.put("substationId",split[0]); + inMap.put("dataDate",localDate); + inMap.put("pollutionType",split[1]); + inMap.put("value",value.stream().max(Comparator.comparing(RStatPollutionSubstationDPO::getValue)).get().getValue()); + rStatPollutionSubstationMMapper.insertPollution(inMap); + + }); + + } + + @Override + public void handleSubstationQtr(CalculatedParam calculatedParam) { + + DateTime begin = DateUtil.beginOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + DateTime end = DateUtil.endOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN); /*获取监测点类型类型*/ + + + List substationM = rStatPollutionSubstationMMapper.selectList(new LambdaQueryWrapper() + .ge(RStatPollutionSubstationM::getDataDate, begin) + .le(RStatPollutionSubstationM::getDataDate, end) + ); + Map> substationDMap = substationM.stream().collect(Collectors.groupingBy(temp -> temp.getSubstationId() +"_"+ temp.getPollutionType())); + substationDMap.forEach((key,value)->{ + String[] split = key.split("_"); + Map inMap = new HashMap<>(); + inMap.put("substationId",split[0]); + inMap.put("dataDate",localDate); + inMap.put("pollutionType",split[1]); + inMap.put("value",value.stream().max(Comparator.comparing(RStatPollutionSubstationM::getValue)).get().getValue()); + rStatPollutionSubstationQMapper.insertPollution(inMap); + + }); + + } + + @Override + public void handleSubstationYear(CalculatedParam calculatedParam) { + + DateTime begin = DateUtil.beginOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + DateTime end = DateUtil.endOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN); + + List substationM = rStatPollutionSubstationQMapper.selectList(new LambdaQueryWrapper() + .ge(RStatPollutionSubstationQPO::getDataDate, begin) + .le(RStatPollutionSubstationQPO::getDataDate, end) + ); + Map> substationDMap = substationM.stream().collect(Collectors.groupingBy(temp -> temp.getSubstationId() +"_"+ temp.getPollutionType())); + substationDMap.forEach((key,value)->{ + String[] split = key.split("_"); + Map inMap = new HashMap<>(); + inMap.put("substationId",split[0]); + inMap.put("dataDate",localDate); + inMap.put("pollutionType",split[1]); + inMap.put("value",value.stream().max(Comparator.comparing(RStatPollutionSubstationQPO::getValue)).get().getValue()); + rStatPollutionSubstationYMapper.insertPollution(inMap); + }); + } + + + /*--------------------------------------------原始代码------------------------------------------------------*/ + @Override @Async("asyncExecutor") + @Deprecated public void processPollutionData(LineParam lineParam) { TimeInterval timer = new TimeInterval(); List pollutionList; - LocalDateTime local = LocalDateTimeUtil.now(); + LocalDate local = LocalDate.now(); if (StrUtil.isNotBlank(lineParam.getDataDate())){ - local = DateUtil.parseLocalDateTime(lineParam.getBeginTime()); + local = LocalDateTimeUtil.parseDate(lineParam.getBeginTime()); } List dictData = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.POLLUTION_STATIS.getCode()).getData(); @@ -133,7 +385,7 @@ public class PollutionServiceImpl implements PollutionService { } - LocalDateTime localEnd = DateUtil.parseLocalDateTime(lineParam.getEndTime()); + LocalDate localEnd = LocalDateTimeUtil.parseDate(lineParam.getEndTime()); LambdaQueryWrapper lambdaQuery = new LambdaQueryWrapper<>(); @@ -148,10 +400,11 @@ public class PollutionServiceImpl implements PollutionService { LogUtil.njcnDebug(log, "监测点污染指标数据完成耗时:{}", timer.intervalRestart()); } + /** * MySql入表 */ - private void insertPolluctionMySql(List pollutionDayList, List dictData, LocalDateTime local, LocalDateTime localEnd,Integer type){ + private void insertPolluctionMySql(List pollutionDayList, List dictData, LocalDate local, LocalDate localEnd,Integer type){ HttpResult>> substationOut = commTerminalGeneralClient.getLineBySubstationRelation(1); Dept dept = deptFeignClient.getRootDept().getData(); @@ -167,7 +420,7 @@ public class PollutionServiceImpl implements PollutionService { } /*MySql入表 r_mp_pollution_d*/ - private void insertPollutionDayMySql(List pollutionList,List dictDataList, LocalDateTime local){ + private void insertPollutionDayMySql(List pollutionList,List dictDataList, LocalDate local){ for (PollutionDTO pollution : pollutionList){ Map inMap = new HashMap<>(); inMap.put("lineId",pollution.getLineId()); @@ -180,7 +433,7 @@ public class PollutionServiceImpl implements PollutionService { } /*MySql入表 r_stat_pollution_substation*/ - private void insertSubstation(List dictDataList,Map> substationMap,List pollutionDayList,LocalDateTime local,LocalDateTime localEnd, Integer type){ + private void insertSubstation(List dictDataList,Map> substationMap,List pollutionDayList,LocalDate local,LocalDate localEnd, Integer type){ if(Integer.valueOf(BizParamConstant.STAT_BIZ_DAY).equals(type)){ for (String key : substationMap.keySet()){ List processList = new ArrayList<>(); @@ -256,7 +509,7 @@ public class PollutionServiceImpl implements PollutionService { } /*MySql入表 r_stat_pollution_org*/ - private void insertUnit(List dictDataList,List deptGetChildrenDTOList,List pollutionDayList,LocalDateTime local, LocalDateTime localEnd, Integer type){ + private void insertUnit(List dictDataList,List deptGetChildrenDTOList,List pollutionDayList,LocalDate local, LocalDate localEnd, Integer type){ if (Integer.valueOf(BizParamConstant.STAT_BIZ_DAY).equals(type)){ for (DeptGetChildrenDTO deptGetChildrenDTO : deptGetChildrenDTOList){ List processList = new ArrayList<>(); diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpPassRateDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpPassRateDServiceImpl.java index 4dcfc9c6c..3bc59e49f 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpPassRateDServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpPassRateDServiceImpl.java @@ -91,7 +91,8 @@ public class RMpPassRateDServiceImpl extends MppServiceImpl rMpPassRateDPOList = this.getBaseMapper ( ).selectList (queryWrapper); if (CollectionUtils.isEmpty(rMpPassRateDPOList)) { - return; + continue; + } Map> collect1 = rMpPassRateDPOList.stream().collect(Collectors.groupingBy(RMpPassRateDPO::getMeasurementPointId)); collect1.forEach((k,v)->{ @@ -187,7 +189,8 @@ public class RMpPassRateDServiceImpl extends MppServiceImpl rMpPassRateDPOList = this.getBaseMapper ( ).selectList (queryWrapper); if (CollectionUtils.isEmpty(rMpPassRateDPOList)) { - return; + continue; + } Map> collect1 = rMpPassRateDPOList.stream().collect(Collectors.groupingBy(RMpPassRateDPO::getMeasurementPointId)); collect1.forEach((k,v)->{ @@ -227,7 +230,8 @@ public class RMpPassRateDServiceImpl extends MppServiceImpl rMpPassRateDPOList = this.getBaseMapper ( ).selectList (queryWrapper); if (CollectionUtils.isEmpty(rMpPassRateDPOList)) { - return; + continue; + } Map> collect1 = rMpPassRateDPOList.stream().collect(Collectors.groupingBy(RMpPassRateDPO::getMeasurementPointId)); collect1.forEach((k,v)->{ diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/ROperatingMonitorDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/ROperatingMonitorDServiceImpl.java index cb1647e3a..428feeb8a 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/ROperatingMonitorDServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/ROperatingMonitorDServiceImpl.java @@ -140,14 +140,16 @@ public class ROperatingMonitorDServiceImpl extends MppServiceImpl data, String dataDate, Integer type); + + void handleDay(CalculatedParam calculatedParam); + + void handleMonth(CalculatedParam calculatedParam); + + void handleQtr(CalculatedParam calculatedParam); + + void handleYear(CalculatedParam calculatedParam); } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/PollutionService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/PollutionService.java index 3b481814c..85b09776a 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/PollutionService.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/PollutionService.java @@ -1,5 +1,8 @@ package com.njcn.prepare.harmonic.service.mysql.line; +import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; +import com.njcn.device.biz.pojo.dto.DeptGetSubStationDTO; +import com.njcn.prepare.bo.CalculatedParam; import com.njcn.prepare.harmonic.pojo.param.LineParam; /** @@ -12,5 +15,22 @@ import com.njcn.prepare.harmonic.pojo.param.LineParam; public interface PollutionService { void processPollutionData(LineParam lineParam); +/***--------------------------新算法--------------------------------------------**/ + void handleDay(CalculatedParam calculatedParam); + void handleOrgDay(CalculatedParam calculatedParam); + + void handleOrgMonth(CalculatedParam calculatedParam); + + void handleOrgQtr(CalculatedParam calculatedParam); + + void handleOrgYear(CalculatedParam calculatedParam); + + void handleSubstationDay(CalculatedParam calculatedParam); + + void handleSubstationMonth(CalculatedParam calculatedParam); + + void handleSubstationQtr(CalculatedParam calculatedParam); + + void handleSubstationYear(CalculatedParam calculatedParam); }