package com.qmth.themis.business.entity;

import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.qmth.themis.business.constant.SystemConstant;
import com.qmth.themis.business.enums.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;
import java.util.Objects;

/**
 * @Description: 考试记录
 * @Param:
 * @return:
 * @Author: wangliang
 * @Date: 2020/6/25
 */
@ApiModel(value = "t_oe_exam_record", description = "考试记录")
public class TOeExamRecord implements Serializable {
    private static final long serialVersionUID = 1L;

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

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

    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(value = "考试场次ID")
    @TableField(value = "exam_activity_id")
    private Long examActivityId;

    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(value = "考生ID")
    @TableField(value = "exam_student_id")
    private Long examStudentId;

    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(value = "实际使用的试卷ID")
    @TableField(value = "paper_id")
    private Long paperId;

    @ApiModelProperty(value = "考试状态，first_prepare：首次候考，answering：正在答题，break_off：已中断，resume_prepare：断点恢复候考，finished：已结束考试，persisted：数据已保存")
    @TableField(value = "status")
    private ExamRecordStatusEnum status;

    @ApiModelProperty(value = "首次进入候考时间")
    @TableField(value = "first_prepare_time")
    private Long firstPrepareTime;

    @ApiModelProperty(value = "首次开考时间")
    @TableField(value = "first_start_time")
    private Long firstStartTime;

    @ApiModelProperty(value = "最近断点时间")
    @TableField(value = "last_break_time")
    private Long lastBreakTime;

    @ApiModelProperty(value = "最近恢复候考时间")
    @TableField(value = "last_prepare_time")
    private Long lastPrepareTime;

    @ApiModelProperty(value = "最近恢复开考时间")
    @TableField(value = "last_start_time")
    private Long lastStartTime;

    @ApiModelProperty(value = "已断点续考次数")
    @TableField(value = "already_break_count")
    private Integer alreadyBreakCount;

    @ApiModelProperty(value = "客户端当前IP地址")
    @TableField(value = "client_current_ip")
    private String clientCurrentIp;

    @ApiModelProperty(value = "客户端websocket状态")
    @TableField(value = "client_websocket_status")
    private WebsocketStatusEnum clientWebsocketStatus;

    @ApiModelProperty(value = "客户端websocket连接标识")
    @TableField(value = "client_websocket_id")
    private String clientWebsocketId;

    @ApiModelProperty(value = "客户端最近同步时间")
    @TableField(value = "client_last_sync_time")
    private Long clientLastSyncTime;

    @ApiModelProperty(value = "答题进度")
    @TableField(value = "answer_progress")
    private Double answerProgress;

    @ApiModelProperty(value = "累计考试用时")
    @TableField(value = "duration_seconds")
    private Integer durationSeconds;

    @ApiModelProperty(value = "交卷时间")
    @TableField(value = "finish_time")
    private Long finishTime;

    @ApiModelProperty(value = "交卷原因，hand：手动交卷，auto：系统交卷，breach：违纪交卷")
    @TableField(value = "finish_type")
    private FinishTypeEnum finishType;

    @ApiModelProperty(value = "预警次数")
    @TableField(value = "warning_count")
    private Integer warningCount;

    @ApiModelProperty(value = "预警记录未读数")
    private Integer warningUnread;

    @ApiModelProperty(value = "审核结果，pass：通过，no_pass：不通过")
    @TableField(value = "review_result")
    private ReviewResultEnum reviewResult;

    @ApiModelProperty(value = "客观题分数")
    @TableField(value = "objective_score")
    private Double objectiveScore;

    @ApiModelProperty(value = "试题下载，0：是，1：不是")
    @TableField(value = "paper_download")
    private Integer paperDownload;

    @ApiModelProperty(value = "是否违纪，0：是，1：不是")
    @TableField(value = "breach_status")
    private Integer breachStatus;

    @ApiModelProperty(value = "个人试卷结构")
    @TableField(value = "paper_struct_path")
    private String paperStructPath;

    @ApiModelProperty(value = "个人试卷结构是否已上传，0：未上传，1：已上传")
    @TableField(value = "paper_struct_upload")
    private Integer paperStructUpload;

