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