package com.qmth.jkserver.model;

//import com.fasterxml.jackson.annotation.JsonFormat;
//import com.qmth.jkserver.dto.FaceVerify;
//import com.qmth.jkserver.enums.*;
//import io.swagger.annotations.ApiModelProperty;
//import org.springframework.data.annotation.Id;
//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 java.io.Serializable;
//import java.util.Date;
//
///**
// * 考试计划
// *
// * @author tianjun
// */
//@Document(collection = "jk_exam_plan")
//public class ExamPlan implements Serializable {
//
//    /**
//     *
//     */
//    private static final long serialVersionUID = -6624764888197088459L;
//
//    @Id
//    private String id;
//
//    @Field("name")
//    private String name;
//
//    /**
//     * 考试识别码  全局唯一
//     */
//    @Indexed(unique = true)
//    @Field("exam_code")
//    private String examCode;
//
//    /**
//     * 考试类型
//     */
//    @Field("exam_type")
//    private ExamType examType;
//
//    /**
//     * 考试状态
//     */
//    @Field("exam_status")
//    private ExamStatus examStatus;
//
//    /**
//     * 开始时间
//     */
//    @Field("start_time")
//    @JsonFormat(pattern = "yyyy-MM-dd")
//    private Date startTime;
//
//    /**
//     * 结束时间
//     */
//    @Field("end_time")
//    @JsonFormat(pattern = "yyyy-MM-dd")
//    private Date endTime;
//
//    /**
//     * 创建者
//     */
//    @Field("creator_id")
//    private String creatorId;
//
//    /**
//     * 创建时间
//     */
//    @Field("create_time")
//    private Date createTime;
//
//    @Field("enable")
//    private boolean enable;
//
//    /**
//     * 是否是模拟测试 0 否  1   是
//     */
//    @Field("simulation")
//    private String simulation;
//
//    /**
//     * 抽卷规则
//     */
//    @Field("paper_rule")
//    private ExamPaperRule paperRule;
//
//    /**
//     * 登录规则
//     */
//    @Field("login_rule")
//    private ExamLoginRule loginRule;
//
//    /**
//     * 客户端主题资源包
//     */
//    @Field("client_theme")
//    private ExamClientTheme clientTheme;
//
//    /**
//     * 是否开启考场监控
//     */
//    @Field("open_monitor")
//    private OpenMonitor openMonitor;
//
//    /**
//     * 是否开启人脸识别
//     */
//    @Field("face_verify")
//    //TODO 人脸识别拆分成2个字段
//    private FaceVerify faceVerify;
//
//    /**
//     * 是否现场出分
//     */
//    @Field("scene_score")
//    private SceneScore sceneScore;
//
//    @ApiModelProperty(value = "访问key")
//    @Field("access_key")
//    private String accessKey;
//
//    @ApiModelProperty(value = "访问密钥")
//    @Field("access_secret")
//    private String accessSecret;
//
//    @ApiModelProperty(value = "云阅卷同步考试任务")
//    @Field("exam_task")
////    @DBRef
//    //TODO 待关联
//    private ExamTask examTask;
//
//    public ExamTask getExamTask() {
//        return examTask;
//    }
//
//    public void setExamTask(ExamTask examTask) {
//        this.examTask = examTask;
//    }
//
//    public void updateKeyAndSecret(String accessKey, String accessSecret) {
//        this.accessKey = accessKey;
//        this.accessSecret = accessSecret;
//    }
//
//    public String getAccessKey() {
//        return accessKey;
//    }
//
//    public void setAccessKey(String accessKey) {
//        this.accessKey = accessKey;
//    }
//
//    public String getAccessSecret() {
//        return accessSecret;
//    }
//
//    public void setAccessSecret(String accessSecret) {
//        this.accessSecret = accessSecret;
//    }
//
//    public static long getSerialVersionUID() {
//        return serialVersionUID;
//    }
//
//    public SceneScore getSceneScore() {
//        return sceneScore;
//    }
//
//    public void setSceneScore(SceneScore sceneScore) {
//        this.sceneScore = sceneScore;
//    }
//
//    /**
//     * @return the openMonitor
//     */
//    public OpenMonitor getOpenMonitor() {
//        return openMonitor;
//    }
//
//    /**
//     * @param openMonitor the openMonitor to set
//     */
//    public void setOpenMonitor(OpenMonitor openMonitor) {
//        this.openMonitor = openMonitor;
//    }
//
//    /**
//     * @return the faceVerify
//     */
//    public FaceVerify getFaceVerify() {
//        return faceVerify;
//    }
//
//    /**
//     * @param faceVerify the faceVerify to set
//     */
//    public void setFaceVerify(FaceVerify faceVerify) {
//        this.faceVerify = faceVerify;
//    }
//
//    /**
//     * @return the paperRule
//     */
//    public ExamPaperRule getPaperRule() {
//        return paperRule;
//    }
//
//    /**
//     * @param paperRule the paperRule to set
//     */
//    public void setPaperRule(ExamPaperRule paperRule) {
//        this.paperRule = paperRule;
//    }
//
//    /**
//     * @return the loginRule
//     */
//    public ExamLoginRule getLoginRule() {
//        return loginRule;
//    }
//
//    /**
//     * @param loginRule the loginRule to set
//     */
//    public void setLoginRule(ExamLoginRule loginRule) {
//        this.loginRule = loginRule;
//    }
//
//    /**
//     * @return the clientTheme
//     */
//    public ExamClientTheme getClientTheme() {
//        return clientTheme;
//    }
//
//    /**
//     * @param clientTheme the clientTheme to set
//     */
//    public void setClientTheme(ExamClientTheme clientTheme) {
//        this.clientTheme = clientTheme;
//    }
//
//    public boolean isEnable() {
//        return enable;
//    }
//
//    public void setEnable(boolean enable) {
//        this.enable = enable;
//    }
//
//    /**
//     * @return the createTime
//     */
//    public Date getCreateTime() {
//        return createTime;
//    }
//
//    /**
//     * @param createTime the createTime to set
//     */
//    public void setCreateTime(Date createTime) {
//        this.createTime = createTime;
//    }
//
//    /**
//     * @return the creatorId
//     */
//    public String getCreatorId() {
//        return creatorId;
//    }
//
//    /**
//     * @param creatorId the creatorId to set
//     */
//    public void setCreatorId(String creatorId) {
//        this.creatorId = creatorId;
//    }
//
//    /**
//     * @return the id
//     */
//    public String getId() {
//        return id;
//    }
//
//    public String getName() {
//        return name;
//    }
//
//    public void setName(String name) {
//        this.name = name;
//    }
//
//    /**
//     * @param id the id to set
//     */
//    public void setId(String id) {
//        this.id = id;
//    }
//
//    /**
//     * @return the examCode
//     */
//    public String getExamCode() {
//        return examCode;
//    }
//
//    /**
//     * @param examCode the examCode to set
//     */
//    public void setExamCode(String examCode) {
//        this.examCode = examCode;
//    }
//
//    /**
//     * @return the examType
//     */
//    public ExamType getExamType() {
//        return examType;
//    }
//
//    /**
//     * @param examType the examType to set
//     */
//    public void setExamType(ExamType examType) {
//        this.examType = examType;
//    }
//
//    /**
//     * @return the examStatus
//     */
//    public ExamStatus getExamStatus() {
//        return examStatus;
//    }
//
//    /**
//     * @param examStatus the examStatus to set
//     */
//    public void setExamStatus(ExamStatus examStatus) {
//        this.examStatus = examStatus;
//    }
//
//    /**
//     * @return the startTime
//     */
//    public Date getStartTime() {
//        return startTime;
//    }
//
//    /**
//     * @param startTime the startTime to set
//     */
//    public void setStartTime(Date startTime) {
//        this.startTime = startTime;
//    }
//
//    /**
//     * @return the endTime
//     */
//    public Date getEndTime() {
//        return endTime;
//    }
//
//    /**
//     * @param endTime the endTime to set
//     */
//    public void setEndTime(Date endTime) {
//        this.endTime = endTime;
//    }
//
//    /**
//     * @return the simulation
//     */
//    public String getSimulation() {
//        return simulation;
//    }
//
//    /**
//     * @param simulation the simulation to set
//     */
//    public void setSimulation(String simulation) {
//        this.simulation = simulation;
//    }
//}

