算法提交

This commit is contained in:
huangzj
2023-11-16 11:43:26 +08:00
parent 40fba020dd
commit 4e6a740696
40 changed files with 4250 additions and 374 deletions

View File

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDate;
import java.util.Date; import java.util.Date;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
@@ -30,7 +32,7 @@ public class RStatHarmonicDPO {
* 生成数据的时间,每日统计一次 * 生成数据的时间,每日统计一次
*/ */
@MppMultiId(value = "data_date") @MppMultiId(value = "data_date")
private Date dataDate; private LocalDate dataDate;
/** /**
* 监测点类别ID、监测对象类型ID * 监测点类别ID、监测对象类型ID

View File

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDate;
import java.util.Date; import java.util.Date;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
@@ -30,7 +32,7 @@ public class RStatHarmonicMPO {
* 生成数据的时间,每月统计一次 * 生成数据的时间,每月统计一次
*/ */
@MppMultiId(value = "data_date") @MppMultiId(value = "data_date")
private Date dataDate; private LocalDate dataDate;
/** /**
* 监测点类别ID、监测对象类型ID * 监测点类别ID、监测对象类型ID

View File

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDate;
import java.util.Date; import java.util.Date;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
@@ -30,7 +32,7 @@ public class RStatHarmonicQPO {
* 生成数据的时间,每季度统计一次 * 生成数据的时间,每季度统计一次
*/ */
@MppMultiId(value = "data_date") @MppMultiId(value = "data_date")
private Date dataDate; private LocalDate dataDate;
/** /**
* 监测点类别ID、监测对象类型ID * 监测点类别ID、监测对象类型ID

View File

@@ -1,68 +0,0 @@
package com.njcn.prepare.harmonic.pojo.mysql.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;
import lombok.Data;
/**
*
* Description:
* Date: 2023/6/6 9:10【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Data
@TableName(value = "r_stat_harmonic_voltage_d")
public class RStatHarmonicVoltageD {
/**
* 单位ID
*/
@TableId(value = "org_no", type = IdType.ASSIGN_UUID)
private String orgNo;
/**
* 生成数据的时间,每月统计一次
*/
@TableId(value = "data_date", type = IdType.ASSIGN_UUID)
private Date dataDate;
/**
* 监测对象类型ID
*/
@TableId(value = "measurement_type_class", type = IdType.ASSIGN_UUID)
private String measurementTypeClass;
/**
* 稳态指标类型Id字典表ID
*/
@TableId(value = "harmonic_type", type = IdType.ASSIGN_UUID)
private String harmonicType;
/**
* 电压等级Id字典表ID
*/
@TableId(value = "voltage_type", type = IdType.ASSIGN_UUID)
private String voltageType;
/**
* 数据类型,字典表01主网测点 02配网测点
*/
@TableId(value = "data_type", type = IdType.ASSIGN_UUID)
private String dataType;
/**
* 超标监测点数
*/
@TableField(value = "over_limit_measurement_average")
private Integer overLimitMeasurementAverage;
/**
* 超标监测点数占比
*/
@TableField(value = "over_limit_measurement_ratio_average")
private Float overLimitMeasurementRatioAverage;
}

View File

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDate;
import java.util.Date; import java.util.Date;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
@@ -30,7 +32,7 @@ public class RStatHarmonicVoltageDPO {
* 生成数据的时间,每月统计一次 * 生成数据的时间,每月统计一次
*/ */
@MppMultiId(value = "data_date") @MppMultiId(value = "data_date")
private Date dataDate; private LocalDate dataDate;
/** /**
* 监测对象类型ID * 监测对象类型ID

View File

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDate;
import java.util.Date; import java.util.Date;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
@@ -30,7 +32,7 @@ public class RStatHarmonicVoltageMPO {
* 生成数据的时间,每月统计一次 * 生成数据的时间,每月统计一次
*/ */
@MppMultiId(value = "data_date") @MppMultiId(value = "data_date")
private Date dataDate; private LocalDate dataDate;
/** /**
* 监测对象类型ID * 监测对象类型ID

View File

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDate;
import java.util.Date; import java.util.Date;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
@@ -30,7 +32,7 @@ public class RStatHarmonicYPO {
* 生成数据的时间,每季度统计一次 * 生成数据的时间,每季度统计一次
*/ */
@MppMultiId(value = "data_date") @MppMultiId(value = "data_date")
private Date dataDate; private LocalDate dataDate;
/** /**
* 监测点类别ID、监测对象类型ID * 监测点类别ID、监测对象类型ID

View File

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDate;
import java.util.Date; import java.util.Date;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
@@ -30,7 +32,7 @@ public class RStatLoadTypeDPO {
* 生成数据的时间,每日统计一次 * 生成数据的时间,每日统计一次
*/ */
@MppMultiId(value = "data_date") @MppMultiId(value = "data_date")
private Date dataDate; private LocalDate dataDate;
/** /**
* 四类典型干扰源类型(风电、光伏、其他非线性负荷、电铁)字典ID * 四类典型干扰源类型(风电、光伏、其他非线性负荷、电铁)字典ID

View File

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDate;
import java.util.Date; import java.util.Date;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
@@ -30,7 +32,7 @@ public class RStatLoadTypeMPO {
* 生成数据的时间,每月统计一次 * 生成数据的时间,每月统计一次
*/ */
@MppMultiId(value = "data_date") @MppMultiId(value = "data_date")
private Date dataDate; private LocalDate dataDate;
/** /**
* 四类典型干扰源类型(风电、光伏、其他非线性负荷、电铁) * 四类典型干扰源类型(风电、光伏、其他非线性负荷、电铁)

View File

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDate;
import java.util.Date; import java.util.Date;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
@@ -30,7 +32,7 @@ public class RStatLoadTypeQPO {
* 生成数据的时间,每季统计一次 * 生成数据的时间,每季统计一次
*/ */
@MppMultiId(value = "data_date") @MppMultiId(value = "data_date")
private Date dataDate; private LocalDate dataDate;
/** /**
* 四类典型干扰源类型(风电、光伏、其他非线性负荷、电铁) * 四类典型干扰源类型(风电、光伏、其他非线性负荷、电铁)

View File

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDate;
import java.util.Date; import java.util.Date;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
@@ -30,7 +32,7 @@ public class RStatLoadTypeYPO {
* 生成数据的时间,每年统计一次 * 生成数据的时间,每年统计一次
*/ */
@MppMultiId(value = "data_date") @MppMultiId(value = "data_date")
private Date dataDate; private LocalDate dataDate;
/** /**
* 四类典型干扰源类型(风电、光伏、其他非线性负荷、电铁) * 四类典型干扰源类型(风电、光伏、其他非线性负荷、电铁)

View File

@@ -1,132 +0,0 @@
package com.njcn.prepare.harmonic.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.util.Date;
/**
* 区域告警统计(月)
* @TableName r_stat_area_alarm_count_m
*/
@Data
@TableName("r_stat_area_alarm_count_m")
public class RStatAreaAlarmCountM {
/**
* 单位ID
*/
@MppMultiId(value = "org_no")
private String orgNo;
/**
* 生成数据的时间,每月统计一次
*/
@MppMultiId(value = "data_date")
private Date dataDate;
/**
* 数据类型(0:主网 1:配网)
*/
@MppMultiId(value = "data_type")
private String dataType;
/**
* 电压偏差告警情况(0:否 1:是)
*/
@TableField(value = "vdev_alarm_info")
private Integer vdevAlarmInfo;
/**
* 电压偏差告警超标占比
*/
@TableField(value = "vdev_alarm_ratio")
private Float vdevAlarmRatio;
/**
* 频率偏差告警情况(0:否 1:是)
*/
@TableField(value = "freq_alarm_info")
private Integer freqAlarmInfo;
/**
* 频率偏差告警超标占比
*/
@TableField(value = "freq_alarm_ratio")
private Float freqAlarmRatio;
/**
* 三相电压不平衡度告警情况(0:否 1:是)
*/
@TableField(value = "unbalance_alarm_info")
private Integer unbalanceAlarmInfo;
/**
* 三相电压不平衡度告警超标占比
*/
@TableField(value = "unbalance_alarm_ratio")
private Float unbalanceAlarmRatio;
/**
* 谐波电压告警情况(0:否 1:是)
*/
@TableField(value = "v_alarm_info")
private Integer vAlarmInfo;
/**
* 谐波电压告警超标占比
*/
@TableField(value = "v_alarm_ratio")
private Float vAlarmRatio;
/**
* 闪变告警情况(0:否 1:是)
*/
@TableField(value = "flicker_alarm_info")
private Integer flickerAlarmInfo;
/**
* 闪变告警超标占比
*/
@TableField(value = "flicker_alarm_ratio")
private Float flickerAlarmRatio;
/**
* 电压暂降告警情况(0:否 1:是)
*/
@TableField(value = "sag_alarm_info")
private Integer sagAlarmInfo;
/**
* 电压暂降告警平均发生次数
*/
@TableField(value = "sag_alarm_avg_count")
private Integer sagAlarmAvgCount;
/**
* 短时中断告警情况(0:否 1:是)
*/
@TableField(value = "interrupt_alarm_info")
private Integer interruptAlarmInfo;
/**
* 短时中断告警平均发生次数
*/
@TableField(value = "interrupt_alarm_avg_count")
private Integer interruptAlarmAvgCount;
/**
* 稳态指标评级结果0 较差 1中等 2较好
*/
@TableField(value = "harmonic_type_grade")
private Integer harmonicTypeGrade;
/**
* 暂态指标评级结果0 较差 1中等 2较好
*/
@TableField(value = "event_type_grade")
private Integer eventTypeGrade;
}

View File

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data; import lombok.Data;
import java.time.LocalDate;
import java.util.Date; import java.util.Date;
/** /**
@@ -25,7 +26,7 @@ public class RStatAreaAlarmCountMPO {
* 生成数据的时间,每月统计一次 * 生成数据的时间,每月统计一次
*/ */
@MppMultiId(value = "data_date") @MppMultiId(value = "data_date")
private Date dataDate; private LocalDate dataDate;
/** /**
* 数据类型(0:主网 1:配网) * 数据类型(0:主网 1:配网)
@@ -128,9 +129,9 @@ public class RStatAreaAlarmCountMPO {
*/ */
@TableField(value = "event_type_grade") @TableField(value = "event_type_grade")
private Integer eventTypeGrade; private Integer eventTypeGrade;
@TableField(exist = false)
private Float wtCount; private Float wtCount;
@TableField(exist = false)
private Float ztCount; private Float ztCount;
} }

View File

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDate;
import java.util.Date; import java.util.Date;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
@@ -30,7 +32,7 @@ public class RStatHarmonicOrgDPO {
* 生成数据的时间,每日统计一次 * 生成数据的时间,每日统计一次
*/ */
@MppMultiId(value = "data_date") @MppMultiId(value = "data_date")
private Date dataDate; private LocalDate dataDate;
/** /**
* 稳态指标类型Id字典表ID * 稳态指标类型Id字典表ID

View File

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDate;
import java.util.Date; import java.util.Date;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
@@ -30,7 +32,7 @@ public class RStatHarmonicOrgMPO {
* 生成数据的时间,每月统计一次 * 生成数据的时间,每月统计一次
*/ */
@MppMultiId(value = "data_date") @MppMultiId(value = "data_date")
private Date dataDate; private LocalDate dataDate;
/** /**
* 稳态指标类型Id字典表ID * 稳态指标类型Id字典表ID

View File

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDate;
import java.util.Date; import java.util.Date;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
@@ -30,7 +32,7 @@ public class RStatHarmonicOrgQPO {
* 生成数据的时间,每季度统计一次 * 生成数据的时间,每季度统计一次
*/ */
@MppMultiId(value = "data_date") @MppMultiId(value = "data_date")
private Date dataDate; private LocalDate dataDate;
/** /**
* 稳态指标类型Id字典表ID * 稳态指标类型Id字典表ID

View File

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDate;
import java.util.Date; import java.util.Date;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId; import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
@@ -30,7 +32,7 @@ public class RStatHarmonicOrgYPO {
* 生成数据的时间,每年统计一次 * 生成数据的时间,每年统计一次
*/ */
@MppMultiId(value = "data_date") @MppMultiId(value = "data_date")
private Date dataDate; private LocalDate dataDate;
/** /**
* 稳态指标类型Id字典表ID * 稳态指标类型Id字典表ID

View File

@@ -6,6 +6,7 @@ import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDate;
import java.util.Date; import java.util.Date;
/** /**
@@ -26,7 +27,7 @@ public class RStatPwAlarmCountWPO {
* 生成数据的时间,每周统计一次 * 生成数据的时间,每周统计一次
*/ */
@MppMultiId(value = "data_date") @MppMultiId(value = "data_date")
private Date dataDate; private LocalDate dataDate;
/** /**
* 在线监测点数 * 在线监测点数

View File

@@ -6,6 +6,7 @@ import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDate;
import java.util.Date; import java.util.Date;
/** /**
@@ -26,7 +27,7 @@ public class RStatZwAlarmCountWPO {
* 生成数据的时间,每周统计一次 * 生成数据的时间,每周统计一次
*/ */
@MppMultiId(value = "data_date") @MppMultiId(value = "data_date")
private Date dataDate; private LocalDate dataDate;
/** /**
* 有效监测点数量 * 有效监测点数量

View File

@@ -2,9 +2,13 @@ package com.njcn.prepare.executor;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
import com.njcn.prepare.bo.CalculatedParam;
import com.njcn.prepare.harmonic.service.mysql.area.RStatHarmonicOrgService;
import com.njcn.prepare.harmonic.service.mysql.area.RStatHarmonicService;
import com.njcn.prepare.harmonic.service.mysql.area.RStatHarmonicVoltageService;
import com.njcn.prepare.harmonic.service.mysql.area.RStatOrgService; import com.njcn.prepare.harmonic.service.mysql.area.RStatOrgService;
import com.njcn.prepare.harmonic.service.mysql.line.PollutionService; import com.njcn.prepare.harmonic.service.mysql.line.PollutionService;
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.ROperatingIndexService; import com.njcn.prepare.harmonic.service.mysql.newalgorithm.*;
import com.yomahub.liteflow.annotation.LiteflowComponent; import com.yomahub.liteflow.annotation.LiteflowComponent;
import com.yomahub.liteflow.annotation.LiteflowMethod; import com.yomahub.liteflow.annotation.LiteflowMethod;
import com.yomahub.liteflow.core.NodeComponent; import com.yomahub.liteflow.core.NodeComponent;
@@ -28,6 +32,16 @@ public class OrgPointExecutor extends BaseExecutor{
private final PollutionService pollutionService; private final PollutionService pollutionService;
private final RStatHarmonicService rStatHarmonicService;
private final RStatHarmonicVoltageService rStatHarmonicVoltageService;
private final RStatHarmonicOrgService rstatHarmonicOrgService;
private final RStatEventService rStatEventDService;
private final RStatEventVoltageService rStatEventVoltageService;
private final RStatEventOrgService rStatEventOrgService;
private final RStatLoadTypeService rStatLoadTypeService;
private final RAlarmCountService rAlarmCountService;
/** /**
* *
@@ -132,4 +146,263 @@ public class OrgPointExecutor extends BaseExecutor{
} }
} }
} }
/**
*
* 3.4.4. 单位监测点稳态指标统计-监测点类别(对象类型)
*/
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rStatHarmonic", nodeType = NodeTypeEnum.COMMON)
public boolean processRStatHarmonicAccess(NodeComponent bindCmp) {
return isAccess(bindCmp);
}
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rStatHarmonic", nodeType = NodeTypeEnum.COMMON)
public void processRStatHarmonicProcess(NodeComponent bindCmp) {
String tag = bindCmp.getTag();
CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam = bindCmp.getRequestData();
if (tag.equalsIgnoreCase("r_stat_harmonic_d")) {
//日表
rStatHarmonicService.handleDay(calculatedParam);
} else if (tag.equalsIgnoreCase("r_stat_harmonic_m")) {
//数据补招不执行非日表算法
if (!calculatedParam.isRepair()) {
//月表
rStatHarmonicService.handleMonth(calculatedParam);
}
}else if (tag.equalsIgnoreCase("r_stat_harmonic_q")) {
//数据补招不执行非日表算法
if (!calculatedParam.isRepair()) {
//季表
rStatHarmonicService.handleQtr(calculatedParam);
}
}else if (tag.equalsIgnoreCase("r_stat_harmonic_y")) {
//数据补招不执行非日表算法
if (!calculatedParam.isRepair()) {
//年表
rStatHarmonicService.handleYear(calculatedParam);
}
}
}
/**
*
* 3.4.5. 单位监测点稳态指标统计-电压等级
*/
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rStatHarmonicVoltage", nodeType = NodeTypeEnum.COMMON)
public boolean processRStatHarmonicVoltageAccess(NodeComponent bindCmp) {
return isAccess(bindCmp);
}
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rStatHarmonicVoltage", nodeType = NodeTypeEnum.COMMON)
public void processRStatHarmonicVoltageProcess(NodeComponent bindCmp) {
String tag = bindCmp.getTag();
CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam = bindCmp.getRequestData();
if (tag.equalsIgnoreCase("r_stat_harmonic_voltage_d")) {
//日表
rStatHarmonicVoltageService.handleDay(calculatedParam);
} else if (tag.equalsIgnoreCase("r_stat_harmonic_voltage_m")) {
//数据补招不执行非日表算法
if (!calculatedParam.isRepair()) {
//月表
rStatHarmonicVoltageService.handleMonth(calculatedParam);
}
}
}
/**
*
* 3.4.4. 单位监测点稳态指标统计-监测点类别(对象类型)
*/
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rStatHarmonicOrg", nodeType = NodeTypeEnum.COMMON)
public boolean processRStatHarmonicOrgAccess(NodeComponent bindCmp) {
return isAccess(bindCmp);
}
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rStatHarmonicOrg", nodeType = NodeTypeEnum.COMMON)
public void processRStatHarmonicOrgProcess(NodeComponent bindCmp) {
String tag = bindCmp.getTag();
CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam = bindCmp.getRequestData();
if (tag.equalsIgnoreCase("r_stat_harmonic_org_d")) {
//日表
rstatHarmonicOrgService.handleDay(calculatedParam);
} else if (tag.equalsIgnoreCase("r_stat_harmonic_org_m")) {
//数据补招不执行非日表算法
if (!calculatedParam.isRepair()) {
//月表
rstatHarmonicOrgService.handleMonth(calculatedParam);
}
}else if (tag.equalsIgnoreCase("r_stat_harmonic_org_q")) {
//数据补招不执行非日表算法
if (!calculatedParam.isRepair()) {
//季表
rstatHarmonicOrgService.handleQtr(calculatedParam);
}
}else if (tag.equalsIgnoreCase("r_stat_harmonic_org_y")) {
//数据补招不执行非日表算法
if (!calculatedParam.isRepair()) {
//年表
rstatHarmonicOrgService.handleYear(calculatedParam);
}
}
}
/**
* 3.4.6. 单位监测点暂态指标统计-监测点类别(对象类型)
*/
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rStatEvent", nodeType = NodeTypeEnum.COMMON)
public boolean processRStatEventAccess(NodeComponent bindCmp) {
return isAccess(bindCmp);
}
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rStatEvent", nodeType = NodeTypeEnum.COMMON)
public void processRStatEventProcess(NodeComponent bindCmp) {
String tag = bindCmp.getTag();
CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam = bindCmp.getRequestData();
if (tag.equalsIgnoreCase("r_stat_event_d")) {
//日表
rStatEventDService.handleDay(calculatedParam);
} else if (tag.equalsIgnoreCase("r_stat_event_m")) {
//数据补招不执行非日表算法
if (!calculatedParam.isRepair()) {
//月表
rStatEventDService.handleMonth(calculatedParam);
}
}else if (tag.equalsIgnoreCase("r_stat_event_q")) {
//数据补招不执行非日表算法
if (!calculatedParam.isRepair()) {
//季表
rStatEventDService.handleQtr(calculatedParam);
}
}else if (tag.equalsIgnoreCase("r_stat_event_y")) {
//数据补招不执行非日表算法
if (!calculatedParam.isRepair()) {
//年表
rStatEventDService.handleYear(calculatedParam);
}
}
}
/**
* 3.4.7. 单位监测点暂态指标统计-电压等级
*/
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rStatEventVoltage", nodeType = NodeTypeEnum.COMMON)
public boolean processRStatEventVoltageAccess(NodeComponent bindCmp) {
return isAccess(bindCmp);
}
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rStatEventVoltage", nodeType = NodeTypeEnum.COMMON)
public void processRStatEventVoltageProcess(NodeComponent bindCmp) {
String tag = bindCmp.getTag();
CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam = bindCmp.getRequestData();
if (tag.equalsIgnoreCase("r_stat_event_voltage_d")) {
//日表
rStatEventVoltageService.handleDay(calculatedParam);
} else if (tag.equalsIgnoreCase("r_stat_event_voltage_m")) {
//数据补招不执行非日表算法
if (!calculatedParam.isRepair()) {
//月表
rStatEventVoltageService.handleMonth(calculatedParam);
}
}
}
/**
* 3.4.9. 单位暂态指标数据统计
*/
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rStatEventOrg", nodeType = NodeTypeEnum.COMMON)
public boolean processRStatEventOrgAccess(NodeComponent bindCmp) {
return isAccess(bindCmp);
}
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rStatEventOrg", nodeType = NodeTypeEnum.COMMON)
public void processRStatEventOrgProcess(NodeComponent bindCmp) {
String tag = bindCmp.getTag();
CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam = bindCmp.getRequestData();
if (tag.equalsIgnoreCase("r_stat_event_org_d")) {
//日表
rStatEventOrgService.handleDay(calculatedParam);
} else if (tag.equalsIgnoreCase("r_stat_event_org_m")) {
//数据补招不执行非日表算法
if (!calculatedParam.isRepair()) {
//月表
rStatEventOrgService.handleMonth(calculatedParam);
}
}else if (tag.equalsIgnoreCase("r_stat_event_org_q")) {
//数据补招不执行非日表算法
if (!calculatedParam.isRepair()) {
//季表
rStatEventOrgService.handleQtr(calculatedParam);
}
}else if (tag.equalsIgnoreCase("r_stat_event_org_y")) {
//数据补招不执行非日表算法
if (!calculatedParam.isRepair()) {
//年表
rStatEventOrgService.handleYear(calculatedParam);
}
}
}
/**
* 3.4.12. 单位干扰源电流类指标超标统计
*/
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rStatEventLoadType", nodeType = NodeTypeEnum.COMMON)
public boolean processRStatEventLoadTypeAccess(NodeComponent bindCmp) {
return isAccess(bindCmp);
}
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rStatEventLoadType", nodeType = NodeTypeEnum.COMMON)
public void processRStatEventLoadTypeProcess(NodeComponent bindCmp) {
String tag = bindCmp.getTag();
CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam = bindCmp.getRequestData();
if (tag.equalsIgnoreCase("r_stat_load_type_d")) {
//日表
rStatLoadTypeService.handleDay(calculatedParam);
} else if (tag.equalsIgnoreCase("r_stat_load_type_m")) {
//数据补招不执行非日表算法
if (!calculatedParam.isRepair()) {
//月表
rStatLoadTypeService.handleMonth(calculatedParam);
}
}else if (tag.equalsIgnoreCase("r_stat_load_type_q")) {
//数据补招不执行非日表算法
if (!calculatedParam.isRepair()) {
//季表
rStatLoadTypeService.handleQtr(calculatedParam);
}
}else if (tag.equalsIgnoreCase("r_stat_load_type_y")) {
//数据补招不执行非日表算法
if (!calculatedParam.isRepair()) {
//年表
rStatLoadTypeService.handleYear(calculatedParam);
}
}
}
/**
*3.4.14. 单位指标告警统计
*/
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rStatAlarmCount", nodeType = NodeTypeEnum.COMMON)
public boolean processRStatAlarmCountAccess(NodeComponent bindCmp) {
return isAccess(bindCmp);
}
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rStatAlarmCount", nodeType = NodeTypeEnum.COMMON)
public void processRStatAlarmCountProcess(NodeComponent bindCmp) {
String tag = bindCmp.getTag();
CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam = bindCmp.getRequestData();
if (tag.equalsIgnoreCase("r_stat_alarm_count_w")) {
//周表
rAlarmCountService.handleDay(calculatedParam);
} else if (tag.equalsIgnoreCase("r_stat_area_alarm_count_m")) {
//数据补招不执行非日表算法
if (!calculatedParam.isRepair()) {
//月表
rAlarmCountService.handleMonth(calculatedParam);
}
}
}
} }

View File

