算法提交

This commit is contained in:
huangzj
2023-06-20 14:11:59 +08:00
parent cfba93b908
commit d68b89763b
44 changed files with 2697 additions and 212 deletions

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}
}