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();
+ }
+
+
+}