src/main/java/com/mindskip/xzs/controller/admin/ExamPaperAnswerController.java
@@ -7,7 +7,6 @@ import com.github.pagehelper.PageInfo; import com.mindskip.xzs.base.BaseApiController; import com.mindskip.xzs.base.RestResponse; import com.mindskip.xzs.domain.Department; import com.mindskip.xzs.domain.ExamPaperAnswer; import com.mindskip.xzs.domain.ExamPaperSubject; import com.mindskip.xzs.domain.Subject; @@ -20,13 +19,11 @@ import com.mindskip.xzs.utility.DateTimeUtil; import com.mindskip.xzs.utility.ExamUtil; import com.mindskip.xzs.utility.PageInfoHelper; import com.mindskip.xzs.utility.excel.ExcelUtils; import com.mindskip.xzs.viewmodel.admin.paper.ExamPaperAnswerPageRequestVM; import com.mindskip.xzs.viewmodel.student.exampaper.ExamPaperAnswerPageResponseVM; import lombok.RequiredArgsConstructor; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -39,6 +36,7 @@ import java.math.RoundingMode; import java.util.List; import java.util.Map; import java.util.TreeMap; import java.util.stream.Collectors; @RequiredArgsConstructor @@ -149,17 +147,14 @@ // 考试详情sheet,一个单位一个sheet List<PaperExcelVO> paperDetailList = examPaperService.getRandomPaperExcelById(id); List<Integer> deptIds = paperDetailList.stream().map(PaperExcelVO::getDeptId).collect(Collectors.toList()); Map<Integer, List<Department>> deptMap = departmentService.gets(deptIds).stream().collect(Collectors.groupingBy(Department::getId)); Map<Integer, List<PaperExcelVO>> deptDataMap = paperDetailList.stream().collect(Collectors.groupingBy(PaperExcelVO::getDeptId)); deptDataMap.forEach((deptId, paperList) -> { List<Department> departments = deptMap.get(deptId); String name = ""; if (CollectionUtils.isNotEmpty(departments)) { name = departments.get(0).getName(); Map<Integer, List<PaperExcelVO>> sortedDeptDataMap = new TreeMap<>(deptDataMap); sortedDeptDataMap.forEach((deptId, paperList) -> { if (CollectionUtils.isNotEmpty(paperList) && ObjectUtils.isNotEmpty(paperList.get(0))) { String name = paperList.get(0).getDepartmentName(); WriteSheet writeSheetNext = EasyExcel.writerSheet(name).head(PaperExcelVO.class).build(); excelWriter.write(paperList, writeSheetNext); } WriteSheet writeSheetNext = EasyExcel.writerSheet(name).head(PaperExcelVO.class).build(); excelWriter.write(paperList, writeSheetNext); }); } catch (IOException e) { e.printStackTrace(); src/main/java/com/mindskip/xzs/domain/vo/ExamPaperDataExportVO.java
@@ -2,7 +2,7 @@ import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ContentRowHeight; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.mindskip.xzs.utility.excel.ExcelExport; import lombok.Data; import lombok.experimental.Accessors; @@ -23,22 +23,27 @@ @ExcelProperty("部门名称") @ExcelExport("部门名称") @ColumnWidth(40) private String name; @ExcelProperty("参考人数") @ExcelExport("参考人数") @ColumnWidth(20) private Integer factPeopleTotal; @ExcelProperty("参考人数百分比") @ExcelExport("参考人数百分比") @ColumnWidth(20) private BigDecimal referencePercentage; @ExcelProperty("平均分") @ExcelExport("平均分") @ColumnWidth(20) private BigDecimal averageScore; @ExcelProperty("总考试次数") @ExcelExport("总考试次数") @ColumnWidth(20) private Integer examTotal; } src/main/java/com/mindskip/xzs/domain/vo/PaperExcelVO.java
@@ -2,6 +2,7 @@ import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.mindskip.xzs.utility.excel.ExcelExport; import lombok.Data; @@ -12,6 +13,7 @@ @ExcelProperty("姓名") @ExcelExport("姓名") @ColumnWidth(50) private String name; @ExcelIgnore @@ -19,6 +21,7 @@ @ExcelProperty("部门") @ExcelExport("部门") @ColumnWidth(50) private String departmentName; @ExcelIgnore src/main/java/com/mindskip/xzs/service/DepartmentService.java
@@ -41,6 +41,8 @@ List<Department> gets(List<Integer> deptId); List<Department> getDepartmentByIds(List<Integer> deptId); Department getName(String name); List<BaseSelect> getDeptUserList(Integer deptId); src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java
@@ -147,6 +147,11 @@ } @Override public List<Department> getDepartmentByIds(List<Integer> deptId) { return departmentMapper.gets(deptId); } @Override public Department getName(String name) { return departmentMapper.getName(name); } src/main/java/com/mindskip/xzs/service/impl/ExamPaperServiceImpl.java
@@ -300,7 +300,7 @@ }).collect(Collectors.toList()); paperExcel.removeAll(needRemove); paperExcel.addAll(needAdd); return paperExcel; return paperExcel.stream().filter(e -> Objects.nonNull(e.getDeptId())).collect(Collectors.toList()); } private void examPaperFromVM(ExamPaperEditRequestVM examPaperEditRequestVM, ExamPaper examPaper, List<ExamPaperTitleItemVM> titleItemsVM) {