@@ -23,7 +23,7 @@
</sql> </sql>
<select id="listAll" resultType="com.njcn.prepare.harmonic.pojo.po.RStatOrgDVO"> <select id="listAll" resultType="com.njcn.prepare.harmonic.pojo.po.RStatOrgDVO">
select org_no "orgNo",data_type"dataType",effective_measurement"effectiveMeasurement" select org_no "orgNo",data_type"dataType",IFNULL(effective_measurement,0)"effectiveMeasurement"
from r_stat_org_d from r_stat_org_d
where date_format(data_date, '%y%m%d') = date_format(#{date}, '%y%m%d') where date_format(data_date, '%y%m%d') = date_format(#{date}, '%y%m%d')
and org_no = #{orgId} and org_no = #{orgId}

View File

@@ -1,8 +1,8 @@
package com.njcn.prepare.harmonic.mapper.mysql.newalgorithm; package com.njcn.prepare.harmonic.mapper.mysql.newalgorithm;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.prepare.harmonic.pojo.po.RStatAreaAlarmCountM;
import com.njcn.prepare.harmonic.pojo.po.RStatAreaAlarmCountMPO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
/** /**
@@ -14,5 +14,5 @@ import org.apache.ibatis.annotations.Mapper;
* @version V1.0.0 * @version V1.0.0
*/ */
@Mapper @Mapper
public interface RStatAreaAlarmCountMPOMapper extends MppBaseMapper<RStatAreaAlarmCountM> { public interface RStatAreaAlarmCountMPOMapper extends MppBaseMapper<RStatAreaAlarmCountMPO> {
} }

View File

@@ -1,13 +1,20 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.area; package com.njcn.prepare.harmonic.service.mysql.Impl.area;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.harmonic.pojo.po.RStatOrgMPO; import com.njcn.harmonic.pojo.po.RStatOrgMPO;
import com.njcn.prepare.bo.CalculatedParam;
import com.njcn.prepare.harmonic.mapper.mysql.area.*; import com.njcn.prepare.harmonic.mapper.mysql.area.*;
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicDPO; import com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicDPO;
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicMPO; import com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicMPO;
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatOrgQPO;
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatOrgYPO;
import com.njcn.prepare.harmonic.pojo.param.OrgParam; import com.njcn.prepare.harmonic.pojo.param.OrgParam;
import com.njcn.prepare.harmonic.pojo.po.*; import com.njcn.prepare.harmonic.pojo.po.*;
import com.njcn.prepare.harmonic.service.mysql.area.RStatHarmonicOrgService; import com.njcn.prepare.harmonic.service.mysql.area.RStatHarmonicOrgService;
@@ -30,6 +37,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.time.LocalDate;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -50,6 +58,11 @@ public class RStatHarmonicOrgServiceImpl implements RStatHarmonicOrgService {
private final DeptFeignClient deptFeignClient; private final DeptFeignClient deptFeignClient;
private final RStatOrgDMapper rStatOrgDMapper; private final RStatOrgDMapper rStatOrgDMapper;
private final RStatOrgQMapper rStatOrgQMapper;
private final RStatOrgYMapper rStatOrgYMapper;
private final RStatHarmonicDPOMapper rStatHarmonicDPOMapper; private final RStatHarmonicDPOMapper rStatHarmonicDPOMapper;
private final RStatHarmonicOrgDPOService rStatHarmonicDPOService; private final RStatHarmonicOrgDPOService rStatHarmonicDPOService;
@@ -64,6 +77,361 @@ public class RStatHarmonicOrgServiceImpl implements RStatHarmonicOrgService {
DecimalFormat df = new DecimalFormat("0.00"); DecimalFormat df = new DecimalFormat("0.00");
@Override
public void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<RStatHarmonicOrgDPO> rStatHarmonicOrgDPOList = new ArrayList<>();
LocalDate localDate = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
QueryWrapper<RStatHarmonicDPO> queryWrapper = new QueryWrapper<>();
/*获取稳态统计指标*/
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
/*获取数据类型*/
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
;
/*获取监测点类型类型*/
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
calculatedParam.getIdList().stream().forEach(temp->{
int sumEffectiveMeasurement =0;
List<RStatOrgDVO> rStatOrgDVOS = rStatOrgDMapper.listAll( LocalDateTimeUtil.format(localDate,DatePattern.NORM_DATE_PATTERN), temp.getUnitId());
if(CollectionUtils.isEmpty(rStatOrgDVOS)){
sumEffectiveMeasurement=0;
}else {
sumEffectiveMeasurement = rStatOrgDVOS.stream().mapToInt(RStatOrgDVO::getEffectiveMeasurement).sum();
}
int finalSumEffectiveMeasurement = sumEffectiveMeasurement;
dataTypeMap.forEach((k, v)->{
steadyStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATOR.getCode())) {
return;
}
queryWrapper.clear();
queryWrapper.select("over_limit_measurement").
eq("org_no",temp.getUnitId()).
eq("data_type",v.getId()).
eq("harmonic_type",dictData.getId()).
eq("data_date",localDate);
List<RStatHarmonicDPO> rStatHarmonicDPOList = rStatHarmonicDPOMapper.selectList(queryWrapper);
int sumOverLimitMeasurement =0;
if(CollectionUtils.isEmpty(rStatHarmonicDPOList)){
sumOverLimitMeasurement=0;
}else {
sumOverLimitMeasurement = rStatHarmonicDPOList.stream().mapToInt(RStatHarmonicDPO::getOverLimitMeasurement).sum();
}
RStatHarmonicOrgDPO rStatHarmonicOrgDPO = new RStatHarmonicOrgDPO();
rStatHarmonicOrgDPO.setOrgNo(temp.getUnitId());
rStatHarmonicOrgDPO.setDataDate(localDate);
rStatHarmonicOrgDPO.setHarmonicType(dictData.getId());
rStatHarmonicOrgDPO.setDataType(v.getId());
rStatHarmonicOrgDPO.setOverLimitMeasurementAverage(sumOverLimitMeasurement);
if(finalSumEffectiveMeasurement ==0){
rStatHarmonicOrgDPO.setOverLimitMeasurementRatioAverage(0.00);
}else {
rStatHarmonicOrgDPO.setOverLimitMeasurementRatioAverage(Double.parseDouble(df.format((float)sumOverLimitMeasurement / finalSumEffectiveMeasurement)));
}
rStatHarmonicOrgDPOList.add(rStatHarmonicOrgDPO);
});
});
});
if(!CollectionUtils.isEmpty(rStatHarmonicOrgDPOList)){
rStatHarmonicDPOService.saveOrUpdateBatchByMultiId(rStatHarmonicOrgDPOList,500);
}
}
@Override
public void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<RStatHarmonicOrgMPO> rStatHarmonicOrgMPOList = new ArrayList<>();
DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
DateTime end = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
QueryWrapper<RStatHarmonicMPO> queryWrapper = new QueryWrapper<>();
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
/*获取稳态统计指标*/
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
/*获取数据类型*/
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
;
/*获取监测点类型类型*/
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
calculatedParam.getIdList().stream().forEach(temp->{
int sumEffectiveMeasurement =0;
rStatOrgMPOQueryWrapper.clear();
rStatOrgMPOQueryWrapper.select("effective_measurement_accrued").
eq("org_no",temp.getUnitId()).
between("data_date",begin,end);
List<RStatOrgMPO> rStatOrgMPOS = rStatOrgMMapper.selectList(rStatOrgMPOQueryWrapper);
if(CollectionUtils.isEmpty(rStatOrgMPOS)){
sumEffectiveMeasurement=0;
}else {
sumEffectiveMeasurement = rStatOrgMPOS.stream().mapToInt(RStatOrgMPO::getEffectiveMeasurementAccrued).sum();
}
int finalSumEffectiveMeasurement = sumEffectiveMeasurement;
dataTypeMap.forEach((k, v)->{
steadyStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATOR.getCode())) {
return;
}
queryWrapper.clear();
queryWrapper.eq("org_no",temp.getUnitId()).
eq("harmonic_type",dictData.getId()).
eq("data_type",v.getId()).
between("data_date",begin,end);
List<RStatHarmonicMPO> rStatHarmonicMPOS = rStatHarmonicMPOMapper.selectList(queryWrapper);
Double overLimitMeasurementAverage =0.00;
int overDay =0;
int overLimitMeasurementAccrued=0;
Double overLimitMeasurementRatioAverage=0.00;
Double overLimitMeasurementRatioAccrued=0.00;
if(!CollectionUtils.isEmpty(rStatHarmonicMPOS)){
overDay = rStatHarmonicMPOS.stream().mapToInt(RStatHarmonicMPO::getOverDay).sum();
overLimitMeasurementAccrued = rStatHarmonicMPOS.stream().mapToInt(RStatHarmonicMPO::getOverLimitMeasurementAccrued).sum();
double asDouble = rStatHarmonicMPOS.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementAverage).average().getAsDouble();
overLimitMeasurementAverage = Double.parseDouble(df.format(asDouble));
double asDouble1 = rStatHarmonicMPOS.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementRatioAverage).average().getAsDouble();
overLimitMeasurementRatioAverage = Double.parseDouble(df.format(asDouble1));
if(finalSumEffectiveMeasurement ==0){
overLimitMeasurementRatioAccrued=0.00;
}else {
overLimitMeasurementRatioAccrued=Double.parseDouble(df.format((float)overLimitMeasurementAccrued / finalSumEffectiveMeasurement));
}
}
RStatHarmonicOrgMPO rStatHarmonicOrgMPO = new RStatHarmonicOrgMPO();
rStatHarmonicOrgMPO.setOrgNo(temp.getUnitId());
rStatHarmonicOrgMPO.setDataDate(localDate);
rStatHarmonicOrgMPO.setHarmonicType(dictData.getId());
rStatHarmonicOrgMPO.setDataType(v.getId());
rStatHarmonicOrgMPO.setOverDay(overDay);
rStatHarmonicOrgMPO.setOverLimitMeasurementAccrued(overLimitMeasurementAccrued);
rStatHarmonicOrgMPO.setOverLimitMeasurementAverage(overLimitMeasurementAverage);
rStatHarmonicOrgMPO.setOverLimitMeasurementRatioAccrued(overLimitMeasurementRatioAccrued);
rStatHarmonicOrgMPO.setOverLimitMeasurementRatioAverage(overLimitMeasurementRatioAverage);
rStatHarmonicOrgMPOList.add(rStatHarmonicOrgMPO);
});
});
});
if(!CollectionUtils.isEmpty(rStatHarmonicOrgMPOList)){
rStatHarmonicMPOService.saveOrUpdateBatchByMultiId(rStatHarmonicOrgMPOList,500);
}
}
@Override
public void handleQtr(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<RStatHarmonicOrgQPO> rStatHarmonicOrgQPOList = new ArrayList<>();
DateTime begin = DateUtil.beginOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
DateTime end = DateUtil.endOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
QueryWrapper<RStatHarmonicMPO> queryWrapper = new QueryWrapper<>();
QueryWrapper<RStatOrgQPO> rStatOrgQPOQueryWrapper = new QueryWrapper<>();
/*获取稳态统计指标*/
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
/*获取数据类型*/
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
;
/*获取监测点类型类型*/
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
calculatedParam.getIdList().stream().forEach(temp->{
int sumEffectiveMeasurement =0;
rStatOrgQPOQueryWrapper.clear();
rStatOrgQPOQueryWrapper.select("effective_measurement_accrued").
eq("org_no",temp.getUnitId()).
between("data_date",begin,end);
List<RStatOrgQPO> rStatOrgQPOS = rStatOrgQMapper.selectList(rStatOrgQPOQueryWrapper);
if(CollectionUtils.isEmpty(rStatOrgQPOS)){
sumEffectiveMeasurement=0;
}else {
sumEffectiveMeasurement = rStatOrgQPOS.stream().mapToInt(RStatOrgQPO::getEffectiveMeasurementAccrued).sum();
}
int finalSumEffectiveMeasurement = sumEffectiveMeasurement;
dataTypeMap.forEach((k, v)->{
steadyStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATOR.getCode())) {
return;
}
queryWrapper.clear();
queryWrapper.eq("org_no",temp.getUnitId()).
eq("harmonic_type",dictData.getId()).
eq("data_type",v.getId()).
between("data_date",begin,end);
List<RStatHarmonicMPO> rStatHarmonicMPOS = rStatHarmonicMPOMapper.selectList(queryWrapper);
Double overLimitMeasurementAverage =0.00;
int overDay =0;
int overLimitMeasurementAccrued=0;
Double averageOverDay =0.00;
Double overLimitMeasurementRatioAverage=0.00;
Double overLimitMeasurementRatioAccrued=0.00;
if(!CollectionUtils.isEmpty(rStatHarmonicMPOS)){
overDay = rStatHarmonicMPOS.stream().mapToInt(RStatHarmonicMPO::getOverDay).sum();
overLimitMeasurementAccrued = rStatHarmonicMPOS.stream().mapToInt(RStatHarmonicMPO::getOverLimitMeasurementAccrued).sum();
double asDouble = rStatHarmonicMPOS.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementAverage).average().getAsDouble();
overLimitMeasurementAverage = Double.parseDouble(df.format(asDouble));
double asDouble1 = rStatHarmonicMPOS.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementRatioAverage).average().getAsDouble();
overLimitMeasurementRatioAverage = Double.parseDouble(df.format(asDouble1));
if(finalSumEffectiveMeasurement ==0){
overLimitMeasurementRatioAccrued=0.00;
}else {
overLimitMeasurementRatioAccrued=Double.parseDouble(df.format((float)overLimitMeasurementAccrued / finalSumEffectiveMeasurement));
}
if(!(overLimitMeasurementAccrued==0)){
averageOverDay = Double.parseDouble(df.format((float)overDay / overLimitMeasurementAccrued));
}
}
RStatHarmonicOrgQPO rStatHarmonicOrgQPO = new RStatHarmonicOrgQPO();
rStatHarmonicOrgQPO.setOrgNo(temp.getUnitId());
rStatHarmonicOrgQPO.setDataDate(localDate);
rStatHarmonicOrgQPO.setHarmonicType(dictData.getId());
rStatHarmonicOrgQPO.setDataType(v.getId());
rStatHarmonicOrgQPO.setAverageOverDay(averageOverDay);
rStatHarmonicOrgQPO.setOverLimitMeasurementAccrued(overLimitMeasurementAccrued);
rStatHarmonicOrgQPO.setOverLimitMeasurementAverage(overLimitMeasurementAverage);
rStatHarmonicOrgQPO.setOverLimitMeasurementRatioAccrued(overLimitMeasurementRatioAccrued);
rStatHarmonicOrgQPO.setOverLimitMeasurementRatioAverage(overLimitMeasurementRatioAverage);
rStatHarmonicOrgQPOList.add(rStatHarmonicOrgQPO);
});
});
});
if(!CollectionUtils.isEmpty(rStatHarmonicOrgQPOList)){
rStatHarmonicQPOService.saveOrUpdateBatchByMultiId(rStatHarmonicOrgQPOList,500);
}
}
@Override
public void handleYear(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<RStatHarmonicOrgYPO> rStatHarmonicOrgYPOList = new ArrayList<>();
DateTime begin = DateUtil.beginOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
DateTime end = DateUtil.endOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
QueryWrapper<RStatHarmonicMPO> queryWrapper = new QueryWrapper<>();
QueryWrapper<RStatOrgYPO> rStatOrgYPOQueryWrapper = new QueryWrapper<>();
/*获取稳态统计指标*/
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
/*获取数据类型*/
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
;
/*获取监测点类型类型*/
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
calculatedParam.getIdList().stream().forEach(temp->{
int sumEffectiveMeasurement =0;
rStatOrgYPOQueryWrapper.clear();
rStatOrgYPOQueryWrapper.select("effective_measurement_accrued").
eq("org_no",temp.getUnitId()).
between("data_date",begin,end);
List<RStatOrgYPO> rStatOrgYPOS = rStatOrgYMapper.selectList(rStatOrgYPOQueryWrapper);
if(CollectionUtils.isEmpty(rStatOrgYPOS)){
sumEffectiveMeasurement=0;
}else {
sumEffectiveMeasurement = rStatOrgYPOS.stream().mapToInt(RStatOrgYPO::getEffectiveMeasurementAccrued).sum();
}
int finalSumEffectiveMeasurement = sumEffectiveMeasurement;
dataTypeMap.forEach((k, v)->{
steadyStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATOR.getCode())) {
return;
}
queryWrapper.clear();
queryWrapper.eq("org_no",temp.getUnitId()).
eq("harmonic_type",dictData.getId()).
eq("data_type",v.getId()).
between("data_date",begin,end);
List<RStatHarmonicMPO> rStatHarmonicMPOS = rStatHarmonicMPOMapper.selectList(queryWrapper);
Double overLimitMeasurementAverage =0.00;
int overDay =0;
int overLimitMeasurementAccrued=0;
Double averageOverDay =0.00;
Double overLimitMeasurementRatioAverage=0.00;
Double overLimitMeasurementRatioAccrued=0.00;
if(!CollectionUtils.isEmpty(rStatHarmonicMPOS)){
overDay = rStatHarmonicMPOS.stream().mapToInt(RStatHarmonicMPO::getOverDay).sum();
overLimitMeasurementAccrued = rStatHarmonicMPOS.stream().mapToInt(RStatHarmonicMPO::getOverLimitMeasurementAccrued).sum();
double asDouble = rStatHarmonicMPOS.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementAverage).average().getAsDouble();
overLimitMeasurementAverage = Double.parseDouble(df.format(asDouble));
double asDouble1 = rStatHarmonicMPOS.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementRatioAverage).average().getAsDouble();
overLimitMeasurementRatioAverage = Double.parseDouble(df.format(asDouble1));
if(finalSumEffectiveMeasurement ==0){
overLimitMeasurementRatioAccrued=0.00;
}else {
overLimitMeasurementRatioAccrued=Double.parseDouble(df.format((float)overLimitMeasurementAccrued / finalSumEffectiveMeasurement));
}
if(!(overLimitMeasurementAccrued==0)){
averageOverDay = Double.parseDouble(df.format((float)overDay / overLimitMeasurementAccrued));
}
}
RStatHarmonicOrgYPO rStatHarmonicOrgYPO = new RStatHarmonicOrgYPO();
rStatHarmonicOrgYPO.setOrgNo(temp.getUnitId());
rStatHarmonicOrgYPO.setDataDate(localDate);
rStatHarmonicOrgYPO.setHarmonicType(dictData.getId());
rStatHarmonicOrgYPO.setDataType(v.getId());
rStatHarmonicOrgYPO.setAverageOverDay(averageOverDay);
rStatHarmonicOrgYPO.setOverLimitMeasurementAccrued(overLimitMeasurementAccrued);
rStatHarmonicOrgYPO.setOverLimitMeasurementAverage(overLimitMeasurementAverage);
rStatHarmonicOrgYPO.setOverLimitMeasurementRatioAccrued(overLimitMeasurementRatioAccrued);
rStatHarmonicOrgYPO.setOverLimitMeasurementRatioAverage(overLimitMeasurementRatioAverage);
rStatHarmonicOrgYPOList.add(rStatHarmonicOrgYPO);
});
});
});
if(!CollectionUtils.isEmpty(rStatHarmonicOrgYPOList)){
rStatHarmonicYPOService.saveOrUpdateBatchByMultiId(rStatHarmonicOrgYPOList,500);
}
}
/**------------------------------------------------------------------------------------------------------------**/
@Override @Override
public void handler(OrgParam orgParam) { public void handler(OrgParam orgParam) {
switch (orgParam.getType()) { switch (orgParam.getType()) {
@@ -83,6 +451,8 @@ public class RStatHarmonicOrgServiceImpl implements RStatHarmonicOrgService {
break; break;
} }
} }
@Transactional @Transactional
@Async("asyncExecutor") @Async("asyncExecutor")
@SneakyThrows @SneakyThrows
@@ -90,6 +460,7 @@ public class RStatHarmonicOrgServiceImpl implements RStatHarmonicOrgService {
List<RStatHarmonicOrgYPO> rStatHarmonicOrgYPOList = new ArrayList<>(); List<RStatHarmonicOrgYPO> rStatHarmonicOrgYPOList = new ArrayList<>();
List<String> data = deptFeignClient.getDepSonIdtByDeptId(orgParam.getOrgId()).getData(); List<String> data = deptFeignClient.getDepSonIdtByDeptId(orgParam.getOrgId()).getData();
Date date = DateUtil.parse(orgParam.getDataDate()); Date date = DateUtil.parse(orgParam.getDataDate());
LocalDate localDate = LocalDateTimeUtil.parseDate(orgParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
QueryWrapper<RStatHarmonicMPO> queryWrapper = new QueryWrapper<>(); QueryWrapper<RStatHarmonicMPO> queryWrapper = new QueryWrapper<>();
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>(); QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
@@ -157,7 +528,7 @@ public class RStatHarmonicOrgServiceImpl implements RStatHarmonicOrgService {
} }
RStatHarmonicOrgYPO rStatHarmonicOrgYPO = new RStatHarmonicOrgYPO(); RStatHarmonicOrgYPO rStatHarmonicOrgYPO = new RStatHarmonicOrgYPO();
rStatHarmonicOrgYPO.setOrgNo(temp); rStatHarmonicOrgYPO.setOrgNo(temp);
rStatHarmonicOrgYPO.setDataDate(date); rStatHarmonicOrgYPO.setDataDate(localDate);
rStatHarmonicOrgYPO.setHarmonicType(dictData.getId()); rStatHarmonicOrgYPO.setHarmonicType(dictData.getId());
rStatHarmonicOrgYPO.setDataType(v.getId()); rStatHarmonicOrgYPO.setDataType(v.getId());
rStatHarmonicOrgYPO.setAverageOverDay(averageOverDay); rStatHarmonicOrgYPO.setAverageOverDay(averageOverDay);
@@ -186,6 +557,7 @@ public class RStatHarmonicOrgServiceImpl implements RStatHarmonicOrgService {
List<RStatHarmonicOrgQPO> rStatHarmonicOrgQPOList = new ArrayList<>(); List<RStatHarmonicOrgQPO> rStatHarmonicOrgQPOList = new ArrayList<>();
List<String> data = deptFeignClient.getDepSonIdtByDeptId(orgParam.getOrgId()).getData(); List<String> data = deptFeignClient.getDepSonIdtByDeptId(orgParam.getOrgId()).getData();
Date date = DateUtil.parse(orgParam.getDataDate()); Date date = DateUtil.parse(orgParam.getDataDate());
LocalDate localDate = LocalDateTimeUtil.parseDate(orgParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
QueryWrapper<RStatHarmonicMPO> queryWrapper = new QueryWrapper<>(); QueryWrapper<RStatHarmonicMPO> queryWrapper = new QueryWrapper<>();
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>(); QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
@@ -252,7 +624,7 @@ public class RStatHarmonicOrgServiceImpl implements RStatHarmonicOrgService {
} }
RStatHarmonicOrgQPO rStatHarmonicOrgQPO = new RStatHarmonicOrgQPO(); RStatHarmonicOrgQPO rStatHarmonicOrgQPO = new RStatHarmonicOrgQPO();
rStatHarmonicOrgQPO.setOrgNo(temp); rStatHarmonicOrgQPO.setOrgNo(temp);
rStatHarmonicOrgQPO.setDataDate(date); rStatHarmonicOrgQPO.setDataDate(localDate);
rStatHarmonicOrgQPO.setHarmonicType(dictData.getId()); rStatHarmonicOrgQPO.setHarmonicType(dictData.getId());
rStatHarmonicOrgQPO.setDataType(v.getId()); rStatHarmonicOrgQPO.setDataType(v.getId());
rStatHarmonicOrgQPO.setAverageOverDay(averageOverDay); rStatHarmonicOrgQPO.setAverageOverDay(averageOverDay);
@@ -280,6 +652,7 @@ public class RStatHarmonicOrgServiceImpl implements RStatHarmonicOrgService {
List<RStatHarmonicOrgMPO> rStatHarmonicOrgMPOList = new ArrayList<>(); List<RStatHarmonicOrgMPO> rStatHarmonicOrgMPOList = new ArrayList<>();
List<String> data = deptFeignClient.getDepSonIdtByDeptId(orgParam.getOrgId()).getData(); List<String> data = deptFeignClient.getDepSonIdtByDeptId(orgParam.getOrgId()).getData();
Date date = DateUtil.parse(orgParam.getDataDate()); Date date = DateUtil.parse(orgParam.getDataDate());
LocalDate localDate = LocalDateTimeUtil.parseDate(orgParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
QueryWrapper<RStatHarmonicMPO> queryWrapper = new QueryWrapper<>(); QueryWrapper<RStatHarmonicMPO> queryWrapper = new QueryWrapper<>();
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>(); QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
@@ -341,7 +714,7 @@ public class RStatHarmonicOrgServiceImpl implements RStatHarmonicOrgService {
} }
RStatHarmonicOrgMPO rStatHarmonicOrgMPO = new RStatHarmonicOrgMPO(); RStatHarmonicOrgMPO rStatHarmonicOrgMPO = new RStatHarmonicOrgMPO();
rStatHarmonicOrgMPO.setOrgNo(temp); rStatHarmonicOrgMPO.setOrgNo(temp);
rStatHarmonicOrgMPO.setDataDate(date); rStatHarmonicOrgMPO.setDataDate(localDate);
rStatHarmonicOrgMPO.setHarmonicType(dictData.getId()); rStatHarmonicOrgMPO.setHarmonicType(dictData.getId());
rStatHarmonicOrgMPO.setDataType(v.getId()); rStatHarmonicOrgMPO.setDataType(v.getId());
rStatHarmonicOrgMPO.setOverDay(overDay); rStatHarmonicOrgMPO.setOverDay(overDay);
@@ -370,6 +743,7 @@ public class RStatHarmonicOrgServiceImpl implements RStatHarmonicOrgService {
List<RStatHarmonicOrgDPO> rStatHarmonicOrgDPOList = new ArrayList<>(); List<RStatHarmonicOrgDPO> rStatHarmonicOrgDPOList = new ArrayList<>();
List<String> data = deptFeignClient.getDepSonIdtByDeptId(orgParam.getOrgId()).getData(); List<String> data = deptFeignClient.getDepSonIdtByDeptId(orgParam.getOrgId()).getData();
Date date = DateUtil.parse(orgParam.getDataDate()); Date date = DateUtil.parse(orgParam.getDataDate());
LocalDate localDate = LocalDateTimeUtil.parseDate(orgParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
QueryWrapper<RStatHarmonicDPO> queryWrapper = new QueryWrapper<>(); QueryWrapper<RStatHarmonicDPO> queryWrapper = new QueryWrapper<>();
@@ -413,7 +787,7 @@ public class RStatHarmonicOrgServiceImpl implements RStatHarmonicOrgService {
} }
RStatHarmonicOrgDPO rStatHarmonicOrgDPO = new RStatHarmonicOrgDPO(); RStatHarmonicOrgDPO rStatHarmonicOrgDPO = new RStatHarmonicOrgDPO();
rStatHarmonicOrgDPO.setOrgNo(temp); rStatHarmonicOrgDPO.setOrgNo(temp);
rStatHarmonicOrgDPO.setDataDate(date); rStatHarmonicOrgDPO.setDataDate(localDate);
rStatHarmonicOrgDPO.setHarmonicType(dictData.getId()); rStatHarmonicOrgDPO.setHarmonicType(dictData.getId());
rStatHarmonicOrgDPO.setDataType(v.getId()); rStatHarmonicOrgDPO.setDataType(v.getId());
rStatHarmonicOrgDPO.setOverLimitMeasurementAverage(sumOverLimitMeasurement); rStatHarmonicOrgDPO.setOverLimitMeasurementAverage(sumOverLimitMeasurement);

View File

@@ -1,13 +1,17 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.area; package com.njcn.prepare.harmonic.service.mysql.Impl.area;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.pojo.response.HttpResult;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO; import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
import com.njcn.device.pms.pojo.po.RStatOrgPO; import com.njcn.device.pms.pojo.po.RStatOrgPO;
import com.njcn.harmonic.pojo.po.*; import com.njcn.harmonic.pojo.po.*;
import com.njcn.prepare.bo.CalculatedParam;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgDMapper; import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgDMapper;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgMMapper; import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgMMapper;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgQMapper; import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgQMapper;
@@ -35,6 +39,7 @@ import org.springframework.util.CollectionUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.time.LocalDate;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -73,6 +78,743 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
private final private final
DicDataFeignClient dicDataFeignClient; DicDataFeignClient dicDataFeignClient;
@Override
public void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<RStatHarmonicDPO> rStatHarmonicDPOList = new ArrayList<>();
LocalDate localDate = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
/*获取监测点类型类型*/
QueryWrapper<RMpPartHarmonicDetailD> queryWrapper = new QueryWrapper<>();
QueryWrapper<RMpSurplusHarmonicDetailD> rMpSurplusHarmonicDetailDQueryWrapper = new QueryWrapper<>();
QueryWrapper<RStatOrgDPO> rStatOrgDPOQueryWrapper = new QueryWrapper<>();
DecimalFormat df = new DecimalFormat("0.00");
/*获取稳态统计指标*/
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
/*获取数据类型*/
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
;
/*获取监测点类型类型*/
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
/*主网*/
if(!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())){
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
Map<String, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag));
collect.forEach((k, v)->{
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
queryWrapper.clear();
queryWrapper.select("is_freq","is_v_dev","is_v","is_i","is_unbalance","is_i_neg").
in("measurement_point_id",collect1).
eq("data_date",localDate);
List<RMpPartHarmonicDetailD> rMpPartHarmonicDetailDS = rMpPartHarmonicDetailDMapper.selectList(queryWrapper);
rMpSurplusHarmonicDetailDQueryWrapper.clear();
rMpSurplusHarmonicDetailDQueryWrapper.select("is_flicker","is_inuharm").
in("measurement_point_id",collect1).
eq("data_date",localDate);
List<RMpSurplusHarmonicDetailD> rMpSurplusHarmonicDetailDS = rMpSurplusHarmonicDetailDMapper.selectList(rMpSurplusHarmonicDetailDQueryWrapper);
rStatOrgDPOQueryWrapper.clear();
rStatOrgDPOQueryWrapper.select("effective_measurement").
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class",k).
eq("data_type",dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
eq("data_date",localDate);
RStatOrgDPO rStatOrgDPO = rStatOrgDMapper.selectOne(rStatOrgDPOQueryWrapper);
steadyStatis.forEach(dictData -> {
if(Objects.equals(dictData.getCode(),DicDataEnum.TOTAL_INDICATOR.getCode())){
return;
}
RStatHarmonicDPO rStatHarmonicDPO = new RStatHarmonicDPO();
rStatHarmonicDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatHarmonicDPO.setDataDate(localDate);
rStatHarmonicDPO.setHarmonicType(dictData.getId());
rStatHarmonicDPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
rStatHarmonicDPO.setMeasurementTypeClass(k);
rStatHarmonicDPO.setOverLimitMeasurement(getSteadyStatisData(dictData,rMpPartHarmonicDetailDS,rMpSurplusHarmonicDetailDS));
if(rStatOrgDPO.getEffectiveMeasurement()==0){
rStatHarmonicDPO.setOverLimitMeasurementRatio(0.00);
}else{
String value = df.format((float)rStatHarmonicDPO.getOverLimitMeasurement() / rStatOrgDPO.getEffectiveMeasurement());
rStatHarmonicDPO.setOverLimitMeasurementRatio(Double.parseDouble(value));
}
rStatHarmonicDPOList.add(rStatHarmonicDPO);
});
});
}
/*配网*/
if(!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())) {
List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
Map<Integer, List<LineDevGetDTO>> pwMonitorMap = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
pwMonitorMap.forEach((k, v) -> {
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
queryWrapper.clear();
queryWrapper.select("is_freq", "is_v_dev", "is_v", "is_i", "is_unbalance", "is_i_neg").
in("measurement_point_id", collect1).
eq("data_date",localDate);
List<RMpPartHarmonicDetailD> rMpPartHarmonicDetailDS = rMpPartHarmonicDetailDMapper.selectList(queryWrapper);
rMpSurplusHarmonicDetailDQueryWrapper.clear();
rMpSurplusHarmonicDetailDQueryWrapper.select("is_flicker", "is_inuharm").
in("measurement_point_id", collect1).
eq("data_date",localDate);
List<RMpSurplusHarmonicDetailD> rMpSurplusHarmonicDetailDS = rMpSurplusHarmonicDetailDMapper.selectList(rMpSurplusHarmonicDetailDQueryWrapper);
rStatOrgDPOQueryWrapper.clear();
rStatOrgDPOQueryWrapper.select("effective_measurement").
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()).
eq("data_date",localDate);
RStatOrgDPO rStatOrgDPO = rStatOrgDMapper.selectOne(rStatOrgDPOQueryWrapper);
steadyStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.NEG_CURRENT.getCode())) {
return;
}
RStatHarmonicDPO rStatHarmonicDPO = new RStatHarmonicDPO();
rStatHarmonicDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatHarmonicDPO.setDataDate(localDate);
rStatHarmonicDPO.setHarmonicType(dictData.getId());
rStatHarmonicDPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
rStatHarmonicDPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
rStatHarmonicDPO.setOverLimitMeasurement(getSteadyStatisData(dictData, rMpPartHarmonicDetailDS, rMpSurplusHarmonicDetailDS));
if (rStatOrgDPO.getEffectiveMeasurement() == 0) {
rStatHarmonicDPO.setOverLimitMeasurementRatio(0.00);
} else {
String value = df.format(rStatHarmonicDPO.getOverLimitMeasurement() / rStatOrgDPO.getEffectiveMeasurement());
rStatHarmonicDPO.setOverLimitMeasurementRatio(Double.parseDouble(value));
}
rStatHarmonicDPOList.add(rStatHarmonicDPO);
});
});
}
});
if(!CollectionUtils.isEmpty(rStatHarmonicDPOList)){
rStatHarmonicDPOService.saveOrUpdateBatchByMultiId(rStatHarmonicDPOList,500);
}
}
@Override
public void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<RStatHarmonicMPO> rStatHarmonicMPOList = new ArrayList<>();
DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
DateTime end = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
QueryWrapper<RMpPartHarmonicDetailM> queryWrapper = new QueryWrapper<>();
QueryWrapper<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMQueryWrapper = new QueryWrapper<>();
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
QueryWrapper<RStatHarmonicDPO> harmonicDPOQueryWrapper = new QueryWrapper<>();
DecimalFormat df = new DecimalFormat("0.00");
/*获取稳态统计指标*/
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
/*获取数据类型*/
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
;
/*获取监测点类型类型*/
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
/*主网*/
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
Map<String, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag));
collect.forEach((k, v) -> {
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
queryWrapper.clear();
queryWrapper.select("freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpPartHarmonicDetailM> rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper);
rMpSurplusHarmonicDetailMQueryWrapper.clear();
rMpSurplusHarmonicDetailMQueryWrapper.select("flicker_over_day", "inuharm_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMS = rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper);
rStatOrgMPOQueryWrapper.clear();
rStatOrgMPOQueryWrapper.select("effective_measurement_accrued").
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", k).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
between("data_date",begin,end);
RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper);
steadyStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATOR.getCode())) {
return;
}
RStatHarmonicMPO rStatHarmonicMPO = new RStatHarmonicMPO();
rStatHarmonicMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatHarmonicMPO.setDataDate(localDate);
rStatHarmonicMPO.setHarmonicType(dictData.getId());
rStatHarmonicMPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
rStatHarmonicMPO.setMeasurementTypeClass(k);
/**4、累计超标监测点数*/
rStatHarmonicMPO.setOverLimitMeasurementAccrued(getOverLimitMeasurementAccruedTime(dictData, rMpPartHarmonicDetailMS, rMpSurplusHarmonicDetailMS));
/*3、日均超标监测点数,6、日均超标监测点数占比*/
harmonicDPOQueryWrapper.clear();
harmonicDPOQueryWrapper.eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", k).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
eq("harmonic_type", dictData.getId()).
between("data_date",begin,end);
List<RStatHarmonicDPO> rStatHarmonicDPOList = rStatHarmonicDPOService.list(harmonicDPOQueryWrapper);
double asDouble = rStatHarmonicDPOList.stream().mapToDouble(RStatHarmonicDPO::getOverLimitMeasurement).average().getAsDouble();
asDouble = BigDecimal.valueOf(asDouble).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
double asDouble1 = rStatHarmonicDPOList.stream().mapToDouble(RStatHarmonicDPO::getOverLimitMeasurementRatio).average().getAsDouble();
asDouble1 = BigDecimal.valueOf(asDouble1).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
rStatHarmonicMPO.setOverLimitMeasurementAverage(asDouble);
double sum = rStatHarmonicDPOList.stream().mapToDouble(RStatHarmonicDPO::getOverLimitMeasurement).sum();
rStatHarmonicMPO.setOverLimitMeasurementRatioAverage(asDouble1);
int i = BigDecimal.valueOf(asDouble1).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
rStatHarmonicMPO.setOverDay(i);
if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) {
//todo为0时如何设值
rStatHarmonicMPO.setOverLimitMeasurementRatioAccrued(0.00);
} else {
String value = df.format((float) rStatHarmonicMPO.getOverLimitMeasurementAccrued() / rStatOrgMPO.getEffectiveMeasurementAccrued());
rStatHarmonicMPO.setOverLimitMeasurementRatioAccrued(Double.parseDouble(value));
}
rStatHarmonicMPOList.add(rStatHarmonicMPO);
});
});
}
/*配网*/
if(CollectionUtil.isNotEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())){
List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
Map<Integer, List<LineDevGetDTO>> collect = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
collect.forEach((k, v) -> {
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
queryWrapper.clear();
queryWrapper.select("freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpPartHarmonicDetailM> rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper);
rMpSurplusHarmonicDetailMQueryWrapper.clear();
rMpSurplusHarmonicDetailMQueryWrapper.select("flicker_over_day", "inuharm_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMS = rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper);
rStatOrgMPOQueryWrapper.clear();
rStatOrgMPOQueryWrapper.select("effective_measurement_accrued").
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
between("data_date",begin,end);
RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper);
steadyStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATOR.getCode())) {
return;
}
RStatHarmonicMPO rStatHarmonicMPO = new RStatHarmonicMPO();
rStatHarmonicMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatHarmonicMPO.setDataDate(localDate);
rStatHarmonicMPO.setHarmonicType(dictData.getId());
rStatHarmonicMPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
rStatHarmonicMPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
/**4、累计超标监测点数*/
rStatHarmonicMPO.setOverLimitMeasurementAccrued(getOverLimitMeasurementAccruedTime(dictData, rMpPartHarmonicDetailMS, rMpSurplusHarmonicDetailMS));
/*3、日均超标监测点数,6、日均超标监测点数占比*/
harmonicDPOQueryWrapper.clear();
harmonicDPOQueryWrapper.eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()).
eq("harmonic_type", dictData.getId()).
between("data_date",begin,end);
List<RStatHarmonicDPO> rStatHarmonicDPOList = rStatHarmonicDPOService.list(harmonicDPOQueryWrapper);
double asDouble = rStatHarmonicDPOList.stream().mapToDouble(RStatHarmonicDPO::getOverLimitMeasurement).average().getAsDouble();
asDouble = BigDecimal.valueOf(asDouble).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
double asDouble1 = rStatHarmonicDPOList.stream().mapToDouble(RStatHarmonicDPO::getOverLimitMeasurementRatio).average().getAsDouble();
asDouble1 = BigDecimal.valueOf(asDouble1).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
rStatHarmonicMPO.setOverLimitMeasurementAverage(asDouble);
double sum = rStatHarmonicDPOList.stream().mapToDouble(RStatHarmonicDPO::getOverLimitMeasurement).sum();
rStatHarmonicMPO.setOverLimitMeasurementRatioAverage(asDouble1);
int i = BigDecimal.valueOf(asDouble1).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
rStatHarmonicMPO.setOverDay(i);
if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) {
//todo为0时如何设值
rStatHarmonicMPO.setOverLimitMeasurementRatioAccrued(0.00);
} else {
String value = df.format((float) rStatHarmonicMPO.getOverLimitMeasurementAccrued() / rStatOrgMPO.getEffectiveMeasurementAccrued());
rStatHarmonicMPO.setOverLimitMeasurementRatioAccrued(Double.parseDouble(value));
}
rStatHarmonicMPOList.add(rStatHarmonicMPO);
});
});
}
});
if(CollectionUtil.isNotEmpty(rStatHarmonicMPOList)){
rStatHarmonicMPOService.saveOrUpdateBatchByMultiId(rStatHarmonicMPOList,500);
}
}
@Override
public void handleQtr(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<RStatHarmonicQPO> rStatHarmonicQPOList = new ArrayList<>();
DateTime begin = DateUtil.beginOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
DateTime end = DateUtil.endOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
QueryWrapper<RMpPartHarmonicDetailM> queryWrapper = new QueryWrapper<>();
QueryWrapper<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMQueryWrapper = new QueryWrapper<>();
QueryWrapper<RStatOrgQPO> rStatOrgQPOQueryWrapper = new QueryWrapper<>();
QueryWrapper<RStatHarmonicMPO> harmonicMPOQueryWrapper = new QueryWrapper<>();
DecimalFormat df = new DecimalFormat("0.00");
/*获取稳态统计指标*/
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
/*获取数据类型*/
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
;
/*获取监测点类型类型*/
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
/*主网*/
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
Map<String, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag));
collect.forEach((k, v) -> {
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
queryWrapper.clear();
queryWrapper.select("freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpPartHarmonicDetailM> rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper);
rMpSurplusHarmonicDetailMQueryWrapper.clear();
rMpSurplusHarmonicDetailMQueryWrapper.select("flicker_over_day", "inuharm_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMS = rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper);
rStatOrgQPOQueryWrapper.clear();
rStatOrgQPOQueryWrapper.select("effective_measurement_accrued").
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", k).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
between("data_date",begin,end);
RStatOrgQPO rStatOrgQPO = rStatOrgQMapper.selectOne(rStatOrgQPOQueryWrapper);
steadyStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATOR.getCode())) {
return;
}
RStatHarmonicQPO rStatHarmonicQPO = new RStatHarmonicQPO();
rStatHarmonicQPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatHarmonicQPO.setDataDate(localDate);
rStatHarmonicQPO.setHarmonicType(dictData.getId());
rStatHarmonicQPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
rStatHarmonicQPO.setMeasurementTypeClass(k);
/**4、累计超标监测点数*/
rStatHarmonicQPO.setOverLimitMeasurementAccrued(getOverLimitMeasurementAccruedTime(dictData, rMpPartHarmonicDetailMS, rMpSurplusHarmonicDetailMS));
/*3、日均超标监测点数,6、日均超标监测点数占比*/
harmonicMPOQueryWrapper.clear();
harmonicMPOQueryWrapper.eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", k).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
eq("harmonic_type", dictData.getId()).
between("data_date",begin,end);
List<RStatHarmonicMPO> list = rStatHarmonicMPOService.list(harmonicMPOQueryWrapper);
double asDouble = list.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementAverage).average().getAsDouble();
asDouble = BigDecimal.valueOf(asDouble).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
double asDouble1 = list.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementRatioAverage).average().getAsDouble();
asDouble1 = BigDecimal.valueOf(asDouble1).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
int sum1 = list.stream().mapToInt(RStatHarmonicMPO::getOverDay).sum();
rStatHarmonicQPO.setOverLimitMeasurementAverage(asDouble);
rStatHarmonicQPO.setOverLimitMeasurementRatioAverage(asDouble1);
if (rStatHarmonicQPO.getOverLimitMeasurementAccrued() == 0) {
//todo为0时如何设值
rStatHarmonicQPO.setAverageOverDay(0.00);
} else {
String value = df.format((float) sum1 / rStatHarmonicQPO.getOverLimitMeasurementAccrued());
rStatHarmonicQPO.setAverageOverDay(Double.parseDouble(value));
}
if (rStatOrgQPO.getEffectiveMeasurementAccrued() == 0) {
//todo为0时如何设值
rStatHarmonicQPO.setOverLimitMeasurementRatioAccrued(0.00);
} else {
String value = df.format((float) rStatHarmonicQPO.getOverLimitMeasurementAccrued() / rStatOrgQPO.getEffectiveMeasurementAccrued());
rStatHarmonicQPO.setOverLimitMeasurementRatioAccrued(Double.parseDouble(value));
}
rStatHarmonicQPOList.add(rStatHarmonicQPO);
});
});
}
/*配网*/
if(CollectionUtil.isNotEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())){
List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
Map<Integer, List<LineDevGetDTO>> collect = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
collect.forEach((k, v) -> {
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
queryWrapper.clear();
queryWrapper.select("freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpPartHarmonicDetailM> rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper);
rMpSurplusHarmonicDetailMQueryWrapper.clear();
rMpSurplusHarmonicDetailMQueryWrapper.select("flicker_over_day", "inuharm_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMS = rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper);
rStatOrgQPOQueryWrapper.clear();
rStatOrgQPOQueryWrapper.select("effective_measurement_accrued").
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
between("data_date",begin,end);
RStatOrgQPO rStatOrgQPO = rStatOrgQMapper.selectOne(rStatOrgQPOQueryWrapper);
steadyStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATOR.getCode())) {
return;
}
RStatHarmonicQPO rStatHarmonicQPO = new RStatHarmonicQPO();
rStatHarmonicQPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatHarmonicQPO.setDataDate(localDate);
rStatHarmonicQPO.setHarmonicType(dictData.getId());
rStatHarmonicQPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
rStatHarmonicQPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
/**4、累计超标监测点数*/
rStatHarmonicQPO.setOverLimitMeasurementAccrued(getOverLimitMeasurementAccruedTime(dictData, rMpPartHarmonicDetailMS, rMpSurplusHarmonicDetailMS));
/*3、日均超标监测点数,6、日均超标监测点数占比*/
harmonicMPOQueryWrapper.clear();
harmonicMPOQueryWrapper.eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
eq("harmonic_type", dictData.getId()).
between("data_date",begin,end);
List<RStatHarmonicMPO> list = rStatHarmonicMPOService.list(harmonicMPOQueryWrapper);
double asDouble = list.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementAverage).average().getAsDouble();
asDouble = BigDecimal.valueOf(asDouble).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
double asDouble1 = list.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementRatioAverage).average().getAsDouble();
asDouble1 = BigDecimal.valueOf(asDouble1).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
int sum1 = list.stream().mapToInt(RStatHarmonicMPO::getOverDay).sum();
rStatHarmonicQPO.setOverLimitMeasurementAverage(asDouble);
rStatHarmonicQPO.setOverLimitMeasurementRatioAverage(asDouble1);
if (rStatHarmonicQPO.getOverLimitMeasurementAccrued() == 0) {
//todo为0时如何设值
rStatHarmonicQPO.setAverageOverDay(0.00);
} else {
String value = df.format((float) sum1 / rStatHarmonicQPO.getOverLimitMeasurementAccrued());
rStatHarmonicQPO.setAverageOverDay(Double.parseDouble(value));
}
if (rStatOrgQPO.getEffectiveMeasurementAccrued() == 0) {
//todo为0时如何设值
rStatHarmonicQPO.setOverLimitMeasurementRatioAccrued(0.00);
} else {
String value = df.format((float) rStatHarmonicQPO.getOverLimitMeasurementAccrued() / rStatOrgQPO.getEffectiveMeasurementAccrued());
rStatHarmonicQPO.setOverLimitMeasurementRatioAccrued(Double.parseDouble(value));
}
rStatHarmonicQPOList.add(rStatHarmonicQPO);
});
});
}
});
if(CollectionUtil.isNotEmpty(rStatHarmonicQPOList)){
rStatHarmonicQPOService.saveOrUpdateBatchByMultiId(rStatHarmonicQPOList,500);
}
}
@Override
public void handleYear(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<RStatHarmonicYPO> rStatHarmonicYPOList = new ArrayList<>();
DateTime begin = DateUtil.beginOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
DateTime end = DateUtil.endOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
/*获取监测点类型类型*/
QueryWrapper<RMpPartHarmonicDetailM> queryWrapper = new QueryWrapper<>();
QueryWrapper<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMQueryWrapper = new QueryWrapper<>();
QueryWrapper<RStatOrgYPO> rStatOrgYPOQueryWrapper = new QueryWrapper<>();
QueryWrapper<RStatHarmonicMPO> harmonicMPOQueryWrapper = new QueryWrapper<>();
DecimalFormat df = new DecimalFormat("0.00");
/*获取稳态统计指标*/
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
/*获取数据类型*/
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
;
/*获取监测点类型类型*/
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
/*主网*/
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
Map<String, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag));
collect.forEach((k, v) -> {
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
queryWrapper.clear();
queryWrapper.select("freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpPartHarmonicDetailM> rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper);
rMpSurplusHarmonicDetailMQueryWrapper.clear();
rMpSurplusHarmonicDetailMQueryWrapper.select("flicker_over_day", "inuharm_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMS = rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper);
rStatOrgYPOQueryWrapper.clear();
rStatOrgYPOQueryWrapper.select("effective_measurement_accrued").
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", k).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
between("data_date",begin,end);
RStatOrgYPO rStatOrgYPO = rStatOrgYMapper.selectOne(rStatOrgYPOQueryWrapper);
steadyStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATOR.getCode())) {
return;
}
RStatHarmonicYPO rStatHarmonicYPO = new RStatHarmonicYPO();
rStatHarmonicYPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatHarmonicYPO.setDataDate(localDate);
rStatHarmonicYPO.setHarmonicType(dictData.getId());
rStatHarmonicYPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
rStatHarmonicYPO.setMeasurementTypeClass(k);
/**4、累计超标监测点数*/
rStatHarmonicYPO.setOverLimitMeasurementAccrued(getOverLimitMeasurementAccruedTime(dictData, rMpPartHarmonicDetailMS, rMpSurplusHarmonicDetailMS));
/*3、日均超标监测点数,6、日均超标监测点数占比*/
harmonicMPOQueryWrapper.clear();
harmonicMPOQueryWrapper.eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", k).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
eq("harmonic_type", dictData.getId()).
between("data_date",begin,end);
List<RStatHarmonicMPO> list = rStatHarmonicMPOService.list(harmonicMPOQueryWrapper);
double asDouble = list.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementAverage).average().getAsDouble();
asDouble = BigDecimal.valueOf(asDouble).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
double asDouble1 = list.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementRatioAverage).average().getAsDouble();
asDouble1 = BigDecimal.valueOf(asDouble1).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
int sum1 = list.stream().mapToInt(RStatHarmonicMPO::getOverDay).sum();
rStatHarmonicYPO.setOverLimitMeasurementAverage(asDouble);
rStatHarmonicYPO.setOverLimitMeasurementRatioAverage(asDouble1);
if (rStatHarmonicYPO.getOverLimitMeasurementAccrued() == 0) {
//todo为0时如何设值
rStatHarmonicYPO.setAverageOverDay(0.00);
} else {
String value = df.format((float) sum1 / rStatHarmonicYPO.getOverLimitMeasurementAccrued());
rStatHarmonicYPO.setAverageOverDay(Double.parseDouble(value));
}
if (rStatOrgYPO.getEffectiveMeasurementAccrued() == 0) {
//todo为0时如何设值
rStatHarmonicYPO.setOverLimitMeasurementRatioAccrued(0.00);
} else {
String value = df.format((float) rStatHarmonicYPO.getOverLimitMeasurementAccrued() / rStatOrgYPO.getEffectiveMeasurementAccrued());
rStatHarmonicYPO.setOverLimitMeasurementRatioAccrued(Double.parseDouble(value));
}
rStatHarmonicYPOList.add(rStatHarmonicYPO);
});
});
}
/*配网*/
if(CollectionUtil.isNotEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())){
List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
Map<Integer, List<LineDevGetDTO>> collect = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
collect.forEach((k, v) -> {
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
queryWrapper.clear();
queryWrapper.select("freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpPartHarmonicDetailM> rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper);
rMpSurplusHarmonicDetailMQueryWrapper.clear();
rMpSurplusHarmonicDetailMQueryWrapper.select("flicker_over_day", "inuharm_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMS = rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper);
rStatOrgYPOQueryWrapper.clear();
rStatOrgYPOQueryWrapper.select("effective_measurement_accrued").
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
between("data_date",begin,end);
RStatOrgYPO rStatOrgYPO = rStatOrgYMapper.selectOne(rStatOrgYPOQueryWrapper);
steadyStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATOR.getCode())) {
return;
}
RStatHarmonicYPO rStatHarmonicYPO = new RStatHarmonicYPO();
rStatHarmonicYPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatHarmonicYPO.setDataDate(localDate);
rStatHarmonicYPO.setHarmonicType(dictData.getId());
rStatHarmonicYPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
rStatHarmonicYPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
/**4、累计超标监测点数*/
rStatHarmonicYPO.setOverLimitMeasurementAccrued(getOverLimitMeasurementAccruedTime(dictData, rMpPartHarmonicDetailMS, rMpSurplusHarmonicDetailMS));
/*3、日均超标监测点数,6、日均超标监测点数占比*/
harmonicMPOQueryWrapper.clear();
harmonicMPOQueryWrapper.eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
eq("harmonic_type", dictData.getId()).
between("data_date",begin,end);
List<RStatHarmonicMPO> list = rStatHarmonicMPOService.list(harmonicMPOQueryWrapper);
double asDouble = list.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementAverage).average().getAsDouble();
asDouble = BigDecimal.valueOf(asDouble).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
double asDouble1 = list.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementRatioAverage).average().getAsDouble();
asDouble1 = BigDecimal.valueOf(asDouble1).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
int sum1 = list.stream().mapToInt(RStatHarmonicMPO::getOverDay).sum();
rStatHarmonicYPO.setOverLimitMeasurementAverage(asDouble);
rStatHarmonicYPO.setOverLimitMeasurementRatioAverage(asDouble1);
if (rStatHarmonicYPO.getOverLimitMeasurementAccrued() == 0) {
//todo为0时如何设值
rStatHarmonicYPO.setAverageOverDay(0.00);
} else {
String value = df.format((float) sum1 / rStatHarmonicYPO.getOverLimitMeasurementAccrued());
rStatHarmonicYPO.setAverageOverDay(Double.parseDouble(value));
}
if (rStatOrgYPO.getEffectiveMeasurementAccrued() == 0) {
//todo为0时如何设值
rStatHarmonicYPO.setOverLimitMeasurementRatioAccrued(0.00);
} else {
String value = df.format((float) rStatHarmonicYPO.getOverLimitMeasurementAccrued() / rStatOrgYPO.getEffectiveMeasurementAccrued());
rStatHarmonicYPO.setOverLimitMeasurementRatioAccrued(Double.parseDouble(value));
}
rStatHarmonicYPOList.add(rStatHarmonicYPO);
});
});
}
});
if(CollectionUtil.isNotEmpty(rStatHarmonicYPOList)){
rStatHarmonicYPOService.saveOrUpdateBatchByMultiId(rStatHarmonicYPOList,500);
}
}
/***----------------------------------------------------------------------------------------------**/
@Override @Override
public void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) { public void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
switch (type) { switch (type) {
@@ -92,12 +834,17 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
break; break;
} }
} }
@Transactional @Transactional
@Async("asyncExecutor") @Async("asyncExecutor")
@SneakyThrows @SneakyThrows
private void hanlderOracleYear(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) { private void hanlderOracleYear(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
List<RStatHarmonicYPO> rStatHarmonicYPOList = new ArrayList<>(); List<RStatHarmonicYPO> rStatHarmonicYPOList = new ArrayList<>();
Date date = DateUtil.parse(dataDate); Date date = DateUtil.parse(dataDate);
LocalDate localDate = LocalDateTimeUtil.parseDate(dataDate, DatePattern.NORM_DATE_PATTERN);
/*获取监测点类型类型*/
QueryWrapper<RMpPartHarmonicDetailM> queryWrapper = new QueryWrapper<>(); QueryWrapper<RMpPartHarmonicDetailM> queryWrapper = new QueryWrapper<>();
QueryWrapper<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMQueryWrapper = new QueryWrapper<>(); QueryWrapper<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMQueryWrapper = new QueryWrapper<>();
QueryWrapper<RStatOrgYPO> rStatOrgYPOQueryWrapper = new QueryWrapper<>(); QueryWrapper<RStatOrgYPO> rStatOrgYPOQueryWrapper = new QueryWrapper<>();
@@ -156,7 +903,7 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
} }
RStatHarmonicYPO rStatHarmonicYPO = new RStatHarmonicYPO(); RStatHarmonicYPO rStatHarmonicYPO = new RStatHarmonicYPO();
rStatHarmonicYPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); rStatHarmonicYPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatHarmonicYPO.setDataDate(date); rStatHarmonicYPO.setDataDate(localDate);
rStatHarmonicYPO.setHarmonicType(dictData.getId()); rStatHarmonicYPO.setHarmonicType(dictData.getId());
rStatHarmonicYPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()); rStatHarmonicYPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
rStatHarmonicYPO.setMeasurementTypeClass(k); rStatHarmonicYPO.setMeasurementTypeClass(k);
@@ -239,7 +986,7 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
} }
RStatHarmonicYPO rStatHarmonicYPO = new RStatHarmonicYPO(); RStatHarmonicYPO rStatHarmonicYPO = new RStatHarmonicYPO();
rStatHarmonicYPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); rStatHarmonicYPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatHarmonicYPO.setDataDate(date); rStatHarmonicYPO.setDataDate(localDate);
rStatHarmonicYPO.setHarmonicType(dictData.getId()); rStatHarmonicYPO.setHarmonicType(dictData.getId());
rStatHarmonicYPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()); rStatHarmonicYPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
rStatHarmonicYPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap)); rStatHarmonicYPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
@@ -300,6 +1047,8 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
private void hanlderOracleQtr(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) { private void hanlderOracleQtr(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
List<RStatHarmonicQPO> rStatHarmonicQPOList = new ArrayList<>(); List<RStatHarmonicQPO> rStatHarmonicQPOList = new ArrayList<>();
Date date = DateUtil.parse(dataDate); Date date = DateUtil.parse(dataDate);
LocalDate localDate = LocalDateTimeUtil.parseDate(dataDate, DatePattern.NORM_DATE_PATTERN);
QueryWrapper<RMpPartHarmonicDetailM> queryWrapper = new QueryWrapper<>(); QueryWrapper<RMpPartHarmonicDetailM> queryWrapper = new QueryWrapper<>();
QueryWrapper<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMQueryWrapper = new QueryWrapper<>(); QueryWrapper<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMQueryWrapper = new QueryWrapper<>();
QueryWrapper<RStatOrgQPO> rStatOrgQPOQueryWrapper = new QueryWrapper<>(); QueryWrapper<RStatOrgQPO> rStatOrgQPOQueryWrapper = new QueryWrapper<>();
@@ -357,7 +1106,7 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
} }
RStatHarmonicQPO rStatHarmonicQPO = new RStatHarmonicQPO(); RStatHarmonicQPO rStatHarmonicQPO = new RStatHarmonicQPO();
rStatHarmonicQPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); rStatHarmonicQPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatHarmonicQPO.setDataDate(date); rStatHarmonicQPO.setDataDate(localDate);
rStatHarmonicQPO.setHarmonicType(dictData.getId()); rStatHarmonicQPO.setHarmonicType(dictData.getId());
rStatHarmonicQPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()); rStatHarmonicQPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
rStatHarmonicQPO.setMeasurementTypeClass(k); rStatHarmonicQPO.setMeasurementTypeClass(k);
@@ -440,7 +1189,7 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
} }
RStatHarmonicQPO rStatHarmonicQPO = new RStatHarmonicQPO(); RStatHarmonicQPO rStatHarmonicQPO = new RStatHarmonicQPO();
rStatHarmonicQPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); rStatHarmonicQPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatHarmonicQPO.setDataDate(date); rStatHarmonicQPO.setDataDate(localDate);
rStatHarmonicQPO.setHarmonicType(dictData.getId()); rStatHarmonicQPO.setHarmonicType(dictData.getId());
rStatHarmonicQPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()); rStatHarmonicQPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
rStatHarmonicQPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap)); rStatHarmonicQPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
@@ -502,6 +1251,8 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
List<RStatHarmonicMPO> rStatHarmonicMPOList = new ArrayList<>(); List<RStatHarmonicMPO> rStatHarmonicMPOList = new ArrayList<>();
Date date = DateUtil.parse(dataDate); Date date = DateUtil.parse(dataDate);
LocalDate localDate = LocalDateTimeUtil.parseDate(dataDate, DatePattern.NORM_DATE_PATTERN);
QueryWrapper<RMpPartHarmonicDetailM> queryWrapper = new QueryWrapper<>(); QueryWrapper<RMpPartHarmonicDetailM> queryWrapper = new QueryWrapper<>();
QueryWrapper<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMQueryWrapper = new QueryWrapper<>(); QueryWrapper<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMQueryWrapper = new QueryWrapper<>();
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>(); QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
@@ -558,7 +1309,7 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
} }
RStatHarmonicMPO rStatHarmonicMPO = new RStatHarmonicMPO(); RStatHarmonicMPO rStatHarmonicMPO = new RStatHarmonicMPO();
rStatHarmonicMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); rStatHarmonicMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatHarmonicMPO.setDataDate(date); rStatHarmonicMPO.setDataDate(localDate);
rStatHarmonicMPO.setHarmonicType(dictData.getId()); rStatHarmonicMPO.setHarmonicType(dictData.getId());
rStatHarmonicMPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()); rStatHarmonicMPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
rStatHarmonicMPO.setMeasurementTypeClass(k); rStatHarmonicMPO.setMeasurementTypeClass(k);
@@ -633,7 +1384,7 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
} }
RStatHarmonicMPO rStatHarmonicMPO = new RStatHarmonicMPO(); RStatHarmonicMPO rStatHarmonicMPO = new RStatHarmonicMPO();
rStatHarmonicMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); rStatHarmonicMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatHarmonicMPO.setDataDate(date); rStatHarmonicMPO.setDataDate(localDate);
rStatHarmonicMPO.setHarmonicType(dictData.getId()); rStatHarmonicMPO.setHarmonicType(dictData.getId());
rStatHarmonicMPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()); rStatHarmonicMPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
rStatHarmonicMPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap)); rStatHarmonicMPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
@@ -718,6 +1469,8 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
private void hanlderDay(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) { private void hanlderDay(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
List<RStatHarmonicDPO> rStatHarmonicDPOList = new ArrayList<>(); List<RStatHarmonicDPO> rStatHarmonicDPOList = new ArrayList<>();
Date date = DateUtil.parse(dataDate); Date date = DateUtil.parse(dataDate);
LocalDate localDate = LocalDateTimeUtil.parseDate(dataDate, DatePattern.NORM_DATE_PATTERN);
QueryWrapper<RMpPartHarmonicDetailD> queryWrapper = new QueryWrapper<>(); QueryWrapper<RMpPartHarmonicDetailD> queryWrapper = new QueryWrapper<>();
QueryWrapper<RMpSurplusHarmonicDetailD> rMpSurplusHarmonicDetailDQueryWrapper = new QueryWrapper<>(); QueryWrapper<RMpSurplusHarmonicDetailD> rMpSurplusHarmonicDetailDQueryWrapper = new QueryWrapper<>();
QueryWrapper<RStatOrgDPO> rStatOrgDPOQueryWrapper = new QueryWrapper<>(); QueryWrapper<RStatOrgDPO> rStatOrgDPOQueryWrapper = new QueryWrapper<>();
@@ -770,7 +1523,7 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
} }
RStatHarmonicDPO rStatHarmonicDPO = new RStatHarmonicDPO(); RStatHarmonicDPO rStatHarmonicDPO = new RStatHarmonicDPO();
rStatHarmonicDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); rStatHarmonicDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatHarmonicDPO.setDataDate(date); rStatHarmonicDPO.setDataDate(localDate);
rStatHarmonicDPO.setHarmonicType(dictData.getId()); rStatHarmonicDPO.setHarmonicType(dictData.getId());
rStatHarmonicDPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()); rStatHarmonicDPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
rStatHarmonicDPO.setMeasurementTypeClass(k); rStatHarmonicDPO.setMeasurementTypeClass(k);
@@ -821,7 +1574,7 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
} }
RStatHarmonicDPO rStatHarmonicDPO = new RStatHarmonicDPO(); RStatHarmonicDPO rStatHarmonicDPO = new RStatHarmonicDPO();
rStatHarmonicDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); rStatHarmonicDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatHarmonicDPO.setDataDate(date); rStatHarmonicDPO.setDataDate(localDate);
rStatHarmonicDPO.setHarmonicType(dictData.getId()); rStatHarmonicDPO.setHarmonicType(dictData.getId());
rStatHarmonicDPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()); rStatHarmonicDPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
rStatHarmonicDPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap)); rStatHarmonicDPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));