import com.baomidou.mybatisplus.annotation.FieldStrategy;
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.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;

/**
 * <p>
 * 考试计划
 * </p>
 *
 * @author wangliang
 * @since 2023-03-01
 */
@ApiModel(value = "JkExamPlan对象", description = "考试计划")
@TableName("jk_exam_plan")
public class ExamPlan implements Serializable {

    private static final long serialVersionUID = 1L;

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

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

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

    @ApiModelProperty(value = "考试名称")
    private String name;

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

    @ApiModelProperty(value = "考试类型，NORMAL：通用机考，SOLFEGE：视唱机考，UTEST：优特机考")
    private ExamType examType;

    @ApiModelProperty(value = "考试状态，UN_PUBLISHED：未发布，PUBLISHED：已发布")
    private ExamStatus examStatus;

    @ApiModelProperty(value = "开始时间")
    private Long startTime;

    @ApiModelProperty(value = "结束时间")
    private Long endTime;

    @ApiModelProperty(value = "创建人id")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long creatorId;

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

    @ApiModelProperty(value = "是否启用，1：启用，0：不启用")
    private Boolean enable;

    @ApiModelProperty(value = "是否是模拟测试，0：否，1：是")
    private String simulation;

    @ApiModelProperty(value = "抽卷规则，USE_LAST：使用上次考试的试卷，USE_NEW：重新抽卷")
    private ExamPaperRule paperRule;

