浏览代码

3.3.0 fix

xiaofei 1 年之前
父节点
当前提交
d4be7157e8
共有 19 个文件被更改,包括 151 次插入32 次删除
  1. 44 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskDetailServiceImpl.java
  2. 1 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/SsoServiceImpl.java
  3. 0 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/SysController.java
  4. 3 4
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/userPush/SpecialPrivilegeEnum.java
  5. 0 2
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java
  6. 2 2
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkPaperMapper.java
  7. 1 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkStudentMapper.java
  8. 2 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkPaperService.java
  9. 2 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkQuestionService.java
  10. 2 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkService.java
  11. 2 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkStudentService.java
  12. 2 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/ScanAnswerCardService.java
  13. 15 3
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkPaperServiceImpl.java
  14. 10 2
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkQuestionServiceImpl.java
  15. 9 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkServiceImpl.java
  16. 13 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java
  17. 0 1
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkTaskServiceImpl.java
  18. 9 0
      teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanAnswerCardServiceImpl.java
  19. 34 10
      teachcloud-mark/src/main/resources/mapper/MarkPaperMapper.xml

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

@@ -25,6 +25,7 @@ import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.ExamTaskUtil;
 import com.qmth.teachcloud.common.util.RedisUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
+import com.qmth.teachcloud.mark.service.MarkService;
 import com.qmth.teachcloud.mark.service.ScanPaperService;
 import org.activiti.engine.TaskService;
 import org.activiti.engine.task.Task;
@@ -90,6 +91,8 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
     private ScanPaperService scanPaperService;
     @Resource
     private BasicRoleDataPermissionService basicRoleDataPermissionService;
+    @Resource
+    private MarkService markService;
 
     @Transactional
     @Override
@@ -472,7 +475,7 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
                     }
                 }
 
-                // 已打印任务,必须先作废,未打印任务,必须先撤回。才允许打回
+                // 已打印任务,必须先作废,未打印任务,必须先撤回。才允许打回
                 long count = examDetailList.stream().filter(m -> (ExamDetailStatusEnum.FINISH.equals(m.getStatus()) && m.getNormal()) || ExamDetailStatusEnum.WAITING.equals(m.getStatus())).count();
                 if (count > 0) {
                     throw ExceptionResultEnum.ERROR.exception("印刷任务有已打印且未作废或者未撤回数据,无法打回");
@@ -561,6 +564,10 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
             updateWrapper.lambda().set(ExamTask::getStatus, ExamStatusEnum.SUBMIT).eq(ExamTask::getId, examTaskDetail.getExamTaskId());
             examTaskService.update(updateWrapper);
         }
+
+        // 删除阅卷数据
+        markService.deleteInitMarkData(examTask.getExamId(), examTask.getPaperNumber());
+
         mapVar.put(SystemConstant.SUCCESS, true);
         return mapVar;
     }
