package com.mortals.xhx.base.system.gentable.model;


import lombok.Data;

/**
 * 代码生成业务实体对象
 *
 * @author zxfei
 * @date 2022-07-04
 */
@Data
public class GentableEntity extends GentableEntityExt {
    private static final long serialVersionUID = 1L;

    /**
     * 表名称
     */
    private String tableName;
    /**
     * 表描述
     */
    private String tableComment;
    /**
     * 关联子表的表名
     */
    private String subTableName;
    /**
     * 关联子表的表名1
     */
    private String subTableName1;
    /**
     * 关联子表的表名2
     */
    private String subTableName2;
    /**
     * 关联子表的表名3
     */
    private String subTableName3;
    /**
     * 子表关联的外键名
     */
    private String subTableFkName;
    /**
     * 子表关联的外键名1
     */
    private String subTableFkName1;
    /**
     * 子表关联的外键名2
     */
    private String subTableFkName2;
    /**
     * 子表关联的外键名3
     */
    private String subTableFkName3;
    /**
     * 实体类名称
     */
    private String className;
    /**
     * 使用的模板（crud单表操作 tree树表操作）
     */
    private String tplCategory;
    /**
     * 生成包路径
     */
    private String packageName;
    /**
     * 生成模块名
     */
    private String moduleName;
    /**
     * 生成业务名
     */
    private String businessName;
    /**
     * 生成功能名
     */
    private String functionName;
    /**
     * 生成功能作者
     */
    private String functionAuthor;
    /**
     * 缓存服务方式（0,无，1.静态实体缓存，2.动态实体缓存）
     */
    private Integer cacheServiceType;
    /**
     * 生成代码方式（0.zip压缩包 1.自定义路径）
     */
    private Integer genType;
    /**
     * 分表方式（0.无，1.年，2.月，3.日，4.hash取余）
     */
    private Integer dividedTableType;
    /**
     * 是否生成feign结构(0.否，1.是)
     */
    private Integer genFeign;
    /**
     * 生成feign接口，消费应用工程名称如（workflow-platform）
     */
    private String feignAppName;
    /**
     *
     */
    private Integer detailShow;
    /**
     * 是否生成对外api结构（0,否，1.是）
     */
    private Integer genApi;
    /**
     * 是否生成前端导入导出代码（0,否，1.是 默认0）
     */
    private Integer isGenExport;
    /**
     * 是否显示的生成controll mapping(0,否，1.是 默认0)
     */
    private Integer isShowControl;
    /**
     * 生成路径（不填默认项目路径）
     */
    private String genPath;
    /**
     * 其它生成选项
     */
    private String options;
    /**
     * 备注
     */
    private String remark;
    /**
     * 应用id
     */
    private Long appId;
    @Override
    public int hashCode() {
        return this.getId().hashCode();
    }
    @Override
    public boolean equals(Object obj) {
        if (obj == null) return false;
        if (obj instanceof GentableEntity) {
            GentableEntity tmp = (GentableEntity) obj;
            if (this.getId() == tmp.getId()) {
                return true;
            }
        }
        return false;
    }

    public void initAttrValue(){
        this.tableName = "";
        this.tableComment = "";
        this.subTableName = "";
        this.subTableName1 = "";
        this.subTableName2 = "";
        this.subTableName3 = "";
        this.subTableFkName = "";
        this.subTableFkName1 = "";
        this.subTableFkName2 = "";
        this.subTableFkName3 = "";
        this.className = "";
        this.tplCategory = "crud";
        this.packageName = "";
        this.moduleName = "";
        this.businessName = "";
        this.functionName = "";
        this.functionAuthor = "";
        this.cacheServiceType = 0;
        this.genType = 0;
        this.dividedTableType = 0;
        this.genFeign = 0;
        this.feignAppName = "";
        this.detailShow = 0;
        this.genApi = 0;
        this.isGenExport = 0;
        this.isShowControl = 0;
        this.genPath = "/";
        this.options = "";
        this.remark = "";
        this.appId = null;
    }
}