xiangpei
2025-05-14 47cd9ecc0eff38ffe6b3b794b2bf197e958f4403
src/main/java/com/mindskip/xzs/controller/admin/ExamPaperGradeController.java
@@ -4,45 +4,43 @@
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.ScoreTemplatesCountVO;
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.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.viewmodel.admin.paper.ExamPaperGradePageRequestVM;
import org.springframework.beans.factory.annotation.Autowired;
import com.mindskip.xzs.viewmodel.admin.paper.ExamPaperGradeQuery;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.ObjectUtils;
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.*;
import java.util.stream.Collectors;
import java.util.List;
@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;
    @Autowired
    public ExamPaperGradeController(ExamPaperAnswerService examPaperAnswerService, SubjectService subjectService, UserService userService, ExamPaperSubjectService examPaperSubjectService, ScoreTemplatesUserCountService scoreTemplatesUserCountService,ExamPaperUserService examPaperUserService,UserDepartMentService userDepartMentService) {
        this.examPaperAnswerService = examPaperAnswerService;
        this.subjectService = subjectService;
        this.userService = userService;
        this.examPaperSubjectService = examPaperSubjectService;
        this.scoreTemplatesUserCountService = scoreTemplatesUserCountService;
        this.examPaperUserService = examPaperUserService;
        this.userDepartMentService = userDepartMentService;
    }
//    @RequestMapping(value = "/page", method = RequestMethod.POST)
@@ -100,73 +98,34 @@
//    }
    @RequestMapping(value = "/page", method = RequestMethod.POST)
    public RestResponse<PageInfo<ExamPaperAnswer>> pageJudgeList(@RequestBody ExamPaperGradePageRequestVM grade) {
        List<ExamPaperAnswer> list = examPaperAnswerService.adminPageByGrade(grade);
        for (ExamPaperAnswer e : list) {
            User user = userService.selectByIdName(e.getCreateUser(), grade.getUserName());
            if (user==null){
                return null;
            }
            ExamPaperAnswer examPaperAnswer = examPaperAnswerService.getById(e.getId());
            Integer[] ids = examPaperSubjectService.getByExamPaperId(examPaperAnswer.getExamPaperId()).stream().map(ExamPaperSubject::getSubjectId).toArray(Integer[]::new);
            String names = "";
            if (ids.length > 0) {
                names = subjectService.selectByIds(ids)
                        .stream().map(Subject::getName).collect(Collectors.joining(","));
            }
            Integer userId = examPaperUserService.getByPaperIdAndCreatUser(e.getExamPaperId(), e.getCreateUser());
            if(userId == null){
                return null;
            }
            e.setUserName(user.getRealName());
        }
        List<ExamPaperAnswer> collect = list.stream()
                .filter(exam -> exam != null)
                .collect(Collectors.toList());
        ArrayList<ExamPaperAnswer> list2 = new ArrayList<>();
        Map<String, Long> collect1 = collect.stream().collect(Collectors.groupingBy(ExamPaperAnswer::getPaperName, Collectors.counting()));
        collect.forEach(t->t.setCounts(Math.toIntExact(collect1.getOrDefault(t.getPaperName(),0L))));
        Map<String, List<ExamPaperAnswer>> collect2 = collect.stream().collect(Collectors.groupingBy(ExamPaperAnswer::getUserName));
        List<ExamPaperAnswer> filteredList1 = new ArrayList<>();
        Set<String> uniqueUserNames = new HashSet<>();
        collect2.forEach((key, value) -> {
            value.forEach(item -> {
                item.setUserName(key);
                item.setCounts(value.size());
            });
            list2.addAll(value);
        });
        for (ExamPaperAnswer item : list2) {
            if (uniqueUserNames.add(item.getUserName())) {
                filteredList1.add(item);
            }
        }
        PageHelper.startPage(grade.getPageIndex(), grade.getPageSize());
        PageInfo<ExamPaperAnswer> pageInfoPageInfo = new PageInfo<>(filteredList1);
        return RestResponse.ok(pageInfoPageInfo);
    public RestResponse<PageInfo<ExamPaperAnswer>> pageJudgeList(@RequestBody ExamPaperGradeQuery query) {
        // 如果是部门管理员,需要做数据权限
        query.setDeptId(ObjectUtils.isNotEmpty(query.getDeptId()) ? query.getDeptId() : getAdminDeptIds());
        query.setFullTime();
        // 查询
        PageInfo<ExamPaperAnswer> info = PageHelper.startPage(query.getPageIndex(), query.getPageSize()).doSelectPageInfo(() ->
                userMapper.getUserByDept(query));
        return RestResponse.ok(info);
    }
    @RequestMapping(value = "/details", method = RequestMethod.POST)
    public RestResponse<PageInfo<ExamPaperAnswer>> selectSource(@RequestBody ScoreTemplatesCountVO scoreTemplatesCountVO) throws Exception {
        PageHelper.startPage(scoreTemplatesCountVO.getPageIndex(), scoreTemplatesCountVO.getPageSize());
        List<ExamPaperAnswer> byCreatUser = examPaperAnswerService.getByCreatUser(scoreTemplatesCountVO);
        PageInfo<ExamPaperAnswer> pageInfoPageInfo = new PageInfo<>(byCreatUser);
        return RestResponse.ok(pageInfoPageInfo);
    public RestResponse<PageInfo<ExamPaperAnswer>> selectSource(@RequestBody ExamPaperGradeQuery query) throws Exception {
      return RestResponse.ok(examPaperAnswerService.getByCreatUser(query));
    }
    @RequestMapping(value = "/updates", method = RequestMethod.POST)
    public void updateDepartment(){
    @RequestMapping(value = "/updates", method = RequestMethod.GET)
    public void updateDepartment() {
        List<User> users = userService.getUsers();
        for (User user : users) {
            Integer id = user.getId();
            Integer userLevel = user.getUserLevel();
            UserDepartment userDepartment = userDepartMentService.selectByUser(id);
            if (userDepartment!=null){
                userDepartment.setDepartmentId(userLevel);
                userDepartMentService.updateUserDepartMent(userDepartment);
            }
            UserDepartment userDepartment = new UserDepartment();
            userDepartment.setUserId(id);
            userDepartment.setDepartmentId(userLevel);
            userDepartMentService.insert(userDepartment);
        }
    }
}