|
@@ -89,6 +89,9 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
|
|
|
|
|
|
@Resource
|
|
|
private TBTaskHistoryService tbTaskHistoryService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ TEExamPaperService examPaperService;
|
|
|
|
|
|
/**
|
|
|
* 查询考试批次
|
|
@@ -465,6 +468,8 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
|
|
|
answerCache.setAnswer(answer);
|
|
|
answerCache.setVersion(version);
|
|
|
answerCache.setDurationSeconds(durationSeconds);
|
|
|
+ answerCache.setObjective(checkIsObjective(ExamRecordCacheUtil.getPaperId(recordId), mainNumber, subNumber, subIndex));
|
|
|
+
|
|
|
} else {
|
|
|
if (version.longValue() > answerCache.getVersion().longValue()) {
|
|
|
answerCache.setAnswer(answer);
|
|
@@ -477,14 +482,31 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
|
|
|
// 更新考生作答
|
|
|
redisUtil.set(RedisKeyHelper.examAnswerKey(recordId),
|
|
|
RedisKeyHelper.examAnswerHashKey(mainNumber, subNumber, subIndex), answerCache);
|
|
|
- // 重置考试记录客观题得分
|
|
|
- ExamRecordCacheUtil.setObjectiveScore(recordId, null, true);
|
|
|
+ // 如果是客观题,重置考试记录客观题得分
|
|
|
+ if(answerCache.getObjective()) {
|
|
|
+ ExamRecordCacheUtil.setObjectiveScore(recordId, null, false);
|
|
|
+ // 发消息计算客观分
|
|
|
+ calculateObjectiveScore(recordId, mainNumber, subNumber, subIndex);
|
|
|
+ }
|
|
|
+
|
|
|
AnswerSubmitBean ret = new AnswerSubmitBean();
|
|
|
ret.setVersion(version);
|
|
|
- // 发消息计算客观分
|
|
|
- calculateObjectiveScore(recordId, mainNumber, subNumber, subIndex);
|
|
|
+
|
|
|
return ret;
|
|
|
}
|
|
|
+
|
|
|
+ private boolean checkIsObjective(Long paperId, Integer mainNumber, Integer subNumber, Integer subIndex) {
|
|
|
+ Map<String, ObjectiveAnswerCacheBean> map = examPaperService.getObjectiveAnswerCacheBean(paperId);
|
|
|
+ if (map == null || map.size() == 0) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ String key = RedisKeyHelper.examAnswerHashKey(mainNumber, subNumber, subIndex);
|
|
|
+ ObjectiveAnswerCacheBean cb = map.get(key);
|
|
|
+ if (cb == null) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
|
|
|
private void calculateObjectiveScore(Long recordId, Integer mainNumber, Integer subNumber, Integer subIndex) {
|
|
|
Map<String, Object> transMap = new HashMap<String, Object>();
|