Selaa lähdekoodia

同步主观题分数

wangliang 2 vuotta sitten
vanhempi
commit
7a826faeb9

+ 22 - 6
themis-admin/src/main/java/com/qmth/themis/admin/api/TEExamStudentController.java

@@ -30,6 +30,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -95,6 +96,9 @@ public class TEExamStudentController {
     @Resource
     MqUtil mqUtil;
 
+    @Resource
+    TSyncExamStudentScoreService tSyncExamStudentScoreService;
+
     @ApiOperation(value = "考试明细查询接口")
     @RequestMapping(value = "/exam_record_detail/query", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "考生信息", response = ExamRecordDetailBean.class)})
@@ -429,19 +433,31 @@ public class TEExamStudentController {
                 .markResultQuery(new Page<>(pageNumber, pageSize), examId, examActivityId, identity, name, courseCode);
         if (Objects.nonNull(markResultDtoIPage)) {
             List<MarkResultDto> markResultDtoList = markResultDtoIPage.getRecords();
-            if (Objects.nonNull(markResultDtoList) && markResultDtoList.size() > 0) {
+            if (!CollectionUtils.isEmpty(markResultDtoList)) {
+                Set<String> examRecordIdsSet = new LinkedHashSet<>(markResultDtoList.size());
                 for (MarkResultDto markResultDto : markResultDtoList) {
                     if (Objects.nonNull(markResultDto.getExamId())) {
                         ExamCacheBean examCacheBean = teExamService.getExamCacheBean(markResultDto.getExamId());
                         TOeExamRecord tOeExamRecord = tOeExamRecordService
                                 .findMarkResult(markResultDto, examCacheBean.getRecordSelectStrategy());
                         if (Objects.nonNull(tOeExamRecord)) {
-                            markResultDto.setObjectiveScore(Objects.isNull(tOeExamRecord.getObjectiveScore()) ?
-                                    0 :
-                                    tOeExamRecord.getObjectiveScore());
+                            examRecordIdsSet.add(String.valueOf(tOeExamRecord.getId()));
+                            markResultDto.setObjectiveScore(Objects.isNull(tOeExamRecord.getObjectiveScore()) ? 0 : tOeExamRecord.getObjectiveScore());
                             markResultDto.setRecordId(tOeExamRecord.getId());
-                            markResultDto.setSumScore(
-                                    markResultDto.getObjectiveScore() + markResultDto.getSubjectiveScore());
+                        }
+                    }
+                }
+                Map<Long, MarkResultDto> markResultDtoMap = markResultDtoList.stream().collect(
+                        Collectors.toMap(MarkResultDto::getRecordId, Function.identity(), (dto1, dto2) -> dto1));
+
+                //获取云阅卷同步成绩
+                List<TSyncExamStudentScore> tSyncExamStudentScoreList = tSyncExamStudentScoreService.findByExamRecordIds(examRecordIdsSet);
+                if (!CollectionUtils.isEmpty(tSyncExamStudentScoreList)) {
+                    for (TSyncExamStudentScore t : tSyncExamStudentScoreList) {
+                        MarkResultDto markResultDto = markResultDtoMap.get(Long.parseLong(t.getExamNumber()));
+                        if (Objects.nonNull(markResultDto)) {
+                            markResultDto.setSubjectiveScore(Objects.isNull(t.getSubjectiveScore()) ? 0 : t.getSubjectiveScore());
+                            markResultDto.setSumScore(markResultDto.getObjectiveScore() + markResultDto.getSubjectiveScore());
                         }
                     }
                 }

+ 10 - 0
themis-business/src/main/java/com/qmth/themis/business/service/TSyncExamStudentScoreService.java

@@ -3,6 +3,9 @@ package com.qmth.themis.business.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.themis.business.entity.TSyncExamStudentScore;
 
+import java.util.List;
+import java.util.Set;
+
 /**
  * <p>
  * 同步云阅卷考生成绩表 服务类
@@ -13,4 +16,11 @@ import com.qmth.themis.business.entity.TSyncExamStudentScore;
  */
 public interface TSyncExamStudentScoreService extends IService<TSyncExamStudentScore> {
 
+    /**
+     * 根据考试ids查找
+     *
+     * @param examRecordIds
+     * @return
+     */
+    public List<TSyncExamStudentScore> findByExamRecordIds(Set<String> examRecordIds);
 }

+ 16 - 0
themis-business/src/main/java/com/qmth/themis/business/service/impl/TSyncExamStudentScoreServiceImpl.java

@@ -1,11 +1,15 @@
 package com.qmth.themis.business.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.themis.business.dao.TSyncExamStudentScoreMapper;
 import com.qmth.themis.business.entity.TSyncExamStudentScore;
 import com.qmth.themis.business.service.TSyncExamStudentScoreService;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+import java.util.Set;
+
 /**
  * <p>
  * 同步云阅卷考生成绩表 服务实现类
@@ -17,4 +21,16 @@ import org.springframework.stereotype.Service;
 @Service
 public class TSyncExamStudentScoreServiceImpl extends ServiceImpl<TSyncExamStudentScoreMapper, TSyncExamStudentScore> implements TSyncExamStudentScoreService {
 
+    /**
+     * 根据考试ids查找
+     *
+     * @param examRecordIds
+     * @return
+     */
+    @Override
+    public List<TSyncExamStudentScore> findByExamRecordIds(Set<String> examRecordIds) {
+        QueryWrapper<TSyncExamStudentScore> tSyncExamStudentScoreQueryWrapper = new QueryWrapper<>();
+        tSyncExamStudentScoreQueryWrapper.lambda().in(TSyncExamStudentScore::getExamNumber, examRecordIds);
+        return this.list(tSyncExamStudentScoreQueryWrapper);
+    }
 }

+ 26 - 8
themis-business/src/main/java/com/qmth/themis/business/templete/impl/TaskMarkResultSimpleExportTemplete.java

@@ -10,9 +10,11 @@ import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.business.dto.MarkResultSimpleExportDto;
 import com.qmth.themis.business.dto.response.MarkResultDto;
 import com.qmth.themis.business.entity.TOeExamRecord;
+import com.qmth.themis.business.entity.TSyncExamStudentScore;
 import com.qmth.themis.business.service.TEExamService;
 import com.qmth.themis.business.service.TEExamStudentService;
 import com.qmth.themis.business.service.TOeExamRecordService;
+import com.qmth.themis.business.service.TSyncExamStudentScoreService;
 import com.qmth.themis.business.templete.TaskExportCommon;
 import com.qmth.themis.business.templete.TaskExportTemplete;
 import com.qmth.themis.business.templete.service.TempleteLogicService;
@@ -25,6 +27,7 @@ import org.apache.poi.xssf.streaming.SXSSFWorkbook;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
 import java.io.*;
@@ -32,6 +35,8 @@ import java.lang.annotation.Annotation;
 import java.lang.reflect.Field;
 import java.time.LocalDateTime;
 import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 成绩简版导出任务
@@ -57,6 +62,9 @@ public class TaskMarkResultSimpleExportTemplete implements TaskExportTemplete {
     @Resource
     TOeExamRecordService tOeExamRecordService;
 
+    @Resource
+    TSyncExamStudentScoreService tSyncExamStudentScoreService;
+
     /**
      * 考场导出模版
      *
@@ -95,7 +103,8 @@ public class TaskMarkResultSimpleExportTemplete implements TaskExportTemplete {
                 markResultQueryExportIpage = teExamStudentService.markResultQueryExportIpage(new Page<>(pageNumber, pageSize), examId, activityId, identity, name, courseCode);
             }
 
-            if (Objects.nonNull(markResultSimpleExportDtoList) && markResultSimpleExportDtoList.size() > 0) {
+            if (!CollectionUtils.isEmpty(markResultSimpleExportDtoList)) {
+                Set<String> examRecordIdsSet = new LinkedHashSet<>(markResultSimpleExportDtoList.size());
                 for (MarkResultSimpleExportDto markResultSimpleExportDto : markResultSimpleExportDtoList) {
                     MarkResultDto markResultDto = GsonUtil
                             .fromJson(GsonUtil.toJson(markResultSimpleExportDto), MarkResultDto.class);
@@ -104,15 +113,24 @@ public class TaskMarkResultSimpleExportTemplete implements TaskExportTemplete {
                         TOeExamRecord tOeExamRecord = tOeExamRecordService
                                 .findMarkResult(markResultDto, examCacheBean.getRecordSelectStrategy());
                         if (Objects.nonNull(tOeExamRecord)) {
-                            markResultSimpleExportDto.setObjectiveScore(
-                                    Objects.isNull(tOeExamRecord.getObjectiveScore()) ?
-                                            "0" :
-                                            String.valueOf(tOeExamRecord.getObjectiveScore()));
+                            examRecordIdsSet.add(String.valueOf(tOeExamRecord.getId()));
+                            markResultSimpleExportDto.setObjectiveScore(Objects.isNull(tOeExamRecord.getObjectiveScore()) ? "0" : String.valueOf(tOeExamRecord.getObjectiveScore()));
                             markResultSimpleExportDto.setRecordId(tOeExamRecord.getId());
                             markResultSimpleExportDto.setPaperId(tOeExamRecord.getPaperId());
-                            markResultSimpleExportDto.setSumScore(
-                                    markResultSimpleExportDto.getObjectiveScore() + markResultSimpleExportDto
-                                            .getSubjectiveScore());
+                        }
+                    }
+                }
+                Map<Long, MarkResultSimpleExportDto> markResultSimpleExportDtoMap = markResultSimpleExportDtoList.stream().collect(
+                        Collectors.toMap(MarkResultSimpleExportDto::getRecordId, Function.identity(), (dto1, dto2) -> dto1));
+
+                //获取云阅卷同步成绩
+                List<TSyncExamStudentScore> tSyncExamStudentScoreList = tSyncExamStudentScoreService.findByExamRecordIds(examRecordIdsSet);
+                if (!CollectionUtils.isEmpty(tSyncExamStudentScoreList)) {
+                    for (TSyncExamStudentScore t : tSyncExamStudentScoreList) {
+                        MarkResultSimpleExportDto markResultSimpleExportDto = markResultSimpleExportDtoMap.get(Long.parseLong(t.getExamNumber()));
+                        if (Objects.nonNull(markResultSimpleExportDto)) {
+                            markResultSimpleExportDto.setSubjectiveScore(Objects.isNull(t.getSubjectiveScore()) ? "0" : String.valueOf(t.getSubjectiveScore()));
+                            markResultSimpleExportDto.setSumScore(String.valueOf(Double.parseDouble(markResultSimpleExportDto.getObjectiveScore()) + Double.parseDouble(markResultSimpleExportDto.getSubjectiveScore())));
                         }
                     }
                 }

+ 25 - 8
themis-business/src/main/java/com/qmth/themis/business/templete/impl/TaskMarkResultStandardExportTemplete.java

@@ -16,6 +16,7 @@ import com.qmth.themis.business.dto.MarkResultStandardExportDto;
 import com.qmth.themis.business.dto.response.MarkResultDto;
 import com.qmth.themis.business.entity.TOeExamAnswer;
 import com.qmth.themis.business.entity.TOeExamRecord;
+import com.qmth.themis.business.entity.TSyncExamStudentScore;
 import com.qmth.themis.business.enums.AnswerTypeEnum;
 import com.qmth.themis.business.enums.QuestionTypeEnum;
 import com.qmth.themis.business.enums.TaskStatusEnum;
@@ -34,6 +35,7 @@ import org.apache.poi.xssf.streaming.SXSSFWorkbook;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 import org.springframework.util.LinkedMultiValueMap;
 
 import javax.annotation.Resource;
@@ -42,6 +44,8 @@ import java.lang.annotation.Annotation;
 import java.lang.reflect.Field;
 import java.time.LocalDateTime;
 import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 成绩标准版导出任务
@@ -73,6 +77,9 @@ public class TaskMarkResultStandardExportTemplete implements TaskExportTemplete
     @Resource
     TOeExamRecordService tOeExamRecordService;
 
+    @Resource
+    TSyncExamStudentScoreService tSyncExamStudentScoreService;
+
     /**
      * 考场导出模版
      *
@@ -111,7 +118,8 @@ public class TaskMarkResultStandardExportTemplete implements TaskExportTemplete
                 markResultQueryExportIpage = teExamStudentService.markResultQueryExportIpage(new Page<>(pageNumber, pageSize), examId, activityId, identity, name, courseCode);
             }
 
-            if (Objects.nonNull(markResultSimpleExportDtoList) && markResultSimpleExportDtoList.size() > 0) {
+            if (!CollectionUtils.isEmpty(markResultSimpleExportDtoList)) {
+                Set<String> examRecordIdsSet = new LinkedHashSet<>(markResultSimpleExportDtoList.size());
                 for (MarkResultSimpleExportDto markResultSimpleExportDto : markResultSimpleExportDtoList) {
                     MarkResultDto markResultDto = GsonUtil
                             .fromJson(GsonUtil.toJson(markResultSimpleExportDto), MarkResultDto.class);
@@ -120,15 +128,24 @@ public class TaskMarkResultStandardExportTemplete implements TaskExportTemplete
                         TOeExamRecord tOeExamRecord = tOeExamRecordService
                                 .findMarkResult(markResultDto, examCacheBean.getRecordSelectStrategy());
                         if (Objects.nonNull(tOeExamRecord)) {
-                            markResultSimpleExportDto.setObjectiveScore(
-                                    Objects.isNull(tOeExamRecord.getObjectiveScore()) ?
-                                            "0" :
-                                            String.valueOf(tOeExamRecord.getObjectiveScore()));
+                            examRecordIdsSet.add(String.valueOf(tOeExamRecord.getId()));
+                            markResultSimpleExportDto.setObjectiveScore(Objects.isNull(tOeExamRecord.getObjectiveScore()) ? "0" : String.valueOf(tOeExamRecord.getObjectiveScore()));
                             markResultSimpleExportDto.setRecordId(tOeExamRecord.getId());
                             markResultSimpleExportDto.setPaperId(tOeExamRecord.getPaperId());
-                            markResultSimpleExportDto.setSumScore(
-                                    markResultSimpleExportDto.getObjectiveScore() + markResultSimpleExportDto
-                                            .getSubjectiveScore());
+                        }
+                    }
+                }
+                Map<Long, MarkResultSimpleExportDto> markResultSimpleExportDtoMap = markResultSimpleExportDtoList.stream().collect(
+                        Collectors.toMap(MarkResultSimpleExportDto::getRecordId, Function.identity(), (dto1, dto2) -> dto1));
+
+                //获取云阅卷同步成绩
+                List<TSyncExamStudentScore> tSyncExamStudentScoreList = tSyncExamStudentScoreService.findByExamRecordIds(examRecordIdsSet);
+                if (!CollectionUtils.isEmpty(tSyncExamStudentScoreList)) {
+                    for (TSyncExamStudentScore t : tSyncExamStudentScoreList) {
+                        MarkResultSimpleExportDto markResultSimpleExportDto = markResultSimpleExportDtoMap.get(Long.parseLong(t.getExamNumber()));
+                        if (Objects.nonNull(markResultSimpleExportDto)) {
+                            markResultSimpleExportDto.setSubjectiveScore(Objects.isNull(t.getSubjectiveScore()) ? "0" : String.valueOf(t.getSubjectiveScore()));
+                            markResultSimpleExportDto.setSumScore(String.valueOf(Double.parseDouble(markResultSimpleExportDto.getObjectiveScore()) + Double.parseDouble(markResultSimpleExportDto.getSubjectiveScore())));
                         }
                     }
                 }