소스 검색

fix analysis mutation

chenxz 8 년 전
부모
커밋
3c8569957f

+ 1 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/Application.java

@@ -109,7 +109,7 @@ public class Application {
 
         // To disabled web environment, change `true` to `false`
         application.setWebEnvironment(true);
-        application.addListeners(new ApplicationStartup());
+        //application.addListeners(new ApplicationStartup());
         application.run(args);
     }
 }

+ 1 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/fromDev/APFDLogic.java

@@ -17,5 +17,5 @@ public interface APFDLogic {
 
     String getMutationAnalyseofCaseInExam(Long examId, Long caseId, Long participantId);
 
-    MutationDTO getMutationAnalyseByExamIdAndParticipantId(Long examId, Long caseId, Long workerId);
+    MutationDTO getMutationAnalyseByExamIdAndParticipantId(Long examId, Long caseId, Long workerId) throws Exception;
 }

+ 11 - 6
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/fromDev/impl/APFDLogicImpl.java

@@ -1,6 +1,7 @@
 package cn.iselab.mooctest.site.web.logic.fromDev.impl;
 
 import cn.iselab.mooctest.site.models.AssignedTask;
+import cn.iselab.mooctest.site.models.Exam2Case;
 import cn.iselab.mooctest.site.models.Grade;
 import cn.iselab.mooctest.site.models.Weight;
 import cn.iselab.mooctest.site.rpc.dev.data.ApbcDTO;
@@ -106,10 +107,7 @@ public class APFDLogicImpl implements APFDLogic {
             List<AssignedTask> assignedTasks = assignedTaskService.getSubmittedRecordsByExamId(examId);
             List<Long> submittedWorkerIds = assignedTasks.stream().map(assignedTask -> assignedTask.getParticipantId()).collect(Collectors.toList());
             List<MutationDTO> mutationDTOS =submittedWorkerIds.stream().map( submittedWorkerId ->
-                    getMutationAnalyseByExamIdAndParticipantId(examId,caseId,submittedWorkerId)).collect(Collectors.toList());
-            for(Long submittedWorkerId:submittedWorkerIds){
-                mutationDTOS.add(getMutationAnalyseByExamIdAndParticipantId(examId,caseId,submittedWorkerId));
-            }
+                    getMutationAnalyseByExamIdAndParticipantId(examId,caseId,submittedWorkerId)).filter(dTO-> dTO!=null).collect(Collectors.toList());
             if (mutationDTOS.size() != 0 && !mutationDTOS.isEmpty()) {
                 return StResponse.success(mutationDTOS);
             } else {
@@ -122,11 +120,18 @@ public class APFDLogicImpl implements APFDLogic {
 
     @Override
     public MutationDTO getMutationAnalyseByExamIdAndParticipantId(Long examId, Long caseId, Long participantId){
-        MutationDTO mutationDTO = analysisService.mutationAnalyze(examId, participantId, caseId);
+        MutationDTO mutationDTO;
+        try {
+            mutationDTO = analysisService.mutationAnalyze(examId, participantId, caseId);
+        }catch (Exception e){
+            return null;
+        }
         if (mutationDTO == null) {
             throw new HttpBadRequestException("Fail to get 变异分析 of No." + caseId);
         } else {
-            double mutationScore = (double) mutationDTO.getKilled() / mutationDTO.getTotal() * 100;
+            double mutationScore=0;
+            if(mutationDTO.getTotal()!=0)
+                 mutationScore= (double) mutationDTO.getKilled() / mutationDTO.getTotal() * 100;
             List<Grade> grades = analysisService.saveMutationScore(participantId, examId, caseId, mutationScore);
             if (grades != null && !grades.isEmpty()) {
                 calculateScoreService.calculatePersonalDevScore(examId, caseId, participantId);

+ 3 - 2
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/CaseLogicImpl.java

@@ -162,10 +162,11 @@ public class CaseLogicImpl implements CaseLogic {
     @Override
     public List<CaseExtendsVO> getCasesByExamId(Long examId) {
         List<CaseExtendsVO> caseExtendsVOList = new ArrayList<>();
-        if (taskService.getCaseBlocks(paperService.getByExamId(examId).getId()).size() == 0){
+        Paper paper=paperService.getByExamId(examId);
+        List<CaseBlock> caseBlocks = taskService.getCaseBlocks(paper.getId());
+        if (caseBlocks.size() == 0){
             throw new HttpBadRequestException("no case matched for the exam");
         }
-        List<CaseBlock> caseBlocks = taskService.getCaseBlocks(examId);
         for (CaseBlock caseBlock : caseBlocks) {
             if (caseBlock.getCaseIds().size() < 1) {
                 continue;