package com.ruoyi.web.report.domain;

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

/**
 * Report definition entity.
 *
 * <p>Maps to table {@code rpt_definition} and stores core metadata
 * such as code, name, query mode, aggregate mode, status, and version.</p>
 */
public class ErpReportDefinition extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /** Primary key ID. */
    private Long id;

    /** Unique report code used for stable references. */
    @Excel(name = "Report Code")
    private String reportCode;

    /** Report display name. */
    @Excel(name = "Report Name")
    private String reportName;

    /** Data source key, e.g. business_db. */
    @Excel(name = "Data Source")
    private String dataSource;

    /** Query mode: LOW_CODE or CUSTOM_SQL. */
    @Excel(name = "Query Mode")
    private String queryMode;

    /** Aggregate mode: REALTIME or OFFLINE. */
    @Excel(name = "Aggregate Mode")
    private String aggregateMode;

    /** Current status: DRAFT, PUBLISHED, DISABLED. */
    @Excel(name = "Status")
    private String status;

    /** Version number, incremented when publishing. */
    @Excel(name = "Version")
    private Integer versionNo;

    /** Optional business description. */
    private String description;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getReportCode() {
        return reportCode;
    }

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

    public String getReportName() {
        return reportName;
    }

    public void setReportName(String reportName) {
        this.reportName = reportName;
    }

    public String getQueryMode() {
        return queryMode;
    }

    public void setQueryMode(String queryMode) {
        this.queryMode = queryMode;
    }

    public String getAggregateMode() {
        return aggregateMode;
    }

    public void setAggregateMode(String aggregateMode) {
        this.aggregateMode = aggregateMode;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getDataSource() {
        return dataSource;
    }

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

    public Integer getVersionNo() {
        return versionNo;
    }

    public void setVersionNo(Integer versionNo) {
        this.versionNo = versionNo;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}