    @ApiModelProperty(value = "登录规则，ONLY_TICKET：准考证号，TICKET_IDCARD：准考证号和身份证号")
    private ExamLoginRule loginRule;

    @ApiModelProperty(value = "客户端主题资源包，WHYYXY：武汉音乐学院，SCYYXY：四川音乐学院")
    private ExamClientTheme clientTheme;

    @ApiModelProperty(value = "是否开启考场监控，YES：是，NO：否")
    private OpenMonitor openMonitor;

    @ApiModelProperty(value = "是否开启人脸，0：否，1：是")
    private String faceVerifyOpen;

    @ApiModelProperty(value = "人脸识别间隔时间")
    private String faceVerifyIntervalTime;

    @ApiModelProperty(value = "是否现场出分，YES：是，NO：否")
    private SceneScore sceneScore;

    public Long getSchoolId() {
        return schoolId;
    }

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

    public Long getId() {
        return id;
    }

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

    public Long getExamTaskId() {
        return examTaskId;
    }

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

    public String getName() {
        return name;
    }

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

    public String getExamCode() {
        return examCode;
    }

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

    public ExamType getExamType() {
        return examType;
    }

    public void setExamType(ExamType examType) {
        this.examType = examType;
    }

    public ExamStatus getExamStatus() {
        return examStatus;
    }

    public void setExamStatus(ExamStatus examStatus) {
        this.examStatus = examStatus;
    }

    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 Long getCreatorId() {
        return creatorId;
    }

    public void setCreatorId(Long creatorId) {
        this.creatorId = creatorId;
    }

    public Long getCreateTime() {
        return createTime;
    }

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

    public Boolean getEnable() {
        return enable;
    }

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

    public String getSimulation() {
        return simulation;
    }

    public void setSimulation(String simulation) {
        this.simulation = simulation;
    }

    public ExamPaperRule getPaperRule() {
        return paperRule;
    }

    public void setPaperRule(ExamPaperRule paperRule) {
        this.paperRule = paperRule;
    }

    public ExamLoginRule getLoginRule() {
        return loginRule;
    }

    public void setLoginRule(ExamLoginRule loginRule) {
        this.loginRule = loginRule;
    }

    public ExamClientTheme getClientTheme() {
        return clientTheme;
    }

    public void setClientTheme(ExamClientTheme clientTheme) {
        this.clientTheme = clientTheme;
    }

    public OpenMonitor getOpenMonitor() {
        return openMonitor;
    }

    public void setOpenMonitor(OpenMonitor openMonitor) {
        this.openMonitor = openMonitor;
    }

    public String getFaceVerifyOpen() {
        return faceVerifyOpen;
    }

    public void setFaceVerifyOpen(String faceVerifyOpen) {
        this.faceVerifyOpen = faceVerifyOpen;
    }

    public String getFaceVerifyIntervalTime() {
        return faceVerifyIntervalTime;
    }

    public void setFaceVerifyIntervalTime(String faceVerifyIntervalTime) {
        this.faceVerifyIntervalTime = faceVerifyIntervalTime;
    }

    public SceneScore getSceneScore() {
        return sceneScore;
    }

    public void setSceneScore(SceneScore sceneScore) {
        this.sceneScore = sceneScore;
    }
}
