| | |
| | | package com.mindskip.xzs.controller.admin; |
| | | |
| | | import com.alibaba.excel.EasyExcel; |
| | | import com.alibaba.excel.ExcelWriter; |
| | | import com.alibaba.excel.write.metadata.WriteSheet; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.mindskip.xzs.base.BaseApiController; |
| | |
| | | import com.mindskip.xzs.domain.ExamPaperSubject; |
| | | import com.mindskip.xzs.domain.Subject; |
| | | import com.mindskip.xzs.domain.exam.ExamPaperAnswerObject; |
| | | import com.mindskip.xzs.domain.vo.ExamPaperDataExportVO; |
| | | import com.mindskip.xzs.domain.vo.ExamPaperDataVO; |
| | | import com.mindskip.xzs.domain.vo.ExamPaperStatisticVO; |
| | | import com.mindskip.xzs.service.ExamPaperAnswerService; |
| | | import com.mindskip.xzs.service.ExamPaperSubjectService; |
| | | import com.mindskip.xzs.service.SubjectService; |
| | | import com.mindskip.xzs.service.UserService; |
| | | import com.mindskip.xzs.domain.vo.PaperExcelVO; |
| | | import com.mindskip.xzs.service.*; |
| | | import com.mindskip.xzs.utility.DateTimeUtil; |
| | | import com.mindskip.xzs.utility.ExamUtil; |
| | | import com.mindskip.xzs.utility.PageInfoHelper; |
| | | 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; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import javax.validation.Valid; |
| | | import java.io.IOException; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.TreeMap; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @RequiredArgsConstructor |
| | | @RestController("AdminExamPaperAnswerController") |
| | | @RequestMapping(value = "/api/admin/examPaperAnswer") |
| | | public class ExamPaperAnswerController extends BaseApiController { |
| | |
| | | private final SubjectService subjectService; |
| | | private final UserService userService; |
| | | private final ExamPaperSubjectService examPaperSubjectService; |
| | | |
| | | @Autowired |
| | | public ExamPaperAnswerController(ExamPaperAnswerService examPaperAnswerService, SubjectService subjectService, UserService userService, ExamPaperSubjectService examPaperSubjectService) { |
| | | this.examPaperAnswerService = examPaperAnswerService; |
| | | this.subjectService = subjectService; |
| | | this.userService = userService; |
| | | this.examPaperSubjectService = examPaperSubjectService; |
| | | } |
| | | private final ExamPaperService examPaperService; |
| | | private final DepartmentService departmentService; |
| | | |
| | | |
| | | @RequestMapping(value = "/page", method = RequestMethod.POST) |
| | |
| | | vm.setSubjectName(name); |
| | | vm.setCreateTime(DateTimeUtil.dateFormat(e.getCreateTime())); |
| | | |
| | | // vm.setUserName(user.getRealName()); |
| | | return vm; |
| | | }); |
| | | // page.setList(page.getList().stream().filter(e -> e != null).collect(Collectors.toList())); |
| | | if (page.getList().size() > 0) { |
| | | Double avg = page.getList().stream().mapToInt(ExamPaperAnswerPageResponseVM -> Integer.parseInt(ExamPaperAnswerPageResponseVM.getUserScore())).average().getAsDouble(); |
| | | BigDecimal sum = page.getList().stream() |
| | | .map(ExamPaperAnswerPageResponseVM -> new BigDecimal(ExamPaperAnswerPageResponseVM.getUserScore())) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add); // 计算总和 |
| | | Double avg = sum.divide(BigDecimal.valueOf(page.getList().size()), 2, RoundingMode.HALF_UP).doubleValue(); |
| | | page.getList().get(0).setAvgSource(avg); |
| | | } |
| | | return RestResponse.ok(page); |
| | |
| | | public RestResponse<Map<String, Object>> data(@RequestBody ExamPaperDataVO examPaperDataVO) { |
| | | return RestResponse.ok(examPaperAnswerService.data(examPaperDataVO)); |
| | | } |
| | | |
| | | @RequestMapping(value = "/export", method = RequestMethod.GET) |
| | | public void export(Integer id, Integer type, HttpServletResponse response) { |
| | | |
| | | try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build()) { |
| | | // 部门考试统计sheet |
| | | List<ExamPaperDataExportVO> list = examPaperAnswerService.dataExport(new ExamPaperDataVO().setId(id).setType(type)); |
| | | WriteSheet writeSheet = EasyExcel.writerSheet("部门数据统计").head(ExamPaperDataExportVO.class).build(); |
| | | excelWriter.write(list, writeSheet); |
| | | |
| | | // 考试详情sheet,一个单位一个sheet |
| | | List<PaperExcelVO> paperDetailList = examPaperService.getRandomPaperExcelById(id); |
| | | Map<Integer, List<PaperExcelVO>> deptDataMap = paperDetailList.stream().collect(Collectors.groupingBy(PaperExcelVO::getDeptId)); |
| | | 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); |
| | | } |
| | | }); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | } |