Эх сурвалжийг харах

3.4.4 update-20250312,sql优化

xiaofei 3 сар өмнө
parent
commit
5424eacecd
23 өөрчлөгдсөн 158 нэмэгдсэн , 150 устгасан
  1. 1 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java
  2. 5 5
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java
  3. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintFinishServiceImpl.java
  4. 2 0
      distributed-print/install/mysql/upgrade/3.4.4.sql
  5. 12 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkStudent.java
  6. 2 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkArbitrateHistoryMapper.java
  7. 5 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkProblemHistoryMapper.java
  8. 2 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkStudentMapper.java
  9. 2 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkTaskMapper.java
  10. 2 2
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkArbitrateHistoryService.java
  11. 1 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkProblemHistoryService.java
  12. 1 2
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkStudentService.java
  13. 2 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkTaskService.java
  14. 2 2
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkArbitrateHistoryServiceImpl.java
  15. 2 6
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkProblemHistoryServiceImpl.java
  16. 1 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkQuestionServiceImpl.java
  17. 20 13
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkServiceImpl.java
  18. 5 4
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java
  19. 4 3
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkTaskServiceImpl.java
  20. 14 23
      teachcloud-mark/src/main/resources/mapper/MarkArbitrateHistoryMapper.xml
  21. 22 0
      teachcloud-mark/src/main/resources/mapper/MarkProblemHistoryMapper.xml
  22. 13 21
      teachcloud-mark/src/main/resources/mapper/MarkStudentMapper.xml
  23. 37 61
      teachcloud-mark/src/main/resources/mapper/MarkTaskMapper.xml

+ 1 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java

@@ -1142,6 +1142,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
                     examStudent.setPaperNumber(s.getPaperNumber());
                     examStudent.setPaperNumber(s.getPaperNumber());
                     examStudent.setCoursePaperId(s.getCoursePaperId());
                     examStudent.setCoursePaperId(s.getCoursePaperId());
                     examStudent.setBasicStudentId(s.getId());
                     examStudent.setBasicStudentId(s.getId());
+                    examStudent.setTeachClazzName(s.getTeachClassName());
                     examStudent.setStudentCode(s.getStudentCode());
                     examStudent.setStudentCode(s.getStudentCode());
                     examStudent.setCreateId(createId);
                     examStudent.setCreateId(createId);
                     examStudent.setCreateTime(System.currentTimeMillis());
                     examStudent.setCreateTime(System.currentTimeMillis());

+ 5 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -887,7 +887,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         // 新建试卷
         // 新建试卷
         List<ExamTaskDetail> examTaskDetailList = examTaskApplyPram.getExamTaskDetailList();
         List<ExamTaskDetail> examTaskDetailList = examTaskApplyPram.getExamTaskDetailList();
         if (CollectionUtils.isNotEmpty(examTaskDetailList)) {
         if (CollectionUtils.isNotEmpty(examTaskDetailList)) {
-            if (examTaskDetailList.size() % 2 != 0) {
+            if (basicPrintConfig.getTwoPaperEnable() && examTaskDetailList.size() <= 1) {
                 throw ExceptionResultEnum.ERROR.exception("请至少上传2份试卷");
                 throw ExceptionResultEnum.ERROR.exception("请至少上传2份试卷");
             }
             }
         }
         }
@@ -1226,16 +1226,16 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
 
 
         ExamTaskSubmitContent examTaskSubmitContent = JSON.parseObject(examTaskSubmitPram.getExamTaskContent(), ExamTaskSubmitContent.class);
         ExamTaskSubmitContent examTaskSubmitContent = JSON.parseObject(examTaskSubmitPram.getExamTaskContent(), ExamTaskSubmitContent.class);
+        // 新建命题任务
+        ExamTask examTask = examTaskSubmitContent.getExamTask();
+        BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamId(examTask.getExamId());
 
 
         if (Objects.nonNull(examTaskSubmitContent) &&
         if (Objects.nonNull(examTaskSubmitContent) &&
                 CollectionUtils.isNotEmpty(examTaskSubmitContent.getExamTaskDetailList())) {
                 CollectionUtils.isNotEmpty(examTaskSubmitContent.getExamTaskDetailList())) {
-            if (examTaskSubmitContent.getExamTaskDetailList().size() % 2 != 0) {
+            if (basicPrintConfig.getTwoPaperEnable() && examTaskSubmitContent.getExamTaskDetailList().size() <= 1) {
                 throw ExceptionResultEnum.ERROR.exception("请至少上传2份试卷");
                 throw ExceptionResultEnum.ERROR.exception("请至少上传2份试卷");
             }
             }
         }
         }
