瀏覽代碼

获取客观分列表

xiatian 5 年之前
父節點
當前提交
15d45c276b

+ 8 - 0
examcloud-core-oe-admin-api-provider/src/main/java/cn/com/qmth/examcloud/core/oe/admin/api/controller/ExamScoreController.java

@@ -26,6 +26,7 @@ import cn.com.qmth.examcloud.core.oe.admin.base.utils.excel.ExportUtils;
 import cn.com.qmth.examcloud.core.oe.admin.service.ExamScoreService;
 import cn.com.qmth.examcloud.core.oe.admin.service.bean.examscore.ExamScoreInfo;
 import cn.com.qmth.examcloud.core.oe.admin.service.bean.examscore.ExamScoreQuery;
+import cn.com.qmth.examcloud.core.oe.admin.service.bean.examscore.ObjectiveScoreInfo;
 import cn.com.qmth.examcloud.web.support.ControllerSupport;
 import cn.com.qmth.examcloud.web.support.Naked;
 import io.swagger.annotations.Api;
@@ -60,5 +61,12 @@ public class ExamScoreController extends ControllerSupport {
         List<ExamScoreInfo> examScoreList = examScoreService.exportExamScoreList(newQuery);
         ExportUtils.exportEXCEL("成绩统计列表", ExamScoreInfo.class,examScoreList,response);
     }
+    
+    @ApiOperation(value = "根据examStudentId获取客观分信息")
+    @GetMapping("/queryObjectiveScoreList")
+    public List<ObjectiveScoreInfo> queryObjectiveScoreList(@RequestParam Long examStudentId){
+        Check.isNull(examStudentId, "examStudentId 不能为空");
+        return examScoreService.queryObjectiveScoreList(examStudentId);
+    }
 
 }

+ 12 - 2
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/ExamScoreService.java

@@ -9,11 +9,12 @@ package cn.com.qmth.examcloud.core.oe.admin.service;
 
 import java.util.List;
 
+import org.springframework.data.domain.Page;
+
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamScoreEntity;
 import cn.com.qmth.examcloud.core.oe.admin.service.bean.examscore.ExamScoreInfo;
 import cn.com.qmth.examcloud.core.oe.admin.service.bean.examscore.ExamScoreQuery;
-
-import org.springframework.data.domain.Page;
+import cn.com.qmth.examcloud.core.oe.admin.service.bean.examscore.ObjectiveScoreInfo;
 
 /**
  * 考试分数相关接口
@@ -41,4 +42,13 @@ public interface ExamScoreService {
      * @param examRecordDataId
      */
     public void createExamScoreWithOffline(Long examRecordDataId);
+    
+    
+    /**
+     * 使用考生ID查询客观分信息 
+     * 客观分是指考生完成过一次考试后,有效的客观分,
+     * 如此条考试记录需要监考审核则显示为"待审",客观分显示时,展示次数(第几次考试)、开始时间、交卷时间,客观分;
+     * @return
+     */
+    public List<ObjectiveScoreInfo> queryObjectiveScoreList(Long examStudentId);
 }

+ 125 - 0
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/bean/examscore/ObjectiveScoreInfo.java

@@ -0,0 +1,125 @@
+package cn.com.qmth.examcloud.core.oe.admin.service.bean.examscore;
+
+
+import java.util.Date;
+
+import cn.com.qmth.examcloud.api.commons.exchange.JsonSerializable;
+
+/**
+ * 
+ * @author  	chenken
+ * @date    	2018年9月27日 下午3:45:58
+ * @company 	QMTH
+ * @description 客观分信息
+ */
+public class ObjectiveScoreInfo implements JsonSerializable{
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 3722050952090373601L;
+
+	/**
+	 * 考试记录ID
+	 */
+	private Long examRecordDataId;
+	
+	/**
+	 * 客观分总分
+	 */
+	private Double objectiveScore;
+	
+	/**
+	 * 第几次考
+	 */
+	private Integer examOrder;
+	
+	/**
+	 * 开始时间
+	 */
+	private Date startTime;
+	
+	/**
+	 * 交卷时间
+	 */
+	private Date endTime;
+	
+	/**
+	 * 是否待审核
+	 */
+	private Boolean isAuditing;
+	
+	/**
+	 * 是否违纪
+	 */
+	private Boolean isIllegality;
+
+	/**
+	 * 考试是否已结束
+	 */
+	private Boolean isExamEnded;
+
+	public Long getExamRecordDataId() {
+		return examRecordDataId;
+	}
+
+	public void setExamRecordDataId(Long examRecordDataId) {
+		this.examRecordDataId = examRecordDataId;
+	}
+
+	public Double getObjectiveScore() {
+		return objectiveScore;
+	}
+
+	public void setObjectiveScore(Double objectiveScore) {
+		this.objectiveScore = objectiveScore;
+	}
+
+	public Integer getExamOrder() {
+		return examOrder;
+	}
+
+	public void setExamOrder(Integer examOrder) {
+		this.examOrder = examOrder;
+	}
+
+	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 Boolean getIsAuditing() {
+		return isAuditing;
+	}
+
+	public void setIsAuditing(Boolean isAuditing) {
+		this.isAuditing = isAuditing;
+	}
+
+	public Boolean getIsIllegality() {
+		return isIllegality;
+	}
+
+	public void setIsIllegality(Boolean isIllegality) {
+		this.isIllegality = isIllegality;
+	}
+
+	public Boolean getIsExamEnded() {
+		return isExamEnded;
+	}
+
+	public void setIsExamEnded(Boolean examEnded) {
+		isExamEnded = examEnded;
+	}
+}

