|
@@ -1,5 +1,6 @@
|
|
package cn.iselab.mooctest.site.web.logic.impl;
|
|
package cn.iselab.mooctest.site.web.logic.impl;
|
|
|
|
|
|
|
|
+import cn.iselab.mooctest.site.service.Exam2CaseService;
|
|
import cn.iselab.mooctest.site.service.SubmitRecordService;
|
|
import cn.iselab.mooctest.site.service.SubmitRecordService;
|
|
import cn.iselab.mooctest.site.service.CaseGraphService;
|
|
import cn.iselab.mooctest.site.service.CaseGraphService;
|
|
import cn.iselab.mooctest.site.service.CaughtNodeService;
|
|
import cn.iselab.mooctest.site.service.CaughtNodeService;
|
|
@@ -9,6 +10,8 @@ import cn.iselab.mooctest.site.service.WeightGeneralService;
|
|
import cn.iselab.mooctest.site.web.data.forMongo.CaseGraphDTO;
|
|
import cn.iselab.mooctest.site.web.data.forMongo.CaseGraphDTO;
|
|
import cn.iselab.mooctest.site.web.data.forMongo.graph.Category;
|
|
import cn.iselab.mooctest.site.web.data.forMongo.graph.Category;
|
|
import cn.iselab.mooctest.site.web.logic.GeneralCalculateScoreLogic;
|
|
import cn.iselab.mooctest.site.web.logic.GeneralCalculateScoreLogic;
|
|
|
|
+import cn.iselab.mooctest.site.web.logic.strategy.HighestStrategy;
|
|
|
|
+import cn.iselab.mooctest.site.web.logic.strategy.LatestStrategy;
|
|
import cn.iselab.mooctest.site.web.logic.strategy.TypeScoreStrategy;
|
|
import cn.iselab.mooctest.site.web.logic.strategy.TypeScoreStrategy;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import javax.transaction.Transactional;
|
|
import javax.transaction.Transactional;
|
|
@@ -40,6 +43,8 @@ public class GeneralCalculateScoreLogicImpl implements GeneralCalculateScoreLogi
|
|
GeneralCalculateScoreComponent generalCalculateScoreComponent;
|
|
GeneralCalculateScoreComponent generalCalculateScoreComponent;
|
|
@Autowired
|
|
@Autowired
|
|
GeneralCalculateScoreService generalCalculateScoreService;
|
|
GeneralCalculateScoreService generalCalculateScoreService;
|
|
|
|
+ @Autowired
|
|
|
|
+ Exam2CaseService exam2CaseService;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -55,14 +60,12 @@ public class GeneralCalculateScoreLogicImpl implements GeneralCalculateScoreLogi
|
|
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public void calculateCaseScore(long examId, long caseId, Long userId,
|
|
|
|
- TypeScoreStrategy strategy) {
|
|
|
|
- CaseGraphDTO basicNode = caseGraphService.getCaseGraph(caseId);
|
|
|
|
|
|
+ public void calculateCaseScore(long examId, long caseId, Long userId) {
|
|
|
|
+ TypeScoreStrategy strategy = getTypeScoreStrategy(examId,caseId);
|
|
double caseScore = 0;
|
|
double caseScore = 0;
|
|
- for (Category category : basicNode.getCategories()) {
|
|
|
|
- int weight = weightGeneralService.getWeight(examId, caseId, category.getName());
|
|
|
|
- double typeScore = strategy.getTypeScore(userId, examId, caseId, category
|
|
|
|
- .getName());
|
|
|
|
|
|
+ for (String category : weightGeneralService.getCategories(examId,caseId)) {
|
|
|
|
+ int weight = weightGeneralService.getWeight(examId, caseId, category);
|
|
|
|
+ double typeScore = strategy.getTypeScore(userId, examId, caseId, category);
|
|
caseScore += (weight * 0.01 * typeScore);
|
|
caseScore += (weight * 0.01 * typeScore);
|
|
}
|
|
}
|
|
submitRecordService.addCase(examId, caseId, userId, "");
|
|
submitRecordService.addCase(examId, caseId, userId, "");
|
|
@@ -71,9 +74,18 @@ public class GeneralCalculateScoreLogicImpl implements GeneralCalculateScoreLogi
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public void calculateCaseScore(long examId, long caseId, TypeScoreStrategy strategy) {
|
|
|
|
|
|
+ public void calculateCaseScore(long examId, long caseId) {
|
|
List<Long> uploadUsers = generalCalculateScoreService.getUploadUsers(examId, caseId);
|
|
List<Long> uploadUsers = generalCalculateScoreService.getUploadUsers(examId, caseId);
|
|
- uploadUsers.forEach(uid-> calculateCaseScore(examId, caseId,uid,strategy));
|
|
|
|
|
|
+ uploadUsers.forEach(uid-> calculateCaseScore(examId, caseId,uid));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private TypeScoreStrategy getTypeScoreStrategy(long examId, long caseId){
|
|
|
|
+ int number = exam2CaseService.getScoreStrategyByExamIdAndCaseId(examId,caseId);
|
|
|
|
+ switch (number){
|
|
|
|
+ case 0: return new LatestStrategy();
|
|
|
|
+ case 1: return new HighestStrategy();
|
|
|
|
+ default: return new LatestStrategy();
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|