提交答案的格式

beetlsql3-dev
Mlxa0324 2 years ago
parent 89bfe30d8d
commit 8902af59c4

@ -1,15 +1,15 @@
package com.ibeetl.jlw.entity.dto; package com.ibeetl.jlw.entity.dto;
import cn.hutool.core.util.ObjectUtil;
import com.ibeetl.jlw.enums.QuestionLogAddTypeEnum; import com.ibeetl.jlw.enums.QuestionLogAddTypeEnum;
import lombok.Data; import lombok.Data;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.Date; import java.util.*;
import java.util.Map;
import java.util.TreeSet;
import static cn.hutool.core.util.ArrayUtil.join;
import static com.ibeetl.jlw.enums.QuestionLogAddTypeEnum.PRE_SUBMIT; import static com.ibeetl.jlw.enums.QuestionLogAddTypeEnum.PRE_SUBMIT;
/** /**
@ -36,7 +36,7 @@ public class QuestionLogAddDTO {
* questionLogMapvalue,Key * questionLogMapvalue,Key
*/ */
@NotEmpty(message = "提交答案不能为空") @NotEmpty(message = "提交答案不能为空")
private Map<String, TreeSet<String>> questionLogMap; private Map<String, String> questionLogMap;
/** /**
* *
@ -54,4 +54,30 @@ public class QuestionLogAddDTO {
// 默认值 // 默认值
setQuestionLogAddType(PRE_SUBMIT); setQuestionLogAddType(PRE_SUBMIT);
} }
/**
* ,
* @param answersText
* @return
*/
public static String answerDistinctSort(@NotEmpty(message = "题目答案不能为空!") String answersText) {
return join(new TreeSet<>(Arrays.asList(answersText.split(","))).toArray(), ",");
}
/**
* Setting
* @param questionLogMap
*/
public void setQuestionLogMap(Map<String, String> questionLogMap) {
this.questionLogMap = questionLogMap;
// 处理答案排序去重
if (ObjectUtil.isNotEmpty(questionLogMap)) {
Map<String, String> result = new HashMap<>(6);
questionLogMap.forEach((snapId, answersText) -> {
result.put(snapId, answerDistinctSort(answersText));
});
this.questionLogMap = result;
}
}
} }

@ -480,7 +480,7 @@ public class GeneralQuestionLogService extends CoreBaseService<GeneralQuestionLo
public void insertQuestionLog(@NotNull(message = "提交题目信息不能为空") QuestionLogAddDTO questionLogAddDTO) { public void insertQuestionLog(@NotNull(message = "提交题目信息不能为空") QuestionLogAddDTO questionLogAddDTO) {
Long questionSettingId = questionLogAddDTO.getQuestionSettingId(); Long questionSettingId = questionLogAddDTO.getQuestionSettingId();
Map<String, TreeSet<String>> questionLogMap = questionLogAddDTO.getQuestionLogMap(); Map<String, String> questionLogMap = questionLogAddDTO.getQuestionLogMap();
// 查询学生身份 // 查询学生身份
final Student student = getStudent(); final Student student = getStudent();
@ -538,7 +538,7 @@ public class GeneralQuestionLogService extends CoreBaseService<GeneralQuestionLo
QuestionLogAddTypeEnum addType = questionLogAddDTO.getQuestionLogAddType(); QuestionLogAddTypeEnum addType = questionLogAddDTO.getQuestionLogAddType();
Date addTime = questionLogAddDTO.getAddTime(); Long studentId = student.getStudentId(); Date addTime = questionLogAddDTO.getAddTime(); Long studentId = student.getStudentId();
Long questionSettingId = questionLogAddDTO.getQuestionSettingId(); Long questionSettingId = questionLogAddDTO.getQuestionSettingId();
Map<String, TreeSet<String>> questionLogMap = questionLogAddDTO.getQuestionLogMap(); Map<String, String> questionLogMap = questionLogAddDTO.getQuestionLogMap();
// 查询符合条件的日志表 // 查询符合条件的日志表
String questionSnapshotIds = join(questionLogMap.keySet().toArray(), ","); String questionSnapshotIds = join(questionLogMap.keySet().toArray(), ",");
@ -564,7 +564,7 @@ public class GeneralQuestionLogService extends CoreBaseService<GeneralQuestionLo
} }
Assert.isTrue(!questionLog.getQuestionLogAddType().equals(addType), "无法再次提交答案,题目已完成!"); Assert.isTrue(!questionLog.getQuestionLogAddType().equals(addType), "无法再次提交答案,题目已完成!");
// 学生提交的答案 // 学生提交的答案
String answersText = join(questionLogMap.get(questionLog.getGeneralResourcesQuestionSnapshotId()).toArray(), ","); String answersText = join(questionLogMap.get(questionLog.getGeneralResourcesQuestionSnapshotId()), ",");
// 是否是正确答案 // 是否是正确答案
Boolean isCorrectAnswer = questionLog.getQuestionAnswer().equalsIgnoreCase(answersText); Boolean isCorrectAnswer = questionLog.getQuestionAnswer().equalsIgnoreCase(answersText);
// 计算该题目学生的得分情况 // 计算该题目学生的得分情况

Loading…
Cancel
Save