View File

@@ -1,11 +1,15 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.area; package com.njcn.prepare.harmonic.service.mysql.Impl.area;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO; import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
import com.njcn.harmonic.pojo.po.*; import com.njcn.harmonic.pojo.po.*;
import com.njcn.prepare.bo.CalculatedParam;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgDMapper; import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgDMapper;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgMMapper; import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgMMapper;
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpPartHarmonicDetailDMapper; import com.njcn.prepare.harmonic.mapper.mysql.line.RMpPartHarmonicDetailDMapper;
@@ -31,6 +35,7 @@ import org.springframework.util.CollectionUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.time.LocalDate;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -58,6 +63,358 @@ public class RStatHarmonicVoltageServiceImpl implements RStatHarmonicVoltageServ
private final private final
DicDataFeignClient dicDataFeignClient; DicDataFeignClient dicDataFeignClient;
@Override
public void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<RStatHarmonicVoltageDPO> rStatHarmonicVoltageDPOList = new ArrayList<>();
LocalDate localDate = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
QueryWrapper<RMpPartHarmonicDetailD> queryWrapper = new QueryWrapper<>();
QueryWrapper<RMpSurplusHarmonicDetailD> rMpSurplusHarmonicDetailDQueryWrapper = new QueryWrapper<>();
QueryWrapper<RStatOrgDPO> rStatOrgDPOQueryWrapper = new QueryWrapper<>();
DecimalFormat df = new DecimalFormat("0.00");
/*获取稳态统计指标*/
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
/*获取数据类型*/
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
;
/*获取监测点类型类型*/
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
/*主网*/
if(!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())){
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
Map<String, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag));
collect.forEach((k, v)->{
Map<String, List<LineDevGetDTO>> collect2 = v.stream().collect(Collectors.groupingBy(LineDevGetDTO::getVoltageLevel));
collect2.forEach((k1, v1) -> {
List<String> collect3 = v1.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
queryWrapper.clear();
queryWrapper.select("is_freq","is_v_dev","is_v","is_i","is_unbalance","is_i_neg").
in("measurement_point_id",collect3).
eq("data_date",localDate);
List<RMpPartHarmonicDetailD> rMpPartHarmonicDetailDS = rMpPartHarmonicDetailDMapper.selectList(queryWrapper);
rMpSurplusHarmonicDetailDQueryWrapper.clear();
rMpSurplusHarmonicDetailDQueryWrapper.select("is_flicker","is_inuharm").
in("measurement_point_id",collect3).
eq("data_date",localDate);
List<RMpSurplusHarmonicDetailD> rMpSurplusHarmonicDetailDS = rMpSurplusHarmonicDetailDMapper.selectList(rMpSurplusHarmonicDetailDQueryWrapper);
rStatOrgDPOQueryWrapper.clear();
rStatOrgDPOQueryWrapper.select("effective_measurement").
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class",k).
eq("data_type",dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
eq("data_date",localDate);
RStatOrgDPO rStatOrgDPO = rStatOrgDMapper.selectOne(rStatOrgDPOQueryWrapper);
steadyStatis.forEach(dictData -> {
if(Objects.equals(dictData.getCode(),DicDataEnum.TOTAL_INDICATOR.getCode())){
return;
}
RStatHarmonicVoltageDPO rStatHarmonicVoltageDPO = new RStatHarmonicVoltageDPO();
rStatHarmonicVoltageDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatHarmonicVoltageDPO.setDataDate(localDate);
rStatHarmonicVoltageDPO.setHarmonicType(dictData.getId());
rStatHarmonicVoltageDPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
rStatHarmonicVoltageDPO.setMeasurementTypeClass(k);
rStatHarmonicVoltageDPO.setVoltageType(k1);
rStatHarmonicVoltageDPO.setOverLimitMeasurementAverage(getSteadyStatisData(dictData,rMpPartHarmonicDetailDS,rMpSurplusHarmonicDetailDS));
if(rStatOrgDPO.getEffectiveMeasurement()==0){
rStatHarmonicVoltageDPO.setOverLimitMeasurementRatioAverage(0.00);
}else{
String value = df.format((float)rStatHarmonicVoltageDPO.getOverLimitMeasurementAverage()/ rStatOrgDPO.getEffectiveMeasurement());
rStatHarmonicVoltageDPO.setOverLimitMeasurementRatioAverage(Double.parseDouble(value));
}
rStatHarmonicVoltageDPOList.add(rStatHarmonicVoltageDPO);
})
;}
);
});
}
/*配网*/
if(!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())) {
List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
Map<Integer, List<LineDevGetDTO>> pwMonitorMap = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
pwMonitorMap.forEach((k, v)->{
Map<String, List<LineDevGetDTO>> collect2 = v.stream().collect(Collectors.groupingBy(LineDevGetDTO::getVoltageLevel));
collect2.forEach((k1, v1) -> {
List<String> collect3 = v1.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
queryWrapper.clear();
queryWrapper.select("is_freq","is_v_dev","is_v","is_i","is_unbalance","is_i_neg").
in("measurement_point_id",collect3).
eq("data_date",localDate);
List<RMpPartHarmonicDetailD> rMpPartHarmonicDetailDS = rMpPartHarmonicDetailDMapper.selectList(queryWrapper);
rMpSurplusHarmonicDetailDQueryWrapper.clear();
rMpSurplusHarmonicDetailDQueryWrapper.select("is_flicker","is_inuharm").
in("measurement_point_id",collect3).
eq("data_date",localDate);
List<RMpSurplusHarmonicDetailD> rMpSurplusHarmonicDetailDS = rMpSurplusHarmonicDetailDMapper.selectList(rMpSurplusHarmonicDetailDQueryWrapper);
rStatOrgDPOQueryWrapper.clear();
rStatOrgDPOQueryWrapper.select("effective_measurement").
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class",getmeasurementType(k,lineSortMap)).
eq("data_type",dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
eq("data_date",localDate);
RStatOrgDPO rStatOrgDPO = rStatOrgDMapper.selectOne(rStatOrgDPOQueryWrapper);
steadyStatis.forEach(dictData -> {
if(Objects.equals(dictData.getCode(),DicDataEnum.TOTAL_INDICATOR.getCode())){
return;
}
RStatHarmonicVoltageDPO rStatHarmonicVoltageDPO = new RStatHarmonicVoltageDPO();
rStatHarmonicVoltageDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatHarmonicVoltageDPO.setDataDate(localDate);
rStatHarmonicVoltageDPO.setHarmonicType(dictData.getId());
rStatHarmonicVoltageDPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
rStatHarmonicVoltageDPO.setMeasurementTypeClass(getmeasurementType(k,lineSortMap));
rStatHarmonicVoltageDPO.setVoltageType(k1);
rStatHarmonicVoltageDPO.setOverLimitMeasurementAverage(getSteadyStatisData(dictData,rMpPartHarmonicDetailDS,rMpSurplusHarmonicDetailDS));
if(rStatOrgDPO.getEffectiveMeasurement()==0){
rStatHarmonicVoltageDPO.setOverLimitMeasurementRatioAverage(0.00);
}else{
String value = df.format((float)rStatHarmonicVoltageDPO.getOverLimitMeasurementAverage()/ rStatOrgDPO.getEffectiveMeasurement());
rStatHarmonicVoltageDPO.setOverLimitMeasurementRatioAverage(Double.parseDouble(value));
}
rStatHarmonicVoltageDPOList.add(rStatHarmonicVoltageDPO);
})
;}
);
});
}
});
if(!CollectionUtils.isEmpty(rStatHarmonicVoltageDPOList)){
rStatHarmonicVoltageDPOService.saveOrUpdateBatchByMultiId(rStatHarmonicVoltageDPOList,500);
}
}
@Override
public void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<RStatHarmonicVoltageMPO> rStatHarmonicVoltageMPOList = new ArrayList<>();
DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
DateTime end = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
QueryWrapper<RMpPartHarmonicDetailM> queryWrapper = new QueryWrapper<>();
QueryWrapper<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMQueryWrapper = new QueryWrapper<>();
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
QueryWrapper<RStatHarmonicVoltageDPO> harmonicVoltageDPOQueryWrapper = new QueryWrapper<>();
DecimalFormat df = new DecimalFormat("0.00");
/*获取稳态统计指标*/
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
/*获取数据类型*/
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
;
/*获取监测点类型类型*/
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
/*主网*/
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
Map<String, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag));
collect.forEach((k, v) -> {
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
Map<String, List<LineDevGetDTO>> collect2 = v.stream().collect(Collectors.groupingBy(LineDevGetDTO::getVoltageLevel));
collect2.forEach((k1, v1) -> {
queryWrapper.clear();
queryWrapper.select("freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpPartHarmonicDetailM> rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper);
rMpSurplusHarmonicDetailMQueryWrapper.clear();
rMpSurplusHarmonicDetailMQueryWrapper.select("flicker_over_day", "inuharm_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMS = rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper);
rStatOrgMPOQueryWrapper.clear();
rStatOrgMPOQueryWrapper.select("effective_measurement_accrued").
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", k).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
between("data_date",begin,end);
RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper);
steadyStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATOR.getCode())) {
return;
}
RStatHarmonicVoltageMPO rStatHarmonicVoltageMPO = new RStatHarmonicVoltageMPO();
rStatHarmonicVoltageMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatHarmonicVoltageMPO.setDataDate(localDate);
rStatHarmonicVoltageMPO.setHarmonicType(dictData.getId());
rStatHarmonicVoltageMPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
rStatHarmonicVoltageMPO.setMeasurementTypeClass(k);
rStatHarmonicVoltageMPO.setVoltageType(k1);
/**4、累计超标监测点数*/
rStatHarmonicVoltageMPO.setOverLimitMeasurementAccrued(getOverLimitMeasurementAccruedTime(dictData, rMpPartHarmonicDetailMS, rMpSurplusHarmonicDetailMS));
/*3、日均超标监测点数,6、日均超标监测点数占比*/
harmonicVoltageDPOQueryWrapper.clear();
harmonicVoltageDPOQueryWrapper.eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", k).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
eq("harmonic_type", dictData.getId()).
eq("voltage_type",k1).
between("data_date",begin,end);
List<RStatHarmonicVoltageDPO> list = rStatHarmonicVoltageDPOService.list(harmonicVoltageDPOQueryWrapper);
double asDouble = list.stream().mapToDouble(RStatHarmonicVoltageDPO::getOverLimitMeasurementAverage).average().getAsDouble();
asDouble = BigDecimal.valueOf(asDouble).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
rStatHarmonicVoltageMPO.setOverLimitMeasurementAverage(asDouble);
double asDouble1 = list.stream().mapToDouble(RStatHarmonicVoltageDPO::getOverLimitMeasurementRatioAverage).average().getAsDouble();
asDouble1 = BigDecimal.valueOf(asDouble1).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAccrued(asDouble);
int sum = list.stream().mapToInt(RStatHarmonicVoltageDPO::getOverLimitMeasurementAverage).sum();
rStatHarmonicVoltageMPO.setOverDay(sum);
if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) {
//todo为0时如何设值
rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAverage(0.00);
} else {
String value = df.format((float) rStatHarmonicVoltageMPO.getOverLimitMeasurementAccrued() / rStatOrgMPO.getEffectiveMeasurementAccrued());
rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAverage(Double.parseDouble(value));
}
rStatHarmonicVoltageMPOList.add(rStatHarmonicVoltageMPO);
});
});
});
}
/*配网*/
if(CollectionUtil.isNotEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())){
List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
Map<Integer, List<LineDevGetDTO>> collect = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
collect.forEach((k, v) -> {
{
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
Map<String, List<LineDevGetDTO>> collect2 = v.stream().collect(Collectors.groupingBy(LineDevGetDTO::getVoltageLevel));
collect2.forEach((k1, v1) -> {
queryWrapper.clear();
queryWrapper.select("freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpPartHarmonicDetailM> rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper);
rMpSurplusHarmonicDetailMQueryWrapper.clear();
rMpSurplusHarmonicDetailMQueryWrapper.select("flicker_over_day", "inuharm_over_day").
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMS = rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper);
rStatOrgMPOQueryWrapper.clear();
rStatOrgMPOQueryWrapper.select("effective_measurement_accrued").
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", k).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
between("data_date",begin,end);
RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper);
steadyStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATOR.getCode())) {
return;
}
RStatHarmonicVoltageMPO rStatHarmonicVoltageMPO = new RStatHarmonicVoltageMPO();
rStatHarmonicVoltageMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatHarmonicVoltageMPO.setDataDate(localDate);
rStatHarmonicVoltageMPO.setHarmonicType(dictData.getId());
rStatHarmonicVoltageMPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
rStatHarmonicVoltageMPO.setMeasurementTypeClass(getmeasurementType(k,lineSortMap));
rStatHarmonicVoltageMPO.setVoltageType(k1);
/**4、累计超标监测点数*/
rStatHarmonicVoltageMPO.setOverLimitMeasurementAccrued(getOverLimitMeasurementAccruedTime(dictData, rMpPartHarmonicDetailMS, rMpSurplusHarmonicDetailMS));
/*3、日均超标监测点数,6、日均超标监测点数占比*/
harmonicVoltageDPOQueryWrapper.clear();
harmonicVoltageDPOQueryWrapper.eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", k).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
eq("harmonic_type", dictData.getId()).
eq("voltage_type",k1).
between("data_date",begin,end);
List<RStatHarmonicVoltageDPO> list = rStatHarmonicVoltageDPOService.list(harmonicVoltageDPOQueryWrapper);
double asDouble = list.stream().mapToDouble(RStatHarmonicVoltageDPO::getOverLimitMeasurementAverage).average().getAsDouble();
asDouble = BigDecimal.valueOf(asDouble).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
rStatHarmonicVoltageMPO.setOverLimitMeasurementAverage(asDouble);
double asDouble1 = list.stream().mapToDouble(RStatHarmonicVoltageDPO::getOverLimitMeasurementRatioAverage).average().getAsDouble();
asDouble1 = BigDecimal.valueOf(asDouble1).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAccrued(asDouble);
int sum = list.stream().mapToInt(RStatHarmonicVoltageDPO::getOverLimitMeasurementAverage).sum();
rStatHarmonicVoltageMPO.setOverDay(sum);
if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) {
//todo为0时如何设值
rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAverage(0.00);
} else {
String value = df.format((float) rStatHarmonicVoltageMPO.getOverLimitMeasurementAccrued() / rStatOrgMPO.getEffectiveMeasurementAccrued());
rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAverage(Double.parseDouble(value));
}
rStatHarmonicVoltageMPOList.add(rStatHarmonicVoltageMPO);
});
});
}
});
}
});
if(CollectionUtil.isNotEmpty(rStatHarmonicVoltageMPOList)){
rStatHarmonicVoltageMPOService.saveOrUpdateBatchByMultiId(rStatHarmonicVoltageMPOList,500);
}
}
/**---------------------------------------------------------------------------------**/
@Override @Override
public void handlerByPowerLevel(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) { public void handlerByPowerLevel(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
switch (type) { switch (type) {
@@ -78,12 +435,16 @@ public class RStatHarmonicVoltageServiceImpl implements RStatHarmonicVoltageServ
} }
} }
@Transactional(rollbackFor = {Exception.class}) @Transactional(rollbackFor = {Exception.class})
@Async("asyncExecutor") @Async("asyncExecutor")
@SneakyThrows @SneakyThrows
private void hanlderMByPl(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) { private void hanlderMByPl(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
List<RStatHarmonicVoltageMPO> rStatHarmonicVoltageMPOList = new ArrayList<>(); List<RStatHarmonicVoltageMPO> rStatHarmonicVoltageMPOList = new ArrayList<>();
Date date = DateUtil.parse(dataDate); Date date = DateUtil.parse(dataDate);
LocalDate localDate = LocalDateTimeUtil.parseDate(dataDate, DatePattern.NORM_DATE_PATTERN);
QueryWrapper<RMpPartHarmonicDetailM> queryWrapper = new QueryWrapper<>(); QueryWrapper<RMpPartHarmonicDetailM> queryWrapper = new QueryWrapper<>();
QueryWrapper<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMQueryWrapper = new QueryWrapper<>(); QueryWrapper<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMQueryWrapper = new QueryWrapper<>();
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>(); QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
@@ -141,7 +502,7 @@ public class RStatHarmonicVoltageServiceImpl implements RStatHarmonicVoltageServ
} }
RStatHarmonicVoltageMPO rStatHarmonicVoltageMPO = new RStatHarmonicVoltageMPO(); RStatHarmonicVoltageMPO rStatHarmonicVoltageMPO = new RStatHarmonicVoltageMPO();
rStatHarmonicVoltageMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); rStatHarmonicVoltageMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatHarmonicVoltageMPO.setDataDate(date); rStatHarmonicVoltageMPO.setDataDate(localDate);
rStatHarmonicVoltageMPO.setHarmonicType(dictData.getId()); rStatHarmonicVoltageMPO.setHarmonicType(dictData.getId());
rStatHarmonicVoltageMPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()); rStatHarmonicVoltageMPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
rStatHarmonicVoltageMPO.setMeasurementTypeClass(k); rStatHarmonicVoltageMPO.setMeasurementTypeClass(k);
@@ -155,7 +516,7 @@ public class RStatHarmonicVoltageServiceImpl implements RStatHarmonicVoltageServ
eq("measurement_type_class", k). eq("measurement_type_class", k).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()). eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
eq("harmonic_type", dictData.getId()). eq("harmonic_type", dictData.getId()).
eq("voltageType",k1). eq("voltage_type",k1).
eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring(0, 7)); eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring(0, 7));
List<RStatHarmonicVoltageDPO> list = rStatHarmonicVoltageDPOService.list(harmonicVoltageDPOQueryWrapper); List<RStatHarmonicVoltageDPO> list = rStatHarmonicVoltageDPOService.list(harmonicVoltageDPOQueryWrapper);
double asDouble = list.stream().mapToDouble(RStatHarmonicVoltageDPO::getOverLimitMeasurementAverage).average().getAsDouble(); double asDouble = list.stream().mapToDouble(RStatHarmonicVoltageDPO::getOverLimitMeasurementAverage).average().getAsDouble();
@@ -170,11 +531,11 @@ public class RStatHarmonicVoltageServiceImpl implements RStatHarmonicVoltageServ
if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) { if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) {
//todo为0时如何设值 //todo为0时如何设值
rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAccrued(0.00); rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAverage(0.00);
} else { } else {
String value = df.format((float) rStatHarmonicVoltageMPO.getOverLimitMeasurementAccrued() / rStatOrgMPO.getEffectiveMeasurementAccrued()); String value = df.format((float) rStatHarmonicVoltageMPO.getOverLimitMeasurementAccrued() / rStatOrgMPO.getEffectiveMeasurementAccrued());
rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAccrued(Double.parseDouble(value)); rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAverage(Double.parseDouble(value));
} }
rStatHarmonicVoltageMPOList.add(rStatHarmonicVoltageMPO); rStatHarmonicVoltageMPOList.add(rStatHarmonicVoltageMPO);
}); });
@@ -219,7 +580,7 @@ public class RStatHarmonicVoltageServiceImpl implements RStatHarmonicVoltageServ
} }
RStatHarmonicVoltageMPO rStatHarmonicVoltageMPO = new RStatHarmonicVoltageMPO(); RStatHarmonicVoltageMPO rStatHarmonicVoltageMPO = new RStatHarmonicVoltageMPO();
rStatHarmonicVoltageMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); rStatHarmonicVoltageMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatHarmonicVoltageMPO.setDataDate(date); rStatHarmonicVoltageMPO.setDataDate(localDate);
rStatHarmonicVoltageMPO.setHarmonicType(dictData.getId()); rStatHarmonicVoltageMPO.setHarmonicType(dictData.getId());
rStatHarmonicVoltageMPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()); rStatHarmonicVoltageMPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
rStatHarmonicVoltageMPO.setMeasurementTypeClass(getmeasurementType(k,lineSortMap)); rStatHarmonicVoltageMPO.setMeasurementTypeClass(getmeasurementType(k,lineSortMap));
@@ -233,7 +594,7 @@ public class RStatHarmonicVoltageServiceImpl implements RStatHarmonicVoltageServ
eq("measurement_type_class", k). eq("measurement_type_class", k).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()). eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
eq("harmonic_type", dictData.getId()). eq("harmonic_type", dictData.getId()).
eq("voltageType",k1). eq("voltage_type",k1).
eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring(0, 7)); eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring(0, 7));
List<RStatHarmonicVoltageDPO> list = rStatHarmonicVoltageDPOService.list(harmonicVoltageDPOQueryWrapper); List<RStatHarmonicVoltageDPO> list = rStatHarmonicVoltageDPOService.list(harmonicVoltageDPOQueryWrapper);
double asDouble = list.stream().mapToDouble(RStatHarmonicVoltageDPO::getOverLimitMeasurementAverage).average().getAsDouble(); double asDouble = list.stream().mapToDouble(RStatHarmonicVoltageDPO::getOverLimitMeasurementAverage).average().getAsDouble();
@@ -248,11 +609,11 @@ public class RStatHarmonicVoltageServiceImpl implements RStatHarmonicVoltageServ
if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) { if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) {
//todo为0时如何设值 //todo为0时如何设值
rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAccrued(0.00); rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAverage(0.00);
} else { } else {
String value = df.format((float) rStatHarmonicVoltageMPO.getOverLimitMeasurementAccrued() / rStatOrgMPO.getEffectiveMeasurementAccrued()); String value = df.format((float) rStatHarmonicVoltageMPO.getOverLimitMeasurementAccrued() / rStatOrgMPO.getEffectiveMeasurementAccrued());
rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAccrued(Double.parseDouble(value)); rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAverage(Double.parseDouble(value));
} }
rStatHarmonicVoltageMPOList.add(rStatHarmonicVoltageMPO); rStatHarmonicVoltageMPOList.add(rStatHarmonicVoltageMPO);
}); });
@@ -277,6 +638,8 @@ public class RStatHarmonicVoltageServiceImpl implements RStatHarmonicVoltageServ
private void hanlderDayByPl(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) { private void hanlderDayByPl(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
List<RStatHarmonicVoltageDPO> rStatHarmonicVoltageDPOList = new ArrayList<>(); List<RStatHarmonicVoltageDPO> rStatHarmonicVoltageDPOList = new ArrayList<>();
Date date = DateUtil.parse(dataDate); Date date = DateUtil.parse(dataDate);
LocalDate localDate = LocalDateTimeUtil.parseDate(dataDate, DatePattern.NORM_DATE_PATTERN);
QueryWrapper<RMpPartHarmonicDetailD> queryWrapper = new QueryWrapper<>(); QueryWrapper<RMpPartHarmonicDetailD> queryWrapper = new QueryWrapper<>();
QueryWrapper<RMpSurplusHarmonicDetailD> rMpSurplusHarmonicDetailDQueryWrapper = new QueryWrapper<>(); QueryWrapper<RMpSurplusHarmonicDetailD> rMpSurplusHarmonicDetailDQueryWrapper = new QueryWrapper<>();
QueryWrapper<RStatOrgDPO> rStatOrgDPOQueryWrapper = new QueryWrapper<>(); QueryWrapper<RStatOrgDPO> rStatOrgDPOQueryWrapper = new QueryWrapper<>();
@@ -332,14 +695,14 @@ public class RStatHarmonicVoltageServiceImpl implements RStatHarmonicVoltageServ
} }
RStatHarmonicVoltageDPO rStatHarmonicVoltageDPO = new RStatHarmonicVoltageDPO(); RStatHarmonicVoltageDPO rStatHarmonicVoltageDPO = new RStatHarmonicVoltageDPO();
rStatHarmonicVoltageDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); rStatHarmonicVoltageDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatHarmonicVoltageDPO.setDataDate(date); rStatHarmonicVoltageDPO.setDataDate(localDate);
rStatHarmonicVoltageDPO.setHarmonicType(dictData.getId()); rStatHarmonicVoltageDPO.setHarmonicType(dictData.getId());
rStatHarmonicVoltageDPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()); rStatHarmonicVoltageDPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
rStatHarmonicVoltageDPO.setMeasurementTypeClass(k); rStatHarmonicVoltageDPO.setMeasurementTypeClass(k);
rStatHarmonicVoltageDPO.setVoltageType(k1); rStatHarmonicVoltageDPO.setVoltageType(k1);
rStatHarmonicVoltageDPO.setOverLimitMeasurementAverage(getSteadyStatisData(dictData,rMpPartHarmonicDetailDS,rMpSurplusHarmonicDetailDS)); rStatHarmonicVoltageDPO.setOverLimitMeasurementAverage(getSteadyStatisData(dictData,rMpPartHarmonicDetailDS,rMpSurplusHarmonicDetailDS));
if(rStatOrgDPO.getEffectiveMeasurement()==0){ if(rStatOrgDPO.getEffectiveMeasurement()==0){
rStatHarmonicVoltageDPO.setOverLimitMeasurementRatioAverage(1.00); rStatHarmonicVoltageDPO.setOverLimitMeasurementRatioAverage(0.00);
}else{ }else{
String value = df.format((float)rStatHarmonicVoltageDPO.getOverLimitMeasurementAverage()/ rStatOrgDPO.getEffectiveMeasurement()); String value = df.format((float)rStatHarmonicVoltageDPO.getOverLimitMeasurementAverage()/ rStatOrgDPO.getEffectiveMeasurement());
@@ -390,14 +753,14 @@ public class RStatHarmonicVoltageServiceImpl implements RStatHarmonicVoltageServ
} }
RStatHarmonicVoltageDPO rStatHarmonicVoltageDPO = new RStatHarmonicVoltageDPO(); RStatHarmonicVoltageDPO rStatHarmonicVoltageDPO = new RStatHarmonicVoltageDPO();
rStatHarmonicVoltageDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); rStatHarmonicVoltageDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatHarmonicVoltageDPO.setDataDate(date); rStatHarmonicVoltageDPO.setDataDate(localDate);
rStatHarmonicVoltageDPO.setHarmonicType(dictData.getId()); rStatHarmonicVoltageDPO.setHarmonicType(dictData.getId());
rStatHarmonicVoltageDPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()); rStatHarmonicVoltageDPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
rStatHarmonicVoltageDPO.setMeasurementTypeClass(getmeasurementType(k,lineSortMap)); rStatHarmonicVoltageDPO.setMeasurementTypeClass(getmeasurementType(k,lineSortMap));
rStatHarmonicVoltageDPO.setVoltageType(k1); rStatHarmonicVoltageDPO.setVoltageType(k1);
rStatHarmonicVoltageDPO.setOverLimitMeasurementAverage(getSteadyStatisData(dictData,rMpPartHarmonicDetailDS,rMpSurplusHarmonicDetailDS)); rStatHarmonicVoltageDPO.setOverLimitMeasurementAverage(getSteadyStatisData(dictData,rMpPartHarmonicDetailDS,rMpSurplusHarmonicDetailDS));
if(rStatOrgDPO.getEffectiveMeasurement()==0){ if(rStatOrgDPO.getEffectiveMeasurement()==0){
rStatHarmonicVoltageDPO.setOverLimitMeasurementRatioAverage(1.00); rStatHarmonicVoltageDPO.setOverLimitMeasurementRatioAverage(0.00);
}else{ }else{
String value = df.format((float)rStatHarmonicVoltageDPO.getOverLimitMeasurementAverage()/ rStatOrgDPO.getEffectiveMeasurement()); String value = df.format((float)rStatHarmonicVoltageDPO.getOverLimitMeasurementAverage()/ rStatOrgDPO.getEffectiveMeasurement());

View File

@@ -1,6 +1,7 @@
package com.njcn.prepare.harmonic.service.mysql.area; package com.njcn.prepare.harmonic.service.mysql.area;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.prepare.bo.CalculatedParam;
import com.njcn.prepare.harmonic.pojo.param.OrgParam; import com.njcn.prepare.harmonic.pojo.param.OrgParam;
import java.util.List; import java.util.List;
@@ -15,4 +16,12 @@ import java.util.List;
public interface RStatHarmonicOrgService { public interface RStatHarmonicOrgService {
void handler(OrgParam orgParam); void handler(OrgParam orgParam);
void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
void handleQtr(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
void handleYear(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
} }

View File

@@ -1,6 +1,7 @@
package com.njcn.prepare.harmonic.service.mysql.area; package com.njcn.prepare.harmonic.service.mysql.area;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.prepare.bo.CalculatedParam;
import java.util.List; import java.util.List;
@@ -14,4 +15,11 @@ import java.util.List;
public interface RStatHarmonicService { public interface RStatHarmonicService {
void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type); void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type);
void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
void handleQtr(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
void handleYear(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
} }

View File

@@ -2,6 +2,7 @@ package com.njcn.prepare.harmonic.service.mysql.area;
import com.github.jeffreyning.mybatisplus.service.IMppService; import com.github.jeffreyning.mybatisplus.service.IMppService;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.prepare.bo.CalculatedParam;
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicVoltageDPO; import com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicVoltageDPO;
import java.util.List; import java.util.List;
@@ -18,4 +19,9 @@ public interface RStatHarmonicVoltageService {
void handlerByPowerLevel(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type); void handlerByPowerLevel(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type);
void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
} }

View File

@@ -1,6 +1,7 @@
package com.njcn.prepare.harmonic.service.mysql.newalgorithm; package com.njcn.prepare.harmonic.service.mysql.newalgorithm;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.prepare.bo.CalculatedParam;
import java.util.List; import java.util.List;
@@ -13,4 +14,7 @@ public interface RAlarmCountService {
void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type); void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type);
void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
} }

