From 47cd9ecc0eff38ffe6b3b794b2bf197e958f4403 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期三, 14 五月 2025 15:50:57 +0800
Subject: [PATCH] bug:学员有状态不能修改问题

---
 src/main/java/com/mindskip/xzs/controller/student/DashboardController.java |  119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 111 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/mindskip/xzs/controller/student/DashboardController.java b/src/main/java/com/mindskip/xzs/controller/student/DashboardController.java
index faf08df..0cbb263 100644
--- a/src/main/java/com/mindskip/xzs/controller/student/DashboardController.java
+++ b/src/main/java/com/mindskip/xzs/controller/student/DashboardController.java
@@ -2,23 +2,29 @@
 
 import com.mindskip.xzs.base.BaseApiController;
 import com.mindskip.xzs.base.RestResponse;
-import com.mindskip.xzs.domain.TaskExam;
-import com.mindskip.xzs.domain.TaskExamCustomerAnswer;
-import com.mindskip.xzs.domain.TextContent;
-import com.mindskip.xzs.domain.User;
+import com.mindskip.xzs.domain.*;
 import com.mindskip.xzs.domain.enums.ExamPaperTypeEnum;
 import com.mindskip.xzs.domain.task.TaskItemAnswerObject;
 import com.mindskip.xzs.domain.task.TaskItemObject;
+import com.mindskip.xzs.domain.vo.ExamTemplatesUserCountVO;
+import com.mindskip.xzs.domain.vo.ExamTemplatesVO;
+import com.mindskip.xzs.repository.ExamPaperAnswerMapper;
+import com.mindskip.xzs.repository.ExamTemplatesMapper;
+import com.mindskip.xzs.repository.ExamTemplatesUserCountMapper;
+import com.mindskip.xzs.repository.ExamTemplatesUserMapper;
 import com.mindskip.xzs.service.*;
 import com.mindskip.xzs.utility.DateTimeUtil;
 import com.mindskip.xzs.utility.JsonUtil;
 import com.mindskip.xzs.viewmodel.student.dashboard.*;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.time.LocalDateTime;
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -33,15 +39,45 @@
     private final TaskExamService taskExamService;
     private final TaskExamCustomerAnswerService taskExamCustomerAnswerService;
     private final TextContentService textContentService;
+    private final ExamPaperUserService examPaperUserService;
+    private final ExamPaperAnswerMapper answerMapper;
+    private final ExamTemplatesMapper templatesMapper;
+    private final ExamTemplatesUserCountMapper templatesUserCountMapper;
+    private final ExamTemplatesUserMapper examTemplatesUserMapper;
 
     @Autowired
