package com.qmth.distributed.print.business.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.qmth.distributed.print.business.enums.ExamPaperStructureStatusEnum;
import com.qmth.teachcloud.common.base.BaseEntity;
import com.qmth.teachcloud.common.enums.TaskStatusEnum;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;

/**
 * <p>
 * 考试试卷结构表
 * </p>
 *
 * @author xf
 */
@TableName("exam_paper_structure")
public class ExamPaperStructure extends BaseEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "学校id")
    @JsonSerialize(using = ToStringSerializer.class)
    @TableField("school_id")
    private Long schoolId;

    @ApiModelProperty(value = "学期ID")
    @JsonSerialize(using = ToStringSerializer.class)
    @TableField(value = "semester_id")
    private Long semesterId;

    /**
     * 学期名称
     */
    @TableField("semester_name")
    private String semesterName;

    @ApiModelProperty(value = "考试id")
    @JsonSerialize(using = ToStringSerializer.class)
    @TableField("exam_id")
    private Long examId;

    @ApiModelProperty(value = "云阅卷考试ID")
    @JsonSerialize(using = ToStringSerializer.class)
    @TableField(value = "third_relate_id")
    private Long thirdRelateId;

    /**
     * 云阅卷考试名称
     */
    @TableField("third_relate_name")
    private String thirdRelateName;

    /**
     * 试卷编号
     */
    @TableField("paper_number")
    private String paperNumber;

    /**
     * 课程代码
     */
    @TableField("course_code")
    private String courseCode;
    /**
     * 课程名称
     */
    @TableField("course_name")
    private String courseName;
    /**
     * 课程创建的任务序号（和exam_task保持一致）
     */
    @TableField("sequence")
    private String sequence;
    /**
     * 试卷类型
     */
    @TableField("paper_type")
    private String paperType;
    /**
     * 状态
     */
    private ExamPaperStructureStatusEnum status;

    @TableField(exist = false)
    private String statusStr;
    /**
     * 试卷原卷和标答附件ID
     */
    @TableField("paper_answer")
    private String paperAnswer;
    /**
     * 客观题试卷结构JSON
     */
    @TableField("objective_structure")
    private String objectiveStructure;
    /**
     * 主观题试卷结构JSON
     */
    @TableField("subjective_structure")
    private String subjectiveStructure;

    @ApiModelProperty(value = "试卷整体json")
    @TableField("paper_info_json")
    private String paperInfoJson;
    /**
     * 命题老师ID
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @TableField("proposition_teacher_id")
    private Long propositionTeacherId;

    /**
     * 0-禁用，1-启用
     */
    private Boolean enable;

    @TableField(exist = false)
    private String paperNumberId;

    @TableField(exist = false)
    private String taskStatus;

    public Long getSchoolId() {
        return schoolId;
    }

    public void setSchoolId(Long schoolId) {
        this.schoolId = schoolId;
    }

    public Long getSemesterId() {
        return semesterId;
    }

    public void setSemesterId(Long semesterId) {
        this.semesterId = semesterId;
    }

    public String getSemesterName() {
        return semesterName;
    }

    public void setSemesterName(String semesterName) {
        this.semesterName = semesterName;
    }

    public Long getThirdRelateId() {
        return thirdRelateId;
    }

    public void setThirdRelateId(Long thirdRelateId) {
        this.thirdRelateId = thirdRelateId;
    }

    public String getThirdRelateName() {
        return thirdRelateName;
    }

    public void setThirdRelateName(String thirdRelateName) {
        this.thirdRelateName = thirdRelateName;
    }

    public String getPaperNumber() {
        return paperNumber;
    }

    public void setPaperNumber(String paperNumber) {
        this.paperNumber = paperNumber;
    }

    public String getCourseCode() {
        return courseCode;
    }

    public void setCourseCode(String courseCode) {
        this.courseCode = courseCode;
    }

    public String getCourseName() {
        return courseName;
    }

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

    public String getSequence() {
        return sequence;
    }

    public void setSequence(String sequence) {
        this.sequence = sequence;
    }

    public String getPaperType() {
        return paperType;
    }

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

    public ExamPaperStructureStatusEnum getStatus() {
        return status;
    }

    public void setStatus(ExamPaperStructureStatusEnum status) {
        this.status = status;
    }

    public String getStatusStr() {
        return statusStr;
    }

    public void setStatusStr(String statusStr) {
        this.statusStr = statusStr;
    }

    public String getPaperAnswer() {
        return paperAnswer;
    }

    public void setPaperAnswer(String paperAnswer) {
        this.paperAnswer = paperAnswer;
    }

    public String getObjectiveStructure() {
        return objectiveStructure;
    }

    public void setObjectiveStructure(String objectiveStructure) {
        this.objectiveStructure = objectiveStructure;
    }

    public String getSubjectiveStructure() {
        return subjectiveStructure;
    }

    public void setSubjectiveStructure(String subjectiveStructure) {
        this.subjectiveStructure = subjectiveStructure;
    }

    public Long getPropositionTeacherId() {
        return propositionTeacherId;
    }

    public void setPropositionTeacherId(Long propositionTeacherId) {
        this.propositionTeacherId = propositionTeacherId;
    }

    public Boolean getEnable() {
        return enable;
    }

    public void setEnable(Boolean enable) {
        this.enable = enable;
    }

    public String getPaperNumberId() {
        return paperNumberId;
    }

    public void setPaperNumberId(String paperNumberId) {
        this.paperNumberId = paperNumberId;
    }

    public Long getExamId() {
        return examId;
    }

    public void setExamId(Long examId) {
        this.examId = examId;
    }

    public String getPaperInfoJson() {
        return paperInfoJson;
    }

    public void setPaperInfoJson(String paperInfoJson) {
        this.paperInfoJson = paperInfoJson;
    }

    public String getTaskStatus() {
        return taskStatus;
    }

    public void setTaskStatus(String taskStatus) {
        this.taskStatus = taskStatus;
    }
}