View File

@@ -2,12 +2,12 @@ package com.njcn.prepare.harmonic.service.mysql.newalgorithm;
import com.github.jeffreyning.mybatisplus.service.IMppService; import com.github.jeffreyning.mybatisplus.service.IMppService;
import com.njcn.prepare.harmonic.pojo.po.RStatAreaAlarmCountM; import com.njcn.prepare.harmonic.pojo.po.RStatAreaAlarmCountMPO;
/** /**
* @author zbj * @author zbj
* @since 2023-06-14 * @since 2023-06-14
*/ */
public interface RStatAreaAlarmCountMPOService extends IMppService<RStatAreaAlarmCountM> { public interface RStatAreaAlarmCountMPOService extends IMppService<RStatAreaAlarmCountMPO> {
} }

View File

@@ -1,6 +1,7 @@
package com.njcn.prepare.harmonic.service.mysql.newalgorithm; package com.njcn.prepare.harmonic.service.mysql.newalgorithm;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.prepare.bo.CalculatedParam;
import java.util.List; import java.util.List;
@@ -13,4 +14,11 @@ public interface RStatEventOrgService {
void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type); void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type);
void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
void handleQtr(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
void handleYear(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
} }

View File

@@ -1,6 +1,7 @@
package com.njcn.prepare.harmonic.service.mysql.newalgorithm; package com.njcn.prepare.harmonic.service.mysql.newalgorithm;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.prepare.bo.CalculatedParam;
import java.util.List; import java.util.List;
@@ -13,4 +14,11 @@ public interface RStatEventService {
void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type); void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type);
void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
void handleQtr(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
void handleYear(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
} }

View File

@@ -1,6 +1,7 @@
package com.njcn.prepare.harmonic.service.mysql.newalgorithm; package com.njcn.prepare.harmonic.service.mysql.newalgorithm;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.prepare.bo.CalculatedParam;
import java.util.List; import java.util.List;
@@ -13,4 +14,7 @@ public interface RStatEventVoltageService {
void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type); void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type);
void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
} }

View File

