From 6f58f2cb4ab7d8717cfc8995142ba62f2be09af1 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期二, 02 七月 2024 15:58:10 +0800 Subject: [PATCH] 题目导入完善 --- src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java | 225 +++++++++++++++++++++++++++++--------------------------- 1 files changed, 116 insertions(+), 109 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 6c0bb5c..ef605d1 100644 --- a/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java +++ b/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java @@ -63,7 +63,7 @@ private final QuestionSubjectService questionSubjectService; private final DeptQuestionMapper deptQuestionMapper; - private static final String SPLIT = "銆�"; + private static final String SPLIT = ","; public QuestionController(QuestionService questionService, TextContentService textContentService, SubjectMapper subjectMapper, DepartmentMapper departmentMapper, QuestionSubjectService questionSubjectService, DeptQuestionMapper deptQuestionMapper) { this.questionService = questionService; @@ -237,114 +237,114 @@ * @param file * @throws IOException */ - @PostMapping("/question/import") - @Transactional(rollbackFor = Exception.class) - public RestResponse importQuestion(@RequestPart("file") MultipartFile file) throws IOException { - Consumer<List<QuestionImportVO>> consumer = (data) -> { - // 棰樼洰鐨勮鐩俊鎭� - List<QuestionSubject> questionSubjectsList = new ArrayList<>(48); - for (int i = 0; i < data.size(); i++) { - // 棰樼洰瀹炰綋 - Question question = new Question(); - // 璇诲彇鐨勯鐩� - QuestionImportVO excelQuestion = data.get(i); - - // 濡傛灉鏄涓�鏉″畬鏁存暟鎹紝閭d箞缁х画寰�鍚庤鍙栭�夐」鍐呭 - if (excelQuestion.master()) { - // 璇ラ鐨勯�夐」 - List<QuestionItemObject> options = new ArrayList<>(4); - // 閫夐」鍐呭 - QuestionItemObject option = new QuestionItemObject(); - option.setPrefix(excelQuestion.getOptionName()); - option.setContent(excelQuestion.getOptionValue()); - options.add(option); - int next = 1; - // 缁х画寰�鍚庤閫夐」 - while (Boolean.TRUE) { - // 鍒ゆ柇鏄惁鏄渶鍚庝竴鏉� - if (next + i == data.size()) { - break; - } - QuestionImportVO nextQuestion = data.get(next + i); - if (nextQuestion.master()) { - break; - } - QuestionItemObject nextOption = new QuestionItemObject(); - nextOption.setPrefix(nextQuestion.getOptionName()); - nextOption.setContent(nextQuestion.getOptionValue()); - options.add(nextOption); - next++; - } - i += next; - - // 淇濆瓨棰樼洰鍐呭 - 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()); - textContentService.insert(textContent); - - // 淇濆瓨棰樼洰淇℃伅 - // 璁剧疆棰樺瀷 - question.setQuestionType(QuestionTypeEnum.get(excelQuestion.getQuestionType())); - // 绛旀(澶氶�夐渶瑕佺敤,鍒嗗壊淇濆瓨瀛楃涓插埌鏁版嵁搴�) - String[] corrects = excelQuestion.getCorrect().split(SPLIT); - if (corrects.length > 1) { - question.setCorrect(Arrays.asList(corrects).stream().collect(Collectors.joining(","))); - } else { - question.setCorrect(excelQuestion.getCorrect()); - } - - // 闅惧害 - question.setDifficult(excelQuestion.getDifficult()); - // 鍒嗘暟 - 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.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; - } - // 鏋勫缓璇剧洰-棰樼洰淇℃伅 - questionSubjectsList = targetSubject.stream().map(subject -> { - QuestionSubject questionSubject = new QuestionSubject(); - questionSubject.setQuestionId(question.getId()); - questionSubject.setSubjectId(subject.getId()); - questionSubject.setDeleted(0); - return questionSubject; - }).collect(Collectors.toList()); - } - System.out.println(question); - } - // 鎵归噺淇濆瓨棰樼洰-璇剧洰淇℃伅 - if (! CollectionUtils.isEmpty(questionSubjectsList)) { - questionSubjectService.saves(questionSubjectsList); - } - }; - EasyExcel.read(file.getInputStream(), QuestionImportVO.class, new CurrencyDataListener(consumer)).sheet("妯℃澘").doRead(); - return RestResponse.ok(); - } +// @PostMapping("/question/import") +// @Transactional(rollbackFor = Exception.class) +// public RestResponse importQuestion(@RequestPart("file") MultipartFile file) throws IOException { +// Consumer<List<QuestionImportVO>> consumer = (data) -> { +// // 棰樼洰鐨勮鐩俊鎭� +// List<QuestionSubject> questionSubjectsList = new ArrayList<>(48); +// for (int i = 0; i < data.size(); i++) { +// // 棰樼洰瀹炰綋 +// Question question = new Question(); +// // 璇诲彇鐨勯鐩� +// QuestionImportVO excelQuestion = data.get(i); +// +// // 濡傛灉鏄涓�鏉″畬鏁存暟鎹紝閭d箞缁х画寰�鍚庤鍙栭�夐」鍐呭 +// if (excelQuestion.master()) { +// // 璇ラ鐨勯�夐」 +// List<QuestionItemObject> options = new ArrayList<>(4); +// // 閫夐」鍐呭 +// QuestionItemObject option = new QuestionItemObject(); +// option.setPrefix(excelQuestion.getOptionName()); +// option.setContent(excelQuestion.getOptionValue()); +// options.add(option); +// int next = 1; +// // 缁х画寰�鍚庤閫夐」 +// while (Boolean.TRUE) { +// // 鍒ゆ柇鏄惁鏄渶鍚庝竴鏉� +// if (next + i == data.size()) { +// break; +// } +// QuestionImportVO nextQuestion = data.get(next + i); +// if (nextQuestion.master()) { +// break; +// } +// QuestionItemObject nextOption = new QuestionItemObject(); +// nextOption.setPrefix(nextQuestion.getOptionName()); +// nextOption.setContent(nextQuestion.getOptionValue()); +// options.add(nextOption); +// next++; +// } +// i += next; +// +// // 淇濆瓨棰樼洰鍐呭 +// 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()); +// textContentService.insert(textContent); +// +// // 淇濆瓨棰樼洰淇℃伅 +// // 璁剧疆棰樺瀷 +// question.setQuestionType(QuestionTypeEnum.get(excelQuestion.getQuestionType())); +// // 绛旀(澶氶�夐渶瑕佺敤,鍒嗗壊淇濆瓨瀛楃涓插埌鏁版嵁搴�) +// String[] corrects = excelQuestion.getCorrect().split(SPLIT); +// if (corrects.length > 1) { +// question.setCorrect(Arrays.asList(corrects).stream().collect(Collectors.joining(","))); +// } else { +// question.setCorrect(excelQuestion.getCorrect()); +// } +// +// // 闅惧害 +// question.setDifficult(excelQuestion.getDifficult()); +// // 鍒嗘暟 +// 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.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; +// } +// // 鏋勫缓璇剧洰-棰樼洰淇℃伅 +// questionSubjectsList = targetSubject.stream().map(subject -> { +// QuestionSubject questionSubject = new QuestionSubject(); +// questionSubject.setQuestionId(question.getId()); +// questionSubject.setSubjectId(subject.getId()); +// questionSubject.setDeleted(0); +// return questionSubject; +// }).collect(Collectors.toList()); +// } +// System.out.println(question); +// } +// // 鎵归噺淇濆瓨棰樼洰-璇剧洰淇℃伅 +// if (! CollectionUtils.isEmpty(questionSubjectsList)) { +// questionSubjectService.saves(questionSubjectsList); +// } +// }; +// EasyExcel.read(file.getInputStream(), QuestionImportVO.class, new CurrencyDataListener(consumer)).sheet("妯℃澘").doRead(); +// return RestResponse.ok(); +// } @PostMapping("/import") - public RestResponse importUser(@RequestPart("file") MultipartFile file) throws Exception { + public RestResponse importQuestion(@RequestPart("file") MultipartFile file) throws Exception { List<QuestionEditVO> questionEditVOS = ExcelUtils.readMultipartFile(file, QuestionEditVO.class) .stream().map(e -> { e.setQuestionType(QuestionTypeEnum.get(e.getType())); @@ -360,6 +360,12 @@ //缁勮棰樼洰 for (QuestionEditRequestVM vm : list) { + // 鍒ゆ柇棰樺共鏄惁閲嶅锛岄噸澶嶄笉娣诲姞 + Integer num = questionService.countQuestionByTitle(vm.getTitle()); + if (num > 0) { + continue; + } + questionEditItemVM.setPrefix("A"); questionEditItemVM.setContent(vm.getA()); @@ -381,9 +387,10 @@ questionEditItemVMS.add(questionEditItemVM); } vm.setItems(questionEditItemVMS); - List<String> str = Arrays.asList(vm.getCorrect().split(",")); + // 娓呯┖鍓嶅悗鐨勯�楀彿锛屼互鍏嶅悗缁綔绛斿垽鏂负閿欒 + List<String> str = Arrays.asList(vm.getCorrect().replaceAll("^,+|,+$", "").split(SPLIT)); - List<Subject> subjectList = subjectMapper.getNames(vm.getSbNames().split(",")); + List<Subject> subjectList = subjectMapper.getNames(vm.getSbNames().split(SPLIT)); Integer[] arr =subjectList.stream() .map(Subject::getId).toArray(Integer[]::new); -- Gitblit v1.8.0