xiaofei 11 ماه پیش
والد
کامیت
468cc62a4c
14فایلهای تغییر یافته به همراه143 افزوده شده و 39 حذف شده
  1. 2 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/RequiredFieldsEnum.java
  2. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/BasicExamStudentMapper.java
  3. 4 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ConditionMapper.java
  4. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicExamStudentService.java
  5. 5 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicExamStudentServiceImpl.java
  6. 12 6
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ConditionServiceImpl.java
  7. 8 10
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java
  8. 41 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/ImportLogicServiceImpl.java
  9. 6 0
      distributed-print-business/src/main/resources/mapper/BasicExamStudentMapper.xml
  10. 46 10
      distributed-print-business/src/main/resources/mapper/ConditionMapper.xml
  11. 1 1
      distributed-print/install/mysql/upgrade/3.4.0.sql
  12. 2 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/BasicExamStudentController.java
  13. 2 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkStudentService.java
  14. 12 2
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/RequiredFieldsEnum.java

@@ -23,8 +23,8 @@ public enum RequiredFieldsEnum {
     EXAM_ROOM("examRoom","考试教室(考场)", true, true),
     COLLEGE_NAME("collegeName","学院", true, true),
     MAJOR_NAME("majorName","专业", true, false),
-    TEACH_CLAZZ_NAME("teachClassName","教学班", true, true),
-    CLAZZ_NAME("className","行政班", true, false),
+    TEACH_CLASS_NAME("teachClassName","教学班", true, true),
+    CLASS_NAME("className","行政班", true, false),
     TEACHER_NAME("teacherName","任课老师", true, false),
     TEACHER_CODE("teacherCode","任课老师工号", true, false),
     TEACHING_ROOM_NAME("teachingRoomName","开课学院", true, true);

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/BasicExamStudentMapper.java

@@ -24,7 +24,7 @@ public interface BasicExamStudentMapper extends BaseMapper<BasicExamStudent> {
 
     IPage<BasicExamStudentResult> findBasicExamStudentPage(@Param("iPage") Page<BasicExamStudentResult> iPage,
                                                            @Param("schoolId") Long schoolId, @Param("semesterId") Long semesterId, @Param("examId") Long examId,
-                                                           @Param("courseId") Long courseId, @Param("teacher") String teacher, @Param("college") String college,
+                                                           @Param("courseId") Long courseId, @Param("paperNumber") String paperNumber, @Param("teacher") String teacher, @Param("college") String college,
                                                            @Param("major") String major, @Param("teachClassName") String teachClassName, @Param("className") String className,
                                                            @Param("examStudentInfo") String examStudentInfo, @Param("dpr") DataPermissionRule dpr);
 

+ 4 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ConditionMapper.java

@@ -68,4 +68,8 @@ public interface ConditionMapper {
                                                @Param("semesterId") Long semesterId, @Param("dpr") DataPermissionRule dpr);
 
     List<BasicCourse> listCourseForDocument(@Param("examId") Long examId, @Param("dpr") DataPermissionRule dpr);
+
+    List<BasicCourse> listCourseForBasicExamStudent(@Param("examId") Long examId, @Param("dpr") DataPermissionRule dpr);
+
+    List<String> listPaperNumberFromBasicExamStudent(@Param("examId") Long examId, @Param("courseId") Long courseId, @Param("dpr") DataPermissionRule dpr);
 }

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

@@ -28,7 +28,7 @@ import java.util.Map;
  */
 public interface BasicExamStudentService extends IService<BasicExamStudent> {
 
-    IPage<BasicExamStudentResult> page(Long semesterId, Long examId, Long courseId, String teacher,
+    IPage<BasicExamStudentResult> page(Long semesterId, Long examId, Long courseId, String paperNumber, String teacher,
                                        String college, String major, String teachClassName, String className, String examStudentInfo, int pageNumber, int pageSize);
 
     /**

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

@@ -86,7 +86,7 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
     private ExamTaskDetailService examTaskDetailService;
 
     @Override
-    public IPage<BasicExamStudentResult> page(Long semesterId, Long examId, Long courseId,
+    public IPage<BasicExamStudentResult> page(Long semesterId, Long examId, Long courseId,String paperNumber,
                                               String teacher, String college, String major, String teachClassName, String className, String examStudentInfo, int pageNumber,
                                               int pageSize) {
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
@@ -101,7 +101,7 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
         DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(requestUser.getSchoolId(), requestUser.getId(),
                 ServletUtil.getRequest().getServletPath());
         IPage<BasicExamStudentResult> page = this.baseMapper.findBasicExamStudentPage(new Page<>(pageNumber, pageSize),
-                requestUser.getSchoolId(), semesterId, examId, courseId, teacher, college, major, teachClassName, className, examStudentInfo, dpr);
+                requestUser.getSchoolId(), semesterId, examId, courseId, paperNumber, teacher, college, major, teachClassName, className, examStudentInfo, dpr);
         for (BasicExamStudentResult record : page.getRecords()) {
             Long examStartTime = record.getExamStartTime();
             Long examEndTime = record.getExamEndTime();
@@ -249,7 +249,7 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
             }
         }
 
-        // 校验2 试卷编号存在时,任课教师,考试时间,考点考场均必填;
+        // 校验试卷编号存在时,任课教师,考试时间,考点考场均必填;
         BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
         boolean needPaperNumber = (basicSchool.getHasPaperNumber() != null && basicSchool.getHasPaperNumber()) || ExamModelEnum.MODEL4.equals(basicExam.getExamModel());
         if (needPaperNumber && StringUtils.isBlank(paperNumber)) {
@@ -304,6 +304,8 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
             basicExamStudent.insertInfo(requestUserId);
         }
 
+        // 校验任课老师
+
         parserRequiredField(basicExamStudent);
         return basicExamStudent;
     }

+ 12 - 6
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ConditionServiceImpl.java

@@ -93,9 +93,12 @@ public class ConditionServiceImpl implements ConditionService {
         DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(privilegeId);
         // 未找到权限菜单,默认为本人权限
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-
+        // 考生管理(1100)
+        if ("1100".equals(privilegeIdString)) {
+            return conditionMapper.listCourseForBasicExamStudent(examId, dpr);
+        }
         // 命题任务管理(39)
-        if ("39".equals(privilegeIdString)) {
+        else if ("39".equals(privilegeIdString)) {
             return conditionMapper.listCourseFromExamTaskByCreateId(examId, dpr);
         }
         // 入库申请(40)
@@ -135,9 +138,9 @@ public class ConditionServiceImpl implements ConditionService {
             return conditionMapper.listCourseFromExamTaskByUserId(examId, dpr);
         }
         // 文档管理(577)
-        else if ("577".equals(privilegeIdString)){
+        else if ("577".equals(privilegeIdString)) {
             return conditionMapper.listCourseForDocument(examId, dpr);
-        }else {
+        } else {
             return conditionMapper.listCourse(semesterId, examId, enable, printPlanIds, dpr);
         }
     }
@@ -154,8 +157,11 @@ public class ConditionServiceImpl implements ConditionService {
         // 未找到权限菜单,默认为本人权限
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
 
-        // 命题任务管理(39)
-        if ("39".equals(privilegeIdString)) {
+        // 考生管理(1100)
+        if ("1100".equals(privilegeIdString)) {
+            return conditionMapper.listPaperNumberFromBasicExamStudent(examId, courseId, dpr);
+        }// 命题任务管理(39)
+        else if ("39".equals(privilegeIdString)) {
             return conditionMapper.listPaperNumberFromExamTaskByCreateId(examId, courseId, dpr);
         }
         // 入库申请(40)

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

@@ -1390,11 +1390,6 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             throw ExceptionResultEnum.ERROR.exception("学校级机构信息异常");
         }
         SysOrg schoolOrg = schoolOrgList.get(0);
-        List<SysOrg> collegeList = orgList.stream().filter(e -> Objects.equals(schoolOrg.getId(), e.getParentId())).collect(Collectors.toList());
-        SysOrg college = new SysOrg();
-        if (collegeList.size() == 1) {
-            college = collegeList.get(0);
-        }
 
         // 流程id
         Long flowId = examTask.getFlowId();
@@ -1416,10 +1411,6 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         // ---- 组装Dto
         ExamTaskApprovalFormDto examTaskApprovalFormDto = new ExamTaskApprovalFormDto();
         BasicInfo basicInfo = new BasicInfo();
-        if (Objects.nonNull(college)) {
-            basicInfo.setCollegeId(college.getId());
-            basicInfo.setCollegeName(college.getName());
-        }
         basicInfo.setTeachingRoomId(teachingRoomId);
         basicInfo.setTeachingRoomName(teachingRoomName);
         basicInfo.setPaperName(paperName);
@@ -1427,7 +1418,14 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         basicInfo.setTeacherName(examTask.getTeacherName());
         basicInfo.setExamStartTime(examObjectDto.getExamStartTime());
         basicInfo.setExamEndTime(examObjectDto.getExamEndTime());
-        basicInfo.setCourseName(examTask.getCourseName());
+        BasicCourse basicCourse = basicCourseService.getById(examTask.getCourseId());
+
+        if (basicCourse != null) {
+            basicInfo.setCourseName(basicCourse.getName());
+            SysOrg sysOrg = sysOrgService.getById(basicCourse.getTeachingRoomId());
+            basicInfo.setCollegeId(sysOrg != null ? sysOrg.getId() : null);
+            basicInfo.setCollegeName(sysOrg != null ? sysOrg.getName() : null);
+        }
 
         examTaskApprovalFormDto.setBasicInfo(basicInfo);
         examTaskApprovalFormDto.setExamRoomInfoList(examObjectDto.getExamRoomInfoList());

+ 41 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/ImportLogicServiceImpl.java

@@ -133,6 +133,8 @@ public class ImportLogicServiceImpl implements ImportLogicService {
         boolean needPaperNumber = (basicSchool.getHasPaperNumber() != null && basicSchool.getHasPaperNumber()) || ExamModelEnum.MODEL4.equals(basicExam.getExamModel());
         // 试卷编号->课程
         Map<String, Long> paperNumberCourseIdMap = new HashMap<>();
+        // 课程+教学班->任课老师
+        Map<String, Long> courseTeachClassTeacherMap = new HashMap<>();
         Map<String, Long> basicCourseIdMap = new HashMap<>();
         // 课程学号唯一
         List<String> courseCodeStudentCodeList = new ArrayList<>();
@@ -218,6 +220,17 @@ public class ImportLogicServiceImpl implements ImportLogicService {
                         basicExamStudent.setTeacherId(sysUser.getId());
                     }
                 }
+
+                // 校验同课程下,同一教学班只能有一个任课老师
+                String courseTeachClassTeacherKey = basicExamStudent.getCourseId() + basicExamStudent.getTeachClassName();
+                if (courseTeachClassTeacherMap.containsKey(courseTeachClassTeacherKey)) {
+                    Long teacherId = courseTeachClassTeacherMap.get(courseTeachClassTeacherKey);
+                    if ((teacherId == null && basicExamStudent.getTeacherId() != null) || (teacherId != null && basicExamStudent.getTeacherId() == null) || (teacherId != null && !teacherId.equals(basicExamStudent.getTeacherId()))) {
+                        stringJoiner.add("同课程下相同教学班,只能有一位任课老师");
+                    }
+                } else {
+                    courseTeachClassTeacherMap.put(courseTeachClassTeacherKey, basicExamStudent.getTeacherId());
+                }
             }
 
             // 校验课程+学号唯一
@@ -334,6 +347,8 @@ public class ImportLogicServiceImpl implements ImportLogicService {
 
         // 课程学号唯一
         List<String> courseCodeStudentCodeList = new ArrayList<>();
+        // 课程+教学班->任课老师
+        Map<String, Long> courseTeachClassTeacherMap = new HashMap<>();
         // 是否有错误提示
         boolean hasError = false;
 
@@ -434,6 +449,17 @@ public class ImportLogicServiceImpl implements ImportLogicService {
                         basicExamStudent.setTeacherId(sysUser.getId());
                     }
                 }
+
+                // 校验同课程下,同一教学班只能有一个任课老师
+                String courseTeachClassTeacherKey = basicExamStudent.getCourseId() + basicExamStudent.getTeachClassName();
+                if (courseTeachClassTeacherMap.containsKey(courseTeachClassTeacherKey)) {
+                    Long teacherId = courseTeachClassTeacherMap.get(courseTeachClassTeacherKey);
+                    if ((teacherId == null && basicExamStudent.getTeacherId() != null) || (teacherId != null && basicExamStudent.getTeacherId() == null) || (teacherId != null && !teacherId.equals(basicExamStudent.getTeacherId()))) {
+                        stringJoiner.add("同课程下相同教学班,只能有一位任课老师");
+                    }
+                } else {
+                    courseTeachClassTeacherMap.put(courseTeachClassTeacherKey, basicExamStudent.getTeacherId());
+                }
             }
 
             if (basicExamStudent.getCourseId() != null) {
@@ -1082,11 +1108,13 @@ public class ImportLogicServiceImpl implements ImportLogicService {
 
         // 课程学号唯一
         List<String> courseCodeStudentCodeList = new ArrayList<>();
+        // 课程+教学班->任课老师
+        Map<String, Long> courseTeachClassTeacherMap = new HashMap<>();
         // 是否有错误提示
         boolean hasError = false;
 
-        // 必填字段为课程代码、开课学院、学号、任课老师工号、任课老师
-        List<String> requiredCodes = Arrays.asList(RequiredFieldsEnum.STUDENT_CODE.getCode(), RequiredFieldsEnum.COURSE_CODE.getCode(), RequiredFieldsEnum.TEACHING_ROOM_NAME.getCode(), RequiredFieldsEnum.TEACHER_NAME.getCode(), RequiredFieldsEnum.TEACHER_CODE.getCode());
+        // 必填字段为课程代码、开课学院、学号、教学班、任课老师工号、任课老师
+        List<String> requiredCodes = Arrays.asList(RequiredFieldsEnum.STUDENT_CODE.getCode(), RequiredFieldsEnum.COURSE_CODE.getCode(), RequiredFieldsEnum.TEACHING_ROOM_NAME.getCode(), RequiredFieldsEnum.TEACH_CLASS_NAME.getCode(), RequiredFieldsEnum.TEACHER_NAME.getCode(), RequiredFieldsEnum.TEACHER_CODE.getCode());
 
         List<BasicExamStudent> basicExamStudents = new ArrayList<>();
         for (BasicExamStudentImport basicExamStudentImport : basicExamStudentImportList) {
@@ -1136,6 +1164,17 @@ public class ImportLogicServiceImpl implements ImportLogicService {
             }
 
             if (basicExamStudent.getCourseId() != null) {
+                // 校验同课程下,同一教学班只能有一个任课老师
+                String courseTeachClassTeacherKey = basicExamStudent.getCourseId() + basicExamStudent.getTeachClassName();
+                if (courseTeachClassTeacherMap.containsKey(courseTeachClassTeacherKey)) {
+                    Long teacherId = courseTeachClassTeacherMap.get(courseTeachClassTeacherKey);
+                    if ((teacherId == null && basicExamStudent.getTeacherId() != null) || (teacherId != null && basicExamStudent.getTeacherId() == null) || (teacherId != null && !teacherId.equals(basicExamStudent.getTeacherId()))) {
+                        stringJoiner.add("同课程下相同教学班,只能有一位任课老师");
+                    }
+                } else {
+                    courseTeachClassTeacherMap.put(courseTeachClassTeacherKey, basicExamStudent.getTeacherId());
+                }
+
                 String studentKey = basicExamStudent.getCourseId() + SystemConstant.HYPHEN + basicExamStudentImport.getStudentCode();
                 if (courseIdStudentCodeMap.containsKey(studentKey)) {
                     BasicExamStudent student = courseIdStudentCodeMap.get(studentKey);

+ 6 - 0
distributed-print-business/src/main/resources/mapper/BasicExamStudentMapper.xml

@@ -53,6 +53,9 @@
             <if test="courseId != null">
                 AND bes.course_id = #{courseId}
             </if>
+            <if test="paperNumber != null and paperNumber != ''">
+                AND bes.paper_number = #{paperNumber}
+            </if>
             <if test="teacher != null and teacher != ''">
                 AND (teacher.real_name LIKE CONCAT('%',#{teacher},'%') OR teacher.code LIKE CONCAT('%',#{teacher},'%'))
             </if>
@@ -75,6 +78,9 @@
                 <if test="dpr.requestUserId != null">
                     AND bes.create_id = #{dpr.requestUserId}
                 </if>
+                <if test="dpr.courseUserId != null">
+                    AND EXISTS( SELECT 1 FROM (select course_id from teach_course where exam_id = #{examId} and user_id = #{dpr.courseUserId}) tc WHERE tc.course_id = bes.course_id)
+                </if>
                 <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
                     AND bc.teaching_room_id IN
                     <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">

+ 46 - 10
distributed-print-business/src/main/resources/mapper/ConditionMapper.xml

@@ -869,19 +869,56 @@
         </where>
     </select>
     <select id="listCourseForDocument" resultType="com.qmth.teachcloud.common.entity.BasicCourse">
-        SELECT bc.id, bc.code,bc.name
-        FROM
-        mark_paper t
-        left join basic_course bc on t.course_id = bc.id
-        WHERE
-        t.exam_id = #{examId}
-        AND t.status = 'FINISH'
+        SELECT bc.* from basic_course bc
+        WHERE exists( select 1 from mark_paper mp where
+            mp.exam_id = #{examId}
+            AND mp.status = 'FINISH'
+            AND mp.course_id = bc.id
+        <if test="dpr != null">
+            <if test="dpr.requestUserId != null">
+                AND mp.user_id = #{dpr.requestUserId}
+            </if>
+            <if test="dpr.courseUserId != null">
+                AND EXISTS( SELECT 1 FROM (select course_id from teach_course where exam_id = #{req.examId} and user_id = #{dpr.courseUserId}) tc WHERE tc.course_id = mp.course_id)
+            </if>
+            <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
+                AND bc.teaching_room_id IN
+                <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </if>)
+    </select>
+    <select id="listCourseForBasicExamStudent" resultType="com.qmth.teachcloud.common.entity.BasicCourse">
+        select * from basic_course bc where exists(
+            select 1 from basic_exam_student bes where exam_id = #{examId} and bc.id = bes.course_id
+                <if test="dpr != null">
+                    <if test="dpr.requestUserId != null">
+                        AND bes.create_id = #{dpr.requestUserId}
+                    </if>
+                    <if test="dpr.courseUserId != null">
+                        AND EXISTS( SELECT 1 FROM (select course_id from teach_course where exam_id = #{examId} and user_id = #{dpr.courseUserId}) tc WHERE tc.course_id = bes.course_id)
+                    </if>
+                    <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
+                        AND bc.teaching_room_id IN
+                        <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+                            #{item}
+                        </foreach>
+                    </if>
+                </if> )
+    </select>
+    <select id="listPaperNumberFromBasicExamStudent" resultType="java.lang.String">
+        select distinct bes.paper_number from basic_exam_student bes left join basic_course bc on bes.course_id = bc.id
+        where bes.exam_id = #{examId}
+        <if test="courseId != null">
+            and bes.course_id = #{courseId}
+        </if>
         <if test="dpr != null">
             <if test="dpr.requestUserId != null">
-                AND t.user_id = #{dpr.requestUserId}
+                AND bes.create_id = #{dpr.requestUserId}
             </if>
             <if test="dpr.courseUserId != null">
-                AND EXISTS( SELECT 1 FROM (select course_id from teach_course where exam_id = #{req.examId} and user_id = #{dpr.courseUserId}) tc WHERE tc.course_id = t.course_id)
+                AND EXISTS( SELECT 1 FROM (select course_id from teach_course where exam_id = #{examId} and user_id = #{dpr.courseUserId}) tc WHERE tc.course_id = bes.course_id)
             </if>
             <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
                 AND bc.teaching_room_id IN
@@ -890,6 +927,5 @@
                 </foreach>
             </if>
         </if>
-        ORDER BY t.id desc
     </select>
 </mapper>

+ 1 - 1
distributed-print/install/mysql/upgrade/3.4.0.sql

@@ -240,7 +240,7 @@ INSERT INTO sys_config
 (id, school_id, org_id, config_key, config_name, config_value, remark, enable, sort, create_id, create_time, update_id, update_time)
 VALUES(42, NULL, NULL, 'create.pdf.job.db.limit', '创建pdf查询条数', 'limit 0,100', NULL, 1, 18, 1, NULL, NULL, NULL);
 
-
+-- 2024-07-09
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('1174', '重置', 'MarkTaskReset', 'LINK', '917', '9', 'AUTH', '930', '1', '0', '1');
 UPDATE `sys_privilege` SET `related` = '928,929,932,933,934,935,936,937,938,939,940,941,942,943,964,965,966,967,968,1008' WHERE (`id` = '944');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('1175', '解绑', 'MarkTaskMarkerDelete', 'LINK', '917', '9', 'AUTH', '931', '1', '0', '1');

+ 2 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/BasicExamStudentController.java

@@ -60,6 +60,7 @@ public class BasicExamStudentController {
     public Result findBasicExamStudentPage(@ApiParam(value = "学期id") @RequestParam(required = false) String semesterId,
                                            @ApiParam(value = "考试id") @RequestParam(required = false) String examId,
                                            @ApiParam(value = "课程ID") @RequestParam(required = false) Long courseId,
+                                           @ApiParam(value = "课程ID") @RequestParam(required = false) String paperNumber,
                                            @ApiParam(value = "教师(工号/姓名)") @RequestParam(required = false) String teacher,
                                            @ApiParam(value = "学院") @RequestParam(required = false) String college,
                                            @ApiParam(value = "专业") @RequestParam(required = false) String major,
@@ -75,7 +76,7 @@ public class BasicExamStudentController {
             throw ExceptionResultEnum.ERROR.exception("请选择考试");
         }
         return ResultUtil.ok(basicExamStudentService.page(SystemConstant.convertIdToLong(semesterId),
-                SystemConstant.convertIdToLong(examId), courseId, teacher, college, major, teachClassName, className,
+                SystemConstant.convertIdToLong(examId), courseId, paperNumber, teacher, college, major, teachClassName, className,
                 examStudentInfo, pageNumber, pageSize));
     }
 

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

@@ -220,4 +220,6 @@ public interface MarkStudentService extends IService<MarkStudent> {
     List<MarkStudentVo> listMarkStudentVo(MarkStudentQuery markStudentQuery);
 
     IPage<MarkStudentVo> pageMarkStudentVo(Page<MarkStudentVo> page, MarkStudentQuery markStudentQuery);
+
+    MarkStudent findByBasicStudentId(Long basicStudentId);
 }

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

@@ -1767,7 +1767,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
 
     @Override
     public void updateByBasicExamStudent(BasicExamStudent basicExamStudent, MarkPaper markPaper, Set<String> secretNumberSet) {
-        MarkStudent markStudent = this.findByExamIdAndPaperNumberAndStudentCode(basicExamStudent.getExamId(), basicExamStudent.getPaperNumber(), basicExamStudent.getStudentCode());
+        MarkStudent markStudent = this.findByBasicStudentId(basicExamStudent.getId());
         if (markStudent == null) {
             if (MarkPaperStatus.FINISH.equals(markPaper.getStatus())) {
                 throw ExceptionResultEnum.ERROR.exception("试卷编号[" + markPaper.getPaperNumber() + "]已结束阅卷,不允许新增考生");
@@ -1780,8 +1780,11 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
                     markStudent.randomSecretNumber();
                 }
             }
-            this.saveOrUpdate(markStudent);
+        } else {
+            markStudent.setPaperNumber(basicExamStudent.getPaperNumber());
+            markStudent.setPaperType(basicExamStudent.getPaperType());
         }
+        this.saveOrUpdate(markStudent);
     }
 
     @Override
@@ -1891,4 +1894,11 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     public IPage<MarkStudentVo> pageMarkStudentVo(Page<MarkStudentVo> page, MarkStudentQuery markStudentQuery) {
         return this.baseMapper.listMarkStudentVo(page, markStudentQuery);
     }
+
+    @Override
+    public MarkStudent findByBasicStudentId(Long basicStudentId) {
+        QueryWrapper<MarkStudent> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(MarkStudent::getBasicStudentId, basicStudentId);
+        return this.getOne(queryWrapper);
+    }
 }