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.ExamNumberStyleEnum;
import com.qmth.distributed.print.business.enums.PaperTypeEnum;
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("basic_card_rule")
public class BasicCardRule 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;

    /**
     * 题卡规则名称
     */
    private String name;
    /**
     * PRINT-印刷条码，PASTE-粘贴条码，FILL-卡号填涂
     */
    @TableField("exam_number_style")
    private ExamNumberStyleEnum examNumberStyle;

    /**
     * 考号位数
     */
    @TableField("exam_number_digit")
    private Integer examNumberDigit;

    /**
     * PRINT-印刷条码，FILL-卡号填涂
     */
    @TableField("paper_type")
    private PaperTypeEnum paperType;
    /**
     * 0-禁用，1-启用
     */
    @TableField("exam_absent")
    private Boolean examAbsent;
    /**
     * 0-禁用，1-启用
     */
    @TableField("write_sign")
    private Boolean writeSign;

    /**
     * 0-禁用，1-启用
     */
    @TableField("discipline")
    private Boolean discipline;
    /**
     * 启用考生承诺书:0-禁用，1-启用
     */
    @TableField("undertaking_enable")
    private Boolean undertakingEnable;
    /**
     * 考生承诺书内容
     */
    @TableField(value = "undertaking_body", updateStrategy = FieldStrategy.IGNORED)
    private String undertakingBody;
    /**
     * 必选字段
     */
    @TableField("required_fields")
    private String requiredFields;
    /**
     * 扩展字段
     */
    @TableField("extend_fields")
    private String extendFields;

    /**
     * 变量信息填充字段
     */
    @TableField("fill_fields")
    private String fillFields;
    /**
     * 题卡标题规则
     */
    @TableField("title_rule")
    private String titleRule;

    /**
     * 一级题卡副标题
     */
    @TableField("first_level_subheading")
    private String firstLevelSubheading;

    /**
     * 二级题卡副标题
     */
    @TableField("second_level_subheading")
    private String secondLevelSubheading;

    /**
     * 注意事项
     */
    private String attention;
    /**
     * 客观题注意事项
     */
    @TableField("objective_attention")
    private String objectiveAttention;
    /**
     * 主观题注意事项
     */
    @TableField("subjective_attention")
    private String subjectiveAttention;
    /**
     * 0-禁用，1-启用
     */
    private Boolean enable = true;
    /**
     * 备注
     */
    private String remark;

    @ApiModelProperty(value = "卡号填涂位数")
    @TableField("fill_number")
    private Integer fillNumber;

    @JsonSerialize(using = ToStringSerializer.class)
    @TableField(exist = false)
    private Long[] orgIds;

    public Integer getFillNumber() {
        return fillNumber;
    }

    public void setFillNumber(Integer fillNumber) {
        this.fillNumber = fillNumber;
    }

    public static long getSerialVersionUID() {
        return serialVersionUID;
    }

    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 getName() {
        return name;
    }

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

    public ExamNumberStyleEnum getExamNumberStyle() {
        return examNumberStyle;
    }

    public void setExamNumberStyle(ExamNumberStyleEnum examNumberStyle) {
        this.examNumberStyle = examNumberStyle;
    }

    public Integer getExamNumberDigit() {
        return examNumberDigit;
    }

    public void setExamNumberDigit(Integer examNumberDigit) {
        this.examNumberDigit = examNumberDigit;
    }

    public PaperTypeEnum getPaperType() {
        return paperType;
    }

    public void setPaperType(PaperTypeEnum paperType) {
        this.paperType = paperType;
    }

    public Boolean getExamAbsent() {
        return examAbsent;
    }

    public void setExamAbsent(Boolean examAbsent) {
        this.examAbsent = examAbsent;
    }

    public Boolean getWriteSign() {
        return writeSign;
    }

    public void setWriteSign(Boolean writeSign) {
        this.writeSign = writeSign;
    }

    public Boolean getDiscipline() {
        return discipline;
    }

    public void setDiscipline(Boolean discipline) {
        this.discipline = discipline;
    }

    public Boolean getUndertakingEnable() {
        return undertakingEnable;
    }

    public void setUndertakingEnable(Boolean undertakingEnable) {
        this.undertakingEnable = undertakingEnable;
    }

    public String getUndertakingBody() {
        return undertakingBody;
    }

    public void setUndertakingBody(String undertakingBody) {
        this.undertakingBody = undertakingBody;
    }

    public String getRequiredFields() {
        return requiredFields;
    }

    public void setRequiredFields(String requiredFields) {
        this.requiredFields = requiredFields;
    }

    public String getExtendFields() {
        return extendFields;
    }

    public void setExtendFields(String extendFields) {
        this.extendFields = extendFields;
    }

    public String getFillFields() {
        return fillFields;
    }

    public void setFillFields(String fillFields) {
        this.fillFields = fillFields;
    }

    public String getTitleRule() {
        return titleRule;
    }

    public void setTitleRule(String titleRule) {
        this.titleRule = titleRule;
    }

    public String getFirstLevelSubheading() {
        return firstLevelSubheading;
    }

    public void setFirstLevelSubheading(String firstLevelSubheading) {
        this.firstLevelSubheading = firstLevelSubheading;
    }

    public String getSecondLevelSubheading() {
        return secondLevelSubheading;
    }

    public void setSecondLevelSubheading(String secondLevelSubheading) {
        this.secondLevelSubheading = secondLevelSubheading;
    }

    public String getAttention() {
        return attention;
    }

    public void setAttention(String attention) {
        this.attention = attention;
    }

    public String getObjectiveAttention() {
        return objectiveAttention;
    }

    public void setObjectiveAttention(String objectiveAttention) {
        this.objectiveAttention = objectiveAttention;
    }

    public String getSubjectiveAttention() {
        return subjectiveAttention;
    }

    public void setSubjectiveAttention(String subjectiveAttention) {
        this.subjectiveAttention = subjectiveAttention;
    }

    public Boolean getEnable() {
        return enable;
    }

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

    public String getRemark() {
        return remark;
    }

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

    public Long[] getOrgIds() {
        return orgIds;
    }

    public void setOrgIds(Long[] orgIds) {
        this.orgIds = orgIds;
    }
}
