package com.qmth.themis.business.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.qmth.themis.business.base.BaseEntity;
import com.qmth.themis.business.enums.ReexamReasonEnum;
import com.qmth.themis.business.util.UidUtil;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * @Description: 考生重考处理
 * @Param:
 * @return:
 * @Author: wangliang
 * @Date: 2020/6/25
 */
@ApiModel(value = "t_e_exam_reexam", description = "考生重考处理")
public class TEExamReexam extends BaseEntity {

    private static final long serialVersionUID = 1L;

    @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;

    @ApiModelProperty(value = "重考方式，0：批次内，1：换批次")
    @TableField(value = "model")
    private Integer model;

    @ApiModelProperty(value = "重考原因")
    @TableField(value = "reason")
    private ReexamReasonEnum reason;

    @ApiModelProperty(value = "状态，0：无需审核，1：待审核，2：已审核")
    @TableField(value = "status")
    private Integer status;

    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(value = "审核人id")
    @TableField(value = "auditing_id")
    private Long auditingId;

    @ApiModelProperty(value = "审核状态，0：通过，1：不通过")
    @TableField(value = "auditing_status")
    private Integer auditingStatus;

    @ApiModelProperty(value = "审核时间")
    @TableField(value = "auditing_time")
    private Long auditingTime;

    @ApiModelProperty(value = "审批意见")
    @TableField(value = "auditing_suggest")
    private String auditingSuggest;

    @ApiModelProperty(value = "备注")
    @TableField(value = "remark")
    private String remark;

    public TEExamReexam() {

    }

    public TEExamReexam(Long examId, Long examActivityId, Long examStudentId, Integer model, ReexamReasonEnum reason,
            Integer status, String remark) {
        setId(UidUtil.nextId());
        this.examId = examId;
        this.examActivityId = examActivityId;
        this.examStudentId = examStudentId;
        this.model = model;
        this.reason = reason;
        this.status = status;
        this.remark = remark;
    }

    public static long getSerialVersionUID() {
        return serialVersionUID;
    }

    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 Integer getModel() {
        return model;
    }

    public void setModel(Integer model) {
        this.model = model;
    }

    public ReexamReasonEnum getReason() {
        return reason;
    }

    public void setReason(ReexamReasonEnum reason) {
        this.reason = reason;
    }

    public Integer getStatus() {
        return status;
    }

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

    public Long getAuditingId() {
        return auditingId;
    }

    public void setAuditingId(Long auditingId) {
        this.auditingId = auditingId;
    }

    public Integer getAuditingStatus() {
        return auditingStatus;
    }

    public void setAuditingStatus(Integer auditingStatus) {
        this.auditingStatus = auditingStatus;
    }

    public Long getAuditingTime() {
        return auditingTime;
    }

    public void setAuditingTime(Long auditingTime) {
        this.auditingTime = auditingTime;
    }

    public String getAuditingSuggest() {
        return auditingSuggest;
    }

    public void setAuditingSuggest(String auditingSuggest) {
        this.auditingSuggest = auditingSuggest;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }
}