    @ApiModelProperty(value = "第几次考试")
    @TableField(value = "serial_number")
    private Integer serialNumber;

    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(value = "最近断点记录ID")
    @TableField(value = "last_break_id")
    private Long lastBreakId;

    @ApiModelProperty(value = "开考身份验证结果")
    @TableField(value = "entry_authentication_result")
    private VerifyExceptionEnum entryAuthenticationResult;

    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(value = "开考身份验证记录ID")
    @TableField(value = "entry_authentication_id")
    private Long entryAuthenticationId;

    @ApiModelProperty(value = "当前过程人脸检测状态")
    @TableField(value = "in_process_face_verify_status")
    private Integer inProcessFaceVerifyStatus;

    @ApiModelProperty(value = "当前过程活体验证状态")
    @TableField(value = "in_process_liveness_verify_status")
    private Integer inProcessLivenessVerifyStatus;

    @ApiModelProperty(value = "已完成过程活体验证次数")
    @TableField(value = "in_process_liveness_verify_count")
    private Integer inProcessLivenessVerifyCount;

    @ApiModelProperty(value = "监控标识（默认直接用recordId）")
    @TableField(value = "monitor_key")
    private String monitorKey;

    @ApiModelProperty(value = "监控状态，stop：停止，start：正常")
    @TableField(value = "monitor_status_source")
    private MonitorStatusSourceEnum monitorStatusSource;

    @ApiModelProperty(value = "算分状态，never：从未算分，calculating：正在算分，finish：算分完成")
    @TableField(value = "score_status")
    private ScoreStatusEnum scoreStatus;

    @ApiModelProperty(value = "考试开始时间")
    @TableField(value = "start_time")
    private Long startTime;

    @ApiModelProperty(value = "考试结束时间")
    @TableField(value = "end_time")
    private Long endTime;

    @ApiModelProperty(value = "允许开考开放时长，相当于迟到时间")
    @TableField(value = "opening_seconds")
    private Integer openingSeconds;

    @ApiModelProperty(value = "最短考试时长，相当于考试冻结时间")
    @TableField(value = "min_duration_seconds")
    private Integer minDurationSeconds;

    @ApiModelProperty(value = "最大考试时长")
    @TableField(value = "max_duration_seconds")
    private Integer maxDurationSeconds;

    @ApiModelProperty(value = "是否在结束时间集中强制收卷，0：不强制，1：强制")
    @TableField(value = "force_finish")
    private Integer forceFinish;

    @ApiModelProperty(value = "是否有标答，0：无，1：有")
    @TableField(value = "has_answer_file")
    private Integer hasAnswerFile;

    @ApiModelProperty(value = "当前真实性检测状态")
    @TableField(value = "in_process_realness_verify_status")
    private Integer inProcessRealnessVerifyStatus;

    @ApiModelProperty(value = "是否允许使用摄像头拍照答题，0：不允许，1：允许")
    @TableField(value = "camera_photo_upload")
    private Integer cameraPhotoUpload;

    @ApiModelProperty(value = "是否允许使用移动端拍照答题，0：不开启，1：开启")
    @TableField(value = "mobile_photo_upload")
    private Integer mobilePhotoUpload;

    @ApiModelProperty(value = "开考身份验证策略，off：关闭，face_verify_optional：非强制人脸验证，face_verify_force：强制人脸验证，liveness：活体验证")
    @TableField(value = "entry_authentication_policy")
    private EntryAuthenticationPolicyEnum entryAuthenticationPolicy;

    @ApiModelProperty(value = "考试过程中人脸检测是否忽略陌生人 ，0：不忽略，1：忽略")
    @TableField(value = "in_process_face_stranger_ignore")
    private Integer inProcessFaceStrangerIgnore;

    @ApiModelProperty(value = "考试过程中活体检测间隔时间")
    @TableField(value = "in_process_liveness_fixed_range")
    private String inProcessLivenessFixedRange;

    @ApiModelProperty(value = "考试过程中活体检测结果判定规则，any：任意一次通过，all：全部都要通过，more：通过次数大于失败次数")
    @TableField(value = "in_process_liveness_judge_policy")
    private InProcessLivenessJudgePolicyEnum inProcessLivenessJudgePolicy;

