package com.ruoyi.web.modules.innovation.domain;

import java.util.Date;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 科技项目指南 biz_tech_project_guide
 */
public class BizTechProjectGuide extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    private Long id;

    @NotBlank(message = "项目名称不能为空")
    @Size(min = 1, max = 20, message = "项目名称长度为1到20个字符")
    private String projectName;

    @NotBlank(message = "项目类型不能为空")
    private String projectType;

    @NotBlank(message = "项目简介不能为空")
    @Size(min = 1, max = 50, message = "项目简介长度为1到50个字符")
    private String projectIntro;

    @NotBlank(message = "申报对象不能为空")
    @Size(min = 1, max = 200, message = "申报对象长度为1到200个字符")
    private String applicationTarget;

    @NotNull(message = "申报开始日期不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date applicationStartDate;

    @NotNull(message = "申报截止日期不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date applicationEndDate;

    @NotBlank(message = "项目周期不能为空")
    @Size(min = 1, max = 50, message = "项目周期长度为1到50个字符")
    private String projectPeriod;

    @NotBlank(message = "申报条件不能为空")
    private String applicationConditions;

    @NotBlank(message = "申报流程不能为空")
    private String applicationProcess;

    @NotBlank(message = "负责人不能为空")
    @Size(min = 1, max = 10, message = "负责人长度为1到10个字符")
    private String personInCharge;

    @NotBlank(message = "联系方式不能为空")
    private String contactPhone;

    private String attachmentFileUrl;

    private String attachmentFilePath;

    private String attachmentFileName;

    private String coverFileUrl;

    private String coverFilePath;

    /** 0 未发布 1 已发布 */
    private Integer publishStatus;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date publishTime;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date offlineTime;

    /** 仅新增：true 时保存后发布 */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Boolean saveAndPublish;

    public Long getId()
    {
        return id;
    }

    public void setId(Long id)
    {
        this.id = id;
    }

    public String getProjectName()
    {
        return projectName;
    }

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

    public String getProjectType()
    {
        return projectType;
    }

    public void setProjectType(String projectType)
    {
        this.projectType = projectType;
    }

    public String getProjectIntro()
    {
        return projectIntro;
    }

    public void setProjectIntro(String projectIntro)
    {
        this.projectIntro = projectIntro;
    }

    public String getApplicationTarget()
    {
        return applicationTarget;
    }

    public void setApplicationTarget(String applicationTarget)
    {
        this.applicationTarget = applicationTarget;
    }

    public Date getApplicationStartDate()
    {
        return applicationStartDate;
    }

    public void setApplicationStartDate(Date applicationStartDate)
    {
        this.applicationStartDate = applicationStartDate;
    }

    public Date getApplicationEndDate()
    {
        return applicationEndDate;
    }

    public void setApplicationEndDate(Date applicationEndDate)
    {
        this.applicationEndDate = applicationEndDate;
    }

    public String getProjectPeriod()
    {
        return projectPeriod;
    }

    public void setProjectPeriod(String projectPeriod)
    {
        this.projectPeriod = projectPeriod;
    }

    public String getApplicationConditions()
    {
        return applicationConditions;
    }

    public void setApplicationConditions(String applicationConditions)
    {
        this.applicationConditions = applicationConditions;
    }

    public String getApplicationProcess()
    {
        return applicationProcess;
    }

    public void setApplicationProcess(String applicationProcess)
    {
        this.applicationProcess = applicationProcess;
    }

    public String getPersonInCharge()
    {
        return personInCharge;
    }

    public void setPersonInCharge(String personInCharge)
    {
        this.personInCharge = personInCharge;
    }

    public String getContactPhone()
    {
        return contactPhone;
    }

    public void setContactPhone(String contactPhone)
    {
        this.contactPhone = contactPhone;
    }

    public String getAttachmentFileUrl()
    {
        return attachmentFileUrl;
    }

    public void setAttachmentFileUrl(String attachmentFileUrl)
    {
        this.attachmentFileUrl = attachmentFileUrl;
    }

    public String getAttachmentFilePath()
    {
        return attachmentFilePath;
    }

    public void setAttachmentFilePath(String attachmentFilePath)
    {
        this.attachmentFilePath = attachmentFilePath;
    }

    public String getAttachmentFileName()
    {
        return attachmentFileName;
    }

    public void setAttachmentFileName(String attachmentFileName)
    {
        this.attachmentFileName = attachmentFileName;
    }

    public String getCoverFileUrl()
    {
        return coverFileUrl;
    }

    public void setCoverFileUrl(String coverFileUrl)
    {
        this.coverFileUrl = coverFileUrl;
    }

    public String getCoverFilePath()
    {
        return coverFilePath;
    }

    public void setCoverFilePath(String coverFilePath)
    {
        this.coverFilePath = coverFilePath;
    }

    public Integer getPublishStatus()
    {
        return publishStatus;
    }

    public void setPublishStatus(Integer publishStatus)
    {
        this.publishStatus = publishStatus;
    }

    public Date getPublishTime()
    {
        return publishTime;
    }

    public void setPublishTime(Date publishTime)
    {
        this.publishTime = publishTime;
    }

    public Date getOfflineTime()
    {
        return offlineTime;
    }

    public void setOfflineTime(Date offlineTime)
    {
        this.offlineTime = offlineTime;
    }

    public Boolean getSaveAndPublish()
    {
        return saveAndPublish;
    }

    public void setSaveAndPublish(Boolean saveAndPublish)
    {
        this.saveAndPublish = saveAndPublish;
    }
}
