package com.ruoyi.learn.domain;

import java.math.BigDecimal;
import java.util.List;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 试题对象 learn_questions
 *
 * @author ruoyi
 * @date 2025-09-18
 */
public class LearnQuestions extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** $column.columnComment */
    private Long id;

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

    /** 选项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;

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

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

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private String answer1;

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

    /** 类型（1判断题；2单选题；3多选题；4主观题，简答题） */
    @Excel(name = "类型", readConverterExp = "1=判断题；2单选题；3多选题；4主观题，简答题")
    private String qtpye;

    /** 学科Id */
    @Excel(name = "学科Id")
    private Long subjectId;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Long paperId;

    /** 知识点 */
    @Excel(name = "知识点")
    private Long knowledgeId;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private BigDecimal diff;

    /** 试题在题库中的相似度，相似度越高，质量越低 */
    @Excel(name = "试题在题库中的相似度，相似度越高，质量越低")
    private Long similarity;

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

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Long knowId;

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

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private String knowledges;


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

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

    /** 试题类型：1，月考；2，模拟考；3，中考；4，高考；5，学业考试；6，其他 */
    @Excel(name = "试题类型：1，月考；2，模拟考；3，中考；4，高考；5，学业考试；6，其他")
    private String paperTpye;

    /** 来源（1gzdz，2dk，3self，4自制） */
    @Excel(name = "来源", readConverterExp = "1=gzdz，2dk，3self，4自制")
    private String source;

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

    /** 是否存在图片水印 */
    @Excel(name = "是否存在图片水印")
    private Integer isSub;

    /** 是否常规题，如果选择题无法正常提取标准答案或者选项，有小题的答题无法正常提取小题，则isNormal为0，否则为1 */
    @Excel(name = "是否常规题，如果选择题无法正常提取标准答案或者选项，有小题的答题无法正常提取小题，则isNormal为0，否则为1")
    private Integer isNormal;

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

    /** 试题的tiid，结合fromsite进行同网站试题排重，用于增量更新 */
    @Excel(name = "试题的tiid，结合fromsite进行同网站试题排重，用于增量更新")
    private String tiid;

    /** 试题题干的md5值 */
    @Excel(name = "试题题干的md5值")
    private String md5;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Long isunique;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private String md52;

    /** 得分 */
    @Excel(name = "得分")
    private Integer score;

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

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private Long number;

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private String paperTypeTitle;

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

    /** 试题-材料题题干 */
    @Excel(name = "试题-材料题题干")
    private String title0;

    /** 试题-材料题题干 */
    @Excel(name = "试题-材料题题干")
    private String title1;

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

    /** $column.columnComment */
    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
    private String answer0;

    /** 是否更新 */
    @Excel(name = "是否更新")
    private Long isUpdate;

    /** 子题类型 */
    @Excel(name = "子题类型")
    private String isSubType;

    @Excel(name = "题型")
    private Integer typeId;
    private Long userId;
    boolean collect;

    private Integer subCnt;
    private List<LearnKnowledgeTree2> knowledgeTrees;
    public List<LearnKnowledgeTree2> getKnowledgeTrees() {
        return knowledgeTrees;
    }

    public void setKnowledgeTrees(List<LearnKnowledgeTree2> knowledgeTrees) {
        this.knowledgeTrees = knowledgeTrees;
    }

    public Integer getSubCnt() {
        return subCnt;
    }

    public void setSubCnt(Integer subCnt) {
        this.subCnt = subCnt;
    }

    public Integer getTypeId() {
        return typeId;
    }

    public void setTypeId(Integer typeId) {
        this.typeId = typeId;
    }

    public boolean isCollect() {
        return collect;
    }

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

    public Long getUserId() {
        return userId;
    }

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

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

    public Long getId()
    {
        return id;
    }

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

    public String getTitle()
    {
        return title;
    }

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

    public String getOptionA()
    {
        return optionA;
    }

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

    public String getOptionB()
    {
        return optionB;
    }

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

    public String getOptionC()
    {
        return optionC;
    }

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

    public String getOptionD()
    {
        return optionD;
    }

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

    public String getOptionE()
    {
        return optionE;
    }

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

    public String getOptionF()
    {
        return optionF;
    }

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

    public String getOptionG()
    {
        return optionG;
    }

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

    public String getAnswer1()
    {
        return answer1;
    }

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

    public String getAnswer2()
    {
        return answer2;
    }

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

    public String getQtpye()
    {
        return qtpye;
    }

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

    public Long getSubjectId()
    {
        return subjectId;
    }

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

    public Long getPaperId()
    {
        return paperId;
    }

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

    public Long getKnowledgeId()
    {
        return knowledgeId;
    }

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

    public BigDecimal getDiff()
    {
        return diff;
    }

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

    public Long getSimilarity()
    {
        return similarity;
    }

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

    public String getParse()
    {
        return parse;
    }

    public void setKnowId(Long knowId)
    {
        this.knowId = knowId;
    }

    public Long getKnowId()
    {
        return knowId;
    }

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

    public Long getGradeId()
    {
        return gradeId;
    }

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

    public String getKnowledges()
    {
        return knowledges;
    }

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

    public String getArea()
    {
        return area;
    }

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

    public Long getYear()
    {
        return year;
    }

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

    public String getPaperTpye()
    {
        return paperTpye;
    }

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

    public String getSource()
    {
        return source;
    }

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

    public String getFromSite()
    {
        return fromSite;
    }

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

    public Integer getIsSub()
    {
        return isSub;
    }

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

    public Integer getIsNormal()
    {
        return isNormal;
    }

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

    public Integer getIsKonw()
    {
        return isKonw;
    }

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

    public String getTiid()
    {
        return tiid;
    }

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

    public String getMd5()
    {
        return md5;
    }

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

    public Long getIsunique()
    {
        return isunique;
    }

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

    public String getMd52()
    {
        return md52;
    }

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

    public Integer getScore()
    {
        return score;
    }

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

    public String getOptions()
    {
        return options;
    }

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

    public Long getNumber()
    {
        return number;
    }

    public void setPaperTypeTitle(String paperTypeTitle)
    {
        this.paperTypeTitle = paperTypeTitle;
    }

    public String getPaperTypeTitle()
    {
        return paperTypeTitle;
    }

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

    public String getOptions0()
    {
        return options0;
    }

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

    public String getTitle0()
    {
        return title0;
    }

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

    public String getTitle1()
    {
        return title1;
    }

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

    public String getParse0()
    {
        return parse0;
    }

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

    public String getAnswer0()
    {
        return answer0;
    }

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

    public Long getIsUpdate()
    {
        return isUpdate;
    }

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

    public String getIsSubType()
    {
        return isSubType;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("title", getTitle())
            .append("optionA", getOptionA())
            .append("optionB", getOptionB())
            .append("optionC", getOptionC())
            .append("optionD", getOptionD())
            .append("optionE", getOptionE())
            .append("optionF", getOptionF())
            .append("optionG", getOptionG())
            .append("answer1", getAnswer1())
            .append("answer2", getAnswer2())
            .append("qtpye", getQtpye())
            .append("subjectId", getSubjectId())
            .append("paperId", getPaperId())
            .append("knowledgeId", getKnowledgeId())
            .append("diff", getDiff())
            .append("similarity", getSimilarity())
            .append("parse", getParse())
            .append("knowId", getKnowId())
            .append("gradeId", getGradeId())
            .append("knowledges", getKnowledges())
            .append("area", getArea())
            .append("year", getYear())
            .append("paperTpye", getPaperTpye())
            .append("source", getSource())
            .append("fromSite", getFromSite())
            .append("isSub", getIsSub())
            .append("isNormal", getIsNormal())
            .append("isKonw", getIsKonw())
            .append("tiid", getTiid())
            .append("md5", getMd5())
            .append("isunique", getIsunique())
            .append("md52", getMd52())
            .append("createTime", getCreateTime())
            .append("score", getScore())
            .append("options", getOptions())
            .append("number", getNumber())
            .append("paperTypeTitle", getPaperTypeTitle())
            .append("options0", getOptions0())
            .append("title0", getTitle0())
            .append("title1", getTitle1())
            .append("parse0", getParse0())
            .append("answer0", getAnswer0())
            .append("isUpdate", getIsUpdate())
            .append("isSubType", getIsSubType())
            .toString();
    }
}
