package com.ruoyi.analytics.domain;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;

import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 报表配置对象 dc_report_config
 * 
 * @author ruoyi
 * @date 2025-12-17
 */
public class ReportConfig extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 配置ID */
    private Long configId;

    /** 报表名称 */
    @Excel(name = "报表名称")
    @NotBlank(message = "报表名称不能为空")
    @Size(max = 100, message = "报表名称长度不能超过100个字符")
    private String reportName;

    /** 报表编码 */
    @Excel(name = "报表编码")
    @NotBlank(message = "报表编码不能为空")
    @Size(max = 100, message = "报表编码长度不能超过100个字符")
    private String reportCode;

    /** 报表类型 */
    @Excel(name = "报表类型")
    @NotBlank(message = "报表类型不能为空")
    @Size(max = 50, message = "报表类型长度不能超过50个字符")
    private String reportType;

    /** 数据源 */
    @Excel(name = "数据源")
    @NotBlank(message = "数据源不能为空")
    @Size(max = 100, message = "数据源长度不能超过100个字符")
    private String dataSource;

    /** 查询SQL */
    @Size(max = 5000, message = "查询SQL长度不能超过5000个字符")
    private String querySql;

    /** 报表模板 */
    @Size(max = 5000, message = "报表模板长度不能超过5000个字符")
    private String reportTemplate;

    /** 输出格式 */
    @Excel(name = "输出格式")
    @NotBlank(message = "输出格式不能为空")
    @Size(max = 50, message = "输出格式长度不能超过50个字符")
    private String outputFormat;

    /** 调度类型 */
    @Excel(name = "调度类型")
    @Size(max = 50, message = "调度类型长度不能超过50个字符")
    private String scheduleType;

    /** Cron表达式 */
    @Excel(name = "Cron表达式")
    @Size(max = 100, message = "Cron表达式长度不能超过100个字符")
    private String cronExpression;

    /** 报表状态 */
    @Excel(name = "报表状态")
    @NotBlank(message = "报表状态不能为空")
    @Size(max = 50, message = "报表状态长度不能超过50个字符")
    private String reportStatus;

    public void setConfigId(Long configId) 
    {
        this.configId = configId;
    }

    public Long getConfigId() 
    {
        return configId;
    }
    public void setReportName(String reportName) 
    {
        this.reportName = reportName;
    }

    public String getReportName() 
    {
        return reportName;
    }
    public void setReportCode(String reportCode) 
    {
        this.reportCode = reportCode;
    }

    public String getReportCode() 
    {
        return reportCode;
    }
    public void setReportType(String reportType) 
    {
        this.reportType = reportType;
    }

    public String getReportType() 
    {
        return reportType;
    }
    public void setDataSource(String dataSource) 
    {
        this.dataSource = dataSource;
    }

    public String getDataSource() 
    {
        return dataSource;
    }
    public void setQuerySql(String querySql) 
    {
        this.querySql = querySql;
    }

    public String getQuerySql() 
    {
        return querySql;
    }
    public void setReportTemplate(String reportTemplate) 
    {
        this.reportTemplate = reportTemplate;
    }

    public String getReportTemplate() 
    {
        return reportTemplate;
    }
    public void setOutputFormat(String outputFormat) 
    {
        this.outputFormat = outputFormat;
    }

    public String getOutputFormat() 
    {
        return outputFormat;
    }
    public void setScheduleType(String scheduleType) 
    {
        this.scheduleType = scheduleType;
    }

    public String getScheduleType() 
    {
        return scheduleType;
    }
    public void setCronExpression(String cronExpression) 
    {
        this.cronExpression = cronExpression;
    }

    public String getCronExpression() 
    {
        return cronExpression;
    }
    public void setReportStatus(String reportStatus) 
    {
        this.reportStatus = reportStatus;
    }

    public String getReportStatus() 
    {
        return reportStatus;
    }

    @Override
    public String toString() {
        return "ReportConfig{" +
                "configId=" + configId +
                ", reportName='" + reportName + '\'' +
                ", reportCode='" + reportCode + '\'' +
                ", reportType='" + reportType + '\'' +
                ", dataSource='" + dataSource + '\'' +
                ", querySql='" + querySql + '\'' +
                ", reportTemplate='" + reportTemplate + '\'' +
                ", outputFormat='" + outputFormat + '\'' +
                ", scheduleType='" + scheduleType + '\'' +
                ", cronExpression='" + cronExpression + '\'' +
                ", reportStatus='" + reportStatus + '\'' +
                '}';
    }
}