xiaofei 1 tahun lalu
induk
melakukan
465f72b21e
25 mengubah file dengan 330 tambahan dan 84 penghapusan
  1. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailCourseServiceImpl.java
  2. 2 1
      distributed-print-business/src/main/resources/mapper/ExamDetailMapper.xml
  3. 73 0
      distributed-print/install/mysql/init/teachcloud_db.sql
  4. 2 0
      distributed-print/install/mysql/upgrade/3.3.0.sql
  5. 0 2
      distributed-print/src/main/java/com/qmth/distributed/print/api/mark/ScanExamController.java
  6. 15 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkStudent.java
  7. 4 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkPaperMapper.java
  8. 3 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkStudentMapper.java
  9. 2 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/ScanOmrTaskMapper.java
  10. 2 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/ScanPackageMapper.java
  11. 3 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/ScanPaperMapper.java
  12. 6 3
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkPaperService.java
  13. 2 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/ScanOmrTaskService.java
  14. 2 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/ScanPackageService.java
  15. 2 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/ScanPaperService.java
  16. 11 10
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkPaperServiceImpl.java
  17. 37 40
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java
  18. 6 8
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanOmrTaskServiceImpl.java
  19. 3 5
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanPackageServiceImpl.java
  20. 7 9
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanPaperServiceImpl.java
  21. 36 1
      teachcloud-mark/src/main/resources/mapper/MarkPaperMapper.xml
  22. 21 0
      teachcloud-mark/src/main/resources/mapper/MarkStudentMapper.xml
  23. 31 0
      teachcloud-mark/src/main/resources/mapper/ScanOmrTaskMapper.xml
  24. 23 0
      teachcloud-mark/src/main/resources/mapper/ScanPackageMapper.xml
  25. 36 0
      teachcloud-mark/src/main/resources/mapper/ScanPaperMapper.xml

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

@@ -182,7 +182,7 @@ public class ExamDetailCourseServiceImpl extends ServiceImpl<ExamDetailCourseMap
                     singleExamStudentAddParam.getStudentCode(), singleExamStudentAddParam.getStudentName(),
                     examDetail.getPackageCode(), examDetail.getExamPlace(), examDetail.getExamRoom(),
                     singleExamStudentAddParam.getCollege(), singleExamStudentAddParam.getClassName(),