@@ -1,5 +1,7 @@
package com.njcn.prepare.harmonic.service.mysql.newalgorithm; package com.njcn.prepare.harmonic.service.mysql.newalgorithm;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.prepare.bo.CalculatedParam;
import com.njcn.user.pojo.po.Dept; import com.njcn.user.pojo.po.Dept;
import java.util.List; import java.util.List;
@@ -13,4 +15,12 @@ import java.util.List;
*/ */
public interface RStatLoadTypeService { public interface RStatLoadTypeService {
void handler(List<Dept> deptList, String dataDate, Integer type); void handler(List<Dept> deptList, String dataDate, Integer type);
void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
void handleQtr(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
void handleYear(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
} }

View File

@@ -1,11 +1,15 @@
package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl; package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO; import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
import com.njcn.device.pms.pojo.po.RMpMonitorAlarmCountM; import com.njcn.device.pms.pojo.po.RStatAreaAlarmCountM;
import com.njcn.harmonic.pojo.po.*; import com.njcn.harmonic.pojo.po.*;
import com.njcn.prepare.bo.CalculatedParam;
import com.njcn.prepare.harmonic.mapper.mysql.area.RMpMonitorAlarmCountMMapper; import com.njcn.prepare.harmonic.mapper.mysql.area.RMpMonitorAlarmCountMMapper;
import com.njcn.prepare.harmonic.mapper.mysql.area.RMpTargetWarnDMapper; import com.njcn.prepare.harmonic.mapper.mysql.area.RMpTargetWarnDMapper;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgMMapper; import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgMMapper;
@@ -54,35 +58,19 @@ public class RAlarmCountServiceImpl implements RAlarmCountService {
private final RStatOrgMMapper rStatOrgMMapper; private final RStatOrgMMapper rStatOrgMMapper;
@Override
public void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
switch (type) {
case 3:
this.rAlarmCountMHandler(data, dataDate, type);
break;
case 4:
this.rAlarmCountWHandler(data, dataDate, type);
break;
default:
break;
}
}
//周表 @Override
public void rAlarmCountWHandler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) { public void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<RStatZwAlarmCountWPO> rStatZwAlarmCountWPOS = new ArrayList<>(); List<RStatZwAlarmCountWPO> rStatZwAlarmCountWPOS = new ArrayList<>();
List<RStatPwAlarmCountWPO> rStatPwAlarmCountWPOS = new ArrayList<>(); List<RStatPwAlarmCountWPO> rStatPwAlarmCountWPOS = new ArrayList<>();
//获取日期 DateTime begin = DateUtil.beginOfWeek(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
Date localDate = DateUtil.parse(dataDate); DateTime end = DateUtil.endOfWeek(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
//获取当前周的起始与结束日期
LocalDate date = LocalDate.parse(dataDate, DateTimeFormatter.ISO_DATE);
LocalDate startOfWeek = date.with(DayOfWeek.MONDAY);
LocalDate endOfWeek = date.with(DayOfWeek.SUNDAY);
QueryWrapper<RMpTargetWarnDPO> rMpTargetWarnDPOQueryWrapper = new QueryWrapper<>(); QueryWrapper<RMpTargetWarnDPO> rMpTargetWarnDPOQueryWrapper = new QueryWrapper<>();
data.forEach(deptGetChildrenMoreDTO -> { calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
/*主网*/ /*主网*/
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) { if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
@@ -94,9 +82,10 @@ public class RAlarmCountServiceImpl implements RAlarmCountService {
rMpTargetWarnDPOQueryWrapper. rMpTargetWarnDPOQueryWrapper.
in("measurement_point_id", collect1). in("measurement_point_id", collect1).
eq("is_effective", "1"). eq("is_effective", "1").
between("data_date", startOfWeek, endOfWeek); between("data_date", begin, end);
List<RMpTargetWarnDPO> rMpTargetWarnDPOList = rMpTargetWarnDMapper.selectList(rMpTargetWarnDPOQueryWrapper); List<RMpTargetWarnDPO> rMpTargetWarnDPOList = rMpTargetWarnDMapper.selectList(rMpTargetWarnDPOQueryWrapper);
List<String> collect = rMpTargetWarnDPOList.stream().map(RMpTargetWarnDPO::getMeasurementPointId).distinct().collect(Collectors.toList());
//告警4次及以上监测点数量 //告警4次及以上监测点数量
long count = rMpTargetWarnDPOList.stream() long count = rMpTargetWarnDPOList.stream()
@@ -125,7 +114,7 @@ public class RAlarmCountServiceImpl implements RAlarmCountService {
RStatZwAlarmCountWPO rStatZwAlarmCountWPO = new RStatZwAlarmCountWPO(); RStatZwAlarmCountWPO rStatZwAlarmCountWPO = new RStatZwAlarmCountWPO();
rStatZwAlarmCountWPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); rStatZwAlarmCountWPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatZwAlarmCountWPO.setDataDate(localDate); rStatZwAlarmCountWPO.setDataDate(localDate);
rStatZwAlarmCountWPO.setMonitorEffectiveCount(rMpTargetWarnDPOList.size()); rStatZwAlarmCountWPO.setMonitorEffectiveCount(collect.size());
rStatZwAlarmCountWPO.setWarnMonitorCount(Integer.valueOf(count + "")); rStatZwAlarmCountWPO.setWarnMonitorCount(Integer.valueOf(count + ""));
rStatZwAlarmCountWPO.setMonitorGradeCount(top30PercentCount); rStatZwAlarmCountWPO.setMonitorGradeCount(top30PercentCount);
rStatZwAlarmCountWPOS.add(rStatZwAlarmCountWPO); rStatZwAlarmCountWPOS.add(rStatZwAlarmCountWPO);
@@ -141,17 +130,18 @@ public class RAlarmCountServiceImpl implements RAlarmCountService {
rMpTargetWarnDPOQueryWrapper.clear(); rMpTargetWarnDPOQueryWrapper.clear();
rMpTargetWarnDPOQueryWrapper. rMpTargetWarnDPOQueryWrapper.
in("measurement_point_id", collect1). in("measurement_point_id", collect1).
between("data_date", startOfWeek, endOfWeek); between("data_date", begin, end);
List<RMpTargetWarnDPO> rMpTargetWarnDPOList = rMpTargetWarnDMapper.selectList(rMpTargetWarnDPOQueryWrapper); List<RMpTargetWarnDPO> rMpTargetWarnDPOList = rMpTargetWarnDMapper.selectList(rMpTargetWarnDPOQueryWrapper);
List<String> collect = rMpTargetWarnDPOList.stream().map(RMpTargetWarnDPO::getMeasurementPointId).distinct().collect(Collectors.toList());
//获取告警监测点数 //获取告警监测点数
long count = rMpTargetWarnDPOList.stream().filter(alarm -> alarm.getIsWarn() == 1).count(); long count = rMpTargetWarnDPOList.stream().filter(alarm -> alarm.getIsWarn() == 1).distinct().count();
RStatPwAlarmCountWPO rStatPwAlarmCountWPO = new RStatPwAlarmCountWPO(); RStatPwAlarmCountWPO rStatPwAlarmCountWPO = new RStatPwAlarmCountWPO();
rStatPwAlarmCountWPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); rStatPwAlarmCountWPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatPwAlarmCountWPO.setDataDate(localDate); rStatPwAlarmCountWPO.setDataDate(localDate);
rStatPwAlarmCountWPO.setOnlineMonitorCount(rMpTargetWarnDPOList.size()); rStatPwAlarmCountWPO.setOnlineMonitorCount(collect.size());
rStatPwAlarmCountWPO.setAlarmMonitorCount(Integer.valueOf(count + "")); rStatPwAlarmCountWPO.setAlarmMonitorCount(Integer.valueOf(count + ""));
rStatPwAlarmCountWPOS.add(rStatPwAlarmCountWPO); rStatPwAlarmCountWPOS.add(rStatPwAlarmCountWPO);
@@ -161,20 +151,22 @@ public class RAlarmCountServiceImpl implements RAlarmCountService {
if (!CollectionUtils.isEmpty(rStatZwAlarmCountWPOS)) { if (!CollectionUtils.isEmpty(rStatZwAlarmCountWPOS)) {
rStatZwAlarmCountWPOService.saveOrUpdateBatchByMultiId(rStatZwAlarmCountWPOS, 500); rStatZwAlarmCountWPOService.saveOrUpdateBatchByMultiId(rStatZwAlarmCountWPOS, 500);
} }
if (!CollectionUtils.isEmpty(rStatZwAlarmCountWPOS)) { if (!CollectionUtils.isEmpty(rStatPwAlarmCountWPOS)) {
rStatPwAlarmCountWPOService.saveOrUpdateBatchByMultiId(rStatPwAlarmCountWPOS, 500); rStatPwAlarmCountWPOService.saveOrUpdateBatchByMultiId(rStatPwAlarmCountWPOS, 500);
} }
} }
//月表 @Override
public void rAlarmCountMHandler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) { public void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<RStatAreaAlarmCountMPO> rStatAreaAlarmCountMPOS = new ArrayList<>(); List<RStatAreaAlarmCountMPO> rStatAreaAlarmCountMPOS = new ArrayList<>();
List<RStatAreaAlarmCountM> result = new ArrayList<>();
DecimalFormat df = new DecimalFormat("0.00"); DecimalFormat df = new DecimalFormat("0.00");
//获取日期 //获取日期
Date localDate = DateUtil.parse(dataDate); DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
DateTime end = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
/*获取数据类型*/ /*获取数据类型*/
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData(); List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
@@ -184,47 +176,46 @@ public class RAlarmCountServiceImpl implements RAlarmCountService {
//org表 //org表
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>(); QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
data.forEach(deptGetChildrenMoreDTO -> { calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
/*主网*/ /*主网*/
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) { if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList(); List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
List<String> collect1 = lineBaseList.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); List<String> collect1 = lineBaseList.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
//日表 // //日表
QueryWrapper<RMpTargetWarnDPO> rMpTargetWarnDPOQueryWrapper = new QueryWrapper<>(); // QueryWrapper<RMpTargetWarnDPO> rMpTargetWarnDPOQueryWrapper = new QueryWrapper<>();
rMpTargetWarnDPOQueryWrapper.clear(); // rMpTargetWarnDPOQueryWrapper.clear();
rMpTargetWarnDPOQueryWrapper. // rMpTargetWarnDPOQueryWrapper.
in("measurement_point_id", collect1). // in("measurement_point_id", collect1).
eq("DATE_FORMAT( data_date ,'%Y-%m')", dataDate.substring(0, 7)); // between("data_date", begin, end);
//
List<RMpTargetWarnDPO> rMpTargetWarnDPOList = rMpTargetWarnDMapper.selectList(rMpTargetWarnDPOQueryWrapper); // List<RMpTargetWarnDPO> rMpTargetWarnDPOList = rMpTargetWarnDMapper.selectList(rMpTargetWarnDPOQueryWrapper);
//月表 //月表
rMpMonitorAlarmCountMQueryWrapper.clear(); rMpMonitorAlarmCountMQueryWrapper.clear();
rMpMonitorAlarmCountMQueryWrapper. rMpMonitorAlarmCountMQueryWrapper.
in("measurement_point_id", collect1). in("measurement_point_id", collect1).
eq("DATE_FORMAT( data_date ,'%Y-%m')", dataDate.substring(0, 7)). between("data_date", begin, end);
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
List<RMpMonitorAlarmCountMPO> rMpMonitorAlarmCountMPOS = rMpMonitorAlarmCountMMapper.selectList(rMpMonitorAlarmCountMQueryWrapper); List<RMpMonitorAlarmCountMPO> rMpMonitorAlarmCountMPOS = rMpMonitorAlarmCountMMapper.selectList(rMpMonitorAlarmCountMQueryWrapper);
//org表 //org表
rStatOrgMPOQueryWrapper.clear(); rStatOrgMPOQueryWrapper.clear();
rStatOrgMPOQueryWrapper.select("effective_measurement_accrued"). rStatOrgMPOQueryWrapper.select("sum(effective_measurement_accrued) effective_measurement_accrued").
eq("org_no", deptGetChildrenMoreDTO.getUnitId()). eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("DATE_FORMAT( data_date ,'%Y-%m')", dataDate.substring(0, 7)). between("data_date", begin, end).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()); eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper); RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper);
//所有告警次数集合 //所有告警次数集合
Map<String, Long> resultCount = new HashMap<>(); Map<String, Long> resultCount = new HashMap<>();
long vdevAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getVdevAlarmInfo() == 1).count(); long vdevAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getVdevAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
long freqAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getFreqAlarmInfo() == 1).count(); long freqAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getFreqAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
long unbalanceAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getUnbalanceAlarmInfo() == 1).count(); long unbalanceAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getUnbalanceAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
long vAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getVAlarmInfo() == 1).count(); long vAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getVAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
long flickerAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getFlickerAlarmInfo() == 1).count(); long flickerAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getFlickerAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
long sagAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getSagAlarmInfo() == 1).count(); long sagAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getSagAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
long interruptAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getInterruptAlarmInfo() == 1).count(); long interruptAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getInterruptAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
if (vdevAlarmInfoCount != 0){ if (vdevAlarmInfoCount != 0){
resultCount.put("vdevAlarmInfo",vdevAlarmInfoCount); resultCount.put("vdevAlarmInfo",vdevAlarmInfoCount);
} }
@@ -249,24 +240,24 @@ public class RAlarmCountServiceImpl implements RAlarmCountService {
//获取电压暂降告警次数 //获取电压暂降告警次数
long sagCount = rMpTargetWarnDPOList.stream().filter(alarm -> alarm.getIsSagWarn() == 1).count(); long sagCount = rMpMonitorAlarmCountMPOS.stream().filter(alarm -> alarm.getSagAlarmInfo() == 1).count();
//获取电压暂降监测点数(id去重) //获取电压暂降监测点数(id去重)
long sagMCount = rMpTargetWarnDPOList.stream().filter(obj -> obj.getIsSagWarn() == 1).map(obj -> obj.getMeasurementPointId()).distinct().count(); long sagMCount = rMpMonitorAlarmCountMPOS.stream().filter(obj -> obj.getSagAlarmInfo() == 1).map(obj -> obj.getMeasurementPointId()).distinct().count();
//获取短时中断告警次数 //获取短时中断告警次数
long iaaCount = rMpTargetWarnDPOList.stream().filter(alarm -> alarm.getIsInterruptWarn() == 1).count(); long iaaCount = rMpMonitorAlarmCountMPOS.stream().filter(alarm -> alarm.getInterruptAlarmInfo() == 1).count();
//获取短时中断监测点数(id去重) //获取短时中断监测点数(id去重)
long iaaMCount = rMpTargetWarnDPOList.stream().filter(obj -> obj.getIsInterruptWarn() == 1).map(obj -> obj.getMeasurementPointId()).distinct().count(); long iaaMCount = rMpMonitorAlarmCountMPOS.stream().filter(obj -> obj.getInterruptAlarmInfo() == 1).map(obj -> obj.getMeasurementPointId()).distinct().count();
//获取在线监测点数 //获取在线监测点数
int size = rMpTargetWarnDPOList.size(); int size = rStatOrgMPO.getEffectiveMeasurementAccrued();
//获取稳态告警监测点数 //获取稳态告警监测点数
long wtCount = rMpMonitorAlarmCountMPOS.stream() long wtCount = rMpMonitorAlarmCountMPOS.stream()
.filter(obj -> obj.getVdevAlarmInfo() == 1 || obj.getFreqAlarmInfo() == 1 || obj.getUnbalanceAlarmInfo() == 1 .filter(obj -> obj.getVdevAlarmInfo() == 1 || obj.getFreqAlarmInfo() == 1 || obj.getUnbalanceAlarmInfo() == 1
|| obj.getVAlarmInfo() == 1 || obj.getFlickerAlarmInfo() == 1).count(); || obj.getVAlarmInfo() == 1 || obj.getFlickerAlarmInfo() == 1).map(obj -> obj.getMeasurementPointId()).distinct().count();
//获取暂态告警监测点数 //获取暂态告警监测点数
long ztCount = rMpMonitorAlarmCountMPOS.stream() long ztCount = rMpMonitorAlarmCountMPOS.stream()
.filter(obj -> obj.getSagAlarmInfo() == 1 || obj.getInterruptAlarmInfo() == 1).count(); .filter(obj -> obj.getSagAlarmInfo() == 1 || obj.getInterruptAlarmInfo() == 1).map(obj -> obj.getMeasurementPointId()).distinct().count();
RStatAreaAlarmCountMPO rStatAreaAlarmCountMPO = new RStatAreaAlarmCountMPO(); RStatAreaAlarmCountMPO rStatAreaAlarmCountMPO = new RStatAreaAlarmCountMPO();
rStatAreaAlarmCountMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId()); rStatAreaAlarmCountMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
@@ -305,53 +296,53 @@ public class RAlarmCountServiceImpl implements RAlarmCountService {
} }
if (Objects.isNull(rStatOrgMPO)) { if (Objects.isNull(rStatOrgMPO)) {
rStatAreaAlarmCountMPO.setVdevAlarmRatio(1.00f); rStatAreaAlarmCountMPO.setVdevAlarmRatio(0.00f);
rStatAreaAlarmCountMPO.setFreqAlarmRatio(1.00f); rStatAreaAlarmCountMPO.setFreqAlarmRatio(0.00f);
rStatAreaAlarmCountMPO.setUnbalanceAlarmRatio(1.00f); rStatAreaAlarmCountMPO.setUnbalanceAlarmRatio(0.00f);
rStatAreaAlarmCountMPO.setVAlarmRatio(1.00f); rStatAreaAlarmCountMPO.setVAlarmRatio(0.00f);
rStatAreaAlarmCountMPO.setFlickerAlarmRatio(1.00f); rStatAreaAlarmCountMPO.setFlickerAlarmRatio(0.00f);
} else { } else {
if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) { if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) {
rStatAreaAlarmCountMPO.setVdevAlarmRatio(1.00f); rStatAreaAlarmCountMPO.setVdevAlarmRatio(0.00f);
rStatAreaAlarmCountMPO.setFreqAlarmRatio(1.00f); rStatAreaAlarmCountMPO.setFreqAlarmRatio(0.00f);
rStatAreaAlarmCountMPO.setUnbalanceAlarmRatio(1.00f); rStatAreaAlarmCountMPO.setUnbalanceAlarmRatio(0.00f);
rStatAreaAlarmCountMPO.setVAlarmRatio(1.00f); rStatAreaAlarmCountMPO.setVAlarmRatio(0.00f);
rStatAreaAlarmCountMPO.setFlickerAlarmRatio(1.00f); rStatAreaAlarmCountMPO.setFlickerAlarmRatio(0.00f);
} else { } else {
//电压偏差告警占比 //电压偏差告警占比
if (resultCount.containsKey("vdevAlarmInfo")) { if (resultCount.containsKey("vdevAlarmInfo")) {
String value = df.format(resultCount.get("vdevAlarmInfo") / rStatOrgMPO.getEffectiveMeasurementAccrued()); String value = df.format(resultCount.get("vdevAlarmInfo") / rStatOrgMPO.getEffectiveMeasurementAccrued());
rStatAreaAlarmCountMPO.setVdevAlarmRatio(Float.parseFloat(value)); rStatAreaAlarmCountMPO.setVdevAlarmRatio(Float.parseFloat(value));
} else { } else {
rStatAreaAlarmCountMPO.setVdevAlarmRatio(1.00f); rStatAreaAlarmCountMPO.setVdevAlarmRatio(0.00f);
} }
//频率偏差告警占比 //频率偏差告警占比
if (resultCount.containsKey("freqAlarmInfo")) { if (resultCount.containsKey("freqAlarmInfo")) {
String value = df.format(resultCount.get("freqAlarmInfo") / rStatOrgMPO.getEffectiveMeasurementAccrued()); String value = df.format(resultCount.get("freqAlarmInfo") / rStatOrgMPO.getEffectiveMeasurementAccrued());
rStatAreaAlarmCountMPO.setFreqAlarmRatio(Float.parseFloat(value)); rStatAreaAlarmCountMPO.setFreqAlarmRatio(Float.parseFloat(value));
} else { } else {
rStatAreaAlarmCountMPO.setFreqAlarmRatio(1.00f); rStatAreaAlarmCountMPO.setFreqAlarmRatio(0.00f);
} }
//三项电压不平衡度告警占比 //三项电压不平衡度告警占比
if (resultCount.containsKey("unbalanceAlarmInfo")) { if (resultCount.containsKey("unbalanceAlarmInfo")) {
String value = df.format(resultCount.get("unbalanceAlarmInfo") / rStatOrgMPO.getEffectiveMeasurementAccrued()); String value = df.format(resultCount.get("unbalanceAlarmInfo") / rStatOrgMPO.getEffectiveMeasurementAccrued());
rStatAreaAlarmCountMPO.setUnbalanceAlarmRatio(Float.parseFloat(value)); rStatAreaAlarmCountMPO.setUnbalanceAlarmRatio(Float.parseFloat(value));
} else { } else {
rStatAreaAlarmCountMPO.setUnbalanceAlarmRatio(1.00f); rStatAreaAlarmCountMPO.setUnbalanceAlarmRatio(0.00f);
} }
//谐波电压告警占比 //谐波电压告警占比
if (resultCount.containsKey("vAlarmInfo")) { if (resultCount.containsKey("vAlarmInfo")) {
String value = df.format(resultCount.get("vAlarmInfo") / rStatOrgMPO.getEffectiveMeasurementAccrued()); String value = df.format(resultCount.get("vAlarmInfo") / rStatOrgMPO.getEffectiveMeasurementAccrued());
rStatAreaAlarmCountMPO.setVAlarmRatio(Float.parseFloat(value)); rStatAreaAlarmCountMPO.setVAlarmRatio(Float.parseFloat(value));
} else { } else {
rStatAreaAlarmCountMPO.setVAlarmRatio(1.00f); rStatAreaAlarmCountMPO.setVAlarmRatio(0.00f);
} }
//闪変告警占比 //闪変告警占比
if (resultCount.containsKey("flickerAlarmInfo")) { if (resultCount.containsKey("flickerAlarmInfo")) {
String value = df.format(resultCount.get("flickerAlarmInfo") / rStatOrgMPO.getEffectiveMeasurementAccrued()); String value = df.format(resultCount.get("flickerAlarmInfo") / rStatOrgMPO.getEffectiveMeasurementAccrued());
rStatAreaAlarmCountMPO.setFlickerAlarmRatio(Float.parseFloat(value)); rStatAreaAlarmCountMPO.setFlickerAlarmRatio(Float.parseFloat(value));
} else { } else {
rStatAreaAlarmCountMPO.setFlickerAlarmRatio(1.00f); rStatAreaAlarmCountMPO.setFlickerAlarmRatio(0.00f);
} }
} }
} }
@@ -364,40 +355,39 @@ public class RAlarmCountServiceImpl implements RAlarmCountService {
List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds(); List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
List<String> collect1 = pwMonitorIds.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); List<String> collect1 = pwMonitorIds.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
//日表 // //日表
QueryWrapper<RMpTargetWarnDPO> rMpTargetWarnDPOQueryWrapper = new QueryWrapper<>(); // QueryWrapper<RMpTargetWarnDPO> rMpTargetWarnDPOQueryWrapper = new QueryWrapper<>();
rMpTargetWarnDPOQueryWrapper.clear(); // rMpTargetWarnDPOQueryWrapper.clear();
rMpTargetWarnDPOQueryWrapper. // rMpTargetWarnDPOQueryWrapper.
in("measurement_point_id", collect1). // in("measurement_point_id", collect1).
eq("DATE_FORMAT( data_date ,'%Y-%m')", dataDate.substring(0, 7)); // between("data_date", begin, end);
//
List<RMpTargetWarnDPO> rMpTargetWarnDPOList = rMpTargetWarnDMapper.selectList(rMpTargetWarnDPOQueryWrapper); // List<RMpTargetWarnDPO> rMpTargetWarnDPOList = rMpTargetWarnDMapper.selectList(rMpTargetWarnDPOQueryWrapper);
//月表 //月表
rMpMonitorAlarmCountMQueryWrapper.clear(); rMpMonitorAlarmCountMQueryWrapper.clear();
rMpMonitorAlarmCountMQueryWrapper. rMpMonitorAlarmCountMQueryWrapper.
in("measurement_point_id", collect1). in("measurement_point_id", collect1).
eq("DATE_FORMAT( data_date ,'%Y-%m')", dataDate.substring(0, 7)). between("data_date", begin, end);
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
List<RMpMonitorAlarmCountMPO> rMpMonitorAlarmCountMPOS = rMpMonitorAlarmCountMMapper.selectList(rMpMonitorAlarmCountMQueryWrapper); List<RMpMonitorAlarmCountMPO> rMpMonitorAlarmCountMPOS = rMpMonitorAlarmCountMMapper.selectList(rMpMonitorAlarmCountMQueryWrapper);
//org表 //org表
rStatOrgMPOQueryWrapper.clear(); rStatOrgMPOQueryWrapper.clear();
rStatOrgMPOQueryWrapper.select("effective_measurement_accrued"). rStatOrgMPOQueryWrapper.select("sum(effective_measurement_accrued) effective_measurement_accrued").
eq("org_no", deptGetChildrenMoreDTO.getUnitId()). eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("DATE_FORMAT( data_date ,'%Y-%m')", dataDate.substring(0, 7)). between("data_date", begin, end).
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()); eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper); RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper);
//所有告警次数集合 //所有告警次数集合
Map<String, Long> resultCount = new HashMap<>(); Map<String, Long> resultCount = new HashMap<>();
long vdevAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getVdevAlarmInfo() == 1).count(); long vdevAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getVdevAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
long freqAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getFreqAlarmInfo() == 1).count(); long freqAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getFreqAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
long unbalanceAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getUnbalanceAlarmInfo() == 1).count(); long unbalanceAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getUnbalanceAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
long vAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getVAlarmInfo() == 1).count(); long vAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getVAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
long flickerAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getFlickerAlarmInfo() == 1).count(); long flickerAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getFlickerAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
long sagAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getSagAlarmInfo() == 1).count(); long sagAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getSagAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
long interruptAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getInterruptAlarmInfo() == 1).count(); long interruptAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getInterruptAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
if (vdevAlarmInfoCount != 0){ if (vdevAlarmInfoCount != 0){
resultCount.put("vdevAlarmInfo",vdevAlarmInfoCount); resultCount.put("vdevAlarmInfo",vdevAlarmInfoCount);
} }
@@ -421,17 +411,17 @@ public class RAlarmCountServiceImpl implements RAlarmCountService {
} }
//获取电压暂降告警次数 //获取电压暂降告警次数
long sagCount = rMpTargetWarnDPOList.stream().filter(alarm -> alarm.getIsSagWarn() == 1).count(); long sagCount = rMpMonitorAlarmCountMPOS.stream().filter(alarm -> alarm.getSagAlarmInfo() == 1).count();
//获取电压暂降监测点数(id去重) //获取电压暂降监测点数(id去重)
long sagMCount = rMpTargetWarnDPOList.stream().filter(obj -> obj.getIsSagWarn() == 1).map(obj -> obj.getMeasurementPointId()).distinct().count(); long sagMCount = rMpMonitorAlarmCountMPOS.stream().filter(obj -> obj.getSagAlarmInfo() == 1).map(obj -> obj.getMeasurementPointId()).distinct().count();
//获取短时中断告警次数 //获取短时中断告警次数
long iaaCount = rMpTargetWarnDPOList.stream().filter(alarm -> alarm.getIsInterruptWarn() == 1).count(); long iaaCount = rMpMonitorAlarmCountMPOS.stream().filter(alarm -> alarm.getInterruptAlarmInfo() == 1).count();
//获取短时中断监测点数(id去重) //获取短时中断监测点数(id去重)
long iaaMCount = rMpTargetWarnDPOList.stream().filter(obj -> obj.getIsInterruptWarn() == 1).map(obj -> obj.getMeasurementPointId()).distinct().count(); long iaaMCount = rMpMonitorAlarmCountMPOS.stream().filter(obj -> obj.getInterruptAlarmInfo() == 1).map(obj -> obj.getMeasurementPointId()).distinct().count();
//获取在线监测点数 //获取在线监测点数
int size = rMpTargetWarnDPOList.size(); int size = rStatOrgMPO.getEffectiveMeasurementAccrued();
//获取稳态告警监测点数 //获取稳态告警监测点数
long wtCount = rMpMonitorAlarmCountMPOS.stream() long wtCount = rMpMonitorAlarmCountMPOS.stream()
.filter(obj -> obj.getVdevAlarmInfo() == 1 || obj.getFreqAlarmInfo() == 1 || obj.getUnbalanceAlarmInfo() == 1 .filter(obj -> obj.getVdevAlarmInfo() == 1 || obj.getFreqAlarmInfo() == 1 || obj.getUnbalanceAlarmInfo() == 1
@@ -681,16 +671,130 @@ public class RAlarmCountServiceImpl implements RAlarmCountService {
zwResult.addAll(pwResult); zwResult.addAll(pwResult);
//拷贝
for (RStatAreaAlarmCountMPO po : zwResult) {
RStatAreaAlarmCountM m = new RStatAreaAlarmCountM();
BeanUtils.copyProperties(po,m);
result.add(m);
}
if (!CollectionUtils.isEmpty(result)) { if (!CollectionUtils.isEmpty(zwResult)) {
rStatAreaAlarmCountMPOService.saveOrUpdateBatchByMultiId(result, 500); rStatAreaAlarmCountMPOService.saveOrUpdateBatchByMultiId(zwResult, 500);
} }
} }
}
@Override
public void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
switch (type) {
case 3:
this.rAlarmCountMHandler(data, dataDate, type);
break;
case 4:
this.rAlarmCountWHandler(data, dataDate, type);
break;
default:
break;
}
}
//周表
public void rAlarmCountWHandler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
// List<RStatZwAlarmCountWPO> rStatZwAlarmCountWPOS = new ArrayList<>();
// List<RStatPwAlarmCountWPO> rStatPwAlarmCountWPOS = new ArrayList<>();
// //获取日期
// Date localDate = DateUtil.parse(dataDate);
//
// //获取当前周的起始与结束日期
// LocalDate date = LocalDate.parse(dataDate, DateTimeFormatter.ISO_DATE);
// LocalDate startOfWeek = date.with(DayOfWeek.MONDAY);
// LocalDate endOfWeek = date.with(DayOfWeek.SUNDAY);
//
// QueryWrapper<RMpTargetWarnDPO> rMpTargetWarnDPOQueryWrapper = new QueryWrapper<>();
//
// data.forEach(deptGetChildrenMoreDTO -> {
//
// /*主网*/
// if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
// List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
//
// List<String> collect1 = lineBaseList.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
//
// rMpTargetWarnDPOQueryWrapper.clear();
// rMpTargetWarnDPOQueryWrapper.
// in("measurement_point_id", collect1).
// eq("is_effective", "1").
// between("data_date", startOfWeek, endOfWeek);
//
// List<RMpTargetWarnDPO> rMpTargetWarnDPOList = rMpTargetWarnDMapper.selectList(rMpTargetWarnDPOQueryWrapper);
//
// //告警4次及以上监测点数量
// long count = rMpTargetWarnDPOList.stream()
// .filter(obj -> obj.getIsWarn() == 1)
// .collect(Collectors.groupingBy(RMpTargetWarnDPO::getMeasurementPointId, Collectors.counting()))
// .entrySet().stream()
// .filter(e -> e.getValue() >= 4)
// .count();
//
// // 使用 Stream API 进行流式处理,选择 status 为 1 的告警,按照 id 进行分组并统计个数
// Map<String, Double> avgStatusOneCountByAlarmId = rMpTargetWarnDPOList.stream()
// .filter(alarm -> alarm.getIsWarn() == 1)
// .collect(Collectors.groupingBy(RMpTargetWarnDPO::getMeasurementPointId, Collectors.counting()))
// .entrySet().stream()
// .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue() / 7.0));
//
// // 对 map 中的 value 进行从大到小的排序,并且排除 value 为 0 的元素
// Map<String, Double> sortedAvgStatusOneCountByAlarmId = avgStatusOneCountByAlarmId.entrySet().stream()
// .filter(e -> e.getValue() != 0)
// .sorted(Map.Entry.<String, Double>comparingByValue(Comparator.reverseOrder()))
// .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, LinkedHashMap::new));
//
// // 获取前 30% 的告警 id 数量
// int top30PercentCount = (int) (sortedAvgStatusOneCountByAlarmId.size() * 0.3) + 1;
//
// RStatZwAlarmCountWPO rStatZwAlarmCountWPO = new RStatZwAlarmCountWPO();
// rStatZwAlarmCountWPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
// rStatZwAlarmCountWPO.setDataDate(localDate);
// rStatZwAlarmCountWPO.setMonitorEffectiveCount(rMpTargetWarnDPOList.size());
// rStatZwAlarmCountWPO.setWarnMonitorCount(Integer.valueOf(count + ""));
// rStatZwAlarmCountWPO.setMonitorGradeCount(top30PercentCount);
// rStatZwAlarmCountWPOS.add(rStatZwAlarmCountWPO);
//
// }
//
//
// /*配网*/
// if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())) {
// List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
// List<String> collect1 = pwMonitorIds.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
//
// rMpTargetWarnDPOQueryWrapper.clear();
// rMpTargetWarnDPOQueryWrapper.
// in("measurement_point_id", collect1).
// between("data_date", startOfWeek, endOfWeek);
//
// List<RMpTargetWarnDPO> rMpTargetWarnDPOList = rMpTargetWarnDMapper.selectList(rMpTargetWarnDPOQueryWrapper);
//
// //获取告警监测点数
// long count = rMpTargetWarnDPOList.stream().filter(alarm -> alarm.getIsWarn() == 1).count();
//
// RStatPwAlarmCountWPO rStatPwAlarmCountWPO = new RStatPwAlarmCountWPO();
// rStatPwAlarmCountWPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
// rStatPwAlarmCountWPO.setDataDate(localDate);
// rStatPwAlarmCountWPO.setOnlineMonitorCount(rMpTargetWarnDPOList.size());
// rStatPwAlarmCountWPO.setAlarmMonitorCount(Integer.valueOf(count + ""));
//
// rStatPwAlarmCountWPOS.add(rStatPwAlarmCountWPO);
// }
//
// });
// if (!CollectionUtils.isEmpty(rStatZwAlarmCountWPOS)) {
// rStatZwAlarmCountWPOService.saveOrUpdateBatchByMultiId(rStatZwAlarmCountWPOS, 500);
// }
// if (!CollectionUtils.isEmpty(rStatZwAlarmCountWPOS)) {
// rStatPwAlarmCountWPOService.saveOrUpdateBatchByMultiId(rStatPwAlarmCountWPOS, 500);
// }
}
//月表
public void rAlarmCountMHandler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
} }
} }

View File

@@ -1,13 +1,10 @@
package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl; package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.device.pms.pojo.po.RStatAreaAlarmCountM;
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatAreaAlarmCountMPOMapper; import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatAreaAlarmCountMPOMapper;
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatZwAlarmCountWPOMapper;
import com.njcn.prepare.harmonic.pojo.po.RStatAreaAlarmCountM;
import com.njcn.prepare.harmonic.pojo.po.RStatAreaAlarmCountMPO; import com.njcn.prepare.harmonic.pojo.po.RStatAreaAlarmCountMPO;
import com.njcn.prepare.harmonic.pojo.po.RStatZwAlarmCountWPO;
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatAreaAlarmCountMPOService; import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatAreaAlarmCountMPOService;
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatZwAlarmCountWPOService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -21,5 +18,5 @@ import org.springframework.stereotype.Service;
*/ */
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class RStatAreaAlarmCountMPOServiceImpl extends MppServiceImpl<RStatAreaAlarmCountMPOMapper, RStatAreaAlarmCountM> implements RStatAreaAlarmCountMPOService { public class RStatAreaAlarmCountMPOServiceImpl extends MppServiceImpl<RStatAreaAlarmCountMPOMapper, RStatAreaAlarmCountMPO> implements RStatAreaAlarmCountMPOService {
} }

View File

