package cn.com.qmth.examcloud.core.questions.dao.entity;

import java.util.Map;

import org.springframework.data.annotation.Transient;
import org.springframework.data.mongodb.core.index.Indexed;

import cn.com.qmth.examcloud.core.questions.base.CommonUtils;
import cn.com.qmth.examcloud.core.questions.base.core.enums.CourseLevel;
import cn.com.qmth.examcloud.core.questions.base.enums.PaperStatus;
import cn.com.qmth.examcloud.core.questions.base.enums.PaperType;
import cn.com.qmth.examcloud.core.questions.dao.entity.base.MongoBaseEntity;

/**
 * @author songyue
 */
public class Paper extends MongoBaseEntity {
    /**
	 * 
	 */
	private static final long serialVersionUID = -8681575737341326402L;

	@Indexed(unique = true)
    private String name;// 试卷名称

    private String title;// 试卷标题

    private Double totalScore;// 试卷总分

    private String creator;// 创建人id

    private Integer paperDetailCount;// 大题数量

    private Integer unitCount;// 小题数量

    private String createTime;// 创建时间

    private String lastModifyName;// 最后修改人名称

    private String word;// 原始试卷word

    private String html;// 原始试卷html

    private PaperStatus paperStatus;// 试卷状态(待审核、通过、不通过)

    private PaperType paperType;// 试卷类型(导入、组卷)

    @Deprecated
    private String courseNo;

    @Deprecated
    private String courseName;

    private Course course;

    private CourseLevel level;

    private String orgId;

    private Map<String, String> params;// 导入试卷属性

    private Specialty specialty;

    private Double difficultyDegree; //难度系数

    private String sameName; //相同大题名 0：不合并，1：合并

    private String examRemark;//考试说明
    
    /**
     * 公开\非公开小题数量
     */
    @Transient
    private Map<String,Integer> quesCount;
    
    /**
     * 公开\非公开小题分数
     */
    @Transient
    private Map<String,Double> quesScore;
    
    
    /**
     * 是否在仓库：1-在 ，空或者0不在
     */
    private Integer storage;
    
    /**
     * 是否已调用：1-已调用，空或者0未调用
     */
    private Integer inUse;
    
    private Boolean auditStatus;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public Double getTotalScore() {
        return totalScore;
    }

    public void setTotalScore(Double totalScore) {
        this.totalScore = totalScore;
    }

    public String getCreator() {
        return creator;
    }

    public void setCreator(String creator) {
        this.creator = creator;
    }

    public Integer getPaperDetailCount() {
        return paperDetailCount;
    }

    public void setPaperDetailCount(Integer paperDetailCount) {
        this.paperDetailCount = paperDetailCount;
    }

    public String getCreateTime() {
        return createTime;
    }

    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }

    public String getLastModifyName() {
        return lastModifyName;
    }

    public void setLastModifyName(String lastModifyName) {
        this.lastModifyName = lastModifyName;
    }

    public String getWord() {
        return word;
    }

    public void setWord(String word) {
        this.word = word;
    }

    public String getHtml() {
        return html;
    }

    public void setHtml(String html) {
        this.html = html;
    }

    public PaperStatus getPaperStatus() {
        return paperStatus;
    }

    public void setPaperStatus(PaperStatus paperStatus) {
        this.paperStatus = paperStatus;
    }

    public PaperType getPaperType() {
        return paperType;
    }

    public void setPaperType(PaperType paperType) {
        this.paperType = paperType;
    }

    public Map<String, String> getParams() {
        return params;
    }

    public void setParams(Map<String, String> params) {
        this.params = params;
    }

    public String getCourseNo() {
        return courseNo;
    }

    public void setCourseNo(String courseNo) {
        this.courseNo = courseNo;
    }

    public String getCourseName() {
        return courseName;
    }

    public void setCourseName(String courseName) {
        this.courseName = courseName;
    }

    public Integer getUnitCount() {
        return unitCount;
    }

    public void setUnitCount(Integer unitCount) {
        this.unitCount = unitCount;
    }

    public String getOrgId() {
        return orgId;
    }

    public void setOrgId(String orgId) {
        this.orgId = orgId;
    }

    public Paper() {
        this.createTime = CommonUtils.getCurDateTime();
    }

    public CourseLevel getLevel() {
        return level;
    }

    public void setLevel(CourseLevel level) {
        this.level = level;
    }

    public Course getCourse() {
        return course;
    }

    public void setCourse(Course course) {
        this.course = course;
    }

    public Specialty getSpecialty() {
        return specialty;
    }

    public void setSpecialty(Specialty specialty) {
        this.specialty = specialty;
    }

    public Double getDifficultyDegree() {
        return difficultyDegree;
    }

    public void setDifficultyDegree(Double difficultyDegree) {
        this.difficultyDegree = difficultyDegree;
    }

    public String getSameName() {
        return sameName;
    }

    public void setSameName(String sameName) {
        this.sameName = sameName;
    }

    public String getExamRemark() {
        return examRemark;
    }

    public void setExamRemark(String examRemark) {
        this.examRemark = examRemark;
    }


	public Map<String, Integer> getQuesCount() {
		return quesCount;
	}

	public void setQuesCount(Map<String, Integer> quesCount) {
		this.quesCount = quesCount;
	}

	public Map<String, Double> getQuesScore() {
		return quesScore;
	}

	public void setQuesScore(Map<String, Double> quesScore) {
		this.quesScore = quesScore;
	}

	public Integer getStorage() {
		return storage;
	}

	public void setStorage(Integer storage) {
		this.storage = storage;
	}

	public Integer getInUse() {
		return inUse;
	}

	public void setInUse(Integer inUse) {
		this.inUse = inUse;
	}

	public Boolean getAuditStatus() {
		return auditStatus;
	}

	public void setAuditStatus(Boolean auditStatus) {
		this.auditStatus = auditStatus;
	}

	
	
}
