xiaofei 1 anno fa
parent
commit
a5dcdb4355
22 ha cambiato i file con 221 aggiunte e 90 eliminazioni
  1. 4 4
      distributed-print/src/main/java/com/qmth/distributed/print/api/mark/ScanExamController.java
  2. 9 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/scanexaminfo/AnswerScan.java
  3. 21 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/ScanOmrTask.java
  4. 39 20
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/ScanPaper.java
  5. 3 2
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkPaperMapper.java
  6. 1 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/ScanPackageMapper.java
  7. 5 4
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkPaperService.java
  8. 2 2
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkStudentService.java
  9. 1 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/ScanOmrTaskService.java
  10. 1 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/ScanPackageService.java
  11. 1 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/ScanPaperService.java
  12. 13 8
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkPaperServiceImpl.java
  13. 5 2
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkServiceImpl.java
  14. 26 19
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java
  15. 3 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanOmrTaskServiceImpl.java
  16. 2 2
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanPackageServiceImpl.java
  17. 3 3
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanPaperServiceImpl.java
  18. 37 2
      teachcloud-mark/src/main/resources/mapper/MarkPaperMapper.xml
  19. 6 0
      teachcloud-mark/src/main/resources/mapper/MarkStudentMapper.xml
  20. 16 8
      teachcloud-mark/src/main/resources/mapper/ScanOmrTaskMapper.xml
  21. 7 0
      teachcloud-mark/src/main/resources/mapper/ScanPackageMapper.xml
  22. 16 8
      teachcloud-mark/src/main/resources/mapper/ScanPaperMapper.xml

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

@@ -30,17 +30,17 @@ public class ScanExamController {
     @RequestMapping(value = "card/info", method = RequestMethod.POST)
     public Result cardInfo(@ApiParam(value = "考试ID", required = true) @RequestParam Long examId,
                            @ApiParam(value = "课程代码") @RequestParam(required = false) String courseCode,
-                           @ApiParam(value = "试卷编号") @RequestParam(required = false) String paperNumber) {
+                           @ApiParam(value = "试卷编号") @RequestParam(required = false) String coursePaperId) {
         BasicExam exam = basicExamService.getById(examId);
-        return ResultUtil.ok(markStudentService.getScanExamInfo(exam));
+        return ResultUtil.ok(markStudentService.getScanExamInfo(exam, courseCode, coursePaperId));
     }
 
     @ApiOperation(value = "扫描汇总-数据校对")
     @RequestMapping(value = "check/info", method = RequestMethod.POST)
     public Result checkInfo(@ApiParam(value = "考试ID", required = true) @RequestParam Long examId,
                             @ApiParam(value = "课程代码") @RequestParam(required = false) String courseCode,
-                            @ApiParam(value = "试卷编号") @RequestParam(required = false) String paperNumber) {
+                            @ApiParam(value = "试卷编号") @RequestParam(required = false) String coursePaperId) {
         BasicExam exam = basicExamService.getById(examId);
-        return ResultUtil.ok(markStudentService.checkInfo(exam));
+        return ResultUtil.ok(markStudentService.checkInfo(exam, courseCode, coursePaperId));
     }
 }

+ 9 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/scanexaminfo/AnswerScan.java

