ting.yin hai 1 ano
pai
achega
079e01637a

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/mark/MarkTaskDto.java

@@ -136,7 +136,7 @@ public class MarkTaskDto {
 		this.studentId=t.getStudentId();
 		this.secretNumber=t.getSecretNumber();
 		this.groupNumber=t.getGroupNumber();
-		this.isPrevious = t.getUserId()!=null;
+		
 	}
 
 	public Long getTaskId() {

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

@@ -1,16 +1,16 @@
 package com.qmth.teachcloud.mark.mapper;
 
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkManageDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkerInfoDto;
-import com.qmth.teachcloud.mark.dto.mark.mark.MarkTaskDto;
 import com.qmth.teachcloud.mark.entity.MarkTask;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
 
 /**
  * <p>
@@ -28,12 +28,12 @@ public interface MarkTaskMapper extends BaseMapper<MarkTask> {
 
     MarkTask getLastOneByUserIdAndStatus(@Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("groupNumber") Integer groupNumber, @Param("userId") Long userId, @Param("name") String name);
 
-	IPage<MarkTaskDto> listPageHistory(@Param("page")Page<MarkTaskDto> page,@Param("userId") Long userId,@Param("examId") Long examId, @Param("paperNumber")String paperNumber,
+	IPage<MarkTask> listPageHistory(@Param("page")Page<MarkTask> page,@Param("userId") Long userId,@Param("examId") Long examId, @Param("paperNumber")String paperNumber,
 			@Param("groupNumber")Integer groupNumber,@Param("secretNumber") String secretNumber,@Param("markerScore") Double markerScore);
 
-	List<MarkTask> findUnMarked(@Param("page")Page<MarkTaskDto> page,@Param("examId") Long examId, @Param("paperNumber")String paperNumber, @Param("groupNumber")Integer groupNumber,
+	List<MarkTask> findUnMarked(@Param("page")Page<MarkTask> page,@Param("examId") Long examId, @Param("paperNumber")String paperNumber, @Param("groupNumber")Integer groupNumber,
 			@Param("userId")Long userId);
 
-	List<MarkTask> findUnMarkedFilterClass(@Param("page")Page<MarkTaskDto> page,@Param("examId") Long examId, @Param("paperNumber")String paperNumber, @Param("groupNumber")Integer groupNumber,
+	List<MarkTask> findUnMarkedFilterClass(@Param("page")Page<MarkTask> page,@Param("examId") Long examId, @Param("paperNumber")String paperNumber, @Param("groupNumber")Integer groupNumber,
 			@Param("userId")Long userId);
 }

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

@@ -81,7 +81,7 @@ public interface MarkService {
 
 	void clear(Long userId, Long examId, String paperNumber, Integer groupNumber);
 
-	boolean applyLibrary(MarkTask t, Long userId);
+	boolean applyTask(MarkTask t, Long userId);
 
 	boolean hasApplied(MarkTask t, Long userId);
 }

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

@@ -8,7 +8,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkManageDto;
-import com.qmth.teachcloud.mark.dto.mark.mark.MarkTaskDto;
 import com.qmth.teachcloud.mark.entity.MarkTask;
 import com.qmth.teachcloud.mark.enums.MarkTaskStatus;
 
@@ -57,12 +56,12 @@ public interface MarkTaskService extends IService<MarkTask> {
 
     void deleteByExamIdAndPaperNumberAndGroupNumber(Long examId, String paperNumber, Integer groupNumber);
 
-	IPage<MarkTaskDto> listPageHistory(Page<MarkTaskDto> page, Long userId, Long examId, String paperNumber,
+	IPage<MarkTask> listPageHistory(Page<MarkTask> page, Long userId, Long examId, String paperNumber,
 			Integer groupNumber, String secretNumber, Double markerScore);
 
-	List<MarkTask> findUnMarked(Page<MarkTaskDto> page, Long examId, String paperNumber, Integer groupNumber, Long userId);
+	List<MarkTask> findUnMarked(Page<MarkTask> page, Long examId, String paperNumber, Integer groupNumber, Long userId);
 
-	List<MarkTask> findUnMarkedFilterClass(Page<MarkTaskDto> page, Long examId, String paperNumber, Integer groupNumber,
+	List<MarkTask> findUnMarkedFilterClass(Page<MarkTask> page, Long examId, String paperNumber, Integer groupNumber,
 			Long userId);
 
 	int countByIdAndStatus(Long id, MarkTaskStatus status);

+ 65 - 57
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkServiceImpl.java

@@ -751,10 +751,9 @@ public class MarkServiceImpl implements MarkService {
 
 	@Override
 	public void clear(Long userId, Long examId, String paperNumber, Integer groupNumber) {
-		MarkUserGroup markUserGroup = markUserGroupService.getByExamIdAndPaperNumberAndGroupNumberAndUserId(userId,
-				null, null, userId);
-		TaskLock taskLock = TaskLockUtil.getFormalTask(getGroupKey(markUserGroup));
-		taskLock.clear(markUserGroup.getId());
+		String key = examId + "_" + paperNumber + "_" + groupNumber;
+		TaskLock taskLock = TaskLockUtil.getFormalTask(key);
+		taskLock.clear(userId);
 	}
 
 	@Override
@@ -877,15 +876,24 @@ public class MarkServiceImpl implements MarkService {
 		if (!"markerTime".equals(order) && !"markerScore".equals(order)) {
 			throw ExceptionResultEnum.ERROR.exception("排序错误");
 		}
-		Page<MarkTaskDto> page = new Page<>(pageNumber, pageSize);
+		Page<MarkTask> page = new Page<>(pageNumber, pageSize);
 		OrderItem orderItem = new OrderItem(order, sort.equals(Sort.asc));
 		page.addOrder(orderItem);
-		IPage<MarkTaskDto> list = markTaskService.listPageHistory(page, userId, examId, paperNumber, groupNumber,
+		IPage<MarkTask> list = markTaskService.listPageHistory(page, userId, examId, paperNumber, groupNumber,
 				secretNumber, markerScore);
-		for (MarkTaskDto dto : list.getRecords()) {
+		List<MarkTaskDto> recordsDtos =new ArrayList<MarkTaskDto>();
+		for (MarkTask task : list.getRecords()) {
+			MarkTaskDto dto = toTaskDto(task);
 			dto.setPrevious(true);
+			recordsDtos.add(dto);
 		}
-		return list;
+		IPage<MarkTaskDto> result = new Page<MarkTaskDto>();
+		result.setCurrent(list.getCurrent());
+		result.setPages(list.getPages());
+		result.setRecords(recordsDtos);
+		result.setSize(list.getSize());
+		result.setTotal(list.getTotal());
+		return result;
 	}
 
 	@Override
@@ -913,7 +921,7 @@ public class MarkServiceImpl implements MarkService {
 				break;
 			}
 			for (MarkTask t : list) {
-				if (this.applyLibrary(t, userId)) {
+				if (this.applyTask(t, userId)) {
 					task = toTaskDto(t);
 					break;
 				}
@@ -932,7 +940,7 @@ public class MarkServiceImpl implements MarkService {
 	}
 
 	@Override
-	public boolean applyLibrary(MarkTask t, Long userId) {
+	public boolean applyTask(MarkTask t, Long userId) {
 		// 查询待领取任务时,已经做了多评同一studentId互斥处理
 		String key = t.getExamId() + "_" + t.getPaperNumber() + "_" + t.getGroupNumber();
 		TaskLock taskLock = TaskLockUtil.getFormalTask(key);
@@ -968,69 +976,69 @@ public class MarkServiceImpl implements MarkService {
 		if (group == null) {
 			throw ExceptionResultEnum.ERROR.exception("评卷分组不存在");
 		}
-		MarkTask library = markTaskService.getById(result.getTaskId());
-		if (library != null && library.getExamId().equals(group.getExamId())
-				&& library.getPaperNumber().equals(group.getPaperNumber())
-				&& library.getGroupNumber().equals(group.getNumber())) {
+		MarkTask task = markTaskService.getById(result.getTaskId());
+		if (task != null && task.getExamId().equals(group.getExamId())
+				&& task.getPaperNumber().equals(group.getPaperNumber())
+				&& task.getGroupNumber().equals(group.getNumber())) {
 			// 问题卷
 			Long now = System.currentTimeMillis();
 			if (result.isProblem()) {
 				// 状态更新
-				if (markTaskService.updateProblemResult(library.getId(), userId, now,
+				if (markTaskService.updateProblemResult(task.getId(), userId, now,
 						result.getSpent())) {
-					saveProblemHistory(result, library, userId);
+					saveProblemHistory(result, task, userId);
 					updateMarkedCount(markUserGroup.getExamId(), markUserGroup.getPaperNumber(),
 							markUserGroup.getGroupNumber());
 					// 未评完
-					resetStudentGroup(library.getStudentId(), library.getExamId(), library.getPaperNumber(),
-							library.getGroupNumber());
-					markTrackService.deleteByTaskId(library.getId());
-					markSpecialTagService.deleteByTaskId(library.getId());
-					return SubmitResult.success(library);
+					resetStudentGroup(task.getStudentId(), task.getExamId(), task.getPaperNumber(),
+							task.getGroupNumber());
+					markTrackService.deleteByTaskId(task.getId());
+					markSpecialTagService.deleteByTaskId(task.getId());
+					return SubmitResult.success(task);
 				}
 			}
 			if (result.getMarkerScore() <= group.getTotalScore()) {
-				if (submitLibrary(library,userId, group, result)) {
+				if (submitTask(task,userId, group, result)) {
 					updateMarkedCount(markUserGroup.getExamId(), markUserGroup.getPaperNumber(),
 							markUserGroup.getGroupNumber());
-					return SubmitResult.success(library);
+					return SubmitResult.success(task);
 				}
 			}
 		}
 		return SubmitResult.faile();
 	}
 
-	private void saveProblemHistory(MarkResult result, MarkTask library, Long userId) {
-        MarkProblemHistory history = markProblemHistoryService.findByTaskIdAndStatus(library.getId(), MarkProblemStatus.WAITING);
+	private void saveProblemHistory(MarkResult result, MarkTask task, Long userId) {
+        MarkProblemHistory history = markProblemHistoryService.findByTaskIdAndStatus(task.getId(), MarkProblemStatus.WAITING);
         if (history == null) {
             history = new MarkProblemHistory();
         }
-        history.setExamId(library.getExamId());
-        history.setSecretNumber(library.getSecretNumber());
-        history.setStudentId(library.getStudentId());
-        history.setTaskId(library.getId());
-        history.setPaperNumber(library.getPaperNumber());
-        history.setGroupNumber(library.getGroupNumber());
+        history.setExamId(task.getExamId());
+        history.setSecretNumber(task.getSecretNumber());
+        history.setStudentId(task.getStudentId());
+        history.setTaskId(task.getId());
+        history.setPaperNumber(task.getPaperNumber());
+        history.setGroupNumber(task.getGroupNumber());
         history.setType(result.getProblemType());
         history.setStatus(MarkProblemStatus.WAITING);
         history.setUserId(userId);
         markProblemHistoryService.save(history);
 	}
 
-	private boolean submitLibrary(MarkTask library,Long userId, MarkGroup group, MarkResult result) {
+	private boolean submitTask(MarkTask task,Long userId, MarkGroup group, MarkResult result) {
         // 非本人领取的待评任务
-        if ((library.getStatus() == MarkTaskStatus.WAITING || library.getStatus() == MarkTaskStatus.REJECTED)
-                && !hasApplied(library, userId)) {
+        if ((task.getStatus() == MarkTaskStatus.WAITING || task.getStatus() == MarkTaskStatus.REJECTED)
+                && !hasApplied(task, userId)) {
             return false;
         }
         // 非本人的回评任务
-        if ((library.getStatus() == MarkTaskStatus.MARKED)
-                && !library.getUserId().equals(userId)) {
+        if ((task.getStatus() == MarkTaskStatus.MARKED)
+                && !task.getUserId().equals(userId)) {
             return false;
         }
         // 是否多评情况下已处理过该考生评卷任务
         if (markTaskService
-                .countByStudentIdAndMarkerIdAndIdNotEqual(library.getStudentId(), userId, library.getId()) > 0) {
+                .countByStudentIdAndMarkerIdAndIdNotEqual(task.getStudentId(), userId, task.getId()) > 0) {
             return false;
         }
         // 未选做
@@ -1042,7 +1050,7 @@ public class MarkServiceImpl implements MarkService {
 //        }
         // 尝试提交评卷结果
         Long now = System.currentTimeMillis();
-        if (markTaskService.updateMarkerResult(library.getId(), MarkTaskStatus.MARKED, userId,
+        if (markTaskService.updateMarkerResult(task.getId(), MarkTaskStatus.MARKED, userId,
                 result.getMarkerScore(), result.getScoreList(), now, result.getSpent(), null, null, null,
                 MarkTaskStatus.WAITING, MarkTaskStatus.MARKED, MarkTaskStatus.REJECTED)) {
             // 条件不符更新失败,直接返回
@@ -1051,8 +1059,8 @@ public class MarkServiceImpl implements MarkService {
         // 保存阅卷轨迹
 //        int unansweredCount = 0;
         if (result.getTrackList() != null && !result.isUnselective()) {
-        	markTrackService.deleteByTaskId(library.getId());
-            markTrackService.saveBatch(result.getTrackList(library, userId));
+        	markTrackService.deleteByTaskId(task.getId());
+            markTrackService.saveBatch(result.getTrackList(task, userId));
 //            for (MarkTrack markTrack : tracks) {
 //                if (markTrack.isUnanswered()) {
 //                    unansweredCount++;
@@ -1062,18 +1070,18 @@ public class MarkServiceImpl implements MarkService {
         }
         // 保存特殊标记
         if (result.getSpecialTagList() != null && !result.isUnselective()) {
-            markSpecialTagService.deleteByTaskId(library.getId());
-            markSpecialTagService.saveBatch(result.getSpecialTagList(library));
+            markSpecialTagService.deleteByTaskId(task.getId());
+            markSpecialTagService.saveBatch(result.getSpecialTagList(task));
         }
         // 判断多评模式下是否需要仲裁
         MarkArbitrateHistory history = null;
         if (group.getArbitrateThreshold() != null && group.getArbitrateThreshold() > 0) {
             // 多评模式
-            List<MarkTask> list = markTaskService.findByStudentIdAndGroupNumberAndStatus(library.getStudentId(),
-                    library.getGroupNumber(), MarkTaskStatus.MARKED);
+            List<MarkTask> list = markTaskService.findByStudentIdAndGroupNumberAndStatus(task.getStudentId(),
+                    task.getGroupNumber(), MarkTaskStatus.MARKED);
             for (MarkTask other : list) {
                 // 本评卷任务或组长已打分,则跳过该任务
-                if (other.getId().equals(library.getId()) || other.getHeaderScore() != null) {
+                if (other.getId().equals(task.getId()) || other.getHeaderScore() != null) {
                     continue;
                 }
                 // 均为未选做,跳过该任务
@@ -1100,7 +1108,7 @@ public class MarkServiceImpl implements MarkService {
 //                        }
 //                    } else {
                         // 未开启三评,触发仲裁
-                        history = buildArbitrateHistory(library, now);
+                        history = buildArbitrateHistory(task, now);
                         break;
 //                    }
                 }
@@ -1110,26 +1118,26 @@ public class MarkServiceImpl implements MarkService {
             // 保存仲裁记录
             markArbitrateHistoryService.save(history);
             // 触发仲裁后续状态更新
-            markTaskService.updateStatusByStudentIdAndGroupNumber(library.getStudentId(), library.getGroupNumber(),
+            markTaskService.updateStatusByStudentIdAndGroupNumber(task.getStudentId(), task.getGroupNumber(),
             		MarkTaskStatus.WAIT_ARBITRATE);
             // 未评完
-            resetStudentGroup(library.getStudentId(), library.getExamId(), library.getPaperNumber(),
-                    library.getGroupNumber());
+            resetStudentGroup(task.getStudentId(), task.getExamId(), task.getPaperNumber(),
+                    task.getGroupNumber());
         } else {
             // 判断当前分组是否已完成评卷
-            checkStudentGroup(library.getStudentId(), group);
+            checkStudentGroup(task.getStudentId(), group);
         }
         return true;
     }
 
-	private MarkArbitrateHistory buildArbitrateHistory(MarkTask library, Long now) {
+	private MarkArbitrateHistory buildArbitrateHistory(MarkTask task, Long now) {
 		MarkArbitrateHistory history = new MarkArbitrateHistory();
-        history.setExamId(library.getExamId());
-        history.setPaperNumber(library.getPaperNumber());
-        history.setGroupNumber(library.getGroupNumber());
-        history.setStudentId(library.getStudentId());
-        history.setStudentCode(library.getStudentCode());
-        history.setSecretNumber(library.getSecretNumber());
+        history.setExamId(task.getExamId());
+        history.setPaperNumber(task.getPaperNumber());
+        history.setGroupNumber(task.getGroupNumber());
+        history.setStudentId(task.getStudentId());
+        history.setStudentCode(task.getStudentCode());
+        history.setSecretNumber(task.getSecretNumber());
         history.setStatus(MarkArbitrateStatus.WAITING);
         history.setCreateTime(now);
         return history;

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

@@ -1,5 +1,15 @@
 package com.qmth.teachcloud.mark.service.impl;
 
+import java.text.DecimalFormat;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -14,7 +24,6 @@ import com.qmth.teachcloud.common.util.ExcelUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkManageDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkerInfoDto;
-import com.qmth.teachcloud.mark.dto.mark.mark.MarkTaskDto;
 import com.qmth.teachcloud.mark.entity.MarkGroup;
 import com.qmth.teachcloud.mark.entity.MarkTask;
 import com.qmth.teachcloud.mark.enums.MarkTaskStatus;
@@ -23,15 +32,6 @@ import com.qmth.teachcloud.mark.service.MarkGroupService;
 import com.qmth.teachcloud.mark.service.MarkQuestionService;
 import com.qmth.teachcloud.mark.service.MarkTaskService;
 
-import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import java.text.DecimalFormat;
-import java.util.Arrays;
-import java.util.List;
-
 /**
  * <p>
  * 评卷任务表 服务实现类
@@ -238,19 +238,19 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
     }
 
 	@Override
-	public IPage<MarkTaskDto> listPageHistory(Page<MarkTaskDto> page, Long userId, Long examId, String paperNumber,
+	public IPage<MarkTask> listPageHistory(Page<MarkTask> page, Long userId, Long examId, String paperNumber,
 			Integer groupNumber, String secretNumber, Double markerScore) {
 		return this.baseMapper.listPageHistory(page, userId, examId, paperNumber, groupNumber, secretNumber, markerScore);
 	}
 
 	@Override
-	public List<MarkTask> findUnMarked(Page<MarkTaskDto> page, Long examId, String paperNumber, Integer groupNumber,
+	public List<MarkTask> findUnMarked(Page<MarkTask> page, Long examId, String paperNumber, Integer groupNumber,
 			Long userId) {
 		return this.baseMapper.findUnMarked(page, examId, paperNumber, groupNumber, userId);
 	}
 
 	@Override
-	public List<MarkTask> findUnMarkedFilterClass(Page<MarkTaskDto> page, Long examId, String paperNumber,
+	public List<MarkTask> findUnMarkedFilterClass(Page<MarkTask> page, Long examId, String paperNumber,
 			Integer groupNumber, Long userId) {
 		return this.baseMapper.findUnMarkedFilterClass(page, examId, paperNumber, groupNumber, userId);
 	}

+ 49 - 20
teachcloud-mark/src/main/resources/mapper/MarkTaskMapper.xml

@@ -149,44 +149,73 @@
     
     <select id="findUnMarked" resultType="com.qmth.teachcloud.mark.entity.MarkTask">
         SELECT
-        	mt.*
+        	mt
         FROM
             mark_task mt
         <where>
         	mt.exam_id = #{examId}
 		and mt.paper_number = #{paperNumber}
 		and mt.group_number = #{groupNumber}
-		and (mt.marker_id is null or mt.marker_id =#{userId})
+		and (mt.user_id is null or mt.user_id =#{userId})
 		and (mt.status='WAITING' or mt.status='REJECTED')
-		and 
-            <if test="secretNumber != null">
-                and mt.secret_number = #{secretNumber}
-			</if>
-			<if test="markerScore != null">
-                and mt.marker_score = #{markerScore}
-			</if>
+		<if test="secretNumber != null">
+			and mt.secret_number = #{secretNumber}
+		</if>
+		<if test="markerScore != null">
+			and mt.marker_score = #{markerScore}
+		</if>
+		AND NOT EXISTS ( 
+			SELECT t FROM
+			mark_task t
+			WHERE
+			t.student_id = mt.student_id
+			AND t.id != l1.id
+			AND t.user_id = #{userId}
+			AND t.marker_score IS NOT NULL
+		)
         </where>
     </select>
     
     <select id="findUnMarkedFilterClass" resultType="com.qmth.teachcloud.mark.entity.MarkTask">
         SELECT
-        	mt.*
+        	mt
         FROM
             mark_task mt
         <where>
-        	mt.student_id = s.id
-        and mt.exam_id = #{examId}
+        	mt.exam_id = #{examId}
 		and mt.paper_number = #{paperNumber}
 		and mt.group_number = #{groupNumber}
-		and (mt.marker_id is null or mt.marker_id =#{userId})
+		and (mt.user_id is null or mt.user_id =#{userId})
 		and (mt.status='WAITING' or mt.status='REJECTED')
-		and 
-            <if test="secretNumber != null">
-                and mt.secret_number = #{secretNumber}
-			</if>
-			<if test="markerScore != null">
-                and mt.marker_score = #{markerScore}
-			</if>
+		<if test="secretNumber != null">
+			and mt.secret_number = #{secretNumber}
+		</if>
+		<if test="markerScore != null">
+			and mt.marker_score = #{markerScore}
+		</if>
+		AND NOT EXISTS ( 
+			SELECT t 
+			FROM
+			mark_task t
+			WHERE
+			t.student_id = mt.student_id
+			AND t.id != mt.id
+			AND t.user_id = #{userId}
+			AND t.marker_score IS NOT NULL
+		)
+		AND EXISTS (
+			SELECT mc.id
+			FROM
+			mark_user_class mc,
+			mark_student s
+			WHERE
+			mt.student_id = s.id
+			AND	mc.exam_id = #{examId}
+			AND mc.paper_number = #{paperNumber}
+			AND mc.group_number = #{groupNumber}
+			AND mc.user_id = #{userId}
+			AND s.class_name = mc.class_name
+		)
         </where>
     </select>
 </mapper>