@@ -162,10 +162,12 @@ public interface MarkStudentMapper extends BaseMapper<MarkStudent> {
/**
* 查找需要统分考生
*
- * @param limit
+ * @param
* @return
*/
IPage<MarkStudent> findNeedScoreCalculateStudent(@Param("page") Page<MarkStudent> page);
BasicExam getBasicExamById(@Param("examId") Long examId);
+
+ int countUnmarkByExamIdAndPaperNumber(@Param("examId") Long examId, @Param("paperNumber") String paperNumber);
}
@@ -303,4 +303,6 @@ public interface MarkStudentService extends IService<MarkStudent> {
String getCardContent(MarkStudentVo markStudent);
Set<Long> listStudentIds(Long examId, String paperNumber, List<String> classNames);
+ int countUnmarkByExamIdAndPaperNumber(Long examId, String paperNumber);
@@ -255,7 +255,8 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
continue;
// 未缺考、未违纪且已上传图片的考生全部评完
- else if (markStudentService.countByExamIdAndPaperNumberAndMarkStatus(examId, paperNumber, SubjectiveStatus.UNMARK) > 0) {
+ else if (markStudentService.countByExamIdAndPaperNumberAndMarkStatus(examId, paperNumber, SubjectiveStatus.UNMARK) > 0
+ || markStudentService.countUnmarkByExamIdAndPaperNumber(examId, paperNumber) > 0) {
stringJoiner.add(courseInfo + "考生正在统分中,无法结束评卷");
@@ -2744,4 +2744,9 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
List<MarkStudent> students = this.list(queryWrapper);
return students.stream().map(MarkStudent::getId).collect(Collectors.toSet());
+ @Override
+ public int countUnmarkByExamIdAndPaperNumber(Long examId, String paperNumber) {
+ return this.baseMapper.countUnmarkByExamIdAndPaperNumber(examId, paperNumber);
+ }
@@ -1096,4 +1096,28 @@
<select id="getBasicExamById" resultType="com.qmth.teachcloud.common.entity.BasicExam">
select * from basic_exam be where be.id = #{examId}
</select>
+ <select id="countUnmarkByExamIdAndPaperNumber" resultType="java.lang.Integer">
+ SELECT
+ COUNT(1)
+ FROM
+ (SELECT
+ mt.student_id,
+ SUM(CASE
+ WHEN status = 'MARKED' THEN 0
+ ELSE 1
+ END) aa
+ mark_task mt
+ WHERE
+ mt.exam_id = #{examId} AND mt.paper_number = #{paperNumber}
+ GROUP BY mt.student_id
+ HAVING aa = 0
+ AND EXISTS( SELECT
+ 1
+ mark_student ms
+ mt.student_id = ms.id
+ AND ms.subjective_status = 'UNMARK')) a
+ </select>
</mapper>