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

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.distributed.print.business.enums.ExamDataSourceEnum;
import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;
import com.qmth.teachcloud.common.base.BaseEntity;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;

/**
 * <p>
 * 考务数据
 * </p>
 *
 * @author xf
 * @since 2021-03-23
 */
@TableName("exam_detail")
public class ExamDetail 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 = "org_id", updateStrategy = FieldStrategy.IGNORED)
    private Long orgId;

    /**
     * 印刷计划ID
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @TableField("print_plan_id")
    private Long printPlanId;

    @TableField("print_plan_name")
    private String printPlanName;
    /**
     * 考试日期
     */
    @TableField("exam_start_time")
    private Long examStartTime;

    @TableField("exam_end_time")
    private Long examEndTime;

    @TableField("exam_place")
    private String examPlace;
    /**
     * 总科次：考场总科次
     */
    @TableField("total_subjects")
    private Integer totalSubjects;

    @TableField("exam_room")
    private String examRoom;

    @TableField("print_progress")
    private Double printProgress;
    /**
     * 打印员：一个考场只能被一个打印员认领
     */
    @TableField("print_user")
    private String printUser;
    /**
     * 考场代码：卷袋贴、签到表上条码
     */
    @TableField("package_code")
    private String packageCode;

    @TableField("pages_a3")
    private Integer pagesA3;

    @TableField("pages_a4")
    private Integer pagesA4;

    private Boolean validate;

    private ExamDetailStatusEnum status;

    @TableField("print_start_time")
    private Long printStartTime;

    @TableField("print_end_time")
    private Long printEndTime;

    @ApiModelProperty(value = "合成pdf的A3附件id")
    @TableField(value = "attachment_id")
    private Long attachmentId;

    @ApiModelProperty(value = "题卡合成pdf的A3附件id")
    @TableField(value = "card_attachment_id")
    private Long cardAttachmentId;

    @ApiModelProperty(value = "印品附件路径")
    @TableField("attachment_path")
    private String attachmentPath;

    @ApiModelProperty(value = "来源")
    @TableField("exam_data_source")
    private ExamDataSourceEnum examDataSource;

    @ApiModelProperty(value = "是否正常，true正常，false做废")
    @TableField("normal")
    private Boolean normal;

    @ApiModelProperty(value = "印刷室ID")
    @TableField("print_house_id")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long printHouseId;

    @ApiModelProperty(value = "模式2，考生数量（打印数量）")
    @TableField("print_count")
    private Integer printCount;



    public Long getSchoolId() {
        return schoolId;
    }

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

    public Long getOrgId() {
        return orgId;
    }

    public void setOrgId(Long orgId) {
        this.orgId = orgId;
    }

    public String getAttachmentPath() {
        return attachmentPath;
    }

    public void setAttachmentPath(String attachmentPath) {
        this.attachmentPath = attachmentPath;
    }

    public static long getSerialVersionUID() {
        return serialVersionUID;
    }

    public Long getAttachmentId() {
        return attachmentId;
    }

    public void setAttachmentId(Long attachmentId) {
        this.attachmentId = attachmentId;
    }

    public Long getPrintPlanId() {
        return printPlanId;
    }

    public void setPrintPlanId(Long printPlanId) {
        this.printPlanId = printPlanId;
    }

    public String getPrintPlanName() {
        return printPlanName;
    }

    public void setPrintPlanName(String printPlanName) {
        this.printPlanName = printPlanName;
    }

    public Long getExamStartTime() {
        return examStartTime;
    }

    public void setExamStartTime(Long examStartTime) {
        this.examStartTime = examStartTime;
    }

    public Long getExamEndTime() {
        return examEndTime;
    }

    public void setExamEndTime(Long examEndTime) {
        this.examEndTime = examEndTime;
    }

    public String getExamPlace() {
        return examPlace;
    }

    public void setExamPlace(String examPlace) {
        this.examPlace = examPlace;
    }

    public Integer getTotalSubjects() {
        return totalSubjects;
    }

    public void setTotalSubjects(Integer totalSubjects) {
        this.totalSubjects = totalSubjects;
    }

    public String getExamRoom() {
        return examRoom;
    }

    public void setExamRoom(String examRoom) {
        this.examRoom = examRoom;
    }

    public Double getPrintProgress() {
        return printProgress;
    }

    public void setPrintProgress(Double printProgress) {
        this.printProgress = printProgress;
    }

    public String getPrintUser() {
        return printUser;
    }

    public void setPrintUser(String printUser) {
        this.printUser = printUser;
    }

    public String getPackageCode() {
        return packageCode;
    }

    public void setPackageCode(String packageCode) {
        this.packageCode = packageCode;
    }

    public Integer getPagesA3() {
        return pagesA3;
    }

    public void setPagesA3(Integer pagesA3) {
        this.pagesA3 = pagesA3;
    }

    public Integer getPagesA4() {
        return pagesA4;
    }

    public void setPagesA4(Integer pagesA4) {
        this.pagesA4 = pagesA4;
    }

    public Boolean getValidate() {
        return validate;
    }

    public void setValidate(Boolean validate) {
        this.validate = validate;
    }

    public ExamDetailStatusEnum getStatus() {
        return status;
    }

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

    public Long getPrintStartTime() {
        return printStartTime;
    }

    public void setPrintStartTime(Long printStartTime) {
        this.printStartTime = printStartTime;
    }

    public Long getPrintEndTime() {
        return printEndTime;
    }

    public void setPrintEndTime(Long printEndTime) {
        this.printEndTime = printEndTime;
    }

    public ExamDataSourceEnum getExamDataSource() {
        return examDataSource;
    }

    public void setExamDataSource(ExamDataSourceEnum examDataSource) {
        this.examDataSource = examDataSource;
    }

    public Boolean getNormal() {
        return normal;
    }

    public void setNormal(Boolean normal) {
        this.normal = normal;
    }

    public Long getPrintHouseId() {
        return printHouseId;
    }

    public void setPrintHouseId(Long printHouseId) {
        this.printHouseId = printHouseId;
    }

    public Long getCardAttachmentId() {
        return cardAttachmentId;
    }

    public void setCardAttachmentId(Long cardAttachmentId) {
        this.cardAttachmentId = cardAttachmentId;
    }

    public Integer getPrintCount() {
        return printCount;
    }

    public void setPrintCount(Integer printCount) {
        this.printCount = printCount;
    }
}
