package com.mindskip.xzs.controller.admin; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; 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.context.WebContext; import com.mindskip.xzs.domain.ExamPaperAnswer; import com.mindskip.xzs.domain.User; import com.mindskip.xzs.domain.UserDepartment; import com.mindskip.xzs.domain.vo.ScoreTemplatesCountVO; import com.mindskip.xzs.repository.DepartmentMapper; import com.mindskip.xzs.repository.ExamPaperAnswerMapper; import com.mindskip.xzs.repository.UserDepartmentMapper; import com.mindskip.xzs.repository.UserMapper; import com.mindskip.xzs.service.*; import com.mindskip.xzs.utility.minio.DateUtils; import com.mindskip.xzs.viewmodel.admin.paper.ExamPaperGradePageRequestVM; import com.mindskip.xzs.viewmodel.admin.paper.ExamPaperGradeQuery; import lombok.RequiredArgsConstructor; 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 java.util.ArrayList; import java.util.List; import java.util.Objects; @RestController("AdminExamPaperGradeController") @RequestMapping(value = "/api/admin/examPaperGrade") @RequiredArgsConstructor public class ExamPaperGradeController extends BaseApiController { private final ExamPaperAnswerService examPaperAnswerService; private final SubjectService subjectService; private final UserService userService; private final UserMapper userMapper; private final ExamPaperSubjectService examPaperSubjectService; private final ScoreTemplatesUserCountService scoreTemplatesUserCountService; private final ExamPaperUserService examPaperUserService; private final UserDepartMentService userDepartMentService; private final UserDepartmentMapper userDepartmentMapper; private final ExamPaperAnswerMapper examPaperAnswerMapper; private final WebContext webContext; private final DepartmentMapper departmentMapper; // @RequestMapping(value = "/page", method = RequestMethod.POST) // public RestResponse> pageJudgeList(@RequestBody ExamPaperGradePageRequestVM grade) { // PageInfo pageInfo = examPaperAnswerService.adminPageByGrade(grade); // PageInfo page = PageInfoHelper.copyMap(pageInfo, e -> { // ExamPaperAnswerPageResponseVM vm = modelMapper.map(e, ExamPaperAnswerPageResponseVM.class); // User user = userService.selectByIdName(e.getCreateUser(), grade.getUserName()); // if (user == null) { // return null; // } // 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) { // name = subjectService.selectByIds(ids) // .stream().map(Subject::getName).collect(Collectors.joining(",")); // } // Integer userId = examPaperUserService.getByPaperIdAndCreatUser(e.getExamPaperId(),e.getCreateUser()); // if(userId == null){ // return null; // } // vm.setCreateUser(e.getCreateUser()); // vm.setUserId(userId); // vm.setSubjectName(name); // vm.setCreateTime(DateTimeUtil.dateFormat(e.getCreateTime())); // vm.setUserName(user.getRealName()); // return vm; // }); // List list = page.getList(); // List filteredList = list.stream() // .filter(exam -> exam != null) // .collect(Collectors.toList()); // ArrayList list2 = new ArrayList<>(); // Map collect = filteredList.stream().collect(Collectors.groupingBy(ExamPaperAnswerPageResponseVM::getPaperName, Collectors.counting())); // filteredList.forEach(vm -> vm.setCounts(Math.toIntExact(collect.getOrDefault(vm.getPaperName(), 0L)))); // Map> collect1 = filteredList.stream().collect(Collectors.groupingBy(ExamPaperAnswerPageResponseVM::getUserName)); // List filteredList1 = new ArrayList<>(); // Set uniqueUserNames = new HashSet<>(); // collect1.forEach((key, value) -> { // value.forEach(item -> { // item.setUserName(key); // item.setCounts(value.size()); // }); // list2.addAll(value); // }); // for (ExamPaperAnswerPageResponseVM item : list2) { // if (uniqueUserNames.add(item.getUserName())) { // filteredList1.add(item); // } // } // page.setList(filteredList1); // return RestResponse.ok(page); // } @RequestMapping(value = "/page", method = RequestMethod.POST) public RestResponse> pageJudgeList(@RequestBody ExamPaperGradeQuery query) { // 查出用户(并做数据权限) User currentUser = webContext.getCurrentUser(); if (Objects.nonNull(currentUser)) { // 如果是部门管理员,需要做数据权限 if ("1".equals(currentUser.getDeptAdmin())) { query.setDeptId(departmentMapper.selectByAdminId(currentUser.getId())); } } query.setFullTime(); // 查询 PageInfo info = PageHelper.startPage(query.getPageIndex(), query.getPageSize()).doSelectPageInfo(() -> userMapper.getUserByDept(query)); return RestResponse.ok(info); } @RequestMapping(value = "/details", method = RequestMethod.POST) public RestResponse> selectSource(@RequestBody ExamPaperGradeQuery query) throws Exception { return RestResponse.ok(examPaperAnswerService.getByCreatUser(query)); } @RequestMapping(value = "/updates", method = RequestMethod.GET) public void updateDepartment() { List users = userService.getUsers(); for (User user : users) { Integer id = user.getId(); Integer userLevel = user.getUserLevel(); UserDepartment userDepartment = new UserDepartment(); userDepartment.setUserId(id); userDepartment.setDepartmentId(userLevel); userDepartMentService.insert(userDepartment); } } }