package com.ruoyi.abuwx.domain.exam;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 考试对象 exm_exam
 * 
 * @author ruoyi
 * @date 2024-05-17
 */
public class ExmExam extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键 */
    private Long id;

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

    /** 试卷名称 */
    @Excel(name = "试卷名称")
    private String paperName;

    /** 组卷方式（1：人工组卷；2：随机组卷）数据字典：PAPER_GEN_TYPE */
    @Excel(name = "组卷方式", readConverterExp = "1=：人工组卷；2：随机组卷")
    private Long genType;

    /** 阅卷方式（1：客观题；2：主观题；）数据字典：PAPER_MARK_TYPE */
    @Excel(name = "阅卷方式", readConverterExp = "1=：客观题；2：主观题；")
    private Long markType;

    /** 展示方式（1：整卷展示；3：单题展示；）数据字典：PAPER_SHOW_TYPE */
    @Excel(name = "展示方式", readConverterExp = "1=：整卷展示；3：单题展示；")
    private Long showType;

    /** 考试开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "考试开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startTime;

    /** 考试结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "考试结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endTime;

    /** 限制分钟（考试开始时间由用户第一次打开试卷时计时） */
    @Excel(name = "限制分钟", readConverterExp = "考=试开始时间由用户第一次打开试卷时计时")
    private Long limitMinute;

    /** 阅卷开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "阅卷开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date markStartTime;

    /** 阅卷结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "阅卷结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date markEndTime;

    /** 阅卷状态（1：未阅卷；2：阅卷中；3：已阅卷；） */
    @Excel(name = "阅卷状态", readConverterExp = "1=：未阅卷；2：阅卷中；3：已阅卷；")
    private Long markState;

    /** 成绩查询状态（1：考试结束后；2：不公布；3：交卷后） */
    @Excel(name = "成绩查询状态", readConverterExp = "1=：考试结束后；2：不公布；3：交卷后")
    private Long scoreState;

    /** 排名状态（1：公布；2：不公布） */
    @Excel(name = "排名状态", readConverterExp = "1=：公布；2：不公布")
    private Long rankState;

    /** 匿名阅卷状态（1：是；2：否） */
    @Excel(name = "匿名阅卷状态", readConverterExp = "1=：是；2：否")
    private Long anonState;

    /** 及格分数 */
    @Excel(name = "及格分数")
    private BigDecimal passScore;

    /** 总分数 */
    @Excel(name = "总分数")
    private BigDecimal totalScore;

    /** 反作弊（1：试题乱序；2：选项乱序；） */
    @Excel(name = "反作弊", readConverterExp = "1=：试题乱序；2：选项乱序；")
    private String sxes;

    /** 状态（0：删除；1：发布；2：暂停；） */
    @Excel(name = "状态", readConverterExp = "0=：删除；1：发布；2：暂停；")
    private Long state;

    /** 创建用户ID */
    @Excel(name = "创建用户ID")
    private Long createUserId;

    /** 修改用户ID */
    @Excel(name = "修改用户ID")
    private Long updateUserId;

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

    public Long getId() 
    {
        return id;
    }
    public void setName(String name) 
    {
        this.name = name;
    }

    public String getName() 
    {
        return name;
    }
    public void setPaperName(String paperName) 
    {
        this.paperName = paperName;
    }

    public String getPaperName() 
    {
        return paperName;
    }
    public void setGenType(Long genType) 
    {
        this.genType = genType;
    }

    public Long getGenType() 
    {
        return genType;
    }
    public void setMarkType(Long markType) 
    {
        this.markType = markType;
    }

    public Long getMarkType() 
    {
        return markType;
    }
    public void setShowType(Long showType) 
    {
        this.showType = showType;
    }

    public Long getShowType() 
    {
        return showType;
    }
    public void setStartTime(Date startTime) 
    {
        this.startTime = startTime;
    }

    public Date getStartTime() 
    {
        return startTime;
    }
    public void setEndTime(Date endTime) 
    {
        this.endTime = endTime;
    }

    public Date getEndTime() 
    {
        return endTime;
    }
    public void setLimitMinute(Long limitMinute) 
    {
        this.limitMinute = limitMinute;
    }

    public Long getLimitMinute() 
    {
        return limitMinute;
    }
    public void setMarkStartTime(Date markStartTime) 
    {
        this.markStartTime = markStartTime;
    }

    public Date getMarkStartTime() 
    {
        return markStartTime;
    }
    public void setMarkEndTime(Date markEndTime) 
    {
        this.markEndTime = markEndTime;
    }

    public Date getMarkEndTime() 
    {
        return markEndTime;
    }
    public void setMarkState(Long markState) 
    {
        this.markState = markState;
    }

    public Long getMarkState() 
    {
        return markState;
    }
    public void setScoreState(Long scoreState) 
    {
        this.scoreState = scoreState;
    }

    public Long getScoreState() 
    {
        return scoreState;
    }
    public void setRankState(Long rankState) 
    {
        this.rankState = rankState;
    }

    public Long getRankState() 
    {
        return rankState;
    }
    public void setAnonState(Long anonState) 
    {
        this.anonState = anonState;
    }

    public Long getAnonState() 
    {
        return anonState;
    }
    public void setPassScore(BigDecimal passScore) 
    {
        this.passScore = passScore;
    }

    public BigDecimal getPassScore() 
    {
        return passScore;
    }
    public void setTotalScore(BigDecimal totalScore) 
    {
        this.totalScore = totalScore;
    }

    public BigDecimal getTotalScore() 
    {
        return totalScore;
    }
    public void setSxes(String sxes) 
    {
        this.sxes = sxes;
    }

    public String getSxes() 
    {
        return sxes;
    }
    public void setState(Long state) 
    {
        this.state = state;
    }

    public Long getState() 
    {
        return state;
    }
    public void setCreateUserId(Long createUserId) 
    {
        this.createUserId = createUserId;
    }

    public Long getCreateUserId() 
    {
        return createUserId;
    }
    public void setUpdateUserId(Long updateUserId) 
    {
        this.updateUserId = updateUserId;
    }

    public Long getUpdateUserId() 
    {
        return updateUserId;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("name", getName())
            .append("paperName", getPaperName())
            .append("genType", getGenType())
            .append("markType", getMarkType())
            .append("showType", getShowType())
            .append("startTime", getStartTime())
            .append("endTime", getEndTime())
            .append("limitMinute", getLimitMinute())
            .append("markStartTime", getMarkStartTime())
            .append("markEndTime", getMarkEndTime())
            .append("markState", getMarkState())
            .append("scoreState", getScoreState())
            .append("rankState", getRankState())
            .append("anonState", getAnonState())
            .append("passScore", getPassScore())
            .append("totalScore", getTotalScore())
            .append("sxes", getSxes())
            .append("state", getState())
            .append("createUserId", getCreateUserId())
            .append("updateUserId", getUpdateUserId())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
