From 2bf92184d4584cac58b76b8d1ea0b3b0ff34b4fb Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期五, 24 五月 2024 13:46:30 +0800
Subject: [PATCH] fix:统计修改
---
src/main/java/com/mindskip/xzs/controller/admin/QuestionController.java | 73 +++++++++++++++++++++++++++++++-----
1 files changed, 62 insertions(+), 11 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..1dbbad1 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);
@@ -190,20 +193,68 @@
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();
+ 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);
}
/**
--
Gitblit v1.8.0