package com.zt.plat.module.base.dal.dataobject.tmpltp;

import com.baomidou.mybatisplus.annotation.*;
import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO;
import lombok.*;

/**
 * 字段库 DO
 * 对应数据库表：BSE_TMPL_TP_FLD
 *
 * @author 后台管理
 */
@TableName("BSE_TMPL_TP_FLD")
@KeySequence("BSE_TMPL_TP_FLD_SEQ")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TmplTpFldDO extends BusinessBaseDO { // 继承业务基类，自动获取公司/部门/租户等公共字段

    /**
     * 主键（对应表中 ID 字段，VARCHAR2(64) 类型）
     * 注意：表中 ID 为字符串类型，此处使用 String 而非 Long，与 TmplTpDO 区分
     */
    @TableId(type = IdType.ASSIGN_ID) // 手动输入主键（因表中 ID 是 VARCHAR2，非自增 Long）
    private String id;

    /**
     * 字段编码（对应表中 FLD_KY 字段，VARCHAR2(64) 类型，非空）
     */
    @TableField("FLD_KY")
    private String fldKy;

    /**
     * 字段名称（对应表中 FLD_NAME 字段，VARCHAR2(90) 类型，非空）
     */
    @TableField("FLD_NAME")
    private String fldName;

    /**
     * 数据类型（对应表中 DAT_TP 字段，VARCHAR2(10) 类型，非空）
     * 示例值：VARCHAR、INT、DATE、CLOB 等，需与前端/后端数据类型映射
     */
    @TableField("DAT_TP")
    private String datTp;

    /**
     * 字段结构（对应表中 FLD_DOC 字段，CLOB(900) 类型，可空）
     * 存储格式：JSON 字符串（前端传入的字段结构配置），后端可通过 JSON 工具反序列化为对象
     */
    @TableField("FLD_DOC")
    private String fldDoc;

    /**
     * 备注（对应表中 RMK 字段，CLOB(900) 类型，非空）
     * 说明：用于区分同一公司下重复的条款名称
     */
    @TableField("RMK")
    private String rmk; // 同 FLD_DOC，用 String 接收 CLOB 内容

    /**
     * 是否必填（对应表中 IS_MUST 字段，VARCHAR2(10) 类型，非空）
     * 建议值：Y（是）、N（否），需在业务层做枚举校验
     */
    @TableField("IS_MUST")
    private String isMust;

    /**
     * 是否必填（对应表中 IS_MUST 字段，VARCHAR2(10) 类型，非空）
     * 建议值：Y（是）、N（否），需在业务层做枚举校验
     */
    @TableField("ORGN_TP")
    private String orgnTp;

    @TableField("STS")
    private Integer sts;
}
