package com.nbport.zgwl.manifest.domain;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 模板管理表 实体
 * 对应数据库表 CONTRACT_TEMPLATE_MANAGE
 */
@TableName(value = "CONTRACT_TEMPLATE_MANAGE")
@Data
@EqualsAndHashCode(callSuper = false)
@KeySequence(value = "SEQ_CONTRACT_TEMPLATE_MANAGE", dbType = DbType.ORACLE)
public class ContractTemplateManage implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    @TableId(value = "ID", type = IdType.INPUT)
    private Long id;

    /** 模板编号（自动生成，如 TPL-MM-20260522-128） */
    @TableField("TEMPLATE_CODE")
    private String templateCode;

    /** 模板名称 */
    @TableField("TEMPLATE_NAME")
    private String templateName;

    /** 范本类型 */
    @TableField("SOURCE")
    private String source;

    /** 合同类型 */
    @TableField("CONTRACT_TYPE")
    private String contractType;

    /** 版本号 */
    @TableField("VERSION")
    private String version;

    /** 状态：draft/published/disabled */
    @TableField("STATUS")
    private String status;

    /** 变量数量 */
    @TableField("VARIABLE_COUNT")
    private Integer variableCount;

    /** 模板描述 */
    @TableField("DESCRIPTION")
    private String description;

    /** 使用提示 */
    @TableField("USAGE_TIP")
    private String usageTip;

    /** 模板文件名 */
    @TableField("TEMPLATE_FILE_NAME")
    private String templateFileName;

    /** 模板文件路径 */
    @TableField("TEMPLATE_FILE_PATH")
    private String templateFilePath;

    /** 发布范围 orgId 集合（JSON 文本） */
    @TableField("PUBLISH_ORG_IDS_JSON")
    private String publishOrgIdsJson;

    /** 发布范围 orgName 集合（JSON 文本） */
    @TableField("PUBLISH_ORG_NAMES_JSON")
    private String publishOrgNamesJson;

    /** 变量映射集合（JSON 文本） */
    @TableField("VARIABLE_MAPPINGS_JSON")
    private String variableMappingsJson;

    /** 创建人 */
    @TableField("CREATE_BY")
    private String createBy;

    /** 创建时间 */
    @TableField("CREATED_TIME")
    private LocalDateTime createdTime;

    /** 更新人 */
    @TableField("UPDATED_BY")
    private String updatedBy;

    /** 更新时间 */
    @TableField("UPDATED_TIME")
    private LocalDateTime updatedTime;

    /** 删除标记 */
    @TableField("DEL_FLAG")
    private String delFlag;
}
