package com.common.entity;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * 分析分组字段配置实体类
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AnalysisGroupByColumn {
    
    /**
     * 主键ID：自增唯一标识符
     */
    private Integer id;
    
    /**
     * 分组ID：关联分析分组的外键
     */
    private Integer groupById;
    
    /**
     * 数据源名称：数据来源系统标识
     */
    private String dataSource;
    
    /**
     * 数据库名称：字段所在的数据库
     */
    private String database;
    
    /**
     * 表名：字段所在的物理表名
     */
    private String tableName;
    
    /**
     * 表别名：查询时使用的表别名
     */
    private String tableAlias;
    
    /**
     * 字段名：物理字段名称
     */
    private String columnName;
    
    /**
     * 字段描述：业务层面的字段说明
     */
    private String columnDesc;
    
    /**
     * 数据类型：字段的数据类型（如varchar、int4）
     */
    private String dataType;
    
    /**
     * 基础类型：字段的业务基础类型编码
     */
    private Integer baseType;
    
    /**
     * 分类ID：字段所属的业务分类ID
     */
    private Integer categoryId;
    
    /**
     * 创建部门：创建记录的部门ID
     */
    private Long createDept;
    
    /**
     * 删除标志：0-未删除，1-已删除
     */
    private String delFlag;
    
    /**
     * 创建时间：记录创建时间戳
     */
    private LocalDateTime createTime;
    
    /**
     * 更新时间：记录最后更新时间戳
     */
    private LocalDateTime updateTime;
    
    /**
     * 创建人：记录创建者ID
     */
    private Long createBy;
    
    /**
     * 更新人：记录最后更新者ID
     */
    private Long updateBy;
    
    /**
     * 备注：扩展说明信息
     */
    private String remark;
    
    /**
     * 租户ID：多租户环境下的租户标识
     */
    private String tenantId;
    
    /**
     * 规则ID：关联的业务规则UUID
     */
    private String ruleId;
    
    /**
     * 用户组ID：关联的权限用户组ID
     */
    private Long groupId;
    
    /**
     * 字段唯一ID：跨表唯一的字段标识符
     */
    private Long fieldId;
    
    /**
     * 排序号：字段展示顺序
     */
    private Integer sort;
}
