From 24fd92d92b1da73361a6873f31e969af78aeeee8 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期四, 28 十一月 2024 11:57:50 +0800
Subject: [PATCH] 导入题目时,如果课目不存在自动创建

---
 src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java |   47 +++++++++++++++++++++++++++--------------------
 1 files changed, 27 insertions(+), 20 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 e8879cd..56dbf2f 100644
--- a/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java
+++ b/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.github.pagehelper.PageInfo;
 import com.mindskip.xzs.base.BaseApiController;
 import com.mindskip.xzs.base.RestResponse;
@@ -330,18 +331,22 @@
                     questionService.insert(question);
 
 
-                    // 鏌ュ嚭鎵�鏈夌殑璇剧洰
-                    List<Subject> subjects = subjectMapper.allSubject(new ArrayList<>(), Boolean.TRUE);
+
                     List<String> subjectNames = Arrays.asList(excelQuestion.getSubjectName().split(SPLIT));
-                    List<Subject> targetSubject = subjects.stream()
-                            .filter(subject -> subjectNames.contains(subject.getName()))
-                            .collect(Collectors.toList());
-                    if (CollectionUtils.isEmpty(targetSubject)) {
-                        // todo 璁板綍杩欎釜閿欒
-                        continue;
-                    }
+                    List<Subject> subjects = subjectNames.stream().map(name -> {
+                        // 鍒ゆ柇璇剧洰鏄惁瀛樺湪浜庢暟鎹簱锛屽鏋滀笉瀛樺湪鍒欒嚜鍔ㄦ柊澧炶鐩�
+                        Subject byName = subjectMapper.getByName(name);
+                        if (Objects.isNull(byName)) {
+                            byName = new Subject();
+                            byName.setName(name);
+                            byName.setDeleted(false);
+                            subjectMapper.insert(byName);
+                        }
+                        return byName;
+                    }).collect(Collectors.toList());
+
                     // 鏋勫缓璇剧洰-棰樼洰淇℃伅
-                    questionSubjectsList = targetSubject.stream()
+                    questionSubjectsList = subjects.stream()
                             .filter(subject -> {
                                 // 鍘婚噸棰樼洰锛氶骞�+璇剧洰鐩稿悓鎵嶇畻鍚屼竴棰�
                                 List<QuestionSubjectVO> lists = questionService.countQuestionByTitleAndSubject(excelQuestion.getTitle(), subject.getId());
@@ -359,18 +364,20 @@
                         questionSubjectService.saves(questionSubjectsList);
                     }
                 } else {
-                    // 鏌ュ嚭鎵�鏈夌殑璇剧洰
-                    List<Subject> subjects = subjectMapper.allSubject(new ArrayList<>(), Boolean.TRUE);
                     List<String> subjectNames = Arrays.asList(excelQuestion.getSubjectName().split(SPLIT));
-                    List<Subject> targetSubject = subjects.stream()
-                            .filter(subject -> subjectNames.contains(subject.getName()))
-                            .collect(Collectors.toList());
-                    if (CollectionUtils.isEmpty(targetSubject)) {
-                        // todo 璁板綍杩欎釜閿欒
-                        continue;
-                    }
+                    List<Subject> subjects = subjectNames.stream().map(name -> {
+                        // 鍒ゆ柇璇剧洰鏄惁瀛樺湪浜庢暟鎹簱锛屽鏋滀笉瀛樺湪鍒欒嚜鍔ㄦ柊澧炶鐩�
+                        Subject byName = subjectMapper.getByName(name);
+                        if (Objects.isNull(byName)) {
+                            byName = new Subject();
+                            byName.setName(name);
+                            byName.setDeleted(false);
+                            subjectMapper.insert(byName);
+                        }
+                        return byName;
+                    }).collect(Collectors.toList());
                     // 鏋勫缓璇剧洰-棰樼洰淇℃伅
-                    questionSubjectsList = targetSubject.stream()
+                    questionSubjectsList = subjects.stream()
                             .filter(subject -> {
                                 // 鍘婚噸棰樼洰锛氶骞�+璇剧洰鐩稿悓鎵嶇畻鍚屼竴棰�
                                 List<QuestionSubjectVO> lists = questionService.countQuestionByTitleAndSubject(excelQuestion.getTitle(), subject.getId());

--
Gitblit v1.8.0