package com.common.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * 分析分组聚合条件配置实体类
 * 存储GROUP BY后的HAVING筛选条件定义
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("analysis_group_by_having")
public class AnalysisGroupByHaving {

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    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;

    /**
     * 字段数据类型
     */
    private String dataType;

    /**
     * 聚合函数名（如SUM/COUNT/AVG等）
     */
    private String fn;

    /**
     * 聚合函数参数列表，JSON数组格式
     */
    private Object arguments;

    /**
     * 比较运算符（如>、<、=、>=、<=、IN、LIKE等）
     */
    private String operator;

    /**
     * 比较值，JSON格式存储
     */
    private Object value;

    /**
     * 基础类型标识
     */
    private Integer baseType;

    /**
     * 分类ID，用于条件分组归类
     */
    private Integer categoryId;

    /**
     * 创建部门ID
     */
    private Long createDept;

    /**
     * 删除标志：0-未删除 1-已删除
     */
    @TableLogic
    private String delFlag;

    /**
     * 记录创建时间
     */
    private LocalDateTime createTime;

    /**
     * 记录更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 创建人ID
     */
    private Long createBy;

    /**
     * 更新人ID
     */
    private Long updateBy;

    /**
     * 备注说明
     */
    private String remark;

    /**
     * 租户ID
     */
    private String tenantId;
}