@@ -1,6 +1,9 @@
package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl; package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO; import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
@@ -8,6 +11,7 @@ import com.njcn.harmonic.pojo.po.RMpEventDetailDPO;
import com.njcn.harmonic.pojo.po.RMpEventDetailMPO; import com.njcn.harmonic.pojo.po.RMpEventDetailMPO;
import com.njcn.harmonic.pojo.po.RStatOrgDPO; import com.njcn.harmonic.pojo.po.RStatOrgDPO;
import com.njcn.harmonic.pojo.po.RStatOrgMPO; import com.njcn.harmonic.pojo.po.RStatOrgMPO;
import com.njcn.prepare.bo.CalculatedParam;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgDMapper; import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgDMapper;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgMMapper; import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgMMapper;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgQMapper; import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgQMapper;
@@ -15,6 +19,9 @@ import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgYMapper;
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailDMapper; import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailDMapper;
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailMMapper; import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailMMapper;
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.*; import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.*;
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicDPO;
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatOrgQPO;
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatOrgYPO;
import com.njcn.prepare.harmonic.pojo.po.*; import com.njcn.prepare.harmonic.pojo.po.*;
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.*; import com.njcn.prepare.harmonic.service.mysql.newalgorithm.*;
import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.api.DicDataFeignClient;
@@ -97,6 +104,432 @@ public class RStatEventOrgServiceImpl implements RStatEventOrgService {
} }
} }
@Override
public void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<RStatEventOrgDPO> rStatEventOrgDPOS = new ArrayList<>();
DecimalFormat df = new DecimalFormat("0.00");
LocalDate localDate = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
QueryWrapper<RStatEventDPO> queryWrapper = new QueryWrapper<>();
/*获取暂态统计指标*/
List<DictData> eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
/*获取数据类型*/
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
int sumEffectiveMeasurement =0;
List<RStatOrgDVO> rStatOrgDVOS = rStatOrgDMapper.listAll( LocalDateTimeUtil.format(localDate,DatePattern.NORM_DATE_PATTERN), deptGetChildrenMoreDTO.getUnitId());
if(CollectionUtils.isEmpty(rStatOrgDVOS)){
sumEffectiveMeasurement=0;
}else {
sumEffectiveMeasurement = rStatOrgDVOS.stream().mapToInt(RStatOrgDVO::getEffectiveMeasurement).sum();
}
int finalSumEffectiveMeasurement = sumEffectiveMeasurement;
dataTypeMap.forEach((k, v)->{
eventStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
return;
}
queryWrapper.clear();
queryWrapper.
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
eq("data_type",v.getId()).
eq("event_type",dictData.getId()).
eq("data_date",localDate);
List<RStatEventDPO> list = rStatEventDPOMapper.selectList(queryWrapper);
int sum_event_measurement =0;
int sum_event_count =0;
if(CollectionUtils.isEmpty(list)){
sum_event_measurement=0;
sum_event_count =0;
}else {
sum_event_measurement = list.stream().mapToInt(RStatEventDPO::getEventMeasurement).sum();
sum_event_count = list.stream().mapToInt(RStatEventDPO::getEventCount).sum();
}
RStatEventOrgDPO rStatEventOrgDPO = new RStatEventOrgDPO();
rStatEventOrgDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatEventOrgDPO.setDataDate(localDate);
rStatEventOrgDPO.setEventType(dictData.getId());
rStatEventOrgDPO.setEventMeasurement(sum_event_measurement);
rStatEventOrgDPO.setEventCount(sum_event_count);
rStatEventOrgDPO.setDataType(v.getId());
if (finalSumEffectiveMeasurement == 0) {
rStatEventOrgDPO.setEventMeasurementRatio(0.00f);
} else {
String value = df.format(((float)sum_event_measurement)/ finalSumEffectiveMeasurement);
rStatEventOrgDPO.setEventMeasurementRatio(Float.parseFloat(value));
}
rStatEventOrgDPOS.add(rStatEventOrgDPO);
});
});
});
if (!CollectionUtils.isEmpty(rStatEventOrgDPOS)) {
rStatEventOrgDPOService.saveOrUpdateBatchByMultiId(rStatEventOrgDPOS, 500);
}
}
@Override
public void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<RStatEventOrgMPO> rStatEventOrgMPOS = new ArrayList<>();
DecimalFormat df = new DecimalFormat("0.00");
DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
DateTime end = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
QueryWrapper<RStatEventMPO> queryWrapper = new QueryWrapper<>();
QueryWrapper<RStatEventOrgDPO> queryWrapper1 = new QueryWrapper<>();
/*获取暂态统计指标*/
List<DictData> eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
/*获取数据类型*/
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
int sumEffectiveMeasurement =0;
rStatOrgMPOQueryWrapper.clear();
rStatOrgMPOQueryWrapper.select("IFNULL(effective_measurement_accrued,0) effective_measurement_accrued").
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
between("data_date",begin,end);
List<RStatOrgMPO> rStatOrgMPOS = rStatOrgMMapper.selectList(rStatOrgMPOQueryWrapper);
if(CollectionUtils.isEmpty(rStatOrgMPOS)){
sumEffectiveMeasurement=0;
}else {
sumEffectiveMeasurement = rStatOrgMPOS.stream().mapToInt(RStatOrgMPO::getEffectiveMeasurementAccrued).sum();
}
int finalSumEffectiveMeasurement = sumEffectiveMeasurement;
dataTypeMap.forEach((k, v)->{
eventStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
return;
}
queryWrapper.clear();
queryWrapper.
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
eq("data_type",v.getId()).
eq("event_type",dictData.getId()).
between("data_date",begin,end);
List<RStatEventMPO> list = rStatEventMPOMapper.selectList(queryWrapper);
int sum_event_measurement =0;
int sum_event_count =0;
if(CollectionUtils.isEmpty(list)){
sum_event_measurement=0;
sum_event_count =0;
}else {
sum_event_measurement = list.stream().mapToInt(RStatEventMPO::getEventMeasurementAccrued).sum();
sum_event_count = list.stream().mapToInt(RStatEventMPO::getEventCount).sum();
}
queryWrapper1.clear();
queryWrapper1.
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
eq("data_type",v.getId()).
eq("event_type",dictData.getId()).
between("data_date",begin,end);
List<RStatEventOrgDPO> rStatEventOrgDPOList = rStatEventOrgDPOService.list(queryWrapper1);
int event_count_all = rStatEventOrgDPOList.stream().mapToInt(RStatEventOrgDPO::getEventCount).sum();
int event_measurement_all = rStatEventOrgDPOList.stream().mapToInt(RStatEventOrgDPO::getEventMeasurement).sum();
double event_measurement_avg = rStatEventOrgDPOList.stream().mapToInt(RStatEventOrgDPO::getEventMeasurement).average().getAsDouble();
double asDouble = rStatEventOrgDPOList.stream().mapToDouble(RStatEventOrgDPO::getEventMeasurementRatio).average().getAsDouble();
RStatEventOrgMPO rStatEventOrgMPO = new RStatEventOrgMPO();
rStatEventOrgMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatEventOrgMPO.setDataDate(localDate);
rStatEventOrgMPO.setEventType(dictData.getId());
rStatEventOrgMPO.setDataType(v.getId());
rStatEventOrgMPO.setEventMeasurementAverage(Float.parseFloat( df.format(event_measurement_avg)));
rStatEventOrgMPO.setEventMeasurementAccrued(sum_event_measurement);
if (event_measurement_all == 0) {
rStatEventOrgMPO.setEventFreq(0.00f);
} else {
String value = df.format(((float)event_count_all)/ event_measurement_all);
rStatEventOrgMPO.setEventFreq(Float.parseFloat(value));
}
rStatEventOrgMPO.setEventCount(event_count_all);
rStatEventOrgMPO.setEventMeasurementRatioAverage(Float.parseFloat( df.format(asDouble)));
if (finalSumEffectiveMeasurement == 0) {
rStatEventOrgMPO.setEventMeasurementRatioAccrued(0.00f);
} else {
String value = df.format(((float)sum_event_measurement)/ finalSumEffectiveMeasurement);
rStatEventOrgMPO.setEventMeasurementRatioAccrued(Float.parseFloat(value));
}
rStatEventOrgMPOS.add(rStatEventOrgMPO);
});
});
});
if (!CollectionUtils.isEmpty(rStatEventOrgMPOS)) {
rStatEventOrgMPOService.saveOrUpdateBatchByMultiId(rStatEventOrgMPOS, 500);
}
}
@Override
public void handleQtr(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<RStatEventOrgQPO> rStatEventOrgQPOS = new ArrayList<>();
DecimalFormat df = new DecimalFormat("0.00");
DateTime begin = DateUtil.beginOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
DateTime end = DateUtil.endOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
QueryWrapper<RStatOrgQPO> rStatOrgQPOQueryWrapper = new QueryWrapper<>();
QueryWrapper<RStatEventQPO> queryWrapper = new QueryWrapper<>();
QueryWrapper<RStatEventOrgDPO> queryWrapper1 = new QueryWrapper<>();
QueryWrapper<RStatEventOrgMPO> queryWrapper2 = new QueryWrapper<>();
/*获取暂态统计指标*/
List<DictData> eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
/*获取数据类型*/
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
int sumEffectiveMeasurement =0;
rStatOrgQPOQueryWrapper.clear();
rStatOrgQPOQueryWrapper.select("IFNULL(effective_measurement_accrued,0) effective_measurement_accrued").
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
between("data_date",begin,end);
List<RStatOrgQPO> rStatOrgQPOS = rStatOrgQMapper.selectList(rStatOrgQPOQueryWrapper);
if(CollectionUtils.isEmpty(rStatOrgQPOS)){
sumEffectiveMeasurement=0;
}else {
sumEffectiveMeasurement = rStatOrgQPOS.stream().mapToInt(RStatOrgQPO::getEffectiveMeasurementAccrued).sum();
}
int finalSumEffectiveMeasurement = sumEffectiveMeasurement;
dataTypeMap.forEach((k, v)->{
eventStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
return;
}
queryWrapper.clear();
queryWrapper.
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
eq("data_type",v.getId()).
eq("event_type",dictData.getId()).
between("data_date",begin,end);
List<RStatEventQPO> list = rStatEventQPOMapper.selectList(queryWrapper);
int sum_event_measurement =0;
int sum_event_count =0;
if(CollectionUtils.isEmpty(list)){
sum_event_measurement=0;
sum_event_count =0;
}else {
sum_event_measurement = list.stream().mapToInt(RStatEventQPO::getEventMeasurementAccrued).sum();
sum_event_count = list.stream().mapToInt(RStatEventQPO::getEventCount).sum();
}
queryWrapper1.clear();
queryWrapper1.
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
eq("data_type",v.getId()).
eq("event_type",dictData.getId()).
between("data_date",begin,end);
List<RStatEventOrgDPO> rStatEventOrgDPOList = rStatEventOrgDPOService.list(queryWrapper1);
int event_count_all = rStatEventOrgDPOList.stream().mapToInt(RStatEventOrgDPO::getEventCount).sum();
int event_measurement_all = rStatEventOrgDPOList.stream().mapToInt(RStatEventOrgDPO::getEventMeasurement).sum();
// double event_measurement_avg = rStatEventOrgDPOList.stream().mapToInt(RStatEventOrgDPO::getEventMeasurement).average().getAsDouble();
//
// double asDouble = rStatEventOrgDPOList.stream().mapToDouble(RStatEventOrgDPO::getEventMeasurementRatio).average().getAsDouble();
queryWrapper2.clear();
queryWrapper2.
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
eq("data_type",v.getId()).
eq("event_type",dictData.getId()).
between("data_date",begin,end);
List<RStatEventOrgMPO> rStatEventOrgMPOList = rStatEventOrgMPOService.list(queryWrapper2);
double event_measurement_average = rStatEventOrgMPOList.stream().mapToDouble(RStatEventOrgMPO::getEventMeasurementAverage).average().getAsDouble();
double event_measurement_ratio_average = rStatEventOrgMPOList.stream().mapToDouble(RStatEventOrgMPO::getEventMeasurementRatioAverage).average().getAsDouble();
int event_count = rStatEventOrgMPOList.stream().mapToInt(RStatEventOrgMPO::getEventCount).sum();
RStatEventOrgQPO rStatEventOrgQPO = new RStatEventOrgQPO();
rStatEventOrgQPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatEventOrgQPO.setDataDate(localDate);
rStatEventOrgQPO.setEventType(dictData.getId());
rStatEventOrgQPO.setDataType(v.getId());
rStatEventOrgQPO.setEventMeasurementAverage(Float.parseFloat( df.format(event_measurement_average)));
rStatEventOrgQPO.setEventMeasurementAccrued(sum_event_measurement);
rStatEventOrgQPO.setEventCount(event_count);
rStatEventOrgQPO.setEventMeasurementRatioAverage(Float.parseFloat( df.format(event_measurement_ratio_average)));
if (finalSumEffectiveMeasurement == 0) {
rStatEventOrgQPO.setEventMeasurementRatioAccrued(0.00f);
} else {
String value = df.format(((float)sum_event_measurement)/ finalSumEffectiveMeasurement);
rStatEventOrgQPO.setEventMeasurementRatioAccrued(Float.parseFloat(value));
}
if (event_measurement_all == 0) {
rStatEventOrgQPO.setEventFreq(0.00f);
} else {
String value = df.format(((float)event_count_all)/ event_measurement_all);
rStatEventOrgQPO.setEventFreq(Float.parseFloat(value));
}
rStatEventOrgQPOS.add(rStatEventOrgQPO);
});
});
});
if (!CollectionUtils.isEmpty(rStatEventOrgQPOS)) {
rStatEventOrgQPOService.saveOrUpdateBatchByMultiId(rStatEventOrgQPOS, 500);
}
}
@Override
public void handleYear(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<RStatEventOrgYPO> rStatEventOrgYPOS = new ArrayList<>();
DecimalFormat df = new DecimalFormat("0.00");
DateTime begin = DateUtil.beginOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
DateTime end = DateUtil.endOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
QueryWrapper<RStatOrgYPO> rStatOrgYPOQueryWrapper = new QueryWrapper<>();
QueryWrapper<RStatEventYPO> queryWrapper = new QueryWrapper<>();
QueryWrapper<RStatEventOrgDPO> queryWrapper1 = new QueryWrapper<>();
QueryWrapper<RStatEventOrgMPO> queryWrapper2 = new QueryWrapper<>();
/*获取暂态统计指标*/
List<DictData> eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
/*获取数据类型*/
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
int sumEffectiveMeasurement =0;
rStatOrgYPOQueryWrapper.clear();
rStatOrgYPOQueryWrapper.select("IFNULL(effective_measurement_accrued,0) effective_measurement_accrued").
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
between("data_date",begin,end);
List<RStatOrgYPO> rStatOrgYPOS = rStatOrgYMapper.selectList(rStatOrgYPOQueryWrapper);
if(CollectionUtils.isEmpty(rStatOrgYPOS)){
sumEffectiveMeasurement=0;
}else {
sumEffectiveMeasurement = rStatOrgYPOS.stream().mapToInt(RStatOrgYPO::getEffectiveMeasurementAccrued).sum();
}
int finalSumEffectiveMeasurement = sumEffectiveMeasurement;
dataTypeMap.forEach((k, v)->{
eventStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
return;
}
queryWrapper.clear();
queryWrapper.
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
eq("data_type",v.getId()).
eq("event_type",dictData.getId()).
between("data_date",begin,end);
List<RStatEventYPO> list = rStatEventYPOMapper.selectList(queryWrapper);
int sum_event_measurement =0;
int sum_event_count =0;
if(CollectionUtils.isEmpty(list)){
sum_event_measurement=0;
sum_event_count =0;
}else {
sum_event_measurement = list.stream().mapToInt(RStatEventYPO::getEventMeasurementAccrued).sum();
sum_event_count = list.stream().mapToInt(RStatEventYPO::getEventCount).sum();
}
queryWrapper1.clear();
queryWrapper1.
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
eq("data_type",v.getId()).
eq("event_type",dictData.getId()).
between("data_date",begin,end);
List<RStatEventOrgDPO> rStatEventOrgDPOList = rStatEventOrgDPOService.list(queryWrapper1);
int event_count_all = rStatEventOrgDPOList.stream().mapToInt(RStatEventOrgDPO::getEventCount).sum();
int event_measurement_all = rStatEventOrgDPOList.stream().mapToInt(RStatEventOrgDPO::getEventMeasurement).sum();
double event_measurement_avg = rStatEventOrgDPOList.stream().mapToInt(RStatEventOrgDPO::getEventMeasurement).average().getAsDouble();
double asDouble = rStatEventOrgDPOList.stream().mapToDouble(RStatEventOrgDPO::getEventMeasurementRatio).average().getAsDouble();
queryWrapper2.clear();
queryWrapper2.
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
eq("data_type",v.getId()).
eq("event_type",dictData.getId()).
between("data_date",begin,end);
List<RStatEventOrgMPO> rStatEventOrgMPOList = rStatEventOrgMPOService.list(queryWrapper2);
double event_measurement_average = rStatEventOrgMPOList.stream().mapToDouble(RStatEventOrgMPO::getEventMeasurementAverage).average().getAsDouble();
double event_measurement_ratio_average = rStatEventOrgMPOList.stream().mapToDouble(RStatEventOrgMPO::getEventMeasurementRatioAverage).average().getAsDouble();
int event_count = rStatEventOrgMPOList.stream().mapToInt(RStatEventOrgMPO::getEventCount).sum();
RStatEventOrgYPO rStatEventOrgYPO = new RStatEventOrgYPO();
rStatEventOrgYPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatEventOrgYPO.setDataDate(localDate);
rStatEventOrgYPO.setEventType(dictData.getId());
rStatEventOrgYPO.setDataType(v.getId());
rStatEventOrgYPO.setEventMeasurementAverage(Float.parseFloat( df.format(event_measurement_average)));
rStatEventOrgYPO.setEventMeasurementAccrued(sum_event_measurement);
rStatEventOrgYPO.setEventCount(event_count);
rStatEventOrgYPO.setEventMeasurementRatioAverage(Float.parseFloat( df.format(event_measurement_ratio_average)));
if (finalSumEffectiveMeasurement == 0) {
rStatEventOrgYPO.setEventMeasurementRatioAccrued(0.00f);
} else {
String value = df.format(((float)sum_event_measurement)/ finalSumEffectiveMeasurement);
rStatEventOrgYPO.setEventMeasurementRatioAccrued(Float.parseFloat(value));
}
if (event_measurement_all == 0) {
rStatEventOrgYPO.setEventFreq(0.00f);
} else {
String value = df.format(((float)event_count_all)/ event_measurement_all);
rStatEventOrgYPO.setEventFreq(Float.parseFloat(value));
}
rStatEventOrgYPOS.add(rStatEventOrgYPO);
});
});
});
if (!CollectionUtils.isEmpty(rStatEventOrgYPOS)) {
rStatEventOrgYPOService.saveOrUpdateBatchByMultiId(rStatEventOrgYPOS, 500);
}
}
//天表 //天表
public void rStartEventOrgDHandler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) { public void rStartEventOrgDHandler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
List<RStatEventOrgDPO> rStatEventOrgDPOS = new ArrayList<>(); List<RStatEventOrgDPO> rStatEventOrgDPOS = new ArrayList<>();

View File

@@ -1,6 +1,9 @@
package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl; package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient; import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
@@ -9,6 +12,7 @@ import com.njcn.harmonic.pojo.po.RMpEventDetailDPO;
import com.njcn.harmonic.pojo.po.RMpEventDetailMPO; import com.njcn.harmonic.pojo.po.RMpEventDetailMPO;
import com.njcn.harmonic.pojo.po.RStatOrgDPO; import com.njcn.harmonic.pojo.po.RStatOrgDPO;
import com.njcn.harmonic.pojo.po.RStatOrgMPO; import com.njcn.harmonic.pojo.po.RStatOrgMPO;
import com.njcn.prepare.bo.CalculatedParam;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgDMapper; import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgDMapper;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgMMapper; import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgMMapper;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgQMapper; import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgQMapper;
@@ -75,6 +79,852 @@ public class RStatEventServiceImpl implements RStatEventService {
private final RStatOrgYMapper rStatOrgYMapper; private final RStatOrgYMapper rStatOrgYMapper;
@Override
public void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<RStatEventDPO> rStatEventDPOList = new ArrayList<>();
DecimalFormat df = new DecimalFormat("0.00");
LocalDate localDate = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
/*获取暂态统计指标*/
List<DictData> eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
/*获取数据类型*/
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
/*获取监测点类型类型*/
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
QueryWrapper<RMpEventDetailDPO> rMpEventDetailDPOQueryWrapper = new QueryWrapper<>();
QueryWrapper<RStatOrgDPO> rStatOrgDPOQueryWrapper = new QueryWrapper<>();
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
/*主网*/
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
Map<String, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag));
collect.forEach((k, v) -> {
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
rMpEventDetailDPOQueryWrapper.clear();
rMpEventDetailDPOQueryWrapper.
in("measurement_point_id", collect1).
eq("data_date",localDate);
List<RMpEventDetailDPO> rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper);
rStatOrgDPOQueryWrapper.clear();
rStatOrgDPOQueryWrapper.select("effective_measurement").
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", k).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
eq("data_date",localDate);
RStatOrgDPO rStatOrgDPO = rStatOrgDMapper.selectOne(rStatOrgDPOQueryWrapper);
eventStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
return;
}
List<Integer> transientStatisData = getTransientStatisData(dictData, rMpEventDetailDPOS);
RStatEventDPO rStatEventDPO = new RStatEventDPO();
rStatEventDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatEventDPO.setDataDate(localDate);
rStatEventDPO.setMeasurementTypeClass(k);
rStatEventDPO.setEventType(dictData.getId());
rStatEventDPO.setEventMeasurement(transientStatisData.get(0));
rStatEventDPO.setEventCount(transientStatisData.get(1));
rStatEventDPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
if (Objects.isNull(rStatOrgDPO)) {
rStatEventDPO.setEventMeasurementRatio(1.00f);
} else {
if (rStatOrgDPO.getEffectiveMeasurement() == 0) {
rStatEventDPO.setEventMeasurementRatio(1.00f);
} else {
String value = df.format(rStatEventDPO.getEventMeasurement() / rStatOrgDPO.getEffectiveMeasurement().floatValue());
rStatEventDPO.setEventMeasurementRatio(Float.parseFloat(value));
}
}
rStatEventDPOList.add(rStatEventDPO);
}
);
});
}
/*配网*/
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())) {
List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
Map<Integer, List<LineDevGetDTO>> collect = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
collect.forEach((k, v) -> {
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
rMpEventDetailDPOQueryWrapper.clear();
rMpEventDetailDPOQueryWrapper.
in("measurement_point_id", collect1).
eq("data_date",localDate);
List<RMpEventDetailDPO> rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper);
rStatOrgDPOQueryWrapper.clear();
rStatOrgDPOQueryWrapper.select("effective_measurement").
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()).
eq("data_date",localDate);
RStatOrgDPO rStatOrgDPO = rStatOrgDMapper.selectOne(rStatOrgDPOQueryWrapper);
eventStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
return;
}
List<Integer> transientStatisData = getTransientStatisData(dictData, rMpEventDetailDPOS);
RStatEventDPO rStatEventDPO = new RStatEventDPO();
rStatEventDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatEventDPO.setDataDate(localDate);
rStatEventDPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
rStatEventDPO.setEventType(dictData.getId());
rStatEventDPO.setEventMeasurement(transientStatisData.get(0));
rStatEventDPO.setEventCount(transientStatisData.get(1));
rStatEventDPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
if (Objects.isNull(rStatOrgDPO)) {
rStatEventDPO.setEventMeasurementRatio(1.00f);
} else {
if (rStatOrgDPO.getEffectiveMeasurement() == 0) {
rStatEventDPO.setEventMeasurementRatio(1.00f);
} else {
String value = df.format(rStatEventDPO.getEventMeasurement() / rStatOrgDPO.getEffectiveMeasurement().floatValue());
rStatEventDPO.setEventMeasurementRatio(Float.parseFloat(value));
}
}
rStatEventDPOList.add(rStatEventDPO);
}
);
});
}
});
if (!CollectionUtils.isEmpty(rStatEventDPOList)) {
rStatEventDPOService.saveOrUpdateBatchByMultiId(rStatEventDPOList, 500);
}
}
@Override
public void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<RStatEventMPO> rStatEventMPOList = new ArrayList<>();
DecimalFormat df = new DecimalFormat("0.00");
DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
DateTime end = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
/*获取暂态统计指标*/
List<DictData> eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
/*获取数据类型*/
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
/*获取监测点类型类型*/
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
//详情表
QueryWrapper<RMpEventDetailMPO> rMpEventDetailMPOQueryWrapper = new QueryWrapper<>();
//org表
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
//天表
QueryWrapper<RStatEventDPO> rStatEventDPOQueryWrapper = new QueryWrapper<>();
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
/*主网*/
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
Map<String, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag));
collect.forEach((k, v) -> {
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
rMpEventDetailMPOQueryWrapper.clear();
rMpEventDetailMPOQueryWrapper.
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpEventDetailMPO> rMpEventDetailMPOS = rMpEventDetailMMapper.selectList(rMpEventDetailMPOQueryWrapper);
rStatOrgMPOQueryWrapper.clear();
rStatOrgMPOQueryWrapper.select("effective_measurement_accrued").
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", k).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
between("data_date",begin,end);
RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper);
//天表
rStatEventDPOQueryWrapper.clear();
rStatEventDPOQueryWrapper.
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
between("data_date",begin,end).
eq("measurement_type_class",k).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
List<RStatEventDPO> rStatEventDPO = rStatEventDPOMapper.selectList(rStatEventDPOQueryWrapper);
//求各个类型的平均值
Map<String, Double> avgEM = rStatEventDPO.stream()
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.averagingInt(RStatEventDPO::getEventMeasurement)));
//event_measurement的和
Map<String, Integer> sumEM = rStatEventDPO.stream()
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventMeasurement)));
//event_count
Map<String, Integer> sumEC = rStatEventDPO.stream()
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventCount)));
//event_measurement_ratio
Map<String, Double> avgEMR = rStatEventDPO.stream()
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.averagingDouble(RStatEventDPO::getEventMeasurementRatio)));
eventStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
return;
}
//累计发生暂态监测点数
Integer statisData = getStatisData(dictData, rMpEventDetailMPOS);
RStatEventMPO rStatEventMPO = new RStatEventMPO();
rStatEventMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatEventMPO.setDataDate(localDate);
rStatEventMPO.setMeasurementTypeClass(k);
rStatEventMPO.setEventType(dictData.getId());
rStatEventMPO.setEventMeasurementAverage(Float.parseFloat(df.format(avgEM.get(dictData.getId()))));
rStatEventMPO.setEventMeasurementAccrued(statisData);
rStatEventMPO.setEventCount(sumEC.get(dictData.getId()));
rStatEventMPO.setEventMeasurementRatioAverage(Float.parseFloat(df.format(avgEMR.get(dictData.getId()))));
rStatEventMPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
if (sumEM.get(dictData.getId()) == 0) {
rStatEventMPO.setEventFreq(1.00f);
} else {
String value = df.format(sumEC.get(dictData.getId()) / sumEM.get(dictData.getId()).floatValue());
rStatEventMPO.setEventFreq(Float.parseFloat(value));
}
if (Objects.isNull(rStatOrgMPO)) {
rStatEventMPO.setEventMeasurementRatioAccrued(1.00f);
} else {
if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) {
rStatEventMPO.setEventMeasurementRatioAccrued(1.00f);
} else {
String value = df.format(statisData / rStatOrgMPO.getEffectiveMeasurementAccrued().floatValue());
rStatEventMPO.setEventMeasurementRatioAccrued(Float.parseFloat(value));
}
}
rStatEventMPOList.add(rStatEventMPO);
});
});
}
/*配网*/
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())) {
List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
Map<Integer, List<LineDevGetDTO>> collect = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
collect.forEach((k, v) -> {
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
rMpEventDetailMPOQueryWrapper.clear();
rMpEventDetailMPOQueryWrapper.
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpEventDetailMPO> rMpEventDetailMPOS = rMpEventDetailMMapper.selectList(rMpEventDetailMPOQueryWrapper);
rStatOrgMPOQueryWrapper.clear();
rStatOrgMPOQueryWrapper.select("effective_measurement_accrued").
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()).
between("data_date",begin,end);
RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper);
//天表
rStatEventDPOQueryWrapper.clear();
rStatEventDPOQueryWrapper.
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
between("data_date",begin,end).
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
List<RStatEventDPO> rStatEventDPO = rStatEventDPOMapper.selectList(rStatEventDPOQueryWrapper);
//求各个类型的平均值
Map<String, Double> avgEM = rStatEventDPO.stream()
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.averagingInt(RStatEventDPO::getEventMeasurement)));
//event_measurement的和
Map<String, Integer> sumEM = rStatEventDPO.stream()
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventMeasurement)));
//event_count
Map<String, Integer> sumEC = rStatEventDPO.stream()
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventCount)));
//event_measurement_ratio
Map<String, Double> avgEMR = rStatEventDPO.stream()
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.averagingDouble(RStatEventDPO::getEventMeasurementRatio)));
eventStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
return;
}
//累计发生暂态监测点数
Integer statisData = getStatisData(dictData, rMpEventDetailMPOS);
RStatEventMPO rStatEventMPO = new RStatEventMPO();
rStatEventMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatEventMPO.setDataDate(localDate);
rStatEventMPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
rStatEventMPO.setEventType(dictData.getId());
rStatEventMPO.setEventMeasurementAverage(Float.parseFloat(df.format(avgEM.get(dictData.getId()))));
rStatEventMPO.setEventMeasurementAccrued(statisData);
rStatEventMPO.setEventCount(sumEC.get(dictData.getId()));
rStatEventMPO.setEventMeasurementRatioAverage(Float.parseFloat(df.format(avgEMR.get(dictData.getId()))));
rStatEventMPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
if (sumEM.get(dictData.getId()) == 0) {
rStatEventMPO.setEventFreq(1.00f);
} else {
String value = df.format(sumEC.get(dictData.getId()) / sumEM.get(dictData.getId()).floatValue());
rStatEventMPO.setEventFreq(Float.parseFloat(value));
}
if (Objects.isNull(rStatOrgMPO)) {
rStatEventMPO.setEventMeasurementRatioAccrued(1.00f);
} else {
if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) {
rStatEventMPO.setEventMeasurementRatioAccrued(1.00f);
} else {
String value = df.format(statisData / rStatOrgMPO.getEffectiveMeasurementAccrued().floatValue());
rStatEventMPO.setEventMeasurementRatioAccrued(Float.parseFloat(value));
}
}
rStatEventMPOList.add(rStatEventMPO);
});
});
}
});
if (!CollectionUtils.isEmpty(rStatEventMPOList)) {
rStatEventMPOService.saveOrUpdateBatchByMultiId(rStatEventMPOList, 500);
}
}
@Override
public void handleQtr(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<RStatEventQPO> rStatEventQPOList = new ArrayList<>();
DecimalFormat df = new DecimalFormat("0.00");
DateTime begin = DateUtil.beginOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
DateTime end = DateUtil.endOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
/*获取暂态统计指标*/
List<DictData> eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
/*获取数据类型*/
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
/*获取监测点类型类型*/
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
//详情表
QueryWrapper<RMpEventDetailMPO> rMpEventDetailMPOQueryWrapper = new QueryWrapper<>();
//org季表
QueryWrapper<RStatOrgQPO> rStatOrgQPOQueryWrapper = new QueryWrapper<>();
//天表
QueryWrapper<RStatEventDPO> rStatEventDPOQueryWrapper = new QueryWrapper<>();
//月表
QueryWrapper<RStatEventMPO> rStatEventMPOQueryWrapper = new QueryWrapper<>();
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
/*主网*/
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
Map<String, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag));
collect.forEach((k, v) -> {
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
rMpEventDetailMPOQueryWrapper.clear();
rMpEventDetailMPOQueryWrapper.
in("measurement_point_id", collect1).
between("data_date", begin, end);
List<RMpEventDetailMPO> rMpEventDetailMPOS = rMpEventDetailMMapper.selectList(rMpEventDetailMPOQueryWrapper);
//季表
rStatOrgQPOQueryWrapper.clear();
rStatOrgQPOQueryWrapper.select("effective_measurement_accrued").
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", k).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
between("data_date", begin, end);
;
RStatOrgQPO rStatOrgQPO = rStatOrgQMapper.selectOne(rStatOrgQPOQueryWrapper);
//天表
rStatEventDPOQueryWrapper.clear();
rStatEventDPOQueryWrapper.
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
between("data_date", begin, end).
eq("measurement_type_class", k).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
List<RStatEventDPO> rStatEventDPO = rStatEventDPOMapper.selectList(rStatEventDPOQueryWrapper);
//月表
rStatEventMPOQueryWrapper.clear();
rStatEventMPOQueryWrapper.
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
between("data_date", begin, end).
eq("measurement_type_class", k).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
List<RStatEventMPO> rStatEventMPO = rStatEventMPOMapper.selectList(rStatEventMPOQueryWrapper);
//求各个类型的平均值(月表)
Map<String, Double> avgEMM = rStatEventMPO.stream()
.collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.averagingDouble(RStatEventMPO::getEventMeasurementAverage)));
//event_measurement的和
Map<String, Integer> sumEM = rStatEventDPO.stream()
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventMeasurement)));
//event_count天表
Map<String, Integer> sumEC = rStatEventDPO.stream()
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventCount)));
//event_count月表
Map<String, Integer> sumECM = rStatEventMPO.stream()
.collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.summingInt(RStatEventMPO::getEventCount)));
//event_measurement_ratio_average月表
Map<String, Double> avgEMRM = rStatEventMPO.stream()
.collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.averagingDouble(RStatEventMPO::getEventMeasurementRatioAverage)));
eventStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
return;
}
//累计发生暂态监测点数
Integer statisData = getStatisQData(dictData, rMpEventDetailMPOS);
RStatEventQPO rStatEventQPO = new RStatEventQPO();
rStatEventQPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatEventQPO.setDataDate(localDate);
rStatEventQPO.setMeasurementTypeClass(k);
rStatEventQPO.setEventType(dictData.getId());
rStatEventQPO.setEventMeasurementAverage(Float.parseFloat(df.format(avgEMM.get(dictData.getId()))));
// todo
rStatEventQPO.setEventMeasurementAccrued(statisData);
rStatEventQPO.setEventCount(sumECM.get(dictData.getId()));
rStatEventQPO.setEventMeasurementRatioAverage(Float.parseFloat(df.format(avgEMRM.get(dictData.getId()))));
rStatEventQPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
if (sumEM.get(dictData.getId()) == 0) {
rStatEventQPO.setEventFreq(1.00f);
} else {
String value = df.format(sumEC.get(dictData.getId()) / sumEM.get(dictData.getId()).floatValue());
rStatEventQPO.setEventFreq(Float.parseFloat(value));
}
if (Objects.isNull(rStatOrgQPO)) {
rStatEventQPO.setEventMeasurementRatioAccrued(1.00f);
} else {
if (rStatOrgQPO.getEffectiveMeasurementAccrued() == 0) {
rStatEventQPO.setEventMeasurementRatioAccrued(1.00f);
} else {
String value = df.format(statisData / rStatOrgQPO.getEffectiveMeasurementAccrued().floatValue());
rStatEventQPO.setEventMeasurementRatioAccrued(Float.parseFloat(value));
}
}
rStatEventQPOList.add(rStatEventQPO);
});
});
}
/*配网*/
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())) {
List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
Map<Integer, List<LineDevGetDTO>> collect = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
collect.forEach((k, v) -> {
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
rMpEventDetailMPOQueryWrapper.clear();
rMpEventDetailMPOQueryWrapper.
in("measurement_point_id", collect1).
between("data_date", begin, end);
List<RMpEventDetailMPO> rMpEventDetailMPOS = rMpEventDetailMMapper.selectList(rMpEventDetailMPOQueryWrapper);
//季表
rStatOrgQPOQueryWrapper.clear();
rStatOrgQPOQueryWrapper.select("effective_measurement_accrued").
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()).
between("data_date", begin, end);
;
RStatOrgQPO rStatOrgQPO = rStatOrgQMapper.selectOne(rStatOrgQPOQueryWrapper);
//天表
rStatEventDPOQueryWrapper.clear();
rStatEventDPOQueryWrapper.
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
between("data_date", begin, end).
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
List<RStatEventDPO> rStatEventDPO = rStatEventDPOMapper.selectList(rStatEventDPOQueryWrapper);
//月表
rStatEventMPOQueryWrapper.clear();
rStatEventMPOQueryWrapper.
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
between("data_date", begin, end).
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
List<RStatEventMPO> rStatEventMPO = rStatEventMPOMapper.selectList(rStatEventMPOQueryWrapper);
//求各个类型的平均值(月表)
Map<String, Double> avgEMM = rStatEventMPO.stream()
.collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.averagingDouble(RStatEventMPO::getEventMeasurementAverage)));
//event_measurement的和
Map<String, Integer> sumEM = rStatEventDPO.stream()
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventMeasurement)));
//event_count天表
Map<String, Integer> sumEC = rStatEventDPO.stream()
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventCount)));
//event_count月表
Map<String, Integer> sumECM = rStatEventMPO.stream()
.collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.summingInt(RStatEventMPO::getEventCount)));
//event_measurement_ratio_average月表
Map<String, Double> avgEMRM = rStatEventMPO.stream()
.collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.averagingDouble(RStatEventMPO::getEventMeasurementRatioAverage)));
eventStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
return;
}
//累计发生暂态监测点数
Integer statisData = getStatisQData(dictData, rMpEventDetailMPOS);
RStatEventQPO rStatEventQPO = new RStatEventQPO();
rStatEventQPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatEventQPO.setDataDate(localDate);
rStatEventQPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
rStatEventQPO.setEventType(dictData.getId());
rStatEventQPO.setEventMeasurementAverage(Float.parseFloat(df.format(avgEMM.get(dictData.getId()))));
// todo
rStatEventQPO.setEventMeasurementAccrued(statisData);
rStatEventQPO.setEventCount(sumECM.get(dictData.getId()));
rStatEventQPO.setEventMeasurementRatioAverage(Float.parseFloat(df.format(avgEMRM.get(dictData.getId()))));
rStatEventQPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
if (sumEM.get(dictData.getId()) == 0) {
rStatEventQPO.setEventFreq(1.00f);
} else {
String value = df.format(sumEC.get(dictData.getId()) / sumEM.get(dictData.getId()).floatValue());
rStatEventQPO.setEventFreq(Float.parseFloat(value));
}
if (Objects.isNull(rStatOrgQPO)) {
rStatEventQPO.setEventMeasurementRatioAccrued(1.00f);
} else {
if (rStatOrgQPO.getEffectiveMeasurementAccrued() == 0) {
rStatEventQPO.setEventMeasurementRatioAccrued(1.00f);
} else {
String value = df.format(statisData / rStatOrgQPO.getEffectiveMeasurementAccrued().floatValue());
rStatEventQPO.setEventMeasurementRatioAccrued(Float.parseFloat(value));
}
}
rStatEventQPOList.add(rStatEventQPO);
});
});
}
});
if (!CollectionUtils.isEmpty(rStatEventQPOList)) {
rStatEventQPOService.saveOrUpdateBatchByMultiId(rStatEventQPOList, 500);
}
}
@Override
public void handleYear(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<RStatEventYPO> rStatEventYPOList = new ArrayList<>();
DecimalFormat df = new DecimalFormat("0.00");
DateTime begin = DateUtil.beginOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
DateTime end = DateUtil.endOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
/*获取暂态统计指标*/
List<DictData> eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
/*获取数据类型*/
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
/*获取监测点类型类型*/
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
//详情表
QueryWrapper<RMpEventDetailMPO> rMpEventDetailMPOQueryWrapper = new QueryWrapper<>();
//org年表
QueryWrapper<RStatOrgYPO> rStatOrgYPOQueryWrapper = new QueryWrapper<>();
//天表
QueryWrapper<RStatEventDPO> rStatEventDPOQueryWrapper = new QueryWrapper<>();
//月表
QueryWrapper<RStatEventMPO> rStatEventMPOQueryWrapper = new QueryWrapper<>();
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
/*主网*/
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
Map<String, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag));
collect.forEach((k, v) -> {
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
rMpEventDetailMPOQueryWrapper.clear();
rMpEventDetailMPOQueryWrapper.
in("measurement_point_id", collect1).
between("data_date", begin, end);
List<RMpEventDetailMPO> rMpEventDetailMPOS = rMpEventDetailMMapper.selectList(rMpEventDetailMPOQueryWrapper);
//年表
rStatOrgYPOQueryWrapper.clear();
rStatOrgYPOQueryWrapper.select("effective_measurement_accrued").
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", k).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
between("data_date", begin, end);
RStatOrgYPO rStatOrgYPO = rStatOrgYMapper.selectOne(rStatOrgYPOQueryWrapper);
//天表
rStatEventDPOQueryWrapper.clear();
rStatEventDPOQueryWrapper.
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
between("data_date", begin, end).
eq("measurement_type_class",k).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
List<RStatEventDPO> rStatEventDPO = rStatEventDPOMapper.selectList(rStatEventDPOQueryWrapper);
//月表
rStatEventMPOQueryWrapper.clear();
rStatEventMPOQueryWrapper.
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
between("data_date", begin, end).
eq("measurement_type_class",k).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
List<RStatEventMPO> rStatEventMPO = rStatEventMPOMapper.selectList(rStatEventMPOQueryWrapper);
//求各个类型的平均值(月表)
Map<String, Double> avgEMM = rStatEventMPO.stream()
.collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.averagingDouble(RStatEventMPO::getEventMeasurementAverage)));
//event_measurement的和
Map<String, Integer> sumEM = rStatEventDPO.stream()
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventMeasurement)));
//event_count天表
Map<String, Integer> sumEC = rStatEventDPO.stream()
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventCount)));
//event_count月表
Map<String, Integer> sumECM = rStatEventMPO.stream()
.collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.summingInt(RStatEventMPO::getEventCount)));
//event_measurement_ratio_average月表
Map<String, Double> avgEMRM = rStatEventMPO.stream()
.collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.averagingDouble(RStatEventMPO::getEventMeasurementRatioAverage)));
eventStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
return;
}
//累计发生暂态监测点数
Integer statisData = getStatisQData(dictData, rMpEventDetailMPOS);
RStatEventYPO rStatEventYPO = new RStatEventYPO();
rStatEventYPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatEventYPO.setDataDate(localDate);
rStatEventYPO.setMeasurementTypeClass(k);
rStatEventYPO.setEventType(dictData.getId());
rStatEventYPO.setEventMeasurementAverage(Float.parseFloat(df.format(avgEMM.get(dictData.getId()))));
// todo
rStatEventYPO.setEventMeasurementAccrued(statisData);
rStatEventYPO.setEventCount(sumECM.get(dictData.getId()));
rStatEventYPO.setEventMeasurementRatioAverage(Float.parseFloat(df.format(avgEMRM.get(dictData.getId()))));
rStatEventYPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
if (sumEM.get(dictData.getId()) == 0) {
rStatEventYPO.setEventFreq(1.00f);
} else {
String value = df.format(sumEC.get(dictData.getId()) / sumEM.get(dictData.getId()).floatValue());
rStatEventYPO.setEventFreq(Float.parseFloat(value));
}
if (Objects.isNull(rStatOrgYPO)) {
rStatEventYPO.setEventMeasurementRatioAccrued(1.00f);
} else {
if (rStatOrgYPO.getEffectiveMeasurementAccrued() == 0) {
rStatEventYPO.setEventMeasurementRatioAccrued(1.00f);
} else {
String value = df.format(statisData / rStatOrgYPO.getEffectiveMeasurementAccrued().floatValue());
rStatEventYPO.setEventMeasurementRatioAccrued(Float.parseFloat(value));
}
}
rStatEventYPOList.add(rStatEventYPO);
});
});
}
/*配网*/
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())) {
List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
Map<Integer, List<LineDevGetDTO>> collect = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
collect.forEach((k, v) -> {
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
rMpEventDetailMPOQueryWrapper.clear();
rMpEventDetailMPOQueryWrapper.
in("measurement_point_id", collect1).
between("data_date", begin, end);
List<RMpEventDetailMPO> rMpEventDetailMPOS = rMpEventDetailMMapper.selectList(rMpEventDetailMPOQueryWrapper);
//年表
rStatOrgYPOQueryWrapper.clear();
rStatOrgYPOQueryWrapper.select("effective_measurement_accrued").
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()).
between("data_date", begin, end);
RStatOrgYPO rStatOrgYPO = rStatOrgYMapper.selectOne(rStatOrgYPOQueryWrapper);
//天表
rStatEventDPOQueryWrapper.clear();
rStatEventDPOQueryWrapper.
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
between("data_date", begin, end).
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
List<RStatEventDPO> rStatEventDPO = rStatEventDPOMapper.selectList(rStatEventDPOQueryWrapper);
//月表
rStatEventMPOQueryWrapper.clear();
rStatEventMPOQueryWrapper.
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
between("data_date", begin, end).
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
List<RStatEventMPO> rStatEventMPO = rStatEventMPOMapper.selectList(rStatEventMPOQueryWrapper);
//求各个类型的平均值(月表)
Map<String, Double> avgEMM = rStatEventMPO.stream()
.collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.averagingDouble(RStatEventMPO::getEventMeasurementAverage)));
//event_measurement的和
Map<String, Integer> sumEM = rStatEventDPO.stream()
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventMeasurement)));
//event_count天表
Map<String, Integer> sumEC = rStatEventDPO.stream()
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventCount)));
//event_count月表
Map<String, Integer> sumECM = rStatEventMPO.stream()
.collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.summingInt(RStatEventMPO::getEventCount)));
//event_measurement_ratio_average月表
Map<String, Double> avgEMRM = rStatEventMPO.stream()
.collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.averagingDouble(RStatEventMPO::getEventMeasurementRatioAverage)));
eventStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
return;
}
//累计发生暂态监测点数
Integer statisData = getStatisQData(dictData, rMpEventDetailMPOS);
RStatEventYPO rStatEventYPO = new RStatEventYPO();
rStatEventYPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatEventYPO.setDataDate(localDate);
rStatEventYPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
rStatEventYPO.setEventType(dictData.getId());
rStatEventYPO.setEventMeasurementAverage(Float.parseFloat(df.format(avgEMM.get(dictData.getId()))));
// todo
rStatEventYPO.setEventMeasurementAccrued(statisData);
rStatEventYPO.setEventCount(sumECM.get(dictData.getId()));
rStatEventYPO.setEventMeasurementRatioAverage(Float.parseFloat(df.format(avgEMRM.get(dictData.getId()))));
rStatEventYPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
if (sumEM.get(dictData.getId()) == 0) {
rStatEventYPO.setEventFreq(1.00f);
} else {
String value = df.format(sumEC.get(dictData.getId()) / sumEM.get(dictData.getId()).floatValue());
rStatEventYPO.setEventFreq(Float.parseFloat(value));
}
if (Objects.isNull(rStatOrgYPO)) {
rStatEventYPO.setEventMeasurementRatioAccrued(1.00f);
} else {
if (rStatOrgYPO.getEffectiveMeasurementAccrued() == 0) {
rStatEventYPO.setEventMeasurementRatioAccrued(1.00f);
} else {
String value = df.format(statisData / rStatOrgYPO.getEffectiveMeasurementAccrued().floatValue());
rStatEventYPO.setEventMeasurementRatioAccrued(Float.parseFloat(value));
}
}
rStatEventYPOList.add(rStatEventYPO);
});
});
}
});
if (!CollectionUtils.isEmpty(rStatEventYPOList)) {
rStatEventYPOService.saveOrUpdateBatchByMultiId(rStatEventYPOList, 500);
}
}
@Override @Override
public void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) { public void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
switch (type) { switch (type) {
@@ -95,6 +945,8 @@ public class RStatEventServiceImpl implements RStatEventService {
} }
} }
//天表 //天表
public void rStartEventDHandler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) { public void rStartEventDHandler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
List<RStatEventDPO> rStatEventDPOList = new ArrayList<>(); List<RStatEventDPO> rStatEventDPOList = new ArrayList<>();

View File

@@ -1,16 +1,21 @@
package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl; package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO; import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
import com.njcn.harmonic.pojo.po.*; import com.njcn.harmonic.pojo.po.*;
import com.njcn.prepare.bo.CalculatedParam;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgDMapper; import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgDMapper;
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgMMapper; import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgMMapper;
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailDMapper; import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailDMapper;
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailMMapper; import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailMMapper;
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatEventDPOMapper; import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatEventDPOMapper;
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatEventVoltageDPOMapper; import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatEventVoltageDPOMapper;
import com.njcn.prepare.harmonic.pojo.mysql.RMpEventDetailPO;
import com.njcn.prepare.harmonic.pojo.po.*; import com.njcn.prepare.harmonic.pojo.po.*;
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.*; import com.njcn.prepare.harmonic.service.mysql.newalgorithm.*;
import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.api.DicDataFeignClient;
@@ -23,6 +28,7 @@ import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.ZoneId; import java.time.ZoneId;
@@ -60,6 +66,439 @@ public class RStatEventVoltageServiceImpl implements RStatEventVoltageService {
private final RStatOrgMMapper rStatOrgMMapper; private final RStatOrgMMapper rStatOrgMMapper;
@Override
public void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<RStatEventVoltageDPO> rStatEventVoltageDPOS = new ArrayList<>();
DecimalFormat df = new DecimalFormat("0.00");
LocalDate localDate = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
/*获取暂态统计指标*/
List<DictData> eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
/*获取数据类型*/
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
/*获取监测点类型类型*/
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
/*获取监测点电压等级*/
List<DictData> voltageList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE_STAND.getCode()).getData();
Map<String, DictData> voltageMap = voltageList.stream().collect(Collectors.toMap(DictData::getValue, dictData -> dictData));
QueryWrapper<RMpEventDetailDPO> rMpEventDetailDPOQueryWrapper = new QueryWrapper<>();
QueryWrapper<RStatOrgDPO> rStatOrgDPOQueryWrapper = new QueryWrapper<>();
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
/*主网*/
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
Map<String, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag));
collect.forEach((k, v) -> {
Map<String, List<LineDevGetDTO>> collect2 = v.stream().collect(Collectors.groupingBy(LineDevGetDTO::getVoltageLevel));
collect2.forEach((k1, v1) -> {
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
rMpEventDetailDPOQueryWrapper.clear();
rMpEventDetailDPOQueryWrapper.
in("measurement_point_id", collect1).
eq("data_date",localDate);
List<RMpEventDetailDPO> rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper);
rStatOrgDPOQueryWrapper.clear();
rStatOrgDPOQueryWrapper.select("effective_measurement").
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", k).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
eq("data_date",localDate);
RStatOrgDPO rStatOrgDPO = rStatOrgDMapper.selectOne(rStatOrgDPOQueryWrapper);
eventStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
return;
}
List<Integer> transientStatisData = getTransientStatisDataNew(dictData, rMpEventDetailDPOS);
RStatEventVoltageDPO rStatEventVoltageDPO = new RStatEventVoltageDPO();
rStatEventVoltageDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatEventVoltageDPO.setDataDate(localDate);
rStatEventVoltageDPO.setMeasurementTypeClass(k);
rStatEventVoltageDPO.setEventType(dictData.getId());
rStatEventVoltageDPO.setVoltageType(k1);
rStatEventVoltageDPO.setEventMeasurement(transientStatisData.get(0));
rStatEventVoltageDPO.setEventCount(transientStatisData.get(1));
rStatEventVoltageDPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
if (Objects.isNull(rStatOrgDPO)) {
rStatEventVoltageDPO.setEventMeasurementRatio(0.00f);
} else {
if (rStatOrgDPO.getEffectiveMeasurement() == 0) {
rStatEventVoltageDPO.setEventMeasurementRatio(0.00f);
} else {
String value = df.format(rStatEventVoltageDPO.getEventMeasurement() / rStatOrgDPO.getEffectiveMeasurement().floatValue());
rStatEventVoltageDPO.setEventMeasurementRatio(Float.parseFloat(value));
}
}
rStatEventVoltageDPOS.add(rStatEventVoltageDPO);
}
);
});
});
}
/*配网*/
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())) {
List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
Map<Integer, List<LineDevGetDTO>> collect = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
collect.forEach((k, v) -> {
Map<String, List<LineDevGetDTO>> collect2 = v.stream().collect(Collectors.groupingBy(LineDevGetDTO::getVoltageLevel));
collect2.forEach((k1, v1) -> {
List<String> collect1 = v1.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
rMpEventDetailDPOQueryWrapper.clear();
rMpEventDetailDPOQueryWrapper.
in("measurement_point_id", collect1).
eq("data_date",localDate);
List<RMpEventDetailDPO> rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper);
rStatOrgDPOQueryWrapper.clear();
rStatOrgDPOQueryWrapper.select("effective_measurement").
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()).
eq("data_date",localDate);
RStatOrgDPO rStatOrgDPO = rStatOrgDMapper.selectOne(rStatOrgDPOQueryWrapper);
eventStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
return;
}
List<Integer> transientStatisData = getTransientStatisDataNew(dictData, rMpEventDetailDPOS);
RStatEventVoltageDPO rStatEventVoltageDPO = new RStatEventVoltageDPO();
rStatEventVoltageDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatEventVoltageDPO.setDataDate(localDate);
rStatEventVoltageDPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
rStatEventVoltageDPO.setEventType(dictData.getId());
rStatEventVoltageDPO.setVoltageType(k1);
rStatEventVoltageDPO.setEventMeasurement(transientStatisData.get(0));
rStatEventVoltageDPO.setEventCount(transientStatisData.get(1));
rStatEventVoltageDPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
if (Objects.isNull(rStatOrgDPO)) {
rStatEventVoltageDPO.setEventMeasurementRatio(0.00f);
} else {
if (rStatOrgDPO.getEffectiveMeasurement() == 0) {
rStatEventVoltageDPO.setEventMeasurementRatio(0.00f);
} else {
String value = df.format(rStatEventVoltageDPO.getEventMeasurement() / rStatOrgDPO.getEffectiveMeasurement().floatValue());
rStatEventVoltageDPO.setEventMeasurementRatio(Float.parseFloat(value));
}
}
rStatEventVoltageDPOS.add(rStatEventVoltageDPO);
});
});
});
}
});
if (!CollectionUtils.isEmpty(rStatEventVoltageDPOS)) {
rStatEventVoltageDPOService.saveOrUpdateBatchByMultiId(rStatEventVoltageDPOS, 500);
}
}
private List<Integer> getTransientStatisDataNew(DictData dictData, List<RMpEventDetailDPO> rMpEventDetailDPOS) {
List<Integer> result = new ArrayList<>(2);
Integer value = 0;
Integer count = 0;
if (Objects.equals(dictData.getCode(), DicDataEnum.VOLTAGE_DIP.getCode())) {
value = Integer.valueOf(rMpEventDetailDPOS.stream().filter(temp -> temp.getSagTimes() > 0).count() + "");
count = Integer.valueOf(rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSagTimes).sum() + "");
}
if (Objects.equals(dictData.getCode(), DicDataEnum.VOLTAGE_RISE.getCode())) {
value = Integer.valueOf(rMpEventDetailDPOS.stream().filter(temp -> temp.getSwellTimes() > 0).count() + "");
count = Integer.valueOf(rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSwellTimes).sum() + "");
}
if (Objects.equals(dictData.getCode(), DicDataEnum.SHORT_INTERRUPTIONS.getCode())) {
value = Integer.valueOf(rMpEventDetailDPOS.stream().filter(temp -> temp.getInterruptTimes() > 0).count() + "");
count = Integer.valueOf(rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getInterruptTimes).sum() + "");
}
result.add(value);
result.add(count);
return result;
}
@Override
public void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<RStatEventVoltageMPO> rStatEventVoltageMPOS = new ArrayList<>();
DecimalFormat df = new DecimalFormat("0.00");
DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
DateTime end = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
/*获取暂态统计指标*/
List<DictData> eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
/*获取数据类型*/
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
/*获取监测点类型类型*/
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
/*获取监测点电压等级*/
List<DictData> voltageList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE_STAND.getCode()).getData();
Map<String, DictData> voltageMap = voltageList.stream().collect(Collectors.toMap(DictData::getValue, dictData -> dictData));
//详情表
QueryWrapper<RMpEventDetailMPO> rMpEventDetailMPOQueryWrapper = new QueryWrapper<>();
//org表
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
//天表
QueryWrapper<RStatEventVoltageDPO> rStatEventVoltageDPOQueryWrapper = new QueryWrapper<>();
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
/*主网*/
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
Map<String, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag));
collect.forEach((k, v) -> {
Map<String, List<LineDevGetDTO>> collect2 = v.stream().collect(Collectors.groupingBy(LineDevGetDTO::getVoltageLevel));
collect2.forEach((k1, v1) -> {
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
rMpEventDetailMPOQueryWrapper.clear();
rMpEventDetailMPOQueryWrapper.
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpEventDetailMPO> rMpEventDetailMPOS = rMpEventDetailMMapper.selectList(rMpEventDetailMPOQueryWrapper);
rStatOrgMPOQueryWrapper.clear();
rStatOrgMPOQueryWrapper.select("effective_measurement_accrued").
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", k).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
between("data_date",begin,end);
RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper);
eventStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
return;
}
//天表
rStatEventVoltageDPOQueryWrapper.clear();
rStatEventVoltageDPOQueryWrapper.
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
between("data_date",begin,end).
eq("measurement_type_class", k).
eq("event_type", dictData.getId()).
eq("voltage_type",k1).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
List<RStatEventVoltageDPO> rStatEventVoltageDPOS = rStatEventVoltageDPOMapper.selectList(rStatEventVoltageDPOQueryWrapper);
//累计发生暂态监测点数
List<Integer> transientStatisDataNew = getTransientStatisDataNewByM(dictData, rMpEventDetailMPOS);
RStatEventVoltageMPO rStatEventVoltageMPO = new RStatEventVoltageMPO();
rStatEventVoltageMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatEventVoltageMPO.setDataDate(localDate);
rStatEventVoltageMPO.setMeasurementTypeClass(k);
rStatEventVoltageMPO.setEventType(dictData.getId());
rStatEventVoltageMPO.setVoltageType(k1);
rStatEventVoltageMPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
/*3、日均发生暂态监测点数*/
double asDouble = rStatEventVoltageDPOS.stream().mapToDouble(RStatEventVoltageDPO::getEventMeasurement).average().getAsDouble();
asDouble = BigDecimal.valueOf(asDouble).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
rStatEventVoltageMPO.setEventMeasurementAverage(Float.parseFloat(asDouble+""));
/*4、累计发生暂态监测点数*/
rStatEventVoltageMPO.setEventMeasurementAccrued(transientStatisDataNew.get(0));
int eventMeasurementsum = rStatEventVoltageDPOS.stream().mapToInt(RStatEventVoltageDPO::getEventMeasurement).sum();
int eventCountsum = rStatEventVoltageDPOS.stream().mapToInt(RStatEventVoltageDPO::getEventCount).sum();
/*5、暂态指标发生频次*/
if (eventMeasurementsum==0){
rStatEventVoltageMPO.setEventFreq(0.00f);
}else {
String value = df.format((float) eventCountsum / eventMeasurementsum);
rStatEventVoltageMPO.setEventFreq(Float.parseFloat(value));
}
/*6、暂态指标发生次数*/
rStatEventVoltageMPO.setEventCount(eventCountsum);
/*7、日均发生暂态监测点数占比*/
double asDouble2 = rStatEventVoltageDPOS.stream().mapToDouble(RStatEventVoltageDPO::getEventMeasurementRatio).average().getAsDouble();
asDouble2 = BigDecimal.valueOf(asDouble2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
rStatEventVoltageMPO.setEventMeasurementRatioAverage(Float.parseFloat(asDouble2+""));
if (Objects.isNull(rStatOrgMPO)) {
rStatEventVoltageMPO.setEventMeasurementRatioAccrued(0.00f);
} else {
if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) {
rStatEventVoltageMPO.setEventMeasurementRatioAccrued(0.00f);
} else {
String value = df.format(rStatEventVoltageMPO.getEventMeasurementAccrued() / rStatOrgMPO.getEffectiveMeasurementAccrued().floatValue());
rStatEventVoltageMPO.setEventMeasurementRatioAccrued(Float.parseFloat(value));
}
}
rStatEventVoltageMPOS.add(rStatEventVoltageMPO);
});
});
});
}
/*配网*/
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())) {
List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
Map<Integer, List<LineDevGetDTO>> collect = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
collect.forEach((k, v) -> {
Map<String, List<LineDevGetDTO>> collect2 = v.stream().collect(Collectors.groupingBy(LineDevGetDTO::getVoltageLevel));
collect2.forEach((k1, v1) -> {
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
rMpEventDetailMPOQueryWrapper.clear();
rMpEventDetailMPOQueryWrapper.
in("measurement_point_id", collect1).
between("data_date",begin,end);
List<RMpEventDetailMPO> rMpEventDetailMPOS = rMpEventDetailMMapper.selectList(rMpEventDetailMPOQueryWrapper);
rStatOrgMPOQueryWrapper.clear();
rStatOrgMPOQueryWrapper.select("effective_measurement_accrued").
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
eq("measurement_type_class", k).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
between("data_date",begin,end);
RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper);
eventStatis.forEach(dictData -> {
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
return;
}
//天表
rStatEventVoltageDPOQueryWrapper.clear();
rStatEventVoltageDPOQueryWrapper.
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
between("data_date",begin,end).
eq("measurement_type_class", k).
eq("event_type", dictData.getId()).
eq("voltage_type",k1).
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
List<RStatEventVoltageDPO> rStatEventVoltageDPOS = rStatEventVoltageDPOMapper.selectList(rStatEventVoltageDPOQueryWrapper);
RStatEventVoltageMPO rStatEventVoltageMPO = new RStatEventVoltageMPO();
rStatEventVoltageMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rStatEventVoltageMPO.setDataDate(localDate);
rStatEventVoltageMPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
rStatEventVoltageMPO.setEventType(dictData.getId());
rStatEventVoltageMPO.setVoltageType(k1);
rStatEventVoltageMPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
List<Integer> transientStatisDataNew = getTransientStatisDataNewByM(dictData, rMpEventDetailMPOS);
/*3、日均发生暂态监测点数*/
double asDouble = rStatEventVoltageDPOS.stream().mapToDouble(RStatEventVoltageDPO::getEventMeasurement).average().getAsDouble();
asDouble = BigDecimal.valueOf(asDouble).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
rStatEventVoltageMPO.setEventMeasurementAverage(Float.parseFloat(asDouble+""));
/*4、累计发生暂态监测点数*/
rStatEventVoltageMPO.setEventMeasurementAccrued(transientStatisDataNew.get(0));
int eventMeasurementsum = rStatEventVoltageDPOS.stream().mapToInt(RStatEventVoltageDPO::getEventMeasurement).sum();
int eventCountsum = rStatEventVoltageDPOS.stream().mapToInt(RStatEventVoltageDPO::getEventCount).sum();
/*5、暂态指标发生频次*/
if (eventMeasurementsum==0){
rStatEventVoltageMPO.setEventFreq(0.00f);
}else {
String value = df.format((float) eventCountsum / eventMeasurementsum);
rStatEventVoltageMPO.setEventFreq(Float.parseFloat(value));
}
/*6、暂态指标发生次数*/
rStatEventVoltageMPO.setEventCount(eventCountsum);
/*7、日均发生暂态监测点数占比*/
double asDouble2 = rStatEventVoltageDPOS.stream().mapToDouble(RStatEventVoltageDPO::getEventMeasurementRatio).average().getAsDouble();
asDouble2 = BigDecimal.valueOf(asDouble2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
rStatEventVoltageMPO.setEventMeasurementRatioAverage(Float.parseFloat(asDouble2+""));
if (Objects.isNull(rStatOrgMPO)) {
rStatEventVoltageMPO.setEventMeasurementRatioAccrued(0.00f);
} else {
if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) {
rStatEventVoltageMPO.setEventMeasurementRatioAccrued(0.00f);
} else {
String value = df.format(rStatEventVoltageMPO.getEventMeasurementAccrued() / rStatOrgMPO.getEffectiveMeasurementAccrued().floatValue());
rStatEventVoltageMPO.setEventMeasurementRatioAccrued(Float.parseFloat(value));
}
}
rStatEventVoltageMPOS.add(rStatEventVoltageMPO);
});
});
});
}
});
if (!CollectionUtils.isEmpty(rStatEventVoltageMPOS)) {
rStatEventVoltageMPOService.saveOrUpdateBatchByMultiId(rStatEventVoltageMPOS, 500);
}
}
private List<Integer> getTransientStatisDataNewByM(DictData dictData, List<RMpEventDetailMPO> rMpEventDetailMPOS) {
List<Integer> result = new ArrayList<>(2);
Integer value = 0;
Integer count = 0;
if (Objects.equals(dictData.getCode(), DicDataEnum.VOLTAGE_DIP.getCode())) {
value = Integer.valueOf(rMpEventDetailMPOS.stream().filter(temp -> temp.getSagTimes() > 0).count() + "");
count = Integer.valueOf(rMpEventDetailMPOS.stream().mapToInt(RMpEventDetailMPO::getSagTimes).sum() + "");
}
if (Objects.equals(dictData.getCode(), DicDataEnum.VOLTAGE_RISE.getCode())) {
value = Integer.valueOf(rMpEventDetailMPOS.stream().filter(temp -> temp.getSwellTimes() > 0).count() + "");
count = Integer.valueOf(rMpEventDetailMPOS.stream().mapToInt(RMpEventDetailMPO::getSwellTimes).sum() + "");
}
if (Objects.equals(dictData.getCode(), DicDataEnum.SHORT_INTERRUPTIONS.getCode())) {
value = Integer.valueOf(rMpEventDetailMPOS.stream().filter(temp -> temp.getInterruptTimes() > 0).count() + "");
count = Integer.valueOf(rMpEventDetailMPOS.stream().mapToInt(RMpEventDetailMPO::getInterruptTimes).sum() + "");
}
result.add(value);
result.add(count);
return result;
}
/**----------------------------------------------------------------------------------------------------------------**/
@Override @Override
public void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) { public void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
switch (type) { switch (type) {
@@ -74,6 +513,8 @@ public class RStatEventVoltageServiceImpl implements RStatEventVoltageService {
} }
} }
//天表 //天表
public void rStartEventVoltageDHandler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) { public void rStartEventVoltageDHandler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
List<RStatEventVoltageDPO> rStatEventVoltageDPOS = new ArrayList<>(); List<RStatEventVoltageDPO> rStatEventVoltageDPOS = new ArrayList<>();

View File

@@ -1,10 +1,15 @@
package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl; package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.device.pms.pojo.po.RStatOrgPO; import com.njcn.device.pms.pojo.po.RStatOrgPO;
import com.njcn.harmonic.pojo.po.RStatOrgMPO; import com.njcn.harmonic.pojo.po.RStatOrgMPO;
import com.njcn.prepare.bo.CalculatedParam;
import com.njcn.prepare.harmonic.mapper.mysql.area.*; import com.njcn.prepare.harmonic.mapper.mysql.area.*;
import com.njcn.prepare.harmonic.pojo.mysql.po.*; import com.njcn.prepare.harmonic.pojo.mysql.po.*;
import com.njcn.prepare.harmonic.service.mysql.area.RStatHarmonicDPOService; import com.njcn.prepare.harmonic.service.mysql.area.RStatHarmonicDPOService;
@@ -25,6 +30,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.time.LocalDate;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -57,6 +63,395 @@ public class RStatLoadTypeServiceImpl implements RStatLoadTypeService {
private final RStatOrgMMapper rStatOrgMMapper; private final RStatOrgMMapper rStatOrgMMapper;
private final RStatOrgQMapper rStatOrgQMapper; private final RStatOrgQMapper rStatOrgQMapper;
private final RStatOrgYMapper rStatOrgYMapper; private final RStatOrgYMapper rStatOrgYMapper;
@Override
public void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
LocalDate localDate = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
List<RStatLoadTypeDPO> result = new ArrayList<>();
List<DictData> dataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.MONITORING_LABELS.getCode()).getData();
//过滤监测对象类型(陆上风电、分布式光伏、电气化铁路、其他非线性负荷)
Map<String, DictData> collect = dataList.stream().filter(temp -> Objects.equals(temp.getLevel(), 1)).collect(Collectors.toMap(DictData::getId, dictData -> dictData));
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
;
/*获取稳态统计指标*/
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
Map<String, DictData> steadyStatisMap = steadyStatis.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
calculatedParam.getIdList().forEach(dept -> {
collect.forEach((m,n)->{
RStatLoadTypeDPO rStatLoadTypeDPO = new RStatLoadTypeDPO();
rStatLoadTypeDPO.setDataDate(localDate);
rStatLoadTypeDPO.setOrgNo(dept.getUnitId());
rStatLoadTypeDPO.setLoadType(m);
/*只计算谐波电压、谐波电流、三相电压不平衡度、负序电流/闪变*/
RStatHarmonicDPO one = rStatHarmonicDPOService.lambdaQuery().eq(RStatHarmonicDPO::getOrgNo, dept.getUnitId()).
eq(RStatHarmonicDPO::getDataDate, localDate).
eq(RStatHarmonicDPO::getMeasurementTypeClass, m).
eq(RStatHarmonicDPO::getDataType, dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
eq(RStatHarmonicDPO::getHarmonicType, steadyStatisMap.get(DicDataEnum.HARMONIC_VOLTAGE.getCode()).getId()).one();
if(Objects.nonNull(one)){
rStatLoadTypeDPO.setVRatio(one.getOverLimitMeasurementRatio());
}else {
rStatLoadTypeDPO.setVRatio(0.00);
}
RStatHarmonicDPO two = rStatHarmonicDPOService.lambdaQuery().eq(RStatHarmonicDPO::getOrgNo, dept.getUnitId()).
eq(RStatHarmonicDPO::getDataDate, localDate).
eq(RStatHarmonicDPO::getMeasurementTypeClass, m).
eq(RStatHarmonicDPO::getDataType, dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
eq(RStatHarmonicDPO::getHarmonicType, steadyStatisMap.get(DicDataEnum.HARMONIC_CURRENT.getCode()).getId()).one();
if(Objects.nonNull(two)){
rStatLoadTypeDPO.setIRatio(two.getOverLimitMeasurementRatio());
}else {
rStatLoadTypeDPO.setIRatio(0.00);
}
RStatHarmonicDPO three = rStatHarmonicDPOService.lambdaQuery().eq(RStatHarmonicDPO::getOrgNo, dept.getUnitId()).
eq(RStatHarmonicDPO::getDataDate, localDate).
eq(RStatHarmonicDPO::getMeasurementTypeClass, m).
eq(RStatHarmonicDPO::getDataType, dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
eq(RStatHarmonicDPO::getHarmonicType, steadyStatisMap.get(DicDataEnum.PHASE_VOLTAGE.getCode()).getId()).one();
if(Objects.nonNull(three)){
rStatLoadTypeDPO.setUnbalanceRatio(three.getOverLimitMeasurementRatio());
}else {
rStatLoadTypeDPO.setUnbalanceRatio(0.00);
}
RStatHarmonicDPO four = rStatHarmonicDPOService.lambdaQuery().eq(RStatHarmonicDPO::getOrgNo, dept.getUnitId()).
eq(RStatHarmonicDPO::getDataDate, localDate).
eq(RStatHarmonicDPO::getMeasurementTypeClass, m).
eq(RStatHarmonicDPO::getDataType, dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
eq(RStatHarmonicDPO::getHarmonicType, steadyStatisMap.get(DicDataEnum.NEG_CURRENT.getCode()).getId()).one();
if(Objects.nonNull(four)){
rStatLoadTypeDPO.setINegRatio(four.getOverLimitMeasurementRatio());
}else {
rStatLoadTypeDPO.setINegRatio(0.00);
}
RStatHarmonicDPO five = rStatHarmonicDPOService.lambdaQuery().eq(RStatHarmonicDPO::getOrgNo, dept.getUnitId()).
eq(RStatHarmonicDPO::getDataDate, localDate).
eq(RStatHarmonicDPO::getMeasurementTypeClass, m).
eq(RStatHarmonicDPO::getDataType, dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
eq(RStatHarmonicDPO::getHarmonicType, steadyStatisMap.get(DicDataEnum.FLICKER.getCode()).getId()).one();
if(Objects.nonNull(five)){
rStatLoadTypeDPO.setFlickerRatio(five.getOverLimitMeasurementRatio());
}else {
rStatLoadTypeDPO.setFlickerRatio(0.00);
}
result.add(rStatLoadTypeDPO);
});
});
if(CollectionUtil.isNotEmpty(result)){
rStatLoadTypeDPOService.saveOrUpdateBatchByMultiId(result,500);
}
}
@Override
public void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
DateTime end = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
List<RStatLoadTypeMPO> result = new ArrayList<>();
QueryWrapper<RStatHarmonicMPO> queryWrapper = new QueryWrapper<>();
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
QueryWrapper<RStatLoadTypeDPO> rStatLoadTypeDPOQueryWrapper = new QueryWrapper<>();
List<DictData> dataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.MONITORING_LABELS.getCode()).getData();
//过滤监测对象类型(陆上风电、分布式光伏、电气化铁路、其他非线性负荷)
Map<String, DictData> collect = dataList.stream().filter(temp -> Objects.equals(temp.getLevel(), 1)).collect(Collectors.toMap(DictData::getId, dictData -> dictData));
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
;
/*获取稳态统计指标*/
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
Map<String, DictData> steadyStatisMap = steadyStatis.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
calculatedParam.getIdList().forEach(dept -> {
collect.forEach((m,n)->{
rStatOrgMPOQueryWrapper.clear();
rStatOrgMPOQueryWrapper.eq("measurement_type_class",m).
eq("org_no",dept.getUnitId()).
between("data_date",begin,end);
List<RStatOrgMPO> rStatOrgMPOS = rStatOrgMMapper.selectList(rStatOrgMPOQueryWrapper);
queryWrapper.clear();
queryWrapper.eq("org_no",dept.getUnitId()).
between("data_date",begin,end);
List<RStatHarmonicMPO> rStatHarmonicMPOS = rStatHarmonicMPOMapper.selectList(queryWrapper);
rStatLoadTypeDPOQueryWrapper.clear();
rStatLoadTypeDPOQueryWrapper.eq("org_no",dept.getUnitId()).
eq("load_type",m).
between("data_date",begin,end);
List<RStatLoadTypeDPO> rStatLoadTypeDPOS = rStatLoadTypeDPOService.getBaseMapper().selectList(rStatLoadTypeDPOQueryWrapper);
RStatLoadTypeMPO rStatLoadTypeMPO = new RStatLoadTypeMPO();
rStatLoadTypeMPO.setDataDate(localDate);
rStatLoadTypeMPO.setOrgNo(dept.getUnitId());
rStatLoadTypeMPO.setLoadType(m);
/*2、有效接入监测点数*/
if(CollectionUtils.isEmpty(rStatOrgMPOS)){
rStatLoadTypeMPO.setEffectiveMeasurement(0);
}else {
rStatLoadTypeMPO.setEffectiveMeasurement(rStatOrgMPOS.get(0).getEffectiveMeasurementAccrued());
}
/*4、谐波电压超标点数6、谐波电流超标点数*/
if(CollectionUtils.isEmpty(rStatHarmonicMPOS)){
rStatLoadTypeMPO.setVCount(0);
rStatLoadTypeMPO.setICount(0);
rStatLoadTypeMPO.setINegCount(0);
rStatLoadTypeMPO.setUnbalanceCount(0);
rStatLoadTypeMPO.setFlickerCount(0);
}else {
Optional<RStatHarmonicMPO> vfirst = rStatHarmonicMPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.HARMONIC_VOLTAGE.getCode()).getId())).findFirst();
rStatLoadTypeMPO.setVCount(vfirst.isPresent() ? vfirst.get().getOverLimitMeasurementAccrued(): 0);
Optional<RStatHarmonicMPO> ifirst = rStatHarmonicMPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.HARMONIC_CURRENT.getCode()).getId())).findFirst();
rStatLoadTypeMPO.setICount(ifirst.isPresent() ? ifirst.get().getOverLimitMeasurementAccrued(): 0);
Optional<RStatHarmonicMPO> pfirst = rStatHarmonicMPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.PHASE_VOLTAGE.getCode()).getId())).findFirst();
Optional<RStatHarmonicMPO> nfirst = rStatHarmonicMPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.NEG_CURRENT.getCode()).getId())).findFirst();
Optional<RStatHarmonicMPO> ffirst = rStatHarmonicMPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.FLICKER.getCode()).getId())).findFirst();
rStatLoadTypeMPO.setINegCount(nfirst.isPresent() ? nfirst.get().getOverLimitMeasurementAccrued(): 0);
rStatLoadTypeMPO.setUnbalanceCount(pfirst.isPresent() ? pfirst.get().getOverLimitMeasurementAccrued(): 0);
rStatLoadTypeMPO.setFlickerCount(ffirst.isPresent() ? ffirst.get().getOverLimitMeasurementAccrued(): 0);
}
/*3、日均谐波电压超标点占比5、日均谐波电流超标点占比,7、日均三相电压不平衡度超标点占比9、日均负序电流超标点占比11、日均闪变超标点占比*/
if(CollectionUtils.isEmpty(rStatLoadTypeDPOS)){
rStatLoadTypeMPO.setVAverage(0.00);
rStatLoadTypeMPO.setIAverage(0.00);
rStatLoadTypeMPO.setUnbalanceAverage(0.00);
rStatLoadTypeMPO.setFlickerAverage(0.00);
rStatLoadTypeMPO.setINegAverage(0.00);
}else {
double vavg = rStatLoadTypeDPOS.stream().mapToDouble(RStatLoadTypeDPO::getVRatio).average().getAsDouble();
rStatLoadTypeMPO.setVAverage(vavg);
double iavge = rStatLoadTypeDPOS.stream().mapToDouble(RStatLoadTypeDPO::getIRatio).average().getAsDouble();
rStatLoadTypeMPO.setIAverage(iavge);
double uavge = rStatLoadTypeDPOS.stream().mapToDouble(RStatLoadTypeDPO::getUnbalanceRatio).average().getAsDouble();
rStatLoadTypeMPO.setUnbalanceAverage(uavge);
double inavge = rStatLoadTypeDPOS.stream().mapToDouble(RStatLoadTypeDPO::getINegRatio).average().getAsDouble();
double favg = rStatLoadTypeDPOS.stream().mapToDouble(RStatLoadTypeDPO::getFlickerRatio).average().getAsDouble();
rStatLoadTypeMPO.setFlickerAverage(favg);
rStatLoadTypeMPO.setINegAverage(inavge);
}
result.add(rStatLoadTypeMPO);
});
});
if(CollectionUtil.isNotEmpty(result)){
rStatLoadTypeMPOService.saveOrUpdateBatchByMultiId(result,500);
}
}
@Override
public void handleQtr(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
DateTime begin = DateUtil.beginOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
DateTime end = DateUtil.endOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
List<RStatLoadTypeQPO> result = new ArrayList<>();
QueryWrapper<RStatHarmonicQPO> queryWrapper = new QueryWrapper<>();
QueryWrapper<RStatOrgQPO> rStatOrgQPOQueryWrapper = new QueryWrapper<>();
QueryWrapper<RStatLoadTypeMPO> rStatLoadTypeMPOQueryWrapper = new QueryWrapper<>();
List<DictData> dataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.MONITORING_LABELS.getCode()).getData();
//过滤监测对象类型(陆上风电、分布式光伏、电气化铁路、其他非线性负荷)
Map<String, DictData> collect = dataList.stream().filter(temp -> Objects.equals(temp.getLevel(), 1)).collect(Collectors.toMap(DictData::getId, dictData -> dictData));
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
;
/*获取稳态统计指标*/
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
Map<String, DictData> steadyStatisMap = steadyStatis.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
calculatedParam.getIdList().forEach(dept -> {
collect.forEach((m,n)->{
rStatOrgQPOQueryWrapper.clear();
rStatOrgQPOQueryWrapper.eq("measurement_type_class",m).
eq("org_no",dept.getUnitId()).
between("data_date",begin,end);
List<RStatOrgQPO> rStatOrgQPOS = rStatOrgQMapper.selectList(rStatOrgQPOQueryWrapper);
queryWrapper.clear();
queryWrapper.eq("org_no",dept.getUnitId()).
between("data_date",begin,end);
List<RStatHarmonicQPO> rStatHarmonicQPOS = rStatHarmonicQPOMapper.selectList(queryWrapper);
rStatLoadTypeMPOQueryWrapper.clear();
rStatLoadTypeMPOQueryWrapper.eq("org_no",dept.getUnitId()).
eq("load_type",m).
between("data_date",begin,end);
List<RStatLoadTypeMPO> rStatLoadTypeMPOS = rStatLoadTypeMPOService.getBaseMapper().selectList(rStatLoadTypeMPOQueryWrapper);
RStatLoadTypeQPO rStatLoadTypeQPO = new RStatLoadTypeQPO();
rStatLoadTypeQPO.setDataDate(localDate);
rStatLoadTypeQPO.setOrgNo(dept.getUnitId());
rStatLoadTypeQPO.setLoadType(m);
/*2、有效接入监测点数*/
if(CollectionUtils.isEmpty(rStatOrgQPOS)){
rStatLoadTypeQPO.setEffectiveMeasurement(0);
}else {
rStatLoadTypeQPO.setEffectiveMeasurement(rStatOrgQPOS.get(0).getEffectiveMeasurementAccrued());
}
/*4、谐波电压超标点数6、谐波电流超标点数*/
if(CollectionUtils.isEmpty(rStatHarmonicQPOS)){
rStatLoadTypeQPO.setVCount(0);
rStatLoadTypeQPO.setICount(0);
rStatLoadTypeQPO.setINegCount(0);
rStatLoadTypeQPO.setUnbalanceCount(0);
rStatLoadTypeQPO.setFlickerCount(0);
}else {
Optional<RStatHarmonicQPO> vfirst = rStatHarmonicQPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.HARMONIC_VOLTAGE.getCode()).getId())).findFirst();
rStatLoadTypeQPO.setVCount(vfirst.isPresent() ? vfirst.get().getOverLimitMeasurementAccrued(): 0);
Optional<RStatHarmonicQPO> ifirst = rStatHarmonicQPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.HARMONIC_CURRENT.getCode()).getId())).findFirst();
rStatLoadTypeQPO.setICount(ifirst.isPresent() ? ifirst.get().getOverLimitMeasurementAccrued(): 0);
Optional<RStatHarmonicQPO> pfirst = rStatHarmonicQPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.PHASE_VOLTAGE.getCode()).getId())).findFirst();
Optional<RStatHarmonicQPO> nfirst = rStatHarmonicQPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.NEG_CURRENT.getCode()).getId())).findFirst();
Optional<RStatHarmonicQPO> ffirst = rStatHarmonicQPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.FLICKER.getCode()).getId())).findFirst();
rStatLoadTypeQPO.setINegCount(nfirst.isPresent() ? nfirst.get().getOverLimitMeasurementAccrued(): 0);
rStatLoadTypeQPO.setUnbalanceCount(pfirst.isPresent() ? pfirst.get().getOverLimitMeasurementAccrued(): 0);
rStatLoadTypeQPO.setFlickerCount(ffirst.isPresent() ? ffirst.get().getOverLimitMeasurementAccrued(): 0);
}
/*3、日均谐波电压超标点占比5、日均谐波电流超标点占比,7、日均三相电压不平衡度超标点占比9、日均负序电流超标点占比11、日均闪变超标点占比*/
if(CollectionUtils.isEmpty(rStatLoadTypeMPOS)){
rStatLoadTypeQPO.setVAverage(0.00);
rStatLoadTypeQPO.setIAverage(0.00);
rStatLoadTypeQPO.setUnbalanceAverage(0.00);
rStatLoadTypeQPO.setFlickerAverage(0.00);
rStatLoadTypeQPO.setINegAverage(0.00);
}else {
double vavg = rStatLoadTypeMPOS.stream().mapToDouble(RStatLoadTypeMPO::getVAverage).average().getAsDouble();
rStatLoadTypeQPO.setVAverage(vavg);
double iavge = rStatLoadTypeMPOS.stream().mapToDouble(RStatLoadTypeMPO::getIAverage).average().getAsDouble();
rStatLoadTypeQPO.setIAverage(iavge);
double uavge = rStatLoadTypeMPOS.stream().mapToDouble(RStatLoadTypeMPO::getUnbalanceAverage).average().getAsDouble();
rStatLoadTypeQPO.setUnbalanceAverage(uavge);
double inavge = rStatLoadTypeMPOS.stream().mapToDouble(RStatLoadTypeMPO::getINegAverage).average().getAsDouble();
double favg = rStatLoadTypeMPOS.stream().mapToDouble(RStatLoadTypeMPO::getFlickerAverage).average().getAsDouble();
rStatLoadTypeQPO.setFlickerAverage(favg);
rStatLoadTypeQPO.setINegAverage(inavge);
}
result.add(rStatLoadTypeQPO);
});
});
if(CollectionUtil.isNotEmpty(result)){
rStatLoadTypeQPOService.saveOrUpdateBatchByMultiId(result,500);
}
}
@Override
public void handleYear(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
DateTime begin = DateUtil.beginOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
DateTime end = DateUtil.endOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
List<RStatLoadTypeYPO> result = new ArrayList<>();
QueryWrapper<RStatHarmonicYPO> queryWrapper = new QueryWrapper<>();
QueryWrapper<RStatOrgYPO> rStatOrgYPOQueryWrapper = new QueryWrapper<>();
QueryWrapper<RStatLoadTypeMPO> rStatLoadTypeMPOQueryWrapper = new QueryWrapper<>();
List<DictData> dataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.MONITORING_LABELS.getCode()).getData();
//过滤监测对象类型(陆上风电、分布式光伏、电气化铁路、其他非线性负荷)
Map<String, DictData> collect = dataList.stream().filter(temp -> Objects.equals(temp.getLevel(), 1)).collect(Collectors.toMap(DictData::getId, dictData -> dictData));
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
;
/*获取稳态统计指标*/
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
Map<String, DictData> steadyStatisMap = steadyStatis.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
calculatedParam.getIdList().forEach(dept -> {
collect.forEach((m,n)->{
rStatOrgYPOQueryWrapper.clear();
rStatOrgYPOQueryWrapper.eq("measurement_type_class",m).
eq("org_no",dept.getUnitId()).
between("data_date",begin,end);
List<RStatOrgYPO> rStatOrgYPOS = rStatOrgYMapper.selectList(rStatOrgYPOQueryWrapper);
queryWrapper.clear();
queryWrapper.eq("org_no",dept.getUnitId()).
between("data_date",begin,end);
List<RStatHarmonicYPO> rStatHarmonicYPOS = rStatHarmonicYPOMapper.selectList(queryWrapper);
rStatLoadTypeMPOQueryWrapper.clear();
rStatLoadTypeMPOQueryWrapper.eq("org_no",dept.getUnitId()).
eq("load_type",m).
between("data_date",begin,end);
List<RStatLoadTypeMPO> rStatLoadTypeMPOS = rStatLoadTypeMPOService.getBaseMapper().selectList(rStatLoadTypeMPOQueryWrapper);
RStatLoadTypeYPO rStatLoadTypeYPO = new RStatLoadTypeYPO();
rStatLoadTypeYPO.setDataDate(localDate);
rStatLoadTypeYPO.setOrgNo(dept.getUnitId());
rStatLoadTypeYPO.setLoadType(m);
/*2、有效接入监测点数*/
if(CollectionUtils.isEmpty(rStatOrgYPOS)){
rStatLoadTypeYPO.setEffectiveMeasurement(0);
}else {
rStatLoadTypeYPO.setEffectiveMeasurement(rStatOrgYPOS.get(0).getEffectiveMeasurementAccrued());
}
/*4、谐波电压超标点数6、谐波电流超标点数*/
if(CollectionUtils.isEmpty(rStatHarmonicYPOS)){
rStatLoadTypeYPO.setVCount(0);
rStatLoadTypeYPO.setICount(0);
rStatLoadTypeYPO.setINegCount(0);
rStatLoadTypeYPO.setUnbalanceCount(0);
rStatLoadTypeYPO.setFlickerCount(0);
}else {
Optional<RStatHarmonicYPO> vfirst = rStatHarmonicYPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.HARMONIC_VOLTAGE.getCode()).getId())).findFirst();
rStatLoadTypeYPO.setVCount(vfirst.isPresent() ? vfirst.get().getOverLimitMeasurementAccrued(): 0);
Optional<RStatHarmonicYPO> ifirst = rStatHarmonicYPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.HARMONIC_CURRENT.getCode()).getId())).findFirst();
rStatLoadTypeYPO.setICount(ifirst.isPresent() ? ifirst.get().getOverLimitMeasurementAccrued(): 0);
Optional<RStatHarmonicYPO> pfirst = rStatHarmonicYPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.PHASE_VOLTAGE.getCode()).getId())).findFirst();
Optional<RStatHarmonicYPO> nfirst = rStatHarmonicYPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.NEG_CURRENT.getCode()).getId())).findFirst();
Optional<RStatHarmonicYPO> ffirst = rStatHarmonicYPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.FLICKER.getCode()).getId())).findFirst();
rStatLoadTypeYPO.setINegCount(nfirst.isPresent() ? nfirst.get().getOverLimitMeasurementAccrued(): 0);
rStatLoadTypeYPO.setUnbalanceCount(pfirst.isPresent() ? pfirst.get().getOverLimitMeasurementAccrued(): 0);
rStatLoadTypeYPO.setFlickerCount(ffirst.isPresent() ? ffirst.get().getOverLimitMeasurementAccrued(): 0);
}
/*3、日均谐波电压超标点占比5、日均谐波电流超标点占比,7、日均三相电压不平衡度超标点占比9、日均负序电流超标点占比11、日均闪变超标点占比*/
if(CollectionUtils.isEmpty(rStatLoadTypeMPOS)){
rStatLoadTypeYPO.setVAverage(0.00);
rStatLoadTypeYPO.setIAverage(0.00);
rStatLoadTypeYPO.setUnbalanceAverage(0.00);
rStatLoadTypeYPO.setFlickerAverage(0.00);
rStatLoadTypeYPO.setINegAverage(0.00);
}else {
double vavg = rStatLoadTypeMPOS.stream().mapToDouble(RStatLoadTypeMPO::getVAverage).average().getAsDouble();
rStatLoadTypeYPO.setVAverage(vavg);
double iavge = rStatLoadTypeMPOS.stream().mapToDouble(RStatLoadTypeMPO::getIAverage).average().getAsDouble();
rStatLoadTypeYPO.setIAverage(iavge);
double uavge = rStatLoadTypeMPOS.stream().mapToDouble(RStatLoadTypeMPO::getUnbalanceAverage).average().getAsDouble();
rStatLoadTypeYPO.setUnbalanceAverage(uavge);
double inavge = rStatLoadTypeMPOS.stream().mapToDouble(RStatLoadTypeMPO::getINegAverage).average().getAsDouble();
double favg = rStatLoadTypeMPOS.stream().mapToDouble(RStatLoadTypeMPO::getFlickerAverage).average().getAsDouble();
rStatLoadTypeYPO.setFlickerAverage(favg);
rStatLoadTypeYPO.setINegAverage(inavge);
}
result.add(rStatLoadTypeYPO);
});
});
if(CollectionUtil.isNotEmpty(result)){
rStatLoadTypeYPOService.saveOrUpdateBatchByMultiId(result,500);
}
}
@Override @Override
public void handler(List<Dept> deptList, String dataDate, Integer type) { public void handler(List<Dept> deptList, String dataDate, Integer type) {
switch (type) { switch (type) {
@@ -76,11 +471,14 @@ public class RStatLoadTypeServiceImpl implements RStatLoadTypeService {
break; break;
} }
} }
@Transactional(rollbackFor = {Exception.class}) @Transactional(rollbackFor = {Exception.class})
@Async("asyncExecutor") @Async("asyncExecutor")
@SneakyThrows @SneakyThrows
private void hanlderYear(List<Dept> deptList, String dataDate, Integer type) { private void hanlderYear(List<Dept> deptList, String dataDate, Integer type) {
Date date = DateUtil.parse(dataDate); LocalDate localDate = LocalDateTimeUtil.parseDate(dataDate, DatePattern.NORM_DATE_PATTERN);
List<RStatLoadTypeYPO> result = new ArrayList<>(); List<RStatLoadTypeYPO> result = new ArrayList<>();
QueryWrapper<RStatHarmonicYPO> queryWrapper = new QueryWrapper<>(); QueryWrapper<RStatHarmonicYPO> queryWrapper = new QueryWrapper<>();
QueryWrapper<RStatOrgYPO> rStatOrgYPOQueryWrapper = new QueryWrapper<>(); QueryWrapper<RStatOrgYPO> rStatOrgYPOQueryWrapper = new QueryWrapper<>();
@@ -117,7 +515,7 @@ public class RStatLoadTypeServiceImpl implements RStatLoadTypeService {
List<RStatLoadTypeMPO> rStatLoadTypeMPOS = rStatLoadTypeMPOService.getBaseMapper().selectList(rStatLoadTypeMPOQueryWrapper); List<RStatLoadTypeMPO> rStatLoadTypeMPOS = rStatLoadTypeMPOService.getBaseMapper().selectList(rStatLoadTypeMPOQueryWrapper);
RStatLoadTypeYPO rStatLoadTypeYPO = new RStatLoadTypeYPO(); RStatLoadTypeYPO rStatLoadTypeYPO = new RStatLoadTypeYPO();
rStatLoadTypeYPO.setDataDate(date); rStatLoadTypeYPO.setDataDate(localDate);
rStatLoadTypeYPO.setOrgNo(dept.getId()); rStatLoadTypeYPO.setOrgNo(dept.getId());
rStatLoadTypeYPO.setLoadType(m); rStatLoadTypeYPO.setLoadType(m);
/*2、有效接入监测点数*/ /*2、有效接入监测点数*/
@@ -178,7 +576,7 @@ public class RStatLoadTypeServiceImpl implements RStatLoadTypeService {
@Async("asyncExecutor") @Async("asyncExecutor")
@SneakyThrows @SneakyThrows
private void hanlderQtr(List<Dept> deptList, String dataDate, Integer type) { private void hanlderQtr(List<Dept> deptList, String dataDate, Integer type) {
Date date = DateUtil.parse(dataDate); LocalDate localDate = LocalDateTimeUtil.parseDate(dataDate, DatePattern.NORM_DATE_PATTERN);
List<RStatLoadTypeQPO> result = new ArrayList<>(); List<RStatLoadTypeQPO> result = new ArrayList<>();
QueryWrapper<RStatHarmonicQPO> queryWrapper = new QueryWrapper<>(); QueryWrapper<RStatHarmonicQPO> queryWrapper = new QueryWrapper<>();
QueryWrapper<RStatOrgQPO> rStatOrgQPOQueryWrapper = new QueryWrapper<>(); QueryWrapper<RStatOrgQPO> rStatOrgQPOQueryWrapper = new QueryWrapper<>();
@@ -215,7 +613,7 @@ public class RStatLoadTypeServiceImpl implements RStatLoadTypeService {
List<RStatLoadTypeMPO> rStatLoadTypeMPOS = rStatLoadTypeMPOService.getBaseMapper().selectList(rStatLoadTypeMPOQueryWrapper); List<RStatLoadTypeMPO> rStatLoadTypeMPOS = rStatLoadTypeMPOService.getBaseMapper().selectList(rStatLoadTypeMPOQueryWrapper);
RStatLoadTypeQPO rStatLoadTypeQPO = new RStatLoadTypeQPO(); RStatLoadTypeQPO rStatLoadTypeQPO = new RStatLoadTypeQPO();
rStatLoadTypeQPO.setDataDate(date); rStatLoadTypeQPO.setDataDate(localDate);
rStatLoadTypeQPO.setOrgNo(dept.getId()); rStatLoadTypeQPO.setOrgNo(dept.getId());
rStatLoadTypeQPO.setLoadType(m); rStatLoadTypeQPO.setLoadType(m);
/*2、有效接入监测点数*/ /*2、有效接入监测点数*/
@@ -278,7 +676,7 @@ public class RStatLoadTypeServiceImpl implements RStatLoadTypeService {
@Async("asyncExecutor") @Async("asyncExecutor")
@SneakyThrows @SneakyThrows
private void hanlderMonth(List<Dept> deptList, String dataDate, Integer type) { private void hanlderMonth(List<Dept> deptList, String dataDate, Integer type) {
Date date = DateUtil.parse(dataDate); LocalDate localDate = LocalDateTimeUtil.parseDate(dataDate, DatePattern.NORM_DATE_PATTERN);
List<RStatLoadTypeMPO> result = new ArrayList<>(); List<RStatLoadTypeMPO> result = new ArrayList<>();
QueryWrapper<RStatHarmonicMPO> queryWrapper = new QueryWrapper<>(); QueryWrapper<RStatHarmonicMPO> queryWrapper = new QueryWrapper<>();
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>(); QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
@@ -315,7 +713,7 @@ public class RStatLoadTypeServiceImpl implements RStatLoadTypeService {
List<RStatLoadTypeDPO> rStatLoadTypeDPOS = rStatLoadTypeDPOService.getBaseMapper().selectList(rStatLoadTypeDPOQueryWrapper); List<RStatLoadTypeDPO> rStatLoadTypeDPOS = rStatLoadTypeDPOService.getBaseMapper().selectList(rStatLoadTypeDPOQueryWrapper);
RStatLoadTypeMPO rStatLoadTypeMPO = new RStatLoadTypeMPO(); RStatLoadTypeMPO rStatLoadTypeMPO = new RStatLoadTypeMPO();
rStatLoadTypeMPO.setDataDate(date); rStatLoadTypeMPO.setDataDate(localDate);
rStatLoadTypeMPO.setOrgNo(dept.getId()); rStatLoadTypeMPO.setOrgNo(dept.getId());
rStatLoadTypeMPO.setLoadType(m); rStatLoadTypeMPO.setLoadType(m);
/*2、有效接入监测点数*/ /*2、有效接入监测点数*/
@@ -379,7 +777,7 @@ public class RStatLoadTypeServiceImpl implements RStatLoadTypeService {
@Async("asyncExecutor") @Async("asyncExecutor")
@SneakyThrows @SneakyThrows
private void hanlderDay(List<Dept> deptList, String dataDate, Integer type) { private void hanlderDay(List<Dept> deptList, String dataDate, Integer type) {
Date date = DateUtil.parse(dataDate); LocalDate localDate = LocalDateTimeUtil.parseDate(dataDate, DatePattern.NORM_DATE_PATTERN);
List<RStatLoadTypeDPO> result = new ArrayList<>(); List<RStatLoadTypeDPO> result = new ArrayList<>();
List<DictData> dataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.MONITORING_LABELS.getCode()).getData(); List<DictData> dataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.MONITORING_LABELS.getCode()).getData();
//过滤监测对象类型(陆上风电、分布式光伏、电气化铁路、其他非线性负荷) //过滤监测对象类型(陆上风电、分布式光伏、电气化铁路、其他非线性负荷)
@@ -396,12 +794,12 @@ public class RStatLoadTypeServiceImpl implements RStatLoadTypeService {
collect.forEach((m,n)->{ collect.forEach((m,n)->{
RStatLoadTypeDPO rStatLoadTypeDPO = new RStatLoadTypeDPO(); RStatLoadTypeDPO rStatLoadTypeDPO = new RStatLoadTypeDPO();
rStatLoadTypeDPO.setDataDate(date); rStatLoadTypeDPO.setDataDate(localDate);
rStatLoadTypeDPO.setOrgNo(dept.getId()); rStatLoadTypeDPO.setOrgNo(dept.getId());
rStatLoadTypeDPO.setLoadType(m); rStatLoadTypeDPO.setLoadType(m);
/*只计算谐波电压、谐波电流、三相电压不平衡度、负序电流/闪变*/ /*只计算谐波电压、谐波电流、三相电压不平衡度、负序电流/闪变*/
RStatHarmonicDPO one = rStatHarmonicDPOService.lambdaQuery().eq(RStatHarmonicDPO::getOrgNo, dept.getId()). RStatHarmonicDPO one = rStatHarmonicDPOService.lambdaQuery().eq(RStatHarmonicDPO::getOrgNo, dept.getId()).
eq(RStatHarmonicDPO::getDataDate, date). eq(RStatHarmonicDPO::getDataDate, localDate).
eq(RStatHarmonicDPO::getMeasurementTypeClass, m). eq(RStatHarmonicDPO::getMeasurementTypeClass, m).
eq(RStatHarmonicDPO::getDataType, dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()). eq(RStatHarmonicDPO::getDataType, dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
eq(RStatHarmonicDPO::getHarmonicType, steadyStatisMap.get(DicDataEnum.HARMONIC_VOLTAGE).getId()).one(); eq(RStatHarmonicDPO::getHarmonicType, steadyStatisMap.get(DicDataEnum.HARMONIC_VOLTAGE).getId()).one();
@@ -411,7 +809,7 @@ public class RStatLoadTypeServiceImpl implements RStatLoadTypeService {
rStatLoadTypeDPO.setVRatio(0.00); rStatLoadTypeDPO.setVRatio(0.00);
} }
RStatHarmonicDPO two = rStatHarmonicDPOService.lambdaQuery().eq(RStatHarmonicDPO::getOrgNo, dept.getId()). RStatHarmonicDPO two = rStatHarmonicDPOService.lambdaQuery().eq(RStatHarmonicDPO::getOrgNo, dept.getId()).
eq(RStatHarmonicDPO::getDataDate, date). eq(RStatHarmonicDPO::getDataDate, localDate).
eq(RStatHarmonicDPO::getMeasurementTypeClass, m). eq(RStatHarmonicDPO::getMeasurementTypeClass, m).
eq(RStatHarmonicDPO::getDataType, dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()). eq(RStatHarmonicDPO::getDataType, dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
eq(RStatHarmonicDPO::getHarmonicType, steadyStatisMap.get(DicDataEnum.HARMONIC_CURRENT).getId()).one(); eq(RStatHarmonicDPO::getHarmonicType, steadyStatisMap.get(DicDataEnum.HARMONIC_CURRENT).getId()).one();
@@ -421,7 +819,7 @@ public class RStatLoadTypeServiceImpl implements RStatLoadTypeService {
rStatLoadTypeDPO.setIRatio(0.00); rStatLoadTypeDPO.setIRatio(0.00);
} }
RStatHarmonicDPO three = rStatHarmonicDPOService.lambdaQuery().eq(RStatHarmonicDPO::getOrgNo, dept.getId()). RStatHarmonicDPO three = rStatHarmonicDPOService.lambdaQuery().eq(RStatHarmonicDPO::getOrgNo, dept.getId()).
eq(RStatHarmonicDPO::getDataDate, date). eq(RStatHarmonicDPO::getDataDate, localDate).
eq(RStatHarmonicDPO::getMeasurementTypeClass, m). eq(RStatHarmonicDPO::getMeasurementTypeClass, m).
eq(RStatHarmonicDPO::getDataType, dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()). eq(RStatHarmonicDPO::getDataType, dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
eq(RStatHarmonicDPO::getHarmonicType, steadyStatisMap.get(DicDataEnum.PHASE_VOLTAGE).getId()).one(); eq(RStatHarmonicDPO::getHarmonicType, steadyStatisMap.get(DicDataEnum.PHASE_VOLTAGE).getId()).one();
@@ -431,7 +829,7 @@ public class RStatLoadTypeServiceImpl implements RStatLoadTypeService {
rStatLoadTypeDPO.setUnbalanceRatio(0.00); rStatLoadTypeDPO.setUnbalanceRatio(0.00);
} }
RStatHarmonicDPO four = rStatHarmonicDPOService.lambdaQuery().eq(RStatHarmonicDPO::getOrgNo, dept.getId()). RStatHarmonicDPO four = rStatHarmonicDPOService.lambdaQuery().eq(RStatHarmonicDPO::getOrgNo, dept.getId()).
eq(RStatHarmonicDPO::getDataDate, date). eq(RStatHarmonicDPO::getDataDate, localDate).
eq(RStatHarmonicDPO::getMeasurementTypeClass, m). eq(RStatHarmonicDPO::getMeasurementTypeClass, m).
eq(RStatHarmonicDPO::getDataType, dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()). eq(RStatHarmonicDPO::getDataType, dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
eq(RStatHarmonicDPO::getHarmonicType, steadyStatisMap.get(DicDataEnum.NEG_CURRENT).getId()).one(); eq(RStatHarmonicDPO::getHarmonicType, steadyStatisMap.get(DicDataEnum.NEG_CURRENT).getId()).one();
@@ -441,7 +839,7 @@ public class RStatLoadTypeServiceImpl implements RStatLoadTypeService {
rStatLoadTypeDPO.setINegRatio(0.00); rStatLoadTypeDPO.setINegRatio(0.00);
} }
RStatHarmonicDPO five = rStatHarmonicDPOService.lambdaQuery().eq(RStatHarmonicDPO::getOrgNo, dept.getId()). RStatHarmonicDPO five = rStatHarmonicDPOService.lambdaQuery().eq(RStatHarmonicDPO::getOrgNo, dept.getId()).
eq(RStatHarmonicDPO::getDataDate, date). eq(RStatHarmonicDPO::getDataDate, localDate).
eq(RStatHarmonicDPO::getMeasurementTypeClass, m). eq(RStatHarmonicDPO::getMeasurementTypeClass, m).
eq(RStatHarmonicDPO::getDataType, dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()). eq(RStatHarmonicDPO::getDataType, dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
eq(RStatHarmonicDPO::getHarmonicType, steadyStatisMap.get(DicDataEnum.FLICKER).getId()).one(); eq(RStatHarmonicDPO::getHarmonicType, steadyStatisMap.get(DicDataEnum.FLICKER).getId()).one();