package com.ruoyi.generator.domain;

import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.generator.domain.front.dto.AppBlueprintDesign;
import com.ruoyi.generator.domain.front.dto.AppMenuDesign;
import com.ruoyi.generator.domain.front.dto.AppRoleDesign;
import com.ruoyi.generator.domain.front.dto.BusinessActionDesign;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.util.List;

/**
 * 项目表 gen_project
 * 
 * @author ruoyi
 */
public class GenProject extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 项目ID */
    private Long projectId;

    /** 项目名称 */
    @Excel(name = "项目名称")
    private String projectName;

    /** 项目文件名称 */
    @Excel(name = "项目文件名称")
    private String projectFileName;

    /** 包名 */
    @Excel(name = "包名")
    private String packageName;

    /** 版本号 */
    @Excel(name = "版本号")
    private String version;

    /** 项目描述 */
    @Excel(name = "项目描述")
    private String projectDesc;

    /** 作者 */
    @Excel(name = "作者")
    private String author;

    /** 前端框架 */
    @Excel(name = "前端框架")
    private String frontFramework;

    /** 后端框架 */
    @Excel(name = "后端框架")
    private String backFramework;

    private transient String frontendEnabled;

    /** 状态（0正常 1停用） */
    @Excel(name = "状态", readConverterExp = "0=正常,1=停用")
    private String status;

    private transient Boolean frontDraft;

    private transient AppBlueprintDesign appBlueprint;

    private transient List<AppRoleDesign> appRoles;

    private transient List<AppMenuDesign> frontendMenus;

    private transient List<AppMenuDesign> adminMenus;

    private transient List<BusinessActionDesign> businessActions;

    private transient List<SysProjectModule> modules;

    private List<GenTable> tables;

    public void setProjectId(Long projectId) 
    {
        this.projectId = projectId;
    }

    public Long getProjectId() 
    {
        return projectId;
    }

    public void setProjectName(String projectName) 
    {
        this.projectName = projectName;
    }

    public String getProjectName() 
    {
        return projectName;
    }

    public void setProjectFileName(String projectFileName) 
    {
        this.projectFileName = projectFileName;
    }

    public String getProjectFileName() 
    {
        return projectFileName;
    }

    public void setPackageName(String packageName) 
    {
        this.packageName = packageName;
    }

    public String getPackageName() 
    {
        return packageName;
    }

    public void setVersion(String version) 
    {
        this.version = version;
    }

    public String getVersion() 
    {
        return version;
    }

    public void setProjectDesc(String projectDesc) 
    {
        this.projectDesc = projectDesc;
    }

    public String getProjectDesc() 
    {
        return projectDesc;
    }

    public void setAuthor(String author) 
    {
        this.author = author;
    }

    public String getAuthor() 
    {
        return author;
    }

    public void setFrontFramework(String frontFramework) 
    {
        this.frontFramework = frontFramework;
    }

    public String getFrontFramework() 
    {
        return frontFramework;
    }

    public void setBackFramework(String backFramework) 
    {
        this.backFramework = backFramework;
    }

    public String getBackFramework() 
    {
        return backFramework;
    }

    public String getFrontendEnabled() {
        return frontendEnabled;
    }

    public void setFrontendEnabled(String frontendEnabled) {
        this.frontendEnabled = frontendEnabled;
    }

    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }

    public List<GenTable> getTables() {
        return tables;
    }

    public void setTables(List<GenTable> tables) {
        this.tables = tables;
    }

    public List<SysProjectModule> getModules() {
        return modules;
    }

    public void setModules(List<SysProjectModule> modules) {
        this.modules = modules;
    }

    public Boolean getFrontDraft() {
        return frontDraft;
    }

    public void setFrontDraft(Boolean frontDraft) {
        this.frontDraft = frontDraft;
    }

    public boolean isFrontDraft() {
        return Boolean.TRUE.equals(frontDraft);
    }

    public List<BusinessActionDesign> getBusinessActions() {
        return businessActions;
    }

    public void setBusinessActions(List<BusinessActionDesign> businessActions) {
        this.businessActions = businessActions;
    }

    public AppBlueprintDesign getAppBlueprint() {
        return appBlueprint;
    }

    public void setAppBlueprint(AppBlueprintDesign appBlueprint) {
        this.appBlueprint = appBlueprint;
    }

    public List<AppRoleDesign> getAppRoles() {
        return appRoles;
    }

    public void setAppRoles(List<AppRoleDesign> appRoles) {
        this.appRoles = appRoles;
    }

    public List<AppMenuDesign> getFrontendMenus() {
        return frontendMenus;
    }

    public void setFrontendMenus(List<AppMenuDesign> frontendMenus) {
        this.frontendMenus = frontendMenus;
    }

    public List<AppMenuDesign> getAdminMenus() {
        return adminMenus;
    }

    public void setAdminMenus(List<AppMenuDesign> adminMenus) {
        this.adminMenus = adminMenus;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("projectId", getProjectId())
            .append("projectName", getProjectName())
            .append("projectFileName", getProjectFileName())
            .append("packageName", getPackageName())
            .append("version", getVersion())
            .append("projectDesc", getProjectDesc())
            .append("author", getAuthor())
            .append("frontFramework", getFrontFramework())
            .append("backFramework", getBackFramework())
            .append("status", getStatus())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