+ 56 - 0
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/impl/ExamScoreServiceImpl.java

@@ -37,6 +37,7 @@ import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamStudentEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamStudentFinalScoreEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.enums.CourseLevel;
 import cn.com.qmth.examcloud.core.oe.admin.dao.enums.ExamProperties;
+import cn.com.qmth.examcloud.core.oe.admin.dao.enums.ExamRecordStatus;
 import cn.com.qmth.examcloud.core.oe.admin.service.ExamRecordService;
 import cn.com.qmth.examcloud.core.oe.admin.service.ExamScoreService;
 import cn.com.qmth.examcloud.core.oe.admin.service.ExamStudentFinalScoreService;
@@ -45,6 +46,7 @@ import cn.com.qmth.examcloud.core.oe.admin.service.GainBaseDataService;
 import cn.com.qmth.examcloud.core.oe.admin.service.bean.examscore.ExamScoreEntityConvert;
 import cn.com.qmth.examcloud.core.oe.admin.service.bean.examscore.ExamScoreInfo;
 import cn.com.qmth.examcloud.core.oe.admin.service.bean.examscore.ExamScoreQuery;
+import cn.com.qmth.examcloud.core.oe.admin.service.bean.examscore.ObjectiveScoreInfo;
 import cn.com.qmth.examcloud.core.oe.admin.service.bean.examstudent.ExamStudentInfo;
 import cn.com.qmth.examcloud.core.oe.admin.service.others.ExamCacheTransferHelper;
 import cn.com.qmth.examcloud.examwork.api.bean.ExamBean;
@@ -402,4 +404,58 @@ public class ExamScoreServiceImpl implements ExamScoreService {
         examScoreRepo.save(examScoreEntity);
     }
 
+    @Override
+    public List<ObjectiveScoreInfo> queryObjectiveScoreList(Long examStudentId) {
+        List<ExamRecordDataEntity> examRecordDataList = examRecordDataRepo.findByExamStudentId(examStudentId);
+        //过滤已完成的考试记录(包括违纪的)
+        examRecordDataList = examRecordDataList.stream().filter((o -> {
+            return o.getExamRecordStatus() == ExamRecordStatus.EXAM_END ||
+                    o.getExamRecordStatus() == ExamRecordStatus.EXAM_OVERDUE ||
+                    o.getExamRecordStatus() == ExamRecordStatus.EXAM_HAND_IN ||
+                    o.getExamRecordStatus() == ExamRecordStatus.EXAM_AUTO_HAND_IN;
+        })).collect(Collectors.toList());
+
+        List<ObjectiveScoreInfo> objectiveScoreInfoList = new ArrayList<ObjectiveScoreInfo>();
+        for (ExamRecordDataEntity examRecordDataEntity : examRecordDataList) {
+            ObjectiveScoreInfo objectiveScoreInfo = new ObjectiveScoreInfo();
+            objectiveScoreInfo.setExamRecordDataId(examRecordDataEntity.getId());
+            objectiveScoreInfo.setExamOrder(examRecordDataEntity.getExamOrder());
+            objectiveScoreInfo.setStartTime(examRecordDataEntity.getStartTime());
+            objectiveScoreInfo.setEndTime(examRecordDataEntity.getEndTime());
+
+            //如果考试没有结束,则只能返回部分数据
+            if (!isExamRecordEnded(examRecordDataEntity)) {
+                objectiveScoreInfo.setIsExamEnded(false);
+                objectiveScoreInfoList.add(objectiveScoreInfo);
+                continue;
+            } else {
+                objectiveScoreInfo.setIsExamEnded(true);
+            }
+
+            if (!examRecordDataEntity.getIsIllegality()) {
+                if (examRecordDataEntity.getIsWarn() && !examRecordDataEntity.getIsAudit()) {
+                    objectiveScoreInfo.setIsAuditing(true);
+                } else if (!examRecordDataEntity.getIsWarn() || (examRecordDataEntity.getIsWarn() && examRecordDataEntity.getIsAudit())) {
+                    ExamScoreEntity examScore = examScoreRepo.findByExamRecordDataId(examRecordDataEntity.getId());
+                    objectiveScoreInfo.setIsAuditing(false);
+                    objectiveScoreInfo.setObjectiveScore(examScore.getObjectiveScore());
+                }
+                objectiveScoreInfo.setIsIllegality(false);
+            } else {
+                objectiveScoreInfo.setIsIllegality(true);
+            }
+            objectiveScoreInfoList.add(objectiveScoreInfo);
+        }
+        return objectiveScoreInfoList;
+    }
+    
+    private boolean isExamRecordEnded(ExamRecordDataEntity examRecordData) {
+        //如果考试记录状态为已处理,则直接返回true.
+        if (examRecordData.getExamRecordStatus() == ExamRecordStatus.EXAM_END ||
+                examRecordData.getExamRecordStatus() == ExamRecordStatus.EXAM_OVERDUE ||
+                examRecordData.getExamRecordStatus() == ExamRecordStatus.EXAM_INVALID) {
+            return true;
+        }
+        return false;
+    }
 }