@@ -640,6 +647,39 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
     public boolean cancel(Long id, String cancelRemark) {
         ExamTask examTask = examTaskService.getById(id);
         String paperNumber = examTask.getPaperNumber();
+
+        List<ExamDetail> examDetailList = examDetailService.listByCourseCodeAndPaperNumber(examTask.getSchoolId(), examTask.getExamId(), examTask.getCourseCode(), examTask.getPaperNumber());
+        if (CollectionUtils.isNotEmpty(examDetailList)) {
+            ExamTaskDetail taskDetail = this.getByExamTaskId(id);
+            if (StringUtils.isNotBlank(taskDetail.getExposedPaperType())) {
+                List<Long> examDetailIds = examDetailList.stream().map(ExamDetail::getId).collect(Collectors.toList());
+                QueryWrapper<ExamDetailCourse> queryWrapper = new QueryWrapper<>();
+                queryWrapper.lambda().in(ExamDetailCourse::getExamDetailId, examDetailIds);
+                List<ExamDetailCourse> examDetailCourseList = examDetailCourseService.list(queryWrapper);
+                for (ExamDetailCourse examDetailCourse : examDetailCourseList) {
+                    // 考场内任一课程有扫描数据,不允许打回
+                    boolean isScanPaper = scanPaperService.isScanByExamIdAndPaperNumber(examTask.getExamId(), examDetailCourse.getPaperNumber());
+                    if (isScanPaper) {
+                        throw ExceptionResultEnum.ERROR.exception("有课程已开始扫描,无法打回");
+                    }
+                }
+
+                // 已打印任务,必须先作废,未打印任务,必须先撤回。才允许打回
+                long count = examDetailList.stream().filter(m -> (ExamDetailStatusEnum.FINISH.equals(m.getStatus()) && m.getNormal()) || ExamDetailStatusEnum.WAITING.equals(m.getStatus())).count();
+                if (count > 0) {
+                    throw ExceptionResultEnum.ERROR.exception("印刷任务有已打印且未作废或者未撤回数据,无法打回");
+                }
+            }
+
+            StringJoiner stringJoiner = new StringJoiner("_");
+            stringJoiner.add(String.valueOf(examTask.getExamId())).add(examTask.getPaperNumber()).add(String.valueOf(examDetailList.get(0).getExamStartTime())).add(String.valueOf(examDetailList.get(0).getExamEndTime()));
+            String key = stringJoiner.toString();
+            CreatePdfCacheUtil.deletePaperType(key);
+            for (ExamDetail examDetail : examDetailList) {
+                examDetailService.resetExamDetail(examDetail.getId(), true);
+            }
+        }
+
         String paperNumberCancel = paperNumber + "-作废";
         examTask.setPaperNumber(paperNumberCancel);
         examTask.setStatus(ExamStatusEnum.CANCEL);
@@ -688,6 +728,9 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
                 .eq(TBSyncTask::getPaperNumber, paperNumber);
         tbSyncTaskService.update(tbSyncTaskUpdateWrapper);
 
+        // 删除阅卷数据
+        markService.deleteInitMarkData(examTask.getExamId(), examTask.getPaperNumber());
+
         return true;
     }
 

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

