| | |
| | | package com.mindskip.xzs.controller.admin; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.google.gson.JsonObject; |
| | | import com.mindskip.xzs.base.BaseApiController; |
| | | import com.mindskip.xzs.base.RestResponse; |
| | | import com.mindskip.xzs.domain.ExamPaperAnswer; |
| | | import com.mindskip.xzs.domain.ExamPaperSubject; |
| | | import com.mindskip.xzs.domain.Subject; |
| | | import com.mindskip.xzs.domain.User; |
| | | import com.mindskip.xzs.domain.exam.ExamPaperAnswerObject; |
| | | import com.mindskip.xzs.service.*; |
| | | import com.mindskip.xzs.utility.DateTimeUtil; |
| | | import com.mindskip.xzs.utility.ExamUtil; |
| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.validation.Valid; |
| | | import java.math.BigDecimal; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @RestController("AdminExamPaperAnswerController") |
| | |
| | | PageInfo<ExamPaperAnswerPageResponseVM> page = PageInfoHelper.copyMap(pageInfo, e -> { |
| | | |
| | | ExamPaperAnswerPageResponseVM vm = modelMapper.map(e, ExamPaperAnswerPageResponseVM.class); |
| | | User user = userService.selectByIdName(e.getCreateUser(), model.getUserName()); |
| | | if (user == null) { |
| | | return null; |
| | | } |
| | | // User user = userService.selectByIdName(e.getCreateUser(), model.getUserName()); |
| | | // if (user == null) { |
| | | // return null; |
| | | // } |
| | | // Subject subject = subjectService.selectById(vm.getSubjectId()); |
| | | ExamPaperAnswer examPaperAnswer = examPaperAnswerService.getById(vm.getId()); |
| | | Integer[] ids = examPaperSubjectService.getByExamPaperId(examPaperAnswer.getExamPaperId()) |
| | | .stream().map(ExamPaperSubject::getSubjectId).toArray(Integer[]::new); |
| | | String name = ""; |
| | | if(ids.length>0){ |
| | | if (ids.length > 0) { |
| | | name = subjectService.selectByIds(ids) |
| | | .stream().map(Subject::getName).collect(Collectors.joining(",")); |
| | | } |
| | |
| | | vm.setSubjectName(name); |
| | | vm.setCreateTime(DateTimeUtil.dateFormat(e.getCreateTime())); |
| | | |
| | | vm.setUserName(user.getUserName()); |
| | | // vm.setUserName(user.getRealName()); |
| | | return vm; |
| | | }); |
| | | page.setList(page.getList().stream().filter(e -> e != null).collect(Collectors.toList())); |
| | | if(page.getSize()>0){ |
| | | // 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(); |
| | | page.getList().get(0).setAvgSource(avg); |
| | | } |
| | | return RestResponse.ok(page); |
| | | } |
| | | |
| | | |
| | | @RequestMapping(value = "/paperStatistics", method = RequestMethod.POST) |
| | | public RestResponse<ExamPaperAnswerObject> paperStatistics(@RequestBody @Valid String paperName) { |
| | | ExamPaperAnswerObject object = new ExamPaperAnswerObject(); |
| | | String str = JSONObject.parseObject(paperName).get("paperName").toString(); |
| | | List<ExamPaperAnswer> examPaperAnswers = examPaperAnswerService.selectByPaperName(str) |
| | | .stream().map(e -> { |
| | | e.setUserScore(e.getUserScore() / 10); |
| | | return e; |
| | | }).collect(Collectors.toList()); |
| | | if (examPaperAnswers.size() == 0) { |
| | | object.setAdvanced(0); |
| | | object.setAvg(0.0); |
| | | object.setIntermediate(0); |
| | | object.setMax(0); |
| | | object.setMin(0); |
| | | object.setLowGrade(0); |
| | | } else { |
| | | Integer lowGrade = examPaperAnswers.stream().filter(e -> e.getUserScore() < 60 && 0 <= e.getUserScore()).collect(Collectors.toList()).size(); |
| | | Integer intermediate = examPaperAnswers.stream().filter(e -> e.getUserScore() < 80 && 60 <= e.getUserScore()).collect(Collectors.toList()).size(); |
| | | Integer advanced = examPaperAnswers.stream().filter(e -> e.getUserScore() <= 100 && 80 <= e.getUserScore()).collect(Collectors.toList()).size(); |
| | | Integer max = examPaperAnswers.stream().map(ExamPaperAnswer::getUserScore).max(Integer::compareTo).get(); |
| | | Integer min = examPaperAnswers.stream().map(ExamPaperAnswer::getUserScore).min(Integer::compareTo).get(); |
| | | Double avg = examPaperAnswers.stream().mapToDouble(ExamPaperAnswer::getUserScore).average().getAsDouble(); |
| | | BigDecimal two = new BigDecimal(avg); |
| | | Double three = two.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); |
| | | object.setAdvanced(advanced); |
| | | object.setAvg(three); |
| | | object.setIntermediate(intermediate); |
| | | object.setMax(max); |
| | | object.setMin(min); |
| | | object.setLowGrade(lowGrade); |
| | | } |
| | | return RestResponse.ok(object); |
| | | } |
| | | } |