package com.ruoyi.ems.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.huashe.common.annotation.Excel;
import com.huashe.common.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;
import java.util.List;

/**
 * 自定义报表-数据源配置实体
 *
 * @author ruoyi
 * @date 2026-01-30
 */
@Data
@ApiModel("数据源配置")
public class ReportDatasource extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 数据源编码 */
    @ApiModelProperty("数据源编码")
    @Excel(name = "数据源编码")
    private String dsCode;

    /** 数据源名称 */
    @ApiModelProperty("数据源名称")
    @Excel(name = "数据源名称")
    private String dsName;

    /** 数据源描述 */
    @ApiModelProperty("数据源描述")
    private String dsDesc;

    /** 主表名 */
    @ApiModelProperty("主表名")
    private String mainTable;

    /** 主表别名 */
    @ApiModelProperty("主表别名")
    private String mainAlias;

    /** 基础查询条件 */
    @ApiModelProperty("基础查询条件")
    private String baseWhere;

    /** 默认排序 */
    @ApiModelProperty("默认排序")
    private String defaultOrder;

    /** 分类 */
    @ApiModelProperty("分类(prod-产能,elec-用电,water-用水,store-储能)")
    @Excel(name = "分类")
    private String category;

    /** 图标 */
    @ApiModelProperty("图标")
    private String icon;

    /** 排序号 */
    @ApiModelProperty("排序号")
    private Integer sortOrder;

    /** 状态 */
    @ApiModelProperty("状态(0-禁用,1-启用)")
    private Integer status;

    /** 创建者 */
    private String createBy;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /** 更新者 */
    private String updateBy;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    // ==================== 扩展属性 ====================

    /** 字段列表(非数据库字段) */
    private transient List<ReportField> fields;

    /** 关联列表(非数据库字段) */
    private transient List<ReportRelation> relations;
}