xiangpei
2025-05-14 47cd9ecc0eff38ffe6b3b794b2bf197e958f4403
src/main/java/com/mindskip/xzs/controller/admin/ExamTemplatesUserCountController.java
@@ -5,14 +5,14 @@
import com.github.pagehelper.PageInfo;
import com.mindskip.xzs.base.BaseApiController;
import com.mindskip.xzs.base.RestResponse;
import com.mindskip.xzs.domain.ExamPaperAnswer;
import com.mindskip.xzs.domain.ExamTemplates;
import com.mindskip.xzs.domain.ExamTemplatesUserCount;
import com.mindskip.xzs.domain.User;
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;
@@ -23,14 +23,11 @@
import lombok.SneakyThrows;
import org.springframework.web.bind.annotation.*;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@RestController("AdminExamTemplatesUserCountController")
@@ -42,12 +39,16 @@
    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) {
    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)
@@ -62,8 +63,14 @@
        }
        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());
            ExamTemplates byId = examTemplatesMapper.getById(e.getId());
            if (Objects.nonNull(byId)) {
                e.setName(byId.getName());
            }
            User userById = userService.getUserById(e.getUserId());
            if (Objects.nonNull(userById)) {
                e.setUserName(userById.getRealName());
            }
            return e;
        }).collect(Collectors.toList()));
        return RestResponse.ok(info);
@@ -116,21 +123,66 @@
    @SneakyThrows
    public void exportTemplatesId(@PathVariable("id") Integer id, HttpServletResponse response, HttpServletRequest request) {
        List<UserCountExcelVO> list = examTemplatesUserCountService.getByExamTemplates(id);
//        response.setContentType("application/vnd.ms-excel");
//        response.setCharacterEncoding("UTF-8");
//
//        String fileName = URLEncoder.encode("1","UTF-8");
//        response.setHeader("Content-disposition","attachment;filename=" + fileName + ".xlsx");
//
//        ServletOutputStream outputStream = response.getOutputStream();
//        InputStream resourceAsStream = Application.class.getClassLoader().getResourceAsStream("count.xlsx");
//        EasyExcel.write(outputStream)
//                .withTemplate(resourceAsStream)
//                .sheet()
//                .doFill(list);
        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);
        // 获取每个人的试卷ID
        List<Integer> list = byTemplates.stream().map(ExamTemplatesUserCount::getExamPaperId).collect(Collectors.toList());
        // 获取参考用户ID
        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);
    }
}