package com.mindskip.xzs.controller.admin;
|
|
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import com.mindskip.xzs.base.BaseApiController;
|
import com.mindskip.xzs.base.RestResponse;
|
import com.mindskip.xzs.domain.*;
|
import com.mindskip.xzs.domain.vo.AnswerVO;
|
import com.mindskip.xzs.domain.vo.ExamTemplatesUserCountVO;
|
import com.mindskip.xzs.domain.vo.TeamplatesUserExcelVO;
|
import com.mindskip.xzs.domain.vo.UserCountExcelVO;
|
import com.mindskip.xzs.repository.ExamPaperAnswerMapper;
|
import com.mindskip.xzs.repository.ExamTemplatesMapper;
|
import com.mindskip.xzs.repository.ExamTemplatesUserMapper;
|
import com.mindskip.xzs.service.ExamPaperAnswerService;
|
import com.mindskip.xzs.service.ExamTemplatesUserCountService;
|
import com.mindskip.xzs.service.UserService;
|
import com.mindskip.xzs.utility.convert.UserCountExcelClassConvert;
|
import com.mindskip.xzs.utility.excel.ExcelSheet;
|
import com.mindskip.xzs.utility.excel.ExcelUtils;
|
import com.mindskip.xzs.viewmodel.admin.exam.ExamPaperPageRequestVM;
|
import lombok.SneakyThrows;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
@RestController("AdminExamTemplatesUserCountController")
|
@RequestMapping(value = "/api/admin/exam/count")
|
public class ExamTemplatesUserCountController extends BaseApiController {
|
|
|
private final ExamTemplatesUserCountService examTemplatesUserCountService;
|
private final ExamTemplatesMapper examTemplatesMapper;
|
private final UserService userService;
|
private final ExamPaperAnswerService examPaperAnswerService;
|
private final ExamPaperAnswerMapper examPaperAnswerMapper;
|
private final ExamTemplatesUserMapper examTemplatesUserMapper;
|
|
public ExamTemplatesUserCountController(ExamTemplatesUserCountService examTemplatesUserCountService, ExamTemplatesMapper examTemplatesMapper, UserService userService, ExamPaperAnswerService examPaperAnswerService, ExamPaperAnswerMapper examTemplatesUserCountMapper, ExamTemplatesUserMapper examTemplatesUserMapper) {
|
this.examTemplatesUserCountService = examTemplatesUserCountService;
|
this.examTemplatesMapper = examTemplatesMapper;
|
this.userService = userService;
|
this.examPaperAnswerService = examPaperAnswerService;
|
this.examPaperAnswerMapper = examTemplatesUserCountMapper;
|
this.examTemplatesUserMapper = examTemplatesUserMapper;
|
}
|
|
@RequestMapping(value = "/list", method = RequestMethod.POST)
|
public RestResponse<PageInfo<ExamTemplatesUserCountVO>> select(@RequestBody ExamPaperPageRequestVM model) throws Exception {
|
if (model.getTemplatesName() != null && !"".equals(model.getTemplatesName())) {
|
ExamTemplates examTemplates = examTemplatesMapper.getByName(model.getTemplatesName());
|
model.setTemplatesId(examTemplates != null ? examTemplates.getId() : 0);
|
}
|
if (model.getUserName() != null && !"".equals(model.getUserName())) {
|
User user = userService.getUserByRealName(model.getUserName());
|
model.setUserId(user != null ? user.getId() : 0);
|
}
|
PageInfo<ExamTemplatesUserCountVO> info = examTemplatesUserCountService.list(model);
|
info.setList(info.getList().stream().map(e -> {
|
e.setName(examTemplatesMapper.getById(e.getId()).getName());
|
e.setUserName(userService.getUserById(e.getUserId()).getRealName());
|
return e;
|
}).collect(Collectors.toList()));
|
return RestResponse.ok(info);
|
}
|
|
@RequestMapping(value = "/sourceList", method = RequestMethod.POST)
|
public RestResponse<PageInfo<ExamPaperAnswer>> selectSource(@RequestBody ExamTemplatesUserCountVO examTemplatesUserCountVO) throws Exception {
|
List<ExamTemplatesUserCount> pageInfo = examTemplatesUserCountService.getByUserIdAndTemplatesId(examTemplatesUserCountVO);
|
PageInfo<ExamPaperAnswer> idDesc = PageHelper.startPage(examTemplatesUserCountVO.getPageIndex(), examTemplatesUserCountVO.getPageSize(), "id desc").doSelectPageInfo(() ->
|
examPaperAnswerService.getByExamPaperIdAndUserId(pageInfo));
|
return RestResponse.ok(idDesc);
|
}
|
|
@RequestMapping(value = "/exportTemplatesSheet/{id}", method = RequestMethod.GET)
|
public void exportTemplatesSheet(@PathVariable("id") Integer id, HttpServletResponse response, HttpServletRequest request){
|
ExamPaperPageRequestVM vm = new ExamPaperPageRequestVM();
|
vm.setTemplatesId(id);
|
List<ExamTemplatesUserCountVO> list = examTemplatesUserCountService.userCountList(vm)
|
.stream().map(e -> {
|
e.setName(examTemplatesMapper.getById(e.getId()).getName());
|
e.setUserName(userService.getUserById(e.getUserId()).getRealName());
|
return e;
|
}).collect(Collectors.toList());
|
String[] sheetHead1 = {"名称","用户名","数量"};
|
String[] sheetHead2 = {"总分数","得分","时间(秒)"};
|
|
List<UserCountExcelVO> userCountExcelVOS = UserCountExcelClassConvert.INSTANCE.ExamTemplatesUserCountVOListToUserCountExcelVOList(list);
|
List<ExamTemplatesUserCount> byTemplates = examTemplatesUserCountService.getByTemplates(id);
|
List<ExamPaperAnswer> answerList = examPaperAnswerService.getByExamPaperIdAndUserId(byTemplates);
|
List<AnswerVO> answerVOS = UserCountExcelClassConvert.INSTANCE.ExamPaperAnswerListToAnswerVOList(answerList);
|
|
|
|
List<String[]> listEntities = ExcelUtils.listEntitiesToStringArray(userCountExcelVOS);
|
List<String[]> strings = ExcelUtils.answerToString(answerVOS);
|
|
|
ExcelSheet excelSheet = new ExcelSheet("次数统计",sheetHead1,listEntities);
|
ExcelSheet excelSheet1 = new ExcelSheet("详细分数",sheetHead2,strings);
|
List<ExcelSheet> excelSheets = new ArrayList<>();
|
excelSheets.add(excelSheet);
|
excelSheets.add(excelSheet1);
|
|
ExcelUtils.exportManySheetExcel("1",excelSheets,response,request);
|
|
|
}
|
|
@RequestMapping(value = "/exportTemplatesId/{id}", method = RequestMethod.GET)
|
@SneakyThrows
|
public void exportTemplatesId(@PathVariable("id") Integer id, HttpServletResponse response, HttpServletRequest request) {
|
List<UserCountExcelVO> list = examTemplatesUserCountService.getByExamTemplates(id);
|
ExcelUtils.export(response,"个人练习",list,UserCountExcelVO.class);
|
}
|
|
@RequestMapping(value = "/exportRandownTemplatesId/{id}", method = RequestMethod.GET)
|
@SneakyThrows
|
public void exportRandownTemplatesId(@PathVariable("id") Integer id, HttpServletResponse response, HttpServletRequest request) {
|
ExamTemplates byId = examTemplatesMapper.getById(id);
|
List<ExamTemplatesUser> byId1 = examTemplatesUserMapper.getById(id);
|
|
List<ExamTemplatesUserCount> byTemplates = examTemplatesUserCountService.getByTemplates(id);
|
List<Integer> list = byTemplates.stream().map(ExamTemplatesUserCount::getExamPaperId).collect(Collectors.toList());
|
List<Integer> userIds = byId1.stream().map(e->Integer.parseInt(e.getUserId())).collect(Collectors.toList());
|
//考试
|
List<ExamPaperAnswer> result = new ArrayList<>();
|
if(list.size()!=0){
|
result = examPaperAnswerMapper.getResult(list);
|
}
|
|
//用户
|
List<User> users = userService.selectByIds(userIds);
|
|
List<TeamplatesUserExcelVO> list1 = new ArrayList<>();
|
|
for (User user : users) {
|
TeamplatesUserExcelVO vo = new TeamplatesUserExcelVO();
|
vo.setName(byId.getName());
|
vo.setUserName(user.getRealName());
|
Boolean str = false;
|
for (ExamPaperAnswer answer: result) {
|
if(user.getId().equals(answer.getCreateUser())){
|
str = true;
|
vo.setUserScore(answer.getUserScore() == 0 ? "0" : String.valueOf(answer.getUserScore() / 10));
|
vo.setPaperScore(answer.getPaperScore() == 0 ? "0" : String.valueOf(answer.getPaperScore() / 10));
|
vo.setDoTime(answer.getDoTime().toString());
|
list1.add(vo);
|
continue;
|
}
|
}
|
if(!str){
|
list1.add(vo);
|
}
|
str = false;
|
|
}
|
|
|
ExcelUtils.export(response,"个人练习",list1, TeamplatesUserExcelVO.class);
|
}
|
|
@RequestMapping(value = "/timeOne", method = RequestMethod.GET)
|
@SneakyThrows
|
public void time( HttpServletResponse response, HttpServletRequest request) {
|
List<TeamplatesUserExcelVO> list = examPaperAnswerMapper.getByTimeOne();
|
ExcelUtils.export(response,"个人练习",list,TeamplatesUserExcelVO.class);
|
}
|
|
|
|
}
|