|
@@ -658,16 +658,21 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
|
|
answerCache.setDurationSeconds(durationSeconds);
|
|
answerCache.setDurationSeconds(durationSeconds);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- // 每次提交,清空得分
|
|
|
|
- answerCache.setScore(null);
|
|
|
|
|
|
+ Integer hasAnswerFile=ExamRecordCacheUtil.getHasAnswerFile(recordId);
|
|
|
|
+ if(hasAnswerFile.intValue()==1) {
|
|
|
|
+ // 每次提交,清空得分
|
|
|
|
+ answerCache.setScore(null);
|
|
|
|
+ }
|
|
// 更新考生作答
|
|
// 更新考生作答
|
|
redisUtil.set(RedisKeyHelper.examAnswerKey(recordId),
|
|
redisUtil.set(RedisKeyHelper.examAnswerKey(recordId),
|
|
RedisKeyHelper.examAnswerHashKey(mainNumber, subNumber, subIndex), answerCache);
|
|
RedisKeyHelper.examAnswerHashKey(mainNumber, subNumber, subIndex), answerCache);
|
|
- // 如果是客观题,重置考试记录客观题得分
|
|
|
|
- if (answerCache.getObjective()) {
|
|
|
|
- ExamRecordCacheUtil.setObjectiveScore(recordId, null, false);
|
|
|
|
- // 发消息计算客观分
|
|
|
|
- calculateObjectiveScore(recordId, mainNumber, subNumber, subIndex);
|
|
|
|
|
|
+ if(hasAnswerFile.intValue()==1) {
|
|
|
|
+ // 如果是客观题,重置考试记录客观题得分
|
|
|
|
+ if (answerCache.getObjective()) {
|
|
|
|
+ ExamRecordCacheUtil.setObjectiveScore(recordId, null, false);
|
|
|
|
+ // 发消息计算客观分
|
|
|
|
+ calculateObjectiveScore(recordId, mainNumber, subNumber, subIndex);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
AnswerSubmitBean ret = new AnswerSubmitBean();
|
|
AnswerSubmitBean ret = new AnswerSubmitBean();
|
|
@@ -970,40 +975,45 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
|
|
|
|
|
|
|
|
|
|
//页面结果
|
|
//页面结果
|
|
- if (exam.getShowObjectiveScore() != null && exam.getShowObjectiveScore().intValue() == 1) {//实时出分
|
|
|
|
- if (InvigilateVerifyEnum.NOW.equals(exam.getInvigilateVerify())) {//实时审核
|
|
|
|
- Integer warningCount = ExamRecordCacheUtil.getWarningCount(recordId);
|
|
|
|
- Integer breachStatus = Objects.isNull(ExamRecordCacheUtil.getBreachStatus(recordId)) ? 1 : ExamRecordCacheUtil.getBreachStatus(recordId);
|
|
|
|
- if (warningCount != null && warningCount.intValue() > 0) {//有预警
|
|
|
|
- if (breachStatus == null) {//无违纪结果
|
|
|
|
- ret.setStatus(FinishExamResultEnum.AUDITING);
|
|
|
|
- } else if (breachStatus.intValue() == 0) {//违纪结果是false
|
|
|
|
- ret.setReviewResult(ReviewResultEnum.PASS);
|
|
|
|
- if (ret.getObjectiveScore() == null) {
|
|
|
|
- ret.setStatus(FinishExamResultEnum.SCORE_CALCULATE);
|
|
|
|
- } else {
|
|
|
|
- ret.setStatus(FinishExamResultEnum.SCORE_VIEW);
|
|
|
|
- }
|
|
|
|
- } else if (breachStatus.intValue() == 1) {//违纪结果是true
|
|
|
|
- ret.setReviewResult(ReviewResultEnum.UN_PASS);
|
|
|
|
- ret.setStatus(FinishExamResultEnum.BREACH);
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- if (Objects.nonNull(exam.getInvigilateVerify()) && exam.getInvigilateVerify().equals(InvigilateVerifyEnum.NOW)) {
|
|
|
|
- ret.setStatus(FinishExamResultEnum.AUDITING);
|
|
|
|
- } else if (Objects.nonNull(exam.getInvigilateVerify()) && exam.getInvigilateVerify().equals(InvigilateVerifyEnum.LATER)) {
|
|
|
|
- ret.setStatus(FinishExamResultEnum.SCORE_VIEW);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- if (ret.getObjectiveScore() == null) {
|
|
|
|
- ret.setStatus(FinishExamResultEnum.SCORE_CALCULATE);
|
|
|
|
- } else {
|
|
|
|
- ret.setStatus(FinishExamResultEnum.SCORE_VIEW);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- } else {//非实时出分
|
|
|
|
- ret.setStatus(FinishExamResultEnum.NORMAL);
|
|
|
|
|
|
+ Integer hasAnswerFile=ExamRecordCacheUtil.getHasAnswerFile(recordId);
|
|
|
|
+ if(hasAnswerFile.intValue()==1) {
|
|
|
|
+ if (exam.getShowObjectiveScore() != null && exam.getShowObjectiveScore().intValue() == 1) {//实时出分
|
|
|
|
+ if (InvigilateVerifyEnum.NOW.equals(exam.getInvigilateVerify())) {//实时审核
|
|
|
|
+ Integer warningCount = ExamRecordCacheUtil.getWarningCount(recordId);
|
|
|
|
+ Integer breachStatus = Objects.isNull(ExamRecordCacheUtil.getBreachStatus(recordId)) ? 1 : ExamRecordCacheUtil.getBreachStatus(recordId);
|
|
|
|
+ if (warningCount != null && warningCount.intValue() > 0) {//有预警
|
|
|
|
+ if (breachStatus == null) {//无违纪结果
|
|
|
|
+ ret.setStatus(FinishExamResultEnum.AUDITING);
|
|
|
|
+ } else if (breachStatus.intValue() == 0) {//违纪结果是false
|
|
|
|
+ ret.setReviewResult(ReviewResultEnum.PASS);
|
|
|
|
+ if (ret.getObjectiveScore() == null) {
|
|
|
|
+ ret.setStatus(FinishExamResultEnum.SCORE_CALCULATE);
|
|
|
|
+ } else {
|
|
|
|
+ ret.setStatus(FinishExamResultEnum.SCORE_VIEW);
|
|
|
|
+ }
|
|
|
|
+ } else if (breachStatus.intValue() == 1) {//违纪结果是true
|
|
|
|
+ ret.setReviewResult(ReviewResultEnum.UN_PASS);
|
|
|
|
+ ret.setStatus(FinishExamResultEnum.BREACH);
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ if (Objects.nonNull(exam.getInvigilateVerify()) && exam.getInvigilateVerify().equals(InvigilateVerifyEnum.NOW)) {
|
|
|
|
+ ret.setStatus(FinishExamResultEnum.AUDITING);
|
|
|
|
+ } else if (Objects.nonNull(exam.getInvigilateVerify()) && exam.getInvigilateVerify().equals(InvigilateVerifyEnum.LATER)) {
|
|
|
|
+ ret.setStatus(FinishExamResultEnum.SCORE_VIEW);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ if (ret.getObjectiveScore() == null) {
|
|
|
|
+ ret.setStatus(FinishExamResultEnum.SCORE_CALCULATE);
|
|
|
|
+ } else {
|
|
|
|
+ ret.setStatus(FinishExamResultEnum.SCORE_VIEW);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {//非实时出分
|
|
|
|
+ ret.setStatus(FinishExamResultEnum.NORMAL);
|
|
|
|
+ }
|
|
|
|
+ }else {
|
|
|
|
+ ret.setStatus(FinishExamResultEnum.NORMAL);
|
|
}
|
|
}
|
|
Long finishTime = System.currentTimeMillis();
|
|
Long finishTime = System.currentTimeMillis();
|
|
ExamRecordCacheUtil.setFinishTime(recordId, finishTime, false);
|
|
ExamRecordCacheUtil.setFinishTime(recordId, finishTime, false);
|
|
@@ -1095,6 +1105,9 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
|
|
public ExamResultBean result(Long recordId) {
|
|
public ExamResultBean result(Long recordId) {
|
|
ExamResultBean ret = new ExamResultBean();
|
|
ExamResultBean ret = new ExamResultBean();
|
|
TOeExamRecord er = null;
|
|
TOeExamRecord er = null;
|
|
|
|
+ Integer warningCount = null;
|
|
|
|
+ Integer breachStatus = null;
|
|
|
|
+ Integer hasAnswerFile = null;
|
|
if (ExamRecordCacheUtil.getId(recordId) == null) {
|
|
if (ExamRecordCacheUtil.getId(recordId) == null) {
|
|
er = toeExamRecordService.getById(recordId);
|
|
er = toeExamRecordService.getById(recordId);
|
|
if (er == null) {
|
|
if (er == null) {
|
|
@@ -1104,43 +1117,51 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
|
|
ret.setFinishTime(er.getFinishTime());
|
|
ret.setFinishTime(er.getFinishTime());
|
|
ret.setFinishType(er.getFinishType());
|
|
ret.setFinishType(er.getFinishType());
|
|
ret.setObjectiveScore(er.getObjectiveScore());
|
|
ret.setObjectiveScore(er.getObjectiveScore());
|
|
|
|
+ warningCount = er.getWarningCount();
|
|
|
|
+ breachStatus = er.getBreachStatus();
|
|
|
|
+ hasAnswerFile = er.getHasAnswerFile();
|
|
} else {
|
|
} else {
|
|
ret.setDurationSeconds(ExamRecordCacheUtil.getDurationSeconds(recordId));
|
|
ret.setDurationSeconds(ExamRecordCacheUtil.getDurationSeconds(recordId));
|
|
ret.setFinishTime(ExamRecordCacheUtil.getFinishTime(recordId));
|
|
ret.setFinishTime(ExamRecordCacheUtil.getFinishTime(recordId));
|
|
ret.setFinishType(ExamRecordCacheUtil.getFinishType(recordId));
|
|
ret.setFinishType(ExamRecordCacheUtil.getFinishType(recordId));
|
|
ret.setObjectiveScore(ExamRecordCacheUtil.getObjectiveScore(recordId));
|
|
ret.setObjectiveScore(ExamRecordCacheUtil.getObjectiveScore(recordId));
|
|
|
|
+ warningCount = ExamRecordCacheUtil.getWarningCount(recordId);
|
|
|
|
+ breachStatus = ExamRecordCacheUtil.getBreachStatus(recordId);
|
|
|
|
+ hasAnswerFile=ExamRecordCacheUtil.getHasAnswerFile(recordId);
|
|
}
|
|
}
|
|
|
|
|
|
//页面结果
|
|
//页面结果
|
|
- ExamCacheBean exam = getExamCacheBeanNative(er.getExamId());
|
|
|
|
- if (exam.getShowObjectiveScore() != null && exam.getShowObjectiveScore().intValue() == 1) {//实时出分
|
|
|
|
- if (InvigilateVerifyEnum.NOW.equals(exam.getInvigilateVerify())) {//实时审核
|
|
|
|
- Integer warningCount = ExamRecordCacheUtil.getWarningCount(recordId);
|
|
|
|
- Integer breachStatus = Objects.isNull(ExamRecordCacheUtil.getBreachStatus(recordId)) ? 1 : ExamRecordCacheUtil.getBreachStatus(recordId);
|
|
|
|
- if (warningCount != null && warningCount.intValue() > 0) {//有预警
|
|
|
|
- if (breachStatus == null) {//无违纪结果
|
|
|
|
- ret.setStatus(FinishExamResultEnum.AUDITING);
|
|
|
|
- } else if (breachStatus.intValue() == 0) {//违纪结果是false
|
|
|
|
- ret.setReviewResult(ReviewResultEnum.PASS);
|
|
|
|
- if (ret.getObjectiveScore() == null) {
|
|
|
|
- ret.setStatus(FinishExamResultEnum.SCORE_CALCULATE);
|
|
|
|
- } else {
|
|
|
|
- ret.setStatus(FinishExamResultEnum.SCORE_VIEW);
|
|
|
|
- }
|
|
|
|
- } else if (breachStatus.intValue() == 1) {//违纪结果是true
|
|
|
|
- ret.setReviewResult(ReviewResultEnum.UN_PASS);
|
|
|
|
- ret.setStatus(FinishExamResultEnum.BREACH);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- if (ret.getObjectiveScore() == null) {
|
|
|
|
- ret.setStatus(FinishExamResultEnum.SCORE_CALCULATE);
|
|
|
|
- } else {
|
|
|
|
- ret.setStatus(FinishExamResultEnum.SCORE_VIEW);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- } else {//非实时出分
|
|
|
|
- ret.setStatus(FinishExamResultEnum.NORMAL);
|
|
|
|
|
|
+ if(hasAnswerFile.intValue()==1) {
|
|
|
|
+ ExamCacheBean exam = getExamCacheBeanNative(er.getExamId());
|
|
|
|
+ if (exam.getShowObjectiveScore() != null && exam.getShowObjectiveScore().intValue() == 1) {//实时出分
|
|
|
|
+ if (InvigilateVerifyEnum.NOW.equals(exam.getInvigilateVerify())) {//实时审核
|
|
|
|
+ if (warningCount != null && warningCount.intValue() > 0) {//有预警
|
|
|
|
+ if (breachStatus == null) {//无违纪结果
|
|
|
|
+ ret.setStatus(FinishExamResultEnum.AUDITING);
|
|
|
|
+ } else if (breachStatus.intValue() == 0) {//违纪结果是false
|
|
|
|
+ ret.setReviewResult(ReviewResultEnum.PASS);
|
|
|
|
+ if (ret.getObjectiveScore() == null) {
|
|
|
|
+ ret.setStatus(FinishExamResultEnum.SCORE_CALCULATE);
|
|
|
|
+ } else {
|
|
|
|
+ ret.setStatus(FinishExamResultEnum.SCORE_VIEW);
|
|
|
|
+ }
|
|
|
|
+ } else if (breachStatus.intValue() == 1) {//违纪结果是true
|
|
|
|
+ ret.setReviewResult(ReviewResultEnum.UN_PASS);
|
|
|
|
+ ret.setStatus(FinishExamResultEnum.BREACH);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ if (ret.getObjectiveScore() == null) {
|
|
|
|
+ ret.setStatus(FinishExamResultEnum.SCORE_CALCULATE);
|
|
|
|
+ } else {
|
|
|
|
+ ret.setStatus(FinishExamResultEnum.SCORE_VIEW);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {//非实时出分
|
|
|
|
+ ret.setStatus(FinishExamResultEnum.NORMAL);
|
|
|
|
+ }
|
|
|
|
+ }else {
|
|
|
|
+ ret.setStatus(FinishExamResultEnum.NORMAL);
|
|
}
|
|
}
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|