|
@@ -231,14 +231,15 @@ public class CalculateScoreLogicImpl implements CalculateSocreLogic {
|
|
|
+ nodeName + " 而caughtNode没有");
|
|
|
try {
|
|
|
double coverRatio = caughtNodeDTO.getCatchNum() / caughtNodeDTO.getTotalNum();
|
|
|
- if (coverRatio >= 1.0D) coverRatio = 0.9999D;
|
|
|
- else if (coverRatio <= 0.0D) coverRatio = 0.0001D;
|
|
|
+ if (coverRatio >= 1.0D) coverRatio = 0.999999D;
|
|
|
+ else if (coverRatio <= 0.0D) coverRatio = 0.000001D;
|
|
|
return normalDistribution.inverseCumulativeProbability(1 - coverRatio);
|
|
|
} catch (MathException e) {
|
|
|
e.printStackTrace();
|
|
|
return 0;
|
|
|
}
|
|
|
}).sum();
|
|
|
+ score = (score * 100 ) / (double) caughtNodeDTOMap.size() ;
|
|
|
CompeteAnalysisResultDTO competeAnalysisResultDTO =
|
|
|
getOrGenerateCompeteAnalysisDTO(userCatchDTO.getUserId(), examId, caseId);
|
|
|
competeAnalysisResultDTO.setDifficultScore(score);
|
|
@@ -263,6 +264,7 @@ public class CalculateScoreLogicImpl implements CalculateSocreLogic {
|
|
|
Task exam = taskService.getTask(examId);
|
|
|
long totalTime = exam.getEndTime().getTime() - exam.getBeginTime().getTime();
|
|
|
|
|
|
+ Map<String, CaughtNodeDTO> caughtNodeDTOMap = caseGraphService.getNodeCatchMapWithExamId(caseId, examId);
|
|
|
Comparator<String> uploadTimeComparator = (t1, t2) -> Long.parseLong(t1) < Long.parseLong(t2) ? -1 : 1;
|
|
|
userCatchDTOS.forEach(userCatchDTO -> {
|
|
|
double score = userCatchDTO.getCatchDTOs().stream()
|
|
@@ -275,7 +277,7 @@ public class CalculateScoreLogicImpl implements CalculateSocreLogic {
|
|
|
}).sum();
|
|
|
CompeteAnalysisResultDTO competeAnalysisResultDTO =
|
|
|
getOrGenerateCompeteAnalysisDTO(userCatchDTO.getUserId(), examId, caseId);
|
|
|
-
|
|
|
+ score = (score * 100) / (double) caughtNodeDTOMap.size();
|
|
|
competeAnalysisResultDTO.setTimeScore(score);
|
|
|
competeAnalysisService.saveCompeteAnalysisResult(competeAnalysisResultDTO);
|
|
|
});
|