|
@@ -842,7 +842,6 @@ public class TOeExamRecordServiceImpl extends ServiceImpl<TOeExamRecordMapper, T
|
|
@Transactional
|
|
@Transactional
|
|
@Override
|
|
@Override
|
|
public void calculateScore(Long recordId) {
|
|
public void calculateScore(Long recordId) {
|
|
-
|
|
|
|
TOeExamRecord rec = this.getById(recordId);
|
|
TOeExamRecord rec = this.getById(recordId);
|
|
|
|
|
|
ExamPaperCacheBean ep = examPaperService.getExamPaperCacheBean(rec.getPaperId());
|
|
ExamPaperCacheBean ep = examPaperService.getExamPaperCacheBean(rec.getPaperId());
|
|
@@ -885,50 +884,53 @@ public class TOeExamRecordServiceImpl extends ServiceImpl<TOeExamRecordMapper, T
|
|
log.info("not a objective question recordId:" + answer.getExamRecordId() + " key:" + key);
|
|
log.info("not a objective question recordId:" + answer.getExamRecordId() + " key:" + key);
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
-
|
|
|
|
if (cb.getStructType().intValue() == 1) {
|
|
if (cb.getStructType().intValue() == 1) {
|
|
- if (checkSingleChoice(answer.getAnswer(), cb.getChoiceAnswer())) {
|
|
|
|
- answer.setScore(cb.getScore());
|
|
|
|
|
|
+ if (Objects.nonNull(cb.getChoiceAnswer()) && cb.getChoiceAnswer().size() > 0) {
|
|
|
|
+ if (checkSingleChoice(answer.getAnswer(), cb.getChoiceAnswer())) {
|
|
|
|
+ answer.setScore(cb.getScore());
|
|
|
|
+ } else {
|
|
|
|
+ answer.setScore(0.0);
|
|
|
|
+ }
|
|
} else {
|
|
} else {
|
|
answer.setScore(0.0);
|
|
answer.setScore(0.0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (cb.getStructType().intValue() == 2) {
|
|
if (cb.getStructType().intValue() == 2) {
|
|
ExamCacheBean ec = examService.getExamCacheBean(tOeExamRecordMapper.selectById(recordId).getExamId());
|
|
ExamCacheBean ec = examService.getExamCacheBean(tOeExamRecordMapper.selectById(recordId).getExamId());
|
|
- int r = checkMultipleChoice(answer.getAnswer(), cb.getChoiceAnswer());
|
|
|
|
- if (ec.getObjectiveScorePolicy().equals(ObjectiveScorePolicyEnum.EQUAL)) {// 全对给分
|
|
|
|
- if (r == 1) {
|
|
|
|
- answer.setScore(cb.getScore());
|
|
|
|
- } else {
|
|
|
|
- answer.setScore(0.0);
|
|
|
|
|
|
+ if (Objects.nonNull(cb.getChoiceAnswer()) && cb.getChoiceAnswer().size() > 0) {
|
|
|
|
+ int r = checkMultipleChoice(answer.getAnswer(), cb.getChoiceAnswer());
|
|
|
|
+ if (ec.getObjectiveScorePolicy().equals(ObjectiveScorePolicyEnum.EQUAL)) {// 全对给分
|
|
|
|
+ if (r == 1) {
|
|
|
|
+ answer.setScore(cb.getScore());
|
|
|
|
+ } else {
|
|
|
|
+ answer.setScore(0.0);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- }
|
|
|
|
- if (ec.getObjectiveScorePolicy().equals(ObjectiveScorePolicyEnum.PARTIAL)) {// 漏选半分
|
|
|
|
- if (r == 1) {
|
|
|
|
- answer.setScore(cb.getScore());
|
|
|
|
- } else if (r == 0) {
|
|
|
|
- BigDecimal b = new BigDecimal(cb.getScore()).divide(new BigDecimal("2"), 1, BigDecimal.ROUND_UP);
|
|
|
|
- answer.setScore(b.doubleValue());
|
|
|
|
- } else {
|
|
|
|
- answer.setScore(0.0);
|
|
|
|
|
|
+ if (ec.getObjectiveScorePolicy().equals(ObjectiveScorePolicyEnum.PARTIAL)) {// 漏选半分
|
|
|
|
+ if (r == 1) {
|
|
|
|
+ answer.setScore(cb.getScore());
|
|
|
|
+ } else if (r == 0) {
|
|
|
|
+ BigDecimal b = new BigDecimal(cb.getScore()).divide(new BigDecimal("2"), 1, BigDecimal.ROUND_UP);
|
|
|
|
+ answer.setScore(b.doubleValue());
|
|
|
|
+ } else {
|
|
|
|
+ answer.setScore(0.0);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+ } else {
|
|
|
|
+ answer.setScore(0.0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (cb.getStructType().intValue() == 3) {
|
|
if (cb.getStructType().intValue() == 3) {
|
|
if (StringUtils.isNotBlank(answer.getAnswer())) {
|
|
if (StringUtils.isNotBlank(answer.getAnswer())) {
|
|
String answerStr = answer.getAnswer().replaceAll("\n", "");
|
|
String answerStr = answer.getAnswer().replaceAll("\n", "");
|
|
- if (StringUtils.isNotBlank(answerStr)) {
|
|
|
|
- if (Boolean.parseBoolean(answerStr) == cb.getBoolAnswer().booleanValue()) {
|
|
|
|
- answer.setScore(cb.getScore());
|
|
|
|
- } else {
|
|
|
|
- answer.setScore(0.0);
|
|
|
|
- }
|
|
|
|
|
|
+ if (Objects.nonNull(answerStr) && Objects.nonNull(cb.getBoolAnswer()) && Boolean.parseBoolean(answerStr) == cb.getBoolAnswer().booleanValue()) {
|
|
|
|
+ answer.setScore(cb.getScore());
|
|
|
|
+ } else {
|
|
|
|
+ answer.setScore(0.0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
examAnswerService.saveOrUpdate(answer);
|
|
examAnswerService.saveOrUpdate(answer);
|
|
-
|
|
|
|
return answer.getScore();
|
|
return answer.getScore();
|
|
}
|
|
}
|
|
|
|
|