From f7196dff53805c9d5e6c945e5334ce4e4423d779 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期五, 15 三月 2024 18:02:23 +0800 Subject: [PATCH] 题目导入模板,待完善 --- src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java | 60 +++++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 45 insertions(+), 15 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 a7e40d9..1cdabdb 100644 --- a/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java +++ b/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java @@ -1,12 +1,17 @@ package com.mindskip.xzs.controller.admin; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.metadata.data.HyperlinkData; import com.mindskip.xzs.base.BaseApiController; import com.mindskip.xzs.base.RestResponse; import com.mindskip.xzs.base.SystemCode; import com.mindskip.xzs.domain.Question; +import com.mindskip.xzs.domain.Subject; import com.mindskip.xzs.domain.TextContent; +import com.mindskip.xzs.domain.enums.QuestionSourceEnum; import com.mindskip.xzs.domain.enums.QuestionTypeEnum; import com.mindskip.xzs.domain.question.QuestionObject; +import com.mindskip.xzs.excel.SelectExcel; import com.mindskip.xzs.repository.DepartmentMapper; import com.mindskip.xzs.repository.SubjectMapper; import com.mindskip.xzs.service.*; @@ -16,12 +21,18 @@ import com.mindskip.xzs.viewmodel.admin.education.SubjectPageRequestVM; import com.mindskip.xzs.viewmodel.admin.question.*; import com.github.pagehelper.PageInfo; +import com.mindskip.xzs.vo.QuestionImportVO; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.usermodel.DataValidationHelper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -50,7 +61,7 @@ } @RequestMapping(value = "/page", method = RequestMethod.POST) - public RestResponse<PageInfo<QuestionResponseVM>> pageList(@RequestBody QuestionPageRequestVM model) { + public RestResponse<PageInfo<QuestionResponseVM>> pageList(@RequestBody @Valid QuestionPageRequestVM model) { PageInfo<Question> pageInfo = questionService.page(model); PageInfo<QuestionResponseVM> page = PageInfoHelper.copyMap(pageInfo, q -> { QuestionResponseVM vm = modelMapper.map(q, QuestionResponseVM.class); @@ -88,9 +99,8 @@ } @RequestMapping(value = "/select/{id}", method = RequestMethod.POST) - public RestResponse<QuestionEditRequestVM> select(@PathVariable Integer id) { - QuestionEditRequestVM newVM = questionService.getQuestionEditRequestVM(id); - return RestResponse.ok(newVM); + public RestResponse<ExamQuestionVO> select(@PathVariable Integer id) { + return RestResponse.ok(questionService.getQuestionEditRequestVM(id)); } @@ -120,13 +130,20 @@ return RestResponse.ok(); } + @GetMapping("/download/question/import/temp") + public void getImportTemp(HttpServletResponse response) throws IOException { + String fileName = URLEncoder.encode("棰樼洰瀵煎叆妯℃澘", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream(), QuestionImportVO.class).registerWriteHandler(new SelectExcel()).sheet("妯℃澘").doWrite(new ArrayList()); + } + @PostMapping("/import") - public void importUser(@RequestPart("file") MultipartFile file) throws Exception { + public RestResponse importUser(@RequestPart("file") MultipartFile file) throws Exception { List<QuestionEditVO> questionEditVOS = ExcelUtils.readMultipartFile(file, QuestionEditVO.class) .stream().map(e -> { e.setQuestionType(QuestionTypeEnum.get(e.getType())); - e.setSubjectId(subjectMapper.getName(e.getSubjectName()).getId()); - e.setGradeLevel(departmentMapper.getName(e.getDepartment()).getId()); +// e.setSubjectId(subjectMapper.getName(e.getSbNames()).getId()); +// e.setGradeLevel(departmentMapper.getName(e.getDepartment()).getId()); return e; }).collect(Collectors.toList()); @@ -145,25 +162,38 @@ questionEditItemVM.setPrefix("B"); questionEditItemVM.setContent(vm.getB()); questionEditItemVMS.add(questionEditItemVM); - questionEditItemVM = new QuestionEditItemVM(); - questionEditItemVM.setPrefix("C"); - questionEditItemVM.setContent(vm.getC()); - questionEditItemVMS.add(questionEditItemVM); - questionEditItemVM = new QuestionEditItemVM(); - questionEditItemVM.setPrefix("D"); - questionEditItemVM.setContent(vm.getD()); - questionEditItemVMS.add(questionEditItemVM); + if(!"".equals(vm.getC()) && vm.getC()!=null){ + questionEditItemVM = new QuestionEditItemVM(); + questionEditItemVM.setPrefix("C"); + questionEditItemVM.setContent(vm.getC()); + questionEditItemVMS.add(questionEditItemVM); + } + if(!"".equals(vm.getD()) && vm.getD()!=null){ + questionEditItemVM = new QuestionEditItemVM(); + questionEditItemVM.setPrefix("D"); + questionEditItemVM.setContent(vm.getD()); + questionEditItemVMS.add(questionEditItemVM); + } vm.setItems(questionEditItemVMS); List<String> str = Arrays.asList(vm.getCorrect().split(",")); + List<Subject> subjectList = subjectMapper.getNames(vm.getSbNames().split(",")); + + Integer[] arr =subjectList.stream() + .map(Subject::getId).toArray(Integer[]::new); + + vm.setSubjectIds(arr); //澶氶�� if (str.size() > 1) { vm.setCorrectArray(str); vm.setCorrect(null); } + vm.setScore(QuestionSourceEnum.fromType(vm.getQuestionType()).toString()); + vm.setDifficult(4); questionService.insertFullQuestion(vm, getCurrentUser().getId()); questionEditItemVMS.clear(); } + return RestResponse.ok(); } } -- Gitblit v1.8.0