From 47cd9ecc0eff38ffe6b3b794b2bf197e958f4403 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期三, 14 五月 2025 15:50:57 +0800 Subject: [PATCH] bug:学员有状态不能修改问题 --- src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java | 135 +++++++++++++++++++++++++++++++++++++------- 1 files changed, 112 insertions(+), 23 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..3eb5a3a 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; @@ -305,12 +306,14 @@ // 淇濆瓨棰樼洰淇℃伅 // 璁剧疆棰樺瀷 question.setQuestionType(QuestionTypeEnum.get(excelQuestion.getQuestionType())); + // 绛旀鍘绘帀绌烘牸 + String rightAnswer = excelQuestion.getCorrect().replaceAll("\\s+", ""); // 绛旀(澶氶�夐渶瑕佺敤,鍒嗗壊淇濆瓨瀛楃涓插埌鏁版嵁搴�) - String[] corrects = excelQuestion.getCorrect().split(SPLIT); + String[] corrects = rightAnswer.split(SPLIT); if (corrects.length > 1) { question.setCorrect(Arrays.asList(corrects).stream().collect(Collectors.joining(","))); } else { - question.setCorrect(excelQuestion.getCorrect()); + question.setCorrect(rightAnswer); } // 闅惧害 @@ -330,18 +333,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,20 +366,24 @@ questionSubjectService.saves(questionSubjectsList); } } else { - // 鏌ュ嚭鎵�鏈夌殑璇剧洰 - List<Subject> subjects = subjectMapper.allSubject(new ArrayList<>(), Boolean.TRUE); + question.setId(questionId); + this.updateQuestion(question, excelQuestion); 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()); return 0 == lists.size(); }) @@ -396,6 +407,84 @@ return RestResponse.ok(); } + /** + * 瀵煎叆鏃讹紝濡傛灉棰樺共閲嶅锛岄偅涔堟洿鏂伴鐩俊鎭紙璇ユ柟娉曚笉浼氭洿鏂伴鐩殑棰樺簱淇℃伅锛� + * + * @param question + * @param excelQuestion + */ + private void updateQuestion(Question question, QuestionImportVO excelQuestion) { + Question question1 = questionService.selectById(question.getId()); + // 璇ラ鐨勯�夐」 + List<QuestionItemObject> options = new ArrayList<>(4); + // 閫夐」鍐呭 + QuestionItemObject optionA = new QuestionItemObject(); + optionA.setPrefix("A"); + optionA.setContent(excelQuestion.getOptionA()); + options.add(optionA); + + QuestionItemObject optionB = new QuestionItemObject(); + optionB.setPrefix("B"); + optionB.setContent(excelQuestion.getOptionB()); + options.add(optionB); + + if (StringUtils.isNotBlank(excelQuestion.getOptionC())) { + QuestionItemObject optionC = new QuestionItemObject(); + optionC.setPrefix("C"); + optionC.setContent(excelQuestion.getOptionC()); + options.add(optionC); + } + if (StringUtils.isNotBlank(excelQuestion.getOptionD())) { + QuestionItemObject optionD = new QuestionItemObject(); + optionD.setPrefix("D"); + optionD.setContent(excelQuestion.getOptionD()); + options.add(optionD); + } + + // 鏇存柊棰樼洰鍐呭 + 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()); + textContent.setId(question1.getInfoTextContentId()); + textContentService.updateByIdFilter(textContent); + + // 淇濆瓨棰樼洰淇℃伅 + // 璁剧疆棰樺瀷 + question.setQuestionType(QuestionTypeEnum.get(excelQuestion.getQuestionType())); + // 绛旀鍘绘帀绌烘牸 + String rightAnswer = excelQuestion.getCorrect().replaceAll("\\s+", ""); + // 绛旀(澶氶�夐渶瑕佺敤,鍒嗗壊淇濆瓨瀛楃涓插埌鏁版嵁搴�) + String[] corrects = rightAnswer.split(SPLIT); + if (corrects.length > 1) { + question.setCorrect(Arrays.asList(corrects).stream().collect(Collectors.joining(","))); + } else { + question.setCorrect(rightAnswer); + } + + // 闅惧害 + question.setDifficult(excelQuestion.getDifficult()); + // 鍒嗘暟 + if (StringUtils.isBlank(excelQuestion.getScore())) { + question.setScore(ExamUtil.scoreFromVM(QuestionSourceEnum.fromType(question.getQuestionType()) + "")); + } else { + 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.updateByIdFilter(question); + + } + // @PostMapping("/import") // public RestResponse importQuestion(@RequestPart("file") MultipartFile file) throws Exception { // List<QuestionEditVO> questionEditVOS = ExcelUtils.readMultipartFile(file, QuestionEditVO.class) -- Gitblit v1.8.0