package com.ruoyi.system.domain;

import java.util.Date;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.annotation.Excel.ColumnType;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.xss.Xss;

/**
 * 报告管理对象 risk_report
 */
public class RiskReport extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 报告ID */
    @Excel(name = "报告ID", cellType = ColumnType.NUMERIC)
    private Long reportId;

    /** 报告编号 */
    @Excel(name = "报告编号")
    private String reportCode;

    /** 报告名称 */
    @Excel(name = "报告名称")
    private String reportName;

    /** 所属项目 */
    @Excel(name = "所属项目")
    private String projectName;

    /** 报告类型 */
    @Excel(name = "报告类型", readConverterExp = "1=尽调报告,2=风险评估,3=投后跟踪,4=复核意见")
    private String reportType;

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

    /** 复核人 */
    @Excel(name = "复核人")
    private String reviewer;

    /** 报告状态 */
    @Excel(name = "报告状态", readConverterExp = "0=草稿,1=审核中,2=已发布,3=已归档")
    private String reportStatus;

    /** 发布时间 */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @Excel(name = "发布时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date publishDate;

    public Long getReportId()
    {
        return reportId;
    }

    public void setReportId(Long reportId)
    {
        this.reportId = reportId;
    }

    @Xss(message = "报告编号不能包含脚本字符")
    @NotBlank(message = "报告编号不能为空")
    @Size(min = 0, max = 64, message = "报告编号长度不能超过64个字符")
    public String getReportCode()
    {
        return reportCode;
    }

    public void setReportCode(String reportCode)
    {
        this.reportCode = reportCode;
    }

    @Xss(message = "报告名称不能包含脚本字符")
    @NotBlank(message = "报告名称不能为空")
    @Size(min = 0, max = 100, message = "报告名称长度不能超过100个字符")
    public String getReportName()
    {
        return reportName;
    }

    public void setReportName(String reportName)
    {
        this.reportName = reportName;
    }

    @Xss(message = "所属项目不能包含脚本字符")
    @Size(min = 0, max = 100, message = "所属项目长度不能超过100个字符")
    public String getProjectName()
    {
        return projectName;
    }

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

    public String getReportType()
    {
        return reportType;
    }

    public void setReportType(String reportType)
    {
        this.reportType = reportType;
    }

    @Xss(message = "版本号不能包含脚本字符")
    @Size(min = 0, max = 32, message = "版本号长度不能超过32个字符")
    public String getVersionNo()
    {
        return versionNo;
    }

    public void setVersionNo(String versionNo)
    {
        this.versionNo = versionNo;
    }

    @Xss(message = "复核人不能包含脚本字符")
    @Size(min = 0, max = 32, message = "复核人长度不能超过32个字符")
    public String getReviewer()
    {
        return reviewer;
    }

    public void setReviewer(String reviewer)
    {
        this.reviewer = reviewer;
    }

    public String getReportStatus()
    {
        return reportStatus;
    }

    public void setReportStatus(String reportStatus)
    {
        this.reportStatus = reportStatus;
    }

    public Date getPublishDate()
    {
        return publishDate;
    }

    public void setPublishDate(Date publishDate)
    {
        this.publishDate = publishDate;
    }

    @Override
    public String toString()
    {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
            .append("reportId", getReportId())
            .append("reportCode", getReportCode())
            .append("reportName", getReportName())
            .append("projectName", getProjectName())
            .append("reportType", getReportType())
            .append("versionNo", getVersionNo())
            .append("reviewer", getReviewer())
            .append("reportStatus", getReportStatus())
            .append("publishDate", getPublishDate())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
