package com.qmth.jkserver.model;

//import java.io.Serializable;
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.List;
//
//import io.swagger.annotations.ApiModelProperty;
//import org.springframework.data.annotation.Id;
//import org.springframework.data.mongodb.core.index.CompoundIndex;
//import org.springframework.data.mongodb.core.index.CompoundIndexes;
//import org.springframework.data.mongodb.core.index.IndexDirection;
//import org.springframework.data.mongodb.core.index.Indexed;
//import org.springframework.data.mongodb.core.mapping.Document;
//import org.springframework.data.mongodb.core.mapping.Field;
//
//import com.qmth.jkserver.enums.ProgressType;
//
///**
// * 考生答案
// *
// * @author tianjun
// *
// */
//@Document(collection = "jk_exam_student_answer")
//@CompoundIndexes({
//	@CompoundIndex(name = "exam_student_answer_index1",def = "{'exam_code':1,'student.ticket_no': 1,'student.course_code':1}"),
//	@CompoundIndex(name = "exam_student_answer_index2",unique = true,def = "{'student._id':1}"),
//	@CompoundIndex(name = "exam_student_answer_index3",def = "{'paper_id':1,'student.ticket_no': 1}"),
//})
//public class ExamStudentAnswer implements Serializable {
//
//	/**
//	 *
//	 */
//	private static final long serialVersionUID = -3969246279815123877L;
//
//	@Id
//	private String id;
//
//	@Indexed
//	@Field("exam_code")
//	private String examCode;
//
//	@Field("is_abort")
//	private boolean isAbort = false;
//
//	@Field("exam_abort")
//    //TODO exam_abort待关联
//	private List<ExamAbort> examAborts = new ArrayList<ExamAbort>();
//
//	@Field("is_absent")
//	private boolean isAbsent = false;//is_absent为false说明已作答
//
//	@Field("exam_absent")
//    //TODO exam_absent待关联
//	private ExamAbsent examAbsent;
//
//	@Field("is_cheat")
//	private boolean isCheat = false;
//
//	@Field("exam_cheat")
//    //TODO exam_cheat待关联
//	private ExamCheat examCheat;
//
//	// 试卷ID
//	@Field("paper_id")
//	@Indexed(direction=IndexDirection.ASCENDING)
//	private String paperId;
//
//	// 试卷名称
//	@Field("paper_name")
//	private String paperName;
//
//	// 客观题答案
//	@Field("objective_answer")
//	private String objectiveAnswer;
//
//	//答题时间
//	@Field("answer_time")
//	private String answerTime;
//
//	//答题轨迹
//	@Field("answer_path")
//	private String answerPath;
//
//	//解码之后的考场答案数据包(通用机考、优特机考)或者考生答案数据包(视唱机考)
//	@Field("decode_file")
//    //TODO 待关联
//	private Attachment decodeFile;
//
//	//答案的提交方式，通用机考、优特机考取决与考场文件的提交方式，视唱机考的答案提交方式，这个字段是必填项
//	@Field("progress_type")
//	private ProgressType progressType;
//
//	// 登录时间
//	@Field("login_time")
//	private String loginTime;
//
//	/**
//	 * 创建时间
//	 */
//	@Field("time")
//	private Date time;
//
//	//考生
//	@Field("student")
//    //TODO 待关联
//	private ExamStudent student;
//
//	//原始答案数据包 优特机考  新光机考需要,视唱机考不需要 因为视唱机考不存在答案的解码操作
//	@Field("original_answer")
//	private Attachment originalAnswer;
//
//	@ApiModelProperty(value = "云阅卷同步考试任务")
//	@Field("exam_task")
//    //TODO 待关联
//	private ExamTask examTask;
//
//	@ApiModelProperty(value = "同步结果")
//	@Field("task_sync_result")
//	private Boolean taskSyncResult;
//
//	public ExamTask getExamTask() {
//		return examTask;
//	}
//
//	public void setExamTask(ExamTask examTask) {
//		this.examTask = examTask;
//	}
//
//	public Boolean getTaskSyncResult() {
//		return taskSyncResult;
//	}
//
//	public void setTaskSyncResult(Boolean taskSyncResult) {
//		this.taskSyncResult = taskSyncResult;
//	}
//
//	/**
//	 * @return the progressType
//	 */
//	public ProgressType getProgressType() {
//		return progressType;
//	}
//
//	/**
//	 * @param progressType the progressType to set
//	 */
//	public void setProgressType(ProgressType progressType) {
//		this.progressType = progressType;
//	}
//
//	/**
//	 * @return the decodeFile
//	 */
//	public Attachment getDecodeFile() {
//		return decodeFile;
//	}
//
//	/**
//	 * @param decodeFile the decodeFile to set
//	 */
//	public void setDecodeFile(Attachment decodeFile) {
//		this.decodeFile = decodeFile;
//	}
//
//	public String getId() {
//		return id;
//	}
//
//	public void setId(String id) {
//		this.id = id;
//	}
//
//	public String getExamCode() {
//		return examCode;
//	}
//
//	public boolean isAbort() {
//		return isAbort;
//	}
//
//	public void setAbort(boolean isAbort) {
//		this.isAbort = isAbort;
//	}
//
//	public List<ExamAbort> getExamAborts() {
//		return examAborts;
//	}
//
//	public void setExamAborts(List<ExamAbort> examAborts) {
//		this.examAborts = examAborts;
//	}
//
//	public boolean isAbsent() {
//		return isAbsent;
//	}
//
//	public void setAbsent(boolean isAbsent) {
//		this.isAbsent = isAbsent;
//	}
//
//	public ExamAbsent getExamAbsent() {
//		return examAbsent;
//	}
//
//	public void setExamAbsent(ExamAbsent examAbsent) {
//		this.examAbsent = examAbsent;
//	}
//
//	public boolean isCheat() {
//		return isCheat;
//	}
//
//	public void setCheat(boolean isCheat) {
//		this.isCheat = isCheat;
//	}
//
//	public ExamCheat getExamCheat() {
//		return examCheat;
//	}
//
//	public void setExamCheat(ExamCheat examCheat) {
//		this.examCheat = examCheat;
//	}
//
//	public String getPaperId() {
//		return paperId;
//	}
//
//	public void setPaperId(String paperId) {
//		this.paperId = paperId;
//	}
//
//	public String getPaperName() {
//		return paperName;
//	}
//
//	public void setPaperName(String paperName) {
//		this.paperName = paperName;
//	}
//
//	public String getObjectiveAnswer() {
//		return objectiveAnswer;
//	}
//
//	public void setObjectiveAnswer(String objectiveAnswer) {
//		this.objectiveAnswer = objectiveAnswer;
//	}
//
//	public String getAnswerTime() {
//		return answerTime;
//	}
//
//	public void setAnswerTime(String answerTime) {
//		this.answerTime = answerTime;
//	}
//
//	public String getAnswerPath() {
//		return answerPath;
//	}
//
//	public void setAnswerPath(String answerPath) {
//		this.answerPath = answerPath;
//	}
//
//	public String getLoginTime() {
//		return loginTime;
//	}
//
//	public void setLoginTime(String loginTime) {
//		this.loginTime = loginTime;
//	}
//
//	public Date getTime() {
//		return time;
//	}
//
//	public void setTime(Date time) {
//		this.time = time;
//	}
//
//	public ExamStudent getStudent() {
//		return student;
//	}
//
//	public void setStudent(ExamStudent student) {
//		this.student = student;
//	}
//
//	public Attachment getOriginalAnswer() {
//		return originalAnswer;
//	}
//
//	public void setOriginalAnswer(Attachment originalAnswer) {
//		this.originalAnswer = originalAnswer;
//	}
//
//	public void setExamCode(String examCode) {
//		this.examCode = examCode;
//	}
//}

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.jkserver.enums.ProgressType;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;

