From 47cd9ecc0eff38ffe6b3b794b2bf197e958f4403 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期三, 14 五月 2025 15:50:57 +0800
Subject: [PATCH] bug:学员有状态不能修改问题

---
 src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java |   88 ++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 85 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java b/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java
index 56dbf2f..3eb5a3a 100644
--- a/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java
+++ b/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java
@@ -306,12 +306,14 @@
                     // 淇濆瓨棰樼洰淇℃伅
                     // 璁剧疆棰樺瀷
                     question.setQuestionType(QuestionTypeEnum.get(excelQuestion.getQuestionType()));
+                    // 绛旀鍘绘帀绌烘牸
+                    String rightAnswer = excelQuestion.getCorrect().replaceAll("\\s+", "");
                     // 绛旀(澶氶�夐渶瑕佺敤,鍒嗗壊淇濆瓨瀛楃涓插埌鏁版嵁搴�)
-                    String[] corrects = excelQuestion.getCorrect().split(SPLIT);
+                    String[] corrects = rightAnswer.split(SPLIT);
                     if (corrects.length > 1) {
                         question.setCorrect(Arrays.asList(corrects).stream().collect(Collectors.joining(",")));
                     } else {
-                        question.setCorrect(excelQuestion.getCorrect());
+                        question.setCorrect(rightAnswer);
                     }
 
                     // 闅惧害
@@ -364,6 +366,8 @@
                         questionSubjectService.saves(questionSubjectsList);
                     }
                 } else {
+                    question.setId(questionId);
+                    this.updateQuestion(question, excelQuestion);
                     List<String> subjectNames = Arrays.asList(excelQuestion.getSubjectName().split(SPLIT));
                     List<Subject> subjects = subjectNames.stream().map(name -> {
                         // 鍒ゆ柇璇剧洰鏄惁瀛樺湪浜庢暟鎹簱锛屽鏋滀笉瀛樺湪鍒欒嚜鍔ㄦ柊澧炶鐩�
@@ -379,7 +383,7 @@
                     // 鏋勫缓璇剧洰-棰樼洰淇℃伅
                     questionSubjectsList = subjects.stream()
                             .filter(subject -> {
-                                // 鍘婚噸棰樼洰锛氶骞�+璇剧洰鐩稿悓鎵嶇畻鍚屼竴棰�
+                                // 鍘婚噸棰樼洰锛氶骞�+璇剧洰鐩稿悓鎵嶇畻鍚屼竴棰�(棰樺共鐩稿悓锛氫絾鏈夋柊澧炵殑璇剧洰鏃舵墠鍋氫繚瀛�)
                                 List<QuestionSubjectVO> lists = questionService.countQuestionByTitleAndSubject(excelQuestion.getTitle(), subject.getId());
                                 return 0 == lists.size();
                             })
@@ -403,6 +407,84 @@
         return RestResponse.ok();
     }
 
+    /**
+     * 瀵煎叆鏃讹紝濡傛灉棰樺共閲嶅锛岄偅涔堟洿鏂伴鐩俊鎭紙璇ユ柟娉曚笉浼氭洿鏂伴鐩殑棰樺簱淇℃伅锛�
+     *
+     * @param question
+     * @param excelQuestion
+     */
+    private void updateQuestion(Question question, QuestionImportVO excelQuestion) {
+        Question question1 = questionService.selectById(question.getId());
+        // 璇ラ鐨勯�夐」
+        List<QuestionItemObject> options = new ArrayList<>(4);
+        // 閫夐」鍐呭
+        QuestionItemObject optionA = new QuestionItemObject();
+        optionA.setPrefix("A");
+        optionA.setContent(excelQuestion.getOptionA());
+        options.add(optionA);
+
+        QuestionItemObject optionB = new QuestionItemObject();
+        optionB.setPrefix("B");
+        optionB.setContent(excelQuestion.getOptionB());
+        options.add(optionB);
+
+        if (StringUtils.isNotBlank(excelQuestion.getOptionC())) {
+            QuestionItemObject optionC = new QuestionItemObject();
+            optionC.setPrefix("C");
+            optionC.setContent(excelQuestion.getOptionC());
+            options.add(optionC);
+        }
+        if (StringUtils.isNotBlank(excelQuestion.getOptionD())) {
+            QuestionItemObject optionD = new QuestionItemObject();
+            optionD.setPrefix("D");
+            optionD.setContent(excelQuestion.getOptionD());
+            options.add(optionD);
+        }
+
+        // 鏇存柊棰樼洰鍐呭
+        QuestionObject questionObject = new QuestionObject();
+        questionObject.setQuestionItemObjects(options);
+        questionObject.setAnalyze(excelQuestion.getAnalyze());
+        questionObject.setTitleContent(excelQuestion.getTitle());
+        questionObject.setCorrect(excelQuestion.getCorrect());
+
+        TextContent textContent = new TextContent();
+        textContent.setContent(JSON.toJSONString(questionObject));
+        textContent.setCreateTime(new Date());
+        textContent.setId(question1.getInfoTextContentId());
+        textContentService.updateByIdFilter(textContent);
+
+        // 淇濆瓨棰樼洰淇℃伅
+        // 璁剧疆棰樺瀷
+        question.setQuestionType(QuestionTypeEnum.get(excelQuestion.getQuestionType()));
+        // 绛旀鍘绘帀绌烘牸
+        String rightAnswer = excelQuestion.getCorrect().replaceAll("\\s+", "");
+        // 绛旀(澶氶�夐渶瑕佺敤,鍒嗗壊淇濆瓨瀛楃涓插埌鏁版嵁搴�)
+        String[] corrects = rightAnswer.split(SPLIT);
+        if (corrects.length > 1) {
+            question.setCorrect(Arrays.asList(corrects).stream().collect(Collectors.joining(",")));
+        } else {
+            question.setCorrect(rightAnswer);
+        }
+
+        // 闅惧害
+        question.setDifficult(excelQuestion.getDifficult());
+        // 鍒嗘暟
+        if (StringUtils.isBlank(excelQuestion.getScore())) {
+            question.setScore(ExamUtil.scoreFromVM(QuestionSourceEnum.fromType(question.getQuestionType()) + ""));
+        } else {
+            question.setScore(ExamUtil.scoreFromVM(String.valueOf(excelQuestion.getScore())));
+        }
+        // 鍒涘缓浜�
+        question.setCreateUser(1);
+        question.setStatus(QuestionStatusEnum.OK.getCode());
+        question.setCreateTime(new Date());
+        question.setDeleted(Boolean.FALSE);
+//        question.setInfoTextContentId(textContent.getId());
+        questionService.updateByIdFilter(question);
+
+    }
+
 //    @PostMapping("/import")
 //    public RestResponse importQuestion(@RequestPart("file") MultipartFile file) throws Exception {
 //        List<QuestionEditVO> questionEditVOS = ExcelUtils.readMultipartFile(file, QuestionEditVO.class)

--
Gitblit v1.8.0