package com.ruoyi.ie.domain;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.utils.StringUtils;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.util.List;

/**
 * 试题对象 questions
 *
 * @author mingxue
 * @date 2021-06-19
 */
public class Questions extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    private List<Long> chapterIds;
    private Integer editionId;
    private Integer chapterId;
    private Integer chapterOrder;

    private Integer level;
    private Integer isUpdate;
    private Integer unitOrder;
    private Integer sectionOrder;
    private Integer number;
    private String paperTitle;

    @Excel(name = "知识点")
    private Long knowledgeId;
    private Integer subjectId;

    private Long id;

    private Long seq;

    /** 试题-题干 */
    @Excel(name = "试题-题干")
    private String title;
    private String title1;
    @JsonIgnore
    private String title0;

    @JsonIgnore
    private String options0;
    @JsonIgnore
    private String parse0;
    @JsonIgnore
    private String answer0;
    @JsonIgnore
    private String options;

    /** 选项A */
    @Excel(name = "选项A")
    private String optionA;

    /** 选项B */
    @Excel(name = "选项B")
    private String optionB;

    /** 选项C */
    @Excel(name = "选项C")
    private String optionC;

    /** 选项D */
    @Excel(name = "选项D")
    private String optionD;

    /** 选项E */
    @Excel(name = "选项E")
    private String optionE;
    private String optionF;
    private String optionG;

    private String answers;

    /** 支持自动阅卷判断的答案（客观题可用） */
    @Excel(name = "支持自动阅卷判断的答案", readConverterExp = "客=观题可用")
    private String answer1;

    /** 非标准格式答案或含部分过程说明的答案 */
    @Excel(name = "非标准格式答案或含部分过程说明的答案")
    private String answer2;

    /** 试题解析 */
    @Excel(name = "试题解析")
    private String parse;

    /** 试题题型 */
    @Excel(name = "试题题型")
    private String qtpye;

    /** $column.columnComment */
    @Excel(name = "试题题型")
    private Integer diff;

    /** 如果是听力题，存储了对应听力文件位置 */
    @Excel(name = "如果是听力题，存储了对应听力文件位置")
    private String md5;


    /** 年级ID */
    @Excel(name = "年级ID")
    private Integer gradeId;

    /** $column.columnComment */
    @Excel(name = "年级ID")
    private String knowledges;

    /** 试题区域 */
    @Excel(name = "试题区域")
    private String area;

    /** 试题年份 */
    @Excel(name = "试题年份")
    private Integer year;

    /** 试题类型：35，期中；38，同步；38，单元检测；36，月考；32，模拟考试；31，中考；34，期末考试；33，高考；37，其他 */
    @Excel(name = "试题类型：35，期中；38，同步；38，单元检测；36，月考；32，模拟考试；31，中考；34，期末考试；33，高考；37，其他")
    private String paperTpye;

    /** 试题来源(试卷) */
    @Excel(name = "试题来源(试卷)")
    private String source;

    /** 试题来源（渠道商） */
    @Excel(name = "试题来源", readConverterExp = "渠=道商")
    private String fromSite;

    /** 是否存在子题，1：存在 关联subquestions.pid */
    @Excel(name = "是否存在子题，1：存在 关联subquestions.pid")
    private Integer isSub;

    private Integer isSubType;
    private List<Questions> subquestions;

    /** 是否支持自动阅卷 1：支持 */
    @Excel(name = "是否支持自动阅卷 1：支持")
    private Integer isNormal;

    /** 是否匹配章节知识点，1匹配，0不匹配 */
    @Excel(name = "是否匹配章节知识点，1匹配，0不匹配")
    private Integer isKonw;

    /** 试题tiid结合渠道商字段处理 */
    @Excel(name = "试题tiid结合渠道商字段处理")
    private String tiid;

    /** 试题更新日期 */
    @Excel(name = "试题更新日期")
    private Integer similarity;

    /** 是否支持选项分离：1支持 */
    @Excel(name = "是否支持选项分离：1支持")
    private Integer isunique;

    /** 试题md5编码 */
    @Excel(name = "试题md5编码")
    private String md52;

    @Excel(name = "分值")
    private Long score;
    @Excel(name = "收藏")
    boolean collect;

    private String chapterName;
    private String knowledgeName;

    private List<String> knowledgeTreeOldIds;
    private List<String> chapterTreeOldIds;
    private List<Long> knowledgeIds;
    private List<Long> knowledgeBasicIds;
    private String subjectName;
    private String type;

    private Long userId;
    private String customerCode;

    private Boolean filterDone;

    private Long paperId;

    // 原始的title，没有经过拼接的
    private String originTitle;

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public Integer getLevel() {
        return level;
    }

    public void setLevel(Integer level) {
        this.level = level;
    }
    public List<Long> getChapterIds() {
        return chapterIds;
    }

    public void setChapterIds(List<Long> chapterIds) {
        this.chapterIds = chapterIds;
    }

    public Integer getChapterOrder() {
        return chapterOrder;
    }

    public void setChapterOrder(Integer chapterOrder) {
        this.chapterOrder = chapterOrder;
    }

    public Integer getUnitOrder() {
        return unitOrder;
    }

    public void setUnitOrder(Integer unitOrder) {
        this.unitOrder = unitOrder;
    }

    public Integer getSectionOrder() {
        return sectionOrder;
    }

    public void setSectionOrder(Integer sectionOrder) {
        this.sectionOrder = sectionOrder;
    }

    public Integer getNumber() {
        return number;
    }

    public void setNumber(Integer number) {
        this.number = number;
    }

    public String getPaperTitle() {
        return paperTitle;
    }

    public void setPaperTitle(String paperTitle) {
        this.paperTitle = paperTitle;
    }

    public Integer getEditionId() {
        return editionId;
    }

    public void setEditionId(Integer editionId) {
        this.editionId = editionId;
    }

    public Integer getChapterId() {
        return chapterId;
    }

    public void setChapterId(Integer chapterId) {
        this.chapterId = chapterId;
    }

    public Long getKnowledgeId() {
        return knowledgeId;
    }

    public void setKnowledgeId(Long knowledgeId) {
        this.knowledgeId = knowledgeId;
    }

    public Integer getSubjectId() {
        return subjectId;
    }

    public void setSubjectId(Integer subjectId) {
        this.subjectId = subjectId;
    }

    public Long getId() {
        return id;
    }

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

    public Long getSeq() {
        return seq;
    }

    public void setSeq(Long seq) {
        this.seq = seq;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getOptionA() {
        return optionA;
    }

    public void setOptionA(String optionA) {
        this.optionA = optionA;
    }

    public String getOptionB() {
        return optionB;
    }

    public void setOptionB(String optionB) {
        this.optionB = optionB;
    }

    public String getOptionC() {
        return optionC;
    }

    public void setOptionC(String optionC) {
        this.optionC = optionC;
    }

    public String getOptionD() {
        return optionD;
    }

    public void setOptionD(String optionD) {
        this.optionD = optionD;
    }

    public String getOptionE() {
        return optionE;
    }

    public void setOptionE(String optionE) {
        this.optionE = optionE;
    }

    public String getAnswers() {
        return answers;
    }

    public void setAnswers(String answers) {
        this.answers = answers;
    }

    public String getAnswer1() {
        return answer1;
    }

    public void setAnswer1(String answer1) {
        this.answer1 = answer1;
    }

    public String getAnswer2() {
        return answer2;
    }

    public void setAnswer2(String answer2) {
        this.answer2 = answer2;
    }

    public String getParse() {
        return parse;
    }

    public void setParse(String parse) {
        this.parse = parse;
    }

    public String getQtpye() {
        return qtpye;
    }

    public void setQtpye(String qtpye) {
        this.qtpye = qtpye;
    }

    public Integer getDiff() {
        return diff;
    }

    public void setDiff(Integer diff) {
        this.diff = diff;
    }

    public String getMd5() {
        return md5;
    }

    public void setMd5(String md5) {
        this.md5 = md5;
    }

    public Integer getGradeId() {
        return gradeId;
    }

    public void setGradeId(Integer gradeId) {
        this.gradeId = gradeId;
    }

    public String getKnowledges() {
        return knowledges;
    }

    public void setKnowledges(String knowledges) {
        this.knowledges = knowledges;
    }

    public String getArea() {
        return area;
    }

    public void setArea(String area) {
        this.area = area;
    }

    public Integer getYear() {
        return year;
    }

    public void setYear(Integer year) {
        this.year = year;
    }

    public String getPaperTpye() {
        return paperTpye;
    }

    public void setPaperTpye(String paperTpye) {
        this.paperTpye = paperTpye;
    }

    public String getSource() {
        return source;
    }

    public void setSource(String source) {
        this.source = source;
    }

    public String getFromSite() {
        return fromSite;
    }

    public void setFromSite(String fromSite) {
        this.fromSite = fromSite;
    }

    public Integer getIsSub() {
        return isSub;
    }

    public void setIsSub(Integer isSub) {
        this.isSub = isSub;
    }

    public Integer getIsSubType() {
        return isSubType;
    }

    public void setIsSubType(Integer isSubType) {
        this.isSubType = isSubType;
    }

    public List<Questions> getSubquestions() {
        return subquestions;
    }

    public void setSubquestions(List<Questions> subquestions) {
        this.subquestions = subquestions;
    }

    public Integer getIsNormal() {
        return isNormal;
    }

    public void setIsNormal(Integer isNormal) {
        this.isNormal = isNormal;
    }

    public Integer getIsKonw() {
        return isKonw;
    }

    public void setIsKonw(Integer isKonw) {
        this.isKonw = isKonw;
    }

    public String getTiid() {
        return tiid;
    }

    public void setTiid(String tiid) {
        this.tiid = tiid;
    }

    public Integer getSimilarity() {
        return similarity;
    }

    public void setSimilarity(Integer similarity) {
        this.similarity = similarity;
    }

    public Integer getIsunique() {
        return isunique;
    }

    public void setIsunique(Integer isunique) {
        this.isunique = isunique;
    }

    public String getMd52() {
        return md52;
    }

    public void setMd52(String md52) {
        this.md52 = md52;
    }

    public Long getScore() {
        return score;
    }

    public void setScore(Long score) {
        this.score = score;
    }

    public boolean isCollect() {
        return collect;
    }

    public void setCollect(boolean collect) {
        this.collect = collect;
    }

    public String getChapterName() {
        return chapterName;
    }

    public void setChapterName(String chapterName) {
        this.chapterName = chapterName;
    }

    public String getKnowledgeName() {
        return knowledgeName;
    }

    public void setKnowledgeName(String knowledgeName) {
        this.knowledgeName = knowledgeName;
    }

    public List<String> getKnowledgeTreeOldIds() {
        return knowledgeTreeOldIds;
    }

    public void setKnowledgeTreeOldIds(List<String> knowledgeTreeOldIds) {
        this.knowledgeTreeOldIds = knowledgeTreeOldIds;
    }

    public List<String> getChapterTreeOldIds() {
        return chapterTreeOldIds;
    }

    public void setChapterTreeOldIds(List<String> chapterTreeOldIds) {
        this.chapterTreeOldIds = chapterTreeOldIds;
    }

    public List<Long> getKnowledgeIds() {
        return knowledgeIds;
    }

    public void setKnowledgeIds(List<Long> knowledgeIds) {
        this.knowledgeIds = knowledgeIds;
    }

    public List<Long> getKnowledgeBasicIds() {
        return knowledgeBasicIds;
    }

    public void setKnowledgeBasicIds(List<Long> knowledgeBasicIds) {
        this.knowledgeBasicIds = knowledgeBasicIds;
    }

    public String getSubjectName() {
        return subjectName;
    }

    public void setSubjectName(String subjectName) {
        this.subjectName = subjectName;
    }

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public String getCustomerCode() {
        return customerCode;
    }

    public void setCustomerCode(String customerCode) {
        this.customerCode = customerCode;
    }

    public Boolean getFilterDone() {
        return filterDone;
    }

    public void setFilterDone(Boolean filterDone) {
        this.filterDone = filterDone;
    }

    public Long getPaperId() {
        return paperId;
    }

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

    public String getOriginTitle() {
        return originTitle;
    }

    public void setOriginTitle(String originTitle) {
        this.originTitle = originTitle;
    }

    public String getOptionF() {
        return optionF;
    }

    public void setOptionF(String optionF) {
        this.optionF = optionF;
    }

    public String getOptionG() {
        return optionG;
    }

    public void setOptionG(String optionG) {
        this.optionG = optionG;
    }

    public String getTitle0() {
        return title0;
    }

    public void setTitle0(String title0) {
        this.title0 = title0;
    }

    public String getOptions() {
        return options;
    }

    public void setOptions(String options) {
        this.options = options;
    }

    public String getOptions0() {
        return options0;
    }

    public void setOptions0(String options0) {
        this.options0 = options0;
    }

    public String getParse0() {
        return parse0;
    }

    public void setParse0(String parse0) {
        this.parse0 = parse0;
    }

    public String getAnswer0() {
        return answer0;
    }

    public void setAnswer0(String answer0) {
        this.answer0 = answer0;
    }

    public Integer getIsUpdate() {
        return isUpdate;
    }

    public void setIsUpdate(Integer isUpdate) {
        this.isUpdate = isUpdate;
    }

    public String getTitle1() {
        return title1;
    }

    public void setTitle1(String title1) {
        this.title1 = title1;
    }
}
