/*
* Copyright (c) 京北方信息技术股份有限公司 Corporation 2021 . All rights reserved.
*
*/
package net.northking.cctp.testbug.dto.project;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
* Restful接口--资源详情--数据传输对象：项目基本信息表
*
* createdate:  2021-09-09 01:38:32  <br>
* @author:  maven-cctp-plugin  <br>
* @since:  1.0 <br>
*/
@JsonSerialize
@ApiModel(description = "项目基本信息详情")
public class CpProjectDetailDto implements Serializable
{
  // TODO 请完成资源详情展示的属性
    /**
     * 主键<br>
     */
    @ApiModelProperty("主键")
    @Size(max = 32, message="主键-id: 数据长度不能 > 32" )
    private String id;
    /**
     * 项目名称<br>
     */
    @ApiModelProperty("项目名称")
    @Size(max = 500, message="项目名称-name: 数据长度不能 > 500" )
    private String name;
    /**
     * 项目描述<br>
     */
    @ApiModelProperty("项目描述")
    @Size(max = 500, message="项目描述-memo: 数据长度不能 > 500" )
    private String memo;

    /**
     * 项目选中的软件<br>
     */
    @ApiModelProperty("项目选中的软件")
    private List<String> softwareId;
    /**
     * 项目负责人id<br>
     */
    @ApiModelProperty("项目负责人id")
    private List<String> userId;
    /**
     * 项目负责人id<br>
     */
    @ApiModelProperty("项目负责人id 字符")
    private String userIdStr;
    /**
     * 项目负责人<br>
     */
    @ApiModelProperty("项目负责人")
    private String username;