@@ -52,8 +52,7 @@ public class SsoServiceImpl implements SsoService {
         try {
             SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
             SpecialPrivilegeEnum userSpecialPrivilege = sysUserService.findUserSpecialPrivilegeByUserId(sysUser.getId(), sysUser.getSchoolId());
-            if (SpecialPrivilegeEnum.UNIDENTIFIED.equals(userSpecialPrivilege)
-                    || SpecialPrivilegeEnum.SUBJECT_HEADER.equals(userSpecialPrivilege)) {
+            if (SpecialPrivilegeEnum.UNIDENTIFIED.equals(userSpecialPrivilege)) {
                 throw ExceptionResultEnum.ERROR.exception("该用户没有评卷员角色,无法登录");
             }
 

+ 0 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/SysController.java

@@ -842,7 +842,6 @@ public class SysController {
         if (!SpecialPrivilegeEnum.UNIDENTIFIED.equals(userSpecialPrivilege)) {
             if (SpecialPrivilegeEnum.COMPOSITE.equals(userSpecialPrivilege)) {
                 list.add(SpecialPrivilegeEnum.MARKER);
-                list.add(SpecialPrivilegeEnum.SUBJECT_HEADER);
             } else {
                 list.add(userSpecialPrivilege);
             }

+ 3 - 4
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/userPush/SpecialPrivilegeEnum.java

@@ -6,10 +6,9 @@ package com.qmth.teachcloud.common.enums.userPush;
  * @Date: 2021-10-27
  */
 public enum SpecialPrivilegeEnum {
-    SUBJECT_HEADER("科组长权限", "SubjectHeader", "S_", 4, "6"),
-    MARKER("评卷员权限", "Marker", "M_", 5, "5"),
-    COMPOSITE("复合权限", "Composite", null, 0, "5,6"),
-    TEACHER("内置老师权限", "teacher", null, 0, "10"),
+    MARKER("评卷员权限", "Marker", "M_", 5, "7"),
+    COMPOSITE("复合权限", "Composite", null, 0, "7,6"),
+    TEACHER("内置老师权限", "teacher", null, 0, "3"),
     UNIDENTIFIED("无特殊权限", "Unidentified", null, 0, null);
 
     SpecialPrivilegeEnum(String title, String id, String prefix, int value, String roleId) {

+ 0 - 2
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java

@@ -896,8 +896,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             result = SpecialPrivilegeEnum.COMPOSITE;
         } else if (markerRole) {
             result = SpecialPrivilegeEnum.MARKER;
-        } else if (leaderRole) {
-            result = SpecialPrivilegeEnum.SUBJECT_HEADER;
         } else {
             result = SpecialPrivilegeEnum.UNIDENTIFIED;
         }

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

@@ -28,13 +28,13 @@ public interface MarkPaperMapper extends BaseMapper<MarkPaper> {
 
     List<MarkPaper> listQualityMarkPaperByStatus(@Param("status") String status, @Param("uploadCount") int uploadCount);
 
-    IPage<CheckScoreListDto> listStudentScoreList(@Param("page") Page<CheckScoreListDto> page, @Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber);
+    IPage<CheckScoreListDto> listStudentScoreList(@Param("page") Page<CheckScoreListDto> page, @Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("dpr") DataPermissionRule dpr);
 
     IPage<MarkPaperPackageDto> listPackage(@Param("page") Page<MarkPaperPackageDto> page, @Param("examId") Long examId, @Param("coursePaperId") String coursePaperId, @Param("packageCode") String packageCode);
 
     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);
+	IPage<ArchiveScoreVo> scoreList(Page<ArchiveScoreVo> page, @Param("req") ArchiveScoreQuery query, @Param("dpr") DataPermissionRule dpr);
 
     int getCountByExam(@Param("examId") Long examId, @Param("dpr") DataPermissionRule dpr);
 

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

@@ -44,7 +44,7 @@ public interface MarkStudentMapper extends BaseMapper<MarkStudent> {
 
 	IPage<AnswerQueryVo> queryPage(Page<AnswerQueryVo> page, @Param("query") AnswerQueryDomain query, @Param("dpr") DataPermissionRule dpr);
 
-	List<String> querySummary(@Param("query") AnswerQueryDomain query);
+	List<String> querySummary(@Param("query") AnswerQueryDomain query, @Param("dpr") DataPermissionRule dpr);
 
 	List<Long> findIdByExamIdAndPaperNumberAndSubjectiveStatus(@Param("examId") Long examId,
 			@Param("paperNumber") String paperNumber, @Param("unmark") String unmark, @Param("marked") String marked);

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

@@ -63,4 +63,6 @@ public interface MarkPaperService extends IService<MarkPaper> {
     List<MarkPaper> listByExamId(Long examId, DataPermissionRule dpr);
 
     List<MarkPaper> listMarkPaper(Long examId, DataPermissionRule dpr);
+
+    void deleteByExamIdAndPaperNumber(Long examId, String paperNumber);
 }

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

@@ -58,4 +58,6 @@ public interface MarkQuestionService extends IService<MarkQuestion> {
     long countByExamIdAndPaperNumberAndObjectiveAndGroupNumberIsNull(Long examId, String paperNumber, boolean objective);
 
     List<MarkQuestion> listByExamIdAndPaperNumberAndPaperType(Long examId, String paperNumber, String paperType, Boolean objective);
+
+    void deleteByExamIdAndPaperNumber(Long examId, String paperNumber);
 }

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

@@ -84,5 +84,6 @@ public interface MarkService {
 	boolean applyTask(MarkTask t, Long userId);
 
 	boolean hasApplied(MarkTask t, Long userId);
-	
+
+    void deleteInitMarkData(Long examId, String paperNumber);
 }

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

@@ -120,4 +120,6 @@ public interface MarkStudentService extends IService<MarkStudent> {
     int countOmrAbsentStudent(Long examId, String paperNumber, String paperType, boolean isOmrAbsentConfirm);
 
     void scoreReportDownload(JSONObject jsonObject, HttpServletResponse response);
+
+    void deleteByExamIdAndPaperNumber(Long examId, String paperNumber);
 }

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

@@ -39,4 +39,6 @@ public interface ScanAnswerCardService extends IService<ScanAnswerCard> {
     ScanAnswerCard getByExamIdAndCoursePaperIdAndCardId(Long examId, String coursePaperId, Long cardId);
 
     List<ScanAnswerCard> listByExamIdAndPaperNumber(Long examId, String paperNumber);
+
+    void deleteByExamIdAndPaperNumber(Long examId, String paperNumber);
 }

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

@@ -68,7 +68,7 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
     public IPage<MarkSettingDto> listPaperSetting(Long examId, String courseCode, String paperNumber, Boolean groupStatus, Integer pageNumber, Integer pageSize) {
         Page<MarkSettingDto> page = new Page<>(pageNumber, pageSize);
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(sysUser.getSchoolId(), sysUser.getId(), ServletUtil.getRequest().getServletPath());
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(sysUser.getSchoolId(), sysUser.getId(), "/api/admin/mark/setting/list");
         IPage<MarkSettingDto> markSettingDtoIPage = this.baseMapper.listPaperSetting(page, sysUser.getSchoolId(), examId, courseCode, paperNumber, groupStatus, dpr);
         for (MarkSettingDto record : markSettingDtoIPage.getRecords()) {
             if (Objects.nonNull(record.getMarkMode())) {
@@ -174,8 +174,10 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
 
     @Override
     public IPage<CheckScoreListDto> listStudentScoreList(Long examId, String courseCode, String paperNumber, Integer pageNumber, Integer pageSize) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         Page<CheckScoreListDto> page = new Page<>(pageNumber, pageSize);
-        return this.baseMapper.listStudentScoreList(page, examId, courseCode, paperNumber);
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(sysUser.getSchoolId(), sysUser.getId(), ServletUtil.getRequest().getServletPath());
+        return this.baseMapper.listStudentScoreList(page, examId, courseCode, paperNumber, dpr);
     }
 
     @Override
@@ -283,8 +285,10 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
 
     @Override
     public IPage<ArchiveScoreVo> scoreList(ArchiveScoreQuery query) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         Page<ArchiveScoreVo> page = new Page<>(query.getPageNumber(), query.getPageSize());
-        IPage<ArchiveScoreVo> ret = this.baseMapper.scoreList(page, query);
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(sysUser.getSchoolId(), sysUser.getId(), ServletUtil.getRequest().getServletPath());
+        IPage<ArchiveScoreVo> ret = this.baseMapper.scoreList(page, query, dpr);
         if (CollectionUtils.isNotEmpty(ret.getRecords())) {
             for (ArchiveScoreVo vo : ret.getRecords()) {
                 double total = vo.getStudentCount() - vo.getAbsentCount();
@@ -315,4 +319,12 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
         return this.baseMapper.listMarkPaper(examId, dpr);
     }
 
+    @Override
+    public void deleteByExamIdAndPaperNumber(Long examId, String paperNumber) {
+        UpdateWrapper<MarkPaper> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().eq(MarkPaper::getExamId, examId)
+                .eq(MarkPaper::getPaperNumber, paperNumber);
+        this.remove(updateWrapper);
+    }
+
 }

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

@@ -4,13 +4,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.teachcloud.common.entity.MarkQuestion;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import com.qmth.teachcloud.common.service.TeachcloudCommonService;
 import com.qmth.teachcloud.common.util.FileStoreUtil;
 import com.qmth.teachcloud.mark.dto.mark.setting.MarkQuestionDto;
 import com.qmth.teachcloud.mark.entity.MarkPaper;
-import com.qmth.teachcloud.common.entity.MarkQuestion;
 import com.qmth.teachcloud.mark.mapper.MarkQuestionMapper;
 import com.qmth.teachcloud.mark.params.MarkObjectiveQuestionParams;
 import com.qmth.teachcloud.mark.params.MarkQuestionParams;
@@ -144,7 +144,7 @@ public class MarkQuestionServiceImpl extends ServiceImpl<MarkQuestionMapper, Mar
 
         // 修改分组题目总分
         Map<Integer, Double> collectGroupScoreMap = markQuestions.stream().filter(m -> m.getGroupNumber() != null).collect(Collectors.groupingBy(m -> m.getGroupNumber(), Collectors.summingDouble(m -> m.getTotalScore())));
-        if(MapUtils.isNotEmpty(collectGroupScoreMap)){
+        if (MapUtils.isNotEmpty(collectGroupScoreMap)) {
             for (Map.Entry<Integer, Double> entry : collectGroupScoreMap.entrySet()) {
                 markGroupService.updateTotalScore(examId, paperNumber, entry.getKey(), entry.getValue());
             }
@@ -288,6 +288,14 @@ public class MarkQuestionServiceImpl extends ServiceImpl<MarkQuestionMapper, Mar
         return this.list(queryWrapper);
     }
 
+    @Override
+    public void deleteByExamIdAndPaperNumber(Long examId, String paperNumber) {
+        UpdateWrapper<MarkQuestion> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().eq(MarkQuestion::getExamId, examId)
+                .eq(MarkQuestion::getPaperNumber, paperNumber);
+        this.remove(updateWrapper);
+    }
+
     @Override
     public List<MarkQuestion> listQuestionByExamIdAndPaperNumber(Long examId, String paperNumber, Boolean isObjective) {
         QueryWrapper<MarkQuestion> queryWrapper = new QueryWrapper<>();

+ 9 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkServiceImpl.java

@@ -81,7 +81,7 @@ public class MarkServiceImpl implements MarkService {
     @Resource
     LockService lockService;
     @Resource
-    TeachcloudCommonService teachcloudCommonService;
+    ScanAnswerCardService scanAnswerCardService;
     @Resource
     TaskService taskService;
 
@@ -1003,6 +1003,14 @@ public class MarkServiceImpl implements MarkService {
         return taskLock.exist(t.getStudentId(), t.getTaskNumber(), userId);
     }
 
+    @Override
+    public void deleteInitMarkData(Long examId, String paperNumber) {
+        markPaperService.deleteByExamIdAndPaperNumber(examId, paperNumber);
+        markStudentService.deleteByExamIdAndPaperNumber(examId, paperNumber);
+        scanAnswerCardService.deleteByExamIdAndPaperNumber(examId, paperNumber);
+        markQuestionService.deleteByExamIdAndPaperNumber(examId, paperNumber);
+    }
+
     @Override
     public SubmitResult saveTask(Long examId, String paperNumber, Integer groupNumber, Long userId, MarkResult result) {
         MarkUserGroup markUserGroup = markUserGroupService.getByExamIdAndPaperNumberAndGroupNumberAndUserId(examId, paperNumber, groupNumber, userId);

+ 13 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java

@@ -623,8 +623,11 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
 
     @Override
     public List<String> summary(AnswerQueryDomain query) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(sysUser.getSchoolId(), sysUser.getId(), ServletUtil.getRequest().getServletPath());
+
         // 不分页查询考生准考证号
-        return baseMapper.querySummary(query);
+        return baseMapper.querySummary(query, dpr);
     }
 
     @Transactional
@@ -933,6 +936,14 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
         }
     }
 
+    @Override
+    public void deleteByExamIdAndPaperNumber(Long examId, String paperNumber) {
+        UpdateWrapper<MarkStudent> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().eq(MarkStudent::getExamId, examId)
+                .eq(MarkStudent::getPaperNumber, paperNumber);
+        this.remove(updateWrapper);
+    }
+
     private void fillObjective(ScoreReportVo ret, Long examId, String paperNumber) {
         List<MarkQuestion> qs = markQuestionService.listQuestionByExamIdAndPaperNumber(examId, paperNumber);
         List<MarkStudent> students = listByExamIdAndPaperNumberAndAbsent(examId, paperNumber, false);
@@ -968,6 +979,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
             }
         }
         if (map.isEmpty()) {
+            ret.setObjective(list);
             return;
         }
 

+ 0 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkTaskServiceImpl.java

@@ -56,7 +56,6 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
         DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(sysUser.getSchoolId(), sysUser.getId(), ServletUtil.getRequest().getServletPath());
         IPage<MarkManageDto> markManageDtoIPage = this.baseMapper.listPaperManage(page, examId, courseCode, paperNumber, progressStatus, dpr);
         for (MarkManageDto record : markManageDtoIPage.getRecords()) {
-//            record.setStatus(markPaper == null ? null : markPaper.getStatus().name());
             record.setStatusDisplay(record.getStatus() == null ? null : record.getStatus().getName());
             record.setOmrAbsentCount(markStudentService.countOmrAbsentStudent(record.getExamId(), record.getPaperNumber(), record.getPaperType(), false));
             String percent = record.getTotalCount() > 0 ? new DecimalFormat("####.##").format(record.getMarkedCount() * 100.0 / record.getTotalCount()) : "0";

+ 9 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanAnswerCardServiceImpl.java

@@ -2,6 +2,7 @@ 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.Update;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -259,4 +260,12 @@ public class ScanAnswerCardServiceImpl extends ServiceImpl<ScanAnswerCardMapper,
         return this.list(queryWrapper);
     }
 
+    @Override
+    public void deleteByExamIdAndPaperNumber(Long examId, String paperNumber) {
+        UpdateWrapper<ScanAnswerCard> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().eq(ScanAnswerCard::getExamId, examId)
+                .eq(ScanAnswerCard::getPaperNumber, paperNumber);
+        this.remove(updateWrapper);
+    }
+
 }

+ 34 - 10
teachcloud-mark/src/main/resources/mapper/MarkPaperMapper.xml

@@ -88,20 +88,32 @@
     </select>
     <select id="listStudentScoreList" resultType="com.qmth.teachcloud.mark.dto.mark.score.CheckScoreListDto">
         SELECT
-            exam_id examId,
-            course_code courseCode,
-            course_name courseName,
-            paper_number paperNumber,
-            student_count studentCount,
-            upload_count uploadCount
+            mp.exam_id examId,
+            mp.course_code courseCode,
+            mp.course_name courseName,
+            mp.paper_number paperNumber,
+            mp.student_count studentCount,
+            mp.upload_count uploadCount
         FROM
-            mark_paper
-        where exam_id = #{examId}
+            mark_paper mp
+                LEFT JOIN sys_user su ON mp.user_id = su.id
+        where mp.exam_id = #{examId}
             <if test="courseCode != null and courseCode != ''">
-                AND course_code = #{courseCode}
+                AND mp.course_code = #{courseCode}
             </if>
             <if test="paperNumber != null and paperNumber != ''">
-                AND paper_number = #{paperNumber}
+                AND mp.paper_number = #{paperNumber}
+            </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>
     </select>
     <select id="listPackage" resultType="com.qmth.teachcloud.mark.dto.mark.score.MarkPaperPackageDto">
@@ -129,12 +141,24 @@
         FROM
             mark_paper t 
             left join mark_student s on t.exam_id=s.exam_id and t.course_paper_id=s.course_paper_id
+            left join sys_user su on t.user_id = su.id
         WHERE
             t.exam_id = #{req.examId}
             <if test="req.courseCode != null and req.courseCode != ''">
                 AND t.course_code = #{req.courseCode}
             </if>
             AND t.status = 'FINISH'
+            <if test="dpr != null">
+                <if test="dpr.requestUserId != null">
+                    AND t.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>
         group by t.course_code,t.course_name,t.paper_number
         ORDER BY t.course_code
     </select>