xiaofei 1 gadu atpakaļ
vecāks
revīzija
082cf9fe7e

+ 21 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/TeachCourseSelectParam.java

@@ -16,16 +16,29 @@ import java.util.List;
  */
 public class TeachCourseSelectParam {
 
+    @ApiModelProperty("学校ID")
+    private Long schoolId;
+
     @ApiModelProperty("考试ID")
     @JsonSerialize(using = ToStringSerializer.class)
     @NotNull(message = "请选择考试")
     @Range(min = 1L, message = "请选择考试")
     private Long examId;
 
+    @ApiModelProperty("用户ID(老师)")
+    private Long userId;
     @ApiModelProperty("课程ID集合")
     @NotEmpty(message = "请选择课程")
     private List<Long> courseIds;
 
+    public Long getSchoolId() {
+        return schoolId;
+    }
+
+    public void setSchoolId(Long schoolId) {
+        this.schoolId = schoolId;
+    }
+
     public Long getExamId() {
         return examId;
     }
@@ -34,6 +47,14 @@ public class TeachCourseSelectParam {
         this.examId = examId;
     }
 
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
     public List<Long> getCourseIds() {
         return courseIds;
     }

+ 85 - 8
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicExamStudentServiceImpl.java

@@ -1,5 +1,6 @@
 package com.qmth.distributed.print.business.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -8,21 +9,21 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.distributed.print.business.bean.BasicExamStudentQuery;
 import com.qmth.distributed.print.business.bean.dto.BasicExamStudentDto;
 import com.qmth.distributed.print.business.bean.params.BasicExamStudentParam;
+import com.qmth.distributed.print.business.bean.params.TeachCourseSelectParam;
 import com.qmth.distributed.print.business.bean.result.BasicExamStudentResult;
+import com.qmth.distributed.print.business.entity.BasicExamRule;
+import com.qmth.distributed.print.business.enums.RequiredFieldsEnum;
 import com.qmth.distributed.print.business.mapper.BasicExamStudentMapper;
-import com.qmth.distributed.print.business.service.BasicExamService;
-import com.qmth.distributed.print.business.service.BasicExamStudentService;
-import com.qmth.distributed.print.business.service.BasicTeachClazzService;
+import com.qmth.distributed.print.business.service.*;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
+import com.qmth.teachcloud.common.bean.examRule.CodeNameEnableDisabledValue;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.enums.BasicExamStudentStatusEnum;
+import com.qmth.teachcloud.common.enums.EnumResult;
 import com.qmth.teachcloud.common.enums.ExamModelEnum;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
-import com.qmth.teachcloud.common.service.BasicCourseService;
-import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
-import com.qmth.teachcloud.common.service.CommonCacheService;
-import com.qmth.teachcloud.common.service.SysUserService;
+import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.ConvertUtil;
 import com.qmth.teachcloud.common.util.ExcelUtil;
 import com.qmth.teachcloud.common.util.RegexUtil;
@@ -40,6 +41,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+import java.lang.reflect.Field;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -60,10 +62,12 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
     @Resource
     private BasicCourseService basicCourseService;
     @Resource
-    private BasicTeachClazzService basicTeachClazzService;
+    private BasicExamRuleService basicExamRuleService;
     @Resource
     private SysUserService sysUserService;
     @Resource
+    private SysOrgService sysOrgService;
+    @Resource
     private CommonCacheService commonCacheService;
     @Resource
     private MarkPaperService markPaperService;
@@ -170,9 +174,18 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
         if (ExamModelEnum.MODEL4.equals(basicExam.getExamModel()) && basicExamStudentOld != null) {
             markPaperService.deleteByExamIdAndPaperNumber(basicExamStudent.getExamId(), basicExamStudentOld.getPaperNumber(), true);
         }
+
+        // 自动创建课程管理数据
+        autoCreateTeachCourse(Arrays.asList(basicExamStudent));
         return basicExamStudent.getId();
     }
 
+    private void autoCreateTeachCourse(List<BasicExamStudent> basicExamStudentList) {
+        basicExamStudentList.stream().collect(Collectors.groupingBy(BasicExamStudent::getTeacherId, BasicExamStudent::getCourseId));
+        TeachCourseSelectParam teachCourseSelectParam = new TeachCourseSelectParam();
+        teachCourseSelectParam.setExamId(basicExamStudentL);
+    }
+
     @Transactional
     @Override
     public void buildImportObjects(Map<String, Object> map) {
@@ -307,9 +320,73 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
             basicExamStudent.insertInfo(requestUserId);
         }
 
