浏览代码

3.4.0 update

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),
     EXAM_ROOM("examRoom","考试教室(考场)", true, true),
     COLLEGE_NAME("collegeName","学院", true, true),
     COLLEGE_NAME("collegeName","学院", true, true),
     MAJOR_NAME("majorName","专业", true, false),
     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_NAME("teacherName","任课老师", true, false),
     TEACHER_CODE("teacherCode","任课老师工号", true, false),
     TEACHER_CODE("teacherCode","任课老师工号", true, false),
     TEACHING_ROOM_NAME("teachingRoomName","开课学院", true, true);
     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,
     IPage<BasicExamStudentResult> findBasicExamStudentPage(@Param("iPage") Page<BasicExamStudentResult> iPage,
                                                            @Param("schoolId") Long schoolId, @Param("semesterId") Long semesterId, @Param("examId") Long examId,
                                                            @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("major") String major, @Param("teachClassName") String teachClassName, @Param("className") String className,
                                                            @Param("examStudentInfo") String examStudentInfo, @Param("dpr") DataPermissionRule dpr);
                                                            @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);
                                                @Param("semesterId") Long semesterId, @Param("dpr") DataPermissionRule dpr);
 
 
     List<BasicCourse> listCourseForDocument(@Param("examId") Long examId, @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> {
 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);
                                        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;
     private ExamTaskDetailService examTaskDetailService;
 
 
     @Override
     @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,
                                               String teacher, String college, String major, String teachClassName, String className, String examStudentInfo, int pageNumber,
                                               int pageSize) {
                                               int pageSize) {
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
@@ -101,7 +101,7 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
         DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(requestUser.getSchoolId(), requestUser.getId(),
         DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(requestUser.getSchoolId(), requestUser.getId(),
                 ServletUtil.getRequest().getServletPath());
                 ServletUtil.getRequest().getServletPath());
         IPage<BasicExamStudentResult> page = this.baseMapper.findBasicExamStudentPage(new Page<>(pageNumber, pageSize),
         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()) {
         for (BasicExamStudentResult record : page.getRecords()) {
             Long examStartTime = record.getExamStartTime();
             Long examStartTime = record.getExamStartTime();
             Long examEndTime = record.getExamEndTime();
             Long examEndTime = record.getExamEndTime();
@@ -249,7 +249,7 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
             }
             }
         }
         }
 
 
-        // 校验2 试卷编号存在时,任课教师,考试时间,考点考场均必填;
+        // 校验试卷编号存在时,任课教师,考试时间,考点考场均必填;
         BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
         BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
         boolean needPaperNumber = (basicSchool.getHasPaperNumber() != null && basicSchool.getHasPaperNumber()) || ExamModelEnum.MODEL4.equals(basicExam.getExamModel());
         boolean needPaperNumber = (basicSchool.getHasPaperNumber() != null && basicSchool.getHasPaperNumber()) || ExamModelEnum.MODEL4.equals(basicExam.getExamModel());
         if (needPaperNumber && StringUtils.isBlank(paperNumber)) {
         if (needPaperNumber && StringUtils.isBlank(paperNumber)) {
@@ -304,6 +304,8 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
             basicExamStudent.insertInfo(requestUserId);
             basicExamStudent.insertInfo(requestUserId);
         }
         }
 
 
+        // 校验任课老师
+
         parserRequiredField(basicExamStudent);
         parserRequiredField(basicExamStudent);
         return 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);
         DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(privilegeId);
         // 未找到权限菜单,默认为本人权限
         // 未找到权限菜单,默认为本人权限
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-
+        // 考生管理(1100)
+        if ("1100".equals(privilegeIdString)) {
+            return conditionMapper.listCourseForBasicExamStudent(examId, dpr);
+        }
         // 命题任务管理(39)
         // 命题任务管理(39)
-        if ("39".equals(privilegeIdString)) {
+        else if ("39".equals(privilegeIdString)) {
             return conditionMapper.listCourseFromExamTaskByCreateId(examId, dpr);
             return conditionMapper.listCourseFromExamTaskByCreateId(examId, dpr);
         }
         }
         // 入库申请(40)
         // 入库申请(40)
@@ -135,9 +138,9 @@ public class ConditionServiceImpl implements ConditionService {
             return conditionMapper.listCourseFromExamTaskByUserId(examId, dpr);
             return conditionMapper.listCourseFromExamTaskByUserId(examId, dpr);
         }
         }
         // 文档管理(577)
         // 文档管理(577)
-        else if ("577".equals(privilegeIdString)){
+        else if ("577".equals(privilegeIdString)) {
             return conditionMapper.listCourseForDocument(examId, dpr);
             return conditionMapper.listCourseForDocument(examId, dpr);
-        }else {
+        } else {
             return conditionMapper.listCourse(semesterId, examId, enable, printPlanIds, dpr);
             return conditionMapper.listCourse(semesterId, examId, enable, printPlanIds, dpr);
         }
         }
     }
     }
