算法提交
This commit is contained in:
@@ -56,7 +56,7 @@ public class RStatOrgMPO {
|
||||
* 日均有效接入监测点数
|
||||
*/
|
||||
@TableField(value = "effective_measurement_average")
|
||||
private Float effectiveMeasurementAverage;
|
||||
private Double effectiveMeasurementAverage;
|
||||
|
||||
/**
|
||||
* 累计有效接入监测点数
|
||||
@@ -68,7 +68,7 @@ public class RStatOrgMPO {
|
||||
* 日均稳态超标监测点数
|
||||
*/
|
||||
@TableField(value = "harmonic_measurement_average")
|
||||
private Float harmonicMeasurementAverage;
|
||||
private Double harmonicMeasurementAverage;
|
||||
|
||||
/**
|
||||
* 累计稳态超标监测点数
|
||||
@@ -110,7 +110,7 @@ public class RStatOrgMPO {
|
||||
* 日均监测到暂态指标的监测点数
|
||||
*/
|
||||
@TableField(value = "event_measurement_average")
|
||||
private Float eventMeasurementAverage;
|
||||
private Double eventMeasurementAverage;
|
||||
|
||||
/**
|
||||
* 累计监测到暂态指标的监测点数
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
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 com.github.jeffreyning.mybatisplus.anno.MppMultiId;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/6/7 16:10【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Data
|
||||
@TableName(value = "r_stat_harmonic_m")
|
||||
public class RStatHarmonicMPO {
|
||||
/**
|
||||
* 单位ID
|
||||
*/
|
||||
@MppMultiId(value = "org_no")
|
||||
private String orgNo;
|
||||
|
||||
/**
|
||||
* 生成数据的时间,每月统计一次
|
||||
*/
|
||||
@MppMultiId(value = "data_date")
|
||||
private Date dataDate;
|
||||
|
||||
/**
|
||||
* 监测点类别ID、监测对象类型ID
|
||||
*/
|
||||
@MppMultiId(value = "measurement_type_class")
|
||||
private String measurementTypeClass;
|
||||
|
||||
/**
|
||||
* 稳态指标类型Id,字典表ID
|
||||
*/
|
||||
@MppMultiId(value = "harmonic_type")
|
||||
private String harmonicType;
|
||||
|
||||
/**
|
||||
* 数据类型,字典表(01:主网测点 02:配网测点)
|
||||
*/
|
||||
@MppMultiId(value = "data_type")
|
||||
private String dataType;
|
||||
|
||||
/**
|
||||
* 日均超标监测点数(根据 日表的超标监测点数 取平均值)
|
||||
*/
|
||||
@TableField(value = "over_limit_measurement_average")
|
||||
private Double overLimitMeasurementAverage;
|
||||
|
||||
/**
|
||||
* 累计超标监测点数(监测点指标统计明细日表 统计)
|
||||
*/
|
||||
@TableField(value = "over_limit_measurement_accrued")
|
||||
private Integer overLimitMeasurementAccrued;
|
||||
|
||||
/**
|
||||
* 累计超标天数(根据 日表的超标监测点数 求和)
|
||||
*/
|
||||
@TableField(value = "over_day")
|
||||
private Integer overDay;
|
||||
|
||||
/**
|
||||
* 日均超标监测点数占比(根据 日表的超标监测点数占比 取平均值)
|
||||
*/
|
||||
@TableField(value = "over_limit_measurement_ratio_average")
|
||||
private Double overLimitMeasurementRatioAverage;
|
||||
|
||||
/**
|
||||
* 累计超标监测点数占比(此表的累计超标监测点数/区域统计表中的区域分类统计月表中的累计有效接入监测点数)
|
||||
*/
|
||||
@TableField(value = "over_limit_measurement_ratio_accrued")
|
||||
private Double overLimitMeasurementRatioAccrued;
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
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 com.github.jeffreyning.mybatisplus.anno.MppMultiId;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/6/7 16:11【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Data
|
||||
@TableName(value = "r_stat_harmonic_q")
|
||||
public class RStatHarmonicQPO {
|
||||
/**
|
||||
* 单位ID
|
||||
*/
|
||||
@MppMultiId(value = "org_no")
|
||||
private String orgNo;
|
||||
|
||||
/**
|
||||
* 生成数据的时间,每季度统计一次
|
||||
*/
|
||||
@MppMultiId(value = "data_date")
|
||||
private Date dataDate;
|
||||
|
||||
/**
|
||||
* 监测点类别ID、监测对象类型ID
|
||||
*/
|
||||
@MppMultiId(value = "measurement_type_class")
|
||||
private String measurementTypeClass;
|
||||
|
||||
/**
|
||||
* 稳态指标类型Id,字典表ID
|
||||
*/
|
||||
@MppMultiId(value = "harmonic_type")
|
||||
private String harmonicType;
|
||||
|
||||
/**
|
||||
* 数据类型,字典表(01:主网测点 02:配网测点)
|
||||
*/
|
||||
@MppMultiId(value = "data_type")
|
||||
private String dataType;
|
||||
|
||||
/**
|
||||
* 日均超标监测点数(根据 日表的超标监测点数 取平均值)
|
||||
*/
|
||||
@TableField(value = "over_limit_measurement_average")
|
||||
private Integer overLimitMeasurementAverage;
|
||||
|
||||
/**
|
||||
* 累计超标监测点数(监测点指标统计明细日表 统计)
|
||||
*/
|
||||
@TableField(value = "over_limit_measurement_accrued")
|
||||
private Integer overLimitMeasurementAccrued;
|
||||
|
||||
/**
|
||||
* 平均超标天数(月表的累计超标天数之和/月表的累计超标监测点数之和)
|
||||
*/
|
||||
@TableField(value = "average_over_day")
|
||||
private Double averageOverDay;
|
||||
|
||||
/**
|
||||
* 日均超标监测点数占比(根据 日表的超标监测点数占比 取平均值)
|
||||
*/
|
||||
@TableField(value = "over_limit_measurement_ratio_average")
|
||||
private Double overLimitMeasurementRatioAverage;
|
||||
|
||||
/**
|
||||
* 累计超标监测点数占比(此表的累计超标监测点数/区域统计表中的区域分类统计季表中的累计有效接入监测点数)
|
||||
*/
|
||||
@TableField(value = "over_limit_measurement_ratio_accrued")
|
||||
private Double overLimitMeasurementRatioAccrued;
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
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 com.github.jeffreyning.mybatisplus.anno.MppMultiId;
|
||||
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 RStatHarmonicVoltageDPO {
|
||||
/**
|
||||
* 单位ID
|
||||
*/
|
||||
@MppMultiId(value = "org_no")
|
||||
private String orgNo;
|
||||
|
||||
/**
|
||||
* 生成数据的时间,每月统计一次
|
||||
*/
|
||||
@MppMultiId(value = "data_date")
|
||||
private Date dataDate;
|
||||
|
||||
/**
|
||||
* 监测对象类型ID
|
||||
*/
|
||||
@MppMultiId(value = "measurement_type_class")
|
||||
private String measurementTypeClass;
|
||||
|
||||
/**
|
||||
* 稳态指标类型Id,字典表ID
|
||||
*/
|
||||
@MppMultiId(value = "harmonic_type")
|
||||
private String harmonicType;
|
||||
|
||||
/**
|
||||
* 电压等级Id,字典表ID
|
||||
*/
|
||||
@MppMultiId(value = "voltage_type")
|
||||
private String voltageType;
|
||||
|
||||
/**
|
||||
* 数据类型,字典表(01:主网测点 02:配网测点)
|
||||
*/
|
||||
@MppMultiId(value = "data_type")
|
||||
private String dataType;
|
||||
|
||||
/**
|
||||
* 超标监测点数
|
||||
*/
|
||||
@TableField(value = "over_limit_measurement_average")
|
||||
private Integer overLimitMeasurementAverage;
|
||||
|
||||
/**
|
||||
* 超标监测点数占比
|
||||
*/
|
||||
@TableField(value = "over_limit_measurement_ratio_average")
|
||||
private Double overLimitMeasurementRatioAverage;
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
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 com.github.jeffreyning.mybatisplus.anno.MppMultiId;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/6/7 16:11【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Data
|
||||
@TableName(value = "r_stat_harmonic_y")
|
||||
public class RStatHarmonicYPO {
|
||||
/**
|
||||
* 单位ID
|
||||
*/
|
||||
@MppMultiId(value = "org_no")
|
||||
private String orgNo;
|
||||
|
||||
/**
|
||||
* 生成数据的时间,每季度统计一次
|
||||
*/
|
||||
@MppMultiId(value = "data_date")
|
||||
private Date dataDate;
|
||||
|
||||
/**
|
||||
* 监测点类别ID、监测对象类型ID
|
||||
*/
|
||||
@MppMultiId(value = "measurement_type_class")
|
||||
private String measurementTypeClass;
|
||||
|
||||
/**
|
||||
* 稳态指标类型Id,字典表ID
|
||||
*/
|
||||
@MppMultiId(value = "harmonic_type")
|
||||
private String harmonicType;
|
||||
|
||||
/**
|
||||
* 数据类型,字典表(01:主网测点 02:配网测点)
|
||||
*/
|
||||
@MppMultiId(value = "data_type")
|
||||
private String dataType;
|
||||
|
||||
/**
|
||||
* 日均超标监测点数(根据 日表的超标监测点数 取平均值)
|
||||
*/
|
||||
@TableField(value = "over_limit_measurement_average")
|
||||
private Integer overLimitMeasurementAverage;
|
||||
|
||||
/**
|
||||
* 累计超标监测点数(监测点指标统计明细日表 统计)
|
||||
*/
|
||||
@TableField(value = "over_limit_measurement_accrued")
|
||||
private Integer overLimitMeasurementAccrued;
|
||||
|
||||
/**
|
||||
* 平均超标天数(月表的累计超标天数之和/月表的累计超标监测点数之和)
|
||||
*/
|
||||
@TableField(value = "average_over_day")
|
||||
private Double averageOverDay;
|
||||
|
||||
/**
|
||||
* 日均超标监测点数占比(根据 日表的超标监测点数占比 取平均值)
|
||||
*/
|
||||
@TableField(value = "over_limit_measurement_ratio_average")
|
||||
private Double overLimitMeasurementRatioAverage;
|
||||
|
||||
/**
|
||||
* 累计超标监测点数占比(此表的累计超标监测点数/区域统计表中的区域分类统计季表中的累计有效接入监测点数)
|
||||
*/
|
||||
@TableField(value = "over_limit_measurement_ratio_accrued")
|
||||
private Double overLimitMeasurementRatioAccrued;
|
||||
}
|
||||
@@ -0,0 +1,148 @@
|
||||
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 com.github.jeffreyning.mybatisplus.anno.MppMultiId;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/6/20 11:43【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Data
|
||||
@TableName(value = "r_stat_org_q")
|
||||
public class RStatOrgQPO {
|
||||
/**
|
||||
* 单位ID
|
||||
*/
|
||||
@MppMultiId(value = "org_no")
|
||||
private String orgNo;
|
||||
|
||||
/**
|
||||
* 生成数据的时间,每季统计一次
|
||||
*/
|
||||
@MppMultiId(value = "data_date")
|
||||
private Date dataDate;
|
||||
|
||||
/**
|
||||
* 监测点类别ID、监测对象类型ID
|
||||
*/
|
||||
@MppMultiId(value = "measurement_type_class")
|
||||
private String measurementTypeClass;
|
||||
|
||||
/**
|
||||
* 总监测点数
|
||||
*/
|
||||
@TableField(value = "all_count")
|
||||
private Integer allCount;
|
||||
|
||||
/**
|
||||
* 日均有效接入监测点数
|
||||
*/
|
||||
@TableField(value = "effective_measurement_average")
|
||||
private Double effectiveMeasurementAverage;
|
||||
|
||||
/**
|
||||
* 累计有效接入监测点数
|
||||
*/
|
||||
@TableField(value = "effective_measurement_accrued")
|
||||
private Integer effectiveMeasurementAccrued;
|
||||
|
||||
/**
|
||||
* 日均稳态超标监测点数
|
||||
*/
|
||||
@TableField(value = "harmonic_measurement_average")
|
||||
private Double harmonicMeasurementAverage;
|
||||
|
||||
/**
|
||||
* 累计稳态超标监测点数
|
||||
*/
|
||||
@TableField(value = "harmonic_measurement_accrued")
|
||||
private Integer harmonicMeasurementAccrued;
|
||||
|
||||
/**
|
||||
* 日均稳态超标监测点数占比
|
||||
*/
|
||||
@TableField(value = "harmonic_measurement_ratio_average")
|
||||
private Double harmonicMeasurementRatioAverage;
|
||||
|
||||
/**
|
||||
* 稳态指标平均超标天数
|
||||
*/
|
||||
@TableField(value = "average_over_day")
|
||||
private Double averageOverDay;
|
||||
|
||||
/**
|
||||
* 频率偏差合格率
|
||||
*/
|
||||
@TableField(value = "freq_pass_rate")
|
||||
private Double freqPassRate;
|
||||
|
||||
/**
|
||||
* 电压偏差合格率
|
||||
*/
|
||||
@TableField(value = "v_dev_pass_rate")
|
||||
private Double vDevPassRate;
|
||||
|
||||
/**
|
||||
* 闪变合格率
|
||||
*/
|
||||
@TableField(value = "flicker_pass_rate")
|
||||
private Double flickerPassRate;
|
||||
|
||||
/**
|
||||
* 日均监测到暂态指标的监测点数
|
||||
*/
|
||||
@TableField(value = "event_measurement_average")
|
||||
private Double eventMeasurementAverage;
|
||||
|
||||
/**
|
||||
* 累计监测到暂态指标的监测点数
|
||||
*/
|
||||
@TableField(value = "event_measurement_accrued")
|
||||
private Integer eventMeasurementAccrued;
|
||||
|
||||
/**
|
||||
* 日均暂态超标监测点数占比
|
||||
*/
|
||||
@TableField(value = "event_measurement_ratio_average")
|
||||
private Double eventMeasurementRatioAverage;
|
||||
|
||||
/**
|
||||
* 暂态指标发生频次
|
||||
*/
|
||||
@TableField(value = "event_freq")
|
||||
private Double eventFreq;
|
||||
|
||||
/**
|
||||
* 暂态指标发生次数
|
||||
*/
|
||||
@TableField(value = "event_count")
|
||||
private Integer eventCount;
|
||||
|
||||
/**
|
||||
* 应设点数
|
||||
*/
|
||||
@TableField(value = "should_count")
|
||||
private Integer shouldCount;
|
||||
|
||||
/**
|
||||
* 告警监测点数
|
||||
*/
|
||||
@TableField(value = "warn_count")
|
||||
private Integer warnCount;
|
||||
|
||||
/**
|
||||
* 数据类型,字典表(01:主网测点 02:配网测点)
|
||||
*/
|
||||
@MppMultiId(value = "data_type")
|
||||
private String dataType;
|
||||
}
|
||||
@@ -0,0 +1,146 @@
|
||||
package com.njcn.prepare.harmonic.pojo.mysql.po;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import java.util.Date;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/6/20 11:43【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Data
|
||||
@TableName(value = "r_stat_org_y")
|
||||
public class RStatOrgYPO {
|
||||
/**
|
||||
* 单位ID
|
||||
*/
|
||||
@MppMultiId(value = "org_no")
|
||||
private String orgNo;
|
||||
|
||||
/**
|
||||
* 生成数据的时间,每年统计一次
|
||||
*/
|
||||
@MppMultiId(value = "data_date")
|
||||
private Date dataDate;
|
||||
|
||||
/**
|
||||
* 监测点类别ID、监测对象类型ID
|
||||
*/
|
||||
@MppMultiId(value = "measurement_type_class")
|
||||
private String measurementTypeClass;
|
||||
|
||||
/**
|
||||
* 数据类型,字典表(01:主网测点 02:配网测点)
|
||||
*/
|
||||
@MppMultiId(value = "data_type")
|
||||
private String dataType;
|
||||
|
||||
/**
|
||||
* 总监测点数
|
||||
*/
|
||||
@TableField(value = "all_count")
|
||||
private Integer allCount;
|
||||
|
||||
/**
|
||||
* 日均有效接入监测点数
|
||||
*/
|
||||
@TableField(value = "effective_measurement_average")
|
||||
private Double effectiveMeasurementAverage;
|
||||
|
||||
/**
|
||||
* 累计有效接入监测点数
|
||||
*/
|
||||
@TableField(value = "effective_measurement_accrued")
|
||||
private Integer effectiveMeasurementAccrued;
|
||||
|
||||
/**
|
||||
* 日均稳态超标监测点数
|
||||
*/
|
||||
@TableField(value = "over_limit_measurement_average")
|
||||
private Double overLimitMeasurementAverage;
|
||||
|
||||
/**
|
||||
* 累计稳态超标监测点数
|
||||
*/
|
||||
@TableField(value = "over_limit_measurement_accrued")
|
||||
private Integer overLimitMeasurementAccrued;
|
||||
|
||||
/**
|
||||
* 日均稳态超标监测点数占比
|
||||
*/
|
||||
@TableField(value = "harmonic_measurement_ratio_average")
|
||||
private Double harmonicMeasurementRatioAverage;
|
||||
|
||||
/**
|
||||
* 稳态指标平均超标天数
|
||||
*/
|
||||
@TableField(value = "average_over_day")
|
||||
private Double averageOverDay;
|
||||
|
||||
/**
|
||||
* 频率偏差合格率
|
||||
*/
|
||||
@TableField(value = "freq_pass_rate")
|
||||
private Double freqPassRate;
|
||||
|
||||
/**
|
||||
* 电压偏差合格率
|
||||
*/
|
||||
@TableField(value = "v_dev_pass_rate")
|
||||
private Double vDevPassRate;
|
||||
|
||||
/**
|
||||
* 闪变合格率
|
||||
*/
|
||||
@TableField(value = "flicker_pass_rate")
|
||||
private Double flickerPassRate;
|
||||
|
||||
/**
|
||||
* 日均监测到暂态指标的监测点数
|
||||
*/
|
||||
@TableField(value = "event_measurement_average")
|
||||
private Double eventMeasurementAverage;
|
||||
|
||||
/**
|
||||
* 累计监测到暂态指标的监测点数
|
||||
*/
|
||||
@TableField(value = "event_measurement_accrued")
|
||||
private Integer eventMeasurementAccrued;
|
||||
|
||||
/**
|
||||
* 日均暂态超标监测点数占比
|
||||
*/
|
||||
@TableField(value = "event_measurement_ratio_average")
|
||||
private Double eventMeasurementRatioAverage;
|
||||
|
||||
/**
|
||||
* 暂态指标发生频次
|
||||
*/
|
||||
@TableField(value = "event_freq")
|
||||
private Double eventFreq;
|
||||
|
||||
/**
|
||||
* 暂态指标发生次数
|
||||
*/
|
||||
@TableField(value = "event_count")
|
||||
private Integer eventCount;
|
||||
|
||||
/**
|
||||
* 应设点数
|
||||
*/
|
||||
@TableField(value = "should_count")
|
||||
private Integer shouldCount;
|
||||
|
||||
/**
|
||||
* 告警监测点数
|
||||
*/
|
||||
@TableField(value = "warn_count")
|
||||
private Integer warnCount;
|
||||
}
|
||||
@@ -1,85 +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.time.LocalDate;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 区域分类统计季表
|
||||
* </p>
|
||||
*
|
||||
* @author zbj
|
||||
* @since 2023-06-09
|
||||
*/
|
||||
@Data
|
||||
@TableName("r_stat_org_q")
|
||||
public class RStatOrgQPO {
|
||||
|
||||
@MppMultiId(value = "org_no")
|
||||
private String orgNo;
|
||||
|
||||
@MppMultiId(value = "data_date")
|
||||
private LocalDate dataDate;
|
||||
|
||||
@MppMultiId(value = "measurement_type_class")
|
||||
private String measurementTypeClass;
|
||||
|
||||
@TableField(value = "all_count")
|
||||
private Integer allCount;
|
||||
|
||||
@TableField(value = "effective_measurement_average")
|
||||
private Integer effectiveMeasurementAverage;
|
||||
|
||||
@TableField(value = "effective_measurement_accrued")
|
||||
private Integer effectiveMeasurementAccrued;
|
||||
|
||||
@TableField(value = "harmonic_measurement_average")
|
||||
private Integer harmonicMeasurementAverage;
|
||||
|
||||
@TableField(value = "harmonic_measurement_accrued")
|
||||
private Integer harmonicMeasurementAccrued;
|
||||
|
||||
@TableField(value = "harmonic_measurement_ratio_average")
|
||||
private Float harmonicMeasurementRatioAverage;
|
||||
|
||||
@TableField(value = "average_over_day")
|
||||
private Float averageOverDay;
|
||||
|
||||
@TableField(value = "freq_pass_rate")
|
||||
private Float freqPassRate;
|
||||
|
||||
@TableField(value = "v_dev_pass_rate")
|
||||
private Float vDevPassRate;
|
||||
|
||||
@TableField(value = "flicker_pass_rate")
|
||||
private Float flickerPassRate;
|
||||
|
||||
@TableField(value = "event_measurement_average")
|
||||
private Integer eventMeasurementAverage;
|
||||
|
||||
@TableField(value = "event_measurement_accrued")
|
||||
private Integer eventMeasurementAccrued;
|
||||
|
||||
@TableField(value = "event_measurement_average")
|
||||
private Float eventMeasurementRatioAverage;
|
||||
|
||||
@TableField(value = "event_freq")
|
||||
private Float eventFreq;
|
||||
|
||||
@TableField(value = "event_count")
|
||||
private Integer eventCount;
|
||||
|
||||
@TableField(value = "should_count")
|
||||
private Integer shouldCount;
|
||||
|
||||
@TableField(value = "warn_count")
|
||||
private Integer warnCount;
|
||||
|
||||
@MppMultiId(value = "data_type")
|
||||
private String dataType;
|
||||
|
||||
}
|
||||
@@ -1,85 +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.time.LocalDate;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 区域分类统计季表
|
||||
* </p>
|
||||
*
|
||||
* @author zbj
|
||||
* @since 2023-06-09
|
||||
*/
|
||||
@Data
|
||||
@TableName("r_stat_org_y")
|
||||
public class RStatOrgYPO {
|
||||
|
||||
@MppMultiId(value = "org_no")
|
||||
private String orgNo;
|
||||
|
||||
@MppMultiId(value = "data_date")
|
||||
private LocalDate dataDate;
|
||||
|
||||
@MppMultiId(value = "measurement_type_class")
|
||||
private String measurementTypeClass;
|
||||
|
||||
@TableField(value = "all_count")
|
||||
private Integer allCount;
|
||||
|
||||
@TableField(value = "effective_measurement_average")
|
||||
private Integer effectiveMeasurementAverage;
|
||||
|
||||
@TableField(value = "effective_measurement_accrued")
|
||||
private Integer effectiveMeasurementAccrued;
|
||||
|
||||
@TableField(value = "harmonic_measurement_average")
|
||||
private Integer harmonicMeasurementAverage;
|
||||
|
||||
@TableField(value = "harmonic_measurement_accrued")
|
||||
private Integer harmonicMeasurementAccrued;
|
||||
|
||||
@TableField(value = "harmonic_measurement_ratio_average")
|
||||
private Float harmonicMeasurementRatioAverage;
|
||||
|
||||
@TableField(value = "average_over_day")
|
||||
private Float averageOverDay;
|
||||
|
||||
@TableField(value = "freq_pass_rate")
|
||||
private Float freqPassRate;
|
||||
|
||||
@TableField(value = "v_dev_pass_rate")
|
||||
private Float vDevPassRate;
|
||||
|
||||
@TableField(value = "flicker_pass_rate")
|
||||
private Float flickerPassRate;
|
||||
|
||||
@TableField(value = "event_measurement_average")
|
||||
private Integer eventMeasurementAverage;
|
||||
|
||||
@TableField(value = "event_measurement_accrued")
|
||||
private Integer eventMeasurementAccrued;
|
||||
|
||||
@TableField(value = "event_measurement_average")
|
||||
private Float eventMeasurementRatioAverage;
|
||||
|
||||
@TableField(value = "event_freq")
|
||||
private Float eventFreq;
|
||||
|
||||
@TableField(value = "event_count")
|
||||
private Integer eventCount;
|
||||
|
||||
@TableField(value = "should_count")
|
||||
private Integer shouldCount;
|
||||
|
||||
@TableField(value = "warn_count")
|
||||
private Integer warnCount;
|
||||
|
||||
@MppMultiId(value = "data_type")
|
||||
private String dataType;
|
||||
|
||||
}
|
||||
@@ -8,7 +8,9 @@ import com.njcn.system.pojo.po.DictData;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.Month;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.temporal.TemporalAdjusters;
|
||||
import java.util.*;
|
||||
|
||||
public class PublicUtil {
|
||||
@@ -98,13 +100,51 @@ public class PublicUtil {
|
||||
// System.out.println ( PublicUtil.getNowQuarter ("2002-01-07"));
|
||||
|
||||
System.out.println(getDayByMonth(2023,03));
|
||||
LocalDate currentDate = LocalDate.now();
|
||||
|
||||
// 获取当前季度的第一个月份
|
||||
Month firstMonthOfQuarter = currentDate.getMonth().firstMonthOfQuarter();
|
||||
|
||||
// 获取当前季度的最后一个月份
|
||||
Month lastMonthOfQuarter = firstMonthOfQuarter.plus(2);
|
||||
|
||||
// 计算当前季度的总天数
|
||||
int totalDaysInQuarter = 0;
|
||||
for (Month month = firstMonthOfQuarter; !month.equals(lastMonthOfQuarter.plus(1)); month = month.plus(1)) {
|
||||
totalDaysInQuarter += month.length(currentDate.isLeapYear());
|
||||
}
|
||||
|
||||
System.out.println("Total days in the current quarter: " + totalDaysInQuarter);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据当前年、月获取每一天日期
|
||||
*/
|
||||
* @Description: 获取当前日期的当前季度总天数
|
||||
* @Param:
|
||||
* @return: java.lang.Integer
|
||||
* @Author: clam
|
||||
* @Date: 2023/6/6
|
||||
*/
|
||||
|
||||
public static Integer getQtrDays(LocalDate currentDate ){
|
||||
Month firstMonthOfQuarter = currentDate.getMonth().firstMonthOfQuarter();
|
||||
|
||||
// 获取当前季度的最后一个月份
|
||||
Month lastMonthOfQuarter = firstMonthOfQuarter.plus(2);
|
||||
|
||||
// 计算当前季度的总天数
|
||||
int totalDaysInQuarter = 0;
|
||||
for (Month month = firstMonthOfQuarter; !month.equals(lastMonthOfQuarter.plus(1)); month = month.plus(1)) {
|
||||
totalDaysInQuarter += month.length(currentDate.isLeapYear());
|
||||
}
|
||||
return totalDaysInQuarter;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 根据当前年、月获取每一天日期
|
||||
*/
|
||||
public static List<String> getDayByMonth(int yearParam, int monthParam){
|
||||
List<String> list = new ArrayList<>();
|
||||
Calendar calendar = Calendar.getInstance(Locale.CHINA);
|
||||
@@ -180,4 +220,6 @@ public class PublicUtil {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
package com.njcn.prepare.harmonic.controller.newalgorithm;
|
||||
|
||||
import com.njcn.common.pojo.annotation.OperateInfo;
|
||||
import com.njcn.common.pojo.constant.ServerInfo;
|
||||
import com.njcn.common.pojo.enums.common.LogEnum;
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.common.utils.HttpResultUtil;
|
||||
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
|
||||
import com.njcn.prepare.harmonic.pojo.param.OrgParam;
|
||||
import com.njcn.prepare.harmonic.service.mysql.area.RStatHarmonicService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.area.RStatHarmonicVoltageService;
|
||||
import com.njcn.user.api.DeptFeignClient;
|
||||
import com.njcn.user.pojo.po.Dept;
|
||||
import com.njcn.web.controller.BaseController;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Description:
|
||||
* 接口文档访问地址:http://serverIP:port/swagger-ui.html
|
||||
* Date: 2022/12/28 13:47【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Slf4j
|
||||
@Api(tags = "单位监测点稳态指标统计通过电压等级")
|
||||
@RestController
|
||||
@RequestMapping("/rstatharmonicbypl")
|
||||
@RequiredArgsConstructor
|
||||
public class RStatHarmonicByPowerLevelController extends BaseController {
|
||||
|
||||
|
||||
private final RStatHarmonicVoltageService service;
|
||||
private final CommTerminalGeneralClient commTerminalGeneralClient;
|
||||
private final DeptFeignClient deptFeignClient;
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/HandlerByPowerLevel")
|
||||
@ApiOperation("单位监测点稳态指标统计通过电压等级")
|
||||
@ApiImplicitParam(name = "orgParam", value = "参数", required = true)
|
||||
public HttpResult<String> handlerByPowerLevel(@RequestBody @Validated OrgParam orgParam ){
|
||||
log.info(LocalDateTime.now()+"handlerByPowerLevel始执行");
|
||||
String methodDescribe = getMethodDescribe("handlerByPowerLevel");
|
||||
/**
|
||||
* 支持补录
|
||||
*/
|
||||
DeptGetLineParam deptGetLineParam = new DeptGetLineParam();
|
||||
|
||||
if(StringUtils.isEmpty(orgParam.getOrgId())){
|
||||
Dept data = deptFeignClient.getRootDept().getData();
|
||||
deptGetLineParam.setDeptId(data.getId());
|
||||
}else {
|
||||
deptGetLineParam.setDeptId(orgParam.getOrgId());
|
||||
}
|
||||
deptGetLineParam.setServerName(ServerInfo.PREPARE_BOOT);
|
||||
List<DeptGetChildrenMoreDTO> data = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData();
|
||||
service.handlerByPowerLevel (data,orgParam.getDataDate(),orgParam.getType());
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.njcn.prepare.harmonic.mapper.mysql.area;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicMPO;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/6/7 16:10【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface RStatHarmonicMPOMapper extends MppBaseMapper<RStatHarmonicMPO> {
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.njcn.prepare.harmonic.mapper.mysql.area;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicQPO;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/6/7 16:11【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface RStatHarmonicQPOMapper extends MppBaseMapper<RStatHarmonicQPO> {
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.njcn.prepare.harmonic.mapper.mysql.area;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicVoltageDPO;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/6/6 9:10【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface RStatHarmonicVoltageDPOMapper extends MppBaseMapper<RStatHarmonicVoltageDPO> {
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.njcn.prepare.harmonic.mapper.mysql.area;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicYPO;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/6/7 16:11【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface RStatHarmonicYPOMapper extends MppBaseMapper<RStatHarmonicYPO> {
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.njcn.prepare.harmonic.mapper.mysql.area;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.po.RStatOrgQPO;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatOrgQPO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.njcn.prepare.harmonic.mapper.mysql.area;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatOrgQPO;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/6/7 8:47【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface RStatOrgQPOMapper extends MppBaseMapper<RStatOrgQPO> {
|
||||
}
|
||||
@@ -1,8 +1,7 @@
|
||||
package com.njcn.prepare.harmonic.mapper.mysql.area;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.po.RStatOrgQPO;
|
||||
import com.njcn.prepare.harmonic.pojo.po.RStatOrgYPO;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatOrgYPO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.njcn.prepare.harmonic.mapper.mysql.area;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatOrgYPO;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/6/7 8:47【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface RStatOrgYPOMapper extends MppBaseMapper<RStatOrgYPO> {
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.njcn.prepare.harmonic.mapper.mysql.area.RStatHarmonicMPOMapper">
|
||||
<resultMap id="BaseResultMap" type="com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicMPO">
|
||||
<!--@mbg.generated-->
|
||||
<!--@Table r_stat_harmonic_m-->
|
||||
<id column="org_no" jdbcType="VARCHAR" property="orgNo" />
|
||||
<id column="data_date" jdbcType="DATE" property="dataDate" />
|
||||
<id column="measurement_type_class" jdbcType="VARCHAR" property="measurementTypeClass" />
|
||||
<id column="harmonic_type" jdbcType="VARCHAR" property="harmonicType" />
|
||||
<id column="data_type" jdbcType="VARCHAR" property="dataType" />
|
||||
<result column="over_limit_measurement_average" jdbcType="INTEGER" property="overLimitMeasurementAverage" />
|
||||
<result column="over_limit_measurement_accrued" jdbcType="INTEGER" property="overLimitMeasurementAccrued" />
|
||||
<result column="over_day" jdbcType="INTEGER" property="overDay" />
|
||||
<result column="over_limit_measurement_ratio_average" jdbcType="REAL" property="overLimitMeasurementRatioAverage" />
|
||||
<result column="over_limit_measurement_ratio_accrued" jdbcType="REAL" property="overLimitMeasurementRatioAccrued" />
|
||||
</resultMap>
|
||||
<sql id="Base_Column_List">
|
||||
<!--@mbg.generated-->
|
||||
org_no, data_date, measurement_type_class, harmonic_type, data_type, over_limit_measurement_average,
|
||||
over_limit_measurement_accrued, over_day, over_limit_measurement_ratio_average, over_limit_measurement_ratio_accrued
|
||||
</sql>
|
||||
</mapper>
|
||||
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.njcn.prepare.harmonic.mapper.mysql.area.RStatHarmonicQPOMapper">
|
||||
<resultMap id="BaseResultMap" type="com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicQPO">
|
||||
<!--@mbg.generated-->
|
||||
<!--@Table r_stat_harmonic_q-->
|
||||
<id column="org_no" jdbcType="VARCHAR" property="orgNo" />
|
||||
<id column="data_date" jdbcType="DATE" property="dataDate" />
|
||||
<id column="measurement_type_class" jdbcType="VARCHAR" property="measurementTypeClass" />
|
||||
<id column="harmonic_type" jdbcType="VARCHAR" property="harmonicType" />
|
||||
<id column="data_type" jdbcType="VARCHAR" property="dataType" />
|
||||
<result column="over_limit_measurement_average" jdbcType="INTEGER" property="overLimitMeasurementAverage" />
|
||||
<result column="over_limit_measurement_accrued" jdbcType="INTEGER" property="overLimitMeasurementAccrued" />
|
||||
<result column="average_over_day" jdbcType="REAL" property="averageOverDay" />
|
||||
<result column="over_limit_measurement_ratio_average" jdbcType="REAL" property="overLimitMeasurementRatioAverage" />
|
||||
<result column="over_limit_measurement_ratio_accrued" jdbcType="REAL" property="overLimitMeasurementRatioAccrued" />
|
||||
</resultMap>
|
||||
<sql id="Base_Column_List">
|
||||
<!--@mbg.generated-->
|
||||
org_no, data_date, measurement_type_class, harmonic_type, data_type, over_limit_measurement_average,
|
||||
over_limit_measurement_accrued, average_over_day, over_limit_measurement_ratio_average,
|
||||
over_limit_measurement_ratio_accrued
|
||||
</sql>
|
||||
</mapper>
|
||||
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.njcn.prepare.harmonic.mapper.mysql.area.RStatHarmonicVoltageDPOMapper">
|
||||
<resultMap id="BaseResultMap" type="com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicVoltageDPO">
|
||||
<!--@mbg.generated-->
|
||||
<!--@Table r_stat_harmonic_voltage_d-->
|
||||
<id column="org_no" jdbcType="VARCHAR" property="orgNo" />
|
||||
<id column="data_date" jdbcType="DATE" property="dataDate" />
|
||||
<id column="measurement_type_class" jdbcType="VARCHAR" property="measurementTypeClass" />
|
||||
<id column="harmonic_type" jdbcType="VARCHAR" property="harmonicType" />
|
||||
<id column="voltage_type" jdbcType="VARCHAR" property="voltageType" />
|
||||
<id column="data_type" jdbcType="VARCHAR" property="dataType" />
|
||||
<result column="over_limit_measurement_average" jdbcType="INTEGER" property="overLimitMeasurementAverage" />
|
||||
<result column="over_limit_measurement_ratio_average" jdbcType="REAL" property="overLimitMeasurementRatioAverage" />
|
||||
</resultMap>
|
||||
<sql id="Base_Column_List">
|
||||
<!--@mbg.generated-->
|
||||
org_no, data_date, measurement_type_class, harmonic_type, voltage_type, data_type,
|
||||
over_limit_measurement_average, over_limit_measurement_ratio_average
|
||||
</sql>
|
||||
</mapper>
|
||||
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.njcn.prepare.harmonic.mapper.mysql.area.RStatHarmonicYPOMapper">
|
||||
<resultMap id="BaseResultMap" type="com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicYPO">
|
||||
<!--@mbg.generated-->
|
||||
<!--@Table r_stat_harmonic_y-->
|
||||
<id column="org_no" jdbcType="VARCHAR" property="orgNo" />
|
||||
<id column="data_date" jdbcType="DATE" property="dataDate" />
|
||||
<id column="measurement_type_class" jdbcType="VARCHAR" property="measurementTypeClass" />
|
||||
<id column="harmonic_type" jdbcType="VARCHAR" property="harmonicType" />
|
||||
<id column="data_type" jdbcType="VARCHAR" property="dataType" />
|
||||
<result column="over_limit_measurement_average" jdbcType="INTEGER" property="overLimitMeasurementAverage" />
|
||||
<result column="over_limit_measurement_accrued" jdbcType="INTEGER" property="overLimitMeasurementAccrued" />
|
||||
<result column="average_over_day" jdbcType="REAL" property="averageOverDay" />
|
||||
<result column="over_limit_measurement_ratio_average" jdbcType="REAL" property="overLimitMeasurementRatioAverage" />
|
||||
<result column="over_limit_measurement_ratio_accrued" jdbcType="REAL" property="overLimitMeasurementRatioAccrued" />
|
||||
</resultMap>
|
||||
<sql id="Base_Column_List">
|
||||
<!--@mbg.generated-->
|
||||
org_no, data_date, measurement_type_class, harmonic_type, data_type, over_limit_measurement_average,
|
||||
over_limit_measurement_accrued, average_over_day, over_limit_measurement_ratio_average,
|
||||
over_limit_measurement_ratio_accrued
|
||||
</sql>
|
||||
</mapper>
|
||||
@@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgQPOMapper">
|
||||
<resultMap id="BaseResultMap" type="com.njcn.prepare.harmonic.pojo.mysql.po.RStatOrgQPO">
|
||||
<!--@mbg.generated-->
|
||||
<!--@Table r_stat_org_q-->
|
||||
<id column="org_no" jdbcType="VARCHAR" property="orgNo" />
|
||||
<id column="data_date" jdbcType="TIMESTAMP" property="dataDate" />
|
||||
<id column="measurement_type_class" jdbcType="VARCHAR" property="measurementTypeClass" />
|
||||
<result column="all_count" jdbcType="INTEGER" property="allCount" />
|
||||
<result column="effective_measurement_average" jdbcType="REAL" property="effectiveMeasurementAverage" />
|
||||
<result column="effective_measurement_accrued" jdbcType="INTEGER" property="effectiveMeasurementAccrued" />
|
||||
<result column="harmonic_measurement_average" jdbcType="REAL" property="harmonicMeasurementAverage" />
|
||||
<result column="harmonic_measurement_accrued" jdbcType="INTEGER" property="harmonicMeasurementAccrued" />
|
||||
<result column="harmonic_measurement_ratio_average" jdbcType="REAL" property="harmonicMeasurementRatioAverage" />
|
||||
<result column="average_over_day" jdbcType="REAL" property="averageOverDay" />
|
||||
<result column="freq_pass_rate" jdbcType="REAL" property="freqPassRate" />
|
||||
<result column="v_dev_pass_rate" jdbcType="REAL" property="vDevPassRate" />
|
||||
<result column="flicker_pass_rate" jdbcType="REAL" property="flickerPassRate" />
|
||||
<result column="event_measurement_average" jdbcType="REAL" property="eventMeasurementAverage" />
|
||||
<result column="event_measurement_accrued" jdbcType="INTEGER" property="eventMeasurementAccrued" />
|
||||
<result column="event_measurement_ratio_average" jdbcType="REAL" property="eventMeasurementRatioAverage" />
|
||||
<result column="event_freq" jdbcType="REAL" property="eventFreq" />
|
||||
<result column="event_count" jdbcType="INTEGER" property="eventCount" />
|
||||
<result column="should_count" jdbcType="INTEGER" property="shouldCount" />
|
||||
<result column="warn_count" jdbcType="INTEGER" property="warnCount" />
|
||||
<result column="data_type" jdbcType="VARCHAR" property="dataType" />
|
||||
</resultMap>
|
||||
<sql id="Base_Column_List">
|
||||
<!--@mbg.generated-->
|
||||
org_no, data_date, measurement_type_class, all_count, effective_measurement_average,
|
||||
effective_measurement_accrued, harmonic_measurement_average, harmonic_measurement_accrued,
|
||||
harmonic_measurement_ratio_average, average_over_day, freq_pass_rate, v_dev_pass_rate,
|
||||
flicker_pass_rate, event_measurement_average, event_measurement_accrued, event_measurement_ratio_average,
|
||||
event_freq, event_count, should_count, warn_count, data_type
|
||||
</sql>
|
||||
</mapper>
|
||||
@@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgYPOMapper">
|
||||
<resultMap id="BaseResultMap" type="com.njcn.prepare.harmonic.pojo.mysql.po.RStatOrgYPO">
|
||||
<!--@mbg.generated-->
|
||||
<!--@Table r_stat_org_y-->
|
||||
<id column="org_no" jdbcType="VARCHAR" property="orgNo" />
|
||||
<id column="data_date" jdbcType="TIMESTAMP" property="dataDate" />
|
||||
<id column="measurement_type_class" jdbcType="VARCHAR" property="measurementTypeClass" />
|
||||
<id column="data_type" jdbcType="VARCHAR" property="dataType" />
|
||||
<result column="all_count" jdbcType="INTEGER" property="allCount" />
|
||||
<result column="effective_measurement_average" jdbcType="REAL" property="effectiveMeasurementAverage" />
|
||||
<result column="effective_measurement_accrued" jdbcType="INTEGER" property="effectiveMeasurementAccrued" />
|
||||
<result column="over_limit_measurement_average" jdbcType="REAL" property="overLimitMeasurementAverage" />
|
||||
<result column="over_limit_measurement_accrued" jdbcType="INTEGER" property="overLimitMeasurementAccrued" />
|
||||
<result column="harmonic_measurement_ratio_average" jdbcType="REAL" property="harmonicMeasurementRatioAverage" />
|
||||
<result column="average_over_day" jdbcType="REAL" property="averageOverDay" />
|
||||
<result column="freq_pass_rate" jdbcType="REAL" property="freqPassRate" />
|
||||
<result column="v_dev_pass_rate" jdbcType="REAL" property="vDevPassRate" />
|
||||
<result column="flicker_pass_rate" jdbcType="REAL" property="flickerPassRate" />
|
||||
<result column="event_measurement_average" jdbcType="REAL" property="eventMeasurementAverage" />
|
||||
<result column="event_measurement_accrued" jdbcType="INTEGER" property="eventMeasurementAccrued" />
|
||||
<result column="event_measurement_ratio_average" jdbcType="REAL" property="eventMeasurementRatioAverage" />
|
||||
<result column="event_freq" jdbcType="REAL" property="eventFreq" />
|
||||
<result column="event_count" jdbcType="INTEGER" property="eventCount" />
|
||||
<result column="should_count" jdbcType="INTEGER" property="shouldCount" />
|
||||
<result column="warn_count" jdbcType="INTEGER" property="warnCount" />
|
||||
</resultMap>
|
||||
<sql id="Base_Column_List">
|
||||
<!--@mbg.generated-->
|
||||
org_no, data_date, measurement_type_class, data_type, all_count, effective_measurement_average,
|
||||
effective_measurement_accrued, over_limit_measurement_average, over_limit_measurement_accrued,
|
||||
harmonic_measurement_ratio_average, average_over_day, freq_pass_rate, v_dev_pass_rate,
|
||||
flicker_pass_rate, event_measurement_average, event_measurement_accrued, event_measurement_ratio_average,
|
||||
event_freq, event_count, should_count, warn_count
|
||||
</sql>
|
||||
</mapper>
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatHarmonicMPOMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicMPO;
|
||||
import com.njcn.prepare.harmonic.service.mysql.area.RStatHarmonicMPOService;
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/6/7 16:10【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Service
|
||||
public class RStatHarmonicMPOServiceImpl extends MppServiceImpl<RStatHarmonicMPOMapper, RStatHarmonicMPO> implements RStatHarmonicMPOService{
|
||||
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatHarmonicQPOMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicQPO;
|
||||
import com.njcn.prepare.harmonic.service.mysql.area.RStatHarmonicQPOService;
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/6/7 16:11【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Service
|
||||
public class RStatHarmonicQPOServiceImpl extends MppServiceImpl<RStatHarmonicQPOMapper, RStatHarmonicQPO> implements RStatHarmonicQPOService{
|
||||
|
||||
}
|
||||
@@ -1,22 +1,24 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
|
||||
import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailD;
|
||||
import com.njcn.harmonic.pojo.po.RMpSurplusHarmonicDetailD;
|
||||
import com.njcn.harmonic.pojo.po.RStatHarmonicD;
|
||||
import com.njcn.harmonic.pojo.po.RStatOrgDPO;
|
||||
import com.njcn.device.pms.pojo.po.RStatOrgPO;
|
||||
import com.njcn.harmonic.pojo.po.*;
|
||||
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.line.RMpPartHarmonicDetailDMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpPartHarmonicDetailMMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpSurplusHarmonicDetailDMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpSurplusHarmonicDetailMMapper;
|
||||
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.RStatHarmonicVoltageDPO;
|
||||
import com.njcn.prepare.harmonic.service.mysql.Impl.line.RMpPartHarmonicDetailDServiceImpl;
|
||||
import com.njcn.prepare.harmonic.service.mysql.area.RStatHarmonicDPOService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.area.RStatHarmonicService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.area.RStatOrgDService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.area.*;
|
||||
import com.njcn.prepare.harmonic.service.mysql.line.IRMpPartHarmonicDetailDService;
|
||||
import com.njcn.system.api.DicDataFeignClient;
|
||||
import com.njcn.system.enums.DicDataEnum;
|
||||
@@ -30,6 +32,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -47,10 +50,18 @@ import java.util.stream.Collectors;
|
||||
public class RStatHarmonicServiceImpl implements RStatHarmonicService {
|
||||
|
||||
private final RStatHarmonicDPOService rStatHarmonicDPOService;
|
||||
private final RStatHarmonicMPOService rStatHarmonicMPOService;
|
||||
|
||||
private final RMpPartHarmonicDetailDMapper rMpPartHarmonicDetailDMapper;
|
||||
private final RMpSurplusHarmonicDetailDMapper rMpSurplusHarmonicDetailDMapper;
|
||||
private final RStatOrgDMapper rStatOrgDMapper;
|
||||
|
||||
private final RMpPartHarmonicDetailMMapper rMpPartHarmonicDetailMMapper;
|
||||
private final RMpSurplusHarmonicDetailMMapper rMpSurplusHarmonicDetailMMapper;
|
||||
private final RStatOrgMMapper rStatOrgMMapper;
|
||||
|
||||
|
||||
|
||||
private final
|
||||
DicDataFeignClient dicDataFeignClient;
|
||||
|
||||
@@ -63,9 +74,9 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
|
||||
// case 2:
|
||||
// this.hanlderOracleQtr (lineParam);
|
||||
// break;
|
||||
// case 3:
|
||||
// this.hanlderOracleMonth (lineParam);
|
||||
// break;
|
||||
case 3:
|
||||
this.hanlderOracleM ( data, dataDate, type);
|
||||
break;
|
||||
case 5:
|
||||
this.hanlderDay ( data, dataDate, type);
|
||||
break;
|
||||
@@ -73,6 +84,222 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@Transactional
|
||||
@Async("asyncExecutor")
|
||||
@SneakyThrows
|
||||
private void hanlderOracleM(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
|
||||
|
||||
List<RStatHarmonicMPO> rStatHarmonicMPOList = new ArrayList<>();
|
||||
Date date = DateUtil.parse(dataDate);
|
||||
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));
|
||||
|
||||
|
||||
data.forEach(deptGetChildrenMoreDTO -> {
|
||||
|
||||
/*主网*/
|
||||
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
|
||||
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
|
||||
Map<Integer, List<LineDevGetDTO>> collect = lineBaseList.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).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring(0, 7));
|
||||
List<RMpPartHarmonicDetailM> rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper);
|
||||
|
||||
rMpSurplusHarmonicDetailMQueryWrapper.clear();
|
||||
rMpSurplusHarmonicDetailMQueryWrapper.select("flicker_over_day", "inuharm_over_day").
|
||||
in("measurement_point_id", collect1).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring(0, 7));
|
||||
List<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMS = rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper);
|
||||
|
||||
rStatOrgMPOQueryWrapper.clear();
|
||||
rStatOrgMPOQueryWrapper.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("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring(0, 7));
|
||||
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(date);
|
||||
rStatHarmonicMPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicMPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_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.MAINNET_POINT.getCode()).getId()).
|
||||
eq("harmonic_type", dictData.getId()).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring(0, 7));
|
||||
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).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring(0, 7));
|
||||
List<RMpPartHarmonicDetailM> rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper);
|
||||
|
||||
rMpSurplusHarmonicDetailMQueryWrapper.clear();
|
||||
rMpSurplusHarmonicDetailMQueryWrapper.select("flicker_over_day", "inuharm_over_day").
|
||||
in("measurement_point_id", collect1).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring(0, 7));
|
||||
List<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMS = rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper);
|
||||
|
||||
rStatOrgMPOQueryWrapper.clear();
|
||||
rStatOrgMPOQueryWrapper.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("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring(0, 7));
|
||||
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(date);
|
||||
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()).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring(0, 7));
|
||||
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);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private Integer getOverLimitMeasurementAccruedTime(DictData dictData, List<RMpPartHarmonicDetailM> rMpPartHarmonicDetailMS, List<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMS) {
|
||||
Integer value = 0;
|
||||
if (Objects.equals(dictData.getCode(),DicDataEnum.VOLTAGE_DEV.getCode())) {
|
||||
value = Integer.valueOf(rMpPartHarmonicDetailMS.stream().filter(temp ->temp.getVDevOverDay()>0).count()+"");
|
||||
}
|
||||
if (Objects.equals(dictData.getCode(),DicDataEnum.FLICKER.getCode())) {
|
||||
value = Integer.valueOf(rMpSurplusHarmonicDetailMS.stream().filter(temp ->temp.getFlickerOverDay()>0).count()+"");
|
||||
}
|
||||
if (Objects.equals(dictData.getCode(),DicDataEnum.HARMONIC_VOLTAGE.getCode())) {
|
||||
value = Integer.valueOf(rMpPartHarmonicDetailMS.stream().filter(temp ->temp.getVOverDay()>0).count()+"");
|
||||
}
|
||||
if (Objects.equals(dictData.getCode(),DicDataEnum.HARMONIC_CURRENT.getCode())) {
|
||||
value = Integer.valueOf(rMpPartHarmonicDetailMS.stream().filter(temp ->temp.getIOverDay()>0).count()+"");
|
||||
}
|
||||
if (Objects.equals(dictData.getCode(),DicDataEnum.INTERHARMONIC_VOLTAGE.getCode())) {
|
||||
value = Integer.valueOf(rMpSurplusHarmonicDetailMS.stream().filter(temp ->temp.getInuharmOverDay()>0).count()+"");
|
||||
}
|
||||
if (Objects.equals(dictData.getCode(),DicDataEnum.PHASE_VOLTAGE.getCode())) {
|
||||
value = Integer.valueOf(rMpPartHarmonicDetailMS.stream().filter(temp ->temp.getUnbalanceOverDay()>0).count()+"");
|
||||
}
|
||||
if (Objects.equals(dictData.getCode(),DicDataEnum.FREQUENCY_DEV.getCode())) {
|
||||
value = Integer.valueOf(rMpPartHarmonicDetailMS.stream().filter(temp ->temp.getFreqOverDay()>0).count()+"");
|
||||
|
||||
}
|
||||
if (Objects.equals(dictData.getCode(),DicDataEnum.NEG_CURRENT.getCode())) {
|
||||
value = Integer.valueOf(rMpPartHarmonicDetailMS.stream().filter(temp ->temp.getINegOverDay()>0).count()+"");
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
@Transactional(rollbackFor = {Exception.class})
|
||||
@Async("asyncExecutor")
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicVoltageDPO;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatHarmonicVoltageDPOMapper;
|
||||
import com.njcn.prepare.harmonic.service.mysql.area.RStatHarmonicVoltageDPOService;
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/6/6 9:10【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Service
|
||||
public class RStatHarmonicVoltageDPOServiceImpl extends MppServiceImpl<RStatHarmonicVoltageDPOMapper, RStatHarmonicVoltageDPO> implements RStatHarmonicVoltageDPOService{
|
||||
|
||||
}
|
||||
@@ -0,0 +1,267 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
|
||||
import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailD;
|
||||
import com.njcn.harmonic.pojo.po.RMpSurplusHarmonicDetailD;
|
||||
import com.njcn.harmonic.pojo.po.RStatOrgDPO;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgDMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpPartHarmonicDetailDMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpSurplusHarmonicDetailDMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicDPO;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicVoltageDPO;
|
||||
import com.njcn.prepare.harmonic.service.mysql.area.RStatHarmonicVoltageDPOService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.area.RStatHarmonicVoltageService;
|
||||
import com.njcn.system.api.DicDataFeignClient;
|
||||
import com.njcn.system.enums.DicDataEnum;
|
||||
import com.njcn.system.enums.DicDataTypeEnum;
|
||||
import com.njcn.system.pojo.po.DictData;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.SneakyThrows;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* Description:
|
||||
* Date: 2023/6/6 10:08【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class RStatHarmonicVoltageServiceImpl implements RStatHarmonicVoltageService {
|
||||
|
||||
private final RMpPartHarmonicDetailDMapper rMpPartHarmonicDetailDMapper;
|
||||
private final RMpSurplusHarmonicDetailDMapper rMpSurplusHarmonicDetailDMapper;
|
||||
private final RStatOrgDMapper rStatOrgDMapper;
|
||||
private final RStatHarmonicVoltageDPOService rStatHarmonicVoltageDPOService;
|
||||
|
||||
private final
|
||||
DicDataFeignClient dicDataFeignClient;
|
||||
@Override
|
||||
public void handlerByPowerLevel(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
|
||||
switch (type) {
|
||||
// case 1:
|
||||
// this.hanlderOracleYear (lineParam);
|
||||
// break;
|
||||
// case 2:
|
||||
// this.hanlderOracleQtr (lineParam);
|
||||
// break;
|
||||
// case 3:
|
||||
// this.hanlderOracleMonth (lineParam);
|
||||
// break;
|
||||
case 5:
|
||||
this.hanlderDayByPl ( data, dataDate, type);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = {Exception.class})
|
||||
@Async("asyncExecutor")
|
||||
@SneakyThrows
|
||||
private void hanlderDayByPl(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
|
||||
List<RStatHarmonicVoltageDPO> rStatHarmonicVoltageDPOList = new ArrayList<>();
|
||||
Date date = DateUtil.parse(dataDate);
|
||||
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));
|
||||
|
||||
|
||||
data.forEach(deptGetChildrenMoreDTO -> {
|
||||
|
||||
/*主网*/
|
||||
if(!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())){
|
||||
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
|
||||
Map<Integer, List<LineDevGetDTO>> collect = lineBaseList.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> 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("DATE_FORMAT( data_date ,'%Y-%m-%d')",dataDate);
|
||||
List<RMpPartHarmonicDetailD> rMpPartHarmonicDetailDS = rMpPartHarmonicDetailDMapper.selectList(queryWrapper);
|
||||
|
||||
rMpSurplusHarmonicDetailDQueryWrapper.clear();
|
||||
rMpSurplusHarmonicDetailDQueryWrapper.select("is_flicker","is_inuharm").
|
||||
in("measurement_point_id",collect3).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",dataDate);
|
||||
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("DATE_FORMAT( data_date ,'%Y-%m-%d')",dataDate);
|
||||
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(date);
|
||||
rStatHarmonicVoltageDPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicVoltageDPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
rStatHarmonicVoltageDPO.setMeasurementTypeClass(getmeasurementType(k,lineSortMap));
|
||||
rStatHarmonicVoltageDPO.setVoltageType(k1);
|
||||
rStatHarmonicVoltageDPO.setOverLimitMeasurementAverage(getSteadyStatisData(dictData,rMpPartHarmonicDetailDS,rMpSurplusHarmonicDetailDS));
|
||||
if(rStatOrgDPO.getEffectiveMeasurement()==0){
|
||||
rStatHarmonicVoltageDPO.setOverLimitMeasurementRatioAverage(1.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("DATE_FORMAT( data_date ,'%Y-%m-%d')",dataDate);
|
||||
List<RMpPartHarmonicDetailD> rMpPartHarmonicDetailDS = rMpPartHarmonicDetailDMapper.selectList(queryWrapper);
|
||||
|
||||
rMpSurplusHarmonicDetailDQueryWrapper.clear();
|
||||
rMpSurplusHarmonicDetailDQueryWrapper.select("is_flicker","is_inuharm").
|
||||
in("measurement_point_id",collect3).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",dataDate);
|
||||
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("DATE_FORMAT( data_date ,'%Y-%m-%d')",dataDate);
|
||||
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(date);
|
||||
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(1.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);
|
||||
}
|
||||
}
|
||||
|
||||
private String getmeasurementType(Integer k, Map<String, DictData> lineSortMap) {
|
||||
String value ="";
|
||||
switch (k) {
|
||||
case 1:
|
||||
value =lineSortMap.get(DicDataEnum.ONE_LINE.getCode()).getId();
|
||||
break;
|
||||
case 2:
|
||||
value =lineSortMap.get(DicDataEnum.TWO_LINE.getCode()).getId();
|
||||
break;
|
||||
case 3:
|
||||
value =lineSortMap.get(DicDataEnum.THREE_LINE.getCode()).getId();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
private Integer getSteadyStatisData(DictData dictData, List<RMpPartHarmonicDetailD> rMpPartHarmonicDetailDS, List<RMpSurplusHarmonicDetailD> rMpSurplusHarmonicDetailDS) {
|
||||
Integer value = 0;
|
||||
if (Objects.equals(dictData.getCode(),DicDataEnum.VOLTAGE_DEV.getCode())) {
|
||||
value = Integer.valueOf(rMpPartHarmonicDetailDS.stream().filter(temp ->temp.getIsVDev()==1).count()+"");
|
||||
}
|
||||
if (Objects.equals(dictData.getCode(),DicDataEnum.FLICKER.getCode())) {
|
||||
value = Integer.valueOf(rMpSurplusHarmonicDetailDS.stream().filter(temp ->temp.getIsFlicker()==1).count()+"");
|
||||
}
|
||||
if (Objects.equals(dictData.getCode(),DicDataEnum.HARMONIC_VOLTAGE.getCode())) {
|
||||
value = Integer.valueOf(rMpPartHarmonicDetailDS.stream().filter(temp ->temp.getIsV()==1).count()+"");
|
||||
}
|
||||
if (Objects.equals(dictData.getCode(),DicDataEnum.HARMONIC_CURRENT.getCode())) {
|
||||
value = Integer.valueOf(rMpPartHarmonicDetailDS.stream().filter(temp ->temp.getIsI()==1).count()+"");
|
||||
}
|
||||
if (Objects.equals(dictData.getCode(),DicDataEnum.INTERHARMONIC_VOLTAGE.getCode())) {
|
||||
value = Integer.valueOf(rMpSurplusHarmonicDetailDS.stream().filter(temp ->temp.getIsInuharm()==1).count()+"");
|
||||
}
|
||||
if (Objects.equals(dictData.getCode(),DicDataEnum.PHASE_VOLTAGE.getCode())) {
|
||||
value = Integer.valueOf(rMpPartHarmonicDetailDS.stream().filter(temp ->temp.getIsUnbalance()==1).count()+"");
|
||||
}
|
||||
if (Objects.equals(dictData.getCode(),DicDataEnum.FREQUENCY_DEV.getCode())) {
|
||||
value = Integer.valueOf(rMpPartHarmonicDetailDS.stream().filter(temp ->temp.getIsFreq()==1).count()+"");
|
||||
|
||||
}
|
||||
if (Objects.equals(dictData.getCode(),DicDataEnum.NEG_CURRENT.getCode())) {
|
||||
value = Integer.valueOf(rMpPartHarmonicDetailDS.stream().filter(temp ->temp.getIsINeg()==1).count()+"");
|
||||
}
|
||||
|
||||
return value;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicYPO;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatHarmonicYPOMapper;
|
||||
import com.njcn.prepare.harmonic.service.mysql.area.RStatHarmonicYPOService;
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/6/7 16:11【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Service
|
||||
public class RStatHarmonicYPOServiceImpl extends MppServiceImpl<RStatHarmonicYPOMapper, RStatHarmonicYPO> implements RStatHarmonicYPOService{
|
||||
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatOrgQPO;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgQPOMapper;
|
||||
import com.njcn.prepare.harmonic.service.mysql.area.RStatOrgQPOService;
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/6/7 8:47【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Service
|
||||
public class RStatOrgQPOServiceImpl extends MppServiceImpl<RStatOrgQPOMapper, RStatOrgQPO> implements RStatOrgQPOService{
|
||||
|
||||
}
|
||||
@@ -1,19 +1,25 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Dict;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
|
||||
import com.njcn.harmonic.pojo.po.*;
|
||||
import com.njcn.harmonic.pojo.po.RMpEventDetailDPO;
|
||||
import com.njcn.harmonic.pojo.po.RMpTargetWarnDPO;
|
||||
import com.njcn.harmonic.pojo.po.RStatOrgDPO;
|
||||
import com.njcn.harmonic.pojo.po.RStatOrgMPO;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RMpTargetWarnDMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailDMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.line.ROperatingMonitorDMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.line.*;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicDPO;
|
||||
import com.njcn.prepare.harmonic.pojo.po.RStatDevSignalDPO;
|
||||
import com.njcn.prepare.harmonic.service.mysql.area.RStatOrgDService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.area.RStatOrgService;
|
||||
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatOrgQPO;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatOrgYPO;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpPassRateMPO;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpPassRateQPO;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpPassRateYPO;
|
||||
|
||||
import com.njcn.prepare.harmonic.service.mysql.area.*;
|
||||
import com.njcn.prepare.harmonic.utils.PublicUtil;
|
||||
import com.njcn.system.api.DicDataFeignClient;
|
||||
import com.njcn.system.enums.DicDataEnum;
|
||||
import com.njcn.system.enums.DicDataTypeEnum;
|
||||
@@ -25,6 +31,9 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.time.ZoneId;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -40,25 +49,39 @@ import java.util.stream.Collectors;
|
||||
public class RStatOrgServiceImpl implements RStatOrgService {
|
||||
|
||||
private final RStatOrgDService rStatOrgDService;
|
||||
private final RStatOrgMService rStatOrgMService;
|
||||
private final RStatOrgQPOService rStatOrgQService;
|
||||
private final RStatOrgYPOService rStatOrgYService;
|
||||
|
||||
|
||||
|
||||
private final
|
||||
DicDataFeignClient dicDataFeignClient;
|
||||
|
||||
private final ROperatingMonitorDMapper rOperatingMonitorDMapper;
|
||||
private final RMpTargetWarnDMapper rMpTargetWarnDMapper;
|
||||
private final RMpEventDetailDMapper rMpEventDetailDMapper;
|
||||
private final RMpPassRateMMapper rMpPassRateMMapper;
|
||||
private final RMpPassRateQMapper rMpPassRateQMapper;
|
||||
private final RMpPassRateYMapper rMpPassRateYMapper;
|
||||
|
||||
|
||||
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
|
||||
@Override
|
||||
|
||||
public void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
|
||||
switch (type) {
|
||||
// case 1:
|
||||
// this.hanlderOracleYear (lineParam);
|
||||
// break;
|
||||
// case 2:
|
||||
// this.hanlderOracleQtr (lineParam);
|
||||
// break;
|
||||
// case 3:
|
||||
// this.hanlderOracleMonth (lineParam);
|
||||
// break;
|
||||
case 1:
|
||||
this.hanlderYear (data, dataDate, type);
|
||||
break;
|
||||
case 2:
|
||||
this.hanlderQtr (data, dataDate, type);
|
||||
break;
|
||||
case 3:
|
||||
this.hanlderMonth (data, dataDate, type);
|
||||
break;
|
||||
case 5:
|
||||
this.hanlderDay ( data, dataDate, type);
|
||||
break;
|
||||
@@ -67,6 +90,823 @@ public class RStatOrgServiceImpl implements RStatOrgService {
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = {Exception.class})
|
||||
@Async("asyncExecutor")
|
||||
@SneakyThrows
|
||||
private void hanlderYear(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
|
||||
List<RStatOrgYPO> rStatOrgYList = new ArrayList<>();
|
||||
Date date = DateUtil.parse(dataDate);
|
||||
/*获取当季天数求均值使用*/
|
||||
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); // 转换为LocalDate对象
|
||||
int days = localDate.lengthOfYear();
|
||||
/*获取数据类型*/
|
||||
|
||||
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<ROperatingMonitorDPO> rOperatingMonitorDPOQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RMpTargetWarnDPO> rmpTargetWarnDPOQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RMpEventDetailDPO> rMpEventDetailDPOQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RMpPassRateYPO> rMpPassRateYPOQueryWrapper = new QueryWrapper<>();
|
||||
|
||||
|
||||
|
||||
data.forEach(deptGetChildrenMoreDTO -> {
|
||||
|
||||
/*主网*/
|
||||
if(!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())){
|
||||
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
|
||||
Map<Integer, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
|
||||
collect.forEach((k, v)->{
|
||||
|
||||
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
RStatOrgYPO rStatOrgYPO = new RStatOrgYPO();
|
||||
rStatOrgYPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatOrgYPO.setDataDate(date);
|
||||
rStatOrgYPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
rStatOrgYPO.setMeasurementTypeClass(getmeasurementType(k,lineSortMap));
|
||||
rStatOrgYPO.setAllCount(v.size());
|
||||
/*2、2、日均有效接入监测点数2、日均有效接入监测点数*/
|
||||
rOperatingMonitorDPOQueryWrapper.clear();
|
||||
rOperatingMonitorDPOQueryWrapper.select("measurement_point_id").
|
||||
in("measurement_point_id",collect1).
|
||||
gt("effective_minute_count",0).
|
||||
eq("YEAR( data_date)", dataDate.substring(0,4));
|
||||
List<ROperatingMonitorDPO> rOperatingMonitorDPOS = rOperatingMonitorDMapper.selectList(rOperatingMonitorDPOQueryWrapper);
|
||||
String value = df.format((float)rOperatingMonitorDPOS.size()/ days);
|
||||
|
||||
rStatOrgYPO.setEffectiveMeasurementAverage(Double.valueOf(value));
|
||||
/*3、3、累计有效接入监测点数*/
|
||||
long count = rOperatingMonitorDPOS.stream().map(ROperatingMonitorDPO::getMeasurementPointId).distinct().count();
|
||||
rStatOrgYPO.setEffectiveMeasurementAccrued(Integer.valueOf(count+""));
|
||||
|
||||
/*4、日均稳态超标监测点数*/
|
||||
rmpTargetWarnDPOQueryWrapper.clear();
|
||||
rmpTargetWarnDPOQueryWrapper.select("measurement_point_id").
|
||||
in("measurement_point_id",collect1).
|
||||
eq("is_harmonic",1).
|
||||
eq("YEAR( data_date)", dataDate.substring(0,4));
|
||||
List<RMpTargetWarnDPO> rMpTargetWarnDPOS = rMpTargetWarnDMapper.selectList(rmpTargetWarnDPOQueryWrapper);
|
||||
String value1 = df.format((float)rMpTargetWarnDPOS.size()/ days);
|
||||
rStatOrgYPO.setOverLimitMeasurementAverage(Double.parseDouble(value1));
|
||||
|
||||
/* 5、累计稳态超标监测点数*/
|
||||
long count1 = rMpTargetWarnDPOS.stream().map(RMpTargetWarnDPO::getMeasurementPointId).distinct().count();
|
||||
|
||||
rStatOrgYPO.setOverLimitMeasurementAccrued(Integer.valueOf(count1+""));
|
||||
|
||||
/*6、日均稳态超标监测点数占比*/
|
||||
|
||||
String value2 = df.format(rStatOrgYPO.getOverLimitMeasurementAccrued() / rStatOrgYPO.getAllCount());
|
||||
rStatOrgYPO.setHarmonicMeasurementRatioAverage(Double.parseDouble(value2));
|
||||
|
||||
/*7、稳态指标平均超标天数*/
|
||||
if(count1==0){
|
||||
rStatOrgYPO.setAverageOverDay(0.00);
|
||||
}else{
|
||||
String format = df.format((float)rMpTargetWarnDPOS.size()/ count1);
|
||||
rStatOrgYPO.setAverageOverDay(Double.parseDouble(format));
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*8、频率偏差合格率,9、电压偏差合格率,10、闪变合格率*/
|
||||
rMpPassRateYPOQueryWrapper.clear();
|
||||
rMpPassRateYPOQueryWrapper.select("avg(freq_pass_rate) as freq_pass_rate","avg(v_dev_pass_rate) as v_dev_pass_rate","avg(flicker_pass_rate) as flicker_pass_rate").
|
||||
in("measurement_point_id",collect1).
|
||||
eq("YEAR( data_date)", dataDate.substring(0,4));
|
||||
RMpPassRateYPO rMpPassRateYPO = rMpPassRateYMapper.selectOne(rMpPassRateYPOQueryWrapper);
|
||||
rStatOrgYPO.setFreqPassRate(rMpPassRateYPO.getFreqPassRate());
|
||||
rStatOrgYPO.setFlickerPassRate(rMpPassRateYPO.getFlickerPassRate());
|
||||
rStatOrgYPO.setVDevPassRate(rMpPassRateYPO.getvDevPassRate());
|
||||
|
||||
|
||||
|
||||
/*11、日均监测到暂态指标的监测点数*/
|
||||
rMpEventDetailDPOQueryWrapper.clear();
|
||||
rMpEventDetailDPOQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
and(i-> i.gt("swell_times",0).or().gt("sag_times",0).or().gt("interrupt_times",0)).
|
||||
eq("YEAR( data_date)", dataDate.substring(0,4));
|
||||
List<RMpEventDetailDPO> rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper);
|
||||
Integer eventCount =0;
|
||||
int sum = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getInterruptTimes).sum();
|
||||
int sum1 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSagTimes).sum();
|
||||
int sum2 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSwellTimes).sum();
|
||||
String value3 = df.format((float)rMpEventDetailDPOS.size()/ days);
|
||||
rStatOrgYPO.setEventMeasurementAverage(Double.valueOf(value3));
|
||||
/*12、累计监测到暂态指标的监测点数*/
|
||||
long count2 = rMpEventDetailDPOS.stream().map(RMpEventDetailDPO::getMeasurementPointId).distinct().count();
|
||||
|
||||
rStatOrgYPO.setEventMeasurementAccrued(Integer.valueOf(count2+""));
|
||||
/*13、日均暂态超标监测点数占比*/
|
||||
String value4 = df.format(rStatOrgYPO.getEventMeasurementAverage() / rStatOrgYPO.getAllCount());
|
||||
rStatOrgYPO.setEventMeasurementRatioAverage(Double.valueOf(value4));
|
||||
|
||||
/*15、暂态指标发生频次*/
|
||||
rStatOrgYPO.setEventCount(sum+sum1+sum2);
|
||||
|
||||
/*14、暂态指标发生频次*/
|
||||
long count3 = rMpEventDetailDPOS.stream().map(RMpEventDetailDPO::getMeasurementPointId).distinct().count();
|
||||
if(count3==0){
|
||||
rStatOrgYPO.setEventFreq(0.00);
|
||||
}else{
|
||||
String value5 = df.format((float)rStatOrgYPO.getEventCount() / count3);
|
||||
|
||||
rStatOrgYPO.setEventFreq(Double.valueOf(value5));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*todo这个指标不重要,后续根据配置来*/
|
||||
/*17、告警监测点数*/
|
||||
rStatOrgYPO.setShouldCount(8);
|
||||
rOperatingMonitorDPOQueryWrapper.clear();
|
||||
rOperatingMonitorDPOQueryWrapper.select("distinct(measurement_point_id)").
|
||||
in("measurement_point_id",collect1).
|
||||
eq("is_unusual",1).
|
||||
eq("YEAR( data_date)", dataDate.substring(0,4));
|
||||
Integer integer2 = rOperatingMonitorDMapper.selectCount(rOperatingMonitorDPOQueryWrapper);
|
||||
rStatOrgYPO.setWarnCount(integer2);
|
||||
|
||||
rStatOrgYList.add(rStatOrgYPO);
|
||||
});
|
||||
|
||||
}
|
||||
/*配网*/
|
||||
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());
|
||||
RStatOrgYPO rStatOrgYPO = new RStatOrgYPO();
|
||||
rStatOrgYPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatOrgYPO.setDataDate(date);
|
||||
rStatOrgYPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
|
||||
rStatOrgYPO.setMeasurementTypeClass(getmeasurementType(k,lineSortMap));
|
||||
rStatOrgYPO.setAllCount(v.size());
|
||||
/*2、2、日均有效接入监测点数2、日均有效接入监测点数*/
|
||||
rOperatingMonitorDPOQueryWrapper.clear();
|
||||
rOperatingMonitorDPOQueryWrapper.select("measurement_point_id").
|
||||
in("measurement_point_id",collect1).
|
||||
gt("effective_minute_count",0).
|
||||
eq("YEAR( data_date)", dataDate.substring(0,4));
|
||||
List<ROperatingMonitorDPO> rOperatingMonitorDPOS = rOperatingMonitorDMapper.selectList(rOperatingMonitorDPOQueryWrapper);
|
||||
String value = df.format((float)rOperatingMonitorDPOS.size()/ days);
|
||||
|
||||
rStatOrgYPO.setEffectiveMeasurementAverage(Double.valueOf(value));
|
||||
/*3、3、累计有效接入监测点数*/
|
||||
long count = rOperatingMonitorDPOS.stream().map(ROperatingMonitorDPO::getMeasurementPointId).distinct().count();
|
||||
rStatOrgYPO.setEffectiveMeasurementAccrued(Integer.valueOf(count+""));
|
||||
|
||||
/*4、日均稳态超标监测点数*/
|
||||
rmpTargetWarnDPOQueryWrapper.clear();
|
||||
rmpTargetWarnDPOQueryWrapper.select("measurement_point_id").
|
||||
in("measurement_point_id",collect1).
|
||||
eq("is_harmonic",1).
|
||||
eq("YEAR( data_date)", dataDate.substring(0,4));
|
||||
List<RMpTargetWarnDPO> rMpTargetWarnDPOS = rMpTargetWarnDMapper.selectList(rmpTargetWarnDPOQueryWrapper);
|
||||
String value1 = df.format((float)rMpTargetWarnDPOS.size()/ days);
|
||||
rStatOrgYPO.setOverLimitMeasurementAverage(Double.parseDouble(value1));
|
||||
|
||||
/* 5、累计稳态超标监测点数*/
|
||||
long count1 = rMpTargetWarnDPOS.stream().map(RMpTargetWarnDPO::getMeasurementPointId).distinct().count();
|
||||
|
||||
rStatOrgYPO.setOverLimitMeasurementAccrued(Integer.valueOf(count1+""));
|
||||
|
||||
/*6、日均稳态超标监测点数占比*/
|
||||
String value2 = df.format(rStatOrgYPO.getOverLimitMeasurementAccrued() / rStatOrgYPO.getAllCount());
|
||||
rStatOrgYPO.setHarmonicMeasurementRatioAverage(Double.parseDouble(value2));
|
||||
|
||||
/*7、稳态指标平均超标天数*/
|
||||
if(count1==0){
|
||||
rStatOrgYPO.setAverageOverDay(0.00);
|
||||
|
||||
}else {
|
||||
String format = df.format((float)rMpTargetWarnDPOS.size()/ count1);
|
||||
|
||||
rStatOrgYPO.setAverageOverDay(Double.parseDouble(format));
|
||||
}
|
||||
|
||||
/*8、频率偏差合格率,9、电压偏差合格率,10、闪变合格率*/
|
||||
rMpPassRateYPOQueryWrapper.clear();
|
||||
rMpPassRateYPOQueryWrapper.select("avg(freq_pass_rate) as freq_pass_rate","avg(v_dev_pass_rate) as v_dev_pass_rate","avg(flicker_pass_rate) as flicker_pass_rate").
|
||||
in("measurement_point_id",collect1).
|
||||
eq("YEAR( data_date)", dataDate.substring(0,4));
|
||||
RMpPassRateYPO rMpPassRateYPO = rMpPassRateYMapper.selectOne(rMpPassRateYPOQueryWrapper);
|
||||
rStatOrgYPO.setFreqPassRate(rMpPassRateYPO.getFreqPassRate());
|
||||
rStatOrgYPO.setFlickerPassRate(rMpPassRateYPO.getFlickerPassRate());
|
||||
rStatOrgYPO.setVDevPassRate(rMpPassRateYPO.getvDevPassRate());
|
||||
|
||||
|
||||
|
||||
/*11、日均监测到暂态指标的监测点数*/
|
||||
rMpEventDetailDPOQueryWrapper.clear();
|
||||
rMpEventDetailDPOQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
and(i-> i.gt("swell_times",0).or().gt("sag_times",0).or().gt("interrupt_times",0)).
|
||||
eq("YEAR( data_date)", dataDate.substring(0,4));
|
||||
List<RMpEventDetailDPO> rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper);
|
||||
Integer eventCount =0;
|
||||
int sum = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getInterruptTimes).sum();
|
||||
int sum1 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSagTimes).sum();
|
||||
int sum2 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSwellTimes).sum();
|
||||
String value3 = df.format((float)rMpEventDetailDPOS.size()/ days);
|
||||
rStatOrgYPO.setEventMeasurementAverage(Double.valueOf(value3));
|
||||
/*12、累计监测到暂态指标的监测点数*/
|
||||
long count2 = rMpEventDetailDPOS.stream().map(RMpEventDetailDPO::getMeasurementPointId).distinct().count();
|
||||
|
||||
rStatOrgYPO.setEventMeasurementAccrued(Integer.valueOf(count2+""));
|
||||
/*13、日均暂态超标监测点数占比*/
|
||||
String value4 = df.format(rStatOrgYPO.getEventMeasurementAverage() / rStatOrgYPO.getAllCount());
|
||||
rStatOrgYPO.setEventMeasurementRatioAverage(Double.valueOf(value4));
|
||||
|
||||
/*15、暂态指标发生频次*/
|
||||
rStatOrgYPO.setEventCount(sum+sum1+sum2);
|
||||
|
||||
/*14、暂态指标发生频次*/
|
||||
|
||||
long count3 = rMpEventDetailDPOS.stream().map(RMpEventDetailDPO::getMeasurementPointId).distinct().count();
|
||||
if(count3==0){
|
||||
rStatOrgYPO.setEventFreq(0.00);
|
||||
|
||||
}else {
|
||||
String value5 = df.format((float)rStatOrgYPO.getEventCount() / count3);
|
||||
|
||||
rStatOrgYPO.setEventFreq(Double.valueOf(value5));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*todo这个指标不重要,后续根据配置来*/
|
||||
/*17、告警监测点数*/
|
||||
rStatOrgYPO.setShouldCount(8);
|
||||
rOperatingMonitorDPOQueryWrapper.clear();
|
||||
rOperatingMonitorDPOQueryWrapper.select("distinct(measurement_point_id)").
|
||||
in("measurement_point_id",collect1).
|
||||
eq("is_unusual",1).
|
||||
eq("YEAR( data_date)", dataDate.substring(0,4));
|
||||
Integer integer2 = rOperatingMonitorDMapper.selectCount(rOperatingMonitorDPOQueryWrapper);
|
||||
rStatOrgYPO.setWarnCount(integer2);
|
||||
|
||||
rStatOrgYList.add(rStatOrgYPO);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
if (!CollectionUtils.isEmpty(rStatOrgYList)){
|
||||
rStatOrgYService.saveOrUpdateBatchByMultiId(rStatOrgYList,500);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = {Exception.class})
|
||||
@Async("asyncExecutor")
|
||||
@SneakyThrows
|
||||
private void hanlderQtr(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
|
||||
List<RStatOrgQPO> rStatOrgQPOList = new ArrayList<>();
|
||||
Date date = DateUtil.parse(dataDate);
|
||||
/*获取当季天数求均值使用*/
|
||||
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); // 转换为LocalDate对象
|
||||
int days = PublicUtil.getQtrDays(localDate);
|
||||
/*获取数据类型*/
|
||||
|
||||
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<ROperatingMonitorDPO> rOperatingMonitorDPOQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RMpTargetWarnDPO> rmpTargetWarnDPOQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RMpEventDetailDPO> rMpEventDetailDPOQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RMpPassRateQPO> rMpPassRateQPOQueryWrapper = new QueryWrapper<>();
|
||||
|
||||
|
||||
|
||||
data.forEach(deptGetChildrenMoreDTO -> {
|
||||
|
||||
/*主网*/
|
||||
if(!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())){
|
||||
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
|
||||
Map<Integer, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
|
||||
collect.forEach((k, v)->{
|
||||
|
||||
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
RStatOrgQPO rStatOrgQPO = new RStatOrgQPO();
|
||||
rStatOrgQPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatOrgQPO.setDataDate(date);
|
||||
rStatOrgQPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
rStatOrgQPO.setMeasurementTypeClass(getmeasurementType(k,lineSortMap));
|
||||
rStatOrgQPO.setAllCount(v.size());
|
||||
/*2、2、日均有效接入监测点数2、日均有效接入监测点数*/
|
||||
rOperatingMonitorDPOQueryWrapper.clear();
|
||||
rOperatingMonitorDPOQueryWrapper.select("measurement_point_id").
|
||||
in("measurement_point_id",collect1).
|
||||
gt("effective_minute_count",0).
|
||||
eq("QUARTER( data_date)", PublicUtil.getNowQuarter (dataDate));
|
||||
List<ROperatingMonitorDPO> rOperatingMonitorDPOS = rOperatingMonitorDMapper.selectList(rOperatingMonitorDPOQueryWrapper);
|
||||
String value = df.format((float)rOperatingMonitorDPOS.size()/ days);
|
||||
|
||||
rStatOrgQPO.setEffectiveMeasurementAverage(Double.parseDouble(value));
|
||||
/*3、3、累计有效接入监测点数*/
|
||||
long count = rOperatingMonitorDPOS.stream().map(ROperatingMonitorDPO::getMeasurementPointId).distinct().count();
|
||||
rStatOrgQPO.setEffectiveMeasurementAccrued(Integer.valueOf(count+""));
|
||||
|
||||
/*4、日均稳态超标监测点数*/
|
||||
rmpTargetWarnDPOQueryWrapper.clear();
|
||||
rmpTargetWarnDPOQueryWrapper.select("measurement_point_id").
|
||||
in("measurement_point_id",collect1).
|
||||
eq("is_harmonic",1).
|
||||
eq("QUARTER( data_date)", PublicUtil.getNowQuarter (dataDate));
|
||||
List<RMpTargetWarnDPO> rMpTargetWarnDPOS = rMpTargetWarnDMapper.selectList(rmpTargetWarnDPOQueryWrapper);
|
||||
String value1 = df.format((float)rMpTargetWarnDPOS.size()/ days);
|
||||
rStatOrgQPO.setHarmonicMeasurementAverage(Double.parseDouble(value1));
|
||||
|
||||
/* 5、累计稳态超标监测点数*/
|
||||
long count1 = rMpTargetWarnDPOS.stream().map(RMpTargetWarnDPO::getMeasurementPointId).distinct().count();
|
||||
|
||||
rStatOrgQPO.setHarmonicMeasurementAccrued(Integer.valueOf(count1+""));
|
||||
|
||||
/*6、日均稳态超标监测点数占比*/
|
||||
String value2 = df.format(rStatOrgQPO.getHarmonicMeasurementAccrued() / rStatOrgQPO.getAllCount());
|
||||
rStatOrgQPO.setHarmonicMeasurementRatioAverage(Double.parseDouble(value2));
|
||||
|
||||
/*7、累计超标天数*/
|
||||
if(count1==0){
|
||||
rStatOrgQPO.setAverageOverDay(0.00);
|
||||
|
||||
}else {
|
||||
String format = df.format((float)rMpTargetWarnDPOS.size()/ count1);
|
||||
|
||||
rStatOrgQPO.setAverageOverDay(Double.parseDouble(format));
|
||||
}
|
||||
|
||||
/*8、频率偏差合格率,9、电压偏差合格率,10、闪变合格率*/
|
||||
rMpPassRateQPOQueryWrapper.clear();
|
||||
rMpPassRateQPOQueryWrapper.select("avg(freq_pass_rate) as freq_pass_rate","avg(v_dev_pass_rate) as v_dev_pass_rate","avg(flicker_pass_rate) as flicker_pass_rate").
|
||||
in("measurement_point_id",collect1).
|
||||
eq("QUARTER( data_date)", PublicUtil.getNowQuarter (dataDate));
|
||||
RMpPassRateQPO rMpPassRateQPO = rMpPassRateQMapper.selectOne(rMpPassRateQPOQueryWrapper);
|
||||
rStatOrgQPO.setFreqPassRate(rMpPassRateQPO.getFreqPassRate());
|
||||
rStatOrgQPO.setFlickerPassRate(rMpPassRateQPO.getFlickerPassRate());
|
||||
rStatOrgQPO.setVDevPassRate(rMpPassRateQPO.getvDevPassRate());
|
||||
|
||||
|
||||
|
||||
/*11、日均监测到暂态指标的监测点数*/
|
||||
rMpEventDetailDPOQueryWrapper.clear();
|
||||
rMpEventDetailDPOQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
and(i-> i.gt("swell_times",0).or().gt("sag_times",0).or().gt("interrupt_times",0)).
|
||||
eq("QUARTER( data_date)", PublicUtil.getNowQuarter (dataDate));
|
||||
List<RMpEventDetailDPO> rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper);
|
||||
Integer eventCount =0;
|
||||
int sum = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getInterruptTimes).sum();
|
||||
int sum1 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSagTimes).sum();
|
||||
int sum2 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSwellTimes).sum();
|
||||
String value3 = df.format((float)rMpEventDetailDPOS.size()/ days);
|
||||
rStatOrgQPO.setEventMeasurementAverage(Double.valueOf(value3));
|
||||
/*12、累计监测到暂态指标的监测点数*/
|
||||
long count2 = rMpEventDetailDPOS.stream().map(RMpEventDetailDPO::getMeasurementPointId).distinct().count();
|
||||
|
||||
rStatOrgQPO.setEventMeasurementAccrued(Integer.valueOf(count2+""));
|
||||
/*13、日均暂态超标监测点数占比*/
|
||||
String value4 = df.format(rStatOrgQPO.getEventMeasurementAverage() / rStatOrgQPO.getAllCount());
|
||||
rStatOrgQPO.setEventMeasurementRatioAverage(Double.valueOf(value4));
|
||||
|
||||
/*15、暂态指标发生频次*/
|
||||
rStatOrgQPO.setEventCount(sum+sum1+sum2);
|
||||
|
||||
/*14、暂态指标发生频次*/
|
||||
long count3 = rMpEventDetailDPOS.stream().map(RMpEventDetailDPO::getMeasurementPointId).distinct().count();
|
||||
if(count3==0){
|
||||
rStatOrgQPO.setEventFreq(0.00);
|
||||
|
||||
}else {
|
||||
String value5 = df.format((float)rStatOrgQPO.getEventCount() / count3);
|
||||
|
||||
rStatOrgQPO.setEventFreq(Double.valueOf(value5));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*todo这个指标不重要,后续根据配置来*/
|
||||
/*17、告警监测点数*/
|
||||
rStatOrgQPO.setShouldCount(8);
|
||||
rOperatingMonitorDPOQueryWrapper.clear();
|
||||
rOperatingMonitorDPOQueryWrapper.select("distinct(measurement_point_id)").
|
||||
in("measurement_point_id",collect1).
|
||||
eq("is_unusual",1).
|
||||
eq("QUARTER( data_date)", PublicUtil.getNowQuarter (dataDate));
|
||||
Integer integer2 = rOperatingMonitorDMapper.selectCount(rOperatingMonitorDPOQueryWrapper);
|
||||
rStatOrgQPO.setWarnCount(integer2);
|
||||
|
||||
rStatOrgQPOList.add(rStatOrgQPO);
|
||||
});
|
||||
|
||||
}
|
||||
/*配网*/
|
||||
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());
|
||||
RStatOrgQPO rStatOrgQPO = new RStatOrgQPO();
|
||||
rStatOrgQPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatOrgQPO.setDataDate(date);
|
||||
rStatOrgQPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
|
||||
rStatOrgQPO.setMeasurementTypeClass(getmeasurementType(k,lineSortMap));
|
||||
rStatOrgQPO.setAllCount(v.size());
|
||||
/*2、2、日均有效接入监测点数2、日均有效接入监测点数*/
|
||||
rOperatingMonitorDPOQueryWrapper.clear();
|
||||
rOperatingMonitorDPOQueryWrapper.select("measurement_point_id").
|
||||
in("measurement_point_id",collect1).
|
||||
gt("effective_minute_count",0).
|
||||
eq("QUARTER( data_date)", PublicUtil.getNowQuarter (dataDate));
|
||||
List<ROperatingMonitorDPO> rOperatingMonitorDPOS = rOperatingMonitorDMapper.selectList(rOperatingMonitorDPOQueryWrapper);
|
||||
String value = df.format((float)rOperatingMonitorDPOS.size()/ days);
|
||||
|
||||
rStatOrgQPO.setEffectiveMeasurementAverage(Double.parseDouble(value));
|
||||
/*3、3、累计有效接入监测点数*/
|
||||
long count = rOperatingMonitorDPOS.stream().map(ROperatingMonitorDPO::getMeasurementPointId).distinct().count();
|
||||
rStatOrgQPO.setEffectiveMeasurementAccrued(Integer.valueOf(count+""));
|
||||
|
||||
/*4、日均稳态超标监测点数*/
|
||||
rmpTargetWarnDPOQueryWrapper.clear();
|
||||
rmpTargetWarnDPOQueryWrapper.select("measurement_point_id").
|
||||
in("measurement_point_id",collect1).
|
||||
eq("is_harmonic",1).
|
||||
eq("QUARTER( data_date)", PublicUtil.getNowQuarter (dataDate));
|
||||
List<RMpTargetWarnDPO> rMpTargetWarnDPOS = rMpTargetWarnDMapper.selectList(rmpTargetWarnDPOQueryWrapper);
|
||||
String value1 = df.format((float)rMpTargetWarnDPOS.size()/ days);
|
||||
rStatOrgQPO.setHarmonicMeasurementAverage(Double.parseDouble(value1));
|
||||
|
||||
/* 5、累计稳态超标监测点数*/
|
||||
long count1 = rMpTargetWarnDPOS.stream().map(RMpTargetWarnDPO::getMeasurementPointId).distinct().count();
|
||||
|
||||
rStatOrgQPO.setHarmonicMeasurementAccrued(Integer.valueOf(count1+""));
|
||||
|
||||
/*6、日均稳态超标监测点数占比*/
|
||||
String value2 = df.format(rStatOrgQPO.getHarmonicMeasurementAccrued() / rStatOrgQPO.getAllCount());
|
||||
rStatOrgQPO.setHarmonicMeasurementRatioAverage(Double.parseDouble(value2));
|
||||
|
||||
/*7、累计超标天数*/
|
||||
if(count1==0) {
|
||||
rStatOrgQPO.setAverageOverDay(0.00);
|
||||
|
||||
}else{
|
||||
String format = df.format((float)rMpTargetWarnDPOS.size()/ count1);
|
||||
|
||||
rStatOrgQPO.setAverageOverDay(Double.parseDouble(format));
|
||||
}
|
||||
|
||||
/*8、频率偏差合格率,9、电压偏差合格率,10、闪变合格率*/
|
||||
rMpPassRateQPOQueryWrapper.clear();
|
||||
rMpPassRateQPOQueryWrapper.select("avg(freq_pass_rate) as freq_pass_rate","avg(v_dev_pass_rate) as v_dev_pass_rate","avg(flicker_pass_rate) as flicker_pass_rate").
|
||||
in("measurement_point_id",collect1).
|
||||
eq("QUARTER( data_date)", PublicUtil.getNowQuarter (dataDate));
|
||||
RMpPassRateQPO rMpPassRateQPO = rMpPassRateQMapper.selectOne(rMpPassRateQPOQueryWrapper);
|
||||
rStatOrgQPO.setFreqPassRate(rMpPassRateQPO.getFreqPassRate());
|
||||
rStatOrgQPO.setFlickerPassRate(rMpPassRateQPO.getFlickerPassRate());
|
||||
rStatOrgQPO.setVDevPassRate(rMpPassRateQPO.getvDevPassRate());
|
||||
|
||||
|
||||
|
||||
/*11、日均监测到暂态指标的监测点数*/
|
||||
rMpEventDetailDPOQueryWrapper.clear();
|
||||
rMpEventDetailDPOQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
and(i-> i.gt("swell_times",0).or().gt("sag_times",0).or().gt("interrupt_times",0)).
|
||||
eq("QUARTER( data_date)", PublicUtil.getNowQuarter (dataDate));
|
||||
List<RMpEventDetailDPO> rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper);
|
||||
Integer eventCount =0;
|
||||
int sum = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getInterruptTimes).sum();
|
||||
int sum1 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSagTimes).sum();
|
||||
int sum2 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSwellTimes).sum();
|
||||
String value3 = df.format((float)rMpEventDetailDPOS.size()/ days);
|
||||
rStatOrgQPO.setEventMeasurementAverage(Double.valueOf(value3));
|
||||
/*12、累计监测到暂态指标的监测点数*/
|
||||
long count2 = rMpEventDetailDPOS.stream().map(RMpEventDetailDPO::getMeasurementPointId).distinct().count();
|
||||
|
||||
rStatOrgQPO.setEventMeasurementAccrued(Integer.valueOf(count2+""));
|
||||
/*13、日均暂态超标监测点数占比*/
|
||||
String value4 = df.format(rStatOrgQPO.getEventMeasurementAverage() / rStatOrgQPO.getAllCount());
|
||||
rStatOrgQPO.setEventMeasurementRatioAverage(Double.valueOf(value4));
|
||||
|
||||
/*15、暂态指标发生频次*/
|
||||
rStatOrgQPO.setEventCount(sum+sum1+sum2);
|
||||
|
||||
/*14、暂态指标发生频次*/
|
||||
long count3 = rMpEventDetailDPOS.stream().map(RMpEventDetailDPO::getMeasurementPointId).distinct().count();
|
||||
|
||||
if(count3==0){
|
||||
rStatOrgQPO.setEventFreq(0.00);
|
||||
|
||||
}else{
|
||||
String value5 = df.format((float)rStatOrgQPO.getEventCount() / count3);
|
||||
|
||||
rStatOrgQPO.setEventFreq(Double.valueOf(value5));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*todo这个指标不重要,后续根据配置来*/
|
||||
/*17、告警监测点数*/
|
||||
rStatOrgQPO.setShouldCount(8);
|
||||
rOperatingMonitorDPOQueryWrapper.clear();
|
||||
rOperatingMonitorDPOQueryWrapper.select("distinct(measurement_point_id)").
|
||||
in("measurement_point_id",collect1).
|
||||
eq("is_unusual",1).
|
||||
eq("QUARTER( data_date)", PublicUtil.getNowQuarter (dataDate));
|
||||
Integer integer2 = rOperatingMonitorDMapper.selectCount(rOperatingMonitorDPOQueryWrapper);
|
||||
rStatOrgQPO.setWarnCount(integer2);
|
||||
|
||||
rStatOrgQPOList.add(rStatOrgQPO);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
if (!CollectionUtils.isEmpty(rStatOrgQPOList)){
|
||||
rStatOrgQService.saveOrUpdateBatchByMultiId(rStatOrgQPOList,500);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Transactional(rollbackFor = {Exception.class})
|
||||
@Async("asyncExecutor")
|
||||
@SneakyThrows
|
||||
private void hanlderMonth(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
|
||||
List<RStatOrgMPO> rStatOrgMPOList = new ArrayList<>();
|
||||
Date date = DateUtil.parse(dataDate);
|
||||
/*获取当月天数求均值使用*/
|
||||
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); // 转换为LocalDate对象
|
||||
int days = localDate.lengthOfMonth();
|
||||
/*获取数据类型*/
|
||||
|
||||
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<ROperatingMonitorDPO> rOperatingMonitorDPOQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RMpTargetWarnDPO> rmpTargetWarnDPOQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RMpEventDetailDPO> rMpEventDetailDPOQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RMpPassRateMPO> rMpPassRateMPOQueryWrapper = new QueryWrapper<>();
|
||||
|
||||
|
||||
|
||||
data.forEach(deptGetChildrenMoreDTO -> {
|
||||
|
||||
/*主网*/
|
||||
if(!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())){
|
||||
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
|
||||
Map<Integer, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
|
||||
collect.forEach((k, v)->{
|
||||
|
||||
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
RStatOrgMPO rStatOrgMPO = new RStatOrgMPO();
|
||||
rStatOrgMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatOrgMPO.setDataDate(date);
|
||||
rStatOrgMPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
rStatOrgMPO.setMeasurementTypeClass(getmeasurementType(k,lineSortMap));
|
||||
rStatOrgMPO.setAllCount(v.size());
|
||||
/*2、2、日均有效接入监测点数2、日均有效接入监测点数*/
|
||||
rOperatingMonitorDPOQueryWrapper.clear();
|
||||
rOperatingMonitorDPOQueryWrapper.select("measurement_point_id").
|
||||
in("measurement_point_id",collect1).
|
||||
gt("effective_minute_count",0).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring(0, 7));
|
||||
List<ROperatingMonitorDPO> rOperatingMonitorDPOS = rOperatingMonitorDMapper.selectList(rOperatingMonitorDPOQueryWrapper);
|
||||
String value = df.format((float)rOperatingMonitorDPOS.size()/ days);
|
||||
|
||||
rStatOrgMPO.setEffectiveMeasurementAverage(Double.parseDouble(value));
|
||||
/*3、3、累计有效接入监测点数*/
|
||||
long count = rOperatingMonitorDPOS.stream().map(ROperatingMonitorDPO::getMeasurementPointId).distinct().count();
|
||||
rStatOrgMPO.setEffectiveMeasurementAccrued(Integer.valueOf(count+""));
|
||||
|
||||
/*4、日均稳态超标监测点数*/
|
||||
rmpTargetWarnDPOQueryWrapper.clear();
|
||||
rmpTargetWarnDPOQueryWrapper.select("measurement_point_id").
|
||||
in("measurement_point_id",collect1).
|
||||
eq("is_harmonic",1).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring(0, 7));
|
||||
List<RMpTargetWarnDPO> rMpTargetWarnDPOS = rMpTargetWarnDMapper.selectList(rmpTargetWarnDPOQueryWrapper);
|
||||
String value1 = df.format((float)rMpTargetWarnDPOS.size()/ days);
|
||||
rStatOrgMPO.setHarmonicMeasurementAverage(Double.parseDouble(value1));
|
||||
|
||||
/* 5、累计稳态超标监测点数*/
|
||||
long count1 = rMpTargetWarnDPOS.stream().map(RMpTargetWarnDPO::getMeasurementPointId).distinct().count();
|
||||
|
||||
rStatOrgMPO.setHarmonicMeasurementAccrued(Integer.valueOf(count1+""));
|
||||
|
||||
/*6、日均稳态超标监测点数占比*/
|
||||
String value2 = df.format(rStatOrgMPO.getHarmonicMeasurementAccrued() / rStatOrgMPO.getAllCount());
|
||||
rStatOrgMPO.setHarmonicMeasurementRatioAverage(Double.parseDouble(value2));
|
||||
|
||||
/*7、累计超标天数*/
|
||||
rStatOrgMPO.setOverDayAccrued(rMpTargetWarnDPOS.size());
|
||||
/*8、频率偏差合格率,9、电压偏差合格率,10、闪变合格率*/
|
||||
rMpPassRateMPOQueryWrapper.clear();
|
||||
rMpPassRateMPOQueryWrapper.select("avg(freq_pass_rate) as freq_pass_rate","avg(v_dev_pass_rate) as v_dev_pass_rate","avg(flicker_pass_rate) as flicker_pass_rate").
|
||||
in("measurement_point_id",collect1).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring(0, 7));
|
||||
RMpPassRateMPO rMpPassRateMPO = rMpPassRateMMapper.selectOne(rMpPassRateMPOQueryWrapper);
|
||||
rStatOrgMPO.setFreqPassRate(rMpPassRateMPO.getFreqPassRate());
|
||||
rStatOrgMPO.setFlickerPassRate(rMpPassRateMPO.getFlickerPassRate());
|
||||
rStatOrgMPO.setVDevPassRate(rMpPassRateMPO.getvDevPassRate());
|
||||
|
||||
|
||||
|
||||
/*11、日均监测到暂态指标的监测点数*/
|
||||
rMpEventDetailDPOQueryWrapper.clear();
|
||||
rMpEventDetailDPOQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
and(i-> i.gt("swell_times",0).or().gt("sag_times",0).or().gt("interrupt_times",0)).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring(0, 7));
|
||||
List<RMpEventDetailDPO> rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper);
|
||||
Integer eventCount =0;
|
||||
int sum = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getInterruptTimes).sum();
|
||||
int sum1 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSagTimes).sum();
|
||||
int sum2 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSwellTimes).sum();
|
||||
String value3 = df.format((float)rMpEventDetailDPOS.size()/ days);
|
||||
rStatOrgMPO.setEventMeasurementAverage(Double.valueOf(value3));
|
||||
/*12、累计监测到暂态指标的监测点数*/
|
||||
long count2 = rMpEventDetailDPOS.stream().map(RMpEventDetailDPO::getMeasurementPointId).distinct().count();
|
||||
|
||||
rStatOrgMPO.setEventMeasurementAccrued(Integer.valueOf(count2+""));
|
||||
/*13、日均暂态超标监测点数占比*/
|
||||
String value4 = df.format(rStatOrgMPO.getEventMeasurementAverage() / rStatOrgMPO.getAllCount());
|
||||
rStatOrgMPO.setEventMeasurementRatioAverage(Double.valueOf(value4));
|
||||
|
||||
/*15、暂态指标发生频次*/
|
||||
rStatOrgMPO.setEventCount(sum+sum1+sum2);
|
||||
|
||||
/*14、暂态指标发生频次*/
|
||||
long count3 = rMpEventDetailDPOS.stream().map(RMpEventDetailDPO::getMeasurementPointId).distinct().count();
|
||||
if(count3==0){
|
||||
rStatOrgMPO.setEventFreq(0.00);
|
||||
|
||||
}else {
|
||||
String value5 = df.format((float)rStatOrgMPO.getEventCount() / count3);
|
||||
|
||||
rStatOrgMPO.setEventFreq(Double.valueOf(value5));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*todo这个指标不重要,后续根据配置来*/
|
||||
/*17、告警监测点数*/
|
||||
rStatOrgMPO.setShouldCount(8);
|
||||
rOperatingMonitorDPOQueryWrapper.clear();
|
||||
rOperatingMonitorDPOQueryWrapper.select("distinct(measurement_point_id)").
|
||||
in("measurement_point_id",collect1).
|
||||
eq("is_unusual",1).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring(0, 7));
|
||||
Integer integer2 = rOperatingMonitorDMapper.selectCount(rOperatingMonitorDPOQueryWrapper);
|
||||
rStatOrgMPO.setWarnCount(integer2);
|
||||
rStatOrgMPOList.add(rStatOrgMPO);
|
||||
});
|
||||
|
||||
}
|
||||
/*配网*/
|
||||
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());
|
||||
RStatOrgMPO rStatOrgMPO = new RStatOrgMPO();
|
||||
rStatOrgMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatOrgMPO.setDataDate(date);
|
||||
rStatOrgMPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
|
||||
rStatOrgMPO.setMeasurementTypeClass(getmeasurementType(k,lineSortMap));
|
||||
rStatOrgMPO.setAllCount(v.size());
|
||||
/*2、2、日均有效接入监测点数2、日均有效接入监测点数*/
|
||||
rOperatingMonitorDPOQueryWrapper.clear();
|
||||
rOperatingMonitorDPOQueryWrapper.select("measurement_point_id").
|
||||
in("measurement_point_id",collect1).
|
||||
gt("effective_minute_count",0).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring(0, 7));
|
||||
List<ROperatingMonitorDPO> rOperatingMonitorDPOS = rOperatingMonitorDMapper.selectList(rOperatingMonitorDPOQueryWrapper);
|
||||
String value = df.format((float)rOperatingMonitorDPOS.size()/ days);
|
||||
|
||||
rStatOrgMPO.setEffectiveMeasurementAverage(Double.parseDouble(value));
|
||||
/*3、3、累计有效接入监测点数*/
|
||||
long count = rOperatingMonitorDPOS.stream().map(ROperatingMonitorDPO::getMeasurementPointId).distinct().count();
|
||||
rStatOrgMPO.setEffectiveMeasurementAccrued(Integer.valueOf(count+""));
|
||||
|
||||
/*4、日均稳态超标监测点数*/
|
||||
rmpTargetWarnDPOQueryWrapper.clear();
|
||||
rmpTargetWarnDPOQueryWrapper.select("measurement_point_id").
|
||||
in("measurement_point_id",collect1).
|
||||
eq("is_harmonic",1).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring(0, 7));
|
||||
List<RMpTargetWarnDPO> rMpTargetWarnDPOS = rMpTargetWarnDMapper.selectList(rmpTargetWarnDPOQueryWrapper);
|
||||
String value1 = df.format((float)rMpTargetWarnDPOS.size()/ days);
|
||||
rStatOrgMPO.setHarmonicMeasurementAverage(Double.parseDouble(value1));
|
||||
|
||||
/* 5、累计稳态超标监测点数*/
|
||||
long count1 = rMpTargetWarnDPOS.stream().map(RMpTargetWarnDPO::getMeasurementPointId).distinct().count();
|
||||
|
||||
rStatOrgMPO.setHarmonicMeasurementAccrued(Integer.valueOf(count1+""));
|
||||
|
||||
/*6、日均稳态超标监测点数占比*/
|
||||
String value2 = df.format(rStatOrgMPO.getHarmonicMeasurementAccrued() / rStatOrgMPO.getAllCount());
|
||||
rStatOrgMPO.setHarmonicMeasurementRatioAverage(Double.parseDouble(value2));
|
||||
|
||||
/*7、累计超标天数*/
|
||||
rStatOrgMPO.setOverDayAccrued(rMpTargetWarnDPOS.size());
|
||||
/*8、频率偏差合格率,9、电压偏差合格率,10、闪变合格率*/
|
||||
rMpPassRateMPOQueryWrapper.clear();
|
||||
rMpPassRateMPOQueryWrapper.select("avg(freq_pass_rate) as freq_pass_rate","avg(v_dev_pass_rate) as v_dev_pass_rate","avg(flicker_pass_rate) as flicker_pass_rate").
|
||||
in("measurement_point_id",collect1).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring(0, 7));
|
||||
RMpPassRateMPO rMpPassRateMPO = rMpPassRateMMapper.selectOne(rMpPassRateMPOQueryWrapper);
|
||||
rStatOrgMPO.setFreqPassRate(rMpPassRateMPO.getFreqPassRate());
|
||||
rStatOrgMPO.setFlickerPassRate(rMpPassRateMPO.getFlickerPassRate());
|
||||
rStatOrgMPO.setVDevPassRate(rMpPassRateMPO.getvDevPassRate());
|
||||
|
||||
|
||||
|
||||
/*11、日均监测到暂态指标的监测点数*/
|
||||
rMpEventDetailDPOQueryWrapper.clear();
|
||||
rMpEventDetailDPOQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
and(i-> i.gt("swell_times",0).or().gt("sag_times",0).or().gt("interrupt_times",0)).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring(0, 7));
|
||||
List<RMpEventDetailDPO> rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper);
|
||||
Integer eventCount =0;
|
||||
int sum = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getInterruptTimes).sum();
|
||||
int sum1 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSagTimes).sum();
|
||||
int sum2 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSwellTimes).sum();
|
||||
String value3 = df.format((float)rMpEventDetailDPOS.size()/ days);
|
||||
rStatOrgMPO.setEventMeasurementAverage(Double.valueOf(value3));
|
||||
/*12、累计监测到暂态指标的监测点数*/
|
||||
long count2 = rMpEventDetailDPOS.stream().map(RMpEventDetailDPO::getMeasurementPointId).distinct().count();
|
||||
|
||||
rStatOrgMPO.setEventMeasurementAccrued(Integer.valueOf(count2+""));
|
||||
/*13、日均暂态超标监测点数占比*/
|
||||
String value4 = df.format(rStatOrgMPO.getEventMeasurementAverage() / rStatOrgMPO.getAllCount());
|
||||
rStatOrgMPO.setEventMeasurementRatioAverage(Double.valueOf(value4));
|
||||
|
||||
/*15、暂态指标发生频次*/
|
||||
rStatOrgMPO.setEventCount(sum+sum1+sum2);
|
||||
|
||||
/*14、暂态指标发生频次*/
|
||||
long count3 = rMpEventDetailDPOS.stream().map(RMpEventDetailDPO::getMeasurementPointId).distinct().count();
|
||||
if(count3==0){
|
||||
rStatOrgMPO.setEventFreq(0.00);
|
||||
|
||||
}else{
|
||||
String value5 = df.format((float)rStatOrgMPO.getEventCount() / count3);
|
||||
|
||||
rStatOrgMPO.setEventFreq(Double.valueOf(value5));
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*todo这个指标不重要,后续根据配置来*/
|
||||
/*17、告警监测点数*/
|
||||
rStatOrgMPO.setShouldCount(8);
|
||||
rOperatingMonitorDPOQueryWrapper.clear();
|
||||
rOperatingMonitorDPOQueryWrapper.select("distinct(measurement_point_id)").
|
||||
in("measurement_point_id",collect1).
|
||||
eq("is_unusual",1).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring(0, 7));
|
||||
Integer integer2 = rOperatingMonitorDMapper.selectCount(rOperatingMonitorDPOQueryWrapper);
|
||||
rStatOrgMPO.setWarnCount(integer2);
|
||||
|
||||
rStatOrgMPOList.add(rStatOrgMPO);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
if (!CollectionUtils.isEmpty(rStatOrgMPOList)){
|
||||
rStatOrgMService.saveOrUpdateBatchByMultiId(rStatOrgMPOList,500);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = {Exception.class})
|
||||
@Async("asyncExecutor")
|
||||
@SneakyThrows
|
||||
@@ -123,6 +963,7 @@ public class RStatOrgServiceImpl implements RStatOrgService {
|
||||
rMpEventDetailDPOQueryWrapper.clear();
|
||||
rMpEventDetailDPOQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
and(i-> i.gt("swell_times",0).or().gt("sag_times",0).or().gt("interrupt_times",0)).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",dataDate);
|
||||
List<RMpEventDetailDPO> rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper);
|
||||
Integer eventCount =0;
|
||||
@@ -177,15 +1018,18 @@ public class RStatOrgServiceImpl implements RStatOrgService {
|
||||
rStatOrgDPO.setHarmonicMeasurement(integer1);
|
||||
/*4、发生暂态的监测点数,5、暂态指标发生次数*/
|
||||
rMpEventDetailDPOQueryWrapper.clear();
|
||||
rMpEventDetailDPOQueryWrapper.select("measurement_point_id").
|
||||
rMpEventDetailDPOQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
in("measurement_point_id",collect1).
|
||||
eq("is_harmonic",1).
|
||||
and(i-> i.gt("swell_times",0).or().gt("sag_times",0).or().gt("interrupt_times",0)).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",dataDate);
|
||||
List<RMpEventDetailDPO> rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper);
|
||||
rStatOrgDPO.setEventCount(rMpEventDetailDPOS.size());
|
||||
long count = rMpEventDetailDPOS.stream().distinct().count();
|
||||
rStatOrgDPO.setEventMeasurement(Integer.valueOf(count+""));
|
||||
Integer eventCount =0;
|
||||
int sum = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getInterruptTimes).sum();
|
||||
int sum1 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSagTimes).sum();
|
||||
int sum2 = rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSwellTimes).sum();
|
||||
|
||||
rStatOrgDPO.setEventCount(sum+sum1+sum2);
|
||||
rStatOrgDPO.setEventMeasurement(rMpEventDetailDPOS.size());
|
||||
/*todo这个指标不重要,后续根据配置来*/
|
||||
rStatOrgDPO.setShouldCount(8);
|
||||
/*7、告警监测点数*/
|
||||
@@ -208,6 +1052,7 @@ public class RStatOrgServiceImpl implements RStatOrgService {
|
||||
|
||||
}
|
||||
|
||||
|
||||
private String getmeasurementType(Integer k, Map<String, DictData> lineSortMap) {
|
||||
String value ="";
|
||||
switch (k) {
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgYPOMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatOrgYPO;
|
||||
import com.njcn.prepare.harmonic.service.mysql.area.RStatOrgYPOService;
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/6/7 8:47【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Service
|
||||
public class RStatOrgYPOServiceImpl extends MppServiceImpl<RStatOrgYPOMapper, RStatOrgYPO> implements RStatOrgYPOService{
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.area;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicMPO;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/6/7 16:10【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface RStatHarmonicMPOService extends IMppService<RStatHarmonicMPO> {
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.area;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicQPO;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/6/7 16:11【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface RStatHarmonicQPOService extends IMppService<RStatHarmonicQPO> {
|
||||
|
||||
|
||||
}
|
||||
@@ -13,4 +13,5 @@ import java.util.List;
|
||||
*/
|
||||
public interface RStatHarmonicService {
|
||||
void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type);
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.area;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicVoltageDPO;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/6/6 9:10【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface RStatHarmonicVoltageDPOService extends IMppService<RStatHarmonicVoltageDPO> {
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.area;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicVoltageDPO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/6/6 9:10【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface RStatHarmonicVoltageService {
|
||||
|
||||
void handlerByPowerLevel(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.area;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicYPO;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/6/7 16:11【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface RStatHarmonicYPOService extends IMppService<RStatHarmonicYPO> {
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.area;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatOrgQPO;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/6/7 8:47【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface RStatOrgQPOService extends IMppService<RStatOrgQPO> {
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.area;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatOrgYPO;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* Date: 2023/6/7 8:47【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface RStatOrgYPOService extends IMppService<RStatOrgYPO> {
|
||||
|
||||
|
||||
}
|
||||
@@ -17,6 +17,8 @@ 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.newalgorithm.RStatEventDPOMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatEventMPOMapper;
|
||||
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.service.mysql.newalgorithm.*;
|
||||
import com.njcn.system.api.DicDataFeignClient;
|
||||
|
||||
Reference in New Issue
Block a user