From dd8dae675ea55425d5c68ae5a51fcfaf931a72ba Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期五, 28 六月 2024 16:53:28 +0800
Subject: [PATCH] 临时提交表增加题目答案副本
---
src/main/java/com/ycl/jxkg/domain/entity/ExamSubmitTemp.java | 4 ++
src/main/java/com/ycl/jxkg/domain/vo/QuestionAnswerCopyVO.java | 23 +++++++++++
src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java | 49 ++++++++++++++++--------
3 files changed, 59 insertions(+), 17 deletions(-)
diff --git a/src/main/java/com/ycl/jxkg/domain/entity/ExamSubmitTemp.java b/src/main/java/com/ycl/jxkg/domain/entity/ExamSubmitTemp.java
index d65d7a4..0d80671 100644
--- a/src/main/java/com/ycl/jxkg/domain/entity/ExamSubmitTemp.java
+++ b/src/main/java/com/ycl/jxkg/domain/entity/ExamSubmitTemp.java
@@ -46,6 +46,10 @@
/** 鐘舵�侊細涓存椂銆佸畬鎴� */
private ExamSubmitTempStatusEnum markPaperStatus;
+ @TableField("question_answer_copy")
+ /** 璇曞嵎涓鐩搴旂殑绛旀 */
+ private String questionAnswerCopy;
+
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
diff --git a/src/main/java/com/ycl/jxkg/domain/vo/QuestionAnswerCopyVO.java b/src/main/java/com/ycl/jxkg/domain/vo/QuestionAnswerCopyVO.java
new file mode 100644
index 0000000..608fe15
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/domain/vo/QuestionAnswerCopyVO.java
@@ -0,0 +1,23 @@
+package com.ycl.jxkg.domain.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/6/28 16:18
+ */
+@Data
+public class QuestionAnswerCopyVO {
+
+ /** 棰樼洰ID */
+ private Integer id;
+
+ /** 瑙f瀽 */
+ private String analyze;
+
+ /** 瀛﹀憳绛旀 */
+ private String correct;
+
+}
diff --git a/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java
index 43b3573..73ca4c6 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java
@@ -10,6 +10,7 @@
import com.ycl.jxkg.context.WebContext;
import com.ycl.jxkg.domain.entity.*;
import com.ycl.jxkg.domain.exam.PaperFixQuestionDTO;
+import com.ycl.jxkg.domain.exam.PaperQuestion;
import com.ycl.jxkg.domain.exam.PaperQuestionSettingDTO;
import com.ycl.jxkg.domain.form.AddTimeForm;
import com.ycl.jxkg.domain.form.ExamForm;
@@ -17,11 +18,8 @@
import com.ycl.jxkg.domain.query.ExamQuery;
import com.ycl.jxkg.domain.question.QuestionObject;
import com.ycl.jxkg.domain.vo.*;
-import com.ycl.jxkg.domain.vo.admin.exam.ExamPaperEditRequestVO;
import com.ycl.jxkg.domain.vo.admin.exam.ExamPaperMarkAnswerVO;
import com.ycl.jxkg.domain.vo.admin.exam.ExamPaperMarkVO;
-import com.ycl.jxkg.domain.vo.student.exam.ExamPaperReadVO;
-import com.ycl.jxkg.domain.vo.student.exam.ExamPaperSubmitVO;
import com.ycl.jxkg.enums.DeductTypeEnum;
import com.ycl.jxkg.enums.ExamPaperTypeEnum;
import com.ycl.jxkg.enums.QuestionTypeEnum;
@@ -32,11 +30,9 @@
import com.ycl.jxkg.server.WebsocketServer;
import com.ycl.jxkg.service.ExamPaperService;
import com.ycl.jxkg.service.ExamService;
-import com.ycl.jxkg.utils.JsonUtil;
import com.ycl.jxkg.utils.PageUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
-import org.springframework.context.annotation.Bean;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
@@ -192,6 +188,15 @@
startExamVO.setDoTime(hasJoin.getDoTime());
return Result.ok(startExamVO);
}
+ // 鍝嶅簲鏁版嵁
+ StartExamVO startExamVO = new StartExamVO();
+ startExamVO.setExamName(exam.getExamName());
+ startExamVO.setId(exam.getId());
+ startExamVO.setSuggestTime(examPaper.getSuggestTime());
+ // 璇曞嵎鍐呭
+ List<PaperFixQuestionVO> examData;
+ // 鎷垮埌棰樼洰鍓湰鏁版嵁
+ List<QuestionAnswerCopyVO> questionAnswerCopyVOList = new ArrayList<>(32);
// 灏嗛鐩浆鎹负鍙复鏃朵繚瀛樼殑棰樼洰缁撴瀯銆傚浐瀹氳瘯鍗峰拰闅忓簭璇曞嵎鐨勯鐩槸鐩存帴淇濆瓨鍒癱ontent瀛楁鐨�
if (ExamPaperTypeEnum.Fixed.getCode().equals(examPaper.getPaperType())
|| ExamPaperTypeEnum.RandomOrder.getCode().equals(examPaper.getPaperType())) {
@@ -199,17 +204,14 @@
throw new RuntimeException("璇曞嵎棰樼洰涓虹┖");
}
// 杞崲
- List<PaperFixQuestionVO> data = this.coverTo(examPaper);
- return Result.ok().data(data);
+ examData = this.coverTo(examPaper, questionAnswerCopyVOList);
} else if (ExamPaperTypeEnum.Random.getCode().equals(examPaper.getPaperType())) {
// 鏍规嵁闅忔満璇曞嵎鐨勯厤缃紝闅忔満鐢熸垚瀵瑰簲棰樼洰
if (!StringUtils.hasText(examPaper.getContent())) {
throw new RuntimeException("璇曞嵎閰嶇疆寮傚父锛岃鑱旂郴鑰佸笀");
}
List<PaperQuestionSettingDTO> paperSettingList = JSON.parseArray(examPaper.getContent(), PaperQuestionSettingDTO.class);
-
- // 璇曞嵎鍐呭
- List<PaperFixQuestionVO> examData = new ArrayList<>(8);
+ examData = new ArrayList<>(8);
for (PaperQuestionSettingDTO paperSetting : paperSettingList) {
PaperFixQuestionVO paperFixQuestionVO = new PaperFixQuestionVO();
paperFixQuestionVO.setTitle(paperSetting.getTitle());
@@ -219,6 +221,7 @@
if (paperSetting.getNum() > questions.size()) {
throw new RuntimeException("閰嶇疆鐨勯鐩暟涓嶈冻浠ョ敓鎴愯瘯鍗�");
}
+
// 鎷垮埌棰樼洰鍚庣粍瑁呬负鍙复鏃朵繚瀛樼殑棰樼洰缁撴瀯
List<DoQuestionVO> childQuestions = questions.stream().map(item -> {
DoQuestionVO doQuestionVO = new DoQuestionVO();
@@ -231,6 +234,13 @@
doQuestionVO.setId(item.getId());
doQuestionVO.setOriginalFile(item.getOriginalFile());
doQuestionVO.setAudioFile(item.getAudioFile());
+
+ // 棰樼洰鍓湰
+ QuestionAnswerCopyVO copy = new QuestionAnswerCopyVO();
+ copy.setAnalyze(JSON.parseObject(item.getContent(), PaperQuestion.class).getAnalyze());
+ copy.setCorrect(item.getCorrect());
+ questionAnswerCopyVOList.add(copy);
+
return doQuestionVO;
}).collect(Collectors.toList());
paperFixQuestionVO.setQuestionList(childQuestions);
@@ -238,19 +248,15 @@
}
ExamSubmitTemp examSubmitTemp = new ExamSubmitTemp();
examSubmitTemp.setExamId(id);
- //TODO
examSubmitTemp.setStatus(ExamSubmitTempStatusEnum.temp);
examSubmitTemp.setExamSubmit(JSON.toJSONString(examData));
examSubmitTemp.setCreateTime(new Date());
examSubmitTemp.setUserId(webContext.getCurrentUser().getId());
- //TODO
examSubmitTemp.setMarkPaperStatus(ExamSubmitTempStatusEnum.temp);
+ examSubmitTemp.setQuestionAnswerCopy(JSON.toJSONString(questionAnswerCopyVOList));
examSubmitTempMapper.insert(examSubmitTemp);
- StartExamVO startExamVO = new StartExamVO();
- startExamVO.setExamName(exam.getExamName());
- startExamVO.setId(exam.getId());
+
startExamVO.setTitleList(examData);
- startExamVO.setSuggestTime(examPaper.getSuggestTime());
return Result.ok(startExamVO);
}
return Result.ok();
@@ -260,9 +266,10 @@
* 灏嗘暟鎹簱瀛樺偍鐨勯鐩紝杞负鍙复鏃朵繚瀛樼殑棰樼洰缁撴瀯
*
* @param examPaper 璇曞嵎
+ * @param questionAnswerCopyVOList 棰樼洰鍓湰闆嗗悎
* @return
*/
- private List<PaperFixQuestionVO> coverTo(ExamPaper examPaper) {
+ private List<PaperFixQuestionVO> coverTo(ExamPaper examPaper, List<QuestionAnswerCopyVO> questionAnswerCopyVOList) {
if (!StringUtils.hasText(examPaper.getContent())) {
throw new RuntimeException("璇曞嵎鏈厤缃鐩紝璇疯仈绯昏�佸笀");
}
@@ -275,6 +282,7 @@
DoQuestionVO doQuestionVO = new DoQuestionVO();
doQuestionVO.setTitle(question.getTitle());
doQuestionVO.setQuestionType(item.getQuestionType());
+
// 濉┖棰橀渶瑕佹姽闄ontent(鍥犱负鏄瓟妗�)
if (QuestionTypeEnum.GapFilling.getCode().equals(doQuestionVO.getQuestionType())) {
question.getItems().stream().forEach(option -> {
@@ -285,6 +293,13 @@
doQuestionVO.setId(question.getId());
doQuestionVO.setOriginalFile(question.getOriginalFile());
doQuestionVO.setAudioFile(question.getAudioFile());
+
+ // 棰樼洰鍓湰
+ QuestionAnswerCopyVO copy = new QuestionAnswerCopyVO();
+ copy.setAnalyze(question.getAnalyze());
+ copy.setCorrect(question.getCorrect());
+ questionAnswerCopyVOList.add(copy);
+
return doQuestionVO;
}).collect(Collectors.toList());
if (ExamPaperTypeEnum.RandomOrder.getCode().equals(examPaper.getPaperType())) {
--
Gitblit v1.8.0