@@ -154,8 +157,11 @@ public class ConditionServiceImpl implements ConditionService {
         // 未找到权限菜单,默认为本人权限
         // 未找到权限菜单,默认为本人权限
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         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);
             return conditionMapper.listPaperNumberFromExamTaskByCreateId(examId, courseId, dpr);
         }
         }
         // 入库申请(40)
         // 入库申请(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("学校级机构信息异常");
             throw ExceptionResultEnum.ERROR.exception("学校级机构信息异常");
         }
         }
         SysOrg schoolOrg = schoolOrgList.get(0);
         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
         // 流程id
         Long flowId = examTask.getFlowId();
         Long flowId = examTask.getFlowId();
@@ -1416,10 +1411,6 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         // ---- 组装Dto
         // ---- 组装Dto
         ExamTaskApprovalFormDto examTaskApprovalFormDto = new ExamTaskApprovalFormDto();
         ExamTaskApprovalFormDto examTaskApprovalFormDto = new ExamTaskApprovalFormDto();
         BasicInfo basicInfo = new BasicInfo();
         BasicInfo basicInfo = new BasicInfo();
-        if (Objects.nonNull(college)) {
-            basicInfo.setCollegeId(college.getId());
-            basicInfo.setCollegeName(college.getName());
-        }
         basicInfo.setTeachingRoomId(teachingRoomId);
         basicInfo.setTeachingRoomId(teachingRoomId);
         basicInfo.setTeachingRoomName(teachingRoomName);
         basicInfo.setTeachingRoomName(teachingRoomName);
         basicInfo.setPaperName(paperName);
         basicInfo.setPaperName(paperName);
@@ -1427,7 +1418,14 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         basicInfo.setTeacherName(examTask.getTeacherName());
         basicInfo.setTeacherName(examTask.getTeacherName());
         basicInfo.setExamStartTime(examObjectDto.getExamStartTime());
         basicInfo.setExamStartTime(examObjectDto.getExamStartTime());
         basicInfo.setExamEndTime(examObjectDto.getExamEndTime());
         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.setBasicInfo(basicInfo);
         examTaskApprovalFormDto.setExamRoomInfoList(examObjectDto.getExamRoomInfoList());
         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());
         boolean needPaperNumber = (basicSchool.getHasPaperNumber() != null && basicSchool.getHasPaperNumber()) || ExamModelEnum.MODEL4.equals(basicExam.getExamModel());
         // 试卷编号->课程
         // 试卷编号->课程
         Map<String, Long> paperNumberCourseIdMap = new HashMap<>();
         Map<String, Long> paperNumberCourseIdMap = new HashMap<>();
+        // 课程+教学班->任课老师
+        Map<String, Long> courseTeachClassTeacherMap = new HashMap<>();
         Map<String, Long> basicCourseIdMap = new HashMap<>();
         Map<String, Long> basicCourseIdMap = new HashMap<>();
         // 课程学号唯一
         // 课程学号唯一
         List<String> courseCodeStudentCodeList = new ArrayList<>();
         List<String> courseCodeStudentCodeList = new ArrayList<>();