    @ApiModelProperty(value = "开启监控的视频源")
    @TableField(value = "monitor_video_source", updateStrategy = FieldStrategy.IGNORED)
    private String monitorVideoSource;

    @ApiModelProperty(value = "开启转录的视频源")
    @TableField(value = "monitor_record", updateStrategy = FieldStrategy.IGNORED)
    private String monitorRecord;

    @ApiModelProperty(value = "移动端第一机位websocket状态")
    @TableField(value = "mobile_first_websocket_status")
    private WebsocketStatusEnum mobileFirstWebsocketStatus;

    @ApiModelProperty(value = "移动端第一机位websocket连接标识")
    @TableField(value = "mobile_first_websocket_id")
    private String mobileFirstWebsocketId;

    @ApiModelProperty(value = "移动端第二机位websocket状态")
    @TableField(value = "mobile_second_websocket_status")
    private WebsocketStatusEnum mobileSecondWebsocketStatus;

    @ApiModelProperty(value = "移动端第二机位websocket连接标识")
    @TableField(value = "mobile_second_websocket_id")
    private String mobileSecondWebsocketId;

    @ApiModelProperty(name = "电脑摄像头通信状态")
    @TableField(value = "camera_monitor_status")
    private MonitorStatusSourceEnum cameraMonitorStatus;

    @ApiModelProperty(name = "电脑屏幕通信状态")
    @TableField(value = "screen_monitor_status")
    private MonitorStatusSourceEnum screenMonitorStatus;

    @ApiModelProperty(name = "手机主机位通信状态")
    @TableField(value = "mobile_first_monitor_status")
    private MonitorStatusSourceEnum mobileFirstMonitorStatus;

    @ApiModelProperty(name = "手机辅机位监控通信状态")
    @TableField(value = "mobile_second_monitor_status")
    private MonitorStatusSourceEnum mobileSecondMonitorStatus;

    @ApiModelProperty(name = "转录视频地址")
    private String tencentVideoUrl;

    @ApiModelProperty(value = "更新时间")
    private Long updateTime;

    @ApiModelProperty(value = "视频删除状态，false：未删除，true：已删除")
    private Boolean videoStatus;

    @ApiModelProperty(value = "陌生人脸预警总数")
    private Integer warningMultipleFaceCount;

    @ApiModelProperty(value = "异常数据总数")
    private Integer exceptionCount;

    public Integer getWarningMultipleFaceCount() {
        return warningMultipleFaceCount;
    }

    public void setWarningMultipleFaceCount(Integer warningMultipleFaceCount) {
        this.warningMultipleFaceCount = warningMultipleFaceCount;
    }

    public Integer getExceptionCount() {
        return exceptionCount;
    }

    public void setExceptionCount(Integer exceptionCount) {
        this.exceptionCount = exceptionCount;
    }

    public Integer getWarningUnread() {
        return warningUnread;
    }

    public void setWarningUnread(Integer warningUnread) {
        this.warningUnread = warningUnread;
    }

    public Boolean getVideoStatus() {
        return videoStatus;
    }

    public void setVideoStatus(Boolean videoStatus) {
        this.videoStatus = videoStatus;
    }

