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/excel/SelectExcel.java | 12 +++---
src/main/resources/mapper/SubjectMapper.xml | 5 ++
src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java | 47 +++++++++++++----------
src/main/java/com/mindskip/xzs/repository/SubjectMapper.java | 9 ++++
4 files changed, 47 insertions(+), 26 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());
diff --git a/src/main/java/com/mindskip/xzs/excel/SelectExcel.java b/src/main/java/com/mindskip/xzs/excel/SelectExcel.java
index 70e36d2..07d185b 100644
--- a/src/main/java/com/mindskip/xzs/excel/SelectExcel.java
+++ b/src/main/java/com/mindskip/xzs/excel/SelectExcel.java
@@ -58,12 +58,12 @@
DataValidation subjectValidation = dataValidationHelper.createValidation(subjectConstraint, subjectTypeRange);
sheet.addValidationData(subjectValidation);
- // 璁剧疆閫夐」涓嬫媺鑼冨洿锛岀4鍒楋紝1500琛屽唴
- CellRangeAddressList optionRange = new CellRangeAddressList(2, 1500, 3, 3);
- // 娣诲姞閫夐」涓嬫媺
- DataValidationConstraint optionConstraint = dataValidationHelper.createExplicitListConstraint(optionList);
- DataValidation optionValidation = dataValidationHelper.createValidation(optionConstraint, optionRange);
- sheet.addValidationData(optionValidation);
+// // 璁剧疆閫夐」涓嬫媺鑼冨洿锛岀4鍒楋紝1500琛屽唴
+// CellRangeAddressList optionRange = new CellRangeAddressList(2, 1500, 3, 3);
+// // 娣诲姞閫夐」涓嬫媺
+// DataValidationConstraint optionConstraint = dataValidationHelper.createExplicitListConstraint(optionList);
+// DataValidation optionValidation = dataValidationHelper.createValidation(optionConstraint, optionRange);
+// sheet.addValidationData(optionValidation);
// 璁剧疆閫夐」涓嬫媺鑼冨洿锛岀4鍒楋紝1500琛屽唴
CellRangeAddressList answerRange = new CellRangeAddressList(2, 1500, 5, 5);
diff --git a/src/main/java/com/mindskip/xzs/repository/SubjectMapper.java b/src/main/java/com/mindskip/xzs/repository/SubjectMapper.java
index bd374bd..4b195e4 100644
--- a/src/main/java/com/mindskip/xzs/repository/SubjectMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/SubjectMapper.java
@@ -41,4 +41,13 @@
* @return
*/
Subject selectByName(@Param("id") Integer id, @Param("name") String name);
+
+
+ /**
+ * 鍚嶇О鏌ヨ鏄惁瀛樺湪
+ *
+ * @param name
+ * @return
+ */
+ Subject getByName(@Param("name") String name);
}
diff --git a/src/main/resources/mapper/SubjectMapper.xml b/src/main/resources/mapper/SubjectMapper.xml
index 7c75ea3..ee0a8b0 100644
--- a/src/main/resources/mapper/SubjectMapper.xml
+++ b/src/main/resources/mapper/SubjectMapper.xml
@@ -149,6 +149,11 @@
</select>
+ <select id="getByName" resultType="com.mindskip.xzs.domain.Subject">
+ SELECT * FROM t_subject WHERE name = #{name} AND deleted = 0
+ </select>
+
+
<select id="page" resultMap="BaseResultMap"
parameterType="com.mindskip.xzs.viewmodel.admin.education.SubjectPageRequestVM">
SELECT
--
Gitblit v1.8.0