+        parserRequiredField(basicExamStudent);
         return basicExamStudent;
     }
 
+    private void parserRequiredField(BasicExamStudent basicExamStudent) {
+        // 组装requiredFields。extendFields前端传
+        BasicExamRule basicExamRule = basicExamRuleService.getBySchoolId(basicExamStudent.getSchoolId());
+        if (basicExamRule == null) {
+            throw ExceptionResultEnum.ERROR.exception("通用规则未设置");
+        }
+        Map<String, EnumResult> enumResultMap = basicExamRule.getRequiredFieldList().stream().filter(m -> m.getEnable()).collect(Collectors.toMap(EnumResult::getCode, m -> m));
+        List<CodeNameEnableDisabledValue> requiredFields = new ArrayList<>();
+        Field[] declaredFields = basicExamStudent.getClass().getDeclaredFields();
+        try {
+            boolean examDateHasValue = false;
+            for (Field declaredField : declaredFields) {
+                declaredField.setAccessible(true);
+                String fieldName = declaredField.getName();
+                if ("courseId".equals(fieldName)) {
+                    BasicCourse basicCourse = basicCourseService.getById(basicExamStudent.getCourseId());
+                    if (basicCourse == null) {
+                        throw ExceptionResultEnum.ERROR.exception("课程不存在");
+                    }
+                    requiredFields.add(new CodeNameEnableDisabledValue(RequiredFieldsEnum.COURSE_CODE.getCode(), RequiredFieldsEnum.COURSE_CODE.getName(), RequiredFieldsEnum.COURSE_CODE.getEnable(), RequiredFieldsEnum.COURSE_CODE.getDisabled(), basicCourse.getCode()));
+                    requiredFields.add(new CodeNameEnableDisabledValue(RequiredFieldsEnum.COURSE_NAME.getCode(), RequiredFieldsEnum.COURSE_NAME.getName(), RequiredFieldsEnum.COURSE_NAME.getEnable(), RequiredFieldsEnum.COURSE_NAME.getDisabled(), basicCourse.getName()));
+                    SysOrg sysOrg = sysOrgService.getById(basicCourse.getTeachingRoomId());
+                    if (sysOrg == null) {
+                        throw ExceptionResultEnum.ERROR.exception("课程开课学院不存在");
+                    }
+                    requiredFields.add(new CodeNameEnableDisabledValue(RequiredFieldsEnum.TEACHING_ROOM_NAME.getCode(), RequiredFieldsEnum.TEACHING_ROOM_NAME.getName(), RequiredFieldsEnum.TEACHING_ROOM_NAME.getEnable(), RequiredFieldsEnum.TEACHING_ROOM_NAME.getDisabled(), sysOrg.getName()));
+                } else if ("teacherId".equals(fieldName)) {
+                    String loginName = null;
+                    String realName = null;
+                    if (basicExamStudent.getTeacherId() != null) {
+                        SysUser sysUser = sysUserService.getById(basicExamStudent.getTeacherId());
+                        if (sysUser == null) {
+                            throw ExceptionResultEnum.ERROR.exception("任课老师不存在");
+                        }
+                        loginName = sysUser.getLoginName();
+                        realName = sysUser.getRealName();
+                    }
+                    requiredFields.add(new CodeNameEnableDisabledValue(RequiredFieldsEnum.TEACHER_CODE.getCode(), RequiredFieldsEnum.TEACHER_CODE.getName(), RequiredFieldsEnum.TEACHER_CODE.getEnable(), RequiredFieldsEnum.TEACHER_CODE.getDisabled(), loginName));
+                    requiredFields.add(new CodeNameEnableDisabledValue(RequiredFieldsEnum.TEACHER_NAME.getCode(), RequiredFieldsEnum.TEACHER_NAME.getName(), RequiredFieldsEnum.TEACHER_NAME.getEnable(), RequiredFieldsEnum.TEACHER_NAME.getDisabled(), realName));
+
+                } else if ("examStartTime".equals(fieldName) || "examEndTime".equals(fieldName)) {
+                    Long examStartTime = basicExamStudent.getExamStartTime();
+                    Long examEndTime = basicExamStudent.getExamEndTime();
+                    if (SystemConstant.longNotNull(examStartTime) && SystemConstant.longNotNull(examEndTime) && !examDateHasValue) {
+                        Map<String, Object> dateMap = ConvertUtil.analyzeDateAndTime(examStartTime, examEndTime);
+                        String date = String.valueOf(dateMap.get("date"));
+                        String time = String.valueOf(dateMap.get("time"));
+                        requiredFields.add(new CodeNameEnableDisabledValue(RequiredFieldsEnum.EXAM_DATE.getCode(), RequiredFieldsEnum.EXAM_DATE.getName(), RequiredFieldsEnum.EXAM_DATE.getEnable(), RequiredFieldsEnum.EXAM_DATE.getDisabled(), date));
+                        requiredFields.add(new CodeNameEnableDisabledValue(RequiredFieldsEnum.EXAM_TIME.getCode(), RequiredFieldsEnum.EXAM_TIME.getName(), RequiredFieldsEnum.EXAM_TIME.getEnable(), RequiredFieldsEnum.EXAM_TIME.getDisabled(), time));
+                        examDateHasValue = true;
+                    }
+                } else {
+                    if (enumResultMap.containsKey(fieldName)) {
+                        requiredFields.add(new CodeNameEnableDisabledValue(fieldName, enumResultMap.get(fieldName).getName(), enumResultMap.get(fieldName).getEnable(), enumResultMap.get(fieldName).getDisabled(), declaredField.get(basicExamStudent).toString()));
+                    }
+                }
+            }
+        } catch (IllegalAccessException e) {
+            throw new RuntimeException(e);
+        }
+        basicExamStudent.setRequiredFields(JSON.toJSONString(requiredFields));
+    }
+
     @Override
     public List<BasicExamStudent> listByExamIdAndPaperNumber(Long examId, String paperNumber) {
         QueryWrapper<BasicExamStudent> queryWrapper = new QueryWrapper<>();

+ 4 - 6
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TeachCourseServiceImpl.java

@@ -80,28 +80,26 @@ public class TeachCourseServiceImpl extends ServiceImpl<TeachCourseMapper, Teach
     @Transactional
     @Override
     public void selectCreate(TeachCourseSelectParam teachCourseSelectParam) {
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         Long examId = teachCourseSelectParam.getExamId();
         List<Long> courseIds = teachCourseSelectParam.getCourseIds();
 
         List<Long> userCourseIds = this.list(
-                        new QueryWrapper<TeachCourse>().lambda().eq(TeachCourse::getExamId, examId).eq(TeachCourse::getUserId, sysUser.getId())).stream().map(TeachCourse::getCourseId)
+                        new QueryWrapper<TeachCourse>().lambda().eq(TeachCourse::getExamId, examId).eq(TeachCourse::getUserId, teachCourseSelectParam.getUserId())).stream().map(TeachCourse::getCourseId)
                 .collect(Collectors.toList());
 
-
         List<TeachCourse> teachCourseList = new ArrayList<>();
         for (Long courseId : courseIds) {
             if (CollectionUtils.isNotEmpty(courseIds) && userCourseIds.contains(courseId)) {
                 continue;
             }
             TeachCourse teachCourse = new TeachCourse();
-            teachCourse.setSchoolId(sysUser.getSchoolId());
+            teachCourse.setSchoolId(teachCourseSelectParam.getSchoolId());
             teachCourse.setExamId(examId);
-            teachCourse.setUserId(sysUser.getId());
+            teachCourse.setUserId(teachCourseSelectParam.getUserId());
             teachCourse.setEnable(true);
             teachCourse.setWeightSetting(false);
             teachCourse.setCourseId(courseId);
-            teachCourse.insertInfo(sysUser.getId());
+            teachCourse.insertInfo(teachCourseSelectParam.getUserId());
             teachCourseList.add(teachCourse);
         }
 

+ 3 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/TeachCourseController.java

@@ -65,6 +65,9 @@ public class TeachCourseController {
         if (bindingResult.hasErrors()) {
             return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
         }
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        teachCourseSelectParam.setSchoolId(sysUser.getSchoolId());
+        teachCourseSelectParam.setUserId(sysUser.getId());
         teachCourseService.selectCreate(teachCourseSelectParam);
         return ResultUtil.ok();
     }

+ 2 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/ScanOmrTaskController.java

@@ -81,9 +81,9 @@ public class ScanOmrTaskController extends BaseController {
                        @ApiParam(value = "课程ID") @RequestParam(required = false) Long courseId,
                        @ApiParam(value = "课程试卷编号") @RequestParam(required = false) String coursePaperId,
                        @ApiParam(value = "状态") @RequestParam OmrTaskStatus status,
-                       @ApiParam(value = "考场") @RequestParam(required = false) String examRoom,
+                       @ApiParam(value = "学号或姓名") @RequestParam(required = false) String studentCodeOrName,
                        @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                        @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        return ResultUtil.ok(omrTaskService.list(examId, courseId, coursePaperId, status, examRoom, pageNumber, pageSize));
+        return ResultUtil.ok(omrTaskService.list(examId, courseId, coursePaperId, status, studentCodeOrName, pageNumber, pageSize));
     }
 }