    public Long getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Long updateTime) {
        this.updateTime = updateTime;
    }

    public String getTencentVideoUrl() {
        return tencentVideoUrl;
    }

    public void setTencentVideoUrl(String tencentVideoUrl) {
        this.tencentVideoUrl = tencentVideoUrl;
    }

    public String getMonitorRecord() {
        return monitorRecord;
    }

    public void setMonitorRecord(String monitorRecord) {
        this.monitorRecord = monitorRecord;
    }

    public MonitorStatusSourceEnum getCameraMonitorStatus() {
        return cameraMonitorStatus;
    }

    public void setCameraMonitorStatus(MonitorStatusSourceEnum cameraMonitorStatus) {
        this.cameraMonitorStatus = cameraMonitorStatus;
    }

    public MonitorStatusSourceEnum getScreenMonitorStatus() {
        return screenMonitorStatus;
    }

    public void setScreenMonitorStatus(MonitorStatusSourceEnum screenMonitorStatus) {
        this.screenMonitorStatus = screenMonitorStatus;
    }

    public MonitorStatusSourceEnum getMobileFirstMonitorStatus() {
        return mobileFirstMonitorStatus;
    }

    public void setMobileFirstMonitorStatus(MonitorStatusSourceEnum mobileFirstMonitorStatus) {
        this.mobileFirstMonitorStatus = mobileFirstMonitorStatus;
    }

    public MonitorStatusSourceEnum getMobileSecondMonitorStatus() {
        return mobileSecondMonitorStatus;
    }

    public void setMobileSecondMonitorStatus(MonitorStatusSourceEnum mobileSecondMonitorStatus) {
        this.mobileSecondMonitorStatus = mobileSecondMonitorStatus;
    }

    public WebsocketStatusEnum getMobileFirstWebsocketStatus() {
        return mobileFirstWebsocketStatus;
    }

    public void setMobileFirstWebsocketStatus(WebsocketStatusEnum mobileFirstWebsocketStatus) {
        this.mobileFirstWebsocketStatus = mobileFirstWebsocketStatus;
    }

    public String getMobileFirstWebsocketId() {
        return mobileFirstWebsocketId;
    }

    public void setMobileFirstWebsocketId(String mobileFirstWebsocketId) {
        this.mobileFirstWebsocketId = mobileFirstWebsocketId;
    }

    public WebsocketStatusEnum getMobileSecondWebsocketStatus() {
        return mobileSecondWebsocketStatus;
    }

    public void setMobileSecondWebsocketStatus(WebsocketStatusEnum mobileSecondWebsocketStatus) {
        this.mobileSecondWebsocketStatus = mobileSecondWebsocketStatus;
    }

    public String getMobileSecondWebsocketId() {
        return mobileSecondWebsocketId;
    }

    public void setMobileSecondWebsocketId(String mobileSecondWebsocketId) {
        this.mobileSecondWebsocketId = mobileSecondWebsocketId;
    }

    public Integer getCameraPhotoUpload() {
        return cameraPhotoUpload;
    }

    public void setCameraPhotoUpload(Integer cameraPhotoUpload) {
        this.cameraPhotoUpload = cameraPhotoUpload;
    }

    public Integer getMobilePhotoUpload() {
        return mobilePhotoUpload;
    }

    public void setMobilePhotoUpload(Integer mobilePhotoUpload) {
        this.mobilePhotoUpload = mobilePhotoUpload;
    }

    public EntryAuthenticationPolicyEnum getEntryAuthenticationPolicy() {
        return entryAuthenticationPolicy;
    }

    public void setEntryAuthenticationPolicy(EntryAuthenticationPolicyEnum entryAuthenticationPolicy) {
        this.entryAuthenticationPolicy = entryAuthenticationPolicy;
    }

    public Integer getInProcessFaceStrangerIgnore() {
        return inProcessFaceStrangerIgnore;
    }

    public void setInProcessFaceStrangerIgnore(Integer inProcessFaceStrangerIgnore) {
        this.inProcessFaceStrangerIgnore = inProcessFaceStrangerIgnore;
    }

    public String getInProcessLivenessFixedRange() {
        return inProcessLivenessFixedRange;
    }

    public void setInProcessLivenessFixedRange(String inProcessLivenessFixedRange) {
        this.inProcessLivenessFixedRange = inProcessLivenessFixedRange;
    }

    public InProcessLivenessJudgePolicyEnum getInProcessLivenessJudgePolicy() {
        return inProcessLivenessJudgePolicy;
    }

    public void setInProcessLivenessJudgePolicy(InProcessLivenessJudgePolicyEnum inProcessLivenessJudgePolicy) {
        this.inProcessLivenessJudgePolicy = inProcessLivenessJudgePolicy;
    }

    public String getMonitorVideoSource() {
        return monitorVideoSource;
    }

    public void setMonitorVideoSource(String monitorVideoSource) {
        this.monitorVideoSource = monitorVideoSource;
    }

    public Integer getInProcessRealnessVerifyStatus() {
        return inProcessRealnessVerifyStatus;
    }

    public void setInProcessRealnessVerifyStatus(Integer inProcessRealnessVerifyStatus) {
        this.inProcessRealnessVerifyStatus = inProcessRealnessVerifyStatus;
    }

    public ScoreStatusEnum getScoreStatus() {
        return scoreStatus;
    }

    public void setScoreStatus(ScoreStatusEnum scoreStatus) {
        this.scoreStatus = scoreStatus;
    }

    public String getMonitorKey() {
        return monitorKey;
    }

    public void setMonitorKey(String monitorKey) {
        this.monitorKey = monitorKey;
    }

    public MonitorStatusSourceEnum getMonitorStatusSource() {
        return monitorStatusSource;
    }

    public void setMonitorStatusSource(MonitorStatusSourceEnum monitorStatusSource) {
        this.monitorStatusSource = monitorStatusSource;
    }

    public static long getSerialVersionUID() {
        return serialVersionUID;
    }

    public Long getId() {
        return id;
    }

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

    public Long getExamId() {
        return examId;
    }

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

    public Long getExamActivityId() {
        return examActivityId;
    }

    public void setExamActivityId(Long examActivityId) {
        this.examActivityId = examActivityId;
    }

    public Long getExamStudentId() {
        return examStudentId;
    }

    public void setExamStudentId(Long examStudentId) {
        this.examStudentId = examStudentId;
    }

    public Long getPaperId() {
        return paperId;
    }

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

    public ExamRecordStatusEnum getStatus() {
        return status;
    }

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

    public String getClientCurrentIp() {
        return clientCurrentIp;
    }

    public void setClientCurrentIp(String clientCurrentIp) {
        this.clientCurrentIp = clientCurrentIp;
    }

    public WebsocketStatusEnum getClientWebsocketStatus() {
        return clientWebsocketStatus;
    }

    public void setClientWebsocketStatus(WebsocketStatusEnum clientWebsocketStatus) {
        this.clientWebsocketStatus = clientWebsocketStatus;
    }

    public String getClientWebsocketId() {
        return clientWebsocketId;
    }

    public void setClientWebsocketId(String clientWebsocketId) {
        this.clientWebsocketId = clientWebsocketId;
    }

    public Double getAnswerProgress() {
        return answerProgress;
    }

    public void setAnswerProgress(Double answerProgress) {
        this.answerProgress = answerProgress;
    }

    public Integer getDurationSeconds() {
        return durationSeconds;
    }

    public void setDurationSeconds(Integer durationSeconds) {
        this.durationSeconds = durationSeconds;
    }

    public FinishTypeEnum getFinishType() {
        return finishType;
    }

    public void setFinishType(FinishTypeEnum finishType) {
        this.finishType = finishType;
    }

    public Integer getWarningCount() {
        return warningCount;
    }

    public void setWarningCount(Integer warningCount) {
        this.warningCount = warningCount;
    }

    public ReviewResultEnum getReviewResult() {
        return reviewResult;
    }

    public void setReviewResult(ReviewResultEnum reviewResult) {
        this.reviewResult = reviewResult;
    }

    public Double getObjectiveScore() {
        return objectiveScore;
    }

    public void setObjectiveScore(Double objectiveScore) {
        this.objectiveScore = objectiveScore;
    }

    public Integer getPaperDownload() {
        return paperDownload;
    }

    public void setPaperDownload(Integer paperDownload) {
        this.paperDownload = paperDownload;
    }

    public Integer getBreachStatus() {
        return breachStatus;
    }

    public void setBreachStatus(Integer breachStatus) {
        this.breachStatus = breachStatus;
    }

    public String getPaperStructPath() {
        return paperStructPath;
    }

    public void setPaperStructPath(String paperStructPath) {
        this.paperStructPath = paperStructPath;
    }

    public Integer getPaperStructUpload() {
        return paperStructUpload;
    }

    public void setPaperStructUpload(Integer paperStructUpload) {
        this.paperStructUpload = paperStructUpload;
    }

    public Integer getSerialNumber() {
        return serialNumber;
    }

    public void setSerialNumber(Integer serialNumber) {
        this.serialNumber = serialNumber;
    }

    public Long getLastBreakId() {
        return lastBreakId;
    }

    public void setLastBreakId(Long lastBreakId) {
        this.lastBreakId = lastBreakId;
    }

    public VerifyExceptionEnum getEntryAuthenticationResult() {
        return entryAuthenticationResult;
    }

    public void setEntryAuthenticationResult(VerifyExceptionEnum entryAuthenticationResult) {
        this.entryAuthenticationResult = entryAuthenticationResult;
    }

    public Long getEntryAuthenticationId() {
        return entryAuthenticationId;
    }

    public void setEntryAuthenticationId(Long entryAuthenticationId) {
        this.entryAuthenticationId = entryAuthenticationId;
    }

    public Integer getInProcessFaceVerifyStatus() {
        return inProcessFaceVerifyStatus;
    }

    public void setInProcessFaceVerifyStatus(Integer inProcessFaceVerifyStatus) {
        this.inProcessFaceVerifyStatus = inProcessFaceVerifyStatus;
    }

    public Integer getInProcessLivenessVerifyStatus() {
        return inProcessLivenessVerifyStatus;
    }

    public void setInProcessLivenessVerifyStatus(Integer inProcessLivenessVerifyStatus) {
        this.inProcessLivenessVerifyStatus = inProcessLivenessVerifyStatus;
    }

    public Integer getInProcessLivenessVerifyCount() {
        return inProcessLivenessVerifyCount;
    }

    public void setInProcessLivenessVerifyCount(Integer inProcessLivenessVerifyCount) {
        this.inProcessLivenessVerifyCount = inProcessLivenessVerifyCount;
    }

    public Integer getAlreadyBreakCount() {
        return alreadyBreakCount;
    }

    public void setAlreadyBreakCount(Integer alreadyBreakCount) {
        this.alreadyBreakCount = alreadyBreakCount;
    }

    public Integer getOpeningSeconds() {
        return openingSeconds;
    }

    public void setOpeningSeconds(Integer openingSeconds) {
        this.openingSeconds = openingSeconds;
    }

    public Integer getMinDurationSeconds() {
        return minDurationSeconds;
    }

    public void setMinDurationSeconds(Integer minDurationSeconds) {
        this.minDurationSeconds = minDurationSeconds;
    }

    public Integer getMaxDurationSeconds() {
        return maxDurationSeconds;
    }

    public void setMaxDurationSeconds(Integer maxDurationSeconds) {
        this.maxDurationSeconds = maxDurationSeconds;
    }

    public Integer getForceFinish() {
        return forceFinish;
    }

    public void setForceFinish(Integer forceFinish) {
        this.forceFinish = forceFinish;
    }

    public Long getFirstPrepareTime() {
        return firstPrepareTime;
    }

    public void setFirstPrepareTime(Long firstPrepareTime) {
        this.firstPrepareTime = firstPrepareTime;
    }

    public Long getFirstStartTime() {
        return firstStartTime;
    }

    public void setFirstStartTime(Long firstStartTime) {
        this.firstStartTime = firstStartTime;
    }

    public Long getLastBreakTime() {
        return lastBreakTime;
    }

    public void setLastBreakTime(Long lastBreakTime) {
        this.lastBreakTime = lastBreakTime;
    }

    public Long getLastPrepareTime() {
        return lastPrepareTime;
    }

    public void setLastPrepareTime(Long lastPrepareTime) {
        this.lastPrepareTime = lastPrepareTime;
    }

    public Long getLastStartTime() {
        return lastStartTime;
    }

    public void setLastStartTime(Long lastStartTime) {
        this.lastStartTime = lastStartTime;
    }

    public Long getClientLastSyncTime() {
        return clientLastSyncTime;
    }

    public void setClientLastSyncTime(Long clientLastSyncTime) {
        this.clientLastSyncTime = clientLastSyncTime;
    }

    public Long getFinishTime() {
        return finishTime;
    }

    public void setFinishTime(Long finishTime) {
        this.finishTime = finishTime;
    }

    public Long getStartTime() {
        return startTime;
    }

    public void setStartTime(Long startTime) {
        this.startTime = startTime;
    }

    public Long getEndTime() {
        return endTime;
    }

    public void setEndTime(Long endTime) {
        this.endTime = endTime;
    }

    public Integer getHasAnswerFile() {
        return hasAnswerFile;
    }

    public void setHasAnswerFile(Integer hasAnswerFile) {
        this.hasAnswerFile = hasAnswerFile;
    }


}
