|
@@ -0,0 +1,585 @@
|
|
|
+package cn.com.qmth.examcloud.common.dto.em;
|
|
|
+
|
|
|
+import java.io.Serializable;
|
|
|
+import java.util.Date;
|
|
|
+
|
|
|
+import cn.com.qmth.examcloud.common.dto.em.Exam;
|
|
|
+import cn.com.qmth.examcloud.common.dto.em.ExamStudent;
|
|
|
+import cn.com.qmth.examcloud.common.dto.em.enums.ExamRecordStatus;
|
|
|
+import cn.com.qmth.examcloud.common.dto.em.enums.GenerateStudentPaperStatus;
|
|
|
+import cn.com.qmth.examcloud.common.dto.em.enums.IsSuccess;
|
|
|
+import cn.com.qmth.examcloud.common.dto.question.PaperDto;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 考试记录
|
|
|
+ *
|
|
|
+ * @author xudengqi
|
|
|
+ * 2016年8月16日
|
|
|
+ */
|
|
|
+public class ExamRecord implements Serializable {
|
|
|
+
|
|
|
+ private static final long serialVersionUID = 1L;
|
|
|
+
|
|
|
+ private Long id;
|
|
|
+ /**
|
|
|
+ * 学生报考信息
|
|
|
+ */
|
|
|
+ private Long examStudentId;
|
|
|
+ /**
|
|
|
+ * 专业层次
|
|
|
+ */
|
|
|
+ private String specialtyLevel;
|
|
|
+ /**
|
|
|
+ * 专业code
|
|
|
+ */
|
|
|
+ private String specialtyCode;
|
|
|
+ /**
|
|
|
+ * 专业名称
|
|
|
+ */
|
|
|
+ private String specialtyName;
|
|
|
+ /**
|
|
|
+ * 考生学号
|
|
|
+ */
|
|
|
+ private String studentCode;
|
|
|
+ /**
|
|
|
+ * 身份证号
|
|
|
+ */
|
|
|
+ private String identityNumber;
|
|
|
+ /**
|
|
|
+ * 考生姓名
|
|
|
+ */
|
|
|
+ private String studentName;
|
|
|
+ /**
|
|
|
+ * 课程code
|
|
|
+ */
|
|
|
+ private String courseCode;
|
|
|
+ /**
|
|
|
+ * 课程层次
|
|
|
+ */
|
|
|
+ private String courseLevel;
|
|
|
+ /**
|
|
|
+ * 学习中心ID
|
|
|
+ */
|
|
|
+ private Long campusId;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 学校信息
|
|
|
+ */
|
|
|
+ private Long orgId;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 关联批次
|
|
|
+ */
|
|
|
+ private Long batchId;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 考生用户ID
|
|
|
+ */
|
|
|
+ private Long stuUserId;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 考试状态
|
|
|
+ */
|
|
|
+ private ExamRecordStatus status;
|
|
|
+
|
|
|
+ private GenerateStudentPaperStatus genStuPaper;
|
|
|
+ /**
|
|
|
+ * 开始答卷时间
|
|
|
+ */
|
|
|
+ private Date startTime;
|
|
|
+ /**
|
|
|
+ * 交卷时间
|
|
|
+ */
|
|
|
+ private Date endTime;
|
|
|
+ /**
|
|
|
+ * 系统清理时间
|
|
|
+ */
|
|
|
+ private Date cleanTime;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 监督操作 1违纪 2重考 3正常
|
|
|
+ */
|
|
|
+ private int invigilatorOperation;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 重考类型ID
|
|
|
+ */
|
|
|
+ private Long retakeTypeId;
|
|
|
+ /**
|
|
|
+ * 重考详情
|
|
|
+ */
|
|
|
+ private String retakeDetail;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 监考是否已审核
|
|
|
+ */
|
|
|
+ private Boolean isAudit;
|
|
|
+ /**
|
|
|
+ * 抓拍总次数
|
|
|
+ */
|
|
|
+ private Integer totalCount;
|
|
|
+ /**
|
|
|
+ * 成功次数
|
|
|
+ */
|
|
|
+ private Integer succCount;
|
|
|
+ /**
|
|
|
+ * 失败次数
|
|
|
+ */
|
|
|
+ private Integer falseCount;
|
|
|
+ /**
|
|
|
+ * 陌生人次数
|
|
|
+ */
|
|
|
+ private Integer strangerCount;
|
|
|
+ /**
|
|
|
+ * 成功率
|
|
|
+ */
|
|
|
+ private Double succPercent;
|
|
|
+ /**
|
|
|
+ * 是否预警数据
|
|
|
+ */
|
|
|
+ private Boolean isWarn;
|
|
|
+ /**
|
|
|
+ * 是否断点续考
|
|
|
+ */
|
|
|
+ private Boolean isContinued;
|
|
|
+ /**
|
|
|
+ * 续考次数
|
|
|
+ */
|
|
|
+ private Integer continuedCount;
|
|
|
+ /**
|
|
|
+ * 考试次数(第几次)
|
|
|
+ */
|
|
|
+ private Integer examOrder;
|
|
|
+ /**
|
|
|
+ * 试卷编号
|
|
|
+ */
|
|
|
+ private String paperNumber;
|
|
|
+ /**
|
|
|
+ * 考试类型
|
|
|
+ */
|
|
|
+ private String examType;
|
|
|
+ /**
|
|
|
+ * 考生考试使用的考试时长
|
|
|
+ */
|
|
|
+ private long usedExamTime;
|
|
|
+
|
|
|
+ private String paperType;
|
|
|
+
|
|
|
+ private String infoCollector;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 是否为重考
|
|
|
+ */
|
|
|
+ private Boolean isReexamine;
|
|
|
+ /**
|
|
|
+ * 考试人脸检测启动分钟数
|
|
|
+ */
|
|
|
+ private Integer faceVerifyMinute;
|
|
|
+ /**
|
|
|
+ * 人脸检测结果
|
|
|
+ */
|
|
|
+ private IsSuccess faceVerifyResult;
|
|
|
+ /**
|
|
|
+ * 考生试卷id
|
|
|
+ */
|
|
|
+ private String paperId;
|
|
|
+
|
|
|
+ private Double landmarkVal;
|
|
|
+
|
|
|
+ public ExamRecord() {
|
|
|
+ super();
|
|
|
+ }
|
|
|
+
|
|
|
+ public ExamRecord(ExamStudent examStudent,Long studentId,Long rootOrgId,PaperDto paperDto,Exam batch,int examOrder){
|
|
|
+ this.paperNumber = paperDto.getName();
|
|
|
+ this.examStudentId = examStudent.getId();
|
|
|
+ this.batchId = examStudent.getExam().getId();
|
|
|
+ this.stuUserId = studentId;
|
|
|
+ this.orgId = rootOrgId; //父机构ID
|
|
|
+ this.campusId = examStudent.getOrgId();//学习中心ID
|
|
|
+ this.studentCode = examStudent.getStudentCode();
|
|
|
+ this.studentName = examStudent.getName();
|
|
|
+ this.courseCode = examStudent.getCourseCode();
|
|
|
+ this.identityNumber = examStudent.getIdentityNumber();
|
|
|
+ this.infoCollector = examStudent.getInfoCollector();
|
|
|
+ this.specialtyCode = examStudent.getSpecialtyCode();
|
|
|
+ this.specialtyName = examStudent.getSpecialtyName();
|
|
|
+ this.paperType = examStudent.getPaperType();
|
|
|
+ this.examType = batch.getExamType().toString();
|
|
|
+ this.examOrder = examOrder;
|
|
|
+ this.paperId = paperDto.getId();
|
|
|
+
|
|
|
+ this.startTime = new Date();
|
|
|
+ this.status = ExamRecordStatus.EXAM_ING;
|
|
|
+ this.invigilatorOperation = 3; //默认为正常
|
|
|
+ this.isWarn = false; //默认无警告
|
|
|
+ this.isAudit = false; //默认未审核
|
|
|
+ this.isContinued = false; //默认不是断点续考
|
|
|
+ this.continuedCount = 0;
|
|
|
+ this.usedExamTime = 0L;
|
|
|
+
|
|
|
+ Integer normalExamTimes = examStudent.getNormalExamTimes();
|
|
|
+ if(normalExamTimes==null){
|
|
|
+ normalExamTimes = 0;
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 如果考生表记录中已经被设置为重考,且考试中的考试次数不大于正常考试的次数
|
|
|
+ * 将该条考试记录设置为重考
|
|
|
+ */
|
|
|
+ if(examStudent.getIsReexamine()!=null
|
|
|
+ && examStudent.getIsReexamine()
|
|
|
+ && batch.getExamTimes()<=normalExamTimes){
|
|
|
+ this.isReexamine = true;
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 确定人脸活体检测开始分钟数
|
|
|
+ * 开始分钟数跟结束分钟数中的随机值
|
|
|
+ */
|
|
|
+ if(batch.getIsFaceVerify()!=null&&batch.getIsFaceVerify()){
|
|
|
+ Integer faceVerifyStartMinute = batch.getFaceVerifyStartMinute();
|
|
|
+ Integer faceVerifyEndMinute = batch.getFaceVerifyEndMinute();
|
|
|
+ if(faceVerifyStartMinute!=null&&faceVerifyEndMinute!=null){
|
|
|
+ //(数据类型)(最小值+Math.random()*(最大值-最小值+1))
|
|
|
+ int verifyMinute = (int)(faceVerifyStartMinute+Math.random()*(faceVerifyEndMinute-faceVerifyStartMinute+1));
|
|
|
+ this.faceVerifyMinute = verifyMinute;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public Long getId() {
|
|
|
+ return id;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setId(Long id) {
|
|
|
+ this.id = id;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Long getExamStudentId() {
|
|
|
+ return examStudentId;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setExamStudentId(Long examStudentId) {
|
|
|
+ this.examStudentId = examStudentId;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Long getBatchId() {
|
|
|
+ return batchId;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setBatchId(Long batchId) {
|
|
|
+ this.batchId = batchId;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Long getStuUserId() {
|
|
|
+ return stuUserId;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setStuUserId(Long stuUserId) {
|
|
|
+ this.stuUserId = stuUserId;
|
|
|
+ }
|
|
|
+
|
|
|
+ public ExamRecordStatus getStatus() {
|
|
|
+ return status;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setStatus(ExamRecordStatus status) {
|
|
|
+ this.status = status;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Date getStartTime() {
|
|
|
+ return startTime;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setStartTime(Date startTime) {
|
|
|
+ this.startTime = startTime;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Date getEndTime() {
|
|
|
+ return endTime;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setEndTime(Date endTime) {
|
|
|
+ this.endTime = endTime;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getInvigilatorOperation() {
|
|
|
+ return invigilatorOperation;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setInvigilatorOperation(int invigilatorOperation) {
|
|
|
+ this.invigilatorOperation = invigilatorOperation;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Long getRetakeTypeId() {
|
|
|
+ return retakeTypeId;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setRetakeTypeId(Long retakeTypeId) {
|
|
|
+ this.retakeTypeId = retakeTypeId;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getRetakeDetail() {
|
|
|
+ return retakeDetail;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setRetakeDetail(String retakeDetail) {
|
|
|
+ this.retakeDetail = retakeDetail;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Boolean getIsAudit() {
|
|
|
+ return isAudit;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setIsAudit(Boolean isAudit) {
|
|
|
+ this.isAudit = isAudit;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Integer getTotalCount() {
|
|
|
+ return totalCount;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setTotalCount(Integer totalCount) {
|
|
|
+ this.totalCount = totalCount;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Integer getSuccCount() {
|
|
|
+ return succCount;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setSuccCount(Integer succCount) {
|
|
|
+ this.succCount = succCount;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Integer getFalseCount() {
|
|
|
+ return falseCount;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setFalseCount(Integer falseCount) {
|
|
|
+ this.falseCount = falseCount;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Integer getStrangerCount() {
|
|
|
+ return strangerCount;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setStrangerCount(Integer strangerCount) {
|
|
|
+ this.strangerCount = strangerCount;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Double getSuccPercent() {
|
|
|
+ return succPercent;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setSuccPercent(Double succPercent) {
|
|
|
+ this.succPercent = succPercent;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Boolean getIsWarn() {
|
|
|
+ return isWarn;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setIsWarn(Boolean isWarn) {
|
|
|
+ this.isWarn = isWarn;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Boolean getIsContinued() {
|
|
|
+ return isContinued;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setIsContinued(Boolean isContinued) {
|
|
|
+ this.isContinued = isContinued;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Integer getContinuedCount() {
|
|
|
+ return continuedCount;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setContinuedCount(Integer continuedCount) {
|
|
|
+ this.continuedCount = continuedCount;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Integer getExamOrder() {
|
|
|
+ return examOrder;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setExamOrder(Integer examOrder) {
|
|
|
+ this.examOrder = examOrder;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getPaperNumber() {
|
|
|
+ return paperNumber;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setPaperNumber(String paperNumber) {
|
|
|
+ this.paperNumber = paperNumber;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getExamType() {
|
|
|
+ return examType;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setExamType(String examType) {
|
|
|
+ this.examType = examType;
|
|
|
+ }
|
|
|
+
|
|
|
+ public long getUsedExamTime() {
|
|
|
+ return usedExamTime;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setUsedExamTime(long usedExamTime) {
|
|
|
+ this.usedExamTime = usedExamTime;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Long getOrgId() {
|
|
|
+ return orgId;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setOrgId(Long orgId) {
|
|
|
+ this.orgId = orgId;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getSpecialtyLevel() {
|
|
|
+ return specialtyLevel;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setSpecialtyLevel(String specialtyLevel) {
|
|
|
+ this.specialtyLevel = specialtyLevel;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getStudentCode() {
|
|
|
+ return studentCode;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setStudentCode(String studentCode) {
|
|
|
+ this.studentCode = studentCode;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getStudentName() {
|
|
|
+ return studentName;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setStudentName(String studentName) {
|
|
|
+ this.studentName = studentName;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Long getCampusId() {
|
|
|
+ return campusId;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setCampusId(Long campusId) {
|
|
|
+ this.campusId = campusId;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getCourseCode() {
|
|
|
+ return courseCode;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setCourseCode(String courseCode) {
|
|
|
+ this.courseCode = courseCode;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getIdentityNumber() {
|
|
|
+ return identityNumber;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setIdentityNumber(String identityNumber) {
|
|
|
+ this.identityNumber = identityNumber;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Date getCleanTime() {
|
|
|
+ return cleanTime;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setCleanTime(Date cleanTime) {
|
|
|
+ this.cleanTime = cleanTime;
|
|
|
+ }
|
|
|
+
|
|
|
+ public GenerateStudentPaperStatus getGenStuPaper() {
|
|
|
+ return genStuPaper;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setGenStuPaper(GenerateStudentPaperStatus genStuPaper) {
|
|
|
+ this.genStuPaper = genStuPaper;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getPaperType() {
|
|
|
+ return paperType;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setPaperType(String paperType) {
|
|
|
+ this.paperType = paperType;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getInfoCollector() {
|
|
|
+ return infoCollector;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setInfoCollector(String infoCollector) {
|
|
|
+ this.infoCollector = infoCollector;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getSpecialtyCode() {
|
|
|
+ return specialtyCode;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setSpecialtyCode(String specialtyCode) {
|
|
|
+ this.specialtyCode = specialtyCode;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getSpecialtyName() {
|
|
|
+ return specialtyName;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setSpecialtyName(String specialtyName) {
|
|
|
+ this.specialtyName = specialtyName;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getCourseLevel() {
|
|
|
+ return courseLevel;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setCourseLevel(String courseLevel) {
|
|
|
+ this.courseLevel = courseLevel;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Boolean getIsReexamine() {
|
|
|
+ return isReexamine;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setIsReexamine(Boolean isReexamine) {
|
|
|
+ this.isReexamine = isReexamine;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Integer getFaceVerifyMinute() {
|
|
|
+ return faceVerifyMinute;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setFaceVerifyMinute(Integer faceVerifyMinute) {
|
|
|
+ this.faceVerifyMinute = faceVerifyMinute;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String getPaperId() {
|
|
|
+ return paperId;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setPaperId(String paperId) {
|
|
|
+ this.paperId = paperId;
|
|
|
+ }
|
|
|
+
|
|
|
+ public IsSuccess getFaceVerifyResult() {
|
|
|
+ return faceVerifyResult;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setFaceVerifyResult(IsSuccess faceVerifyResult) {
|
|
|
+ this.faceVerifyResult = faceVerifyResult;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Double getLandmarkVal() {
|
|
|
+ return landmarkVal;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setLandmarkVal(Double landmarkVal) {
|
|
|
+ this.landmarkVal = landmarkVal;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|