@@ -218,6 +220,17 @@ public class ImportLogicServiceImpl implements ImportLogicService {
                         basicExamStudent.setTeacherId(sysUser.getId());
                         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<>();
         List<String> courseCodeStudentCodeList = new ArrayList<>();
+        // 课程+教学班->任课老师
+        Map<String, Long> courseTeachClassTeacherMap = new HashMap<>();
         // 是否有错误提示
         // 是否有错误提示
         boolean hasError = false;
         boolean hasError = false;
 
 
@@ -434,6 +449,17 @@ public class ImportLogicServiceImpl implements ImportLogicService {
                         basicExamStudent.setTeacherId(sysUser.getId());
                         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) {
             if (basicExamStudent.getCourseId() != null) {
@@ -1082,11 +1108,13 @@ public class ImportLogicServiceImpl implements ImportLogicService {
 
 
         // 课程学号唯一
         // 课程学号唯一
         List<String> courseCodeStudentCodeList = new ArrayList<>();
         List<String> courseCodeStudentCodeList = new ArrayList<>();
+        // 课程+教学班->任课老师
+        Map<String, Long> courseTeachClassTeacherMap = new HashMap<>();
         // 是否有错误提示
         // 是否有错误提示
         boolean hasError = false;
         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<>();
         List<BasicExamStudent> basicExamStudents = new ArrayList<>();
         for (BasicExamStudentImport basicExamStudentImport : basicExamStudentImportList) {
         for (BasicExamStudentImport basicExamStudentImport : basicExamStudentImportList) {
@@ -1136,6 +1164,17 @@ public class ImportLogicServiceImpl implements ImportLogicService {
             }
             }
 
 
             if (basicExamStudent.getCourseId() != null) {
             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();
                 String studentKey = basicExamStudent.getCourseId() + SystemConstant.HYPHEN + basicExamStudentImport.getStudentCode();
                 if (courseIdStudentCodeMap.containsKey(studentKey)) {
                 if (courseIdStudentCodeMap.containsKey(studentKey)) {
                     BasicExamStudent student = courseIdStudentCodeMap.get(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">
             <if test="courseId != null">
                 AND bes.course_id = #{courseId}
                 AND bes.course_id = #{courseId}
             </if>
             </if>
+            <if test="paperNumber != null and paperNumber != ''">
+                AND bes.paper_number = #{paperNumber}
+            </if>
             <if test="teacher != null and teacher != ''">
             <if test="teacher != null and teacher != ''">
                 AND (teacher.real_name LIKE CONCAT('%',#{teacher},'%') OR teacher.code LIKE CONCAT('%',#{teacher},'%'))
                 AND (teacher.real_name LIKE CONCAT('%',#{teacher},'%') OR teacher.code LIKE CONCAT('%',#{teacher},'%'))
             </if>
             </if>
@@ -75,6 +78,9 @@
                 <if test="dpr.requestUserId != null">
                 <if test="dpr.requestUserId != null">
                     AND bes.create_id = #{dpr.requestUserId}
                     AND bes.create_id = #{dpr.requestUserId}
                 </if>
                 </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">
                 <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
                     AND bc.teaching_room_id IN
                     AND bc.teaching_room_id IN
                     <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
                     <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>
         </where>
     </select>
     </select>
     <select id="listCourseForDocument" resultType="com.qmth.teachcloud.common.entity.BasicCourse">
     <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 != null">
             <if test="dpr.requestUserId != null">
             <if test="dpr.requestUserId != null">
-                AND t.user_id = #{dpr.requestUserId}
+                AND bes.create_id = #{dpr.requestUserId}
             </if>
             </if>
             <if test="dpr.courseUserId != null">
             <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>
             <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
             <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
                 AND bc.teaching_room_id IN
                 AND bc.teaching_room_id IN
@@ -890,6 +927,5 @@
                 </foreach>
                 </foreach>
             </if>
             </if>
         </if>
         </if>
-        ORDER BY t.id desc
     </select>
     </select>
 </mapper>
 </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)
 (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);
 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');
 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');
 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');
 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,
     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) String examId,
                                            @ApiParam(value = "课程ID") @RequestParam(required = false) Long courseId,
                                            @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 teacher,
                                            @ApiParam(value = "学院") @RequestParam(required = false) String college,
                                            @ApiParam(value = "学院") @RequestParam(required = false) String college,
                                            @ApiParam(value = "专业") @RequestParam(required = false) String major,
                                            @ApiParam(value = "专业") @RequestParam(required = false) String major,
@@ -75,7 +76,7 @@ public class BasicExamStudentController {
             throw ExceptionResultEnum.ERROR.exception("请选择考试");
             throw ExceptionResultEnum.ERROR.exception("请选择考试");
         }
         }
         return ResultUtil.ok(basicExamStudentService.page(SystemConstant.convertIdToLong(semesterId),
         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));
                 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);
     List<MarkStudentVo> listMarkStudentVo(MarkStudentQuery markStudentQuery);
 
 
     IPage<MarkStudentVo> pageMarkStudentVo(Page<MarkStudentVo> page, 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
     @Override
     public void updateByBasicExamStudent(BasicExamStudent basicExamStudent, MarkPaper markPaper, Set<String> secretNumberSet) {
     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 (markStudent == null) {
             if (MarkPaperStatus.FINISH.equals(markPaper.getStatus())) {
             if (MarkPaperStatus.FINISH.equals(markPaper.getStatus())) {
                 throw ExceptionResultEnum.ERROR.exception("试卷编号[" + markPaper.getPaperNumber() + "]已结束阅卷,不允许新增考生");
                 throw ExceptionResultEnum.ERROR.exception("试卷编号[" + markPaper.getPaperNumber() + "]已结束阅卷,不允许新增考生");
@@ -1780,8 +1780,11 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
                     markStudent.randomSecretNumber();
                     markStudent.randomSecretNumber();
                 }
                 }
             }
             }
-            this.saveOrUpdate(markStudent);
+        } else {
+            markStudent.setPaperNumber(basicExamStudent.getPaperNumber());
+            markStudent.setPaperType(basicExamStudent.getPaperType());
         }
         }
+        this.saveOrUpdate(markStudent);
     }
     }
 
 
     @Override
     @Override
@@ -1891,4 +1894,11 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     public IPage<MarkStudentVo> pageMarkStudentVo(Page<MarkStudentVo> page, MarkStudentQuery markStudentQuery) {
     public IPage<MarkStudentVo> pageMarkStudentVo(Page<MarkStudentVo> page, MarkStudentQuery markStudentQuery) {
         return this.baseMapper.listMarkStudentVo(page, 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);
+    }
 }
 }