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


/**
 * 代码生成业务实体对象
 *
 * @author zxfei
 * @date 2022-07-04
 */

public class GentableEntity extends GentableEntityExt {
    private static final long serialVersionUID = 1L;

    /**
     * 表名称
     */
    private String tableName;
    /**
     * 表描述
     */
    private String tableComment;
    /**
     * 关联子表的表名
     */
    private String subTableName;
    /**
     * 子表关联的外键名
     */
    private String subTableFkName;
    /**
     * 实体类名称
     */
    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;
    /**
     * vue生成详细页面方式（0,独立页面,1.弹出窗,2.抽屉）
     */
    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;



    public GentableEntity(){}
    /**
     * 获取 表名称
     * @return String
     */
    public String getTableName(){
        return tableName;
    }
    /**
     * 设置 表名称
     * @param tableName
     */
    public void setTableName(String tableName){
        this.tableName = tableName;
    }
    /**
     * 获取 表描述
     * @return String
     */
    public String getTableComment(){
        return tableComment;
    }
    /**
     * 设置 表描述
     * @param tableComment
     */
    public void setTableComment(String tableComment){
        this.tableComment = tableComment;
    }
    /**
     * 获取 关联子表的表名
     * @return String
     */
    public String getSubTableName(){
        return subTableName;
    }
    /**
     * 设置 关联子表的表名
     * @param subTableName
     */
    public void setSubTableName(String subTableName){
        this.subTableName = subTableName;
    }
    /**
     * 获取 子表关联的外键名
     * @return String
     */
    public String getSubTableFkName(){
        return subTableFkName;
    }
    /**
     * 设置 子表关联的外键名
     * @param subTableFkName
     */
    public void setSubTableFkName(String subTableFkName){
        this.subTableFkName = subTableFkName;
    }
    /**
     * 获取 实体类名称
     * @return String
     */
    public String getClassName(){
        return className;
    }
    /**
     * 设置 实体类名称
     * @param className
     */
    public void setClassName(String className){
        this.className = className;
    }
    /**
     * 获取 使用的模板（crud单表操作 tree树表操作）
     * @return String
     */
    public String getTplCategory(){
        return tplCategory;
    }
    /**
     * 设置 使用的模板（crud单表操作 tree树表操作）
     * @param tplCategory
     */
    public void setTplCategory(String tplCategory){
        this.tplCategory = tplCategory;
    }
    /**
     * 获取 生成包路径
     * @return String
     */
    public String getPackageName(){
        return packageName;
    }
    /**
     * 设置 生成包路径
     * @param packageName
     */
    public void setPackageName(String packageName){
        this.packageName = packageName;
    }
    /**
     * 获取 生成模块名
     * @return String
     */
    public String getModuleName(){
        return moduleName;
    }
    /**
     * 设置 生成模块名
     * @param moduleName
     */
    public void setModuleName(String moduleName){
        this.moduleName = moduleName;
    }
    /**
     * 获取 生成业务名
     * @return String
     */
    public String getBusinessName(){
        return businessName;
    }
    /**
     * 设置 生成业务名
     * @param businessName
     */
    public void setBusinessName(String businessName){
        this.businessName = businessName;
    }
    /**
     * 获取 生成功能名
     * @return String
     */
    public String getFunctionName(){
        return functionName;
    }
    /**
     * 设置 生成功能名
     * @param functionName
     */
    public void setFunctionName(String functionName){
        this.functionName = functionName;
    }
    /**
     * 获取 生成功能作者
     * @return String
     */
    public String getFunctionAuthor(){
        return functionAuthor;
    }
    /**
     * 设置 生成功能作者
     * @param functionAuthor
     */
    public void setFunctionAuthor(String functionAuthor){
        this.functionAuthor = functionAuthor;
    }
    /**
     * 获取 缓存服务方式（0,无，1.静态实体缓存，2.动态实体缓存）
     * @return Integer
     */
    public Integer getCacheServiceType(){
        return cacheServiceType;
    }
    /**
     * 设置 缓存服务方式（0,无，1.静态实体缓存，2.动态实体缓存）
     * @param cacheServiceType
     */
    public void setCacheServiceType(Integer cacheServiceType){
        this.cacheServiceType = cacheServiceType;
    }
    /**
     * 获取 生成代码方式（0.zip压缩包 1.自定义路径）
     * @return Integer
     */
    public Integer getGenType(){
        return genType;
    }
    /**
     * 设置 生成代码方式（0.zip压缩包 1.自定义路径）
     * @param genType
     */
    public void setGenType(Integer genType){
        this.genType = genType;
    }
    /**
     * 获取 分表方式（0.无，1.年，2.月，3.日，4.hash取余）
     * @return Integer
     */
    public Integer getDividedTableType(){
        return dividedTableType;
    }
    /**
     * 设置 分表方式（0.无，1.年，2.月，3.日，4.hash取余）
     * @param dividedTableType
     */
    public void setDividedTableType(Integer dividedTableType){
        this.dividedTableType = dividedTableType;
    }
    /**
     * 获取 是否生成feign结构(0.否，1.是)
     * @return Integer
     */
    public Integer getGenFeign(){
        return genFeign;
    }
    /**
     * 设置 是否生成feign结构(0.否，1.是)
     * @param genFeign
     */
    public void setGenFeign(Integer genFeign){
        this.genFeign = genFeign;
    }
    /**
     * 获取 生成feign接口，消费应用工程名称如（workflow-platform）
     * @return String
     */
    public String getFeignAppName(){
        return feignAppName;
    }
    /**
     * 设置 生成feign接口，消费应用工程名称如（workflow-platform）
     * @param feignAppName
     */
    public void setFeignAppName(String feignAppName){
        this.feignAppName = feignAppName;
    }
    /**
     * 获取 vue生成详细页面方式（0,独立页面,1.弹出窗,2.抽屉）
     * @return Integer
     */
    public Integer getDetailShow(){
        return detailShow;
    }
    /**
     * 设置 vue生成详细页面方式（0,独立页面,1.弹出窗,2.抽屉）
     * @param detailShow
     */
    public void setDetailShow(Integer detailShow){
        this.detailShow = detailShow;
    }
    /**
     * 获取 是否生成对外api结构（0,否，1.是）
     * @return Integer
     */
    public Integer getGenApi(){
        return genApi;
    }
    /**
     * 设置 是否生成对外api结构（0,否，1.是）
     * @param genApi
     */
    public void setGenApi(Integer genApi){
        this.genApi = genApi;
    }
    /**
     * 获取 是否生成前端导入导出代码（0,否，1.是 默认0）
     * @return Integer
     */
    public Integer getIsGenExport(){
        return isGenExport;
    }
    /**
     * 设置 是否生成前端导入导出代码（0,否，1.是 默认0）
     * @param isGenExport
     */
    public void setIsGenExport(Integer isGenExport){
        this.isGenExport = isGenExport;
    }
    /**
     * 获取 是否显示的生成controll mapping(0,否，1.是 默认0)
     * @return Integer
     */
    public Integer getIsShowControl(){
        return isShowControl;
    }
    /**
     * 设置 是否显示的生成controll mapping(0,否，1.是 默认0)
     * @param isShowControl
     */
    public void setIsShowControl(Integer isShowControl){
        this.isShowControl = isShowControl;
    }
    /**
     * 获取 生成路径（不填默认项目路径）
     * @return String
     */
    public String getGenPath(){
        return genPath;
    }
    /**
     * 设置 生成路径（不填默认项目路径）
     * @param genPath
     */
    public void setGenPath(String genPath){
        this.genPath = genPath;
    }
    /**
     * 获取 其它生成选项
     * @return String
     */
    public String getOptions(){
        return options;
    }
    /**
     * 设置 其它生成选项
     * @param options
     */
    public void setOptions(String options){
        this.options = options;
    }
    /**
     * 获取 备注
     * @return String
     */
    public String getRemark(){
        return remark;
    }
    /**
     * 设置 备注
     * @param remark
     */
    public void setRemark(String remark){
        this.remark = remark;
    }
    /**
     * 获取 应用id
     * @return Long
     */
    public Long getAppId(){
        return appId;
    }
    /**
     * 设置 应用id
     * @param appId
     */
    public void setAppId(Long appId){
        this.appId = 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 String toString(){
        StringBuilder sb = new StringBuilder("");
        sb.append(",tableName:").append(getTableName());
        sb.append(",tableComment:").append(getTableComment());
        sb.append(",subTableName:").append(getSubTableName());
        sb.append(",subTableFkName:").append(getSubTableFkName());
        sb.append(",className:").append(getClassName());
        sb.append(",tplCategory:").append(getTplCategory());
        sb.append(",packageName:").append(getPackageName());
        sb.append(",moduleName:").append(getModuleName());
        sb.append(",businessName:").append(getBusinessName());
        sb.append(",functionName:").append(getFunctionName());
        sb.append(",functionAuthor:").append(getFunctionAuthor());
        sb.append(",cacheServiceType:").append(getCacheServiceType());
        sb.append(",genType:").append(getGenType());
        sb.append(",dividedTableType:").append(getDividedTableType());
        sb.append(",genFeign:").append(getGenFeign());
        sb.append(",feignAppName:").append(getFeignAppName());
        sb.append(",detailShow:").append(getDetailShow());
        sb.append(",genApi:").append(getGenApi());
        sb.append(",isGenExport:").append(getIsGenExport());
        sb.append(",isShowControl:").append(getIsShowControl());
        sb.append(",genPath:").append(getGenPath());
        sb.append(",options:").append(getOptions());
        sb.append(",remark:").append(getRemark());
        sb.append(",appId:").append(getAppId());
        return sb.toString();
    }

    public void initAttrValue(){

        this.tableName = "";

        this.tableComment = "";

        this.subTableName = null;

        this.subTableFkName = null;

        this.className = "";

        this.tplCategory = "crud";

        this.packageName = null;

        this.moduleName = null;

        this.businessName = null;

        this.functionName = null;

        this.functionAuthor = null;

        this.cacheServiceType = null;

        this.genType = 0;

        this.dividedTableType = 0;

        this.genFeign = 0;

        this.feignAppName = "";

        this.detailShow = 1;

        this.genApi = null;

        this.isGenExport = null;

        this.isShowControl = null;

        this.genPath = "/";

        this.options = null;

        this.remark = null;

        this.appId = null;
    }
}