From 13a68df58b3f937db5ba6437c814bafdcd8d37f8 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期一, 27 五月 2024 16:09:41 +0800 Subject: [PATCH] 登录时如果不是部门管理员则deptIds填充为用户所在部门 --- src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java | 77 ++++++++++++++++++++++++++++++++------ 1 files changed, 64 insertions(+), 13 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 3614c69..c116a5d 100644 --- a/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java +++ b/src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java @@ -18,10 +18,10 @@ import com.mindskip.xzs.domain.enums.QuestionTypeEnum; import com.mindskip.xzs.domain.question.QuestionItemObject; import com.mindskip.xzs.domain.question.QuestionObject; -import com.mindskip.xzs.excel.CurrencyDataListener; -import com.mindskip.xzs.excel.FixedMergeCellStrategy; -import com.mindskip.xzs.excel.SelectExcel; +import com.mindskip.xzs.domain.vo.DeptQuestionVO; +import com.mindskip.xzs.excel.*; import com.mindskip.xzs.repository.DepartmentMapper; +import com.mindskip.xzs.repository.DeptQuestionMapper; import com.mindskip.xzs.repository.SubjectMapper; import com.mindskip.xzs.service.*; import com.mindskip.xzs.utility.*; @@ -30,6 +30,7 @@ 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.QuestionExportVO; import com.mindskip.xzs.vo.QuestionImportVO; import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.usermodel.DataValidationHelper; @@ -44,6 +45,7 @@ import javax.validation.Valid; import java.io.IOException; import java.io.UnsupportedEncodingException; +import java.math.BigDecimal; import java.net.URLEncoder; import java.util.*; import java.util.function.Consumer; @@ -55,22 +57,20 @@ private final QuestionService questionService; private final TextContentService textContentService; - private final SubjectMapper subjectMapper; - private final DepartmentMapper departmentMapper; - private final QuestionSubjectService questionSubjectService; + private final DeptQuestionMapper deptQuestionMapper; private static final String SPLIT = "銆�"; - @Autowired - public QuestionController(QuestionService questionService, TextContentService textContentService, SubjectMapper subjectMapper, DepartmentMapper departmentMapper, QuestionSubjectService questionSubjectService) { + public QuestionController(QuestionService questionService, TextContentService textContentService, SubjectMapper subjectMapper, DepartmentMapper departmentMapper, QuestionSubjectService questionSubjectService, DeptQuestionMapper deptQuestionMapper) { this.questionService = questionService; this.textContentService = textContentService; this.subjectMapper = subjectMapper; this.departmentMapper = departmentMapper; this.questionSubjectService = questionSubjectService; + this.deptQuestionMapper = deptQuestionMapper; } @RequestMapping(value = "/page", method = RequestMethod.POST) @@ -90,6 +90,9 @@ e.setSubName(subjectMapper.page(subjectPageRequestVM).get(0).getName()); return e; }).collect(Collectors.toList())); + // 鏌ヨ棰樼洰鎵�灞為儴闂� + String deptNames = deptQuestionMapper.deptByQuestionId(q.getId()).stream().map(DeptQuestionVO::getDeptName).collect(Collectors.joining("銆�")); + vm.setDeptNames(deptNames); return vm; }); return RestResponse.ok(page); @@ -184,26 +187,74 @@ data.add(questionImportVO3); // 鏌ュ嚭鎵�鏈夌殑璇剧洰锛坋xcel涓嬫媺鏁版嵁锛� - List<Subject> subjects = subjectMapper.allSubject(); + List<Subject> subjects = subjectMapper.allSubject(new ArrayList<>()); List<String> subjectNameList = subjects.stream().map(Subject::getName).collect(Collectors.toList()); EasyExcel.write(response.getOutputStream(), QuestionImportVO.class) .sheet("妯℃澘") .registerWriteHandler(new SelectExcel(subjectNameList)) - .registerWriteHandler(new FixedMergeCellStrategy(2, 4, Arrays.asList(1, 2, 3, 6, 7, 8, 9))) + .registerWriteHandler(new FixedMergeCellStrategy(2, 4, Arrays.asList(0, 1, 2, 5, 6, 7, 8))) .doWrite(data); } @PostMapping("/question/export") - public void importQuestion(QuestionPageRequestVM query, HttpServletResponse response) throws IOException { + public void exportQuestion(@RequestBody QuestionExportVO query, HttpServletResponse response) throws IOException { // 鏌ヨ瀵煎嚭鏁版嵁 List<QuestionImportVO> exportData = questionService.export(query); + // 鏋勫缓鏁版嵁 + List<QuestionImportVO> exportList = new ArrayList<>(exportData.size() * 4); + // 琛屽悎骞惰鍒� + List<RowItem> mergeRowList = new ArrayList<>(exportData.size()); + int j = 2; + for (QuestionImportVO data : exportData) { + QuestionObject questionContent = JSON.parseObject(data.getQuestionContent(), QuestionObject.class); + + RowItem rowItem = new RowItem(); + rowItem.setStart(j); + int end = j + questionContent.getQuestionItemObjects().size() - 1; + rowItem.setEnd(end); + mergeRowList.add(rowItem); + j = end + 1; + int i = 0; + for (QuestionItemObject option : questionContent.getQuestionItemObjects()) { + if (i == 0) { + QuestionImportVO master = new QuestionImportVO(); + BeanUtils.copyProperties(data, master); + if (org.springframework.util.StringUtils.hasText(data.getQuestionType())) { + master.setQuestionType(QuestionTypeEnum.fromCode(Integer.valueOf(data.getQuestionType())).getName()); + } + master.setOptionName(option.getPrefix()); + master.setOptionValue(option.getContent()); + master.setTitle(questionContent.getTitleContent()); + master.setAnalyze(questionContent.getAnalyze()); + master.setSubjectName(data.getSubjectList().stream().collect(Collectors.joining("銆�"))); + master.setCorrect(data.getCorrect().replaceAll(",", "銆�")); + BigDecimal score = BigDecimal.valueOf(master.getScore()); + master.setScore(score.divide(BigDecimal.TEN).intValue()); + exportList.add(master); + } else { + QuestionImportVO optionItem = new QuestionImportVO(); + optionItem.setOptionName(option.getPrefix()); + optionItem.setOptionValue(option.getContent()); + exportList.add(optionItem); + } + i++; + } + } response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setCharacterEncoding("utf-8"); // 杩欓噷URLEncoder.encode鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴 String fileName = URLEncoder.encode("棰樼洰瀵煎嚭鏁版嵁", "UTF-8").replaceAll("\\+", "%20"); response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); - EasyExcel.write(response.getOutputStream(), QuestionImportVO.class).sheet("棰樼洰瀵煎嚭鏁版嵁").doWrite(exportData); + + // 鏌ュ嚭鎵�鏈夌殑璇剧洰锛坋xcel涓嬫媺鏁版嵁锛� + List<Subject> subjects = subjectMapper.allSubject(new ArrayList<>()); + List<String> subjectNameList = subjects.stream().map(Subject::getName).collect(Collectors.toList()); + EasyExcel.write(response.getOutputStream(), QuestionImportVO.class) + .sheet("棰樼洰瀵煎嚭鏁版嵁") + .registerWriteHandler(new SelectExcel(subjectNameList)) + .registerWriteHandler(new DynamicMergeCellStrategy(mergeRowList, Arrays.asList(0, 1, 2, 5, 6, 7, 8))) + .doWrite(exportList); } /** @@ -290,7 +341,7 @@ // 鏌ュ嚭鎵�鏈夌殑璇剧洰 - List<Subject> subjects = subjectMapper.allSubject(); + List<Subject> subjects = subjectMapper.allSubject(new ArrayList<>()); List<String> subjectNames = Arrays.asList(excelQuestion.getSubjectName().split(SPLIT)); List<Subject> targetSubject = subjects.stream() .filter(subject -> subjectNames.contains(subject.getName())) -- Gitblit v1.8.0