From f9d9f45764b30a0a80c91ffb4b0f3c25f68e7a55 Mon Sep 17 00:00:00 2001 From: huangzj <826100833@qq.com> Date: Fri, 10 Nov 2023 08:58:27 +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 --- .../SpecialAnalysisFeignClient.java | 29 ++ ...ialAnalysisFeignClientFallbackFactory.java | 44 ++ .../pojo/mysql/RMpMonitorEvaluateDPO.java | 3 +- .../pojo/mysql/ROperatingMonitorDPO.java | 3 +- .../pojo/mysql/ROperatingMonitorMPO.java | 3 +- .../harmonic/pojo/mysql/RStatAbnormalDPO.java | 3 +- ...pecialAnalysisIndexOverviewDetailedPO.java | 88 ++++ .../po/SpecialAnalysisIndexOverviewPO.java | 63 +++ .../prepare/executor/MeasurementExecutor.java | 44 +- .../area/PrimaryGridDataController.java | 1 + ...pecialAnalysisIndexOverviewController.java | 54 +++ ...AnalysisIndexOverviewDetailedPOMapper.java | 16 + .../SpecialAnalysisIndexOverviewPOMapper.java | 19 + ...lAnalysisIndexOverviewDetailedPOMapper.xml | 26 ++ .../SpecialAnalysisIndexOverviewPOMapper.xml | 20 + .../mysql/line/RStatAbnormalDMapper.java | 4 + .../line/mapping/RStatAbnormalDMapper.xml | 21 + ...sisIndexOverviewDetailedPOServiceImpl.java | 21 + ...ialAnalysisIndexOverviewPOServiceImpl.java | 25 ++ ...ecialAnalysisIndexOverviewServiceImpl.java | 392 ++++++++++++++++++ .../Impl/line/DataExceptionServiceImpl.java | 3 +- .../line/RMpMonitorEvaluateDServiceImpl.java | 8 +- .../line/ROperatingMonitorDServiceImpl.java | 165 +++++--- .../line/ROperatingMonitorMServiceImpl.java | 54 ++- .../Impl/line/RStatAbnormalDServiceImpl.java | 67 ++- ...nalysisIndexOverviewDetailedPOService.java | 17 + ...SpecialAnalysisIndexOverviewPOService.java | 22 + .../SpecialAnalysisIndexOverviewService.java | 14 + .../line/RMpMonitorEvaluateDService.java | 2 +- .../mysql/line/ROperatingMonitorMService.java | 3 + .../mysql/line/ROperatingMonitorService.java | 3 + .../mysql/line/RStatAbnormalDService.java | 3 + 32 files changed, 1153 insertions(+), 87 deletions(-) create mode 100644 pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/specialanalysis/SpecialAnalysisFeignClient.java create mode 100644 pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/specialanalysis/fallback/SpecialAnalysisFeignClientFallbackFactory.java create mode 100644 pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/SpecialAnalysisIndexOverviewDetailedPO.java create mode 100644 pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/SpecialAnalysisIndexOverviewPO.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/specialloadanalysis/SpecialAnalysisIndexOverviewController.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/SpecialAnalysisIndexOverviewDetailedPOMapper.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/SpecialAnalysisIndexOverviewPOMapper.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/mapping/SpecialAnalysisIndexOverviewDetailedPOMapper.xml create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/mapping/SpecialAnalysisIndexOverviewPOMapper.xml create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/SpecialAnalysisIndexOverviewDetailedPOServiceImpl.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/SpecialAnalysisIndexOverviewPOServiceImpl.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/SpecialAnalysisIndexOverviewServiceImpl.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/SpecialAnalysisIndexOverviewDetailedPOService.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/SpecialAnalysisIndexOverviewPOService.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/SpecialAnalysisIndexOverviewService.java diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/specialanalysis/SpecialAnalysisFeignClient.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/specialanalysis/SpecialAnalysisFeignClient.java new file mode 100644 index 000000000..d59224102 --- /dev/null +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/specialanalysis/SpecialAnalysisFeignClient.java @@ -0,0 +1,29 @@ +package com.njcn.prepare.harmonic.api.specialanalysis; + +import com.njcn.common.pojo.annotation.OperateInfo; +import com.njcn.common.pojo.constant.ServerInfo; +import com.njcn.common.pojo.enums.common.LogEnum; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.prepare.harmonic.api.newalgorithm.fallback.RStatHarmonicFeignClientFallbackFactory; +import com.njcn.prepare.harmonic.api.specialanalysis.fallback.SpecialAnalysisFeignClientFallbackFactory; +import com.njcn.prepare.harmonic.pojo.param.LineParam; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +/** + * @author qijian + * @version 1.0.0 + * @date 2022年10月24日 20:13 + */ + +@FeignClient( + value = ServerInfo.PREPARE_BOOT,//对应模块名 + path = "/specialAnalysisIndexOverview",//对应controller请求类 + fallbackFactory = SpecialAnalysisFeignClientFallbackFactory.class//服务降级处理类 +) +public interface SpecialAnalysisFeignClient { + + @PostMapping("hanlder") + HttpResult hanlder(@RequestBody LineParam jobParam); +} diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/specialanalysis/fallback/SpecialAnalysisFeignClientFallbackFactory.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/specialanalysis/fallback/SpecialAnalysisFeignClientFallbackFactory.java new file mode 100644 index 000000000..f98859c5f --- /dev/null +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/specialanalysis/fallback/SpecialAnalysisFeignClientFallbackFactory.java @@ -0,0 +1,44 @@ +package com.njcn.prepare.harmonic.api.specialanalysis.fallback; + +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.prepare.harmonic.api.newalgorithm.PmsStatisticsSpecialMonitorFeignClient; +import com.njcn.prepare.harmonic.api.newalgorithm.RStatHarmonicOrgFeignClient; +import com.njcn.prepare.harmonic.api.specialanalysis.SpecialAnalysisFeignClient; +import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.prepare.harmonic.pojo.param.OrgParam; +import com.njcn.prepare.harmonic.utils.PrepareEnumUtil; +import feign.hystrix.FallbackFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * Description: + * Date: 2023/11/7 9:29【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Slf4j +@Component +public class SpecialAnalysisFeignClientFallbackFactory implements FallbackFactory { + @Override + public SpecialAnalysisFeignClient create(Throwable throwable) { + Enum exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK; + if (throwable.getCause() instanceof BusinessException) { + BusinessException businessException = (BusinessException)throwable.getCause(); + exceptionEnum = PrepareEnumUtil.getExceptionEnum(businessException.getResult()); + } + + Enum finalExceptionEnum = exceptionEnum; + return new SpecialAnalysisFeignClient() { + + @Override + public HttpResult hanlder(LineParam jobParam) { + log.error("{}异常,降级处理,异常为:{}", "专项分析指标总览: ", throwable.toString()); + throw new BusinessException(finalExceptionEnum); + } + }; + } +} diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/RMpMonitorEvaluateDPO.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/RMpMonitorEvaluateDPO.java index eece22807..36d901577 100644 --- a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/RMpMonitorEvaluateDPO.java +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/RMpMonitorEvaluateDPO.java @@ -6,6 +6,7 @@ import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.time.LocalDate; import java.util.Date; /** @@ -31,7 +32,7 @@ public class RMpMonitorEvaluateDPO { private String measurementPointId; @MppMultiId(value = "data_date") - private Date dataDate; + private LocalDate dataDate; @TableField(value = "device_id") private String deviceId; diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/ROperatingMonitorDPO.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/ROperatingMonitorDPO.java index 8a055f4da..335ec2a08 100644 --- a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/ROperatingMonitorDPO.java +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/ROperatingMonitorDPO.java @@ -6,6 +6,7 @@ import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import lombok.Data; import java.math.BigDecimal; +import java.time.LocalDate; import java.util.Date; /** @@ -24,7 +25,7 @@ import java.util.Date; @TableName(value = "r_operating_monitor_d") public class ROperatingMonitorDPO { @MppMultiId(value = "data_date") - private Date dataDate; + private LocalDate dataDate; /** * 监测点Id diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/ROperatingMonitorMPO.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/ROperatingMonitorMPO.java index ee55a1181..d3ce2377d 100644 --- a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/ROperatingMonitorMPO.java +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/ROperatingMonitorMPO.java @@ -6,6 +6,7 @@ import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import lombok.Data; import java.math.BigDecimal; +import java.time.LocalDate; import java.util.Date; /** @@ -24,7 +25,7 @@ import java.util.Date; @TableName(value = "r_operating_monitor_m") public class ROperatingMonitorMPO { @MppMultiId(value = "data_date") - private Date dataDate; + private LocalDate dataDate; /** * 监测点Id diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/RStatAbnormalDPO.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/RStatAbnormalDPO.java index 6b087a1be..789b37252 100644 --- a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/RStatAbnormalDPO.java +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/mysql/RStatAbnormalDPO.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; /** @@ -23,7 +24,7 @@ public class RStatAbnormalDPO { * 时间 */ @MppMultiId(value = "data_date") - private Date dataDate; + private LocalDate dataDate; /** * 监测点ID diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/SpecialAnalysisIndexOverviewDetailedPO.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/SpecialAnalysisIndexOverviewDetailedPO.java new file mode 100644 index 000000000..944baf4d9 --- /dev/null +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/SpecialAnalysisIndexOverviewDetailedPO.java @@ -0,0 +1,88 @@ +package com.njcn.prepare.harmonic.pojo.po; + +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.util.Date; + +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; +import lombok.Data; + +/** + * + * Description: + * Date: 2023/11/1 15:08【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +@TableName(value = "special_analysis_index_overview_detailed") +public class SpecialAnalysisIndexOverviewDetailedPO { + /** + * 单位id + */ + @MppMultiId(value = "org_no") + private String orgNo; + + /** + * 数据统计日期 + */ + @MppMultiId(value = "data_date") + private Date dataDate; + + /** + * 监测点标签(字典,区分风电场、光伏电站等) + */ + @MppMultiId(value = "monitor_tag") + private String monitorTag; + + /** + * 谐波电流超标点占比 + */ + @TableField(value = "monitor_harmonic_electric_exceeds_proportion") + private Double monitorHarmonicElectricExceedsProportion; + + /** + * 谐波电流平均超标天数 + */ + @TableField(value = "monitor_harmonic_electric_exceeds_avg_days") + private Double monitorHarmonicElectricExceedsAvgDays; + + /** + * 谐波电压含有率超标点占比 + */ + @TableField(value = "monitor_harmonic_voltage_content_exceeds_proportion") + private Double monitorHarmonicVoltageContentExceedsProportion; + + /** + * 谐波电压含有率平均超标天数 + */ + @TableField(value = "monitor_harmonic_voltage_content_exceeds_avg_days") + private Double monitorHarmonicVoltageContentExceedsAvgDays; + + /** + * 各地市电压指标超标点数占比 + */ + @TableField(value = "voltage_index_exceeds_proportion") + private Double voltageIndexExceedsProportion; + + /** + * 各地市电压指标平均超标天数 + */ + @TableField(value = "voltage_index_exceeds_avg_days") + private Double voltageIndexExceedsAvgDays; + + /** + * 各地市电流指标超标点数占比 + */ + @TableField(value = "electric_index_exceeds_proportion") + private Double electricIndexExceedsProportion; + + /** + * 各地市电流指标平均超标天数 + */ + @TableField(value = "electric_index_exceeds_avg_days") + private Double electricIndexExceedsAvgDays; +} \ No newline at end of file diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/SpecialAnalysisIndexOverviewPO.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/SpecialAnalysisIndexOverviewPO.java new file mode 100644 index 000000000..09ab5d115 --- /dev/null +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/po/SpecialAnalysisIndexOverviewPO.java @@ -0,0 +1,63 @@ +package com.njcn.prepare.harmonic.pojo.po; + +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.util.Date; + +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; +import lombok.Data; + +/** + * Description: + * Date: 2023/11/1 15:07【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +@TableName(value = "special_analysis_index_overview") +public class SpecialAnalysisIndexOverviewPO { + /** + * 单位id + */ + @MppMultiId(value = "org_no") + private String orgNo; + + /** + * 数据统计日期 + */ + @MppMultiId(value = "data_date") + private Date dataDate; + + /** + * 监测点标签(字典,区分风电场、光伏电站等) + */ + @MppMultiId(value = "monitor_tag") + private String monitorTag; + + /** + * 谐波电流超标监测点数 + */ + @TableField(value = "monitor_harmonic_electric_exceeds_num") + private Integer monitorHarmonicElectricExceedsNum; + + /** + * 谐波电压含有率超标监测点数 + */ + @TableField(value = "monitor_harmonic_voltage_content_exceeds_num") + private Integer monitorHarmonicVoltageContentExceedsNum; + + /** + * 各地市电压指标超标点数 + */ + @TableField(value = "voltage_index_exceeds_num") + private Integer voltageIndexExceedsNum; + + /** + * 各地市电流指标超标点数 + */ + @TableField(value = "electric_index_exceeds_num") + private Integer electricIndexExceedsNum; +} \ No newline at end of file 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 e0dad5372..99319da06 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 @@ -1,9 +1,7 @@ package com.njcn.prepare.executor; import com.njcn.prepare.bo.CalculatedParam; -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; import com.yomahub.liteflow.core.NodeComponent; @@ -27,7 +25,10 @@ public class MeasurementExecutor extends BaseExecutor { private final RMpEventDetailDService rMpEventDetailDService; + private final RStatAbnormalDService rStatAbnormalDService; + private final ROperatingMonitorService rOperatingMonitorService; + private final ROperatingMonitorMService rOperatingMonitorMService; /** * 算法名: 3.3.1.1-----监测点评价 * @@ -70,5 +71,42 @@ public class MeasurementExecutor extends BaseExecutor { } } + /** + * 3.3.1.2. 监测点数据异常_日表 + * @param bindCmp + */ + @LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rStatAbnormalD", nodeType = NodeTypeEnum.COMMON) + public boolean processRStatAbnormalDAccess(NodeComponent bindCmp) { + return isAccess(bindCmp); + } + @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rStatAbnormalD", nodeType = NodeTypeEnum.COMMON) + public void processRStatAbnormalDProcess(NodeComponent bindCmp) { + CalculatedParam calculatedParam = bindCmp.getRequestData(); + rStatAbnormalDService.handlerMonitorAbnormal(calculatedParam); + } + + /** + *3.3.1.3. 监测点指标数据质量_日表 3.3.1.4. 监测点指标数据质量_月表 + */ + + @LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rOperatingMonitor", nodeType = NodeTypeEnum.COMMON) + public boolean processOperatingMonitorAccess(NodeComponent bindCmp) { + return isAccess(bindCmp); + } + @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rOperatingMonitor", nodeType = NodeTypeEnum.COMMON) + public void processOperatingMonitorProcess(NodeComponent bindCmp) { + String tag = bindCmp.getTag(); + CalculatedParam calculatedParam = bindCmp.getRequestData(); + if (tag.equalsIgnoreCase("r_operating_monitor_d")) { + //日表 + rOperatingMonitorService.handleDay(calculatedParam); + } else if (tag.equalsIgnoreCase("r_operating_monitor_m")) { + //数据补招不执行非日表算法 + if (!calculatedParam.isRepair()) { + //月表 + rOperatingMonitorMService.handleMonth(calculatedParam); + } + } + } } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/area/PrimaryGridDataController.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/area/PrimaryGridDataController.java index 17c5c8ee8..74f798fe4 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/area/PrimaryGridDataController.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/area/PrimaryGridDataController.java @@ -46,6 +46,7 @@ import java.util.stream.Collectors; @RestController @RequestMapping("primaryGridData") @RequiredArgsConstructor +@Deprecated public class PrimaryGridDataController extends BaseController { private @Autowired diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/specialloadanalysis/SpecialAnalysisIndexOverviewController.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/specialloadanalysis/SpecialAnalysisIndexOverviewController.java new file mode 100644 index 000000000..601cf190c --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/specialloadanalysis/SpecialAnalysisIndexOverviewController.java @@ -0,0 +1,54 @@ +package com.njcn.prepare.harmonic.controller.specialloadanalysis; + + +import com.njcn.common.pojo.annotation.OperateInfo; +import com.njcn.common.pojo.enums.common.LogEnum; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.common.utils.HttpResultUtil; +import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.prepare.harmonic.service.mysql.SpecialAnalysisIndexOverviewService; +import com.njcn.prepare.harmonic.service.mysql.newalgorithm.IRMpEmissionMService; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.time.LocalDateTime; + +/** + *

+ * 风电场发射特性-月表 前端控制器 + *

+ * + * @author wr + * @since 2023-10-16 + */ +@Slf4j +@Api(tags = "专项分析指标总览(按月来算)") +@RestController +@RequestMapping("/specialAnalysisIndexOverview") +@RequiredArgsConstructor +public class SpecialAnalysisIndexOverviewController extends BaseController { + + private final SpecialAnalysisIndexOverviewService specialAnalysisIndexOverviewService; + + @ApiOperation("指标总览") + @ApiImplicitParam(value = "jobParam", name = "jobParam", required = true) + @PostMapping("hanlder") + @OperateInfo(info = LogEnum.BUSINESS_MEDIUM) + public HttpResult hanlder(@RequestBody LineParam jobParam) { + log.info(LocalDateTime.now() + "专项分析-指标总览开始执行"); + String methodDescribe = getMethodDescribe("hanlder"); + specialAnalysisIndexOverviewService.hanlder(jobParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe); + + } +} + diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/SpecialAnalysisIndexOverviewDetailedPOMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/SpecialAnalysisIndexOverviewDetailedPOMapper.java new file mode 100644 index 000000000..89acb6d78 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/SpecialAnalysisIndexOverviewDetailedPOMapper.java @@ -0,0 +1,16 @@ +package com.njcn.prepare.harmonic.mapper.mysql.area; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; +import com.njcn.prepare.harmonic.pojo.po.SpecialAnalysisIndexOverviewDetailedPO; + +/** + * + * Description: + * Date: 2023/11/1 15:08【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface SpecialAnalysisIndexOverviewDetailedPOMapper extends MppBaseMapper { +} \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/SpecialAnalysisIndexOverviewPOMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/SpecialAnalysisIndexOverviewPOMapper.java new file mode 100644 index 000000000..f73036f1f --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/SpecialAnalysisIndexOverviewPOMapper.java @@ -0,0 +1,19 @@ +package com.njcn.prepare.harmonic.mapper.mysql.area; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; +import com.njcn.prepare.harmonic.pojo.po.SpecialAnalysisIndexOverviewPO; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; + +/** + * Description: + * Date: 2023/11/1 15:07【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface SpecialAnalysisIndexOverviewPOMapper extends MppBaseMapper { + +} \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/mapping/SpecialAnalysisIndexOverviewDetailedPOMapper.xml b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/mapping/SpecialAnalysisIndexOverviewDetailedPOMapper.xml new file mode 100644 index 000000000..31b83900a --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/mapping/SpecialAnalysisIndexOverviewDetailedPOMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + org_no, data_date, monitor_tag, monitor_harmonic_electric_exceeds_proportion, monitor_harmonic_electric_exceeds_avg_days, + monitor_harmonic_voltage_content_exceeds_proportion, monitor_harmonic_voltage_content_exceeds_avg_days, + voltage_index_exceeds_proportion, voltage_index_exceeds_avg_days, electric_index_exceeds_proportion, + electric_index_exceeds_avg_days + + \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/mapping/SpecialAnalysisIndexOverviewPOMapper.xml b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/mapping/SpecialAnalysisIndexOverviewPOMapper.xml new file mode 100644 index 000000000..ee549d345 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/area/mapping/SpecialAnalysisIndexOverviewPOMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + org_no, data_date, monitor_tag, monitor_harmonic_electric_exceeds_num, monitor_harmonic_voltage_content_exceeds_num, + voltage_index_exceeds_num, electric_index_exceeds_num + + \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/RStatAbnormalDMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/RStatAbnormalDMapper.java index 74298b8ee..47b54f764 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/RStatAbnormalDMapper.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/RStatAbnormalDMapper.java @@ -2,6 +2,9 @@ package com.njcn.prepare.harmonic.mapper.mysql.line; import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; import com.njcn.prepare.harmonic.pojo.mysql.RStatAbnormalDPO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * Description: @@ -12,4 +15,5 @@ import com.njcn.prepare.harmonic.pojo.mysql.RStatAbnormalDPO; * @version V1.0.0 */ public interface RStatAbnormalDMapper extends MppBaseMapper { + List handlerMonitorAbnormal(@Param("pendingId") List pendingId, @Param("format") String format, @Param("beginDay") String beginDay, @Param("endDay") String endDay); } \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/mapping/RStatAbnormalDMapper.xml b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/mapping/RStatAbnormalDMapper.xml index d89f17275..cddeb64dd 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/mapping/RStatAbnormalDMapper.xml +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/mapping/RStatAbnormalDMapper.xml @@ -12,4 +12,25 @@ data_date, measurement_point_id, value_alarm + + \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/SpecialAnalysisIndexOverviewDetailedPOServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/SpecialAnalysisIndexOverviewDetailedPOServiceImpl.java new file mode 100644 index 000000000..43d6b75e0 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/SpecialAnalysisIndexOverviewDetailedPOServiceImpl.java @@ -0,0 +1,21 @@ +package com.njcn.prepare.harmonic.service.mysql.Impl; + +import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import org.springframework.stereotype.Service; +import java.util.List; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.prepare.harmonic.mapper.mysql.area.SpecialAnalysisIndexOverviewDetailedPOMapper; +import com.njcn.prepare.harmonic.pojo.po.SpecialAnalysisIndexOverviewDetailedPO; +import com.njcn.prepare.harmonic.service.mysql.SpecialAnalysisIndexOverviewDetailedPOService; +/** + * + * Description: + * Date: 2023/11/1 15:08【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Service +public class SpecialAnalysisIndexOverviewDetailedPOServiceImpl extends MppServiceImpl implements SpecialAnalysisIndexOverviewDetailedPOService{ + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/SpecialAnalysisIndexOverviewPOServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/SpecialAnalysisIndexOverviewPOServiceImpl.java new file mode 100644 index 000000000..5744c9e13 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/SpecialAnalysisIndexOverviewPOServiceImpl.java @@ -0,0 +1,25 @@ +package com.njcn.prepare.harmonic.service.mysql.Impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.prepare.harmonic.mapper.mysql.area.SpecialAnalysisIndexOverviewDetailedPOMapper; +import com.njcn.prepare.harmonic.pojo.po.SpecialAnalysisIndexOverviewDetailedPO; +import org.springframework.stereotype.Service; +import com.njcn.prepare.harmonic.mapper.mysql.area.SpecialAnalysisIndexOverviewPOMapper; +import java.util.Date; +import com.njcn.prepare.harmonic.pojo.po.SpecialAnalysisIndexOverviewPO; +import com.njcn.prepare.harmonic.service.mysql.SpecialAnalysisIndexOverviewPOService; +/** + * + * Description: + * Date: 2023/11/1 15:06【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Service +public class SpecialAnalysisIndexOverviewPOServiceImpl extends MppServiceImpl implements SpecialAnalysisIndexOverviewPOService{ + + + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/SpecialAnalysisIndexOverviewServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/SpecialAnalysisIndexOverviewServiceImpl.java new file mode 100644 index 000000000..9bd90d649 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/SpecialAnalysisIndexOverviewServiceImpl.java @@ -0,0 +1,392 @@ +package com.njcn.prepare.harmonic.service.mysql.Impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.njcn.device.biz.commApi.CommTerminalGeneralClient; +import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; +import com.njcn.device.biz.pojo.dto.LineDevGetDTO; +import com.njcn.device.biz.pojo.param.DeptGetLineParam; +import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; +import com.njcn.prepare.harmonic.mapper.mysql.day.RStatLimitRateDMapper; +import com.njcn.prepare.harmonic.pojo.param.LineParam; +import com.njcn.prepare.harmonic.pojo.po.SpecialAnalysisIndexOverviewDetailedPO; +import com.njcn.prepare.harmonic.pojo.po.SpecialAnalysisIndexOverviewPO; +import com.njcn.prepare.harmonic.service.mysql.SpecialAnalysisIndexOverviewDetailedPOService; +import com.njcn.prepare.harmonic.service.mysql.SpecialAnalysisIndexOverviewPOService; +import com.njcn.prepare.harmonic.service.mysql.SpecialAnalysisIndexOverviewService; +import com.njcn.user.api.DeptFeignClient; +import com.njcn.user.pojo.po.Dept; +import lombok.RequiredArgsConstructor; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.text.DecimalFormat; +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; + +/** + * Description: + * Date: 2023/11/1 15:14【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@RequiredArgsConstructor +@Service +public class SpecialAnalysisIndexOverviewServiceImpl implements SpecialAnalysisIndexOverviewService { + + private final CommTerminalGeneralClient commTerminalGeneralClient; + private final DeptFeignClient deptFeignClient; + private final RStatLimitRateDMapper rStatLimitRateDMapper; + private final SpecialAnalysisIndexOverviewPOService specialAnalysisIndexOverviewPOService; + private final SpecialAnalysisIndexOverviewDetailedPOService specialAnalysisIndexOverviewDetailedPOService; + @Override + @Async("asyncExecutor") + @Transactional(rollbackFor = {Exception.class}) + public void hanlder(LineParam jobParam) { + + List specialAnalysisIndexOverviewPOList = new ArrayList<>(); + List specialAnalysisIndexOverviewDetailedPOList = new ArrayList<>(); + + + Dept data = deptFeignClient.getRootDept().getData(); + DeptGetLineParam deptGetLineParam = new DeptGetLineParam(); + deptGetLineParam.setDeptId(data.getId()); + List data1 = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData(); + Date date = DateUtil.parse(jobParam.getDataDate()); + + for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : data1) { + Map> lineBaseMap = new HashMap<>(); + + List lineBaseList = new ArrayList<>(); + if(CollUtil.isNotEmpty(deptGetChildrenMoreDTO.getLineBaseList())){ + lineBaseList.addAll(deptGetChildrenMoreDTO.getLineBaseList()); + } + if(CollUtil.isNotEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())){ + lineBaseList.addAll(deptGetChildrenMoreDTO.getPwMonitorIds()); + } + + if (CollUtil.isNotEmpty(lineBaseList)) { + Map> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag)); + + + + collect.forEach((k, v) -> { + + SpecialAnalysisIndexOverviewPO specialAnalysisIndexOverviewPO = new SpecialAnalysisIndexOverviewPO(); + SpecialAnalysisIndexOverviewDetailedPO specialAnalysisIndexOverviewDetailedPO = new SpecialAnalysisIndexOverviewDetailedPO(); + + specialAnalysisIndexOverviewPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); + specialAnalysisIndexOverviewPO.setDataDate(date); + specialAnalysisIndexOverviewPO.setMonitorTag(k); + + specialAnalysisIndexOverviewDetailedPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); + specialAnalysisIndexOverviewDetailedPO.setDataDate(date); + specialAnalysisIndexOverviewDetailedPO.setMonitorTag(k); + + + List collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); + List rStatLimitRateMS = rStatLimitRateDMapper.selectList(new LambdaQueryWrapper(). + in(RStatLimitRateDPO::getLineId, collect1). + ge(StrUtil.isNotBlank(jobParam.getBeginTime()), RStatLimitRateDPO::getTime, DateUtil.beginOfDay(DateUtil.parse(jobParam.getBeginTime()))). + le(StrUtil.isNotBlank(jobParam.getEndTime()), RStatLimitRateDPO::getTime, DateUtil.endOfDay(DateUtil.parse(jobParam.getEndTime())))); + if (CollectionUtils.isEmpty(rStatLimitRateMS)){ + //单位下没数据不补0,0,0的数据 + return; + } + + + Map> collect2 = rStatLimitRateMS.stream().collect(Collectors.groupingBy(RStatLimitRateDPO::getLineId)); + + //谐波电流超标监测点数 + AtomicInteger iCount = new AtomicInteger(); + //谐波电压含有率超标监测点数 + AtomicInteger vCount = new AtomicInteger(); + //电流指标超标点数 + AtomicInteger iIndexCount = new AtomicInteger(); + //电压指标超标点数 + AtomicInteger vIndexCount = new AtomicInteger(); + + + //谐波电流超标监测点天数 + AtomicInteger iDayCount = new AtomicInteger(); + + //谐波电压含有率超标监测点天数 + AtomicInteger vDayCount = new AtomicInteger(); + + //电流指标超标点天数 + AtomicInteger iDayIndexCount = new AtomicInteger(); + + //电压指标超标点天数 + AtomicInteger vDayIndexCount = new AtomicInteger(); + + + + + collect2.forEach((lineId,rStatLimitRateDPOList)->{ + Map> collect3 = rStatLimitRateDPOList.stream().collect(Collectors.groupingBy(RStatLimitRateDPO::getTime)); + if(isOverLimit(rStatLimitRateDPOList,1)){ + iCount.getAndIncrement(); + } + if(isOverLimit(rStatLimitRateDPOList,2)){ + vCount.getAndIncrement(); + } + if(isOverLimit(rStatLimitRateDPOList,3)){ + iIndexCount.getAndIncrement(); + } + if(isOverLimit(rStatLimitRateDPOList,4)){ + vIndexCount.getAndIncrement(); + } + collect3.forEach((day, temp) -> { + if(isOverLimit(rStatLimitRateDPOList,1)){ + iDayCount.getAndIncrement(); + } + if(isOverLimit(rStatLimitRateDPOList,2)){ + iDayCount.getAndIncrement(); + } + if(isOverLimit(rStatLimitRateDPOList,3)){ + iDayCount.getAndIncrement(); + } + if(isOverLimit(rStatLimitRateDPOList,4)){ + iDayCount.getAndIncrement(); + } + + }); + }); + + + specialAnalysisIndexOverviewPO.setMonitorHarmonicElectricExceedsNum(iCount.get()); + specialAnalysisIndexOverviewPO.setMonitorHarmonicVoltageContentExceedsNum(vCount.get()); + specialAnalysisIndexOverviewPO.setElectricIndexExceedsNum(iIndexCount.get()); + specialAnalysisIndexOverviewPO.setVoltageIndexExceedsNum(vIndexCount.get()); + + specialAnalysisIndexOverviewDetailedPO.setMonitorHarmonicElectricExceedsProportion( + this.divideAndKeepTwoDecimalPlaces(iCount.get(),collect2.size()) + ); + specialAnalysisIndexOverviewDetailedPO.setMonitorHarmonicElectricExceedsAvgDays( + this.divideAndKeepTwoDecimalPlaces(iDayCount.get(),iCount.get()) + ); + specialAnalysisIndexOverviewDetailedPO.setMonitorHarmonicVoltageContentExceedsProportion( + this.divideAndKeepTwoDecimalPlaces(vCount.get(),collect2.size()) + ); + specialAnalysisIndexOverviewDetailedPO.setMonitorHarmonicVoltageContentExceedsAvgDays( + this.divideAndKeepTwoDecimalPlaces(vDayCount.get(),vCount.get()) + ); + + specialAnalysisIndexOverviewDetailedPO.setElectricIndexExceedsProportion( + this.divideAndKeepTwoDecimalPlaces(iIndexCount.get(),collect2.size()) + ); + specialAnalysisIndexOverviewDetailedPO.setElectricIndexExceedsAvgDays( + this.divideAndKeepTwoDecimalPlaces(iCount.get(),iIndexCount.get()) + ); + specialAnalysisIndexOverviewDetailedPO.setVoltageIndexExceedsProportion( + this.divideAndKeepTwoDecimalPlaces(iDayIndexCount.get(),collect2.size()) + ); + specialAnalysisIndexOverviewDetailedPO.setVoltageIndexExceedsAvgDays( + this.divideAndKeepTwoDecimalPlaces(vDayIndexCount.get(),vIndexCount.get()) + ); + + specialAnalysisIndexOverviewPOList.add(specialAnalysisIndexOverviewPO); + specialAnalysisIndexOverviewDetailedPOList.add(specialAnalysisIndexOverviewDetailedPO); + + }); + + } + + + } + + if (CollUtil.isNotEmpty(specialAnalysisIndexOverviewPOList)) { + specialAnalysisIndexOverviewPOService.saveOrUpdateBatchByMultiId(specialAnalysisIndexOverviewPOList, 500); + } + if (CollUtil.isNotEmpty(specialAnalysisIndexOverviewDetailedPOList)) { + specialAnalysisIndexOverviewDetailedPOService.saveOrUpdateBatchByMultiId(specialAnalysisIndexOverviewDetailedPOList, 500); + } + } + /** + * @Description: isOverLimit + * @Param: i代表指标,1,:谐波电流超标 ,2,:谐波电压含有率超标 ,3,:电流指标,4,:电压指标 + * @return: void + * @Author: clam + * @Date: 2023/11/2 + */ + private boolean isOverLimit(List temp, int i) { + boolean flag = false; + switch (i) { + case 1: + int sum = temp.stream().mapToInt(rStatLimitRateDPO -> { + return rStatLimitRateDPO.getIharm2Overtime() + + rStatLimitRateDPO.getIharm3Overtime() + + rStatLimitRateDPO.getIharm4Overtime() + + rStatLimitRateDPO.getIharm5Overtime() + + rStatLimitRateDPO.getIharm6Overtime() + + rStatLimitRateDPO.getIharm7Overtime() + + rStatLimitRateDPO.getIharm8Overtime() + + rStatLimitRateDPO.getIharm9Overtime() + + rStatLimitRateDPO.getIharm10Overtime() + + rStatLimitRateDPO.getIharm11Overtime() + + rStatLimitRateDPO.getIharm12Overtime() + + rStatLimitRateDPO.getIharm13Overtime() + + rStatLimitRateDPO.getIharm14Overtime() + + rStatLimitRateDPO.getIharm15Overtime() + + rStatLimitRateDPO.getIharm16Overtime() + + rStatLimitRateDPO.getIharm17Overtime() + + rStatLimitRateDPO.getIharm18Overtime() + + rStatLimitRateDPO.getIharm19Overtime() + + rStatLimitRateDPO.getIharm20Overtime() + + rStatLimitRateDPO.getIharm21Overtime() + + rStatLimitRateDPO.getIharm22Overtime() + + rStatLimitRateDPO.getIharm23Overtime() + + rStatLimitRateDPO.getIharm24Overtime() + + rStatLimitRateDPO.getIharm25Overtime() + ; + }).sum(); + if (sum>0){ + flag =true; + } + break; + case 2: + int sum2 = temp.stream().mapToInt(rStatLimitRateDPO -> { + return rStatLimitRateDPO.getUharm2Overtime()+ + rStatLimitRateDPO.getUharm3Overtime()+ + rStatLimitRateDPO.getUharm4Overtime()+ + rStatLimitRateDPO.getUharm5Overtime()+ + rStatLimitRateDPO.getUharm6Overtime()+ + rStatLimitRateDPO.getUharm7Overtime()+ + rStatLimitRateDPO.getUharm8Overtime()+ + rStatLimitRateDPO.getUharm9Overtime()+ + rStatLimitRateDPO.getUharm10Overtime() + + rStatLimitRateDPO.getUharm11Overtime() + + rStatLimitRateDPO.getUharm12Overtime() + + rStatLimitRateDPO.getUharm13Overtime() + + rStatLimitRateDPO.getUharm14Overtime() + + rStatLimitRateDPO.getUharm15Overtime() + + rStatLimitRateDPO.getUharm16Overtime() + + rStatLimitRateDPO.getUharm17Overtime() + + rStatLimitRateDPO.getUharm18Overtime() + + rStatLimitRateDPO.getUharm19Overtime() + + rStatLimitRateDPO.getUharm20Overtime() + + rStatLimitRateDPO.getUharm21Overtime() + + rStatLimitRateDPO.getUharm22Overtime() + + rStatLimitRateDPO.getUharm23Overtime() + + rStatLimitRateDPO.getUharm24Overtime() + + rStatLimitRateDPO.getUharm25Overtime() + ; + }).sum(); + if (sum2>0){ + flag =true; + } + + break; + + case 3: + int sum3 = temp.stream().mapToInt(rStatLimitRateDPO -> { + return rStatLimitRateDPO.getIharm2Overtime() + + rStatLimitRateDPO.getIharm3Overtime() + + rStatLimitRateDPO.getIharm4Overtime() + + rStatLimitRateDPO.getIharm5Overtime() + + rStatLimitRateDPO.getIharm6Overtime() + + rStatLimitRateDPO.getIharm7Overtime() + + rStatLimitRateDPO.getIharm8Overtime() + + rStatLimitRateDPO.getIharm9Overtime() + + rStatLimitRateDPO.getIharm10Overtime() + + rStatLimitRateDPO.getIharm11Overtime() + + rStatLimitRateDPO.getIharm12Overtime() + + rStatLimitRateDPO.getIharm13Overtime() + + rStatLimitRateDPO.getIharm14Overtime() + + rStatLimitRateDPO.getIharm15Overtime() + + rStatLimitRateDPO.getIharm16Overtime() + + rStatLimitRateDPO.getIharm17Overtime() + + rStatLimitRateDPO.getIharm18Overtime() + + rStatLimitRateDPO.getIharm19Overtime() + + rStatLimitRateDPO.getIharm20Overtime() + + rStatLimitRateDPO.getIharm21Overtime() + + rStatLimitRateDPO.getIharm22Overtime() + + rStatLimitRateDPO.getIharm23Overtime() + + rStatLimitRateDPO.getIharm24Overtime() + + rStatLimitRateDPO.getIharm25Overtime() + + rStatLimitRateDPO.getINegOvertime() + ; + }).sum(); + if (sum3>0){ + flag =true; + } + break; + case 4: + + int sum4 = temp.stream().mapToInt(rStatLimitRateDPO -> { + return rStatLimitRateDPO.getUharm2Overtime()+ + rStatLimitRateDPO.getUharm3Overtime()+ + rStatLimitRateDPO.getUharm4Overtime()+ + rStatLimitRateDPO.getUharm5Overtime()+ + rStatLimitRateDPO.getUharm6Overtime()+ + rStatLimitRateDPO.getUharm7Overtime()+ + rStatLimitRateDPO.getUharm8Overtime()+ + rStatLimitRateDPO.getUharm9Overtime()+ + rStatLimitRateDPO.getUharm10Overtime() + + rStatLimitRateDPO.getUharm11Overtime() + + rStatLimitRateDPO.getUharm12Overtime() + + rStatLimitRateDPO.getUharm13Overtime() + + rStatLimitRateDPO.getUharm14Overtime() + + rStatLimitRateDPO.getUharm15Overtime() + + rStatLimitRateDPO.getUharm16Overtime() + + rStatLimitRateDPO.getUharm17Overtime() + + rStatLimitRateDPO.getUharm18Overtime() + + rStatLimitRateDPO.getUharm19Overtime() + + rStatLimitRateDPO.getUharm20Overtime() + + rStatLimitRateDPO.getUharm21Overtime() + + rStatLimitRateDPO.getUharm22Overtime() + + rStatLimitRateDPO.getUharm23Overtime() + + rStatLimitRateDPO.getUharm24Overtime() + + rStatLimitRateDPO.getUharm2Overtime()+ + rStatLimitRateDPO.getInuharm1Overtime()+ + rStatLimitRateDPO.getInuharm2Overtime()+ + rStatLimitRateDPO.getInuharm3Overtime()+ + rStatLimitRateDPO.getInuharm4Overtime()+ + rStatLimitRateDPO.getInuharm5Overtime()+ + rStatLimitRateDPO.getInuharm6Overtime()+ + rStatLimitRateDPO.getInuharm7Overtime()+ + rStatLimitRateDPO.getInuharm8Overtime() + + rStatLimitRateDPO.getInuharm9Overtime() + + rStatLimitRateDPO.getInuharm10Overtime() + + rStatLimitRateDPO.getInuharm11Overtime() + + rStatLimitRateDPO.getInuharm12Overtime() + + rStatLimitRateDPO.getInuharm13Overtime() + + rStatLimitRateDPO.getInuharm14Overtime() + + rStatLimitRateDPO.getInuharm15Overtime() + + rStatLimitRateDPO.getInuharm16Overtime() + + rStatLimitRateDPO.getUbalanceOvertime() + + rStatLimitRateDPO.getUaberranceOvertime()+ + rStatLimitRateDPO.getVoltageDevOvertime(); + }).sum(); + if (sum4>0){ + flag =true; + } + break; + default: + break; + } + return flag; + } + /** + * @Description: divideAndKeepTwoDecimalPlaces + * @Param: + * @return: double + * @Author: clam + * @Date: 2023/11/2 + */ + public double divideAndKeepTwoDecimalPlaces(int a, int b) { + if (b == 0) { + return 0.00; + } + double result = (double) a / b; + DecimalFormat df = new DecimalFormat("#.00"); + return Double.parseDouble(df.format(result)); + } + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/DataExceptionServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/DataExceptionServiceImpl.java index c8e4010cb..c98620fa7 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/DataExceptionServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/DataExceptionServiceImpl.java @@ -30,6 +30,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import java.time.ZoneId; import java.util.Date; import java.util.List; import java.util.Objects; @@ -372,7 +373,7 @@ public class DataExceptionServiceImpl implements DataExceptionService { RStatAbnormalDPO rStatAbnormalDOne = rStatAbnormalDMapper.selectOne(lambdaQueryWrapper); if (Objects.isNull(rStatAbnormalDOne)){ RStatAbnormalDPO rStatAbnormalD = new RStatAbnormalDPO(); - rStatAbnormalD.setDataDate(date); + rStatAbnormalD.setDataDate( date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate()); rStatAbnormalD.setMeasurementPointId(lineId); rStatAbnormalD.setValueAlarm(0); rStatAbnormalDMapper.insert(rStatAbnormalD); diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpMonitorEvaluateDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpMonitorEvaluateDServiceImpl.java index ad0f8a24f..d249834a6 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpMonitorEvaluateDServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RMpMonitorEvaluateDServiceImpl.java @@ -28,6 +28,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import java.time.LocalDate; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Date; @@ -75,6 +76,8 @@ public class RMpMonitorEvaluateDServiceImpl extends MppServiceImpl implements ROperatingMonitorService { - private final RMpMonitorEvaluateDService rMpMonitorEvaluateDService; - private final RStatAbnormalDService rStatAbnormalDService; + private final RMpMonitorEvaluateDMapper rMpMonitorEvaluateDMapper; + private final RStatAbnormalDMapper rStatAbnormalDMapper; private final CommLineClient commLineClient; /** @@ -60,57 +68,116 @@ public class ROperatingMonitorDServiceImpl extends MppServiceImpl indexLists, String dataDate) { - Date date = DateUtil.parse(dataDate); + +// Date date = DateUtil.parse(dataDate); +// List rOperatingMonitorDPOList = new ArrayList<> (); +// indexLists.forEach (temp -> { +// ROperatingMonitorDPO rOperatingMonitorDPO = new ROperatingMonitorDPO(); +// +// LineDTO data = commLineClient.getLineDetail(temp).getData(); +// +// /*todo 统计间隔,电压等级取值方式,devid后期提供融合版本接口获取不然pms,pqs系统取值方式不一样*/ +// /*统计间隔*/ +// Integer statisticalInterval = data.getTimeInterval (); +// +// RMpMonitorEvaluateDPO rMpMonitorEvaluateDPO = new RMpMonitorEvaluateDPO(); +// rMpMonitorEvaluateDPO.setMeasurementPointId (temp); +// rMpMonitorEvaluateDPO.setDataDate (date); +// rMpMonitorEvaluateDPO = rMpMonitorEvaluateDMapper.selectByMultiId (rMpMonitorEvaluateDPO); +// if (Objects.isNull(rMpMonitorEvaluateDPO)) { +// return; +// } +// RStatAbnormalDPO rStatAbnormalDPO = new RStatAbnormalDPO(); +// rStatAbnormalDPO.setDataDate (date); +// rStatAbnormalDPO.setMeasurementPointId (temp); +// rStatAbnormalDPO = rStatAbnormalDMapper.selectByMultiId (rStatAbnormalDPO); +// if (Objects.isNull(rStatAbnormalDPO)) { +// return; +// } +// rOperatingMonitorDPO.setMeasurementPointId (temp); +// rOperatingMonitorDPO.setDataDate (date); +// rOperatingMonitorDPO.setIsUnusual (rStatAbnormalDPO.getValueAlarm ()); +// rOperatingMonitorDPO.setEffectiveMinuteCount (rMpMonitorEvaluateDPO.getEffectiveMinuteCount ()); +// rOperatingMonitorDPO.setDataIntegrityRate (BigDecimal.valueOf (rMpMonitorEvaluateDPO.getEffectiveMinuteCount ()*statisticalInterval/1440)); +// if(rMpMonitorEvaluateDPO.getEffectiveMinuteCount ()==0){ +// rOperatingMonitorDPO.setDataRightRate(BigDecimal.valueOf(0.00)); +// }else{ +// rOperatingMonitorDPO.setDataRightRate (BigDecimal.valueOf( +// (rMpMonitorEvaluateDPO.getFreqCount ()+ rMpMonitorEvaluateDPO.getLineVoltageCount ()+ +// rMpMonitorEvaluateDPO.getPhaseVoltageCount ()+rMpMonitorEvaluateDPO.getUnbalanceCount ()+ +// rMpMonitorEvaluateDPO.getVThdCount ())/(5*rMpMonitorEvaluateDPO.getEffectiveMinuteCount ()) +// )); +// } +// +// rOperatingMonitorDPO.setIndexIntegrityRate ( +// BigDecimal.valueOf( +// (rMpMonitorEvaluateDPO.getFreqCount ()+ rMpMonitorEvaluateDPO.getLineVoltageCount ()+ +// rMpMonitorEvaluateDPO.getPhaseVoltageCount ()+rMpMonitorEvaluateDPO.getUnbalanceCount ()+ +// rMpMonitorEvaluateDPO.getVThdCount ())*statisticalInterval/(5*1440) +// ) +// ); +// rOperatingMonitorDPO.setDevId (data.getDevId()); +// rOperatingMonitorDPO.setMonitorState("0"); +// rOperatingMonitorDPOList.add (rOperatingMonitorDPO); +// }); +// this.saveOrUpdateBatchByMultiId (rOperatingMonitorDPOList,500); + } + + @Override + public void handleDay(CalculatedParam calculatedParam) { + LocalDate localDate = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN); List rOperatingMonitorDPOList = new ArrayList<> (); - indexLists.forEach (temp -> { - ROperatingMonitorDPO rOperatingMonitorDPO = new ROperatingMonitorDPO(); + List> pendingIds = ListUtils.partition(calculatedParam.getIdList(), 1000); + for (List pendingId : pendingIds) { + List lineDTOList = commLineClient.getLineDetailBatch(pendingId).getData(); + List rMpMonitorEvaluateDPOS = new ArrayList<>(); + for (LineDTO lineDTO : lineDTOList) { + ROperatingMonitorDPO rOperatingMonitorDPO = new ROperatingMonitorDPO(); - LineDTO data = commLineClient.getLineDetail(temp).getData(); - - /*todo 统计间隔,电压等级取值方式,devid后期提供融合版本接口获取不然pms,pqs系统取值方式不一样*/ - /*统计间隔*/ - Integer statisticalInterval = data.getTimeInterval (); - - RMpMonitorEvaluateDPO rMpMonitorEvaluateDPO = new RMpMonitorEvaluateDPO(); - rMpMonitorEvaluateDPO.setMeasurementPointId (temp); - rMpMonitorEvaluateDPO.setDataDate (date); - rMpMonitorEvaluateDPO = rMpMonitorEvaluateDService.selectByMultiId (rMpMonitorEvaluateDPO); - if (Objects.isNull(rMpMonitorEvaluateDPO)) { - return; - } - RStatAbnormalDPO rStatAbnormalDPO = new RStatAbnormalDPO(); - rStatAbnormalDPO.setDataDate (date); - rStatAbnormalDPO.setMeasurementPointId (temp); - rStatAbnormalDPO = rStatAbnormalDService.selectByMultiId (rStatAbnormalDPO); - if (Objects.isNull(rStatAbnormalDPO)) { - return; - } - rOperatingMonitorDPO.setMeasurementPointId (temp); - rOperatingMonitorDPO.setDataDate (date); - rOperatingMonitorDPO.setIsUnusual (rStatAbnormalDPO.getValueAlarm ()); - rOperatingMonitorDPO.setEffectiveMinuteCount (rMpMonitorEvaluateDPO.getEffectiveMinuteCount ()); - rOperatingMonitorDPO.setDataIntegrityRate (BigDecimal.valueOf (rMpMonitorEvaluateDPO.getEffectiveMinuteCount ()*statisticalInterval/1440)); - if(rMpMonitorEvaluateDPO.getEffectiveMinuteCount ()==0){ - rOperatingMonitorDPO.setDataRightRate(BigDecimal.valueOf(0.00)); - }else{ - rOperatingMonitorDPO.setDataRightRate (BigDecimal.valueOf( - (rMpMonitorEvaluateDPO.getFreqCount ()+ rMpMonitorEvaluateDPO.getLineVoltageCount ()+ - rMpMonitorEvaluateDPO.getPhaseVoltageCount ()+rMpMonitorEvaluateDPO.getUnbalanceCount ()+ - rMpMonitorEvaluateDPO.getVThdCount ())/(5*rMpMonitorEvaluateDPO.getEffectiveMinuteCount ()) - )); - } - - rOperatingMonitorDPO.setIndexIntegrityRate ( - BigDecimal.valueOf( + Integer statisticalInterval = lineDTO.getTimeInterval (); + RMpMonitorEvaluateDPO rMpMonitorEvaluateDPO = new RMpMonitorEvaluateDPO(); + rMpMonitorEvaluateDPO.setMeasurementPointId (lineDTO.getLineId()); + rMpMonitorEvaluateDPO.setDataDate (localDate); + rMpMonitorEvaluateDPO = rMpMonitorEvaluateDMapper.selectByMultiId (rMpMonitorEvaluateDPO); + if (Objects.isNull(rMpMonitorEvaluateDPO)) { + return; + } + RStatAbnormalDPO rStatAbnormalDPO = new RStatAbnormalDPO(); + rStatAbnormalDPO.setDataDate (localDate); + rStatAbnormalDPO.setMeasurementPointId (lineDTO.getLineId()); + rStatAbnormalDPO = rStatAbnormalDMapper.selectByMultiId (rStatAbnormalDPO); + if (Objects.isNull(rStatAbnormalDPO)) { + return; + } + rOperatingMonitorDPO.setMeasurementPointId (lineDTO.getLineId()); + rOperatingMonitorDPO.setDataDate (localDate); + rOperatingMonitorDPO.setIsUnusual (rStatAbnormalDPO.getValueAlarm ()); + rOperatingMonitorDPO.setEffectiveMinuteCount (rMpMonitorEvaluateDPO.getEffectiveMinuteCount ()); + rOperatingMonitorDPO.setDataIntegrityRate (BigDecimal.valueOf (rMpMonitorEvaluateDPO.getEffectiveMinuteCount ()*statisticalInterval/1440)); + if(rMpMonitorEvaluateDPO.getEffectiveMinuteCount ()==0){ + rOperatingMonitorDPO.setDataRightRate(BigDecimal.valueOf(0.00)); + }else{ + rOperatingMonitorDPO.setDataRightRate (BigDecimal.valueOf( (rMpMonitorEvaluateDPO.getFreqCount ()+ rMpMonitorEvaluateDPO.getLineVoltageCount ()+ rMpMonitorEvaluateDPO.getPhaseVoltageCount ()+rMpMonitorEvaluateDPO.getUnbalanceCount ()+ - rMpMonitorEvaluateDPO.getVThdCount ())*statisticalInterval/(5*1440) - ) - ); - rOperatingMonitorDPO.setDevId (data.getDevId()); - rOperatingMonitorDPO.setMonitorState("0"); - rOperatingMonitorDPOList.add (rOperatingMonitorDPO); - }); + rMpMonitorEvaluateDPO.getVThdCount ())/(5*rMpMonitorEvaluateDPO.getEffectiveMinuteCount ()) + )); + } + + rOperatingMonitorDPO.setIndexIntegrityRate ( + BigDecimal.valueOf( + (rMpMonitorEvaluateDPO.getFreqCount ()+ rMpMonitorEvaluateDPO.getLineVoltageCount ()+ + rMpMonitorEvaluateDPO.getPhaseVoltageCount ()+rMpMonitorEvaluateDPO.getUnbalanceCount ()+ + rMpMonitorEvaluateDPO.getVThdCount ())*statisticalInterval/(5*1440) + ) + ); + rOperatingMonitorDPO.setDevId (lineDTO.getDevId()); + rOperatingMonitorDPO.setMonitorState("0"); + rOperatingMonitorDPOList.add (rOperatingMonitorDPO); + } + } + this.saveOrUpdateBatchByMultiId (rOperatingMonitorDPOList,500); + } } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/ROperatingMonitorMServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/ROperatingMonitorMServiceImpl.java index 3de0dfb2f..9165e7d61 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/ROperatingMonitorMServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/ROperatingMonitorMServiceImpl.java @@ -1,9 +1,14 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.line; +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.alibaba.nacos.client.naming.utils.CollectionUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.prepare.bo.CalculatedParam; +import com.njcn.prepare.harmonic.mapper.mysql.line.ROperatingMonitorDMapper; import com.njcn.prepare.harmonic.mapper.mysql.line.ROperatingMonitorMMapper; import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO; import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorMPO; @@ -16,6 +21,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -32,21 +39,56 @@ import java.util.stream.Collectors; @Service @RequiredArgsConstructor public class ROperatingMonitorMServiceImpl extends MppServiceImpl implements ROperatingMonitorMService { - private final ROperatingMonitorService rOperatingMonitorService; + private final ROperatingMonitorDMapper rOperatingMonitorDMapper; @Override @Transactional(rollbackFor = {Exception.class}) @Async("asyncExecutor") public void handlerMonitorOperatingM(List indexLists,LineParam jobParam) { +// List rOperatingMonitorMPOList = new ArrayList<>(); +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// indexLists.forEach(temp -> { +// queryWrapper.clear(); +// queryWrapper.eq("measurement_point_id", temp) +// .ge("data_date", jobParam.getBeginTime()) +// .le("data_date", jobParam.getEndTime()); +// List list = rOperatingMonitorService.list(queryWrapper); +// +// if (CollectionUtils.isEmpty(list)) { +// return; +// } +// ROperatingMonitorMPO rOperatingMonitorMPO = new ROperatingMonitorMPO(); +// BigDecimal dataIntegrityRate = BigDecimal.valueOf(list.stream().mapToDouble(po -> po.getDataIntegrityRate().doubleValue()).average().getAsDouble()); +// BigDecimal dataRightRate = BigDecimal.valueOf(list.stream().mapToDouble(po -> po.getDataRightRate().doubleValue()).average().getAsDouble()); +// BigDecimal indexIntegrityRate = BigDecimal.valueOf(list.stream().mapToDouble(po -> po.getIndexIntegrityRate().doubleValue()).average().getAsDouble()); +// rOperatingMonitorMPO.setMeasurementPointId(temp); +// rOperatingMonitorMPO.setDataDate(DateUtil.parse(jobParam.getDataDate())); +// rOperatingMonitorMPO.setDataIntegrityRate(dataIntegrityRate); +// rOperatingMonitorMPO.setDataRightRate(dataRightRate); +// rOperatingMonitorMPO.setIndexIntegrityRate(indexIntegrityRate); +// rOperatingMonitorMPO.setDevId(list.get(0).getDevId()); +// List collect = list.stream().map(ROperatingMonitorDPO::getIsUnusual).collect(Collectors.toList()); +// rOperatingMonitorMPO.setIsUnusual(collect.contains(Integer.valueOf(0)) ? 0 : 1); +// rOperatingMonitorMPOList.add(rOperatingMonitorMPO); +// }); +// this.saveOrUpdateBatchByMultiId(rOperatingMonitorMPOList, 500); + } + + @Override + public void handleMonth(CalculatedParam calculatedParam) { + DateTime beginMonth = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + DateTime endMonth = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(beginMonth, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN); + List rOperatingMonitorMPOList = new ArrayList<>(); QueryWrapper queryWrapper = new QueryWrapper<>(); - indexLists.forEach(temp -> { + calculatedParam.getIdList().forEach(temp -> { queryWrapper.clear(); queryWrapper.eq("measurement_point_id", temp) - .ge("data_date", jobParam.getBeginTime()) - .le("data_date", jobParam.getEndTime()); - List list = rOperatingMonitorService.list(queryWrapper); + .between("data_date",beginMonth,endMonth); + + List list = rOperatingMonitorDMapper.selectList(queryWrapper); if (CollectionUtils.isEmpty(list)) { return; @@ -56,7 +98,7 @@ public class ROperatingMonitorMServiceImpl extends MppServiceImpl po.getDataRightRate().doubleValue()).average().getAsDouble()); BigDecimal indexIntegrityRate = BigDecimal.valueOf(list.stream().mapToDouble(po -> po.getIndexIntegrityRate().doubleValue()).average().getAsDouble()); rOperatingMonitorMPO.setMeasurementPointId(temp); - rOperatingMonitorMPO.setDataDate(DateUtil.parse(jobParam.getDataDate())); + rOperatingMonitorMPO.setDataDate(localDate); rOperatingMonitorMPO.setDataIntegrityRate(dataIntegrityRate); rOperatingMonitorMPO.setDataRightRate(dataRightRate); rOperatingMonitorMPO.setIndexIntegrityRate(indexIntegrityRate); diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RStatAbnormalDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RStatAbnormalDServiceImpl.java index fbbb39946..85d7c8634 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RStatAbnormalDServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/line/RStatAbnormalDServiceImpl.java @@ -1,17 +1,24 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.line; +import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.date.LocalDateTimeUtil; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.harmonic.pojo.po.RMpEventDetailDPO; +import com.njcn.prepare.bo.CalculatedParam; import com.njcn.prepare.harmonic.mapper.mysql.line.RStatAbnormalDMapper; import com.njcn.prepare.harmonic.pojo.mysql.RMpMonitorEvaluateDPO; import com.njcn.prepare.harmonic.pojo.mysql.RStatAbnormalDPO; import com.njcn.prepare.harmonic.service.mysql.line.RMpMonitorEvaluateDService; import com.njcn.prepare.harmonic.service.mysql.line.RStatAbnormalDService; +import com.njcn.system.enums.DicDataEnum; import lombok.RequiredArgsConstructor; +import org.apache.commons.collections4.ListUtils; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -31,31 +38,49 @@ import java.util.Objects; public class RStatAbnormalDServiceImpl extends MppServiceImpl implements RStatAbnormalDService{ - private final RMpMonitorEvaluateDService rMpMonitorEvaluateDService; +// private final RMpMonitorEvaluateDService rMpMonitorEvaluateDService; @Override @Transactional(rollbackFor = {Exception.class}) @Async("asyncExecutor") public void handlerMonitorAbnormal(List indexLists, String dataDate) { - Date date = DateUtil.parse(dataDate); - List rStatAbnormalDPOS = new ArrayList<> (); - indexLists.forEach (temp -> { - RMpMonitorEvaluateDPO rMpMonitorEvaluateDPO = new RMpMonitorEvaluateDPO(); - rMpMonitorEvaluateDPO.setMeasurementPointId (temp); - rMpMonitorEvaluateDPO.setDataDate (date); - rMpMonitorEvaluateDPO = rMpMonitorEvaluateDService.selectByMultiId (rMpMonitorEvaluateDPO); - RStatAbnormalDPO rStatAbnormalDPO = new RStatAbnormalDPO(); +// Date date = DateUtil.parse(dataDate); +// List rStatAbnormalDPOS = new ArrayList<> (); +// indexLists.forEach (temp -> { +// RMpMonitorEvaluateDPO rMpMonitorEvaluateDPO = new RMpMonitorEvaluateDPO(); +// rMpMonitorEvaluateDPO.setMeasurementPointId (temp); +// rMpMonitorEvaluateDPO.setDataDate (date); +// rMpMonitorEvaluateDPO = rMpMonitorEvaluateDService.selectByMultiId (rMpMonitorEvaluateDPO); +// RStatAbnormalDPO rStatAbnormalDPO = new RStatAbnormalDPO(); +// +// if(Objects.isNull (rMpMonitorEvaluateDPO)){ +// rStatAbnormalDPO.setValueAlarm(0); +// }else { +// rStatAbnormalDPO.setValueAlarm (rMpMonitorEvaluateDPO.getEffectiveMinuteCount () +// > pendingIds = ListUtils.partition(calculatedParam.getIdList(), 1000); + for (List pendingId : pendingIds) { + //查询 + List rMpEventDetailDPOList = this.baseMapper.handlerMonitorAbnormal( + pendingId + ,calculatedParam.getDataDate() + ,beginDay + ,endDay); + //入库 + this.saveOrUpdateBatchByMultiId(rMpEventDetailDPOList); + } } } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/SpecialAnalysisIndexOverviewDetailedPOService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/SpecialAnalysisIndexOverviewDetailedPOService.java new file mode 100644 index 000000000..c3e087548 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/SpecialAnalysisIndexOverviewDetailedPOService.java @@ -0,0 +1,17 @@ +package com.njcn.prepare.harmonic.service.mysql; + +import com.github.jeffreyning.mybatisplus.service.IMppService; +import com.njcn.prepare.harmonic.pojo.po.SpecialAnalysisIndexOverviewDetailedPO; +import com.baomidou.mybatisplus.extension.service.IService; + /** + * + * Description: + * Date: 2023/11/1 15:08【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface SpecialAnalysisIndexOverviewDetailedPOService extends IMppService { + + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/SpecialAnalysisIndexOverviewPOService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/SpecialAnalysisIndexOverviewPOService.java new file mode 100644 index 000000000..d7d30003f --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/SpecialAnalysisIndexOverviewPOService.java @@ -0,0 +1,22 @@ +package com.njcn.prepare.harmonic.service.mysql; + +import java.util.Date; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.github.jeffreyning.mybatisplus.service.IMppService; +import com.njcn.prepare.harmonic.pojo.po.SpecialAnalysisIndexOverviewDetailedPO; +import com.njcn.prepare.harmonic.pojo.po.SpecialAnalysisIndexOverviewPO; + /** + * + * Description: + * Date: 2023/11/1 15:06【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface SpecialAnalysisIndexOverviewPOService extends IMppService { + + + + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/SpecialAnalysisIndexOverviewService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/SpecialAnalysisIndexOverviewService.java new file mode 100644 index 000000000..3f3ca52c4 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/SpecialAnalysisIndexOverviewService.java @@ -0,0 +1,14 @@ +package com.njcn.prepare.harmonic.service.mysql; + +import com.njcn.prepare.harmonic.pojo.param.LineParam; + +/** + * Description: + * Date: 2023/11/1 15:14【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface SpecialAnalysisIndexOverviewService { + void hanlder(LineParam jobParam); +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/RMpMonitorEvaluateDService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/RMpMonitorEvaluateDService.java index 95c51fb76..bda669be3 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/RMpMonitorEvaluateDService.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/RMpMonitorEvaluateDService.java @@ -31,5 +31,5 @@ public interface RMpMonitorEvaluateDService extends IMppService indexLists, LineParam jobParam); + + void handleMonth(CalculatedParam calculatedParam); } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/ROperatingMonitorService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/ROperatingMonitorService.java index 859af58e6..6332a2971 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/ROperatingMonitorService.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/ROperatingMonitorService.java @@ -1,6 +1,7 @@ package com.njcn.prepare.harmonic.service.mysql.line; import com.github.jeffreyning.mybatisplus.service.IMppService; +import com.njcn.prepare.bo.CalculatedParam; import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO; import java.util.List; @@ -23,4 +24,6 @@ public interface ROperatingMonitorService extends IMppService indexLists, String dataDate); + + void handleDay(CalculatedParam calculatedParam); } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/RStatAbnormalDService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/RStatAbnormalDService.java index f2a198f5d..86a929758 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/RStatAbnormalDService.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/line/RStatAbnormalDService.java @@ -1,6 +1,7 @@ package com.njcn.prepare.harmonic.service.mysql.line; import com.github.jeffreyning.mybatisplus.service.IMppService; +import com.njcn.prepare.bo.CalculatedParam; import com.njcn.prepare.harmonic.pojo.mysql.RStatAbnormalDPO; import java.util.List; @@ -17,4 +18,6 @@ public interface RStatAbnormalDService extends IMppService { void handlerMonitorAbnormal(List indexLists, String dataDate); + + void handlerMonitorAbnormal(CalculatedParam calculatedParam); }