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

import java.math.BigDecimal;
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.ruoyi.common.core.domain.BaseEntity;

/**
 * 项目与补贴-项目 biz_subsidy_project
 */
public class BizSubsidyProject extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    private Long id;

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

    @Size(max = 50, message = "项目简介不能超过50个字符")
    private String introduction;

    @NotNull(message = "投资金额不能为空")
    private BigDecimal investmentAmount;

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

    @NotNull(message = "预计完成日期不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date plannedEndDate;

    private String coverFileUrl;

    private String coverFilePath;

    @NotNull(message = "执行状态不能为空")
    private Integer execStatus;

    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date actualEndDate;

    private Integer manualCompleteFlag;

    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;

    /** 列表：项目名称或简介 OR 模糊 */
    private String keyword;

    /** 列表：项目开始日期起 */
    private String startDate;

    /** 列表：项目开始日期止 */
    private String endDate;

    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 getIntroduction()
    {
        return introduction;
    }

    public void setIntroduction(String introduction)
    {
        this.introduction = introduction;
    }

    public BigDecimal getInvestmentAmount()
    {
        return investmentAmount;
    }

    public void setInvestmentAmount(BigDecimal investmentAmount)
    {
        this.investmentAmount = investmentAmount;
    }

    public Date getProjectStartDate()
    {
        return projectStartDate;
    }

    public void setProjectStartDate(Date projectStartDate)
    {
        this.projectStartDate = projectStartDate;
    }

    public Date getPlannedEndDate()
    {
        return plannedEndDate;
    }

    public void setPlannedEndDate(Date plannedEndDate)
    {
        this.plannedEndDate = plannedEndDate;
    }

    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 getExecStatus()
    {
        return execStatus;
    }

    public void setExecStatus(Integer execStatus)
    {
        this.execStatus = execStatus;
    }

    public Date getActualEndDate()
    {
        return actualEndDate;
    }

    public void setActualEndDate(Date actualEndDate)
    {
        this.actualEndDate = actualEndDate;
    }

    public Integer getManualCompleteFlag()
    {
        return manualCompleteFlag;
    }

    public void setManualCompleteFlag(Integer manualCompleteFlag)
    {
        this.manualCompleteFlag = manualCompleteFlag;
    }

    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 String getKeyword()
    {
        return keyword;
    }

    public void setKeyword(String keyword)
    {
        this.keyword = keyword;
    }

    public String getStartDate()
    {
        return startDate;
    }

    public void setStartDate(String startDate)
    {
        this.startDate = startDate;
    }

    public String getEndDate()
    {
        return endDate;
    }

    public void setEndDate(String endDate)
    {
        this.endDate = endDate;
    }
}
