From 93b0c663078aa47828d5aabe901a4b4c4ee92632 Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期一, 01 七月 2024 11:17:09 +0800
Subject: [PATCH] refactor:恢复成绩接口

---
 src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java |   57 ++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 36 insertions(+), 21 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..79e876d 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())) {
@@ -498,11 +513,11 @@
         //鎻掑叆exam_paper_answer(鎴愮哗琛�)
         ExamPaperScore examPaperScore = new ExamPaperScore();
         BeanUtils.copyProperties(examPaperMark,examPaperScore);
-        examPaperScore.setUserScore(new BigDecimal(examPaperMark.getScore()));
-        examPaperScore.setPaperScore(new BigDecimal(examPaperMark.getTotalScore()));
+        examPaperScore.setScore(new BigDecimal(examPaperMark.getScore()));
+        examPaperScore.setTotalScore(new BigDecimal(examPaperMark.getTotalScore()));
         examPaperScore.setJudgeUser(userId);
-        examPaperScore.setCreateUser(examPaperMark.getUserId());
-        examPaperScore.setAnswerTime(examPaperMark.getSubmitTime());
+        examPaperScore.setUserId(examPaperMark.getUserId());
+        examPaperScore.setSubmitTime(examPaperMark.getSubmitTime());
         examPaperScore.setPaperContent(JSON.toJSONString(examPaperMark.getTitleItems()));
         long questionCorrect =0;
         long questionCount=0;

--
Gitblit v1.8.0