Browse Source

fix:教研分析-处理客观题识别结果少于试卷结构的情况

caozixuan 10 tháng trước cách đây
mục cha
commit
f8d74a5fc8

+ 26 - 11
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/OpenApiServiceImpl.java

@@ -22,10 +22,7 @@ import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -50,12 +47,6 @@ public class OpenApiServiceImpl implements OpenApiService {
     @Resource
     private GradeModuleEvaluationService gradeModuleEvaluationService;
 
-    @Resource
-    ExamTaskService examTaskService;
-
-    @Resource
-    private TSyncExamStudentScoreService tSyncExamStudentScoreService;
-
     @Resource
     private GradeBatchStudentClazzService gradeBatchStudentClazzService;
 
@@ -211,6 +202,9 @@ public class OpenApiServiceImpl implements OpenApiService {
         // 客观题架构
         List<MarkQuestion> os = markQuestionService.listByExamIdAndPaperNumberAndPaperType(examId, paperNumber,
                 paperType, true);
+        final String link = SystemConstant.HYPHEN;
+        Set<String> osk = os.stream().map(e -> e.getMainNumber() + link + e.getSubNumber()).collect(Collectors.toSet());
+
         // 主观题结构
         List<MarkQuestion> ss = markQuestionService.listByExamIdAndPaperNumberAndPaperType(examId, paperNumber,
                 paperType, false);
@@ -225,7 +219,8 @@ public class OpenApiServiceImpl implements OpenApiService {
             examStudentScore.setPaperType(paperType);
             examStudentScore.setCollege(e.getCollegeName());
             examStudentScore.setMajor(SystemConstant.strNotNull(e.getMajorName()) ? e.getMajorName() : "未知专业");
-            examStudentScore.setClassName(SystemConstant.strNotNull(e.getTeachClassName()) ? e.getTeachClassName() : "未知班级");
+            examStudentScore.setClassName(
+                    SystemConstant.strNotNull(e.getTeachClassName()) ? e.getTeachClassName() : "未知班级");
 
             List<GradeBatchStudentClazz> gradeBatchStudentClasses = gradeBatchStudentClazzList.isEmpty() ?
                     null :
@@ -261,6 +256,9 @@ public class OpenApiServiceImpl implements OpenApiService {
             List<ExamStudentScore.TopicInfo> subjectiveScoreDetail;
             if (CollectionUtils.isNotEmpty(objectiveScoreList)) {
                 objectiveScoreDetail = objectiveScoreList.stream().flatMap(ol -> {
+                    String key = ol.getMainNumber() + link + ol.getSubNumber();
+                    osk.remove(key);
+
                     ExamStudentScore.TopicInfo topicInfo = new ExamStudentScore.TopicInfo();
                     topicInfo.setMainNumber(ol.getMainNumber());
                     topicInfo.setSubNumber(String.valueOf(ol.getSubNumber()));
@@ -268,6 +266,23 @@ public class OpenApiServiceImpl implements OpenApiService {
                     topicInfo.setScore(ol.getScoreString());
                     return Stream.of(topicInfo);
                 }).collect(Collectors.toList());
+
+                // 如果考生作答的客观题数量小于试卷结构的,则补充#作为考生作答
+                if (CollectionUtils.isNotEmpty(osk)) {
+                    for (String key : osk) {
+                        String[] keyArray = key.split(link);
+                        Integer mainNumber = Integer.parseInt(keyArray[0]);
+                        String subNumber = keyArray[1];
+
+                        ExamStudentScore.TopicInfo topicInfo = new ExamStudentScore.TopicInfo();
+                        topicInfo.setMainNumber(mainNumber);
+                        topicInfo.setSubNumber(subNumber);
+                        topicInfo.setAnswer("#");
+                        topicInfo.setScore("0");
+                        objectiveScoreDetail.add(topicInfo);
+                    }
+                }
+
                 examStudentScore.setObjectiveScoreDetail(objectiveScoreDetail);
             }