diff --git a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/PatternRegex.java b/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/PatternRegex.java
index 28bee6f12..bf9afa3b3 100644
--- a/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/PatternRegex.java
+++ b/pqs-common/common-core/src/main/java/com/njcn/common/pojo/constant/PatternRegex.java
@@ -41,7 +41,7 @@ public interface PatternRegex {
/**
* 登录名只能输入3-16位的英文字母或数字
*/
- String LOGIN_NAME_REGEX = "[a-zA-Z0-9]{3,16}";
+ String LOGIN_NAME_REGEX = "[a-zA-Z0-9_]{3,16}";
/**
* 手机号必须有11位,并且为数字,是正常的手机·号码开头
diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimVoltageD.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimVoltageD.java
new file mode 100644
index 000000000..e736b5ec6
--- /dev/null
+++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimVoltageD.java
@@ -0,0 +1,269 @@
+package com.njcn.harmonic.pojo.po.dim;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+/**
+ *
+ * 母线不同电压等级指标数据-日表
+ *
+ *
+ * @author xuyang
+ * @since 2023-11-27
+ */
+@Data
+@TableName("r_dim_voltage_d")
+public class RDimVoltageD {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 统计时间yyyy-mm-dd
+ */
+ @MppMultiId
+ private LocalDate statisDate;
+
+ /**
+ * 单位id
+ */
+ @MppMultiId
+ private String orgId;
+
+ /**
+ * 电压等级
+ */
+ @MppMultiId
+ private String voltageType;
+
+ /**
+ * 电压(日平均值)
+ */
+ private Double v;
+
+ /**
+ * 三相电压不平衡(日95%概率大值)
+ */
+ private Double vUnbalance;
+
+ /**
+ * 长时间闪变(日最大值)
+ */
+ private Double pst;
+
+ /**
+ * 电压总谐波畸变率(日95%概率大值)
+ */
+ private Double vThd;
+
+ @TableField(value = "v_1")
+ private Double v1;
+
+ @TableField(value = "v_2")
+ private Double v2;
+
+ @TableField(value = "v_3")
+ private Double v3;
+
+ @TableField(value = "v_4")
+ private Double v4;
+
+ @TableField(value = "v_5")
+ private Double v5;
+
+ @TableField(value = "v_6")
+ private Double v6;
+
+ @TableField(value = "v_7")
+ private Double v7;
+
+ @TableField(value = "v_8")
+ private Double v8;
+
+ @TableField(value = "v_9")
+ private Double v9;
+
+ @TableField(value = "v_10")
+ private Double v10;
+
+ @TableField(value = "v_11")
+ private Double v11;
+
+ @TableField(value = "v_12")
+ private Double v12;
+
+ @TableField(value = "v_13")
+ private Double v13;
+
+ @TableField(value = "v_14")
+ private Double v14;
+
+ @TableField(value = "v_15")
+ private Double v15;
+
+ @TableField(value = "v_16")
+ private Double v16;
+
+ @TableField(value = "v_17")
+ private Double v17;
+
+ @TableField(value = "v_18")
+ private Double v18;
+
+ @TableField(value = "v_19")
+ private Double v19;
+
+ @TableField(value = "v_20")
+ private Double v20;
+
+ @TableField(value = "v_21")
+ private Double v21;
+
+ @TableField(value = "v_22")
+ private Double v22;
+
+ @TableField(value = "v_23")
+ private Double v23;
+
+ @TableField(value = "v_24")
+ private Double v24;
+
+ @TableField(value = "v_25")
+ private Double v25;
+
+ @TableField(value = "v_26")
+ private Double v26;
+
+ @TableField(value = "v_27")
+ private Double v27;
+
+ @TableField(value = "v_28")
+ private Double v28;
+
+ @TableField(value = "v_29")
+ private Double v29;
+
+ @TableField(value = "v_30")
+ private Double v30;
+
+ @TableField(value = "v_31")
+ private Double v31;
+
+ @TableField(value = "v_32")
+ private Double v32;
+
+ @TableField(value = "v_33")
+ private Double v33;
+
+ @TableField(value = "v_34")
+ private Double v34;
+
+ @TableField(value = "v_35")
+ private Double v35;
+
+ @TableField(value = "v_36")
+ private Double v36;
+
+ @TableField(value = "v_37")
+ private Double v37;
+
+ @TableField(value = "v_38")
+ private Double v38;
+
+ @TableField(value = "v_39")
+ private Double v39;
+
+ @TableField(value = "v_40")
+ private Double v40;
+
+ @TableField(value = "v_41")
+ private Double v41;
+
+ @TableField(value = "v_42")
+ private Double v42;
+
+ @TableField(value = "v_43")
+ private Double v43;
+
+ @TableField(value = "v_44")
+ private Double v44;
+
+ @TableField(value = "v_45")
+ private Double v45;
+
+ @TableField(value = "v_46")
+ private Double v46;
+
+ @TableField(value = "v_47")
+ private Double v47;
+
+ @TableField(value = "v_48")
+ private Double v48;
+
+ @TableField(value = "v_49")
+ private Double v49;
+
+ @TableField(value = "v_50")
+ private Double v50;
+
+ public RDimVoltageD() {
+ this.v = 3.1415926;
+ this.vUnbalance = 3.1415926;
+ this.pst = 3.1415926;
+ this.vThd = 3.1415926;
+ this.v1 = 3.1415926;
+ this.v2 = 3.1415926;
+ this.v3 = 3.1415926;
+ this.v4 = 3.1415926;
+ this.v5 = 3.1415926;
+ this.v6 = 3.1415926;
+ this.v7 = 3.1415926;
+ this.v8 = 3.1415926;
+ this.v9 = 3.1415926;
+ this.v10 = 3.1415926;
+ this.v11 = 3.1415926;
+ this.v12 = 3.1415926;
+ this.v13 = 3.1415926;
+ this.v14 = 3.1415926;
+ this.v15 = 3.1415926;
+ this.v16 = 3.1415926;
+ this.v17 = 3.1415926;
+ this.v18 = 3.1415926;
+ this.v19 = 3.1415926;
+ this.v20 = 3.1415926;
+ this.v21 = 3.1415926;
+ this.v22 = 3.1415926;
+ this.v23 = 3.1415926;
+ this.v24 = 3.1415926;
+ this.v25 = 3.1415926;
+ this.v26 = 3.1415926;
+ this.v27 = 3.1415926;
+ this.v28 = 3.1415926;
+ this.v29 = 3.1415926;
+ this.v30 = 3.1415926;
+ this.v31 = 3.1415926;
+ this.v32 = 3.1415926;
+ this.v33 = 3.1415926;
+ this.v34 = 3.1415926;
+ this.v35 = 3.1415926;
+ this.v36 = 3.1415926;
+ this.v37 = 3.1415926;
+ this.v38 = 3.1415926;
+ this.v39 = 3.1415926;
+ this.v40 = 3.1415926;
+ this.v41 = 3.1415926;
+ this.v42 = 3.1415926;
+ this.v43 = 3.1415926;
+ this.v44 = 3.1415926;
+ this.v45 = 3.1415926;
+ this.v46 = 3.1415926;
+ this.v47 = 3.1415926;
+ this.v48 = 3.1415926;
+ this.v49 = 3.1415926;
+ this.v50 = 3.1415926;
+ }
+
+}
diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimVoltageM.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimVoltageM.java
new file mode 100644
index 000000000..3b6f4ba2c
--- /dev/null
+++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimVoltageM.java
@@ -0,0 +1,318 @@
+package com.njcn.harmonic.pojo.po.dim;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.njcn.db.bo.BaseEntity;
+import java.io.Serializable;
+import java.math.Double;
+import java.time.LocalDate;
+
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 区域母线**电压等级**指标标准差、平均值-月表
+ *
+ *
+ * @author xuyang
+ * @since 2023-11-29
+ */
+@Data
+@TableName("r_dim_voltage_m")
+public class RDimVoltageM extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 统计时间yyyy-mm-dd
+ */
+ private LocalDate statisDate;
+
+ /**
+ * 单位id
+ */
+ private String orgId;
+
+ /**
+ * 电压等级
+ */
+ private String voltageType;
+
+ /**
+ * 数据类型(avg:平均值 sd:标准差)
+ */
+ private String dataType;
+
+ /**
+ * 电压(日平均值)
+ */
+ private Double v;
+
+ /**
+ * 三相电压不平衡(日95%概率大值)
+ */
+ private Double vUnbalance;
+
+ /**
+ * 长时间闪变(日最大值)
+ */
+ private Double pst;
+
+ /**
+ * 电压总谐波畸变率(日95%概率大值)
+ */
+ private Double vThd;
+
+ /**
+ * 基波电压(日95%概率大值)
+ */
+ private Double v1;
+
+ /**
+ * 2次谐波电压(日95%概率大值)
+ */
+ private Double v2;
+
+ /**
+ * 3次谐波电压(日95%概率大值)
+ */
+ private Double v3;
+
+ /**
+ * 4次谐波电压(日95%概率大值)
+ */
+ private Double v4;
+
+ /**
+ * 5次谐波电压(日95%概率大值)
+ */
+ private Double v5;
+
+ /**
+ * 6次谐波电压(日95%概率大值)
+ */
+ private Double v6;
+
+ /**
+ * 7次谐波电压(日95%概率大值)
+ */
+ private Double v7;
+
+ /**
+ * 8次谐波电压(日95%概率大值)
+ */
+ private Double v8;
+
+ /**
+ * 9次谐波电压(日95%概率大值)
+ */
+ private Double v9;
+
+ /**
+ * 10次谐波电压(日95%概率大值)
+ */
+ private Double v10;
+
+ /**
+ * 11次谐波电压(日95%概率大值)
+ */
+ private Double v11;
+
+ /**
+ * 12次谐波电压(日95%概率大值)
+ */
+ private Double v12;
+
+ /**
+ * 13次谐波电压(日95%概率大值)
+ */
+ private Double v13;
+
+ /**
+ * 14次谐波电压(日95%概率大值)
+ */
+ private Double v14;
+
+ /**
+ * 15次谐波电压(日95%概率大值)
+ */
+ private Double v15;
+
+ /**
+ * 16次谐波电压(日95%概率大值)
+ */
+ private Double v16;
+
+ /**
+ * 17次谐波电压(日95%概率大值)
+ */
+ private Double v17;
+
+ /**
+ * 18次谐波电压(日95%概率大值)
+ */
+ private Double v18;
+
+ /**
+ * 19次谐波电压(日95%概率大值)
+ */
+ private Double v19;
+
+ /**
+ * 20次谐波电压(日95%概率大值)
+ */
+ private Double v20;
+
+ /**
+ * 21次谐波电压(日95%概率大值)
+ */
+ private Double v21;
+
+ /**
+ * 22次谐波电压(日95%概率大值)
+ */
+ private Double v22;
+
+ /**
+ * 23次谐波电压(日95%概率大值)
+ */
+ private Double v23;
+
+ /**
+ * 24次谐波电压(日95%概率大值)
+ */
+ private Double v24;
+
+ /**
+ * 25次谐波电压(日95%概率大值)
+ */
+ private Double v25;
+
+ /**
+ * 26次谐波电压(日95%概率大值)
+ */
+ private Double v26;
+
+ /**
+ * 27次谐波电压(日95%概率大值)
+ */
+ private Double v27;
+
+ /**
+ * 28次谐波电压(日95%概率大值)
+ */
+ private Double v28;
+
+ /**
+ * 29次谐波电压(日95%概率大值)
+ */
+ private Double v29;
+
+ /**
+ * 30次谐波电压(日95%概率大值)
+ */
+ private Double v30;
+
+ /**
+ * 31次谐波电压(日95%概率大值)
+ */
+ private Double v31;
+
+ /**
+ * 32次谐波电压(日95%概率大值)
+ */
+ private Double v32;
+
+ /**
+ * 33次谐波电压(日95%概率大值)
+ */
+ private Double v33;
+
+ /**
+ * 34次谐波电压(日95%概率大值)
+ */
+ private Double v34;
+
+ /**
+ * 35次谐波电压(日95%概率大值)
+ */
+ private Double v35;
+
+ /**
+ * 36次谐波电压(日95%概率大值)
+ */
+ private Double v36;
+
+ /**
+ * 37次谐波电压(日95%概率大值)
+ */
+ private Double v37;
+
+ /**
+ * 38次谐波电压(日95%概率大值)
+ */
+ private Double v38;
+
+ /**
+ * 39次谐波电压(日95%概率大值)
+ */
+ private Double v39;
+
+ /**
+ * 40次谐波电压(日95%概率大值)
+ */
+ private Double v40;
+
+ /**
+ * 41次谐波电压(日95%概率大值)
+ */
+ private Double v41;
+
+ /**
+ * 42次谐波电压(日95%概率大值)
+ */
+ private Double v42;
+
+ /**
+ * 43次谐波电压(日95%概率大值)
+ */
+ private Double v43;
+
+ /**
+ * 44次谐波电压(日95%概率大值)
+ */
+ private Double v44;
+
+ /**
+ * 45次谐波电压(日95%概率大值)
+ */
+ private Double v45;
+
+ /**
+ * 46次谐波电压(日95%概率大值)
+ */
+ private Double v46;
+
+ /**
+ * 47次谐波电压(日95%概率大值)
+ */
+ private Double v47;
+
+ /**
+ * 48次谐波电压(日95%概率大值)
+ */
+ private Double v48;
+
+ /**
+ * 49次谐波电压(日95%概率大值)
+ */
+ private Double v49;
+
+ /**
+ * 50次谐波电压(日95%概率大值)
+ */
+ private Double v50;
+
+
+}
diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RBusbarVoltageD.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimVoltageY.java
similarity index 94%
rename from pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RBusbarVoltageD.java
rename to pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimVoltageY.java
index fb31b7f03..deeab5245 100644
--- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RBusbarVoltageD.java
+++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimVoltageY.java
@@ -12,15 +12,15 @@ import lombok.Setter;
/**
*
- * 母线不同电压等级指标数据-日表
+ * 区域母线**电压等级**指标标准差、平均值-年表
*
*
* @author xuyang
- * @since 2023-11-27
+ * @since 2023-11-29
*/
@Data
-@TableName("r_busbar_voltage_d")
-public class RBusbarVoltageD {
+@TableName("r_dim_voltage_y")
+public class RDimVoltageY extends BaseEntity {
private static final long serialVersionUID = 1L;
@@ -30,15 +30,20 @@ public class RBusbarVoltageD {
private LocalDate statisDate;
/**
- * 母线id
+ * 单位id
*/
- private String busbarId;
+ private String orgId;
/**
* 电压等级
*/
private String voltageType;
+ /**
+ * 数据类型(avg:平均值 sd:标准差)
+ */
+ private String dataType;
+
/**
* 电压(日平均值)
*/
diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/dto/LineDataDto.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/dto/LineDataDto.java
new file mode 100644
index 000000000..3a10d1bca
--- /dev/null
+++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/dto/LineDataDto.java
@@ -0,0 +1,129 @@
+package com.njcn.prepare.harmonic.pojo.dto;
+
+import lombok.Data;
+
+import java.time.LocalDate;
+
+/**
+ * 类的介绍:
+ *
+ * @author xuyang
+ * @version 1.0.0
+ * @createTime 2023/11/29 9:36
+ */
+@Data
+public class LineDataDto {
+
+ private LocalDate time;
+
+ private String lineId;
+
+ private Double rms;
+
+ private Double vUnbalance;
+
+ private Double pst;
+
+ private Double vThd;
+
+ private Double v1;
+
+ private Double v2;
+
+ private Double v3;
+
+ private Double v4;
+
+ private Double v5;
+
+ private Double v6;
+
+ private Double v7;
+
+ private Double v8;
+
+ private Double v9;
+
+ private Double v10;
+
+ private Double v11;
+
+ private Double v12;
+
+ private Double v13;
+
+ private Double v14;
+
+ private Double v15;
+
+ private Double v16;
+
+ private Double v17;
+
+ private Double v18;
+
+ private Double v19;
+
+ private Double v20;
+
+ private Double v21;
+
+ private Double v22;
+
+ private Double v23;
+
+ private Double v24;
+
+ private Double v25;
+
+ private Double v26;
+
+ private Double v27;
+
+ private Double v28;
+
+ private Double v29;
+
+ private Double v30;
+
+ private Double v31;
+
+ private Double v32;
+
+ private Double v33;
+
+ private Double v34;
+
+ private Double v35;
+
+ private Double v36;
+
+ private Double v37;
+
+ private Double v38;
+
+ private Double v39;
+
+ private Double v40;
+
+ private Double v41;
+
+ private Double v42;
+
+ private Double v43;
+
+ private Double v44;
+
+ private Double v45;
+
+ private Double v46;
+
+ private Double v47;
+
+ private Double v48;
+
+ private Double v49;
+
+ private Double v50;
+
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/ExecutionCenter.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/ExecutionCenter.java
index 54132e815..8b9e9ed13 100644
--- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/ExecutionCenter.java
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/ExecutionCenter.java
@@ -284,7 +284,7 @@ public class ExecutionCenter extends BaseController {
public void generaTrixExecutor(@RequestBody BaseParam baseParam) {
String methodDescribe = getMethodDescribe("generaTrixExecutor");
//手动判断参数是否合法,
- CalculatedParam calculatedParam = judgeExecuteParam(baseParam);
+ CalculatedParam calculatedParam = judgeExecuteParam(baseParam);
//母线索引
if (CollectionUtils.isEmpty(calculatedParam.getIdList())) {
Dept dept = deptFeignClient.getRootDept().getData();
@@ -292,10 +292,7 @@ public class ExecutionCenter extends BaseController {
deptGetLineParam.setDeptId(dept.getId());
deptGetLineParam.setSystemType(0);
List busBarList = commTerminalGeneralClient.deptBusBar(deptGetLineParam).getData();
- DeptGetBusBarDTO dto = busBarList.stream().filter(u -> Objects.equals(u.getUnitId(),dept.getCode())).findAny().orElse(null);
- if (Objects.nonNull(dto)){
- calculatedParam.setIdList(dto.getBusBarIds());
- }
+ calculatedParam.setIdList(busBarList);
}
LiteflowResponse liteflowResponse;
if (baseParam.isRepair()) {
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/GeneraTrixExecutor.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/BusBarExecutor.java
similarity index 63%
rename from pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/GeneraTrixExecutor.java
rename to pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/BusBarExecutor.java
index 8dd098bcc..f4eaef982 100644
--- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/GeneraTrixExecutor.java
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/BusBarExecutor.java
@@ -1,7 +1,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.dim.IRBusbarVoltageDService;
+import com.njcn.prepare.harmonic.service.mysql.dim.IRDimVoltageDService;
+import com.njcn.prepare.harmonic.service.mysql.dim.IRDimVoltageMService;
+import com.njcn.prepare.harmonic.service.mysql.dim.IRDimVoltageYService;
import com.yomahub.liteflow.annotation.LiteflowComponent;
import com.yomahub.liteflow.annotation.LiteflowMethod;
import com.yomahub.liteflow.core.NodeComponent;
@@ -10,17 +13,17 @@ import com.yomahub.liteflow.enums.NodeTypeEnum;
import lombok.RequiredArgsConstructor;
/**
- * 类的介绍:
+ * pqs
*
* @author xuyang
- * @version 1.0.0
- * @createTime 2023/11/27 10:28
+ * @date 2023/11/27
*/
@LiteflowComponent
@RequiredArgsConstructor
-public class GeneraTrixExecutor extends BaseExecutor{
-
- private final IRBusbarVoltageDService irBusbarVoltageDService;
+public class BusBarExecutor extends BaseExecutor{
+ private final IRDimVoltageDService irDimVoltageDService;
+ private final IRDimVoltageMService irDimVoltageMService;
+ private final IRDimVoltageYService irDimVoltageYService;
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rBusbarVoltage", nodeType = NodeTypeEnum.COMMON)
public boolean rBusbarVoltageAccess(NodeComponent bindCmp) {
@@ -29,24 +32,23 @@ public class GeneraTrixExecutor extends BaseExecutor{
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rBusbarVoltage", nodeType = NodeTypeEnum.COMMON)
public void rBusbarVoltageProcess(NodeComponent bindCmp) {
String tag = bindCmp.getTag();
- CalculatedParam calculatedParam = bindCmp.getRequestData();
+ CalculatedParam calculatedParam = bindCmp.getRequestData();
if (tag.equalsIgnoreCase("r_busbar_voltage_d")) {
//日表
- irBusbarVoltageDService.busbarVoltageD(calculatedParam);
+ irDimVoltageDService.busbarVoltageD(calculatedParam);
} else if (tag.equalsIgnoreCase("r_busbar_voltage_m")) {
//数据补招不执行非日表算法
if (!calculatedParam.isRepair()) {
//月表
-
+ irDimVoltageMService.busbarVoltageM(calculatedParam);
}
}else if (tag.equalsIgnoreCase("r_busbar_voltage_y")) {
//数据补招不执行非日表算法
if (!calculatedParam.isRepair()) {
//年表
-
+ irDimVoltageYService.busbarVoltageY(calculatedParam);
}
}
}
-
}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RBusbarVoltageDMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RBusbarVoltageDMapper.java
deleted file mode 100644
index e54c5f399..000000000
--- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RBusbarVoltageDMapper.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.njcn.prepare.harmonic.mapper.mysql.dim;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
-import com.njcn.harmonic.pojo.po.dim.RBusbarVoltageD;
-
-/**
- *
- * 母线不同电压等级指标数据-日表 Mapper 接口
- *
- *
- * @author xuyang
- * @since 2023-11-27
- */
-public interface RBusbarVoltageDMapper extends MppBaseMapper {
-
-}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimVoltageDMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimVoltageDMapper.java
new file mode 100644
index 000000000..2e567b5d0
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimVoltageDMapper.java
@@ -0,0 +1,23 @@
+package com.njcn.prepare.harmonic.mapper.mysql.dim;
+
+import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
+import com.njcn.harmonic.pojo.po.dim.RDimVoltageD;
+import com.njcn.prepare.harmonic.pojo.dto.LineDataDto;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ *
+ * 母线不同电压等级指标数据-日表 Mapper 接口
+ *
+ *
+ * @author xuyang
+ * @since 2023-11-27
+ */
+public interface RDimVoltageDMapper extends MppBaseMapper {
+
+ List getLineData(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("collection") Set list);
+
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimVoltageMMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimVoltageMMapper.java
new file mode 100644
index 000000000..49cb6b363
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimVoltageMMapper.java
@@ -0,0 +1,17 @@
+package com.njcn.prepare.harmonic.mapper.mysql.dim;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
+import com.njcn.harmonic.pojo.po.dim.RDimVoltageM;
+
+/**
+ *
+ * 区域母线**电压等级**指标标准差、平均值-月表 Mapper 接口
+ *
+ *
+ * @author xuyang
+ * @since 2023-11-29
+ */
+public interface RDimVoltageMMapper extends MppBaseMapper {
+
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimVoltageYMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimVoltageYMapper.java
new file mode 100644
index 000000000..1bcc355f6
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimVoltageYMapper.java
@@ -0,0 +1,17 @@
+package com.njcn.prepare.harmonic.mapper.mysql.dim;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
+import com.njcn.harmonic.pojo.po.dim.RDimVoltageY;
+
+/**
+ *
+ * 区域母线**电压等级**指标标准差、平均值-年表 Mapper 接口
+ *
+ *
+ * @author xuyang
+ * @since 2023-11-29
+ */
+public interface RDimVoltageYMapper extends MppBaseMapper {
+
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/mapping/RDimVoltageDMapper.xml b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/mapping/RDimVoltageDMapper.xml
new file mode 100644
index 000000000..9e04f0c9c
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/mapping/RDimVoltageDMapper.xml
@@ -0,0 +1,132 @@
+
+
+
+
+
+
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRBusbarVoltageDService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimVoltageDService.java
similarity index 59%
rename from pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRBusbarVoltageDService.java
rename to pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimVoltageDService.java
index 05f97bd6b..187f08be8 100644
--- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRBusbarVoltageDService.java
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimVoltageDService.java
@@ -1,7 +1,8 @@
package com.njcn.prepare.harmonic.service.mysql.dim;
import com.baomidou.mybatisplus.extension.service.IService;
-import com.njcn.harmonic.pojo.po.dim.RBusbarVoltageD;
+import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO;
+import com.njcn.harmonic.pojo.po.dim.RDimVoltageD;
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
/**
@@ -12,11 +13,11 @@ import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
* @author xuyang
* @since 2023-11-27
*/
-public interface IRBusbarVoltageDService extends IService {
+public interface IRDimVoltageDService extends IService {
/**
* 插入母线不同电压等级指标数据-日表
*/
- void busbarVoltageD(CalculatedParam calculatedParam);
+ void busbarVoltageD(CalculatedParam calculatedParam);
}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimVoltageMService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimVoltageMService.java
new file mode 100644
index 000000000..0bde4f1da
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimVoltageMService.java
@@ -0,0 +1,23 @@
+package com.njcn.prepare.harmonic.service.mysql.dim;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO;
+import com.njcn.harmonic.pojo.po.dim.RDimVoltageM;
+import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
+
+/**
+ *
+ * 区域母线**电压等级**指标标准差、平均值-月表 服务类
+ *
+ *
+ * @author xuyang
+ * @since 2023-11-29
+ */
+public interface IRDimVoltageMService extends IService {
+
+ /**
+ * 插入母线不同电压等级指标数据-月表
+ */
+ void busbarVoltageM(CalculatedParam calculatedParam);
+
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimVoltageYService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimVoltageYService.java
new file mode 100644
index 000000000..c9967fc4e
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/IRDimVoltageYService.java
@@ -0,0 +1,23 @@
+package com.njcn.prepare.harmonic.service.mysql.dim;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO;
+import com.njcn.harmonic.pojo.po.dim.RDimVoltageY;
+import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
+
+/**
+ *
+ * 区域母线**电压等级**指标标准差、平均值-年表 服务类
+ *
+ *
+ * @author xuyang
+ * @since 2023-11-29
+ */
+public interface IRDimVoltageYService extends IService {
+
+ /**
+ * 插入母线不同电压等级指标数据-年表
+ */
+ void busbarVoltageY(CalculatedParam calculatedParam);
+
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RBusbarVoltageDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RBusbarVoltageDServiceImpl.java
deleted file mode 100644
index f88255313..000000000
--- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RBusbarVoltageDServiceImpl.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.njcn.prepare.harmonic.service.mysql.dim.impl;
-
-import cn.hutool.core.date.DatePattern;
-import cn.hutool.core.date.LocalDateTimeUtil;
-import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
-import com.njcn.harmonic.pojo.po.dim.RBusbarVoltageD;
-import com.njcn.prepare.harmonic.mapper.mysql.dim.RBusbarVoltageDMapper;
-import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
-import com.njcn.prepare.harmonic.service.mysql.dim.IRBusbarVoltageDService;
-import org.apache.commons.collections4.ListUtils;
-import org.springframework.stereotype.Service;
-
-import java.time.LocalDateTime;
-import java.util.List;
-
-/**
- *
- * 母线不同电压等级指标数据-日表 服务实现类
- *
- *
- * @author xuyang
- * @since 2023-11-27
- */
-@Service
-public class RBusbarVoltageDServiceImpl extends MppServiceImpl implements IRBusbarVoltageDService {
-
- @Override
- public void busbarVoltageD(CalculatedParam calculatedParam) {
- List busbarList = calculatedParam.getIdList();
- System.out.println("母线集合:" + busbarList);
- System.out.println("个数:" + busbarList.size());
- //以尺寸1000分片
- List> pendingIds = ListUtils.partition(busbarList,1000);
- LocalDateTime beginDay = LocalDateTimeUtil.beginOfDay(LocalDateTimeUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
- LocalDateTime endDay = LocalDateTimeUtil.endOfDay(LocalDateTimeUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
-
- }
-}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimVoltageDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimVoltageDServiceImpl.java
new file mode 100644
index 000000000..53a868e1d
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimVoltageDServiceImpl.java
@@ -0,0 +1,193 @@
+package com.njcn.prepare.harmonic.service.mysql.dim.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.device.biz.pojo.dto.DeptGetBusBarDTO;
+import com.njcn.device.pms.pojo.po.GeneratrixWire;
+import com.njcn.device.pms.pojo.po.Monitor;
+import com.njcn.harmonic.pojo.po.dim.RDimVoltageD;
+import com.njcn.prepare.harmonic.mapper.mysql.area.PmsMonitorPOMapper;
+import com.njcn.prepare.harmonic.mapper.mysql.dim.GeneratrixWireMapper;
+import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimVoltageDMapper;
+import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
+import com.njcn.prepare.harmonic.pojo.dto.LineDataDto;
+import com.njcn.prepare.harmonic.service.mysql.dim.IRDimVoltageDService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDate;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * 母线不同电压等级指标数据-日表 服务实现类
+ *
+ *
+ * @author xuyang
+ * @since 2023-11-27
+ */
+@Service
+@RequiredArgsConstructor
+@Slf4j
+public class RDimVoltageDServiceImpl extends MppServiceImpl implements IRDimVoltageDService {
+
+ private final PmsMonitorPOMapper pmsMonitorPOMapper;
+
+ private final GeneratrixWireMapper generatrixWireMapper;
+
+ @Override
+ public void busbarVoltageD(CalculatedParam calculatedParam) {
+ List result = new ArrayList<>();
+ List deptList = calculatedParam.getIdList();
+ String beginDay = LocalDateTimeUtil.format(LocalDateTimeUtil.beginOfDay(LocalDateTimeUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)),DatePattern.NORM_DATETIME_PATTERN);
+ String endDay = LocalDateTimeUtil.format(LocalDateTimeUtil.endOfDay(LocalDateTimeUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)),DatePattern.NORM_DATETIME_PATTERN);
+ Set lineList = new HashSet<>();
+ Set busBarList = new HashSet<>();
+ //获取监测点集合
+ deptList.forEach(item->{
+ lineList.addAll(item.getBusBarAndMonitorIDs());
+ busBarList.addAll(item.getBusBarIds());
+ });
+ if (CollectionUtil.isNotEmpty(lineList)){
+ //获取监测点信息
+ List list1 = getMonitorInfo(lineList);
+ //获取监测点数据
+ List list2 = getLineData(beginDay,endDay,lineList);
+ //获取母线信息
+ List list3 = getBusBarInfo(busBarList);
+ //循环区域信息,筛选符合条件的数据,做统计
+ deptList.forEach(item->{
+ List list = item.getBusBarIds();
+ if (CollUtil.isNotEmpty(list)) {
+ RDimVoltageD rDimVoltageD = new RDimVoltageD();
+ rDimVoltageD.setOrgId(item.getUnitId());
+ rDimVoltageD.setStatisDate(LocalDate.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_FORMATTER));
+ //取母线并集
+ List list4 = list3.stream().filter(obj -> list.contains(obj.getId())).collect(Collectors.toList());
+ //根据母线电压等级分组
+ Map> map1 = list4.stream().collect(Collectors.groupingBy(GeneratrixWire::getScale));
+ //循环分组数据,获取母线下监测点数据
+ map1.forEach((k, v) -> {
+ rDimVoltageD.setVoltageType(k);
+ //不同电压等级下,母线的id
+ List list5 = v.stream().map(GeneratrixWire::getId).collect(Collectors.toList());
+ //获取这些母线下的监测点
+ List list6 = list1.stream().filter(obj -> list5.contains(obj.getLineId())).collect(Collectors.toList());
+ //获取监测点数据
+ List list7 = list2.stream().filter(vo->list6.stream().map(Monitor::getId).collect(Collectors.toList()).contains(vo.getLineId())).collect(Collectors.toList());
+ if (CollectionUtil.isNotEmpty(list7)){
+ //赋值
+ assignment(list7,rDimVoltageD);
+ }
+ });
+ result.add(rDimVoltageD);
+ }
+ });
+ }
+ if (CollectionUtil.isNotEmpty(result)){
+ this.saveOrUpdateBatchByMultiId(result);
+ }
+ }
+
+ /**
+ * 获取监测点信息
+ * @param lineList 监测点集合
+ * @return 监测点信息
+ */
+ public List getMonitorInfo(Set lineList) {
+ LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>();
+ lambdaQueryWrapper.in(Monitor::getId,lineList).eq(Monitor::getStatus,1);
+ return pmsMonitorPOMapper.selectList(lambdaQueryWrapper);
+ }
+
+ /**
+ * 获取母线信息
+ * @param busBarList 监测点集合
+ * @return 母线信息
+ */
+ public List getBusBarInfo(Set busBarList){
+ LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>();
+ lambdaQueryWrapper.in(GeneratrixWire::getId,busBarList).eq(GeneratrixWire::getStatus, 1);
+ return generatrixWireMapper.selectList(lambdaQueryWrapper);
+ }
+
+ /**
+ * 获取监测点数据
+ * @param startTime 开始时间
+ * @param endTime 结束时间
+ * @param lineList 监测点集合
+ * @return 母线信息
+ */
+ public List getLineData(String startTime, String endTime, Set lineList){
+ return this.baseMapper.getLineData(startTime,endTime,lineList);
+ }
+
+ /**
+ * 给实体赋值
+ * @param list7 数据集合
+ * @param rDimVoltageD 对象
+ */
+ public void assignment(List list7, RDimVoltageD rDimVoltageD) {
+ rDimVoltageD.setV(list7.stream().mapToDouble(LineDataDto::getRms).average().orElse(0d));
+ rDimVoltageD.setVUnbalance(list7.stream().mapToDouble(LineDataDto::getVUnbalance).average().orElse(0d));
+ rDimVoltageD.setPst(list7.stream().mapToDouble(LineDataDto::getPst).average().orElse(0d));
+ rDimVoltageD.setVThd(list7.stream().mapToDouble(LineDataDto::getVThd).average().orElse(0d));
+ rDimVoltageD.setV1(list7.stream().mapToDouble(LineDataDto::getV1).average().orElse(0d));
+ rDimVoltageD.setV2(list7.stream().mapToDouble(LineDataDto::getV2).average().orElse(0d));
+ rDimVoltageD.setV3(list7.stream().mapToDouble(LineDataDto::getV3).average().orElse(0d));
+ rDimVoltageD.setV4(list7.stream().mapToDouble(LineDataDto::getV4).average().orElse(0d));
+ rDimVoltageD.setV5(list7.stream().mapToDouble(LineDataDto::getV5).average().orElse(0d));
+ rDimVoltageD.setV6(list7.stream().mapToDouble(LineDataDto::getV6).average().orElse(0d));
+ rDimVoltageD.setV7(list7.stream().mapToDouble(LineDataDto::getV7).average().orElse(0d));
+ rDimVoltageD.setV8(list7.stream().mapToDouble(LineDataDto::getV8).average().orElse(0d));
+ rDimVoltageD.setV9(list7.stream().mapToDouble(LineDataDto::getV9).average().orElse(0d));
+ rDimVoltageD.setV10(list7.stream().mapToDouble(LineDataDto::getV10).average().orElse(0d));
+ rDimVoltageD.setV11(list7.stream().mapToDouble(LineDataDto::getV11).average().orElse(0d));
+ rDimVoltageD.setV12(list7.stream().mapToDouble(LineDataDto::getV12).average().orElse(0d));
+ rDimVoltageD.setV13(list7.stream().mapToDouble(LineDataDto::getV13).average().orElse(0d));
+ rDimVoltageD.setV14(list7.stream().mapToDouble(LineDataDto::getV14).average().orElse(0d));
+ rDimVoltageD.setV15(list7.stream().mapToDouble(LineDataDto::getV15).average().orElse(0d));
+ rDimVoltageD.setV16(list7.stream().mapToDouble(LineDataDto::getV16).average().orElse(0d));
+ rDimVoltageD.setV17(list7.stream().mapToDouble(LineDataDto::getV17).average().orElse(0d));
+ rDimVoltageD.setV18(list7.stream().mapToDouble(LineDataDto::getV18).average().orElse(0d));
+ rDimVoltageD.setV19(list7.stream().mapToDouble(LineDataDto::getV19).average().orElse(0d));
+ rDimVoltageD.setV20(list7.stream().mapToDouble(LineDataDto::getV20).average().orElse(0d));
+ rDimVoltageD.setV21(list7.stream().mapToDouble(LineDataDto::getV21).average().orElse(0d));
+ rDimVoltageD.setV22(list7.stream().mapToDouble(LineDataDto::getV22).average().orElse(0d));
+ rDimVoltageD.setV23(list7.stream().mapToDouble(LineDataDto::getV23).average().orElse(0d));
+ rDimVoltageD.setV24(list7.stream().mapToDouble(LineDataDto::getV24).average().orElse(0d));
+ rDimVoltageD.setV25(list7.stream().mapToDouble(LineDataDto::getV25).average().orElse(0d));
+ rDimVoltageD.setV26(list7.stream().mapToDouble(LineDataDto::getV26).average().orElse(0d));
+ rDimVoltageD.setV27(list7.stream().mapToDouble(LineDataDto::getV27).average().orElse(0d));
+ rDimVoltageD.setV28(list7.stream().mapToDouble(LineDataDto::getV28).average().orElse(0d));
+ rDimVoltageD.setV29(list7.stream().mapToDouble(LineDataDto::getV29).average().orElse(0d));
+ rDimVoltageD.setV30(list7.stream().mapToDouble(LineDataDto::getV30).average().orElse(0d));
+ rDimVoltageD.setV31(list7.stream().mapToDouble(LineDataDto::getV31).average().orElse(0d));
+ rDimVoltageD.setV32(list7.stream().mapToDouble(LineDataDto::getV32).average().orElse(0d));
+ rDimVoltageD.setV33(list7.stream().mapToDouble(LineDataDto::getV33).average().orElse(0d));
+ rDimVoltageD.setV34(list7.stream().mapToDouble(LineDataDto::getV34).average().orElse(0d));
+ rDimVoltageD.setV35(list7.stream().mapToDouble(LineDataDto::getV35).average().orElse(0d));
+ rDimVoltageD.setV36(list7.stream().mapToDouble(LineDataDto::getV36).average().orElse(0d));
+ rDimVoltageD.setV37(list7.stream().mapToDouble(LineDataDto::getV37).average().orElse(0d));
+ rDimVoltageD.setV38(list7.stream().mapToDouble(LineDataDto::getV38).average().orElse(0d));
+ rDimVoltageD.setV39(list7.stream().mapToDouble(LineDataDto::getV39).average().orElse(0d));
+ rDimVoltageD.setV40(list7.stream().mapToDouble(LineDataDto::getV40).average().orElse(0d));
+ rDimVoltageD.setV41(list7.stream().mapToDouble(LineDataDto::getV41).average().orElse(0d));
+ rDimVoltageD.setV42(list7.stream().mapToDouble(LineDataDto::getV42).average().orElse(0d));
+ rDimVoltageD.setV43(list7.stream().mapToDouble(LineDataDto::getV43).average().orElse(0d));
+ rDimVoltageD.setV44(list7.stream().mapToDouble(LineDataDto::getV44).average().orElse(0d));
+ rDimVoltageD.setV45(list7.stream().mapToDouble(LineDataDto::getV45).average().orElse(0d));
+ rDimVoltageD.setV46(list7.stream().mapToDouble(LineDataDto::getV46).average().orElse(0d));
+ rDimVoltageD.setV47(list7.stream().mapToDouble(LineDataDto::getV47).average().orElse(0d));
+ rDimVoltageD.setV48(list7.stream().mapToDouble(LineDataDto::getV48).average().orElse(0d));
+ rDimVoltageD.setV49(list7.stream().mapToDouble(LineDataDto::getV49).average().orElse(0d));
+ rDimVoltageD.setV50(list7.stream().mapToDouble(LineDataDto::getV50).average().orElse(0d));
+ }
+
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimVoltageMServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimVoltageMServiceImpl.java
new file mode 100644
index 000000000..a9eb0dd70
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimVoltageMServiceImpl.java
@@ -0,0 +1,158 @@
+package com.njcn.prepare.harmonic.service.mysql.dim.impl;
+
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
+import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO;
+import com.njcn.harmonic.pojo.po.dim.RDimVoltageD;
+import com.njcn.harmonic.pojo.po.dim.RDimVoltageM;
+import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimVoltageDMapper;
+import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimVoltageMMapper;
+import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
+import com.njcn.prepare.harmonic.pojo.dto.LineDataDto;
+import com.njcn.prepare.harmonic.service.mysql.dim.IRDimVoltageMService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.ehcache.core.util.CollectionUtil;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * 区域母线**电压等级**指标标准差、平均值-月表 服务实现类
+ *
+ *
+ * @author xuyang
+ * @since 2023-11-29
+ */
+@Service
+@RequiredArgsConstructor
+@Slf4j
+public class RDimVoltageMServiceImpl extends MppServiceImpl implements IRDimVoltageMService {
+
+ private final RDimVoltageDMapper rDimVoltageDMapper;
+
+ @Override
+ public void busbarVoltageM(CalculatedParam calculatedParam) {
+ List result = new ArrayList<>();
+ List list = calculatedParam.getIdList();
+ DateTime startTime = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate()));
+ DateTime endTime = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate()));
+ List deptList = list.stream().map(DeptGetBusBarDTO::getUnitId).collect(Collectors.toList());
+ //获取日表数据
+ Map> map = getDayData(startTime,endTime,deptList);
+ map.forEach((k,v)->{
+ RDimVoltageM rDimVoltageM = new RDimVoltageM();
+ rDimVoltageM.setOrgId(k);
+ rDimVoltageM.setStatisDate(LocalDateTimeUtil.parseDate(startTime.toString(DatePattern.NORM_DATE_PATTERN),DatePattern.NORM_DATE_FORMATTER));
+ Map> map1 = v.stream().collect(Collectors.groupingBy(RDimVoltageD::getVoltageType));
+ map1.forEach((k1,v1)->{
+ rDimVoltageM.setVoltageType(k1);
+ //获取平均值
+ getAvg(v1,rDimVoltageM);
+ result.add(rDimVoltageM);
+ //获取标准差
+ getSd(v1,rDimVoltageM);
+ result.add(rDimVoltageM);
+ });
+ });
+ }
+
+ /**
+ * 获取日表数据,按照单位分组
+ * @param startTime 起始时间
+ * @param endTime 结束时间
+ * @param deptList 单位集合
+ * @return
+ */
+ public Map> getDayData(DateTime startTime, DateTime endTime, List deptList) {
+ LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>();
+ lambdaQueryWrapper.in(RDimVoltageD::getOrgId,deptList).between(RDimVoltageD::getStatisDate,startTime,endTime);
+ List list = rDimVoltageDMapper.selectList(lambdaQueryWrapper);
+ return list.stream().collect(Collectors.groupingBy(RDimVoltageD::getOrgId));
+ }
+
+ /**
+ * 获取平均值
+ * @param list 数据集合
+ * @param rDimVoltageM 实体
+ */
+ public void getAvg(List list, RDimVoltageM rDimVoltageM) {
+ rDimVoltageM.setDataType("avg");
+ rDimVoltageM.setV(list.stream().mapToDouble(RDimVoltageD::getV).average().orElse(0d));
+ rDimVoltageM.setVUnbalance(list.stream().mapToDouble(RDimVoltageD::getVUnbalance).average().orElse(0d));
+ rDimVoltageM.setPst(list.stream().mapToDouble(RDimVoltageD::getPst).average().orElse(0d));
+ rDimVoltageM.setVThd(list.stream().mapToDouble(RDimVoltageD::getVThd).average().orElse(0d));
+ rDimVoltageM.setV1(list.stream().mapToDouble(RDimVoltageD::getV1).average().orElse(0d));
+ rDimVoltageM.setV2(list.stream().mapToDouble(RDimVoltageD::getV2).average().orElse(0d));
+ rDimVoltageM.setV3(list.stream().mapToDouble(RDimVoltageD::getV3).average().orElse(0d));
+ rDimVoltageM.setV4(list.stream().mapToDouble(RDimVoltageD::getV4).average().orElse(0d));
+ rDimVoltageM.setV5(list.stream().mapToDouble(RDimVoltageD::getV5).average().orElse(0d));
+ rDimVoltageM.setV6(list.stream().mapToDouble(RDimVoltageD::getV6).average().orElse(0d));
+ rDimVoltageM.setV7(list.stream().mapToDouble(RDimVoltageD::getV7).average().orElse(0d));
+ rDimVoltageM.setV8(list.stream().mapToDouble(RDimVoltageD::getV8).average().orElse(0d));
+ rDimVoltageM.setV9(list.stream().mapToDouble(RDimVoltageD::getV9).average().orElse(0d));
+ rDimVoltageM.setV10(list.stream().mapToDouble(RDimVoltageD::getV10).average().orElse(0d));
+ rDimVoltageM.setV11(list.stream().mapToDouble(RDimVoltageD::getV11).average().orElse(0d));
+ rDimVoltageM.setV12(list.stream().mapToDouble(RDimVoltageD::getV12).average().orElse(0d));
+ rDimVoltageM.setV13(list.stream().mapToDouble(RDimVoltageD::getV13).average().orElse(0d));
+ rDimVoltageM.setV14(list.stream().mapToDouble(RDimVoltageD::getV14).average().orElse(0d));
+ rDimVoltageM.setV15(list.stream().mapToDouble(RDimVoltageD::getV15).average().orElse(0d));
+ rDimVoltageM.setV16(list.stream().mapToDouble(RDimVoltageD::getV16).average().orElse(0d));
+ rDimVoltageM.setV17(list.stream().mapToDouble(RDimVoltageD::getV17).average().orElse(0d));
+ rDimVoltageM.setV18(list.stream().mapToDouble(RDimVoltageD::getV18).average().orElse(0d));
+ rDimVoltageM.setV19(list.stream().mapToDouble(RDimVoltageD::getV19).average().orElse(0d));
+ rDimVoltageM.setV20(list.stream().mapToDouble(RDimVoltageD::getV20).average().orElse(0d));
+ rDimVoltageM.setV21(list.stream().mapToDouble(RDimVoltageD::getV21).average().orElse(0d));
+ rDimVoltageM.setV22(list.stream().mapToDouble(RDimVoltageD::getV22).average().orElse(0d));
+ rDimVoltageM.setV23(list.stream().mapToDouble(RDimVoltageD::getV23).average().orElse(0d));
+ rDimVoltageM.setV24(list.stream().mapToDouble(RDimVoltageD::getV24).average().orElse(0d));
+ rDimVoltageM.setV25(list.stream().mapToDouble(RDimVoltageD::getV25).average().orElse(0d));
+ rDimVoltageM.setV26(list.stream().mapToDouble(RDimVoltageD::getV26).average().orElse(0d));
+ rDimVoltageM.setV27(list.stream().mapToDouble(RDimVoltageD::getV27).average().orElse(0d));
+ rDimVoltageM.setV28(list.stream().mapToDouble(RDimVoltageD::getV28).average().orElse(0d));
+ rDimVoltageM.setV29(list.stream().mapToDouble(RDimVoltageD::getV29).average().orElse(0d));
+ rDimVoltageM.setV30(list.stream().mapToDouble(RDimVoltageD::getV30).average().orElse(0d));
+ rDimVoltageM.setV31(list.stream().mapToDouble(RDimVoltageD::getV31).average().orElse(0d));
+ rDimVoltageM.setV32(list.stream().mapToDouble(RDimVoltageD::getV32).average().orElse(0d));
+ rDimVoltageM.setV33(list.stream().mapToDouble(RDimVoltageD::getV33).average().orElse(0d));
+ rDimVoltageM.setV34(list.stream().mapToDouble(RDimVoltageD::getV34).average().orElse(0d));
+ rDimVoltageM.setV35(list.stream().mapToDouble(RDimVoltageD::getV35).average().orElse(0d));
+ rDimVoltageM.setV36(list.stream().mapToDouble(RDimVoltageD::getV36).average().orElse(0d));
+ rDimVoltageM.setV37(list.stream().mapToDouble(RDimVoltageD::getV37).average().orElse(0d));
+ rDimVoltageM.setV38(list.stream().mapToDouble(RDimVoltageD::getV38).average().orElse(0d));
+ rDimVoltageM.setV39(list.stream().mapToDouble(RDimVoltageD::getV39).average().orElse(0d));
+ rDimVoltageM.setV40(list.stream().mapToDouble(RDimVoltageD::getV40).average().orElse(0d));
+ rDimVoltageM.setV41(list.stream().mapToDouble(RDimVoltageD::getV41).average().orElse(0d));
+ rDimVoltageM.setV42(list.stream().mapToDouble(RDimVoltageD::getV42).average().orElse(0d));
+ rDimVoltageM.setV43(list.stream().mapToDouble(RDimVoltageD::getV43).average().orElse(0d));
+ rDimVoltageM.setV44(list.stream().mapToDouble(RDimVoltageD::getV44).average().orElse(0d));
+ rDimVoltageM.setV45(list.stream().mapToDouble(RDimVoltageD::getV45).average().orElse(0d));
+ rDimVoltageM.setV46(list.stream().mapToDouble(RDimVoltageD::getV46).average().orElse(0d));
+ rDimVoltageM.setV47(list.stream().mapToDouble(RDimVoltageD::getV47).average().orElse(0d));
+ rDimVoltageM.setV48(list.stream().mapToDouble(RDimVoltageD::getV48).average().orElse(0d));
+ rDimVoltageM.setV49(list.stream().mapToDouble(RDimVoltageD::getV49).average().orElse(0d));
+ rDimVoltageM.setV50(list.stream().mapToDouble(RDimVoltageD::getV50).average().orElse(0d));
+
+ }
+
+ /**
+ * 获取标准差
+ * @param list 数据集合
+ * @param rDimVoltageM 实体
+ */
+ public void getSd(List list, RDimVoltageM rDimVoltageM) {
+ rDimVoltageM.setDataType("sd");
+
+ }
+
+}
diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimVoltageYServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimVoltageYServiceImpl.java
new file mode 100644
index 000000000..2d2f460c6
--- /dev/null
+++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimVoltageYServiceImpl.java
@@ -0,0 +1,26 @@
+package com.njcn.prepare.harmonic.service.mysql.dim.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO;
+import com.njcn.harmonic.pojo.po.dim.RDimVoltageY;
+import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimVoltageYMapper;
+import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
+import com.njcn.prepare.harmonic.service.mysql.dim.IRDimVoltageYService;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 区域母线**电压等级**指标标准差、平均值-年表 服务实现类
+ *
+ *
+ * @author xuyang
+ * @since 2023-11-29
+ */
+@Service
+public class RDimVoltageYServiceImpl extends ServiceImpl implements IRDimVoltageYService {
+
+ @Override
+ public void busbarVoltageY(CalculatedParam calculatedParam) {
+
+ }
+}
diff --git a/pqs-user/user-boot/src/main/java/com/njcn/user/service/impl/UserServiceImpl.java b/pqs-user/user-boot/src/main/java/com/njcn/user/service/impl/UserServiceImpl.java
index b7b67c9b5..62316940a 100644
--- a/pqs-user/user-boot/src/main/java/com/njcn/user/service/impl/UserServiceImpl.java
+++ b/pqs-user/user-boot/src/main/java/com/njcn/user/service/impl/UserServiceImpl.java
@@ -471,6 +471,8 @@ public class UserServiceImpl extends ServiceImpl implements IU
user.setPwdValidity(LocalDateTime.now());
user.setLoginTime(LocalDateTime.now());
user.setState(UserState.ENABLE);
+ user.setLoginErrorTimes(0);
+ user.setFirstErrorTime(null);
return this.updateById(user);
}