From c8525f477aef09d3cce61bab31b246cc75acfb9d Mon Sep 17 00:00:00 2001 From: xuyang <748613696@qq.com> Date: Sun, 4 Feb 2024 14:33:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B2=B3=E5=8C=97=E8=B6=85=E9=AB=98=E5=8E=8B?= =?UTF-8?q?=E7=AE=97=E6=B3=95-=E5=8C=BA=E5=9F=9F=E7=94=B5=E7=AB=99?= =?UTF-8?q?=E6=AF=8D=E7=BA=BF=E7=94=B5=E5=8E=8B=E7=B1=BB=E6=8C=87=E6=A0=87?= =?UTF-8?q?=E8=B6=85=E6=A0=87=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pojo/po/RStatOrgBusbarVoltageD.java | 81 +++++++ .../pojo/po/RStatOrgBusbarVoltageM.java | 6 +- .../pojo/po/RStatOrgBusbarVoltageQ.java | 6 +- .../pojo/po/RStatOrgBusbarVoltageY.java | 6 +- .../njcn/prepare/executor/BusBarExecutor.java | 45 ++++ .../mysql/RStatOrgBusbarVoltageDMapper.java | 16 ++ .../mysql/RStatOrgBusbarVoltageMMapper.java | 16 ++ .../mysql/RStatOrgBusbarVoltageQMapper.java | 16 ++ .../mysql/RStatOrgBusbarVoltageYMapper.java | 17 ++ .../mysql/IRStatOrgBusbarVoltageDService.java | 23 ++ .../mysql/IRStatOrgBusbarVoltageMService.java | 22 ++ .../mysql/IRStatOrgBusbarVoltageQService.java | 22 ++ .../mysql/IRStatOrgBusbarVoltageYService.java | 22 ++ .../RStatOrgBusbarVoltageDServiceImpl.java | 181 +++++++++++++++ .../RStatOrgBusbarVoltageMServiceImpl.java | 211 +++++++++++++++++ .../RStatOrgBusbarVoltageQServiceImpl.java | 211 +++++++++++++++++ .../RStatOrgBusbarVoltageYServiceImpl.java | 212 ++++++++++++++++++ 17 files changed, 1110 insertions(+), 3 deletions(-) create mode 100644 pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatOrgBusbarVoltageD.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/RStatOrgBusbarVoltageDMapper.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/RStatOrgBusbarVoltageMMapper.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/RStatOrgBusbarVoltageQMapper.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/RStatOrgBusbarVoltageYMapper.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/IRStatOrgBusbarVoltageDService.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/IRStatOrgBusbarVoltageMService.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/IRStatOrgBusbarVoltageQService.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/IRStatOrgBusbarVoltageYService.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/RStatOrgBusbarVoltageDServiceImpl.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/RStatOrgBusbarVoltageMServiceImpl.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/RStatOrgBusbarVoltageQServiceImpl.java create mode 100644 pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/RStatOrgBusbarVoltageYServiceImpl.java diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatOrgBusbarVoltageD.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatOrgBusbarVoltageD.java new file mode 100644 index 000000000..8d584e984 --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatOrgBusbarVoltageD.java @@ -0,0 +1,81 @@ +package com.njcn.harmonic.pojo.po; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; +import com.njcn.db.bo.BaseEntity; +import java.io.Serializable; +import java.time.LocalDate; + +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author xuyang + * @since 2024-01-25 + */ +@Data +@TableName("r_stat_org_busbar_voltage_d") +public class RStatOrgBusbarVoltageD { + + private static final long serialVersionUID = 1L; + + /** + * 单位ID + */ + @MppMultiId + private String orgNo; + + /** + * 生成数据的时间,每日统计一次 + */ + @MppMultiId + private LocalDate dataDate; + + /** + * 母线ID + */ + @MppMultiId + private String busbarId; + + /** + * 有效接入监测点总数量 + */ + private Integer measurementCount; + + /** + * 谐波电压超标点数 + */ + private Integer vCount; + + /** + * 谐波电压超标占比 + */ + private Float vRatio; + + /** + * 三相电压不平衡超标点数 + */ + private Integer unbalanceCount; + + /** + * 三相电压不平衡超标占比 + */ + private Float unbalanceRatio; + + /** + * 闪变超标点数 + */ + private Integer flickerCount; + + /** + * 闪变超标占比 + */ + private Float flickerRatio; + + +} diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatOrgBusbarVoltageM.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatOrgBusbarVoltageM.java index 48bb2f195..82f95da69 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatOrgBusbarVoltageM.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatOrgBusbarVoltageM.java @@ -3,6 +3,7 @@ package com.njcn.harmonic.pojo.po; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -28,13 +29,16 @@ public class RStatOrgBusbarVoltageM implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "单位ID") - @TableId(value = "org_no", type = IdType.ASSIGN_ID) +// @TableId(value = "org_no", type = IdType.ASSIGN_ID) + @MppMultiId(value = "org_no") private String orgNo; @ApiModelProperty(value = "生成数据的时间,每日统计一次") + @MppMultiId private LocalDate dataDate; @ApiModelProperty(value = "母线ID") + @MppMultiId private String busbarId; @ApiModelProperty(value = "有效接入监测点总数量") diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatOrgBusbarVoltageQ.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatOrgBusbarVoltageQ.java index 35db0cf34..4a0d97063 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatOrgBusbarVoltageQ.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatOrgBusbarVoltageQ.java @@ -3,6 +3,7 @@ package com.njcn.harmonic.pojo.po; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -28,13 +29,16 @@ public class RStatOrgBusbarVoltageQ implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "单位ID") - @TableId(value = "org_no", type = IdType.ASSIGN_ID) +// @TableId(value = "org_no", type = IdType.ASSIGN_ID) + @MppMultiId private String orgNo; @ApiModelProperty(value = "生成数据的时间,每日统计一次") + @MppMultiId private LocalDate dataDate; @ApiModelProperty(value = "母线ID") + @MppMultiId private String busbarId; @ApiModelProperty(value = "有效接入监测点总数量") diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatOrgBusbarVoltageY.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatOrgBusbarVoltageY.java index 72ef74ce0..8cdaaa863 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatOrgBusbarVoltageY.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/RStatOrgBusbarVoltageY.java @@ -3,6 +3,7 @@ package com.njcn.harmonic.pojo.po; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -28,13 +29,16 @@ public class RStatOrgBusbarVoltageY implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "单位ID") - @TableId(value = "org_no", type = IdType.ASSIGN_ID) +// @TableId(value = "org_no", type = IdType.ASSIGN_ID) + @MppMultiId private String orgNo; @ApiModelProperty(value = "生成数据的时间,每日统计一次") + @MppMultiId private LocalDate dataDate; @ApiModelProperty(value = "母线ID") + @MppMultiId private String busbarId; @ApiModelProperty(value = "有效接入监测点总数量") diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/BusBarExecutor.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/BusBarExecutor.java index 3c2509f19..0b7a5755c 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/BusBarExecutor.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/BusBarExecutor.java @@ -2,6 +2,10 @@ package com.njcn.prepare.executor; import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO; import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; +import com.njcn.prepare.harmonic.service.mysql.IRStatOrgBusbarVoltageDService; +import com.njcn.prepare.harmonic.service.mysql.IRStatOrgBusbarVoltageMService; +import com.njcn.prepare.harmonic.service.mysql.IRStatOrgBusbarVoltageQService; +import com.njcn.prepare.harmonic.service.mysql.IRStatOrgBusbarVoltageYService; import com.njcn.prepare.harmonic.service.mysql.busbar.IStationBusBarReportService; import com.njcn.prepare.harmonic.service.mysql.dim.IRDimVoltageDService; import com.njcn.prepare.harmonic.service.mysql.dim.IRDimVoltageMService; @@ -26,6 +30,11 @@ public class BusBarExecutor extends BaseExecutor{ private final IRDimVoltageMService irDimVoltageMService; private final IRDimVoltageYService irDimVoltageYService; + private final IRStatOrgBusbarVoltageDService rStatOrgBusbarVoltageDService; + private final IRStatOrgBusbarVoltageMService rStatOrgBusbarVoltageMService; + private final IRStatOrgBusbarVoltageQService rStatOrgBusbarVoltageQService; + private final IRStatOrgBusbarVoltageYService rStatOrgBusbarVoltageYService; + private final IStationBusBarReportService iStationBusBarReportService; @LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rBusbarVoltage", nodeType = NodeTypeEnum.COMMON) @@ -54,6 +63,42 @@ public class BusBarExecutor extends BaseExecutor{ } } + /** + * 区域电站母线电压类指标超标统计 + * @param bindCmp + * @return + */ + @LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rStatOrgBusBarVoltage", nodeType = NodeTypeEnum.COMMON) + public boolean rStatOrgBusBarVoltageAccess(NodeComponent bindCmp) { + return isAccess(bindCmp); + } + @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rStatOrgBusBarVoltage", nodeType = NodeTypeEnum.COMMON) + public void rStatOrgBusBarVoltageProcess(NodeComponent bindCmp) { + String tag = bindCmp.getTag(); + CalculatedParam calculatedParam = bindCmp.getRequestData(); + if (tag.equalsIgnoreCase("r_stat_org_busbar_voltage_d")) { + //日表 + rStatOrgBusbarVoltageDService.busBarHarmonicD(calculatedParam); + } else if (tag.equalsIgnoreCase("r_stat_org_busbar_voltage_m")) { + //数据补招不执行非日表算法 + if (!calculatedParam.isRepair()) { + //月表 + rStatOrgBusbarVoltageMService.busBarHarmonicM(calculatedParam); + } + } else if (tag.equalsIgnoreCase("r_stat_org_busbar_voltage_q")) { + //数据补招不执行非日表算法 + if (!calculatedParam.isRepair()) { + //季表 + rStatOrgBusbarVoltageQService.busBarHarmonicQ(calculatedParam); + } + } else if (tag.equalsIgnoreCase("r_stat_org_busbar_voltage_y")) { + //数据补招不执行非日表算法 + if (!calculatedParam.isRepair()) { + //年表 + rStatOrgBusbarVoltageYService.busBarHarmonicY(calculatedParam); + } + } + } @LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rStatBusbarHarmonicY", nodeType = NodeTypeEnum.COMMON) public boolean rStatBusbarHarmonicYAccess(NodeComponent bindCmp) { diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/RStatOrgBusbarVoltageDMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/RStatOrgBusbarVoltageDMapper.java new file mode 100644 index 000000000..0840ae3a9 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/RStatOrgBusbarVoltageDMapper.java @@ -0,0 +1,16 @@ +package com.njcn.prepare.harmonic.mapper.mysql; + +import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; +import com.njcn.harmonic.pojo.po.RStatOrgBusbarVoltageD; + +/** + *