    /**
     * 关联需求<br>
     */
    @ApiModelProperty("关联需求")
    private List<CpDemandPlan> relevanceDemands;
    /**
     * 项目类型<br>
     */
    @ApiModelProperty("项目类型")
    @Size(max = 30, message="项目类型-projectType: 数据长度不能 > 20" )
    private String projectType;
    private List<String> projectTypes;
    /**
     * 父项目主键<br>
     */
    @ApiModelProperty("父项目主键")
    @Size(max = 32, message="父项目主键-parentId: 数据长度不能 > 32" )
    private String parentId;
    /**
     * 祖先项目主键<br>
     */
    @ApiModelProperty("根项目主键")
    @Size(max = 32, message="根项目主键-ancestors: 数据长度不能 > 50" )
    private String rootId;
    /**
     * 项目状态<br>
     */
    @ApiModelProperty("项目状态")
    private Integer status;
    /**
     * 项目开始时间<br>
     */
    @ApiModelProperty("项目开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date startTime;
    /**
     * 计划上线日期<br>
     */
    @ApiModelProperty("计划上线日期")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date productionTime;
    /**
     * 删除标识符<br>
     */
    @ApiModelProperty("删除标识符")
    private Boolean deleted;
    /**
     * 创建人<br>
     */
    @ApiModelProperty("创建人")
    @Size(max = 32, message="创建人-createdBy: 数据长度不能 > 32" )
    private String createdBy;
    /**
     * 创建时间<br>
     */
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createdTime;

    @ApiModelProperty("创建人名称")
    private String createdByName;
    /**
     * 修改人<br>
     */
    @ApiModelProperty("修改人")
    @Size(max = 32, message="修改人-updatedBy: 数据长度不能 > 32" )
    private String updatedBy;
    /**
     * 修改时间<br>
     */
    @ApiModelProperty("修改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updatedTime;

    @ApiModelProperty("修改人名称")
    private String updatedByName;
    /**
     * 租户id<br>
     */
    @ApiModelProperty("租户id")
    @Size(max = 32, message="租户id-tenantId: 数据长度不能 > 32" )
    private String tenantId;

    @ApiModelProperty("项目管理模板名称")
    private String templateName;

    @ApiModelProperty("项目层级")
    private Integer layerNum;

    @ApiModelProperty("项目是否绑定指定需求")
    private boolean isBindDemand;

    @ApiModelProperty("项目是否可建子项目")
    private boolean isCreated;

    @ApiModelProperty("项目用例属性模板id")
    private String caseId;

    @ApiModelProperty("项目缺陷属性模板id")
    private String defectId;

    @ApiModelProperty("项目名称模糊筛选标记")
    private boolean signByName = false;

    public List<CpDemandPlan> getRelevanceDemands() {
        return relevanceDemands;
    }

    public void setRelevanceDemands(List<CpDemandPlan> relevanceDemands) {
        this.relevanceDemands = relevanceDemands;
    }

    /**
     * 项目所属系统
     */
    @ApiModelProperty("项目所属系统")
    private String owningSystem;
    /**
     * 主键<br>
     */
    public String getId()
    {
        return id;
    }

    /**
     * 主键<br>
     *
     * @param id 主键
     */
    public void setId(String id)
    {
        this.id = id;
    }
    /**
     * 项目名称<br>
     */
    public String getName()
    {
        return name;
    }

    /**
     * 项目名称<br>
     *
     * @param name 项目名称
     */
    public void setName(String name)
    {
        this.name = name;
    }
    /**
     * 项目描述<br>
     */
    public String getMemo()
    {
        return memo;
    }

    /**
     * 项目描述<br>
     *
     * @param memo 项目描述
     */
    public void setMemo(String memo)
    {
        this.memo = memo;
    }
    /**
     * 项目类型<br>
     */
    public String getProjectType()
    {
        return projectType;
    }

    /**
     * 项目类型<br>
     *
     * @param projectType 项目类型
     */
    public void setProjectType(String projectType)
    {
        this.projectType = projectType;
    }

    public List<String> getProjectTypes() {
        return projectTypes;
    }

    public void setProjectTypes(List<String> projectTypes) {
        this.projectTypes = projectTypes;
    }

    /**
     * 父项目主键<br>
     */
    public String getParentId()
    {
        return parentId;
    }

    /**
     * 父项目主键<br>
     *
     * @param parentId 父项目主键
     */
    public void setParentId(String parentId)
    {
        this.parentId = parentId;
    }

    public String getRootId() {
        return rootId;
    }

    public void setRootId(String rootId) {
        this.rootId = rootId;
    }

    /**
     * 项目状态<br>
     */
    public Integer getStatus()
    {
        return status;
    }

    /**
     * 项目状态<br>
     *
     * @param status 项目状态
     */
    public void setStatus(Integer status)
    {
        this.status = status;
    }
    /**
     * 项目开始时间<br>
     */
    public Date getStartTime()
    {
        if(startTime != null)
        {
            return (Date)startTime.clone();
        }
        return null;
    }

    /**
     * 项目开始时间<br>
     *
     * @param startTime 项目开始时间
     */
    public void setStartTime(Date startTime)
    {
        if(startTime != null)
        {
            this.startTime = (Date)startTime.clone();
        }
    }
    /**
     * 计划上线日期<br>
     */
    public Date getProductionTime()
    {
        if(productionTime != null)
        {
            return (Date)productionTime.clone();
        }
        return null;
    }

    /**
     * 计划上线日期<br>
     *
     * @param productionTime 计划上线日期
     */
    public void setProductionTime(Date productionTime)
    {
        if(productionTime != null)
        {
            this.productionTime = (Date)productionTime.clone();
        }
    }
    /**
     * 删除标识符<br>
     */
    public Boolean getDeleted()
    {
        return deleted;
    }

    /**
     * 删除标识符<br>
     *
     * @param deleted 删除标识符
     */
    public void setDeleted(Boolean deleted)
    {
        this.deleted = deleted;
    }
    /**
     * 创建人<br>
     */
    public String getCreatedBy()
    {
        return createdBy;
    }

    /**
     * 创建人<br>
     *
     * @param createdBy 创建人
     */
    public void setCreatedBy(String createdBy)
    {
        this.createdBy = createdBy;
    }
    /**
     * 创建时间<br>
     */
    public Date getCreatedTime()
    {
        if(createdTime != null)
        {
            return (Date)createdTime.clone();
        }
        return null;
    }

    /**
     * 创建时间<br>
     *
     * @param createdTime 创建时间
     */
    public void setCreatedTime(Date createdTime)
    {
        if(createdTime != null)
        {
            this.createdTime = (Date)createdTime.clone();
        }
    }
    /**
     * 修改人<br>
     */
    public String getUpdatedBy()
    {
        return updatedBy;
    }

    /**
     * 修改人<br>
     *
     * @param updatedBy 修改人
     */
    public void setUpdatedBy(String updatedBy)
    {
        this.updatedBy = updatedBy;
    }
    /**
     * 修改时间<br>
     */
    public Date getUpdatedTime()
    {
        if(updatedTime != null)
        {
            return (Date)updatedTime.clone();
        }
        return null;
    }

    /**
     * 修改时间<br>
     *
     * @param updatedTime 修改时间
     */
    public void setUpdatedTime(Date updatedTime)
    {
        if(updatedTime != null)
        {
            this.updatedTime = (Date)updatedTime.clone();
        }
    }

    public String getCreatedByName() {
        return createdByName;
    }

    public void setCreatedByName(String createdByName) {
        this.createdByName = createdByName;
    }

    public String getUpdatedByName() {
        return updatedByName;
    }

    public void setUpdatedByName(String updatedByName) {
        this.updatedByName = updatedByName;
    }

    /**
     * 租户id<br>
     */
    public String getTenantId()
    {
        return tenantId;
    }

    /**
     * 租户id<br>
     *
     * @param tenantId 租户id
     */
    public void setTenantId(String tenantId)
    {
        this.tenantId = tenantId;
    }

    public String getTemplateName() {
        return templateName;
    }

    public void setTemplateName(String templateName) {
        this.templateName = templateName;
    }

    public List<String> getSoftwareId() {
        return softwareId;
    }

    public void setSoftwareId(List<String> softwareId) {
        this.softwareId = softwareId;
    }

    public List<String> getUserId() {
        return userId;
    }

    public void setUserId(List<String> userId) {
        this.userId = userId;
    }

    public String getUserIdStr() {
        return userIdStr;
    }

    public void setUserIdStr(String userIdStr) {
        this.userIdStr = userIdStr;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Integer getLayerNum() {
        return layerNum;
    }

    public void setLayerNum(Integer layerNum) {
        this.layerNum = layerNum;
    }

    public boolean isCreated() {
        return isCreated;
    }

    public void setCreated(boolean created) {
        isCreated = created;
    }

    public boolean isBindDemand() {
        return isBindDemand;
    }

    public void setBindDemand(boolean bindDemand) {
        isBindDemand = bindDemand;
    }


    public String getCaseId() {
        return caseId;
    }

    public void setCaseId(String caseId) {
        this.caseId = caseId;
    }

    public String getDefectId() {
        return defectId;
    }

    public void setDefectId(String defectId) {
        this.defectId = defectId;
    }

    public boolean isSignByName() {
        return signByName;
    }

    public void setSignByName(boolean signByName) {
        this.signByName = signByName;
    }

    public String getOwningSystem() {
        return owningSystem;
    }

    public void setOwningSystem(String owningSystem) {
        this.owningSystem = owningSystem;
    }
}