+ 8 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/BasicExamStudent.java

@@ -1,12 +1,14 @@
 package com.qmth.teachcloud.common.entity;
 
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.teachcloud.common.base.BaseEntity;
 import com.qmth.teachcloud.common.bean.examRule.CodeNameEnableValue;
 import com.qmth.teachcloud.common.enums.BasicExamStudentStatusEnum;
+import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.batik.transcoder.TranscodingHints;
@@ -50,9 +52,11 @@ public class BasicExamStudent extends BaseEntity {
     private String teachClassName;
 
     @ApiModelProperty(value = "行政班")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String className;
 
     @ApiModelProperty(value = "试卷编号")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String paperNumber;
 
     @ApiModelProperty(value = "姓名")
@@ -62,15 +66,18 @@ public class BasicExamStudent extends BaseEntity {
     private String studentCode;
 
     @ApiModelProperty(value = "座位号")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String siteNumber;
 
     @ApiModelProperty(value = "学院")
     private String collegeName;
 
     @ApiModelProperty(value = "专业")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String majorName;
 
     @ApiModelProperty(value = "任课教师id")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private Long teacherId;
 
     @ApiModelProperty(value = "考试开始时间")
@@ -80,6 +87,7 @@ public class BasicExamStudent extends BaseEntity {
     private Long examEndTime;
 
     @ApiModelProperty("考点(校区)")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String examPlace;
 
     @ApiModelProperty("考场(考试教室)")

+ 9 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/scananswer/AnswerQueryDomain.java

@@ -52,6 +52,7 @@ public class AnswerQueryDomain extends PagerQuery {
     private Boolean withOmrDetail;
 	private String markPaperStatus;
 	private Boolean missScan;
+	private String studentCodeOrName;
 	public Long getExamId() {
 		return examId;
 	}
@@ -208,4 +209,12 @@ public class AnswerQueryDomain extends PagerQuery {
 	public void setMissScan(Boolean missScan) {
 		this.missScan = missScan;
 	}
+
+	public String getStudentCodeOrName() {
+		return studentCodeOrName;
+	}
+
+	public void setStudentCodeOrName(String studentCodeOrName) {
+		this.studentCodeOrName = studentCodeOrName;
+	}
 }

+ 8 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/scanpackage/ScanPackageVo.java

@@ -16,6 +16,7 @@ public class ScanPackageVo {
 	private Integer pagesCount;
 
 	private List<String> pages;
+	private String examRoom;
 
 	public String getCourseCode() {
 		return courseCode;
@@ -73,4 +74,11 @@ public class ScanPackageVo {
 		this.pages = pages;
 	}
 
+	public String getExamRoom() {
+		return examRoom;
+	}
+
+	public void setExamRoom(String examRoom) {
+		this.examRoom = examRoom;
+	}
 }

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

@@ -30,7 +30,7 @@ public interface ScanOmrTaskMapper extends BaseMapper<ScanOmrTask> {
                                                          @Param("courseId") Long courseId,
                                                          @Param("coursePaperId") String coursePaperId,
                                                          @Param(value = "status") OmrTaskStatus status,
-                                                         @Param("examRoom") String examRoom,
+                                                         @Param("studentCodeOrName") String studentCodeOrName,
                                                          @Param("markPaperStatus") String markPaperStatus, @Param("dpr") DataPermissionRule dpr);
 
     int getStudentCountByExamAndStatusAndUserId(@Param(value = "examId") Long examId,

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

@@ -37,7 +37,7 @@ public interface ScanOmrTaskService extends IService<ScanOmrTask> {
 
 	int getCount(Long examId, OmrTaskStatus status, String courseCode, String coursePaperId, MarkPaperStatus markPaperStatus, DataPermissionRule dpr);
 
-	IPage<ScanStudentDto> list(Long examId, Long courseId, String coursePaperId, OmrTaskStatus status, String examRoom, Integer pageNumber, Integer pageSize);
+	IPage<ScanStudentDto> list(Long examId, Long courseId, String coursePaperId, OmrTaskStatus status, String studentCodeOrName, Integer pageNumber, Integer pageSize);
 
 	void saveTask(Long studentId);
 

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

@@ -652,11 +652,11 @@ public class ScanOmrTaskServiceImpl extends ServiceImpl<ScanOmrTaskMapper, ScanO
     }
 
     @Override
-    public IPage<ScanStudentDto> list(Long examId, Long courseId, String coursePaperId, OmrTaskStatus status, String examRoom, Integer pageNumber, Integer pageSize) {
+    public IPage<ScanStudentDto> list(Long examId, Long courseId, String coursePaperId, OmrTaskStatus status, String studentCodeOrName, Integer pageNumber, Integer pageSize) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(sysUser.getSchoolId(),
                 sysUser.getId(), ServletUtil.getRequest().getServletPath());
-        return this.baseMapper.listByExamIdAndStatusAndUserId(new Page<>(pageNumber, pageSize), examId, courseId, coursePaperId, status, examRoom,
+        return this.baseMapper.listByExamIdAndStatusAndUserId(new Page<>(pageNumber, pageSize), examId, courseId, coursePaperId, status, studentCodeOrName,
                 MarkPaperStatus.FORMAL.name(), dpr);
     }
 

+ 3 - 0
teachcloud-mark/src/main/resources/mapper/MarkStudentMapper.xml

@@ -283,6 +283,9 @@
         <if test="query.missScan != null">
             and t.miss_scan=#{query.missScan}
         </if>
+        <if test="query.studentCodeOrName != null and query.studentCodeOrName !=''">
+            and (t.student_code=#{query.studentCodeOrName} or t.student_name=#{query.studentCodeOrName})
+        </if>
         <if test="dpr != null">
             <if test="dpr.requestUserId != null">
                 AND t.create_id = #{dpr.requestUserId}

+ 2 - 2
teachcloud-mark/src/main/resources/mapper/ScanOmrTaskMapper.xml

@@ -48,8 +48,8 @@
 				<if test="coursePaperId != null and coursePaperId != ''">
 					and s.course_paper_id = #{coursePaperId}
 				</if>
-				<if test="examRoom != null and examRoom != ''">
-					and s.exam_room = #{examRoom}
+				<if test="studentCodeOrName != null and studentCodeOrName != ''">
+					and (s.student_code = #{studentCodeOrName} or s.student_name = #{studentCodeOrName})
 				</if>
 					and exists (select 1 from mark_paper mp where s.exam_id = mp.exam_id and s.course_paper_id = mp.course_paper_id and s.paper_type = mp.paper_type and mp.status = #{markPaperStatus})
 					and exists(select 1

+ 3 - 4
teachcloud-mark/src/main/resources/mapper/ScanPackageMapper.xml

@@ -21,8 +21,9 @@
 	</resultMap>
 	<select id="page"
 		resultType="com.qmth.teachcloud.mark.bean.scanpackage.ScanPackageVo">
-		select t.*,t.paper_number coursePaperNumber
+		select t.*,t.paper_number coursePaperNumber, ed.exam_room examRoom
 		FROM mark_paper_package t
+		left join exam_detail ed on t.exam_id = ed.exam_id and t.package_code=ed.package_code
         where t.exam_id=#{req.examId}
         <if test="req.courseId != null">
 			and t.course_id = #{req.courseId}
@@ -31,9 +32,7 @@
 			and t.course_paper_id= #{req.coursePaperId}
 		</if>
 		<if test="req.examRoom != null and req.examRoom != ''">
-			and exists (
-			select 1 from exam_detail ed where t.exam_id=ed.exam_id and t.package_code=ed.package_code and ed.exam_room = #{req.examRoom}
-			)
+			and ed.exam_room = #{req.examRoom}
 		</if>
         <if test="req.status != null">
 			<if test="req.status ==@com.qmth.teachcloud.common.enums.ScanStatus@SCANNED">