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/service/impl/ExamServiceImpl.java |   49 ++++++++++++++++++++++++++++++++-----------------
 1 files changed, 32 insertions(+), 17 deletions(-)

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