package com.qxueyou.scc.exercise.model; import java.io.Serializable; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.Transient; import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.OrderBy; import org.hibernate.annotations.Where; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.util.CollectionUtils; import com.fasterxml.jackson.annotation.JsonIgnore; import com.qxueyou.scc.base.model.ITrace; /** * The persistent class for the exercise_item database table. * */ @Entity @Table(name="exercise_item") @NamedQuery(name="ExerciseItem.findAll", query="SELECT e FROM ExerciseItem e") public class ExerciseItem implements Serializable,ITrace { private static final long serialVersionUID = 1L; @Id @GeneratedValue(generator = "hibernate-uuid") @GenericGenerator(name = "hibernate-uuid", strategy = "uuid") @Column(name="EXERCISE_ID", unique=true, nullable=false, length=32) private String exerciseId; @Column(name="CHAPTER_ID", length=32) private String chapterId; /** 来源练习id **/ @Column(name="ORGI_EXERCISE_ID", length=32) private String orgiExerciseId; @Column(name="CREATE_ID", nullable=false, length=32) @JsonIgnore private String createId; @Column(name="CREATE_TIME", nullable=false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonIgnore private Date createTime; @Column(name="CREATOR", nullable=false, length=100) @JsonIgnore private String creator; @Column(name="DELETE_FLAG", nullable=false) @JsonIgnore private boolean deleteFlag; /** 班级课表ID */ @Column(name="CLASS_SCHEDULE_ID", length=32) private String classScheduleId; @Column(name="TITLE", length=2000) private String title; @Column(name="TYPE") private short type; /* * 单选 */ public static short TYPE_SINGLE_SELECT = 1; /* * 多选 */ public static short TYPE_MULTI_SELECT = 2; /* * 判断题 */ public static short TYPE_TRUE_OR_FALSE = 3; /* * 问答题 */ public static short TYPE_ESSAY_QUESTION = 4; /* * 分值题 */ public static short TYPE_SCORE = 5; /* * 量值题 */ public static short TYPE_MEASUREMENT = 6; /* * 附件题 */ public static short TYPE_ATTACHMENT = 7; /* * 填空题 */ public static short TYPE_FILL_BLANKS = 8; @Column(name="UPDATE_ID", length=32) @JsonIgnore private String updateId; @Column(name="UPDATE_TIME", nullable=false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; @Column(name="UPDATOR", length=100) @JsonIgnore private String updator; /** 正确答案 */ @Column(name="ANSWER") private String answer; // @ManyToMany(fetch = FetchType.LAZY, mappedBy = "items") // @JsonIgnore // private List groups; @OneToMany(fetch = FetchType.LAZY, mappedBy = "exerciseItem") @Where(clause="DELETE_FLAG=0") @OrderBy(clause="OPTION_ORDER ASC") private List options; @OneToMany(fetch = FetchType.LAZY, mappedBy = "exerciseItem") @Where(clause="DELETE_FLAG=0") @OrderBy(clause="EXERCISE_ITEM_ANSWER ASC") private List scores; @ManyToOne(cascade = CascadeType.ALL,fetch = FetchType.LAZY) @JoinColumn(name = "CHAPTER_ID",referencedColumnName="CHAPTER_ID",updatable=false,insertable=false) @JsonIgnore private ExerciseChapter chapter; /** 用户答题记录**/ @Transient private List exerciseItemAnswerU; /** 是否必答 **/ @Column(name="MUST_ANSWER", nullable=true) private boolean mustAnswer; /** 组Id */ @Transient private String exerciseGroupId; /** 记录Id 错题、收藏为bookId */ @Transient private String exerciseRecordId; /** 错题、收藏为主键Id */ @Transient private String exerciseExtendId; /** 习题编号 */ @Transient private Integer itemNo; /** 习题状态 1:未提交 1:提交 */ @Transient private String status; /** 习题分析结果 */ @Transient private ExerciseAnalisisResult analisisResult; @Transient private List analysises; @Transient private List imgs; /** 文档中的序号,数据库中存储的序号(导入) **/ @Transient private Integer docNo; /** 关联表ID **/ @Transient private String reId; /** 每题最大分数 **/ @Transient private double maxScore; /** 每题平均分数 **/ @Transient private double averageScore; /** 题目选项统计情况 **/ @Transient private Map optionsDetail; /** 题目选项统计情况 **/ @Transient private List> optionsOrderDetail; public List> getOptionsOrderDetail() { return optionsOrderDetail; } public void setOptionsOrderDetail(List> optionsOrderDetail) { this.optionsOrderDetail = optionsOrderDetail; } public String getOrgiExerciseId() { return orgiExerciseId; } public void setOrgiExerciseId(String orgiExerciseId) { this.orgiExerciseId = orgiExerciseId; } public Map getOptionsDetail() { return optionsDetail; } public void setOptionsDetail(Map optionsDetail) { this.optionsDetail = optionsDetail; } public double getAverageScore() { return averageScore; } public void setAverageScore(double averageScore) { this.averageScore = averageScore; } public double getMaxScore() { return maxScore; } public void setMaxScore(double maxScore) { this.maxScore = maxScore; } public List getExerciseItemAnswerU() { return exerciseItemAnswerU; } public void setExerciseItemAnswerU(List exerciseItemAnswerU) { this.exerciseItemAnswerU = exerciseItemAnswerU; } public boolean getMustAnswer() { return mustAnswer; } public void setMustAnswer(boolean mustAnswer) { this.mustAnswer = mustAnswer; } public List getAnalysises() { return analysises; } public void setAnalysises(List analysises) { this.analysises = analysises; } // public List getGroups() { // return groups; // } // // // public void setGroups(List groups) { // this.groups = groups; // } public List getOptions() { return options; } public void setOptions(List options) { this.options = options; } public ExerciseChapter getChapter() { return chapter; } public void setChapter(ExerciseChapter chapter) { this.chapter = chapter; } public String getExerciseId() { return this.exerciseId; } public void setExerciseId(String exerciseId) { this.exerciseId = exerciseId; } public String getChapterId() { return this.chapterId; } public void setChapterId(String chapterId) { this.chapterId = chapterId; } public String getCreateId() { return this.createId; } public void setCreateId(String createId) { this.createId = createId; } public Date getCreateTime() { return this.createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } public String getCreator() { return this.creator; } public void setCreator(String creator) { this.creator = creator; } public boolean getDeleteFlag() { return this.deleteFlag; } public void setDeleteFlag(boolean deleteFlag) { this.deleteFlag = deleteFlag; } public String getTitle() { return this.title; } public void setTitle(String title) { this.title = title; } public short getType() { return this.type; } public void setType(short type) { this.type = type; } public String getUpdateId() { return this.updateId; } public void setUpdateId(String updateId) { this.updateId = updateId; } public Date getUpdateTime() { return this.updateTime; } public void setUpdateTime(Date updateTime) { this.updateTime = updateTime; } public String getUpdator() { return this.updator; } public void setUpdator(String updator) { this.updator = updator; } public String getExerciseGroupId() { return exerciseGroupId; } public void setExerciseGroupId(String exerciseGroupId) { this.exerciseGroupId = exerciseGroupId; } public ExerciseAnalisisResult getAnalisisResult() { return analisisResult; } public void setAnalisisResult(ExerciseAnalisisResult analisisResult) { this.analisisResult = analisisResult; } public ExerciseItemAnalisi getAnalisis() { return CollectionUtils.isEmpty(getAnalysises())?null:getAnalysises().get(0); } public void setAnalisis(ExerciseItemAnalisi analisis) { setAnalysises(new ArrayList(1)); getAnalysises().add(analisis); } public String getExerciseRecordId() { return exerciseRecordId; } public void setExerciseRecordId(String exerciseRecordId) { this.exerciseRecordId = exerciseRecordId; } public String getExerciseExtendId() { return exerciseExtendId; } public void setExerciseExtendId(String exerciseExtendId) { this.exerciseExtendId = exerciseExtendId; } public List getScores() { return scores; } public void setScores(List scores) { this.scores = scores; } public Integer getItemNo() { return itemNo; } public void setItemNo(Integer itemNo) { this.itemNo = itemNo; } public Integer getDocNo() { return docNo; } public void setDocNo(Integer docNo) { this.docNo = docNo; } public List getImgs() { return imgs; } public void setImgs(List imgs) { this.imgs = imgs; } public String getReId() { return reId; } public void setReId(String reId) { this.reId = reId; } public String getAnswer() { return answer; } public void setAnswer(String answer) { this.answer = answer; } public String getClassScheduleId() { return classScheduleId; } public void setClassScheduleId(String classScheduleId) { this.classScheduleId = classScheduleId; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((title == null) ? 0 : title.hashCode()); result = prime * result + type; return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; ExerciseItem other = (ExerciseItem) obj; if (title == null) { if (other.title != null) return false; } else if (!title.equals(other.title)) return false; if (type != other.type) return false; return true; } }