-                    examDetail.getExamStartTime(), examDetail.getExamEndTime());
+                    examDetail.getExamStartTime(), examDetail.getExamEndTime(),markPaper.getUserId());
             if (markStudent.getSecretNumber() == null) {
                 markStudent.randomSecretNumber();
                 while (markStudentService.countByExamIdAndSecretNumber(markStudent.getExamId(), markStudent.getSecretNumber()) > 0) {

+ 2 - 1
distributed-print-business/src/main/resources/mapper/ExamDetailMapper.xml

@@ -158,6 +158,7 @@
         MAX(det.create_time) AS createTime,
         GROUP_CONCAT(cou.id) AS examDetailCourseIds,
         GROUP_CONCAT(CONCAT(cou.course_name, '(', cou.course_code, ')')) AS courseNameCode,
+        GROUP_CONCAT(cou.course_code) AS courseCodes,
         GROUP_CONCAT(cou.paper_number) AS paperNumber
         FROM
         exam_detail det
@@ -214,7 +215,7 @@
         GROUP BY det.id
         <trim prefix="having" suffixOverrides="and">
             <if test="courseCode != null and courseCode != ''">
-                find_in_set(#{courseCode},courseNameCode) and
+                find_in_set(#{courseCode},courseCodes) and
             </if>
             <if test="paperNumber != null and paperNumber != ''">
                 find_in_set(#{paperNumber},paperNumber) and

+ 73 - 0
distributed-print/install/mysql/init/teachcloud_db.sql

@@ -1529,6 +1529,7 @@ CREATE TABLE IF NOT EXISTS `mark_student` (
         `assign_confirmed` bit(1) DEFAULT NULL COMMENT '人工绑定确认',
         `exam_start_time` BIGINT(20) NULL COMMENT '考试开始时间',
         `exam_end_time` BIGINT(20) NULL COMMENT '考试结束时间',
+        `create_id` BIGINT(20) NULL COMMENT '创建人ID',
         PRIMARY KEY (`id`) USING BTREE,
         UNIQUE KEY `index2` (`exam_id`,`secret_number`) USING BTREE,
         KEY `index3` (`exam_id`,`course_code`,`upload_time`) USING BTREE
@@ -3025,6 +3026,78 @@ CREATE TABLE IF NOT EXISTS `sys_role_privilege` (
         PRIMARY KEY (`id`) USING BTREE
         ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色和菜单关联表';
 
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (1,1,1,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (2,1,2,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (3,1,4,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (4,1,5,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (5,1,6,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (6,1,92,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (7,1,93,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (8,1,94,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (9,1,95,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (10,1,224,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (11,1,225,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (12,1,226,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (13,1,227,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (14,1,228,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (15,1,234,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (16,1,77,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (17,1,78,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (18,1,79,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (19,1,80,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (20,1,81,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (21,1,82,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (22,1,87,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (23,1,184,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (24,1,217,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (25,1,218,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (26,1,219,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (27,1,220,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (28,1,221,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (29,1,222,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (30,1,223,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (31,1,243,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (32,1,83,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (33,1,84,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (34,1,85,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (35,1,86,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (36,1,91,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (37,1,180,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (38,1,229,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (39,1,230,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (40,1,231,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (41,1,232,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (42,1,233,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (43,1,235,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (44,1,390,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (45,1,402,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (46,1,407,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (47,1,408,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (48,1,409,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (49,1,410,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (50,1,411,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (53,1,527,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (54,1,528,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (55,1,529,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (56,1,638,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (57,1,643,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (58,1,675,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (59,1,676,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (60,1,677,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (61,1,678,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (62,1,679,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (81,1,767,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (88,1,771,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (89,1,772,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (90,1,773,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (91,1,774,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (92,1,775,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (93,1,776,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (94,1,777,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (95,1,778,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (96,1,779,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (97,1,780,1,NULL);
+INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (98,1,781,1,NULL);
 INSERT INTO `sys_role_privilege` (`id`, `role_id`, `privilege_id`, `enable`, `school_id`) VALUES (1726860847252312066, 2, 1, 1, NULL);
 INSERT INTO `sys_role_privilege` (`id`, `role_id`, `privilege_id`, `enable`, `school_id`) VALUES (1726860847273283585, 2, 2, 1, NULL);
 INSERT INTO `sys_role_privilege` (`id`, `role_id`, `privilege_id`, `enable`, `school_id`) VALUES (1726860847273283586, 2, 3, 1, NULL);

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

@@ -235,3 +235,5 @@ ADD COLUMN `exam_end_time` BIGINT(20) NULL COMMENT '考试结束时间' AFTER `e
 
 ALTER TABLE `mark_paper`
     ADD COLUMN `force_mode` TINYINT(1) NULL DEFAULT 1 COMMENT '强制评卷模式(不限为false)' AFTER `mark_mode`;
+ALTER TABLE `mark_student`
+    ADD COLUMN `create_id` BIGINT(20) NULL COMMENT '创建人ID' AFTER `exam_end_time`;

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

@@ -25,8 +25,6 @@ public class ScanExamController {
     private MarkStudentService markStudentService;
     @Resource
     private BasicExamService basicExamService;
-    @Resource
-    private RedisUtil redisUtil;
 
     @ApiOperation(value = "扫描汇总-答题卡扫描、签到表扫描")
     @RequestMapping(value = "card/info", method = RequestMethod.POST)

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

@@ -183,11 +183,16 @@ public class MarkStudent implements Serializable {
     private Integer cardNumber;
     private Long examStartTime;
     private Long examEndTime;
+    private Long createId;
 
     public MarkStudent() {
     }
 
-    public MarkStudent(Long id, Long examId, String courseCode, String courseName, String paperNumber, String coursePaperId, String paperType, String studentCode, String studentName, String packageCode, String examPlace, String examRoom, String college, String className, Long examStartTime, Long examEndTime) {
+    public MarkStudent(Long id, Long examId, String courseCode, String courseName,
+                       String paperNumber, String coursePaperId, String paperType,
+                       String studentCode, String studentName, String packageCode,
+                       String examPlace, String examRoom, String college, String className,
+                       Long examStartTime, Long examEndTime, Long createId) {
         this.id = id;
         this.examId = examId;
         this.courseCode = courseCode;
@@ -215,6 +220,7 @@ public class MarkStudent implements Serializable {
         this.omrAbsentChecked = false;
         this.examStartTime = examStartTime;
         this.examEndTime = examEndTime;
+        this.createId = createId;
     }
 
     public Long getId() {
@@ -678,6 +684,14 @@ public class MarkStudent implements Serializable {
         this.examEndTime = examEndTime;
     }
 
+    public Long getCreateId() {
+        return createId;
+    }
+
+    public void setCreateId(Long createId) {
+        this.createId = createId;
+    }
+
     @Override
     public String toString() {
         return "MarkStudent{" +

+ 4 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkPaperMapper.java

@@ -35,4 +35,8 @@ public interface MarkPaperMapper extends BaseMapper<MarkPaper> {
     List<MarkSettingDto> listPaperSetting(@Param("schoolId") Long schoolId, @Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("groupStatus") boolean groupStatus, @Param("dpr") DataPermissionRule dpr);
 
 	IPage<ArchiveScoreVo> scoreList(Page<ArchiveScoreVo> page,@Param("req") ArchiveScoreQuery query);
+
+    int getCountByExam(@Param("examId") Long examId, @Param("dpr") DataPermissionRule dpr);
+
+    List<MarkPaper> listMarkPaper(@Param("examId") Long examId, @Param("dpr") DataPermissionRule dpr);
 }

+ 3 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkStudentMapper.java

@@ -3,6 +3,7 @@ package com.qmth.teachcloud.mark.mapper;
 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.bean.archivescore.*;
 import com.qmth.teachcloud.mark.bean.scananswer.AnswerQueryDomain;
 import com.qmth.teachcloud.mark.bean.scananswer.AnswerQueryVo;
@@ -64,4 +65,6 @@ public interface MarkStudentMapper extends BaseMapper<MarkStudent> {
 	IPage<ArchiveStudentVo> studentList(@Param("page") Page<ArchiveStudentVo> page, @Param("req") ArchiveStudentQuery query);
 
 	List<TeacherClassVo> teacherClass(@Param("examId") Long examId, @Param("paperNumber") String paperNumber);
+
+    int selectCountByQuery(@Param("markStudent") MarkStudent markStudent, @Param("dpr") DataPermissionRule dpr);
 }

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

@@ -2,6 +2,7 @@ package com.qmth.teachcloud.mark.mapper;
 
 import java.util.List;
 
+import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import org.apache.ibatis.annotations.Param;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -31,4 +32,5 @@ public interface ScanOmrTaskMapper extends BaseMapper<ScanOmrTask> {
 	int getStudentCountByExamAndStatus(@Param(value = "examId") Long examId,
 			@Param(value = "status") OmrTaskStatus status);
 
+    int countOmrTask(@Param("scanOmrTask") ScanOmrTask scanOmrTask, @Param("dpr") DataPermissionRule dpr);
 }

+ 2 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/ScanPackageMapper.java

@@ -1,5 +1,6 @@
 package com.qmth.teachcloud.mark.mapper;
 
+import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.mark.bean.scanpackage.ScanPackageQuery;
 import com.qmth.teachcloud.mark.bean.scanpackage.ScanPackageVo;
 import com.qmth.teachcloud.mark.entity.ScanPackage;
@@ -22,4 +23,5 @@ public interface ScanPackageMapper extends BaseMapper<ScanPackage> {
 
 	IPage<ScanPackageVo> page(@Param("page") Page<ScanPackageVo> page, @Param("req")ScanPackageQuery query);
 
+    int countPackageCode(@Param("examId") Long examId, @Param("dpr") DataPermissionRule dpr);
 }

+ 3 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/ScanPaperMapper.java

@@ -1,5 +1,6 @@
 package com.qmth.teachcloud.mark.mapper;
 
+import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.mark.bean.scananswer.StudentPaperVo;
 import com.qmth.teachcloud.mark.bean.scanpaper.PaperVo;
 import com.qmth.teachcloud.mark.dto.mark.score.StudentPaperDetailDto;
@@ -24,4 +25,6 @@ public interface ScanPaperMapper extends BaseMapper<ScanPaper> {
 	List<PaperVo> findStudentPaper(@Param("studentId")Long studentId);
 
 	List<StudentPaperVo> listByStudentIds(@Param("studentIds")List<Long> studentIds);
+
+    int countAssigned(@Param("scanPaper") ScanPaper scanPaper, @Param("dpr") DataPermissionRule dpr);
 }

+ 6 - 3
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkPaperService.java

@@ -4,6 +4,7 @@ import java.util.List;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.bean.dto.mark.MarkSettingDto;
 import com.qmth.teachcloud.common.enums.mark.MarkPaperStatus;
 import com.qmth.teachcloud.mark.bean.archivescore.ArchiveScoreQuery;
@@ -33,7 +34,7 @@ public interface MarkPaperService extends IService<MarkPaper> {
 
     List<MarkPaper> listQualityMarkPaperByStatus(MarkPaperStatus formal, int uploadCount);
 
-    int getCountByExam(Long id);
+    int getCountByExam(Long id, DataPermissionRule dpr);
 
     IPage<CheckScoreListDto> listStudentScoreList(Long examId, String courseCode, String paperNumber, Integer pageNumber, Integer pageSize);
 
@@ -57,7 +58,9 @@ public interface MarkPaperService extends IService<MarkPaper> {
 
 	IPage<ArchiveScoreVo> scoreList(ArchiveScoreQuery query);
 
-    int getPackageCountByExamId(Long examId);
+    int getPackageCountByExamId(Long examId, DataPermissionRule dpr);
 
-    List<MarkPaper> listByExamId(Long examId);
+    List<MarkPaper> listByExamId(Long examId, DataPermissionRule dpr);
+
+    List<MarkPaper> listMarkPaper(Long examId, DataPermissionRule dpr);
 }

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

@@ -3,6 +3,7 @@ package com.qmth.teachcloud.mark.service;
 import java.util.List;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.enums.scan.ConditionType;
 import com.qmth.teachcloud.mark.dto.ScanOmrStudent;
 import com.qmth.teachcloud.mark.dto.ScanOmrTaskResultDto;
@@ -36,7 +37,7 @@ public interface ScanOmrTaskService extends IService<ScanOmrTask> {
 
 	void deleteByStudentId(Long examId, Long studentId);
 
-	int getCount(Long examId, OmrTaskStatus status);
+	int getCount(Long examId, OmrTaskStatus status, DataPermissionRule dpr);
 
 	List<ScanStudentDto> list(Long examId, OmrTaskStatus status, Long userId);
 

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

@@ -2,6 +2,7 @@ package com.qmth.teachcloud.mark.service;
 
 import java.util.List;
 
+import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import org.springframework.web.multipart.MultipartFile;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -22,7 +23,7 @@ import com.qmth.teachcloud.mark.entity.ScanPackage;
  */
 public interface ScanPackageService extends IService<ScanPackage> {
 
-	int getCount(Long examId);
+	int getCount(Long examId, DataPermissionRule dpr);
 
     List<ScanPackage> listByExamIdAndCoursePaperIdAndPackageCode(Long examId, String coursePaperId, String packageCode);
 

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

@@ -3,6 +3,7 @@ package com.qmth.teachcloud.mark.service;
 import java.util.List;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.mark.bean.papermigrate.PaperMigrateDomain;
 import com.qmth.teachcloud.mark.bean.papermigrate.PaperMigrateVo;
@@ -24,7 +25,7 @@ public interface ScanPaperService extends IService<ScanPaper> {
 
 	void savePaperAndPages(ScanPaper paper, List<ScanPaperPage> pages);
 
-	int getAssignedCount(Long examId, Boolean checked);
+	int getAssignedCount(Long examId, Boolean checked, DataPermissionRule dpr);
 
     List<StudentPaperDetailDto> listStudentPaperDetail(Long studentId);
 

+ 11 - 10
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkPaperServiceImpl.java

@@ -168,10 +168,8 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
     }
 
     @Override
-    public int getCountByExam(Long examId) {
-        QueryWrapper<MarkPaper> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(MarkPaper::getExamId, examId);
-        return baseMapper.selectCount(queryWrapper);
+    public int getCountByExam(Long examId, DataPermissionRule dpr) {
+        return baseMapper.getCountByExam(examId, dpr);
     }
 
     @Override
@@ -298,8 +296,8 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
     }
 
     @Override
-    public int getPackageCountByExamId(Long examId) {
-        List<MarkPaper> markPaperList = this.listByExamId(examId);
+    public int getPackageCountByExamId(Long examId, DataPermissionRule dpr) {
+        List<MarkPaper> markPaperList = this.listByExamId(examId, dpr);
         List<String> packageCodes = new ArrayList<>();
         for (MarkPaper markPaper : markPaperList) {
             packageCodes.addAll(Arrays.asList(markPaper.getPackageCode().split(",")));
@@ -308,10 +306,13 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
     }
 
     @Override
-    public List<MarkPaper> listByExamId(Long examId) {
-        QueryWrapper<MarkPaper> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(MarkPaper::getExamId, examId);
-        return this.list(queryWrapper);
+    public List<MarkPaper> listByExamId(Long examId, DataPermissionRule dpr) {
+        return this.listMarkPaper(examId, dpr);
+    }
+
+    @Override
+    public List<MarkPaper> listMarkPaper(Long examId, DataPermissionRule dpr) {
+        return this.baseMapper.listMarkPaper(examId, dpr);
     }
 
 }

+ 37 - 40
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java

@@ -11,18 +11,18 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.boot.core.concurrent.service.ConcurrentService;
 import com.qmth.boot.core.exception.ParameterException;
+import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.bean.vo.FilePathVo;
 import com.qmth.teachcloud.common.contant.SystemConstant;
-import com.qmth.teachcloud.common.entity.BasicAttachment;
 import com.qmth.teachcloud.common.entity.BasicExam;
 import com.qmth.teachcloud.common.entity.MarkQuestion;
 import com.qmth.teachcloud.common.entity.SysUser;
-import com.qmth.teachcloud.common.enums.CardCreateMethodEnum;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.PageSizeEnum;
 import com.qmth.teachcloud.common.enums.ScanStatus;
 import com.qmth.teachcloud.common.enums.mark.MarkPaperStatus;
 import com.qmth.teachcloud.common.enums.mark.SubjectiveStatus;
+import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
 import com.qmth.teachcloud.common.service.TeachcloudCommonService;
 import com.qmth.teachcloud.common.util.*;
 import com.qmth.teachcloud.mark.bean.UpdateTimeVo;
@@ -105,7 +105,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     @Resource
     private TaskService taskService;
     @Resource
-    private MarkUserGroupService markUserGroupService;
+    private BasicRoleDataPermissionService basicRoleDataPermissionService;
 
     @Autowired
     private MarkSubjectiveScoreService markSubjectiveScoreService;
@@ -146,14 +146,16 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
 
     @Override
     public ScanExamInfoVo getScanExamInfo(BasicExam exam) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(sysUser.getSchoolId(), sysUser.getId(), ServletUtil.getRequest().getServletPath());
         ScanExamInfoVo vo = new ScanExamInfoVo();
         vo.setId(exam.getId());
         vo.setName(exam.getName());
-        vo.getAnswerScan().setCourseCount(markPaperService.getCountByExam(exam.getId()));
-        vo.getAnswerScan().setTotalCount(getCount(exam.getId(), null));
-        vo.getAnswerScan().setScannedCount(getCount(exam.getId(), ScanStatus.SCANNED));
-        vo.getPackageScan().setTotalCount(markPaperService.getPackageCountByExamId(exam.getId()));
-        vo.getPackageScan().setScannedCount(scanPackageService.getCount(exam.getId()));
+        vo.getAnswerScan().setCourseCount(markPaperService.getCountByExam(exam.getId(), dpr));
+        vo.getAnswerScan().setTotalCount(getCount(exam.getId(), null, dpr));
+        vo.getAnswerScan().setScannedCount(getCount(exam.getId(), ScanStatus.SCANNED, dpr));
+        vo.getPackageScan().setTotalCount(markPaperService.getPackageCountByExamId(exam.getId(), dpr));
+        vo.getPackageScan().setScannedCount(scanPackageService.getCount(exam.getId(), dpr));
         return vo;
     }
 
@@ -195,51 +197,46 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
         return sheetUrls;
     }
 
-    private int getCount(Long examId, ScanStatus status) {
-        QueryWrapper<MarkStudent> wrapper = new QueryWrapper<>();
-        LambdaQueryWrapper<MarkStudent> lw = wrapper.lambda();
-        lw.eq(MarkStudent::getExamId, examId);
-        if (status != null) {
-            lw.eq(MarkStudent::getScanStatus, status);
-        }
-        return baseMapper.selectCount(wrapper);
+    private int getCount(Long examId, ScanStatus status, DataPermissionRule dpr) {
+        MarkStudent markStudent = new MarkStudent();
+        markStudent.setExamId(examId);
+        markStudent.setScanStatus(status);
+        return baseMapper.selectCountByQuery(markStudent, dpr);
     }
 
-    private int getOmrAbsentCount(Long examId, Boolean checked) {
-        QueryWrapper<MarkStudent> wrapper = new QueryWrapper<>();
-        LambdaQueryWrapper<MarkStudent> lw = wrapper.lambda();
-        lw.eq(MarkStudent::getExamId, examId);
-        lw.eq(MarkStudent::getOmrAbsent, true);
-        if (checked != null) {
-            lw.eq(MarkStudent::getOmrAbsentChecked, checked);
-        }
-        return baseMapper.selectCount(wrapper);
+    private int getOmrAbsentCount(Long examId, Boolean checked, DataPermissionRule dpr) {
+        MarkStudent markStudent = new MarkStudent();
+        markStudent.setExamId(examId);
+        markStudent.setOmrAbsent(true);
+        markStudent.setOmrAbsentChecked(checked);
+        return baseMapper.selectCountByQuery(markStudent, dpr);
     }
 
-    private int getIncompleteCount(Long examId) {
-        QueryWrapper<MarkStudent> wrapper = new QueryWrapper<>();
-        LambdaQueryWrapper<MarkStudent> lw = wrapper.lambda();
-        lw.eq(MarkStudent::getExamId, examId);
-        lw.eq(MarkStudent::getIncomplete, true);
-        return baseMapper.selectCount(wrapper);
+    private int getIncompleteCount(Long examId, DataPermissionRule dpr) {
+        MarkStudent markStudent = new MarkStudent();
+        markStudent.setExamId(examId);
+        markStudent.setIncomplete(true);
+        return baseMapper.selectCountByQuery(markStudent, dpr);
     }
 
     @Override
     public ScanExamCheckInfoVo checkInfo(BasicExam exam) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(sysUser.getSchoolId(), sysUser.getId(), ServletUtil.getRequest().getServletPath());
         Long examId = exam.getId();
         ScanExamCheckInfoVo vo = new ScanExamCheckInfoVo();
         vo.setId(exam.getId());
         vo.setName(exam.getName());
         CheckTask ct = vo.getCheckTask();
-        ct.setUnexistCount(getCount(examId, ScanStatus.UNEXIST));
-        ct.setUnexistCheckedCount(getCount(examId, ScanStatus.MANUAL_ABSENT));
-        ct.setAssignedCount(scanPaperService.getAssignedCount(examId, false));
-        ct.setAssignedCheckedCount(scanPaperService.getAssignedCount(examId, true));
-        ct.setAbsentCheckCount(getOmrAbsentCount(examId, false));
-        ct.setAbsentCheckedCount(getOmrAbsentCount(examId, true));
-        ct.setObjectiveCheckCount(scanOmrTaskService.getCount(examId, OmrTaskStatus.WAITING));
-        ct.setObjectiveCheckedCount(scanOmrTaskService.getCount(examId, OmrTaskStatus.PROCESSED));
-        ct.setIncompleteCount(getIncompleteCount(examId));
+        ct.setUnexistCount(getCount(examId, ScanStatus.UNEXIST, dpr));
+        ct.setUnexistCheckedCount(getCount(examId, ScanStatus.MANUAL_ABSENT, dpr));
+        ct.setAssignedCount(scanPaperService.getAssignedCount(examId, false, dpr));
+        ct.setAssignedCheckedCount(scanPaperService.getAssignedCount(examId, true, dpr));
+        ct.setAbsentCheckCount(getOmrAbsentCount(examId, false, dpr));
+        ct.setAbsentCheckedCount(getOmrAbsentCount(examId, true, dpr));
+        ct.setObjectiveCheckCount(scanOmrTaskService.getCount(examId, OmrTaskStatus.WAITING, dpr));
+        ct.setObjectiveCheckedCount(scanOmrTaskService.getCount(examId, OmrTaskStatus.PROCESSED, dpr));
+        ct.setIncompleteCount(getIncompleteCount(examId, dpr));
         return vo;
     }
 

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

@@ -6,6 +6,7 @@ import java.util.stream.Collectors;
 import javax.annotation.Resource;
 import javax.validation.constraints.NotNull;
 
+import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.service.TeachcloudCommonService;
 import org.apache.commons.collections4.CollectionUtils;
@@ -599,14 +600,11 @@ public class ScanOmrTaskServiceImpl extends ServiceImpl<ScanOmrTaskMapper, ScanO
 	}
 
 	@Override
-	public int getCount(Long examId, OmrTaskStatus status) {
-		QueryWrapper<ScanOmrTask> wrapper = new QueryWrapper<>();
-		LambdaQueryWrapper<ScanOmrTask> lw = wrapper.lambda();
-		lw.eq(ScanOmrTask::getExamId, examId);
-		if (status != null) {
-			lw.eq(ScanOmrTask::getStatus, status);
-		}
-		return baseMapper.selectCount(wrapper);
+	public int getCount(Long examId, OmrTaskStatus status, DataPermissionRule dpr) {
+		ScanOmrTask scanOmrTask = new ScanOmrTask();
+		scanOmrTask.setExamId(examId);
+		scanOmrTask.setStatus(status);
+		return baseMapper.countOmrTask(scanOmrTask, dpr);
 	}
 
 	@Override

+ 3 - 5
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanPackageServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.boot.core.exception.ParameterException;
+import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.service.TeachcloudCommonService;
 import com.qmth.teachcloud.mark.bean.scananswer.SheetUploadVo;
@@ -53,11 +54,8 @@ public class ScanPackageServiceImpl extends ServiceImpl<ScanPackageMapper, ScanP
     private TeachcloudCommonService teachcloudCommonService;
 
     @Override
-    public int getCount(Long examId) {
-        QueryWrapper<ScanPackage> wrapper = new QueryWrapper<>();
-        LambdaQueryWrapper<ScanPackage> lw = wrapper.lambda();
-        lw.eq(ScanPackage::getExamId, examId);
-        return baseMapper.selectCount(wrapper);
+    public int getCount(Long examId, DataPermissionRule dpr) {
+        return baseMapper.countPackageCode(examId, dpr);
     }
 
     @Override

+ 7 - 9
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanPaperServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.boot.core.concurrent.service.ConcurrentService;
 import com.qmth.boot.core.exception.ParameterException;
+import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
@@ -94,15 +95,12 @@ public class ScanPaperServiceImpl extends ServiceImpl<ScanPaperMapper, ScanPaper
     }
 
     @Override
-    public int getAssignedCount(Long examId, Boolean checked) {
-        QueryWrapper<ScanPaper> wrapper = new QueryWrapper<>();
-        LambdaQueryWrapper<ScanPaper> lw = wrapper.lambda();
-        lw.eq(ScanPaper::getExamId, examId);
-        lw.eq(ScanPaper::getAssigned, true);
-        if (checked != null) {
-            lw.eq(ScanPaper::getAssignConfirmed, checked);
-        }
-        return baseMapper.selectCount(wrapper);
+    public int getAssignedCount(Long examId, Boolean checked, DataPermissionRule dpr) {
+        ScanPaper scanPaper = new ScanPaper();
+        scanPaper.setExamId(examId);
+        scanPaper.setAssigned(true);
+        scanPaper.setAssignConfirmed(checked);
+        return baseMapper.countAssigned(scanPaper, dpr);
     }
 
     @Override

+ 36 - 1
teachcloud-mark/src/main/resources/mapper/MarkPaperMapper.xml

@@ -138,5 +138,40 @@
         group by t.course_code,t.course_name,t.paper_number
         ORDER BY t.course_code
     </select>
-    
+    <select id="getCountByExam" resultType="java.lang.Integer">
+        select count(1) from mark_paper mp left join sys_user su on mp.user_id = su.id
+        <where>
+            and mp.exam_id = #{examId}
+            <if test="dpr != null">
+                <if test="dpr.requestUserId != null">
+                    AND mp.user_id = #{dpr.requestUserId}
+                </if>
+                <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
+                    AND su.org_id IN
+                    <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+                        #{item}
+                    </foreach>
+                </if>
+            </if>
+        </where>
+    </select>
+    <select id="listMarkPaper" resultType="com.qmth.teachcloud.mark.entity.MarkPaper">
+        select * from mark_paper mp
+            left join sys_user su on mp.user_id = su.id
+        <where>
+            mp.exam_id = #{examId}
+            <if test="dpr != null">
+                <if test="dpr.requestUserId != null">
+                    AND mp.user_id = #{dpr.requestUserId}
+                </if>
+                <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
+                    AND su.org_id IN
+                    <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+                        #{item}
+                    </foreach>
+                </if>
+            </if>
+        </where>
+    </select>
+
 </mapper>

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

@@ -387,4 +387,25 @@
             s.exam_id = #{examId} and s.paper_number = #{paperNumber} and s.class_name is not null
         group by s.teacher, s.class_name
     </select>
+    <select id="selectCountByQuery" resultType="java.lang.Integer">
+        select count(1) from mark_student ms left join sys_user su on ms.create_id = su.id
+        <where>
+            and ms.exam_id = #{markStudent.examId}
+            <if test="markStudent.scanStatus != null">
+                and ms.scan_status = #{markStudent.scanStatus}
+            </if>
+            <if test="markStudent.omrAbsent != null">
+                and ms.omr_absent = #{markStudent.omrAbsent}
+            </if>
+            <if test="markStudent.omrAbsentChecked != null">
+                and ms.omr_absent_checked = #{markStudent.omrAbsentChecked}
+            </if>
+            <if test="markStudent.incomplete != null">
+                and ms.incomplete = #{markStudent.incomplete}
+            </if>
+            <if test="markStudent.scanStatus != null">
+                and ms.scan_status = #{markStudent.scanStatus}
+            </if>
+        </where>
+    </select>
 </mapper>

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

@@ -76,5 +76,36 @@
 			t.exam_id=#{examId}
 			and t.status=#{status}
 	</select>
+    <select id="countOmrTask" resultType="java.lang.Integer">
+		SELECT
+			COUNT(1)
+		FROM
+			scan_omr_task sot
+		<where>
+			sot.exam_id = #{scanOmrTask.examId}
+			<if test="scanOmrTask.status != null">
+				AND sot.status = #{scanOmrTask.status}
+			</if>
+			<if test="dpr != null">
+				AND EXISTS( SELECT
+						1
+					FROM
+						mark_student ms
+							left join sys_user su on ms.create_id = su.id
+					WHERE
+						sot.student_id = ms.id
+						<if test="dpr.requestUserId != null">
+							AND ms.create_id = #{dpr.requestUserId}
+						</if>
+						<if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
+							AND su.org_id IN
+							<foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+								#{item}
+							</foreach>
+						</if>
+						)
+					</if>
+		</where>
+	</select>
 
 </mapper>

+ 23 - 0
teachcloud-mark/src/main/resources/mapper/ScanPackageMapper.xml

@@ -44,4 +44,27 @@
 		</if>
 		ORDER BY t.id
 	</select>
+    <select id="countPackageCode" resultType="java.lang.Integer">
+		SELECT
+			sp.*
+		FROM
+			scan_package sp
+				JOIN
+			mark_paper mp ON sp.exam_id = mp.exam_id
+				AND find_in_set(sp.package_code, mp.package_code)
+				LEFT JOIN sys_user su ON mp.user_id = su.id
+		WHERE
+			sp.exam_id = #{examId}
+			<if test="dpr != null">
+				<if test="dpr.requestUserId != null">
+					AND mp.user_id = #{dpr.requestUserId}
+				</if>
+				<if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
+					AND su.org_id IN
+					<foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+						#{item}
+					</foreach>
+				</if>
+			</if>
+	</select>
 </mapper>

+ 36 - 0
teachcloud-mark/src/main/resources/mapper/ScanPaperMapper.xml

@@ -71,4 +71,40 @@
         </foreach>
         order by t.paper_index
     </select>
+    <select id="countAssigned" resultType="java.lang.Integer">
+        SELECT
+            count(1)
+        FROM
+            scan_student_paper ssp
+                LEFT JOIN
+            scan_paper sp ON ssp.paper_id = sp.id
+        <where>
+            sp.exam_id = #{scanPaper.examId}
+            <if test="scanPaper.assigned != null">
+                AND sp.assigned = #{scanPaper.assigned}
+            </if>
+            <if test="scanPaper.assignConfirmed != null">
+                AND sp.assign_confirmed = #{scanPaper.assignConfirmed}
+            </if>
+            <if test="dpr != null">
+                AND EXISTS( SELECT
+                        1
+                    FROM
+                        mark_student ms
+                            left join sys_user su on ms.create_id = su.id
+                    WHERE
+                        ssp.student_id = ms.id
+                        <if test="dpr.requestUserId != null">
+                            AND ms.create_id = #{dpr.requestUserId}
+                        </if>
+                        <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
+                            AND su.org_id IN
+                            <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+                                #{item}
+                            </foreach>
+                        </if>
+                )
+            </if>
+        </where>
+    </select>
 </mapper>