Explorar el Código

Merge remote-tracking branch 'remotes/origin/dev_v4.1.0' into release_v4.1.0

xiatian hace 4 años
padre
commit
c3151e9fc5

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

@@ -12,6 +12,7 @@ import java.util.List;
 
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.http.HttpStatus;
@@ -90,6 +91,7 @@ public class ExamRecordController extends ControllerSupport {
             for (ExamRecordInfo examRecordInfo : examRecordInfoList) {
                 if (ExamType.ONLINE.name().equals(examType) || ExamType.ONLINE_HOMEWORK.name().equals(examType)) {
                     examRecordInfo.setVirtualCameraNames(examCaptureService.getVirtualCameraNames(examRecordInfo.getDataId()));
+                    examRecordInfo.setHasVirtual(StringUtils.isNotBlank(examRecordInfo.getVirtualCameraNames()));
                 }
             }
         }

+ 10 - 51
examcloud-core-oe-admin-api-provider/src/main/java/cn/com/qmth/examcloud/core/oe/admin/api/provider/ExamRecordCloudServiceProvider.java

@@ -414,57 +414,6 @@ public class ExamRecordCloudServiceProvider extends ControllerSupport implements
         return resultList;
     }
 
-    /**
-     * 获取套题的主题干
-     *
-     * @param cachedQues
-     * @return
-     */
-    private String getParentBody(QuestionCacheBean cachedQues) {
-
-        DefaultQuestionStructure questionStructure = cachedQues.getDefaultQuestion().getMasterVersion();
-
-        //如果主题干不为空,则认为是套题
-        return questionStructure.getBody();
-    }
-
-    /**
-     * 获取当前小题的题干
-     *
-     * @param curSubNumber       当前小题号
-     * @param questionId         原小题id
-     * @param cachedQues         带题干的试卷结构
-     * @param subjectiveQuesList 主观题集合
-     * @return
-     */
-    private String getBody(Integer curSubNumber, String questionId,
-                           QuestionCacheBean cachedQues, List<ExamQuestionEntity> subjectiveQuesList) {
-        DefaultQuestionStructure questionStructure = cachedQues.getDefaultQuestion().getMasterVersion();
-
-        //body为空,则说明当前小题为非套题(即questionUnitList集合大小为1),可直接返回小题题干
-        if (StringUtils.isNullOrEmpty(questionStructure.getBody())) {
-            return questionStructure.getQuestionUnitList().get(0).getBody();
-        }
-
-        //同一questionId的主观题集合(不带题干)
-        List<ExamQuestionEntity> noBodySubjectiveQuesList = subjectiveQuesList.stream().
-                filter(p -> p.getQuestionId().equals(questionId)).collect(Collectors.toList());
-
-        //同一questionId的主观题集合(带题干)
-        List<DefaultQuestionUnit> haveBodySubjectiveQuesList = questionStructure.getQuestionUnitList().stream()
-                .filter(p -> QuestionType.FILL_UP == p.getQuestionType() || QuestionType.ESSAY == p.getQuestionType())
-                .collect(Collectors.toList());
-
-        for (int i = 0; i < noBodySubjectiveQuesList.size(); i++) {
-            //如果小题号相同,则根据相同索引从带题干的集合中取出对应的小题题干
-            if (noBodySubjectiveQuesList.get(i).getOrder().intValue() == curSubNumber.intValue()) {
-                return haveBodySubjectiveQuesList.get(i).getBody();
-            }
-        }
-
-        return "";
-    }
-
     /**
      * 校验待阅卷数据
      *
@@ -693,4 +642,14 @@ public class ExamRecordCloudServiceProvider extends ControllerSupport implements
         return res;
     }
 
+	@Override
+	@ApiOperation(value = "检查试卷是否已使用")
+    @PostMapping("/checkPaperInExam")
+	public CheckPaperInExamResp checkPaperInExam(@RequestBody CheckPaperInExamReq req) {
+		if (org.apache.commons.lang3.StringUtils.isBlank(req.getBasePaperId())) {
+            throw new StatusException("500", "basePaperId不允许为空");
+        }
+		return examRecordDataService.checkPaperInExam(req);
+	}
+
 }

+ 3 - 0
examcloud-core-oe-admin-dao/src/main/java/cn/com/qmth/examcloud/core/oe/admin/dao/ExamRecordDataRepo.java

@@ -104,4 +104,7 @@ public interface ExamRecordDataRepo extends JpaRepository<ExamRecordDataEntity,
             "where record_data.exam_record_status in('EXAM_END','EXAM_OVERDUE') and record_data.exam_id=?1 " +
             "AND record_data.is_audit=0 ", nativeQuery = true)
     List<ExamRecordDataEntity> findDataByExamId(Long examId);
+    
+    @Query(value = "select t.id from ec_oe_exam_record_data t where t.base_paper_id=?1 limit 1", nativeQuery = true)
+    Long getRecordIdByPaperId(String basePaperId);
 }

+ 2 - 0
examcloud-core-oe-admin-dao/src/main/java/cn/com/qmth/examcloud/core/oe/admin/dao/entity/ExamRecordDataEntity.java

@@ -23,6 +23,8 @@ import java.util.Date;
         @Index(name = "IDX_E_O_E_R_D_004", columnList = "examId"),
         @Index(name = "IDX_E_O_E_R_D_005", columnList = "courseId"),
         @Index(name = "IDX_E_O_E_R_D_006", columnList = "examRecordStatus"),
+        @Index(name = "IDX_E_O_E_R_D_007", columnList = "basePaperId"),
+        
 })
 @DynamicInsert
 public class ExamRecordDataEntity extends JpaEntity {

+ 4 - 0
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/ExamRecordDataService.java

@@ -1,5 +1,7 @@
 package cn.com.qmth.examcloud.core.oe.admin.service;
 
+import cn.com.qmth.examcloud.core.oe.admin.api.request.CheckPaperInExamReq;
+import cn.com.qmth.examcloud.core.oe.admin.api.response.CheckPaperInExamResp;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamRecordDataEntity;
 import cn.com.qmth.examcloud.core.oe.admin.service.bean.examstudent.ExamStudentBean;
 import cn.com.qmth.examcloud.support.cache.bean.CourseCacheBean;
@@ -28,4 +30,6 @@ public interface ExamRecordDataService {
 
 	Long getGetAwaitingAuditCount(Long rootOrgId, Long examId);
 
+	CheckPaperInExamResp checkPaperInExam(CheckPaperInExamReq req);
+
 }

+ 9 - 0
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/bean/examrecord/ExamRecordInfo.java

@@ -300,6 +300,7 @@ public class ExamRecordInfo implements JsonSerializable {
     @ExcelProperty(name = "审核人", width = 30, index = 33)
     private String auditUserName;
 
+    private Boolean hasVirtual;
 
     public Long getId() {
         return id;
@@ -790,4 +791,12 @@ public class ExamRecordInfo implements JsonSerializable {
     public void setAuditUserName(String auditUserName) {
         this.auditUserName = auditUserName;
     }
+
+    public Boolean getHasVirtual() {
+        return hasVirtual;
+    }
+
+    public void setHasVirtual(Boolean hasVirtual) {
+        this.hasVirtual = hasVirtual;
+    }
 }

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

@@ -1,6 +1,8 @@
 package cn.com.qmth.examcloud.core.oe.admin.service.impl;
 
 import cn.com.qmth.examcloud.api.commons.enums.ExamType;
+import cn.com.qmth.examcloud.core.oe.admin.api.request.CheckPaperInExamReq;
+import cn.com.qmth.examcloud.core.oe.admin.api.response.CheckPaperInExamResp;
 import cn.com.qmth.examcloud.core.oe.admin.dao.ExamRecordDataRepo;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamRecordDataEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.enums.ExamRecordStatus;
@@ -71,4 +73,16 @@ public class ExamRecordDataServiceImpl implements ExamRecordDataService {
 		return count;
 	}
 
+	@Override
+	public CheckPaperInExamResp checkPaperInExam(CheckPaperInExamReq req) {
+		Long id=examRecordDataRepo.getRecordIdByPaperId(req.getBasePaperId());
+		CheckPaperInExamResp res=new CheckPaperInExamResp();
+		if(id==null) {
+			res.setInExam(false);
+		}else {
+			res.setInExam(true);
+		}
+		return res;
+	}
+
 }