@@ -4,6 +4,7 @@ package com.qmth.teachcloud.mark.bean.scanexaminfo;
 public class AnswerScan {
 
 	private int courseCount;
+	private int paperNumberCount;
 	private int totalCount;
 	private int scannedCount;
 	public int getTotalCount() {
@@ -24,5 +25,12 @@ public class AnswerScan {
 	public void setCourseCount(int courseCount) {
 		this.courseCount = courseCount;
 	}
-	
+
+	public int getPaperNumberCount() {
+		return paperNumberCount;
+	}
+
+	public void setPaperNumberCount(int paperNumberCount) {
+		this.paperNumberCount = paperNumberCount;
+	}
 }

+ 21 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/ScanOmrTask.java

@@ -74,6 +74,11 @@ public class ScanOmrTask implements Serializable {
 
 	private Long updateTime;
 
+	@TableField(exist = false)
+	private String courseCode;
+	@TableField(exist = false)
+	private String coursePaperId;
+
 	public Long getId() {
 		return id;
 	}
@@ -186,6 +191,22 @@ public class ScanOmrTask implements Serializable {
 		this.pages = pages;
 	}
 
+	public String getCourseCode() {
+		return courseCode;
+	}
+
+	public void setCourseCode(String courseCode) {
+		this.courseCode = courseCode;
+	}
+
+	public String getCoursePaperId() {
+		return coursePaperId;
+	}
+
+	public void setCoursePaperId(String coursePaperId) {
+		this.coursePaperId = coursePaperId;
+	}
+
 	@Override
     public String toString() {
         return "ScanOmrTask{" +

+ 39 - 20
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/ScanPaper.java

@@ -2,6 +2,7 @@ package com.qmth.teachcloud.mark.entity;
 
 import java.io.Serializable;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@@ -60,6 +61,11 @@ public class ScanPaper implements Serializable {
     //人工绑定确认
     private Boolean assignConfirmed;
 
+    @TableField(exist = false)
+    private String courseCode;
+    @TableField(exist = false)
+    private String coursePaperId;
+
     public Long getId() {
         return id;
     }
@@ -145,24 +151,6 @@ public class ScanPaper implements Serializable {
         this.updateTime = updateTime;
     }
 
-    @Override
-    public String toString() {
-        return "ScanPaper{" +
-            "id=" + id +
-            ", examId=" + examId +
-            ", cardNumber=" + cardNumber +
-            ", number=" + number +
-            ", pageCount=" + pageCount +
-            ", mismatch=" + mismatch +
-            ", assigned=" + assigned +
-            ", questionFilled=" + questionFilled +
-            ", creatorId=" + creatorId +
-            ", updaterId=" + updaterId +
-            ", createTime=" + createTime +
-            ", updateTime=" + updateTime +
-        "}";
-    }
-
 	public Boolean getAssignConfirmed() {
 		return assignConfirmed;
 	}
@@ -171,6 +159,37 @@ public class ScanPaper implements Serializable {
 		this.assignConfirmed = assignConfirmed;
 	}
 
-    
-    
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getCoursePaperId() {
+        return coursePaperId;
+    }
+
+    public void setCoursePaperId(String coursePaperId) {
+        this.coursePaperId = coursePaperId;
+    }
+
+    @Override
+    public String toString() {
+        return "ScanPaper{" +
+                "id=" + id +
+                ", examId=" + examId +
+                ", cardNumber=" + cardNumber +
+                ", number=" + number +
+                ", pageCount=" + pageCount +
+                ", mismatch=" + mismatch +
+                ", assigned=" + assigned +
+                ", questionFilled=" + questionFilled +
+                ", creatorId=" + creatorId +
+                ", updaterId=" + updaterId +
+                ", createTime=" + createTime +
+                ", updateTime=" + updateTime +
+                "}";
+    }
 }

+ 3 - 2
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkPaperMapper.java

@@ -36,7 +36,8 @@ public interface MarkPaperMapper extends BaseMapper<MarkPaper> {
 
 	IPage<ArchiveScoreVo> scoreList(Page<ArchiveScoreVo> page, @Param("req") ArchiveScoreQuery query, @Param("dpr") DataPermissionRule dpr);
 
-    int getCountByExam(@Param("examId") Long examId, @Param("dpr") DataPermissionRule dpr);
+    int getCourseCount(@Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("coursePaperId") String coursePaperId, @Param("dpr") DataPermissionRule dpr);
+    int getPaperNumberCount(@Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("coursePaperId") String coursePaperId, @Param("dpr") DataPermissionRule dpr);
 
-    List<MarkPaper> listMarkPaper(@Param("examId") Long examId, @Param("dpr") DataPermissionRule dpr);
+    List<MarkPaper> listMarkPaper(@Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("coursePaperId") String coursePaperId, @Param("dpr") DataPermissionRule dpr);
 }

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

@@ -23,5 +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);
+    int countPackageCode(@Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("coursePaperId") String coursePaperId, @Param("dpr") DataPermissionRule dpr);
 }

+ 5 - 4
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkPaperService.java

@@ -34,7 +34,8 @@ public interface MarkPaperService extends IService<MarkPaper> {
 
     List<MarkPaper> listQualityMarkPaperByStatus(MarkPaperStatus formal, int uploadCount);
 
-    int getCountByExam(Long id, DataPermissionRule dpr);
+    int getCourseCount(Long id, String courseCode, String coursePaperId, DataPermissionRule dpr);
+    int getPaperNumberCount(Long id, String courseCode, String coursePaperId, DataPermissionRule dpr);
 
     IPage<CheckScoreListDto> listStudentScoreList(Long examId, String courseCode, String paperNumber, Integer pageNumber, Integer pageSize);
 
@@ -58,11 +59,11 @@ public interface MarkPaperService extends IService<MarkPaper> {
 
 	IPage<ArchiveScoreVo> scoreList(ArchiveScoreQuery query);
 
-    int getPackageCountByExamId(Long examId, DataPermissionRule dpr);
+    int getPackageCountByExamId(Long examId, String courseCode, String coursePaperId, DataPermissionRule dpr);
 
-    List<MarkPaper> listByExamId(Long examId, DataPermissionRule dpr);
+    List<MarkPaper> listByExamId(Long examId, String courseCode, String coursePaperId, DataPermissionRule dpr);
 
-    List<MarkPaper> listMarkPaper(Long examId, DataPermissionRule dpr);
+    List<MarkPaper> listMarkPaper(Long examId, String courseCode, String coursePaperId, DataPermissionRule dpr);
 
     void deleteByExamIdAndPaperNumber(Long examId, String paperNumber);
 }

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

@@ -47,13 +47,13 @@ public interface MarkStudentService extends IService<MarkStudent> {
 
     void updateSubjectiveStatusAndScore(Long examId, String paperNumber, SubjectiveStatus status, double score, String scoreList);
 
-    ScanExamInfoVo getScanExamInfo(BasicExam exam);
+    ScanExamInfoVo getScanExamInfo(BasicExam exam, String courseCode, String coursePaperId);
 
     IPage<StudentScoreDetailDto> pageStudentScore(Long examId, String paperNumber, String college, String className, String teacher, Integer filter, Boolean absent, Boolean breach, Double startScore, Double endScore, Double subScore, Integer objectiveScoreRateLt, String studentName, String studentCode, Integer pageNumber, Integer pageSize);
 
     List<SheetUrlDto> buildSheetUrls(Long studentId);
 
-    ScanExamCheckInfoVo checkInfo(BasicExam exam);
+    ScanExamCheckInfoVo checkInfo(BasicExam exam, String courseCode, String coursePaperId);
 
     /**
      * 根据考生当前绑定的paper刷新考生状态,需要在外部调用处对考生上锁

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

@@ -37,7 +37,7 @@ public interface ScanOmrTaskService extends IService<ScanOmrTask> {
 
 	void deleteByStudentId(Long examId, Long studentId);
 
-	int getCount(Long examId, OmrTaskStatus status, DataPermissionRule dpr);
+	int getCount(Long examId, OmrTaskStatus status, String courseCode, String coursePaperId, DataPermissionRule dpr);
 
 	List<ScanStudentDto> list(Long examId, OmrTaskStatus status, Long userId);
 

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

@@ -23,7 +23,7 @@ import com.qmth.teachcloud.mark.entity.ScanPackage;
  */
 public interface ScanPackageService extends IService<ScanPackage> {
 
-	int getCount(Long examId, DataPermissionRule dpr);
+	int getCount(Long examId, String courseCode, String coursePaperId, DataPermissionRule dpr);
 
     List<ScanPackage> listByExamIdAndCoursePaperIdAndPackageCode(Long examId, String coursePaperId, String packageCode);
 

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

@@ -25,7 +25,7 @@ public interface ScanPaperService extends IService<ScanPaper> {
 
 	void savePaperAndPages(ScanPaper paper, List<ScanPaperPage> pages);
 
-	int getAssignedCount(Long examId, Boolean checked, DataPermissionRule dpr);
+	int getAssignedCount(Long examId, Boolean checked, String courseCode, String coursePaperId, DataPermissionRule dpr);
 
     List<StudentPaperDetailDto> listStudentPaperDetail(Long studentId);
 

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

@@ -172,8 +172,13 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
     }
 
     @Override
-    public int getCountByExam(Long examId, DataPermissionRule dpr) {
-        return baseMapper.getCountByExam(examId, dpr);
+    public int getCourseCount(Long examId, String courseCode, String coursePaperId, DataPermissionRule dpr) {
+        return baseMapper.getCourseCount(examId, courseCode, coursePaperId, dpr);
+    }
+
+    @Override
+    public int getPaperNumberCount(Long examId, String courseCode, String coursePaperId, DataPermissionRule dpr) {
+        return baseMapper.getPaperNumberCount(examId, courseCode, coursePaperId, dpr);
     }
 
     @Override
@@ -304,8 +309,8 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
     }
 
     @Override
-    public int getPackageCountByExamId(Long examId, DataPermissionRule dpr) {
-        List<MarkPaper> markPaperList = this.listByExamId(examId, dpr);
+    public int getPackageCountByExamId(Long examId, String courseCode, String coursePaperId, DataPermissionRule dpr) {
+        List<MarkPaper> markPaperList = this.listByExamId(examId, courseCode, coursePaperId, dpr);
         List<String> packageCodes = new ArrayList<>();
         for (MarkPaper markPaper : markPaperList) {
             packageCodes.addAll(Arrays.asList(markPaper.getPackageCode().split(",")));
@@ -314,13 +319,13 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
     }
 
     @Override
-    public List<MarkPaper> listByExamId(Long examId, DataPermissionRule dpr) {
-        return this.listMarkPaper(examId, dpr);
+    public List<MarkPaper> listByExamId(Long examId, String courseCode, String coursePaperId, DataPermissionRule dpr) {
+        return this.listMarkPaper(examId, courseCode, coursePaperId, dpr);
     }
 
     @Override
-    public List<MarkPaper> listMarkPaper(Long examId, DataPermissionRule dpr) {
-        return this.baseMapper.listMarkPaper(examId, dpr);
+    public List<MarkPaper> listMarkPaper(Long examId, String courseCode, String coursePaperId, DataPermissionRule dpr) {
+        return this.baseMapper.listMarkPaper(examId, courseCode, coursePaperId, dpr);
     }
 
     @Override

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

@@ -31,6 +31,7 @@ import com.qmth.teachcloud.mark.utils.TaskLock;
 import com.qmth.teachcloud.mark.utils.TaskLockUtil;
 import io.lettuce.core.GeoArgs.Sort;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -84,6 +85,8 @@ public class MarkServiceImpl implements MarkService {
     ScanAnswerCardService scanAnswerCardService;
     @Resource
     TaskService taskService;
+    @Resource
+    TeachcloudCommonService teachcloudCommonService;
 
     /**
      * 某个评卷分组已申请的评卷任务数量
@@ -711,8 +714,8 @@ public class MarkServiceImpl implements MarkService {
         dto.setEnableAllZore(false);
         dto.setFileServer(null);
         dto.setUserName(user.getRealName());
-        dto.getSubject().setAnswerUrl(markPaper.getAnswerFilePath());
-        dto.getSubject().setPaperUrl(markPaper.getPaperFilePath());
+        dto.getSubject().setAnswerUrl(StringUtils.isBlank(markPaper.getAnswerFilePath()) ? null : teachcloudCommonService.filePreview(markPaper.getAnswerFilePath()));
+        dto.getSubject().setPaperUrl(StringUtils.isBlank(markPaper.getPaperFilePath()) ? null : teachcloudCommonService.filePreview(markPaper.getPaperFilePath()));
         dto.getSubject().setCode(markPaper.getPaperNumber());
         dto.getSubject().setName(markPaper.getCourseName());
         dto.setForceSpecialTag(false);

+ 26 - 19
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java

@@ -145,17 +145,18 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     }
 
     @Override
-    public ScanExamInfoVo getScanExamInfo(BasicExam exam) {
+    public ScanExamInfoVo getScanExamInfo(BasicExam exam, String courseCode, String coursePaperId) {
         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(), 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));
+        vo.getAnswerScan().setCourseCount(markPaperService.getCourseCount(exam.getId(), courseCode, coursePaperId, dpr));
+        vo.getAnswerScan().setPaperNumberCount(markPaperService.getPaperNumberCount(exam.getId(), courseCode, coursePaperId, dpr));
+        vo.getAnswerScan().setTotalCount(getCount(exam.getId(), null, courseCode, coursePaperId, dpr));
+        vo.getAnswerScan().setScannedCount(getCount(exam.getId(), ScanStatus.SCANNED, courseCode, coursePaperId, dpr));
+        vo.getPackageScan().setTotalCount(markPaperService.getPackageCountByExamId(exam.getId(), courseCode, coursePaperId, dpr));
+        vo.getPackageScan().setScannedCount(scanPackageService.getCount(exam.getId(), courseCode, coursePaperId, dpr));
         return vo;
     }
 
@@ -197,30 +198,36 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
         return sheetUrls;
     }
 
-    private int getCount(Long examId, ScanStatus status, DataPermissionRule dpr) {
+    private int getCount(Long examId, ScanStatus status, String courseCode, String coursePaperId, DataPermissionRule dpr) {
         MarkStudent markStudent = new MarkStudent();
         markStudent.setExamId(examId);
+        markStudent.setCourseCode(courseCode);
+        markStudent.setCoursePaperId(coursePaperId);
         markStudent.setScanStatus(status);
         return baseMapper.selectCountByQuery(markStudent, dpr);
     }
 
-    private int getOmrAbsentCount(Long examId, Boolean checked, DataPermissionRule dpr) {
+    private int getOmrAbsentCount(Long examId, Boolean checked, String courseCode, String coursePaperId, DataPermissionRule dpr) {
         MarkStudent markStudent = new MarkStudent();
         markStudent.setExamId(examId);
+        markStudent.setCourseCode(courseCode);
+        markStudent.setCoursePaperId(coursePaperId);
         markStudent.setOmrAbsent(true);
         markStudent.setOmrAbsentChecked(checked);
         return baseMapper.selectCountByQuery(markStudent, dpr);
     }
 
-    private int getIncompleteCount(Long examId, DataPermissionRule dpr) {
+    private int getIncompleteCount(Long examId, String courseCode, String coursePaperId, DataPermissionRule dpr) {
         MarkStudent markStudent = new MarkStudent();
         markStudent.setExamId(examId);
+        markStudent.setCourseCode(courseCode);
+        markStudent.setCoursePaperId(coursePaperId);
         markStudent.setIncomplete(true);
         return baseMapper.selectCountByQuery(markStudent, dpr);
     }
 
     @Override
-    public ScanExamCheckInfoVo checkInfo(BasicExam exam) {
+    public ScanExamCheckInfoVo checkInfo(BasicExam exam, String courseCode, String coursePaperId) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(sysUser.getSchoolId(), sysUser.getId(), ServletUtil.getRequest().getServletPath());
         Long examId = exam.getId();
@@ -228,15 +235,15 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
         vo.setId(exam.getId());
         vo.setName(exam.getName());
         CheckTask ct = vo.getCheckTask();
-        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));
+        ct.setUnexistCount(getCount(examId, ScanStatus.UNEXIST, courseCode, coursePaperId, dpr));
+        ct.setUnexistCheckedCount(getCount(examId, ScanStatus.MANUAL_ABSENT, courseCode, coursePaperId, dpr));
+        ct.setAssignedCount(scanPaperService.getAssignedCount(examId, false, courseCode, coursePaperId, dpr));
+        ct.setAssignedCheckedCount(scanPaperService.getAssignedCount(examId, true, courseCode, coursePaperId, dpr));
+        ct.setAbsentCheckCount(getOmrAbsentCount(examId, false, courseCode, coursePaperId, dpr));
+        ct.setAbsentCheckedCount(getOmrAbsentCount(examId, true, courseCode, coursePaperId, dpr));
+        ct.setObjectiveCheckCount(scanOmrTaskService.getCount(examId, OmrTaskStatus.WAITING, courseCode, coursePaperId, dpr));
+        ct.setObjectiveCheckedCount(scanOmrTaskService.getCount(examId, OmrTaskStatus.PROCESSED, courseCode, coursePaperId, dpr));
+        ct.setIncompleteCount(getIncompleteCount(examId, courseCode, coursePaperId, dpr));
         return vo;
     }
 

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

@@ -594,9 +594,11 @@ public class ScanOmrTaskServiceImpl extends ServiceImpl<ScanOmrTaskMapper, ScanO
     }
 
     @Override
-    public int getCount(Long examId, OmrTaskStatus status, DataPermissionRule dpr) {
+    public int getCount(Long examId, OmrTaskStatus status, String courseCode, String coursePaperId, DataPermissionRule dpr) {
         ScanOmrTask scanOmrTask = new ScanOmrTask();
         scanOmrTask.setExamId(examId);
+        scanOmrTask.setCourseCode(courseCode);
+        scanOmrTask.setCoursePaperId(coursePaperId);
         scanOmrTask.setStatus(status);
         return baseMapper.countOmrTask(scanOmrTask, dpr);
     }

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

@@ -54,8 +54,8 @@ public class ScanPackageServiceImpl extends ServiceImpl<ScanPackageMapper, ScanP
     private TeachcloudCommonService teachcloudCommonService;
 
     @Override
-    public int getCount(Long examId, DataPermissionRule dpr) {
-        return baseMapper.countPackageCode(examId, dpr);
+    public int getCount(Long examId, String courseCode, String coursePaperId, DataPermissionRule dpr) {
+        return baseMapper.countPackageCode(examId, courseCode, coursePaperId, dpr);
     }
 
     @Override

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

@@ -1,13 +1,11 @@
 package com.qmth.teachcloud.mark.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 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;
 import com.qmth.teachcloud.mark.bean.papermigrate.PaperMigrateDomain;
@@ -95,9 +93,11 @@ public class ScanPaperServiceImpl extends ServiceImpl<ScanPaperMapper, ScanPaper
     }
 
     @Override
-    public int getAssignedCount(Long examId, Boolean checked, DataPermissionRule dpr) {
+    public int getAssignedCount(Long examId, Boolean checked, String courseCode, String coursePaperId, DataPermissionRule dpr) {
         ScanPaper scanPaper = new ScanPaper();
         scanPaper.setExamId(examId);
+        scanPaper.setCourseCode(courseCode);
+        scanPaper.setCoursePaperId(coursePaperId);
         scanPaper.setAssigned(true);
         scanPaper.setAssignConfirmed(checked);
         return baseMapper.countAssigned(scanPaper, dpr);

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

@@ -162,10 +162,39 @@
         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
+    <select id="getCourseCount" resultType="java.lang.Integer">
+        select count(distinct mp.course_code) from mark_paper mp left join sys_user su on mp.user_id = su.id
         <where>
             and mp.exam_id = #{examId}
+            <if test="courseCode != null and courseCode != ''">
+                AND mp.course_code = #{courseCode}
+            </if>
+            <if test="coursePaperId != null and coursePaperId != ''">
+                AND mp.course_paper_id = #{coursePaperId}
+            </if>
+            <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="getPaperNumberCount" resultType="java.lang.Integer">
+        select count(distinct mp.paper_number) from mark_paper mp left join sys_user su on mp.user_id = su.id
+        <where>
+            and mp.exam_id = #{examId}
+            <if test="courseCode != null and courseCode != ''">
+                AND mp.course_code = #{courseCode}
+            </if>
+            <if test="coursePaperId != null and coursePaperId != ''">
+                AND mp.course_paper_id = #{coursePaperId}
+            </if>
             <if test="dpr != null">
                 <if test="dpr.requestUserId != null">
                     AND mp.user_id = #{dpr.requestUserId}
@@ -184,6 +213,12 @@
             left join sys_user su on mp.user_id = su.id
         <where>
             mp.exam_id = #{examId}
+            <if test="courseCode != null and courseCode != ''">
+                AND mp.course_code = #{courseCode}
+            </if>
+            <if test="coursePaperId != null and coursePaperId != ''">
+                AND mp.course_paper_id = #{coursePaperId}
+            </if>
             <if test="dpr != null">
                 <if test="dpr.requestUserId != null">
                     AND mp.user_id = #{dpr.requestUserId}

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

@@ -407,6 +407,12 @@
         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.courseCode != null and markStudent.courseCode != ''">
+                and ms.course_code = #{markStudent.courseCode}
+            </if>
+            <if test="markStudent.coursePaperId != null and markStudent.coursePaperId != ''">
+                and ms.course_paper_id = #{markStudent.coursePaperId}
+            </if>
             <if test="markStudent.scanStatus != null">
                 and ms.scan_status = #{markStudent.scanStatus}
             </if>

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

@@ -86,7 +86,7 @@
 			<if test="scanOmrTask.status != null">
 				AND sot.status = #{scanOmrTask.status}
 			</if>
-			<if test="dpr != null">
+			<if test="scanOmrTask.courseCode != null or scanOmrTask.coursePaperId != null or dpr != null">
 				AND EXISTS( SELECT
 						1
 					FROM
@@ -94,14 +94,22 @@
 							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 test="scanOmrTask.courseCode != null">
+							AND ms.course_code = #{scanOmrTask.courseCode}
 						</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 test="scanOmrTask.coursePaperId != null">
+							AND ms.course_paper_id = #{scanOmrTask.coursePaperId}
+						</if>
+						<if test="dpr != null">
+							<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>
 						)
 					</if>

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

@@ -51,10 +51,17 @@
 			scan_package sp
 				JOIN
 			mark_paper mp ON sp.exam_id = mp.exam_id
+			    AND sp.course_paper_id = mp.course_paper_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="courseCode != null and courseCode != ''">
+				AND mp.course_code = #{courseCode}
+			</if>
+			<if test="coursePaperId != null and coursePaperId != ''">
+				AND mp.course_paper_id = #{coursePaperId}
+			</if>
 			<if test="dpr != null">
 				<if test="dpr.requestUserId != null">
 					AND mp.user_id = #{dpr.requestUserId}

+ 16 - 8
teachcloud-mark/src/main/resources/mapper/ScanPaperMapper.xml

@@ -86,7 +86,7 @@
             <if test="scanPaper.assignConfirmed != null">
                 AND sp.assign_confirmed = #{scanPaper.assignConfirmed}
             </if>
-            <if test="dpr != null">
+            <if test="scanPaper.courseCode != null or scanPaper.coursePaperId != null or dpr != null">
                 AND EXISTS( SELECT
                         1
                     FROM
@@ -94,14 +94,22 @@
                             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 test="scanPaper.courseCode != null">
+                            AND ms.course_code = #{scanPaper.courseCode}
                         </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 test="scanPaper.coursePaperId != null">
+                            AND ms.course_paper_id = #{scanPaper.coursePaperId}
+                        </if>
+                        <if test="dpr != null">
+                            <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>
                 )
             </if>