-        // 新建命题任务
-        ExamTask examTask = examTaskSubmitContent.getExamTask();
-        BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamId(examTask.getExamId());
 
 
         // 开启了入库审核
         // 开启了入库审核
         if (basicPrintConfig.getReview()) {
         if (basicPrintConfig.getReview()) {

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintFinishServiceImpl.java

@@ -123,7 +123,7 @@ public class PrintFinishServiceImpl implements PrintFinishService {
                         continue;
                         continue;
                     }
                     }
                     String paperType = basicCardRule.getExamNumberStyle().equals(ExamNumberStyleEnum.PRINT) || (basicCardRule.getExamNumberStyle().equals(ExamNumberStyleEnum.FILL) && !dto.getOpenAb()) ? examStudent.getPaperType() : null;
                     String paperType = basicCardRule.getExamNumberStyle().equals(ExamNumberStyleEnum.PRINT) || (basicCardRule.getExamNumberStyle().equals(ExamNumberStyleEnum.FILL) && !dto.getOpenAb()) ? examStudent.getPaperType() : null;
-                    MarkStudent student = new MarkStudent(examStudent.getId(), dto.getExamId(), examStudent.getBasicStudentId(), dto.getCourseId(), dto.getPaperNumber(), dto.getCoursePaperId(), dto.getSerialNumber(), paperType, examStudent.getStudentCode(), initExamDetailDto.getPackageCode(), initExamDetailDto.getExamPlace(), initExamDetailDto.getExamRoom(), initExamDetailDto.getExamStartTime(), initExamDetailDto.getExamEndTime(), dto.getCreateId());
+                    MarkStudent student = new MarkStudent(examStudent.getId(), dto.getExamId(), examStudent.getBasicStudentId(), dto.getCourseId(), dto.getPaperNumber(), dto.getCoursePaperId(), dto.getSerialNumber(), paperType, examStudent.getStudentCode(), initExamDetailDto.getPackageCode(), initExamDetailDto.getExamPlace(), initExamDetailDto.getExamRoom(), examStudent.getTeachClazzName(), initExamDetailDto.getExamStartTime(), initExamDetailDto.getExamEndTime(), dto.getCreateId());
                     if (student.getSecretNumber() == null) {
                     if (student.getSecretNumber() == null) {
                         student.randomSecretNumber();
                         student.randomSecretNumber();
                         while (secretNumberSet.contains(student.getSecretNumber())
                         while (secretNumberSet.contains(student.getSecretNumber())

+ 2 - 0
distributed-print/install/mysql/upgrade/3.4.4.sql

@@ -294,3 +294,5 @@ ALTER TABLE `mark_user_paper` ADD COLUMN `marked_question_id` BIGINT(20) NULL CO
 -- 2025-03-12
 -- 2025-03-12
 ALTER TABLE teach_course DROP KEY teach_course_unique;
 ALTER TABLE teach_course DROP KEY teach_course_unique;
 ALTER TABLE teach_course ADD CONSTRAINT teach_course_unique UNIQUE KEY (school_id,exam_id,course_id,user_id);
 ALTER TABLE teach_course ADD CONSTRAINT teach_course_unique UNIQUE KEY (school_id,exam_id,course_id,user_id);
+
+ALTER TABLE `mark_student` ADD COLUMN `teach_class_name` VARCHAR(100) NULL COMMENT '教学班' AFTER `exam_room`;

+ 12 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkStudent.java

@@ -89,6 +89,8 @@ public class MarkStudent implements Serializable {
 
 
     @ApiModelProperty(value = "考场")
     @ApiModelProperty(value = "考场")
     private String examRoom;
     private String examRoom;
+    @ApiModelProperty(value = "教学班")
+    private String teachClassName;
 
 
     @ApiModelProperty(value = "备注")
     @ApiModelProperty(value = "备注")
     private String remark;
     private String remark;
@@ -209,7 +211,7 @@ public class MarkStudent implements Serializable {
     public MarkStudent(Long id, Long examId, Long basicStudentId, Long courseId,
     public MarkStudent(Long id, Long examId, Long basicStudentId, Long courseId,
                        String paperNumber, String coursePaperId, Integer serialNumber, String paperType,
                        String paperNumber, String coursePaperId, Integer serialNumber, String paperType,
                        String studentCode, String packageCode, String examPlace,
                        String studentCode, String packageCode, String examPlace,
-                       String examRoom, Long examStartTime, Long examEndTime, Long createId) {
+                       String examRoom, String teachClassName, Long examStartTime, Long examEndTime, Long createId) {
         this.id = id;
         this.id = id;
         this.examId = examId;
         this.examId = examId;
         this.basicStudentId = basicStudentId;
         this.basicStudentId = basicStudentId;
@@ -222,6 +224,7 @@ public class MarkStudent implements Serializable {
         this.packageCode = packageCode;
         this.packageCode = packageCode;
         this.examPlace = examPlace;
         this.examPlace = examPlace;
         this.examRoom = examRoom;
         this.examRoom = examRoom;
+        this.teachClassName = teachClassName;
         this.sheetCount = 0;
         this.sheetCount = 0;
         this.upload = false;
         this.upload = false;
         this.absent = false;
         this.absent = false;
@@ -344,6 +347,14 @@ public class MarkStudent implements Serializable {
         this.examRoom = examRoom;
         this.examRoom = examRoom;
     }
     }
 
 
+    public String getTeachClassName() {
+        return teachClassName;
+    }
+
+    public void setTeachClassName(String teachClassName) {
+        this.teachClassName = teachClassName;
+    }
+
     public String getRemark() {
     public String getRemark() {
         return remark;
         return remark;
     }
     }

+ 2 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkArbitrateHistoryMapper.java

@@ -2,6 +2,7 @@ package com.qmth.teachcloud.mark.mapper;
 
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmth.teachcloud.common.enums.mark.MarkArbitrateStatus;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkArbitrateDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkArbitrateDto;
 import com.qmth.teachcloud.mark.entity.MarkArbitrateHistory;
 import com.qmth.teachcloud.mark.entity.MarkArbitrateHistory;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -25,5 +26,5 @@ public interface MarkArbitrateHistoryMapper extends BaseMapper<MarkArbitrateHist
 
 
     List<MarkArbitrateHistory> getHistory(@Param("page") Page<MarkArbitrateHistory> page, @Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("questionId") Long questionId, @Param("status") String status, @Param("userId") Long userId);
     List<MarkArbitrateHistory> getHistory(@Param("page") Page<MarkArbitrateHistory> page, @Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("questionId") Long questionId, @Param("status") String status, @Param("userId") Long userId);
 
 
-    Integer waitArbitrateCount(@Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("questionId") Long questionId, @Param("status") String status, @Param("className") String className);
+    Integer waitArbitrateCount(@Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("questionId") Long questionId, @Param("status") String status, @Param("classNames") List<String> classNames);
 }
 }

+ 5 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkProblemHistoryMapper.java

@@ -2,11 +2,14 @@ package com.qmth.teachcloud.mark.mapper;
 
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmth.teachcloud.common.enums.mark.MarkProblemStatus;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkProblemDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkProblemDto;
 import com.qmth.teachcloud.mark.entity.MarkProblemHistory;
 import com.qmth.teachcloud.mark.entity.MarkProblemHistory;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
+import java.util.List;
+
 /**
 /**
  * <p>
  * <p>
  * 问题卷历史表 Mapper 接口
  * 问题卷历史表 Mapper 接口
@@ -18,4 +21,6 @@ import org.apache.ibatis.annotations.Param;
 public interface MarkProblemHistoryMapper extends BaseMapper<MarkProblemHistory> {
 public interface MarkProblemHistoryMapper extends BaseMapper<MarkProblemHistory> {
 
 
     IPage<MarkProblemDto> pageProblem(@Param("page") Page<MarkProblemDto> page, @Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("questionId") Long questionId, @Param("problemType") String problemType, @Param("status") String status, @Param("secretNumber") String secretNumber);
     IPage<MarkProblemDto> pageProblem(@Param("page") Page<MarkProblemDto> page, @Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("questionId") Long questionId, @Param("problemType") String problemType, @Param("status") String status, @Param("secretNumber") String secretNumber);
+
+    Integer countByExamIdAndPaperNumberAndStatusAndClassNameIn(@Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("status") MarkProblemStatus status, @Param("classNames") List<String> classNames);
 }
 }

+ 2 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkStudentMapper.java

@@ -19,6 +19,7 @@ import com.qmth.teachcloud.mark.entity.MarkStudent;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
 import java.util.List;
 import java.util.List;
+import java.util.Set;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -140,7 +141,7 @@ public interface MarkStudentMapper extends BaseMapper<MarkStudent> {
      */
      */
     AbInfoVo findExamTaskPaperTypeOpenStatus(@Param("examId") Long examId, @Param("paperNumber") String paperNumber);
     AbInfoVo findExamTaskPaperTypeOpenStatus(@Param("examId") Long examId, @Param("paperNumber") String paperNumber);
 
 
-    List<Long> findUnMarked(@Param("page") Page<Long> page, @Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("userId") Long userId, @Param("classMark") Boolean classMark);
+    List<Long> findUnMarked(@Param("page") Page<Long> page, @Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("questionIds") Set<Long> questionIds, @Param("classNames") List<String> classNames);
 
 
     /**
     /**
      * 根据版本号更新主观题分数
      * 根据版本号更新主观题分数

+ 2 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkTaskMapper.java

@@ -1,6 +1,7 @@
 package com.qmth.teachcloud.mark.mapper;
 package com.qmth.teachcloud.mark.mapper;
 
 
 import java.util.List;
 import java.util.List;
+import java.util.Set;
 
 
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkTaskDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkTaskDto;
 import com.qmth.teachcloud.mark.enums.MarkTaskStatus;
 import com.qmth.teachcloud.mark.enums.MarkTaskStatus;
@@ -36,7 +37,7 @@ public interface MarkTaskMapper extends BaseMapper<MarkTask> {
     List<MarkTask> findUnMarked(@Param("page") Page<MarkTask> page, @Param("examId") Long examId, @Param("paperNumber") String paperNumber,
     List<MarkTask> findUnMarked(@Param("page") Page<MarkTask> page, @Param("examId") Long examId, @Param("paperNumber") String paperNumber,
                                 @Param("userId") Long userId);
                                 @Param("userId") Long userId);
 
 
-    List<MarkTask> findUnMarkedFilterClass(@Param("page") Page<MarkTask> page, @Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("userId") Long userId, @Param("questionId") Long questionId, @Param("classMark") Boolean classMark);
+    List<MarkTask> findUnMarkedFilterClass(@Param("page") Page<MarkTask> page, @Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("userId") Long userId, @Param("questionId") Long questionId, @Param("classNames") List<String> classNames);
 
 
     List<MarkTask> listByExamIdAndPaperNumberAndQuestionIdAndUserIdAndClassName(@Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("questionId") Long questionId, @Param("userId") Long userId, @Param("className") String className);
     List<MarkTask> listByExamIdAndPaperNumberAndQuestionIdAndUserIdAndClassName(@Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("questionId") Long questionId, @Param("userId") Long userId, @Param("className") String className);
 
 

+ 2 - 2
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkArbitrateHistoryService.java

@@ -2,6 +2,7 @@ package com.qmth.teachcloud.mark.service;
 
 
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.qmth.teachcloud.common.enums.mark.MarkArbitrateStatus;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkArbitrateDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkArbitrateDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkArbitrateMarkerDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkArbitrateMarkerDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkArbitrateSettingDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkArbitrateSettingDto;
@@ -42,8 +43,7 @@ public interface MarkArbitrateHistoryService extends IService<MarkArbitrateHisto
 
 
     List<Task> getHistory(Long examId, String paperNumber, Long questionId, Integer pageNumber, Integer pageSize);
     List<Task> getHistory(Long examId, String paperNumber, Long questionId, Integer pageNumber, Integer pageSize);
 
 
-    Integer waitArbitrateCount(Long examId, String paperNumber, Long questionId, String className);
+    Integer waitArbitrateCount(Long examId, String paperNumber, Long questionId, List<String> classNames);
 
 
     void deleteByExamIdAndPaperNumberAndQuestionId(Long examId, String paperNumber, Long questionId);
     void deleteByExamIdAndPaperNumberAndQuestionId(Long examId, String paperNumber, Long questionId);
-
 }
 }

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkProblemHistoryService.java

@@ -30,5 +30,5 @@ public interface MarkProblemHistoryService extends IService<MarkProblemHistory>
 
 
 	MarkProblemHistory findByTaskIdAndStatus(Long taskId, MarkProblemStatus status);
 	MarkProblemHistory findByTaskIdAndStatus(Long taskId, MarkProblemStatus status);
 
 
-    Integer countByExamIdAndPaperNumberAndStatus(Long examId, String paperNumber, MarkProblemStatus status);
+    Integer countByExamIdAndPaperNumberAndStatusAndClassNameIn(Long examId, String paperNumber, MarkProblemStatus status, List<String> classNames);
 }
 }

+ 1 - 2
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkStudentService.java

@@ -6,7 +6,6 @@ import java.util.Set;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.NotNull;
 
 
-import com.qmth.teachcloud.common.enums.TaskStatusEnum;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -267,7 +266,7 @@ public interface MarkStudentService extends IService<MarkStudent> {
 
 
     UpdateTimeVo add(Long examId, String coursePaperId, String studentCode, String studentName, String paperType, Long basicStudentId);
     UpdateTimeVo add(Long examId, String coursePaperId, String studentCode, String studentName, String paperType, Long basicStudentId);
 
 
-    List<Long> findUnMarked(Page<Long> page, Long examId, String paperNumber, Long userId, Boolean classMark);
+    List<Long> findUnMarked(Page<Long> page, Long examId, String paperNumber, Set<Long> questionIds, List<String> classNames);
 
 
     /**
     /**
      * 根据版本号更新主观题分数
      * 根据版本号更新主观题分数

+ 2 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkTaskService.java

@@ -14,6 +14,7 @@ import com.qmth.teachcloud.mark.params.MarkResultQuestion;
 
 
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.List;
+import java.util.Set;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -63,7 +64,7 @@ public interface MarkTaskService extends IService<MarkTask> {
 
 
     List<MarkTask> findUnMarked(Page<MarkTask> page, Long examId, String paperNumber, Long userId);
     List<MarkTask> findUnMarked(Page<MarkTask> page, Long examId, String paperNumber, Long userId);
 
 
-    List<MarkTask> findUnMarkedFilterClass(Page<MarkTask> page, Long examId, String paperNumber, Long userId, Long questionId, Boolean classMark);
+    List<MarkTask> findUnMarkedFilterClass(Page<MarkTask> page, Long examId, String paperNumber, Long userId, Long questionId, List<String> classNames);
 
 
     int countByIdAndStatus(Long studentId, MarkTaskStatus status);
     int countByIdAndStatus(Long studentId, MarkTaskStatus status);
 
 

+ 2 - 2
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkArbitrateHistoryServiceImpl.java

@@ -254,8 +254,8 @@ public class MarkArbitrateHistoryServiceImpl extends ServiceImpl<MarkArbitrateHi
     }
     }
 
 
     @Override
     @Override
-    public Integer waitArbitrateCount(Long examId, String paperNumber, Long questionId, String className) {
-        return this.baseMapper.waitArbitrateCount(examId, paperNumber, questionId, MarkArbitrateStatus.WAITING.name(), className);
+    public Integer waitArbitrateCount(Long examId, String paperNumber, Long questionId, List<String> classNames) {
+        return this.baseMapper.waitArbitrateCount(examId, paperNumber, questionId, MarkArbitrateStatus.WAITING.name(), classNames);
     }
     }
 
 
     @Override
     @Override

+ 2 - 6
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkProblemHistoryServiceImpl.java

@@ -143,11 +143,7 @@ public class MarkProblemHistoryServiceImpl extends ServiceImpl<MarkProblemHistor
     }
     }
 
 
     @Override
     @Override
-    public Integer countByExamIdAndPaperNumberAndStatus(Long examId, String paperNumber, MarkProblemStatus status) {
-        QueryWrapper<MarkProblemHistory> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(MarkProblemHistory::getExamId, examId)
-                .eq(MarkProblemHistory::getPaperNumber, paperNumber)
-                .eq(MarkProblemHistory::getStatus, status);
-        return this.count(queryWrapper);
+    public Integer countByExamIdAndPaperNumberAndStatusAndClassNameIn(Long examId, String paperNumber, MarkProblemStatus status, List<String> classNames) {
+        return this.baseMapper.countByExamIdAndPaperNumberAndStatusAndClassNameIn(examId, paperNumber, status, classNames);
     }
     }
 }
 }

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkQuestionServiceImpl.java

@@ -706,7 +706,7 @@ public class MarkQuestionServiceImpl extends ServiceImpl<MarkQuestionMapper, Mar
                 }
                 }
 
 
                 // 待仲裁数量
                 // 待仲裁数量
-                int arbitrateCount = markArbitrateHistoryService.waitArbitrateCount(examId, paperNumber, questionId, markGroupClassProgressDto.getClassName());
+                int arbitrateCount = markArbitrateHistoryService.waitArbitrateCount(examId, paperNumber, questionId, Arrays.asList(markGroupClassProgressDto.getClassName()));
                 markGroupClassProgressDto.setQuestionNumber(markQuestion.getQuestionNumber());
                 markGroupClassProgressDto.setQuestionNumber(markQuestion.getQuestionNumber());
                 markGroupClassProgressDto.setMarkerCount(totalMarkUserList.size());
                 markGroupClassProgressDto.setMarkerCount(totalMarkUserList.size());
                 markGroupClassProgressDto.setTaskCount(totalMarkTaskList.size());
                 markGroupClassProgressDto.setTaskCount(totalMarkTaskList.size());

+ 20 - 13
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkServiceImpl.java

@@ -207,7 +207,7 @@ public class MarkServiceImpl implements MarkService {
         }
         }
         Long now = System.currentTimeMillis();
         Long now = System.currentTimeMillis();
         if (markTaskService.resetById(markTask.getId(), null, null, userId, now, MarkTaskStatus.WAITING)) {
         if (markTaskService.resetById(markTask.getId(), null, null, userId, now, MarkTaskStatus.WAITING)) {
-            resetStudentGroup(markTask.getStudentId());
+            resetStudentStatus(markTask.getStudentId());
             markProblemHistoryService.resetByMarkProblemId(markProblemHistory.getId(), MarkProblemStatus.WAITING,
             markProblemHistoryService.resetByMarkProblemId(markProblemHistory.getId(), MarkProblemStatus.WAITING,
                     userId, MarkProblemStatus.BACK, now);
                     userId, MarkProblemStatus.BACK, now);
             updateMarkedCount(markTask.getExamId(), markTask.getPaperNumber(), markTask.getQuestionId());
             updateMarkedCount(markTask.getExamId(), markTask.getPaperNumber(), markTask.getQuestionId());
@@ -217,7 +217,7 @@ public class MarkServiceImpl implements MarkService {
         }
         }
     }
     }
 
 
-    private void resetStudentGroup(Long studentId) {
+    private void resetStudentStatus(Long studentId) {
 //        markStudentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.UNMARK, null, null);
 //        markStudentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.UNMARK, null, null);
         markStudentService.updateSubjectiveScoreByVersion(studentId, SubjectiveStatus.UNMARK, null, null, null);
         markStudentService.updateSubjectiveScoreByVersion(studentId, SubjectiveStatus.UNMARK, null, null, null);
     }
     }
@@ -719,8 +719,7 @@ public class MarkServiceImpl implements MarkService {
 
 
     private MarkStatusDto getDto(MarkStatusDto dto, Long examId, String paperNumber, Long userId, List<String> classNames, List<Long> questionIds) {
     private MarkStatusDto getDto(MarkStatusDto dto, Long examId, String paperNumber, Long userId, List<String> classNames, List<Long> questionIds) {
         //待仲裁卷数量
         //待仲裁卷数量
-        dto.setArbitrateCount(markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndAndClassNameStatusIn(examId,
-                paperNumber, null, classNames, MarkTaskStatus.WAIT_ARBITRATE));
+        dto.setArbitrateCount(markArbitrateHistoryService.waitArbitrateCount(examId, paperNumber, null, classNames));
         //总数量
         //总数量
         dto.setTotalCount(markTaskService.countByExamIdAndPaperNumberAndUserIdAndAndClassNameAndQuestionIdIn(examId, paperNumber, null, classNames, questionIds));
         dto.setTotalCount(markTaskService.countByExamIdAndPaperNumberAndUserIdAndAndClassNameAndQuestionIdIn(examId, paperNumber, null, classNames, questionIds));
         // 未评
         // 未评
@@ -732,8 +731,7 @@ public class MarkServiceImpl implements MarkService {
         dto.setPersonCount(markTaskService.countByExamIdAndPaperNumberAndUserIdAndAndClassNameAndQuestionIdIn(examId, paperNumber, userId, classNames, questionIds, MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED,
         dto.setPersonCount(markTaskService.countByExamIdAndPaperNumberAndUserIdAndAndClassNameAndQuestionIdIn(examId, paperNumber, userId, classNames, questionIds, MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED,
                 MarkTaskStatus.WAIT_ARBITRATE, MarkTaskStatus.PROBLEM));
                 MarkTaskStatus.WAIT_ARBITRATE, MarkTaskStatus.PROBLEM));
         //问题卷数量
         //问题卷数量
-        dto.setProblemCount(markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndAndClassNameStatusIn(examId,
-                paperNumber, null, classNames, MarkTaskStatus.PROBLEM));
+        dto.setProblemCount(markProblemHistoryService.countByExamIdAndPaperNumberAndStatusAndClassNameIn(examId, paperNumber, MarkProblemStatus.WAITING, classNames));
         return dto;
         return dto;
     }
     }
 
 
@@ -868,13 +866,22 @@ public class MarkServiceImpl implements MarkService {
         if (markUserQuestions.isEmpty()) {
         if (markUserQuestions.isEmpty()) {
             throw ExceptionResultEnum.ERROR.exception("评卷员未设置评卷题目");
             throw ExceptionResultEnum.ERROR.exception("评卷员未设置评卷题目");
         }
         }
+        List<String> classNames = null;
+        //校验是否有分班阅
+        if (markPaper != null && markPaper.getClassMark() != null && markPaper.getClassMark().booleanValue()) {
+            List<MarkUserClass> markUserClassList = markUserClassService.listByExamIdAndPaperNumberAndUserId(examId, paperNumber, userId);
+            if (CollectionUtils.isNotEmpty(markUserClassList)) {
+                classNames = markUserClassList.stream().map(MarkUserClass::getClassName).collect(Collectors.toList());
+            }
+        }
+
         Task task = null;
         Task task = null;
         List<Long> studentIds;
         List<Long> studentIds;
         int pageNumber = 1;
         int pageNumber = 1;
         while (task == null) {
         while (task == null) {
             if (questionModel.equals(QuestionModel.SINGLE)) {
             if (questionModel.equals(QuestionModel.SINGLE)) {
                 Set<Long> questions = new HashSet<>(Arrays.asList(questionId));
                 Set<Long> questions = new HashSet<>(Arrays.asList(questionId));
-                List<MarkTask> list = markTaskService.findUnMarkedFilterClass(new Page<>(pageNumber, 20), examId, paperNumber, userId, questionId, markPaper.getClassMark());
+                List<MarkTask> list = markTaskService.findUnMarkedFilterClass(new Page<>(pageNumber, 20), examId, paperNumber, userId, questionId, classNames);
                 if (list.isEmpty()) {
                 if (list.isEmpty()) {
                     break;
                     break;
                 }
                 }
@@ -886,7 +893,7 @@ public class MarkServiceImpl implements MarkService {
                 }
                 }
             } else if (questionModel.equals(QuestionModel.MULTI)) {
             } else if (questionModel.equals(QuestionModel.MULTI)) {
                 Set<Long> questions = markUserQuestions.stream().map(MarkUserQuestion::getQuestionId).collect(Collectors.toSet());
                 Set<Long> questions = markUserQuestions.stream().map(MarkUserQuestion::getQuestionId).collect(Collectors.toSet());
-                studentIds = markStudentService.findUnMarked(new Page<>(pageNumber, 20), examId, paperNumber, userId, markPaper.getClassMark());
+                studentIds = markStudentService.findUnMarked(new Page<>(pageNumber, 20), examId, paperNumber, questions, classNames);
                 if (studentIds.isEmpty()) {
                 if (studentIds.isEmpty()) {
                     break;
                     break;
                 }
                 }
@@ -957,8 +964,8 @@ public class MarkServiceImpl implements MarkService {
         if (!lock) {
         if (!lock) {
             return false;
             return false;
         }
         }
-        taskLock.remove(studentId, userId);
-        return false;
+//        taskLock.remove(studentId, userId);
+        return true;
     }
     }
 
 
     @Override
     @Override
@@ -1062,7 +1069,7 @@ public class MarkServiceImpl implements MarkService {
                             saveProblemHistory(markResultQuestion, task, userId);
                             saveProblemHistory(markResultQuestion, task, userId);
                             updateMarkedCount(markUserQuestion.getExamId(), markUserQuestion.getPaperNumber(), markUserQuestion.getQuestionId());
                             updateMarkedCount(markUserQuestion.getExamId(), markUserQuestion.getPaperNumber(), markUserQuestion.getQuestionId());
                             // 未评完
                             // 未评完
-                            resetStudentGroup(task.getStudentId());
+                            resetStudentStatus(task.getStudentId());
                             count++;
                             count++;
                         }
                         }
                     }
                     }
@@ -1159,7 +1166,7 @@ public class MarkServiceImpl implements MarkService {
             // 触发仲裁后续状态更新
             // 触发仲裁后续状态更新
             markTaskService.updateStatusByStudentIdAndQuestionId(task.getStudentId(), task.getQuestionId(), MarkTaskStatus.WAIT_ARBITRATE);
             markTaskService.updateStatusByStudentIdAndQuestionId(task.getStudentId(), task.getQuestionId(), MarkTaskStatus.WAIT_ARBITRATE);
             // 未评完
             // 未评完
-            resetStudentGroup(task.getStudentId());
+            resetStudentStatus(task.getStudentId());
         } else {
         } else {
             // 判断当前分组是否已完成评卷
             // 判断当前分组是否已完成评卷
             checkStudentQuestion(task.getStudentId(), markQuestion, result.getMarkerScore());
             checkStudentQuestion(task.getStudentId(), markQuestion, result.getMarkerScore());
@@ -1214,7 +1221,7 @@ public class MarkServiceImpl implements MarkService {
             markUserQuestionService.updateRejectCountByExamIdAndPaperNumberAndQuestionIdAndUserId(markTask.getExamId(), markTask.getPaperNumber(), markTask.getQuestionId(), markTask.getUserId());
             markUserQuestionService.updateRejectCountByExamIdAndPaperNumberAndQuestionIdAndUserId(markTask.getExamId(), markTask.getPaperNumber(), markTask.getQuestionId(), markTask.getUserId());
             markRejectHistoryService.save(history);
             markRejectHistoryService.save(history);
             markSubjectiveScoreService.updateRejected(markTask.getStudentId(), markTask.getQuestionId(), true);
             markSubjectiveScoreService.updateRejected(markTask.getStudentId(), markTask.getQuestionId(), true);
-            resetStudentGroup(markTask.getStudentId());
+            resetStudentStatus(markTask.getStudentId());
             updateMarkedCount(markTask.getExamId(), markTask.getPaperNumber(), markTask.getQuestionId());
             updateMarkedCount(markTask.getExamId(), markTask.getPaperNumber(), markTask.getQuestionId());
             return true;
             return true;
         } else {
         } else {

+ 5 - 4
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java

@@ -2172,7 +2172,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
             if (containPaperType && StringUtils.isBlank(basicExamStudent.getPaperType())) {
             if (containPaperType && StringUtils.isBlank(basicExamStudent.getPaperType())) {
                 throw ExceptionResultEnum.ERROR.exception("卷型必须");
                 throw ExceptionResultEnum.ERROR.exception("卷型必须");
             } else {
             } else {
-                markStudent = new MarkStudent(SystemConstant.getDbUuid(), basicExamStudent.getExamId(), basicExamStudent.getId(), basicExamStudent.getCourseId(), basicExamStudent.getPaperNumber(), markPaper.getCoursePaperId(), markPaper.getSerialNumber(), basicExamStudent.getPaperType(), basicExamStudent.getStudentCode(), "", basicExamStudent.getExamPlace(), basicExamStudent.getExamRoom(), basicExamStudent.getExamStartTime(), basicExamStudent.getExamEndTime(), markPaper.getUserId());
+                markStudent = new MarkStudent(SystemConstant.getDbUuid(), basicExamStudent.getExamId(), basicExamStudent.getId(), basicExamStudent.getCourseId(), basicExamStudent.getPaperNumber(), markPaper.getCoursePaperId(), markPaper.getSerialNumber(), basicExamStudent.getPaperType(), basicExamStudent.getStudentCode(), "", basicExamStudent.getExamPlace(), basicExamStudent.getExamRoom(), basicExamStudent.getTeachClassName(), basicExamStudent.getExamStartTime(), basicExamStudent.getExamEndTime(), markPaper.getUserId());
                 if (markStudent.getSecretNumber() == null) {
                 if (markStudent.getSecretNumber() == null) {
                     markStudent.randomSecretNumber();
                     markStudent.randomSecretNumber();
                     while (secretNumberSet.contains(markStudent.getSecretNumber())
                     while (secretNumberSet.contains(markStudent.getSecretNumber())
@@ -2185,6 +2185,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
         } else {
         } else {
             markStudent.setPaperNumber(basicExamStudent.getPaperNumber());
             markStudent.setPaperNumber(basicExamStudent.getPaperNumber());
             markStudent.setPaperType(basicExamStudent.getPaperType());
             markStudent.setPaperType(basicExamStudent.getPaperType());
+            markStudent.setTeachClassName(basicExamStudent.getTeachClassName());
         }
         }
         return markStudent;
         return markStudent;
     }
     }
@@ -2437,7 +2438,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     public UpdateTimeVo add(Long examId, String coursePaperId, String studentCode, String studentName, String paperType, Long basicStudentId) {
     public UpdateTimeVo add(Long examId, String coursePaperId, String studentCode, String studentName, String paperType, Long basicStudentId) {
         SysUser user = (SysUser) ServletUtil.getRequestUser();
         SysUser user = (SysUser) ServletUtil.getRequestUser();
         MarkPaper markPaper = markPaperService.getByExamIdAndCoursePaperId(examId, coursePaperId);
         MarkPaper markPaper = markPaperService.getByExamIdAndCoursePaperId(examId, coursePaperId);
-        MarkStudent markStudent = new MarkStudent(SystemConstant.getDbUuid(), examId, basicStudentId, markPaper.getCourseId(), markPaper.getPaperNumber(), coursePaperId, markPaper.getSerialNumber(), paperType, studentCode, "", null, null, null, null, user.getId());
+        MarkStudent markStudent = new MarkStudent(SystemConstant.getDbUuid(), examId, basicStudentId, markPaper.getCourseId(), markPaper.getPaperNumber(), coursePaperId, markPaper.getSerialNumber(), paperType, studentCode, "", null, null, null, null,null, user.getId());
         if (markStudent.getSecretNumber() == null) {
         if (markStudent.getSecretNumber() == null) {
             markStudent.randomSecretNumber();
             markStudent.randomSecretNumber();
             while (this.countByExamIdAndSecretNumber(markStudent.getExamId(), markStudent.getSecretNumber()) > 0) {
             while (this.countByExamIdAndSecretNumber(markStudent.getExamId(), markStudent.getSecretNumber()) > 0) {
@@ -2449,8 +2450,8 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     }
     }
 
 
     @Override
     @Override
-    public List<Long> findUnMarked(Page<Long> page, Long examId, String paperNumber, Long userId, Boolean classMark) {
-        return this.baseMapper.findUnMarked(page, examId, paperNumber, userId, classMark);
+    public List<Long> findUnMarked(Page<Long> page, Long examId, String paperNumber, Set<Long> questionIds, List<String> classNames) {
+        return this.baseMapper.findUnMarked(page, examId, paperNumber, questionIds, classNames);
     }
     }
 
 
     /**
     /**

+ 4 - 3
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkTaskServiceImpl.java

@@ -32,6 +32,7 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
 import java.util.Arrays;
 import java.util.Arrays;
 import java.util.List;
 import java.util.List;
+import java.util.Set;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -77,7 +78,7 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
                 record.setPercent("0");
                 record.setPercent("0");
             }
             }
             // 问题卷数量
             // 问题卷数量
-            record.setProblemCount(markProblemHistoryService.countByExamIdAndPaperNumberAndStatus(examId, record.getPaperNumber(), MarkProblemStatus.WAITING));
+            record.setProblemCount(markProblemHistoryService.countByExamIdAndPaperNumberAndStatusAndClassNameIn(examId, record.getPaperNumber(), MarkProblemStatus.WAITING, null));
             // 正在评卷数量
             // 正在评卷数量
             record.setCurrentCount(markQuestionService.countCurrentCountByExamIdAndPaperNumber(examId, record.getPaperNumber()));
             record.setCurrentCount(markQuestionService.countCurrentCountByExamIdAndPaperNumber(examId, record.getPaperNumber()));
         }
         }
@@ -252,8 +253,8 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
     }
     }
 
 
     @Override
     @Override
-    public List<MarkTask> findUnMarkedFilterClass(Page<MarkTask> page, Long examId, String paperNumber, Long userId, Long questionId, Boolean classMark) {
-        return this.baseMapper.findUnMarkedFilterClass(page, examId, paperNumber, userId, questionId, classMark);
+    public List<MarkTask> findUnMarkedFilterClass(Page<MarkTask> page, Long examId, String paperNumber, Long userId, Long questionId, List<String> classNames) {
+        return this.baseMapper.findUnMarkedFilterClass(page, examId, paperNumber, userId, questionId, classNames);
     }
     }
 
 
     @Override
     @Override

+ 14 - 23
teachcloud-mark/src/main/resources/mapper/MarkArbitrateHistoryMapper.xml

@@ -96,30 +96,21 @@
         WHERE
         WHERE
             mah.exam_id = #{examId}
             mah.exam_id = #{examId}
           AND mah.paper_number = #{paperNumber}
           AND mah.paper_number = #{paperNumber}
-          AND mah.question_id = #{questionId}
+          <if test="questionId != null">
+              AND mah.question_id = #{questionId}
+          </if>
           AND mah.status = #{status}
           AND mah.status = #{status}
-          <if test="className != null and className != ''">
-              AND EXISTS( SELECT
-              1
-              FROM
-              (SELECT
-              ms.id, ms.exam_id, ms.paper_number, bes.teach_class_name
-              FROM
-              (SELECT
-              *
-              FROM
-              mark_student
-              WHERE
-              exam_id = #{examId} AND paper_number = #{paperNumber}) ms
-              JOIN (SELECT
-              *
-              FROM
-              basic_exam_student
-              WHERE
-              exam_id = #{examId} AND teach_class_name = #{className}) bes ON ms.basic_student_id = bes.id) ms
-              WHERE
-              mah.student_id = ms.id)
+          <if test="classNames != null and classNames.size() > 0">
+              AND EXISTS( SELECT 1
+                          FROM
+                              mark_student
+                          where exam_id = #{examId}
+                            AND paper_number = #{paperNumber}
+                            AND teach_class_name in
+                          <foreach collection="classNames" item="className" separator="," open="(" close=")">
+                              #{className}
+                          </foreach>
+                            AND mah.student_id = ms.id)
           </if>
           </if>
     </select>
     </select>
-
 </mapper>
 </mapper>

+ 22 - 0
teachcloud-mark/src/main/resources/mapper/MarkProblemHistoryMapper.xml

@@ -54,5 +54,27 @@
             </if>
             </if>
         ORDER BY status desc, create_time asc
         ORDER BY status desc, create_time asc
     </select>
     </select>
+    <select id="countByExamIdAndPaperNumberAndStatusAndClassNameIn" resultType="java.lang.Integer">
+        SELECT
+        count(1)
+        FROM
+        mark_problem_history mah
+        WHERE
+        mah.exam_id = #{examId}
+        AND mah.paper_number = #{paperNumber}
+        AND mah.status = #{status}
+        <if test="classNames != null and classNames.size() > 0">
+            AND EXISTS( SELECT 1
+            FROM
+            mark_student
+            where exam_id = #{examId}
+            AND paper_number = #{paperNumber}
+            AND teach_class_name in
+            <foreach collection="classNames" item="className" separator="," open="(" close=")">
+                #{className}
+            </foreach>
+            AND mah.student_id = ms.id)
+        </if>
+    </select>
 
 
 </mapper>
 </mapper>

+ 13 - 21
teachcloud-mark/src/main/resources/mapper/MarkStudentMapper.xml

@@ -1050,27 +1050,19 @@
           AND EXISTS (SELECT 1
           AND EXISTS (SELECT 1
                      FROM mark_task mt
                      FROM mark_task mt
                      WHERE mt.user_id IS NULL
                      WHERE mt.user_id IS NULL
-                        AND m.id = mt.student_id
-                        AND EXISTS( SELECT
-                                1
-                            FROM
-                                mark_user_question muq
-                            WHERE
-                                mt.exam_id = muq.exam_id
-                                AND mt.paper_number = muq.paper_number
-                                AND mt.question_id = muq.question_id
-                                AND muq.user_id = #{userId}
-                                AND muq.enable = TRUE))
-        <if test="classMark == true">
-            AND EXISTS (
-            SELECT 1
-            FROM
-            (select * from mark_user_class where exam_id = #{examId} and paper_number = #{paperNumber} and user_id = #{userId}) mc
-            join
-            (select ms.id, bes.teach_class_name from (select * from mark_student where exam_id = #{examId} and paper_number = #{paperNumber}) ms join (select id,teach_class_name from basic_exam_student where exam_id = #{examId}) bes on ms.basic_student_id = bes.id) s on mc.class_name = s.teach_class_name
-            WHERE m.id = s.id
-            )
-        </if>
+                    <if test="questionIds != null and questionIds.size() > 0">
+                        AND mt.question_id in
+                        <foreach collection="questionIds" item="id" open="(" close=")" separator=",">
+                            #{id}
+                        </foreach>
+                    </if>
+                        AND m.id = mt.student_id)
+            <if test="classNames != null and classNames.size() > 0">
+                AND m.teach_class_name IN
+                <foreach collection="classNames" item="className" separator="," open="(" close=")">
+                    #{className}
+                </foreach>
+            </if>
         </where>
         </where>
     </select>
     </select>
 
 

+ 37 - 61
teachcloud-mark/src/main/resources/mapper/MarkTaskMapper.xml

@@ -196,15 +196,15 @@
 			AND t.user_id = #{userId}
 			AND t.user_id = #{userId}
 			AND t.marker_score IS NOT NULL
 			AND t.marker_score IS NOT NULL
 		)
 		)
-        <if test="classMark == true">
-		AND EXISTS (
-			SELECT 1
-			FROM
-			(select * from mark_user_class where exam_id = #{examId} and paper_number = #{paperNumber} and user_id = #{userId}) mc
-                join
-			(select ms.id, bes.teach_class_name from (select * from mark_student where exam_id = #{examId} and paper_number = #{paperNumber}) ms join (select id,teach_class_name from basic_exam_student where exam_id = #{examId}) bes on ms.basic_student_id = bes.id) s on mc.class_name = s.teach_class_name
-			WHERE mt.student_id = s.id
-		)
+        <if test="classNames != null and classNames.size() > 0">
+            AND EXISTS (select 1 from mark_student ms where exam_id = #{examId} and paper_number = #{paperNumber}
+            AND m.teach_class_name IN
+            <foreach collection="classNames" item="className" separator="," open="(" close=")">
+                #{className}
+            </foreach>
+            and mt.student_id = ms.id
+            )
+
         </if>
         </if>
         </where>
         </where>
     </select>
     </select>
@@ -279,58 +279,34 @@
           AND ms.paper_number = #{paperNumber}
           AND ms.paper_number = #{paperNumber}
           AND EXISTS( SELECT
           AND EXISTS( SELECT
                           1
                           1
-                      FROM
-                          (SELECT
-                               mt.student_id
-                           FROM
-                               mark_task mt
-                           WHERE
-                               mt.exam_id = #{examId}
-                             AND mt.paper_number = #{paperNumber}
-                             <if test="userId !=null">
-                                 AND mt.user_id = #{userId}
-                             </if>
-                            <if test="questionIds != null and questionIds.size() > 0">
-                                AND mt.question_id in
-                                <foreach collection="questionIds" item="id" open="(" close=")" separator=",">
-                                    #{id}
-                                </foreach>
-                            </if>
-                            <if test="statusList != null and statusList.length > 0">
-                                AND mt.status IN
-                                <foreach collection="statusList" item="status" open="(" close=")" separator=",">
-                                    #{status}
-                                </foreach>
-                            </if>
-                            <if test="classNames != null and classNames.size() > 0">
-                             AND EXISTS( SELECT
-                                             1
-                                         FROM
-                                             (SELECT
-                                                  ms.id
-                                              FROM
-                                                  mark_student ms
-                                              WHERE
-                                                  ms.exam_id = #{examId}
-                                                AND ms.paper_number = #{paperNumber}
-                                                AND EXISTS( SELECT
-                                                                1
-                                                            FROM
-                                                                basic_exam_student bes
-                                                            WHERE
-                                                                bes.exam_id = #{examId}
-                                                              AND ms.basic_student_id = bes.id
-                                                              AND bes.teach_class_name IN
-                                                            <foreach collection="classNames" item="className" separator="," open="(" close=")">
-                                                                #{className}
-                                                            </foreach>
-                                                              )) ms
-                                         WHERE
-                                             mt.student_id = ms.id)
-                            </if>
-                           ) t
-                      WHERE
-                          ms.id = t.student_id)
+                       FROM
+                           mark_task mt
+                       WHERE
+                           mt.exam_id = #{examId}
+                         AND mt.paper_number = #{paperNumber}
+                         <if test="userId !=null">
+                             AND mt.user_id = #{userId}
+                         </if>
+                        <if test="questionIds != null and questionIds.size() > 0">
+                            AND mt.question_id in
+                            <foreach collection="questionIds" item="id" open="(" close=")" separator=",">
+                                #{id}
+                            </foreach>
+                        </if>
+                        <if test="statusList != null and statusList.length > 0">
+                            AND mt.status IN
+                            <foreach collection="statusList" item="status" open="(" close=")" separator=",">
+                                #{status}
+                            </foreach>
+                        </if>
+                        AND ms.id = mt.student_id
+                      )
+        <if test="classNames != null and classNames.size() > 0">
+            AND ms.teach_class_name IN
+            <foreach collection="classNames" item="className" separator="," open="(" close=")">
+                #{className}
+            </foreach>
+        </if>
 
 
     </select>
     </select>
     <select id="pageMarkTask" resultType="com.qmth.teachcloud.mark.dto.mark.manage.MarkTaskDto">
     <select id="pageMarkTask" resultType="com.qmth.teachcloud.mark.dto.mark.manage.MarkTaskDto">