+ * Mapper 接口 + *

+ * + * @author xuyang + * @since 2024-01-25 + */ +public interface RStatOrgBusbarVoltageDMapper extends MppBaseMapper { + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/RStatOrgBusbarVoltageMMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/RStatOrgBusbarVoltageMMapper.java new file mode 100644 index 000000000..5dbc23823 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/RStatOrgBusbarVoltageMMapper.java @@ -0,0 +1,16 @@ +package com.njcn.prepare.harmonic.mapper.mysql; + +import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; +import com.njcn.harmonic.pojo.po.RStatOrgBusbarVoltageM; + +/** + *

+ * Mapper 接口 + *

+ * + * @author xuyang + * @since 2024-01-25 + */ +public interface RStatOrgBusbarVoltageMMapper extends MppBaseMapper { + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/RStatOrgBusbarVoltageQMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/RStatOrgBusbarVoltageQMapper.java new file mode 100644 index 000000000..2ff88ee9e --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/RStatOrgBusbarVoltageQMapper.java @@ -0,0 +1,16 @@ +package com.njcn.prepare.harmonic.mapper.mysql; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; +import com.njcn.harmonic.pojo.po.RStatOrgBusbarVoltageQ; + +/** + *

+ * Mapper 接口 + *

+ * + * @author xuyang + * @since 2024-01-25 + */ +public interface RStatOrgBusbarVoltageQMapper extends MppBaseMapper { + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/RStatOrgBusbarVoltageYMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/RStatOrgBusbarVoltageYMapper.java new file mode 100644 index 000000000..8a7b1575a --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/RStatOrgBusbarVoltageYMapper.java @@ -0,0 +1,17 @@ +package com.njcn.prepare.harmonic.mapper.mysql; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; +import com.njcn.harmonic.pojo.po.RStatOrgBusbarVoltageY; + +/** + *

+ * Mapper 接口 + *

+ * + * @author xuyang + * @since 2024-01-25 + */ +public interface RStatOrgBusbarVoltageYMapper extends MppBaseMapper { + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/IRStatOrgBusbarVoltageDService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/IRStatOrgBusbarVoltageDService.java new file mode 100644 index 000000000..f27761260 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/IRStatOrgBusbarVoltageDService.java @@ -0,0 +1,23 @@ +package com.njcn.prepare.harmonic.service.mysql; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO; +import com.njcn.harmonic.pojo.po.RStatOrgBusbarVoltageD; +import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; + +/** + *

+ * 服务类 + *

+ * + * @author xuyang + * @since 2024-01-25 + */ +public interface IRStatOrgBusbarVoltageDService extends IService { + + /** + * 区域电站母线电压类指标超标统计-日表 + */ + void busBarHarmonicD(CalculatedParam calculatedParam); + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/IRStatOrgBusbarVoltageMService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/IRStatOrgBusbarVoltageMService.java new file mode 100644 index 000000000..003b0a3cf --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/IRStatOrgBusbarVoltageMService.java @@ -0,0 +1,22 @@ +package com.njcn.prepare.harmonic.service.mysql; +import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO; +import com.njcn.harmonic.pojo.po.RStatOrgBusbarVoltageM; +import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; + +/** + *

+ * 服务类 + *

+ * + * @author xuyang + * @since 2024-01-25 + */ +public interface IRStatOrgBusbarVoltageMService extends IService { + + /** + * 区域电站母线电压类指标超标统计-月表 + */ + void busBarHarmonicM(CalculatedParam calculatedParam); + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/IRStatOrgBusbarVoltageQService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/IRStatOrgBusbarVoltageQService.java new file mode 100644 index 000000000..c557033a8 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/IRStatOrgBusbarVoltageQService.java @@ -0,0 +1,22 @@ +package com.njcn.prepare.harmonic.service.mysql; +import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO; +import com.njcn.harmonic.pojo.po.RStatOrgBusbarVoltageQ; +import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; + +/** + *

+ * 服务类 + *

+ * + * @author xuyang + * @since 2024-01-25 + */ +public interface IRStatOrgBusbarVoltageQService extends IService { + + /** + * 区域电站母线电压类指标超标统计-季表 + */ + void busBarHarmonicQ(CalculatedParam calculatedParam); + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/IRStatOrgBusbarVoltageYService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/IRStatOrgBusbarVoltageYService.java new file mode 100644 index 000000000..3186fb044 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/IRStatOrgBusbarVoltageYService.java @@ -0,0 +1,22 @@ +package com.njcn.prepare.harmonic.service.mysql; +import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO; +import com.njcn.harmonic.pojo.po.RStatOrgBusbarVoltageY; +import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; + +/** + *

+ * 服务类 + *

+ * + * @author xuyang + * @since 2024-01-25 + */ +public interface IRStatOrgBusbarVoltageYService extends IService { + + /** + * 区域电站母线电压类指标超标统计-年表 + */ + void busBarHarmonicY(CalculatedParam calculatedParam); + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/RStatOrgBusbarVoltageDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/RStatOrgBusbarVoltageDServiceImpl.java new file mode 100644 index 000000000..2aaeb06a4 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/RStatOrgBusbarVoltageDServiceImpl.java @@ -0,0 +1,181 @@ +package com.njcn.prepare.harmonic.service.mysql.Impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.LocalDateTimeUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.common.pojo.enums.common.DataStateEnum; +import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO; +import com.njcn.device.pms.pojo.po.Monitor; +import com.njcn.harmonic.pojo.po.RStatOrgBusbarVoltageD; +import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; +import com.njcn.prepare.harmonic.mapper.mysql.RStatOrgBusbarVoltageDMapper; +import com.njcn.prepare.harmonic.mapper.mysql.day.RStatLimitTargetDMapper; +import com.njcn.prepare.harmonic.mapper.mysql.line.PmsMonitorMapper; +import com.njcn.prepare.harmonic.mapper.mysql.line.RMpMonitorEvaluateDMapper; +import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; +import com.njcn.prepare.harmonic.pojo.mysql.RMpMonitorEvaluateDPO; +import com.njcn.prepare.harmonic.service.mysql.IRStatOrgBusbarVoltageDService; +import com.njcn.system.api.DicDataFeignClient; +import com.njcn.system.enums.DicDataEnum; +import com.njcn.system.enums.DicDataTypeEnum; +import com.njcn.system.pojo.po.DictData; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author xuyang + * @since 2024-01-25 + */ +@Service +@RequiredArgsConstructor +public class RStatOrgBusbarVoltageDServiceImpl extends MppServiceImpl implements IRStatOrgBusbarVoltageDService { + + private final PmsMonitorMapper pmsMonitorMapper; + private final DicDataFeignClient dicDataFeignClient; + private final RStatLimitTargetDMapper limitTargetMapper; + private final RMpMonitorEvaluateDMapper mpMonitorEvaluateDMapper; + + /** + * 1.获取单位下母线数量 + * 2.获取母线下监测点个数 + * 3.获取监测点的超标情况 + * @param calculatedParam + */ + @Override + @Transactional(rollbackFor = {Exception.class}) + public void busBarHarmonicD(CalculatedParam calculatedParam) { + List result = new ArrayList<>(); + //fixme 这边calculatedParam参数传入有问题,应该只传递母线id集合,而不是对象,这边后续调整 + //获取基础数据 + Map> orgMap = this.getPmsMonitor(); + orgMap.forEach((k,v)->{ + //根据母线分组 + Map> lineMap = v.stream().collect(Collectors.groupingBy(Monitor::getLineId)); + lineMap.forEach((k1,v1)->{ + RStatOrgBusbarVoltageD busBarD = new RStatOrgBusbarVoltageD(); + busBarD.setOrgNo(k); + busBarD.setDataDate(LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + busBarD.setBusbarId(k1); + List monitorList = v1.stream().map(Monitor::getId).collect(Collectors.toList()); + busBarD.setMeasurementCount(this.getEffectiveNum(monitorList,calculatedParam.getDataDate())); + busBarD.setVCount(this.getOverHarmonicV(monitorList,calculatedParam.getDataDate())); + busBarD.setUnbalanceCount(this.getOverThree(monitorList,calculatedParam.getDataDate())); + busBarD.setFlickerCount(this.getOverFlicker(monitorList,calculatedParam.getDataDate())); + busBarD.setVRatio(busBarD.getMeasurementCount()==0?0.0f: Math.min(busBarD.getVCount() * 100.0f / busBarD.getMeasurementCount(), 100.0f)); + busBarD.setUnbalanceRatio(busBarD.getMeasurementCount()==0?0.0f: Math.min(busBarD.getUnbalanceCount() * 100.0f / busBarD.getMeasurementCount(), 100.0f)); + busBarD.setFlickerRatio(busBarD.getMeasurementCount()==0?0.0f: Math.min(busBarD.getFlickerCount()*100.0f/busBarD.getMeasurementCount(), 100.0f)); + result.add(busBarD); + }); + }); + if (CollectionUtil.isNotEmpty(result)){ + this.saveOrUpdateBatchByMultiId(result,1000); + } + } + + /** + * 获取 在运 && 正常 的监测点信息 + * 根据单位分组 + */ + public Map> getPmsMonitor() { + List dicDataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_STATE.getCode()).getData(); + DictData dictData = dicDataList.stream().filter(o-> Objects.equals(o.getCode(), DicDataEnum.RUN.getCode())).findFirst().orElse(null); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(Monitor::getStatus, DataStateEnum.ENABLE.getCode()) + .eq(Monitor::getMonitorState,dictData.getId()); + List list = pmsMonitorMapper.selectList(lambdaQueryWrapper); + return list.stream().collect(Collectors.groupingBy(Monitor::getOrgId)); + } + + /** + * 获取有效接入监测点个数 + */ + public Integer getEffectiveNum(List lineList, String time) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(RMpMonitorEvaluateDPO::getMeasurementPointId) + .eq(RMpMonitorEvaluateDPO::getDataDate, time) + .in(RMpMonitorEvaluateDPO::getMeasurementPointId, lineList) + .gt(RMpMonitorEvaluateDPO::getEffectiveMinuteCount, 0); + List list = mpMonitorEvaluateDMapper.selectList(lambdaQueryWrapper); + return CollUtil.isEmpty(list)?0: list.stream().distinct().map(RMpMonitorEvaluateDPO::getMeasurementPointId).collect(Collectors.toList()).size(); + } + + /** + * 获取谐波电压超标点数 + * 电压总谐波畸变率+2-25次谐波电压 + */ + public Integer getOverHarmonicV(List lineList, String time) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(RStatLimitTargetDPO::getLineId) + .eq(RStatLimitTargetDPO::getTime, time) + .in(RStatLimitTargetDPO::getLineId, lineList); + lambdaQueryWrapper.and((wrapper)->{ + wrapper.gt(RStatLimitTargetDPO::getUbalanceOvertime, 0) + .or().gt(RStatLimitTargetDPO::getUharm2Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm3Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm4Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm5Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm6Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm7Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm8Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm9Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm10Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm11Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm12Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm13Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm14Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm15Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm16Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm17Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm18Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm19Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm20Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm21Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm22Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm23Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm24Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm25Overtime,0); + }); + List list = limitTargetMapper.selectList(lambdaQueryWrapper); + return CollUtil.isEmpty(list)?0: list.stream().distinct().map(RStatLimitTargetDPO::getLineId).collect(Collectors.toList()).size(); + } + + /** + * 三相电压不平衡超标点数 + */ + public Integer getOverThree(List lineList, String time) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(RStatLimitTargetDPO::getLineId) + .eq(RStatLimitTargetDPO::getTime, time) + .in(RStatLimitTargetDPO::getLineId, lineList) + .gt(RStatLimitTargetDPO::getUaberranceOvertime, 0); + List list = limitTargetMapper.selectList(lambdaQueryWrapper); + return CollUtil.isEmpty(list)?0: list.stream().distinct().map(RStatLimitTargetDPO::getLineId).collect(Collectors.toList()).size(); + } + + /** + * 闪变超标点数 + */ + public Integer getOverFlicker(List lineList,String time) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(RStatLimitTargetDPO::getLineId) + .eq(RStatLimitTargetDPO::getTime, time) + .in(RStatLimitTargetDPO::getLineId, lineList) + .gt(RStatLimitTargetDPO::getFlickerOvertime, 0); + List list = limitTargetMapper.selectList(lambdaQueryWrapper); + return CollUtil.isEmpty(list)?0: list.stream().distinct().map(RStatLimitTargetDPO::getLineId).collect(Collectors.toList()).size(); + } +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/RStatOrgBusbarVoltageMServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/RStatOrgBusbarVoltageMServiceImpl.java new file mode 100644 index 000000000..6aab9567a --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/RStatOrgBusbarVoltageMServiceImpl.java @@ -0,0 +1,211 @@ +package com.njcn.prepare.harmonic.service.mysql.Impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.date.LocalDateTimeUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.common.pojo.enums.common.DataStateEnum; +import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO; +import com.njcn.device.pms.pojo.po.Monitor; +import com.njcn.harmonic.pojo.po.RStatOrgBusbarVoltageD; +import com.njcn.harmonic.pojo.po.RStatOrgBusbarVoltageM; +import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; +import com.njcn.prepare.harmonic.mapper.mysql.RStatOrgBusbarVoltageDMapper; +import com.njcn.prepare.harmonic.mapper.mysql.RStatOrgBusbarVoltageMMapper; +import com.njcn.prepare.harmonic.mapper.mysql.day.RStatLimitTargetDMapper; +import com.njcn.prepare.harmonic.mapper.mysql.line.PmsMonitorMapper; +import com.njcn.prepare.harmonic.mapper.mysql.line.RMpMonitorEvaluateDMapper; +import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; +import com.njcn.prepare.harmonic.pojo.mysql.RMpMonitorEvaluateDPO; +import com.njcn.prepare.harmonic.service.mysql.IRStatOrgBusbarVoltageMService; +import com.njcn.system.api.DicDataFeignClient; +import com.njcn.system.enums.DicDataEnum; +import com.njcn.system.enums.DicDataTypeEnum; +import com.njcn.system.pojo.po.DictData; +import com.njcn.user.api.DeptFeignClient; +import com.njcn.user.pojo.po.Dept; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author xuyang + * @since 2024-01-25 + */ +@Service +@RequiredArgsConstructor +public class RStatOrgBusbarVoltageMServiceImpl extends MppServiceImpl implements IRStatOrgBusbarVoltageMService { + + private final RStatOrgBusbarVoltageDMapper statOrgBusbarVoltageDMapper; + private final RMpMonitorEvaluateDMapper mpMonitorEvaluateDMapper; + private final RStatLimitTargetDMapper limitTargetMapper; + private final PmsMonitorMapper pmsMonitorMapper; + private final DicDataFeignClient dicDataFeignClient; + private final DeptFeignClient deptFeignClient; + + @Override + @Transactional(rollbackFor = {Exception.class}) + public void busBarHarmonicM(CalculatedParam calculatedParam) { + List result = new ArrayList<>(); + String beginMonth = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)).toString(DatePattern.NORM_DATE_PATTERN); + String endMonth = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)).toString(DatePattern.NORM_DATE_PATTERN); + //获取基础数据 + Map> orgMap = this.getPmsMonitor(); + orgMap.forEach((k,v)->{ + //根据母线分组 + Map> lineMap = v.stream().collect(Collectors.groupingBy(Monitor::getLineId)); + lineMap.forEach((k1,v1)->{ + RStatOrgBusbarVoltageM busBarM = new RStatOrgBusbarVoltageM(); + busBarM.setOrgNo(k); + busBarM.setDataDate(LocalDateTimeUtil.parseDate(beginMonth, DatePattern.NORM_DATE_PATTERN)); + busBarM.setBusbarId(k1); + List monitorList = v1.stream().map(Monitor::getId).collect(Collectors.toList()); + busBarM.setMeasurementCount(this.getEffectiveNum(monitorList,beginMonth,endMonth)); + //获取日表数据 + List dayList = getDayData(k1,beginMonth,endMonth); + busBarM.setVAverage(Math.min(new Double(dayList.stream().mapToDouble(RStatOrgBusbarVoltageD::getVRatio).average().orElse(0.0f)).floatValue(),100.0f)); + busBarM.setVAccrued(busBarM.getMeasurementCount()==0?0.0f:Math.min(this.getOverHarmonicV(monitorList,beginMonth,endMonth)*100.0f/busBarM.getMeasurementCount(),100.0f)); + + busBarM.setUnbalanceAverage(Math.min(new Double(dayList.stream().mapToDouble(RStatOrgBusbarVoltageD::getUnbalanceRatio).average().orElse(0.0f)).floatValue(),100.0f)); + busBarM.setUnbalanceAccrued(busBarM.getMeasurementCount()==0?0.0f:Math.min(this.getOverThree(monitorList,beginMonth,endMonth)*100.0f/busBarM.getMeasurementCount(),100.0f)); + + busBarM.setFlickerAverage(Math.min(new Double(dayList.stream().mapToDouble(RStatOrgBusbarVoltageD::getFlickerRatio).average().orElse(0.0f)).floatValue(),100.0f)); + busBarM.setFlickerAccrued(busBarM.getMeasurementCount()==0?0.0f:Math.min(this.getOverFlicker(monitorList,beginMonth,endMonth)*100.0f/busBarM.getMeasurementCount(),100.0f)); + + result.add(busBarM); + }); + }); + if (CollectionUtil.isNotEmpty(result)){ + //获取省级部门ids + Dept dept = deptFeignClient.getRootDept().getData(); + String code = deptFeignClient.getDepSonDetailByDeptId(dept.getId()).getData().get(0).getCode(); + //添加省级数据 + List provinceData = result .stream().map(object -> { + RStatOrgBusbarVoltageM objectNew = new RStatOrgBusbarVoltageM(); + BeanUtils.copyProperties(object, objectNew); + objectNew.setOrgNo(code); + return objectNew; + }).collect(Collectors.toList()); + result.addAll(provinceData); + this.saveOrUpdateBatchByMultiId(result,1000); + } + } + + /** + * 获取 在运 && 正常 的监测点信息 + * 根据单位分组 + */ + public Map> getPmsMonitor() { + List dicDataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_STATE.getCode()).getData(); + DictData dictData = dicDataList.stream().filter(o-> Objects.equals(o.getCode(), DicDataEnum.RUN.getCode())).findFirst().orElse(null); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(Monitor::getStatus, DataStateEnum.ENABLE.getCode()) + .eq(Monitor::getMonitorState,dictData.getId()); + List list = pmsMonitorMapper.selectList(lambdaQueryWrapper); + return list.stream().collect(Collectors.groupingBy(Monitor::getOrgId)); + } + + /** + * 获取日表数据 + */ + public List getDayData(String busBar, String startTime, String endTime){ + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.between(RStatOrgBusbarVoltageD::getDataDate,startTime,endTime) + .eq(RStatOrgBusbarVoltageD::getBusbarId, busBar); + return statOrgBusbarVoltageDMapper.selectList(lambdaQueryWrapper); + } + + /** + * 获取有效接入监测点个数 + */ + public Integer getEffectiveNum(List lineList, String startTime, String endTime) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(RMpMonitorEvaluateDPO::getMeasurementPointId) + .between(RMpMonitorEvaluateDPO::getDataDate, startTime, endTime) + .in(RMpMonitorEvaluateDPO::getMeasurementPointId, lineList) + .gt(RMpMonitorEvaluateDPO::getEffectiveMinuteCount, 0); + List list = mpMonitorEvaluateDMapper.selectList(lambdaQueryWrapper); + return CollUtil.isEmpty(list)?0: list.stream().distinct().map(RMpMonitorEvaluateDPO::getMeasurementPointId).collect(Collectors.toList()).size(); + } + + /** + * 获取谐波电压超标点数 + * 电压总谐波畸变率+2-25次谐波电压 + */ + public Integer getOverHarmonicV(List lineList, String startTime, String endTime) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(RStatLimitTargetDPO::getLineId) + .between(RStatLimitTargetDPO::getTime, startTime, endTime) + .in(RStatLimitTargetDPO::getLineId, lineList); + lambdaQueryWrapper.and((wrapper)->{ + wrapper.gt(RStatLimitTargetDPO::getUbalanceOvertime, 0) + .or().gt(RStatLimitTargetDPO::getUharm2Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm3Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm4Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm5Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm6Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm7Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm8Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm9Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm10Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm11Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm12Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm13Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm14Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm15Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm16Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm17Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm18Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm19Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm20Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm21Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm22Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm23Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm24Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm25Overtime,0); + }); + List list = limitTargetMapper.selectList(lambdaQueryWrapper); + return CollUtil.isEmpty(list)?0: list.stream().distinct().map(RStatLimitTargetDPO::getLineId).collect(Collectors.toList()).size(); + } + + /** + * 三相电压不平衡超标点数 + */ + public Integer getOverThree(List lineList, String startTime, String endTime) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(RStatLimitTargetDPO::getLineId) + .between(RStatLimitTargetDPO::getTime, startTime, endTime) + .in(RStatLimitTargetDPO::getLineId, lineList) + .gt(RStatLimitTargetDPO::getUaberranceOvertime, 0); + List list = limitTargetMapper.selectList(lambdaQueryWrapper); + return CollUtil.isEmpty(list)?0: list.stream().distinct().map(RStatLimitTargetDPO::getLineId).collect(Collectors.toList()).size(); + } + + /** + * 闪变超标点数 + */ + public Integer getOverFlicker(List lineList, String startTime, String endTime) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(RStatLimitTargetDPO::getLineId) + .between(RStatLimitTargetDPO::getTime, startTime, endTime) + .in(RStatLimitTargetDPO::getLineId, lineList) + .gt(RStatLimitTargetDPO::getFlickerOvertime, 0); + List list = limitTargetMapper.selectList(lambdaQueryWrapper); + return CollUtil.isEmpty(list)?0: list.stream().distinct().map(RStatLimitTargetDPO::getLineId).collect(Collectors.toList()).size(); + } + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/RStatOrgBusbarVoltageQServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/RStatOrgBusbarVoltageQServiceImpl.java new file mode 100644 index 000000000..157305b9e --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/RStatOrgBusbarVoltageQServiceImpl.java @@ -0,0 +1,211 @@ +package com.njcn.prepare.harmonic.service.mysql.Impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.date.LocalDateTimeUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.common.pojo.enums.common.DataStateEnum; +import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO; +import com.njcn.device.pms.pojo.po.Monitor; +import com.njcn.harmonic.pojo.po.RStatOrgBusbarVoltageD; +import com.njcn.harmonic.pojo.po.RStatOrgBusbarVoltageQ; +import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; +import com.njcn.prepare.harmonic.mapper.mysql.RStatOrgBusbarVoltageDMapper; +import com.njcn.prepare.harmonic.mapper.mysql.RStatOrgBusbarVoltageQMapper; +import com.njcn.prepare.harmonic.mapper.mysql.day.RStatLimitTargetDMapper; +import com.njcn.prepare.harmonic.mapper.mysql.line.PmsMonitorMapper; +import com.njcn.prepare.harmonic.mapper.mysql.line.RMpMonitorEvaluateDMapper; +import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; +import com.njcn.prepare.harmonic.pojo.mysql.RMpMonitorEvaluateDPO; +import com.njcn.prepare.harmonic.service.mysql.IRStatOrgBusbarVoltageQService; +import com.njcn.system.api.DicDataFeignClient; +import com.njcn.system.enums.DicDataEnum; +import com.njcn.system.enums.DicDataTypeEnum; +import com.njcn.system.pojo.po.DictData; +import com.njcn.user.api.DeptFeignClient; +import com.njcn.user.pojo.po.Dept; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author xuyang + * @since 2024-01-25 + */ +@Service +@RequiredArgsConstructor +public class RStatOrgBusbarVoltageQServiceImpl extends MppServiceImpl implements IRStatOrgBusbarVoltageQService { + + private final RStatOrgBusbarVoltageDMapper statOrgBusbarVoltageDMapper; + private final RMpMonitorEvaluateDMapper mpMonitorEvaluateDMapper; + private final RStatLimitTargetDMapper limitTargetMapper; + private final PmsMonitorMapper pmsMonitorMapper; + private final DicDataFeignClient dicDataFeignClient; + private final DeptFeignClient deptFeignClient; + + @Override + @Transactional(rollbackFor = {Exception.class}) + public void busBarHarmonicQ(CalculatedParam calculatedParam) { + List result = new ArrayList<>(); + String begin = DateUtil.beginOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)).toString(DatePattern.NORM_DATE_PATTERN); + String end = DateUtil.endOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)).toString(DatePattern.NORM_DATE_PATTERN); + //获取基础数据 + Map> orgMap = this.getPmsMonitor(); + orgMap.forEach((k,v)->{ + //根据母线分组 + Map> lineMap = v.stream().collect(Collectors.groupingBy(Monitor::getLineId)); + lineMap.forEach((k1,v1)->{ + RStatOrgBusbarVoltageQ busBarQ = new RStatOrgBusbarVoltageQ(); + busBarQ.setOrgNo(k); + busBarQ.setDataDate(LocalDateTimeUtil.parseDate(begin, DatePattern.NORM_DATE_PATTERN)); + busBarQ.setBusbarId(k1); + List monitorList = v1.stream().map(Monitor::getId).collect(Collectors.toList()); + busBarQ.setMeasurementCount(this.getEffectiveNum(monitorList,begin,end)); + //获取日表数据 + List dayList = getDayData(k1,begin,end); + busBarQ.setVAverage(Math.min(new Double(dayList.stream().mapToDouble(RStatOrgBusbarVoltageD::getVRatio).average().orElse(0.0f)).floatValue(),100.0f)); + busBarQ.setVAccrued(busBarQ.getMeasurementCount()==0?0.0f:Math.min(this.getOverHarmonicV(monitorList,begin,end)*100.0f/busBarQ.getMeasurementCount(),100.0f)); + + busBarQ.setUnbalanceAverage(Math.min(new Double(dayList.stream().mapToDouble(RStatOrgBusbarVoltageD::getUnbalanceRatio).average().orElse(0.0f)).floatValue(),100.0f)); + busBarQ.setUnbalanceAccrued(busBarQ.getMeasurementCount()==0?0.0f:Math.min(this.getOverThree(monitorList,begin,end)*100.0f/busBarQ.getMeasurementCount(),100.0f)); + + busBarQ.setFlickerAverage(Math.min(new Double(dayList.stream().mapToDouble(RStatOrgBusbarVoltageD::getFlickerRatio).average().orElse(0.0f)).floatValue(),100.0f)); + busBarQ.setFlickerAccrued(busBarQ.getMeasurementCount()==0?0.0f:Math.min(this.getOverFlicker(monitorList,begin,end)*100.0f/busBarQ.getMeasurementCount(),100.0f)); + + result.add(busBarQ); + }); + }); + if (CollectionUtil.isNotEmpty(result)){ + //获取省级部门ids + Dept dept = deptFeignClient.getRootDept().getData(); + String code = deptFeignClient.getDepSonDetailByDeptId(dept.getId()).getData().get(0).getCode(); + //添加省级数据 + List provinceData = result .stream().map(object -> { + RStatOrgBusbarVoltageQ objectNew = new RStatOrgBusbarVoltageQ(); + BeanUtils.copyProperties(object, objectNew); + objectNew.setOrgNo(code); + return objectNew; + }).collect(Collectors.toList()); + result.addAll(provinceData); + this.saveOrUpdateBatchByMultiId(result,1000); + } + } + + /** + * 获取 在运 && 正常 的监测点信息 + * 根据单位分组 + */ + public Map> getPmsMonitor() { + List dicDataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_STATE.getCode()).getData(); + DictData dictData = dicDataList.stream().filter(o-> Objects.equals(o.getCode(), DicDataEnum.RUN.getCode())).findFirst().orElse(null); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(Monitor::getStatus, DataStateEnum.ENABLE.getCode()) + .eq(Monitor::getMonitorState,dictData.getId()); + List list = pmsMonitorMapper.selectList(lambdaQueryWrapper); + return list.stream().collect(Collectors.groupingBy(Monitor::getOrgId)); + } + + /** + * 获取日表数据 + */ + public List getDayData(String busBar, String startTime, String endTime){ + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.between(RStatOrgBusbarVoltageD::getDataDate,startTime,endTime) + .eq(RStatOrgBusbarVoltageD::getBusbarId, busBar); + return statOrgBusbarVoltageDMapper.selectList(lambdaQueryWrapper); + } + + /** + * 获取有效接入监测点个数 + */ + public Integer getEffectiveNum(List lineList, String startTime, String endTime) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(RMpMonitorEvaluateDPO::getMeasurementPointId) + .between(RMpMonitorEvaluateDPO::getDataDate, startTime, endTime) + .in(RMpMonitorEvaluateDPO::getMeasurementPointId, lineList) + .gt(RMpMonitorEvaluateDPO::getEffectiveMinuteCount, 0); + List list = mpMonitorEvaluateDMapper.selectList(lambdaQueryWrapper); + return CollUtil.isEmpty(list)?0: list.stream().distinct().map(RMpMonitorEvaluateDPO::getMeasurementPointId).collect(Collectors.toList()).size(); + } + + /** + * 获取谐波电压超标点数 + * 电压总谐波畸变率+2-25次谐波电压 + */ + public Integer getOverHarmonicV(List lineList, String startTime, String endTime) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(RStatLimitTargetDPO::getLineId) + .between(RStatLimitTargetDPO::getTime, startTime, endTime) + .in(RStatLimitTargetDPO::getLineId, lineList); + lambdaQueryWrapper.and((wrapper)->{ + wrapper.gt(RStatLimitTargetDPO::getUbalanceOvertime, 0) + .or().gt(RStatLimitTargetDPO::getUharm2Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm3Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm4Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm5Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm6Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm7Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm8Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm9Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm10Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm11Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm12Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm13Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm14Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm15Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm16Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm17Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm18Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm19Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm20Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm21Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm22Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm23Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm24Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm25Overtime,0); + }); + List list = limitTargetMapper.selectList(lambdaQueryWrapper); + return CollUtil.isEmpty(list)?0: list.stream().distinct().map(RStatLimitTargetDPO::getLineId).collect(Collectors.toList()).size(); + } + + /** + * 三相电压不平衡超标点数 + */ + public Integer getOverThree(List lineList, String startTime, String endTime) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(RStatLimitTargetDPO::getLineId) + .between(RStatLimitTargetDPO::getTime, startTime, endTime) + .in(RStatLimitTargetDPO::getLineId, lineList) + .gt(RStatLimitTargetDPO::getUaberranceOvertime, 0); + List list = limitTargetMapper.selectList(lambdaQueryWrapper); + return CollUtil.isEmpty(list)?0: list.stream().distinct().map(RStatLimitTargetDPO::getLineId).collect(Collectors.toList()).size(); + } + + /** + * 闪变超标点数 + */ + public Integer getOverFlicker(List lineList, String startTime, String endTime) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(RStatLimitTargetDPO::getLineId) + .between(RStatLimitTargetDPO::getTime, startTime, endTime) + .in(RStatLimitTargetDPO::getLineId, lineList) + .gt(RStatLimitTargetDPO::getFlickerOvertime, 0); + List list = limitTargetMapper.selectList(lambdaQueryWrapper); + return CollUtil.isEmpty(list)?0: list.stream().distinct().map(RStatLimitTargetDPO::getLineId).collect(Collectors.toList()).size(); + } + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/RStatOrgBusbarVoltageYServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/RStatOrgBusbarVoltageYServiceImpl.java new file mode 100644 index 000000000..bf4980d18 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/RStatOrgBusbarVoltageYServiceImpl.java @@ -0,0 +1,212 @@ +package com.njcn.prepare.harmonic.service.mysql.Impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.date.LocalDateTimeUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.common.pojo.enums.common.DataStateEnum; +import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO; +import com.njcn.device.pms.pojo.po.Monitor; +import com.njcn.harmonic.pojo.po.RStatOrgBusbarVoltageD; +import com.njcn.harmonic.pojo.po.RStatOrgBusbarVoltageY; +import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO; +import com.njcn.prepare.harmonic.mapper.mysql.RStatOrgBusbarVoltageDMapper; +import com.njcn.prepare.harmonic.mapper.mysql.RStatOrgBusbarVoltageYMapper; +import com.njcn.prepare.harmonic.mapper.mysql.day.RStatLimitTargetDMapper; +import com.njcn.prepare.harmonic.mapper.mysql.line.PmsMonitorMapper; +import com.njcn.prepare.harmonic.mapper.mysql.line.RMpMonitorEvaluateDMapper; +import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; +import com.njcn.prepare.harmonic.pojo.mysql.RMpMonitorEvaluateDPO; +import com.njcn.prepare.harmonic.service.mysql.IRStatOrgBusbarVoltageYService; +import com.njcn.system.api.DicDataFeignClient; +import com.njcn.system.enums.DicDataEnum; +import com.njcn.system.enums.DicDataTypeEnum; +import com.njcn.system.pojo.po.DictData; +import com.njcn.user.api.DeptFeignClient; +import com.njcn.user.pojo.po.Dept; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author xuyang + * @since 2024-01-25 + */ +@Service +@RequiredArgsConstructor +public class RStatOrgBusbarVoltageYServiceImpl extends MppServiceImpl implements IRStatOrgBusbarVoltageYService { + + private final RStatOrgBusbarVoltageDMapper statOrgBusbarVoltageDMapper; + private final RMpMonitorEvaluateDMapper mpMonitorEvaluateDMapper; + private final RStatLimitTargetDMapper limitTargetMapper; + private final PmsMonitorMapper pmsMonitorMapper; + private final DicDataFeignClient dicDataFeignClient; + private final DeptFeignClient deptFeignClient; + + @Override + @Transactional(rollbackFor = {Exception.class}) + public void busBarHarmonicY(CalculatedParam calculatedParam) { + List result = new ArrayList<>(); + String begin = DateUtil.beginOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)).toString(DatePattern.NORM_DATE_PATTERN); + String end = DateUtil.endOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)).toString(DatePattern.NORM_DATE_PATTERN); + //获取基础数据 + Map> orgMap = this.getPmsMonitor(); + orgMap.forEach((k,v)->{ + //根据母线分组 + Map> lineMap = v.stream().collect(Collectors.groupingBy(Monitor::getLineId)); + lineMap.forEach((k1,v1)->{ + RStatOrgBusbarVoltageY busBarY = new RStatOrgBusbarVoltageY(); + busBarY.setOrgNo(k); + busBarY.setDataDate(LocalDateTimeUtil.parseDate(begin, DatePattern.NORM_DATE_PATTERN)); + busBarY.setBusbarId(k1); + List monitorList = v1.stream().map(Monitor::getId).collect(Collectors.toList()); + busBarY.setMeasurementCount(this.getEffectiveNum(monitorList,begin,end)); + //获取日表数据 + List dayList = getDayData(k1,begin,end); + busBarY.setVAverage(Math.min(new Double(dayList.stream().mapToDouble(RStatOrgBusbarVoltageD::getVRatio).average().orElse(0.0f)).floatValue(),100.0f)); + busBarY.setVAccrued(busBarY.getMeasurementCount()==0?0.0f:Math.min(this.getOverHarmonicV(monitorList,begin,end)*100.0f/busBarY.getMeasurementCount(),100.0f)); + + busBarY.setUnbalanceAverage(Math.min(new Double(dayList.stream().mapToDouble(RStatOrgBusbarVoltageD::getUnbalanceRatio).average().orElse(0.0f)).floatValue(),100.0f)); + busBarY.setUnbalanceAccrued(busBarY.getMeasurementCount()==0?0.0f:Math.min(this.getOverThree(monitorList,begin,end)*100.0f/busBarY.getMeasurementCount(),100.0f)); + + busBarY.setFlickerAverage(Math.min(new Double(dayList.stream().mapToDouble(RStatOrgBusbarVoltageD::getFlickerRatio).average().orElse(0.0f)).floatValue(),100.0f)); + busBarY.setFlickerAccrued(busBarY.getMeasurementCount()==0?0.0f:Math.min(this.getOverFlicker(monitorList,begin,end)*100.0f/busBarY.getMeasurementCount(),100.0f)); + + result.add(busBarY); + }); + }); + if (CollectionUtil.isNotEmpty(result)){ + //获取省级部门ids + Dept dept = deptFeignClient.getRootDept().getData(); + String code = deptFeignClient.getDepSonDetailByDeptId(dept.getId()).getData().get(0).getCode(); + //添加省级数据 + List provinceData = result .stream().map(object -> { + RStatOrgBusbarVoltageY objectNew = new RStatOrgBusbarVoltageY(); + BeanUtils.copyProperties(object, objectNew); + objectNew.setOrgNo(code); + return objectNew; + }).collect(Collectors.toList()); + result.addAll(provinceData); + this.saveOrUpdateBatchByMultiId(result,1000); + } + } + + /** + * 获取 在运 && 正常 的监测点信息 + * 根据单位分组 + */ + public Map> getPmsMonitor() { + List dicDataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_STATE.getCode()).getData(); + DictData dictData = dicDataList.stream().filter(o-> Objects.equals(o.getCode(), DicDataEnum.RUN.getCode())).findFirst().orElse(null); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(Monitor::getStatus, DataStateEnum.ENABLE.getCode()) + .eq(Monitor::getMonitorState,dictData.getId()); + List list = pmsMonitorMapper.selectList(lambdaQueryWrapper); + return list.stream().collect(Collectors.groupingBy(Monitor::getOrgId)); + } + + /** + * 获取日表数据 + */ + public List getDayData(String busBar, String startTime, String endTime){ + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.between(RStatOrgBusbarVoltageD::getDataDate,startTime,endTime) + .eq(RStatOrgBusbarVoltageD::getBusbarId, busBar); + return statOrgBusbarVoltageDMapper.selectList(lambdaQueryWrapper); + } + + /** + * 获取有效接入监测点个数 + */ + public Integer getEffectiveNum(List lineList, String startTime, String endTime) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(RMpMonitorEvaluateDPO::getMeasurementPointId) + .between(RMpMonitorEvaluateDPO::getDataDate, startTime, endTime) + .in(RMpMonitorEvaluateDPO::getMeasurementPointId, lineList) + .gt(RMpMonitorEvaluateDPO::getEffectiveMinuteCount, 0); + List list = mpMonitorEvaluateDMapper.selectList(lambdaQueryWrapper); + return CollUtil.isEmpty(list)?0: list.stream().distinct().map(RMpMonitorEvaluateDPO::getMeasurementPointId).collect(Collectors.toList()).size(); + } + + /** + * 获取谐波电压超标点数 + * 电压总谐波畸变率+2-25次谐波电压 + */ + public Integer getOverHarmonicV(List lineList, String startTime, String endTime) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(RStatLimitTargetDPO::getLineId) + .between(RStatLimitTargetDPO::getTime, startTime, endTime) + .in(RStatLimitTargetDPO::getLineId, lineList); + lambdaQueryWrapper.and((wrapper)->{ + wrapper.gt(RStatLimitTargetDPO::getUbalanceOvertime, 0) + .or().gt(RStatLimitTargetDPO::getUharm2Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm3Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm4Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm5Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm6Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm7Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm8Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm9Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm10Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm11Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm12Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm13Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm14Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm15Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm16Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm17Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm18Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm19Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm20Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm21Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm22Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm23Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm24Overtime,0) + .or().gt(RStatLimitTargetDPO::getUharm25Overtime,0); + }); + List list = limitTargetMapper.selectList(lambdaQueryWrapper); + return CollUtil.isEmpty(list)?0: list.stream().distinct().map(RStatLimitTargetDPO::getLineId).collect(Collectors.toList()).size(); + } + + /** + * 三相电压不平衡超标点数 + */ + public Integer getOverThree(List lineList, String startTime, String endTime) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(RStatLimitTargetDPO::getLineId) + .between(RStatLimitTargetDPO::getTime, startTime, endTime) + .in(RStatLimitTargetDPO::getLineId, lineList) + .gt(RStatLimitTargetDPO::getUaberranceOvertime, 0); + List list = limitTargetMapper.selectList(lambdaQueryWrapper); + return CollUtil.isEmpty(list)?0: list.stream().distinct().map(RStatLimitTargetDPO::getLineId).collect(Collectors.toList()).size(); + } + + /** + * 闪变超标点数 + */ + public Integer getOverFlicker(List lineList, String startTime, String endTime) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(RStatLimitTargetDPO::getLineId) + .between(RStatLimitTargetDPO::getTime, startTime, endTime) + .in(RStatLimitTargetDPO::getLineId, lineList) + .gt(RStatLimitTargetDPO::getFlickerOvertime, 0); + List list = limitTargetMapper.selectList(lambdaQueryWrapper); + return CollUtil.isEmpty(list)?0: list.stream().distinct().map(RStatLimitTargetDPO::getLineId).collect(Collectors.toList()).size(); + } + + +}