/**
 * <p>
 * 考生答案
 * </p>
 *
 * @author wangliang
 * @since 2023-03-01
 */
@ApiModel(value="JkExamStudentAnswer对象", description="考生答案")
@TableName("jk_exam_student_answer")
public class ExamStudentAnswer implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "主键")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    @ApiModelProperty(value = "考试编码")
    private String examCode;

    @ApiModelProperty(value = "是否异常，0：否，1：是")
    @TableField(value = "is_abort")
    private Boolean isAbort;

    @ApiModelProperty(value = "是否缺考，0：未缺考，1：缺考")
    @TableField(value = "is_absent")
    private Boolean isAbsent;

    @ApiModelProperty(value = "是否作弊，0：未作弊，1：作弊")
    @TableField(value = "is_cheat")
    private Boolean isCheat;

    @ApiModelProperty(value = "试卷id")
    private String paperId;

    @ApiModelProperty(value = "试卷名称")
    private String paperName;

    @ApiModelProperty(value = "客观题答案")
    private String objectiveAnswer;

    @ApiModelProperty(value = "答题时间")
    private String answerTime;

    @ApiModelProperty(value = "答题轨迹")
    private String answerPath;

    @ApiModelProperty(value = "附件id，解码之后的考场答案数据包(通用机考、优特机考)或者考生答案数据包(视唱机考)")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long decodeFileId;

    @ApiModelProperty(value = "答案的提交方式，LOCAL：本地导入，REMOTE：监考端提交")
    private ProgressType progressType;

    @ApiModelProperty(value = "登录时间")
    private Long loginTime;

    @ApiModelProperty(value = "创建时间")
    private Long time;

    @ApiModelProperty(value = "学生id")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long studentId;

    @ApiModelProperty(value = "原始答案数据包附件id")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long originalAnswerId;

    @ApiModelProperty(value = "云阅卷同步考试任务id")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long examTaskId;

    @ApiModelProperty(value = "同步结果，0：未同步，1：已同步")
    private Boolean taskSyncResult;

    @TableField(exist = false)
    private String ticketNo;

    @TableField(exist = false)
    private String batchId;

    @TableField(exist = false)
    private String batchName;

    @TableField(exist = false)
    private String stageId;

    @TableField(exist = false)
    private String name;

    @TableField(exist = false)
    private String placeCode;

    @TableField(exist = false)
    private String roomCode;

    @TableField(exist = false)
    private String courseName;

    @TableField(exist = false)
    private String courseCode;

    public String getBatchId() {
        return batchId;
    }

    public void setBatchId(String batchId) {
        this.batchId = batchId;
    }

    public String getBatchName() {
        return batchName;
    }

    public void setBatchName(String batchName) {
        this.batchName = batchName;
    }

    public String getStageId() {
        return stageId;
    }

    public void setStageId(String stageId) {
        this.stageId = stageId;
    }

    public String getName() {
        return name;
    }

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

    public String getPlaceCode() {
        return placeCode;
    }

    public void setPlaceCode(String placeCode) {
        this.placeCode = placeCode;
    }

    public String getRoomCode() {
        return roomCode;
    }

    public void setRoomCode(String roomCode) {
        this.roomCode = roomCode;
    }

    public String getCourseName() {
        return courseName;
    }

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

    public String getCourseCode() {
        return courseCode;
    }

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

    public String getTicketNo() {
        return ticketNo;
    }

    public void setTicketNo(String ticketNo) {
        this.ticketNo = ticketNo;
    }

    public Long getId() {
        return id;
    }

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

    public String getExamCode() {
        return examCode;
    }

    public void setExamCode(String examCode) {
        this.examCode = examCode;
    }

    public Boolean getIsAbort() {
        return isAbort;
    }

    public void setIsAbort(Boolean abort) {
        isAbort = abort;
    }

    public Boolean getIsAbsent() {
        return isAbsent;
    }

    public void setIsAbsent(Boolean absent) {
        isAbsent = absent;
    }

    public Boolean getIsCheat() {
        return isCheat;
    }

    public void setIsCheat(Boolean cheat) {
        isCheat = cheat;
    }

    public String getPaperId() {
        return paperId;
    }

    public void setPaperId(String paperId) {
        this.paperId = paperId;
    }

    public String getPaperName() {
        return paperName;
    }

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

    public String getObjectiveAnswer() {
        return objectiveAnswer;
    }

    public void setObjectiveAnswer(String objectiveAnswer) {
        this.objectiveAnswer = objectiveAnswer;
    }

    public String getAnswerTime() {
        return answerTime;
    }

    public void setAnswerTime(String answerTime) {
        this.answerTime = answerTime;
    }

    public String getAnswerPath() {
        return answerPath;
    }

    public void setAnswerPath(String answerPath) {
        this.answerPath = answerPath;
    }

    public Long getDecodeFileId() {
        return decodeFileId;
    }

    public void setDecodeFileId(Long decodeFileId) {
        this.decodeFileId = decodeFileId;
    }

    public ProgressType getProgressType() {
        return progressType;
    }

    public void setProgressType(ProgressType progressType) {
        this.progressType = progressType;
    }

    public Long getLoginTime() {
        return loginTime;
    }

    public void setLoginTime(Long loginTime) {
        this.loginTime = loginTime;
    }

    public Long getTime() {
        return time;
    }

    public void setTime(Long time) {
        this.time = time;
    }

    public Long getStudentId() {
        return studentId;
    }

    public void setStudentId(Long studentId) {
        this.studentId = studentId;
    }

    public Long getOriginalAnswerId() {
        return originalAnswerId;
    }

    public void setOriginalAnswerId(Long originalAnswerId) {
        this.originalAnswerId = originalAnswerId;
    }

    public Long getExamTaskId() {
        return examTaskId;
    }

    public void setExamTaskId(Long examTaskId) {
        this.examTaskId = examTaskId;
    }

    public Boolean getTaskSyncResult() {
        return taskSyncResult;
    }

    public void setTaskSyncResult(Boolean taskSyncResult) {
        this.taskSyncResult = taskSyncResult;
    }
}
