fix: 题库Word批量导入同一题型下多道题时选项未重置导致标签重复报选项格式不正确;简答题多行答案/解析续行并入完整内容

fix/exam-question-access-material-excel-delete-draft
chenyuan 5 days ago
parent 134fe299ba
commit d2831d3af9

@ -146,11 +146,12 @@ public class PlatformQuestionBankService {
String line = StringUtils.trimToEmpty(p.getText()); if (line.isEmpty()) continue;
String marker = line.replace("[", "").replace("]", "").replace("【", "").replace("】", "").trim();
if (Arrays.asList("单选题","多选题","判断题","简答题").contains(marker)) { if (current != null) { current.put("options", options); result.add(save(user,null,current)); } type = excelType(marker); current = null; options = new ArrayList<>(); continue; }
if (line.startsWith("题干") || line.startsWith("题目")) { if (current != null) { current.put("options", options); result.add(save(user,null,current)); } current = new LinkedHashMap<>(); current.put("taskKey",taskKey); current.put("type",type); current.put("stem",after(line)); continue; }
if (line.startsWith("题干") || line.startsWith("题目")) { if (current != null) { current.put("options", options); result.add(save(user,null,current)); } current = new LinkedHashMap<>(); current.put("taskKey",taskKey); current.put("type",type); current.put("stem",after(line)); options = new ArrayList<>(); continue; }
if (current == null) continue;
if (line.matches("^[A-H][..、].*")) { options.add(map("label",line.substring(0,1),"content",line.substring(2).trim())); }
else if (line.startsWith("答案")) current.put("answer",after(line));
else if (line.startsWith("解析")) current.put("analysis",after(line));
else if ("SHORT_ANSWER".equals(current.get("type"))) { if (current.get("analysis") != null) current.put("analysis", current.get("analysis") + "\n" + line); else if (current.get("answer") != null) current.put("answer", current.get("answer") + "\n" + line); }
}
if (current != null) { current.put("options", options); result.add(save(user,null,current)); }
if (result.isEmpty()) throw new IllegalArgumentException("Word未读取到题目"); return result;

Loading…
Cancel
Save