Kaynağa Gözat

评卷管理/成绩检查增加导出

wangliang 1 yıl önce
ebeveyn
işleme
d78f9c95f7

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

@@ -265,9 +265,9 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
         Objects.requireNonNull(markPaper, "未找到评卷信息");
         BasicCourse basicCourse = basicCourseService.getById(markPaper.getCourseId());
         String courseInfo = String.format("%s[%s],试卷编号%s,", basicCourse.getName(), basicCourse.getCode(), markPaper.getPaperNumber());
-        if (Objects.nonNull(markPaper.getStatus()) && markPaper.getStatus() != MarkPaperStatus.FINISH) {
-            throw ExceptionResultEnum.ERROR.exception(courseInfo + "评卷任务未完成,请完成评卷任务并检查成绩后再导出");
-        }
+//        if (Objects.nonNull(markPaper.getStatus()) && markPaper.getStatus() != MarkPaperStatus.FINISH) {
+//            throw ExceptionResultEnum.ERROR.exception(courseInfo + "评卷任务未完成,请完成评卷任务并检查成绩后再导出");
+//        }
         // 主观题是否全部分组
         List<MarkQuestion> markQuestionObjectiveList = markQuestionService.listQuestionByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, null, true);
         if (CollectionUtils.isNotEmpty(markQuestionObjectiveList)) {
@@ -282,15 +282,15 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
         if (CollectionUtils.isNotEmpty(markQuestionSubjectiveList)) {
             // 识别缺考未确认完,不能结束
             if (markStudentService.countOmrAbsentStudent(examId, paperNumber, markPaper.getPaperType(), false, teachClassName) > 0) {
-                throw ExceptionResultEnum.ERROR.exception(courseInfo + "识别缺考记录未核对,请在扫描客户端进行确认操作后再导出成绩");
+                throw ExceptionResultEnum.ERROR.exception(courseInfo + "请登录扫描客户端完成缺考检查处理任务");
             }
             // 人工绑定未做完,不能结束
             if (markStudentService.getAssignedCount(examId, false, markPaper.getCourseId(), markPaper.getCoursePaperId(), MarkPaperStatus.FORMAL, null, teachClassName) > 0) {
-                throw ExceptionResultEnum.ERROR.exception(courseInfo + "人工绑定记录未核对,请在扫描客户端进行确认操作后再导出成绩");
+                throw ExceptionResultEnum.ERROR.exception(courseInfo + "请登录扫描客户端完成人工绑定检查处理任务");
             }
             // 客观题检查未做完,不能结束
             if (scanOmrTaskService.getFinishStudentCountByExamAndUserId(examId, markPaper.getCourseId(), markPaper.getCoursePaperId(), OmrTaskStatus.WAITING.name(), null, teachClassName) > 0) {
-                throw ExceptionResultEnum.ERROR.exception(courseInfo + "客观题存在识别嫌疑需要人工确认,请在扫描客户端进行确认操作后再导出成绩");
+                throw ExceptionResultEnum.ERROR.exception(courseInfo + "请登录扫描客户端完成客观题检查处理任务");
             }
         }
         return true;

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

@@ -56,13 +56,13 @@ import com.qmth.teachcloud.mark.dto.mark.score.*;
 import com.qmth.teachcloud.mark.entity.*;
 import com.qmth.teachcloud.mark.enums.ExamStatus;
 import com.qmth.teachcloud.mark.enums.LockType;
+import com.qmth.teachcloud.mark.enums.MarkTaskStatus;
 import com.qmth.teachcloud.mark.enums.OmrTaskStatus;
 import com.qmth.teachcloud.mark.lock.LockService;
 import com.qmth.teachcloud.mark.mapper.MarkStudentMapper;
 import com.qmth.teachcloud.mark.params.MarkHeaderResult;
 import com.qmth.teachcloud.mark.service.*;
 import com.qmth.teachcloud.mark.utils.BatchGetDataUtil;
-import com.qmth.teachcloud.mark.utils.BigDecimalUtils;
 import com.qmth.teachcloud.mark.utils.Calculator;
 import com.qmth.teachcloud.mark.utils.ScoreCalculateUtil;
 import org.apache.commons.collections4.CollectionUtils;
@@ -161,6 +161,9 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     @Resource
     private MarkTrackService markTrackService;
 
+    @Resource
+    MarkTaskService markTaskService;
+
     @Override
     public List<String> listClassByExamIdAndCourseCode(Long examId, String paperNumber) {
         MarkStudentQuery markStudentQuery = new MarkStudentQuery();
@@ -338,6 +341,15 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
         Set<StudentScoreDetailExportDto> studentScoreDetailExportDtoSet = new HashSet<>();
         for (StudentScoreDetailDto scoreDetailDto : studentScoreDetailDtoList) {
             studentScoreDetailExportDtoSet.add(new StudentScoreDetailExportDto(scoreDetailDto));
+
+            List<MarkTask> markTaskList = markTaskService.list(new QueryWrapper<MarkTask>().lambda().eq(MarkTask::getStudentId, scoreDetailDto.getStudentId()));
+            if (!CollectionUtils.isEmpty(markTaskList)) {
+                for (MarkTask m : markTaskList) {
+                    if (Objects.nonNull(m.getStatus()) && m.getStatus() != MarkTaskStatus.MARKED) {
+                        throw ExceptionResultEnum.ERROR.exception("[" + scoreDetailDto.getStudentName() + "]评卷任务未完成,请完成评卷任务并检查成绩后再导出");
+                    }
+                }
+            }
             // 原图
             scoreDetailDto.setSheetUrls(buildSheetUrls(scoreDetailDto.getStudentId()));
             scoreDetailDto.setSheetPath(null);
@@ -1757,8 +1769,8 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     public void updateByBasicExamStudent(BasicExamStudent basicExamStudent, MarkPaper markPaper, Set<String> secretNumberSet) {
         MarkStudent markStudent = this.findByExamIdAndPaperNumberAndStudentCode(basicExamStudent.getExamId(), basicExamStudent.getPaperNumber(), basicExamStudent.getStudentCode());
         if (markStudent == null) {
-            if(MarkPaperStatus.FINISH.equals(markPaper.getStatus())){
-                throw ExceptionResultEnum.ERROR.exception("试卷编号["+markPaper.getPaperNumber()+"]已结束阅卷,不允许新增考生");
+            if (MarkPaperStatus.FINISH.equals(markPaper.getStatus())) {
+                throw ExceptionResultEnum.ERROR.exception("试卷编号[" + markPaper.getPaperNumber() + "]已结束阅卷,不允许新增考生");
             }
             markStudent = new MarkStudent(SystemConstant.getDbUuid(), basicExamStudent.getExamId(), basicExamStudent.getId(), basicExamStudent.getCourseId(), basicExamStudent.getPaperNumber(), markPaper.getCoursePaperId(), markPaper.getPaperType(), basicExamStudent.getStudentCode(), "", basicExamStudent.getExamPlace(), basicExamStudent.getExamRoom(), basicExamStudent.getExamStartTime(), basicExamStudent.getExamEndTime(), markPaper.getUserId());
             if (markStudent.getSecretNumber() == null) {