From 247cb86585a1d1894596ed18a6c93efecb992946 Mon Sep 17 00:00:00 2001 From: luohairen <3399054449@qq.com> Date: 星期四, 14 十一月 2024 10:34:27 +0800 Subject: [PATCH] 班级成绩图表分析 --- src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java | 59 ++++++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 40 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java index 4e85c14..07bf709 100644 --- a/src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java +++ b/src/main/java/com/ycl/jxkg/service/impl/ExamPaperServiceImpl.java @@ -46,6 +46,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; @@ -74,9 +75,12 @@ examPaper.setScore(new BigDecimal(form.getScore())); //闅忔満璇曞嵎 if (ExamPaperTypeEnum.Random.getCode().equals(form.getPaperType())) { - //鏍¢獙棰樼洰鏁伴噺 + //鏍¢獙鏍囬鏄惁濉啓銆佹牎楠岄鐩暟閲� List<PaperQuestionSettingDTO> questionSetting = form.getQuestionSetting(); for (PaperQuestionSettingDTO settingDTO : questionSetting) { + if(StringUtils.isEmpty(settingDTO.getTitle())){ + return Result.fail(SystemCode.InnerError.getCode(),"鏍囬涓嶈兘涓虹┖"); + } Integer questionType = settingDTO.getQuestionType(); for (PaperSettingItem item : settingDTO.getSettingList()) { Integer num = item.getNum(); @@ -100,6 +104,12 @@ return Result.ok(); } else if (ExamPaperTypeEnum.Fixed.getCode().equals(form.getPaperType())) { //鍥哄畾璇曞嵎 + List<PaperFixQuestionDTO> questionTitleList = form.getQuestionTitleList(); + for (PaperFixQuestionDTO dto : questionTitleList) { + if(StringUtils.isEmpty(dto.getTitle())){ + return Result.fail(SystemCode.InnerError.getCode(),"鏍囬涓嶈兘涓虹┖"); + } + } examPaper.setContent(JSON.toJSONString(form.getQuestionTitleList())); baseMapper.insert(examPaper); return Result.ok(); @@ -116,6 +126,9 @@ List<PaperSettingItem> settingList = settingDTO.getSettingList(); List<PaperQuestion> questionList = new ArrayList<>(); for (PaperSettingItem item : settingList) { + if(StringUtils.isEmpty(settingDTO.getTitle())){ + return Result.fail(SystemCode.InnerError.getCode(),"鏍囬涓嶈兘涓虹┖"); + } Integer num = item.getNum(); Integer difficult = item.getDifficult(); //闇�瑕侀厤缃殑棰樼洰鏁伴噺涓�0鍒欒烦杩� @@ -328,12 +341,13 @@ public List<ExamPaper> myExamPaper(Integer paperType) { Integer userId = webContext.getCurrentUser().getId(); List<ExamPaper> list = new LambdaQueryChainWrapper<>(baseMapper) - .select(ExamPaper::getId, ExamPaper::getName, ExamPaper::getVisibility) + .select(ExamPaper::getId, ExamPaper::getName, ExamPaper::getVisibility,ExamPaper::getSuggestTime) .eq(ExamPaper::getCreateUser, userId) .eq(Objects.nonNull(paperType), ExamPaper::getPaperType, paperType) .or() .eq(ExamPaper::getVisibility, VisibilityEnum.Public.getName()) .eq(Objects.nonNull(paperType), ExamPaper::getPaperType, paperType) + .orderByDesc(ExamPaper::getId) .list(); list.stream().forEach(item -> { if (VisibilityEnum.Public.getName().equals(item.getVisibility())) { @@ -350,9 +364,10 @@ response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); // 鏋勫缓妯℃澘鏍蜂緥鏁版嵁 - List<QuestionImportVO> data = new ArrayList<>(8); - QuestionImportVO questionImportVO = new QuestionImportVO(); + List<ExamPaperImportVO> data = new ArrayList<>(8); + ExamPaperImportVO questionImportVO = new ExamPaperImportVO(); questionImportVO.setLabel("鏍囬1"); + questionImportVO.setSubject("璇枃"); questionImportVO.setQuestionType("鍗曢�夐"); questionImportVO.setDifficult(2); questionImportVO.setCorrect("A"); @@ -363,23 +378,28 @@ questionImportVO.setOptionValue("閫夋垜"); data.add(questionImportVO); - QuestionImportVO questionImport1 = new QuestionImportVO(); + ExamPaperImportVO questionImport1 = new ExamPaperImportVO(); questionImport1.setOptionName("B"); questionImport1.setOptionValue("閫塀"); data.add(questionImport1); - QuestionImportVO questionImport2 = new QuestionImportVO(); + ExamPaperImportVO questionImport2 = new ExamPaperImportVO(); questionImport2.setOptionName("C"); questionImport2.setOptionValue("閫塁"); data.add(questionImport2); - QuestionImportVO questionImport3 = new QuestionImportVO(); + ExamPaperImportVO questionImport3 = new ExamPaperImportVO(); questionImport3.setOptionName("D"); questionImport3.setOptionValue("閫塂"); data.add(questionImport3); - EasyExcel.write(response.getOutputStream(), QuestionImportVO.class) + // 鏌ュ嚭鎵�鏈夌殑璇剧洰锛坋xcel涓嬫媺鏁版嵁锛� + List<Subject> subjects = subjectService.list(); + List<String> subjectNameList = subjects.stream().map(Subject::getName).collect(Collectors.toList()); + + EasyExcel.write(response.getOutputStream(), ExamPaperImportVO.class) .sheet("妯℃澘") + .registerWriteHandler(new PaperSelectExcel(subjectNameList)) .registerWriteHandler(new FixedMergeCellStrategy(2, 4, Arrays.asList(2, 3, 6, 7, 8, 9))) .registerWriteHandler(new FixedMergeCellStrategy(2, 20, Arrays.asList(0, 1))) .doWrite(data); @@ -389,13 +409,13 @@ @SneakyThrows public void export(QuestionExportVO query, HttpServletResponse response) { // 鏌ヨ瀵煎嚭鏁版嵁 - List<QuestionImportVO> exportData = questionService.export(query); + List<ExamPaperImportVO> exportData = questionService.export(query); // 鏋勫缓鏁版嵁 - List<QuestionImportVO> exportList = new ArrayList<>(exportData.size() * 4); + List<ExamPaperImportVO> exportList = new ArrayList<>(exportData.size() * 4); // 琛屽悎骞惰鍒� List<RowItem> mergeRowList = new ArrayList<>(exportData.size()); int j = 2; - for (QuestionImportVO data : exportData) { + for (ExamPaperImportVO data : exportData) { QuestionObject questionContent = JSON.parseObject(data.getQuestionContent(), QuestionObject.class); RowItem rowItem = new RowItem(); @@ -407,7 +427,7 @@ int i = 0; for (QuestionItemObject option : questionContent.getQuestionItemObjects()) { if (i == 0) { - QuestionImportVO master = new QuestionImportVO(); + ExamPaperImportVO master = new ExamPaperImportVO(); BeanUtils.copyProperties(data, master); if (org.springframework.util.StringUtils.hasText(data.getQuestionType())) { master.setQuestionType(QuestionTypeEnum.fromCode(Integer.valueOf(data.getQuestionType())).getName()); @@ -421,7 +441,7 @@ master.setScore(score.divide(BigDecimal.TEN).intValue()); exportList.add(master); } else { - QuestionImportVO optionItem = new QuestionImportVO(); + ExamPaperImportVO optionItem = new ExamPaperImportVO(); optionItem.setOptionName(option.getPrefix()); optionItem.setOptionValue(option.getContent()); exportList.add(optionItem); @@ -438,7 +458,7 @@ // 鏌ュ嚭鎵�鏈夌殑璇剧洰锛坋xcel涓嬫媺鏁版嵁锛� List<Subject> subjects = subjectService.list(); List<String> subjectNameList = subjects.stream().map(Subject::getName).collect(Collectors.toList()); - EasyExcel.write(response.getOutputStream(), QuestionImportVO.class) + EasyExcel.write(response.getOutputStream(), ExamPaperImportVO.class) .sheet("棰樼洰瀵煎嚭鏁版嵁") .registerWriteHandler(new SelectExcel(subjectNameList)) .registerWriteHandler(new DynamicMergeCellStrategy(mergeRowList, Arrays.asList(0, 1, 2, 5, 6, 7, 8))) @@ -459,11 +479,11 @@ // 涓�寮犺瘯鍗峰涓爣棰� ArrayList<PaperFixQuestionDTO> list = new ArrayList<>(); - Consumer<List<QuestionImportVO>> consumer = (data) -> { + Consumer<List<ExamPaperImportVO>> consumer = (data) -> { // 寰幆姣忎竴琛� for (int i = 0; i < data.size(); i++) { // 璇诲彇鐨勯鐩� - QuestionImportVO excelQuestion = data.get(i); + ExamPaperImportVO excelQuestion = data.get(i); String questionType = excelQuestion.getQuestionType(); String label = excelQuestion.getLabel(); // 鍒ゆ柇鏄惁鏍囬 @@ -491,7 +511,7 @@ if (i + 1 == data.size()) { break; } - QuestionImportVO nextQuestion = data.get(1 + i); + ExamPaperImportVO nextQuestion = data.get(1 + i); if (nextQuestion.intact()) { break; } @@ -526,7 +546,7 @@ question.setDeleted(0); question.setQuestionType(QuestionTypeEnum.get(questionType)); // 鏍规嵁绉戠洰鍚嶇О鑾峰彇id - QuestionImportVO finalExcelQuestion = excelQuestion; + ExamPaperImportVO finalExcelQuestion = excelQuestion; question.setSubjectId(subjects.stream().filter(subject -> subject.getName().equals(finalExcelQuestion.getSubject())).findFirst().get().getId()); questions.add(question); @@ -537,6 +557,7 @@ paperQuestion.setScore(BigDecimal.valueOf(excelQuestion.getScore())); paperQuestions.add(paperQuestion); } + // 涓嬩竴鏉℃暟鎹槸鏍囬 if (i + 1 == data.size() || data.get(i + 1).master()) { break; } @@ -552,7 +573,7 @@ } } }; - EasyExcel.read(file.getInputStream(), QuestionImportVO.class, new CurrencyDataListener(consumer)).sheet("妯℃澘").doRead(); + EasyExcel.read(file.getInputStream(), ExamPaperImportVO.class, new CurrencyDataListener(consumer)).sheet("妯℃澘").doRead(); // 淇濆瓨棰樼洰 questionService.saveBatch(questions); // 淇濆瓨璇曞嵎 -- Gitblit v1.8.0