-    public DashboardController(UserService userService, ExamPaperService examPaperService, QuestionService questionService, TaskExamService taskExamService, TaskExamCustomerAnswerService taskExamCustomerAnswerService, TextContentService textContentService) {
+    public DashboardController(UserService userService, ExamPaperService examPaperService,
+                               QuestionService questionService, TaskExamService taskExamService,
+                               TaskExamCustomerAnswerService taskExamCustomerAnswerService,
+                               TextContentService textContentService, ExamPaperUserService examPaperUserService,
+                               ExamPaperAnswerMapper answerMapper, ExamTemplatesMapper templatesMapper, ExamTemplatesUserCountMapper templatesUserCountMapper, ExamTemplatesUserMapper examTemplatesUserMapper) {
         this.userService = userService;
         this.examPaperService = examPaperService;
         this.questionService = questionService;
         this.taskExamService = taskExamService;
         this.taskExamCustomerAnswerService = taskExamCustomerAnswerService;
         this.textContentService = textContentService;
+        this.examPaperUserService = examPaperUserService;
+        this.answerMapper = answerMapper;
+        this.templatesMapper = templatesMapper;
+        this.templatesUserCountMapper = templatesUserCountMapper;
+        this.examTemplatesUserMapper = examTemplatesUserMapper;
+    }
+
+    @RequestMapping(value = "/qualification/{paperId}", method = RequestMethod.GET)
+    public RestResponse qualification(@PathVariable("paperId") String paperId) {
+        User user = getCurrentUser();
+        ExamTemplatesUserCount count = new ExamTemplatesUserCount();
+        List<ExamTemplatesUserCount> examTemplatesUserCountList = new ArrayList<>();
+        List<PaperInfo> paperInfos = new ArrayList<>();
+        count.setUserId(user.getId());
+        count.setExamPaperId(Integer.parseInt(paperId));
+        examTemplatesUserCountList.add(count);
+        List<ExamPaperAnswer> list1 = answerMapper.getByExamPaperIdAndUserId(examTemplatesUserCountList);
+        if(list1.size()>0){
+            return RestResponse.fail(500,"褰撳墠璇曞嵎宸插畬鎴愯�冭瘯锛�");
+        }
+        return RestResponse.ok();
     }
 
     @RequestMapping(value = "/index", method = RequestMethod.POST)
@@ -54,16 +90,70 @@
         Integer[] type = {ExamPaperTypeEnum.Fixed.getCode(),ExamPaperTypeEnum.Random.getCode()};
         fixedPaperFilter.setExamPaperType(type);
         fixedPaperFilter.setUserId(user.getId());
-        indexVM.setFixedPaper(examPaperService.indexPaper(fixedPaperFilter));
+        //璇曞嵎
+        List<PaperInfo> list = examPaperService.indexPaper(fixedPaperFilter);
+        ExamTemplatesUserCount count = new ExamTemplatesUserCount();
+        List<ExamTemplatesUserCount> examTemplatesUserCountList = new ArrayList<>();
+        List<PaperInfo> paperInfos = new ArrayList<>();
+        for (PaperInfo info : list) {
+            count.setUserId(user.getId());
+            count.setExamPaperId(info.getId());
+            examTemplatesUserCountList.add(count);
+            List<ExamPaperAnswer> list1 = answerMapper.getByExamPaperIdAndUserId(examTemplatesUserCountList);
+            examTemplatesUserCountList.clear();
+            if(list1.size()>0){
+                continue;
+            }
+            info.setStatus("0");
+            paperInfos.add(info);
+        }
+
+        ExamTemplatesVO vo = new ExamTemplatesVO();
+        vo.setStatus("0");
+        vo.setUserId(user.getId());
+        vo.setNow(LocalDateTime.now());
+        List<ExamTemplates> gets = templatesMapper.gets(vo);
+        ExamTemplatesUserCountVO templatesUserCountVO = new ExamTemplatesUserCountVO();
+        templatesUserCountVO.setUserId(user.getId());
+
+        for (ExamTemplates get : gets) {
+            templatesUserCountVO.setId(get.getId());
+                Integer number = templatesUserCountMapper.getCountByUserIdAndTemplatesId(templatesUserCountVO);
+                if(number==0){
+                    PaperInfo info = new PaperInfo();
+                    info.setId(get.getId());
+                    info.setName(get.getName());
+                    info.setStatus("1");
+                    info.setCreateTime(get.getCtime());
+                    paperInfos.add(info);
+                }
+        }
+        paperInfos = paperInfos.stream().sorted(Comparator.comparing(PaperInfo::getCreateTime).reversed()).collect(Collectors.toList());
+        indexVM.setFixedPaper(paperInfos);
 
         PaperFilter timeLimitPaperFilter = new PaperFilter();
         timeLimitPaperFilter.setDateTime(new Date());
         timeLimitPaperFilter.setGradeLevel(user.getUserLevel());
         Integer[] time = {ExamPaperTypeEnum.TimeLimit.getCode()};
         timeLimitPaperFilter.setExamPaperType(time);
+        timeLimitPaperFilter.setUserId(user.getId());
 
+        ExamTemplatesUserCount count1 = new ExamTemplatesUserCount();
+        List<ExamTemplatesUserCount> examTemplatesUserCountList1 = new ArrayList<>();
+        List<PaperInfo> paperInfos1 = new ArrayList<>();
         List<PaperInfo> limitPaper = examPaperService.indexPaper(timeLimitPaperFilter);
-        List<PaperInfoVM> paperInfoVMS = limitPaper.stream().map(d -> {
+        for (PaperInfo info : limitPaper) {
+            count1.setUserId(user.getId());
+            count1.setExamPaperId(info.getId());
+            examTemplatesUserCountList1.add(count1);
+            List<ExamPaperAnswer> list1 = answerMapper.getByExamPaperIdAndUserId(examTemplatesUserCountList1);
+            examTemplatesUserCountList1.clear();
+            if(list1.size()>0){
+                continue;
+            }
+            paperInfos1.add(info);
+        }
+        List<PaperInfoVM> paperInfoVMS = paperInfos1.stream().map(d -> {
             PaperInfoVM vm = modelMapper.map(d, PaperInfoVM.class);
             vm.setStartTime(DateTimeUtil.dateFormat(d.getLimitStartTime()));
             vm.setEndTime(DateTimeUtil.dateFormat(d.getLimitEndTime()));
@@ -77,7 +167,20 @@
     @RequestMapping(value = "/task", method = RequestMethod.POST)
     public RestResponse<List<TaskItemVm>> task() {
         User user = getCurrentUser();
-        List<TaskExam> taskExams = taskExamService.getByGradeLevel(user.getUserLevel());
+        Integer[] ids = examPaperUserService.getByUserId(user.getId())
+                .stream().map(ExamPaperUser::getExamPaperId).toArray(Integer[]::new);
+        List<TaskExam> taskExams = new ArrayList<>();
+        if(ids.length!=0){
+             List<ExamPaper> list = examPaperService.gets(ids).stream()
+                    .filter(e -> e.getPaperType() == 6).collect(Collectors.toList());
+             if(list.size() != 0){
+                 Integer[] taskIds = list.stream().map(ExamPaper::getTaskExamId).toArray(Integer[]::new);
+                 taskExams = taskExamService.gets(taskIds);
+             }
+
+        }
+
+//        List<TaskExam> taskExams = taskExamService.getByGradeLevel(user.getUserLevel());
         if (taskExams.size() == 0) {
             return RestResponse.ok(new ArrayList<>());
         }

--
Gitblit v1.8.0