Sfoglia il codice sorgente

取消scoreentity合并

xiatian 5 anni fa
parent
commit
2139017d12
15 ha cambiato i file con 219 aggiunte e 228 eliminazioni
  1. 12 27
      examcloud-core-oe-admin-api-provider/src/main/java/cn/com/qmth/examcloud/core/oe/admin/api/provider/ExamRecordCloudServiceProvider.java
  2. 6 7
      examcloud-core-oe-admin-api-provider/src/main/java/cn/com/qmth/examcloud/core/oe/admin/api/provider/ExamScoreCloudServiceProvider.java
  3. 26 23
      examcloud-core-oe-admin-api-provider/src/main/java/cn/com/qmth/examcloud/core/oe/admin/api/provider/ExamScoreDataCloudServiceProvider.java
  4. 3 3
      examcloud-core-oe-admin-dao/src/main/java/cn/com/qmth/examcloud/core/oe/admin/dao/ExamRecordDataRepo.java
  5. 3 3
      examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/ExamScoreService.java
  6. 9 9
      examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/impl/ExamAuditServiceImpl.java
  7. 29 24
      examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/impl/ExamRecordQuestionsServiceImpl.java
  8. 43 50
      examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/impl/ExamRecordServiceImpl.java
  9. 18 16
      examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/impl/ExamScoreServiceImpl.java
  10. 23 24
      examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/impl/ExamStudentFinalScoreServiceImpl.java
  11. 6 5
      examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/impl/OfflineExamServiceImpl.java
  12. 10 8
      examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/impl/PracticeServiceImpl.java
  13. 0 4
      examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/pushscore/bean/ExamScorePushInfo.java
  14. 18 14
      examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/pushscore/cup/CupExamScorePushServiceImpl.java
  15. 13 11
      examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/pushscore/swufe/SwufeExamScorePushServiceImpl.java

+ 12 - 27
examcloud-core-oe-admin-api-provider/src/main/java/cn/com/qmth/examcloud/core/oe/admin/api/provider/ExamRecordCloudServiceProvider.java

@@ -34,12 +34,14 @@ import cn.com.qmth.examcloud.core.oe.admin.base.utils.Check;
 import cn.com.qmth.examcloud.core.oe.admin.dao.ExamCaptureRepo;
 import cn.com.qmth.examcloud.core.oe.admin.dao.ExamRecordDataRepo;
 import cn.com.qmth.examcloud.core.oe.admin.dao.ExamRecordQuestionsRepo;
+import cn.com.qmth.examcloud.core.oe.admin.dao.ExamScoreRepo;
 import cn.com.qmth.examcloud.core.oe.admin.dao.ExamStudentRepo;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamCaptureEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamQuestionEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamRecordDataEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamRecordForMarkingEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamRecordQuestionsEntity;
+import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamScoreEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamStudentEntity;
 import cn.com.qmth.examcloud.core.oe.admin.service.ExamRecordForMarkingService;
 import cn.com.qmth.examcloud.core.oe.admin.service.others.ExamCacheTransferHelper;
@@ -68,8 +70,8 @@ public class ExamRecordCloudServiceProvider extends ControllerSupport implements
      */
     private static final long serialVersionUID = 7678785677176906341L;
 
-//    @Autowired
-//    private ExamScoreRepo examScoreRepo;
+    @Autowired
+    private ExamScoreRepo examScoreRepo;
 
     @Autowired
     private ExamRecordDataRepo examRecordDataRepo;
@@ -106,17 +108,10 @@ public class ExamRecordCloudServiceProvider extends ControllerSupport implements
     @PostMapping("/queryExamRecordForSelectScoreByScoreId")
     public QueryExamRecordForSelectScoreResp queryExamRecordForSelectScoreByScoreId(@RequestBody QueryExamRecordForSelectScoreReq req) {
         QueryExamRecordForSelectScoreResp resp = new QueryExamRecordForSelectScoreResp();
-        Long examRecordDataId=null;
-        if (req.getExamRecordDataId() != null) {
-            examRecordDataId=req.getExamRecordDataId();
-        }
-        if (examRecordDataId==null&&req.getExamScoreId() != null) {
-            examRecordDataId=req.getExamScoreId();
-        }
-        if (examRecordDataId != null) {
-//            ExamScoreEntity examScore = GlobalHelper.getEntity(examScoreRepo, req.getExamScoreId(), ExamScoreEntity.class);
+        if (req.getExamScoreId() != null) {
+            ExamScoreEntity examScore = GlobalHelper.getEntity(examScoreRepo, req.getExamScoreId(), ExamScoreEntity.class);
             ExamRecordDataEntity examRecordData =
-                    GlobalHelper.getEntity(examRecordDataRepo, examRecordDataId, ExamRecordDataEntity.class);
+                    GlobalHelper.getEntity(examRecordDataRepo, examScore.getExamRecordDataId(), ExamRecordDataEntity.class);
             List<ExamRecordForSelectScore> examRecordForSelectScoreList = new ArrayList<ExamRecordForSelectScore>();
             examRecordForSelectScoreList.add(buildExamRecordForSelectScore(examRecordData));
             resp.setExamRecordForSelectScoreList(examRecordForSelectScoreList);
@@ -160,22 +155,12 @@ public class ExamRecordCloudServiceProvider extends ControllerSupport implements
     @ApiOperation(value = "查询照片数据-供exchange调用")
     @PostMapping("/getExamPhotoVerifyData")
     public GetExamPhotoVerifyDataResp getExamPhotoVerifyData(@RequestBody GetExamPhotoVerifyDataReq req) {
-//        Long scoreId = req.getScoreId();
-//        ExamScoreEntity examScoreEntity = GlobalHelper.getEntity(examScoreRepo, scoreId, ExamScoreEntity.class);
-//        if (examScoreEntity == null) {
-//            return null;
-//        }
-//        Long examRecordDataId = examScoreEntity.getExamRecordDataId();
-        Long examRecordDataId=null;
-        if (req.getExamRecordDataId() != null) {
-            examRecordDataId=req.getExamRecordDataId();
-        }
-        if (examRecordDataId==null&&req.getScoreId() != null) {
-            examRecordDataId=req.getScoreId();
-        }
-        if (examRecordDataId == null) {
+        Long scoreId = req.getScoreId();
+        ExamScoreEntity examScoreEntity = GlobalHelper.getEntity(examScoreRepo, scoreId, ExamScoreEntity.class);
+        if (examScoreEntity == null) {
             return null;
         }
+        Long examRecordDataId = examScoreEntity.getExamRecordDataId();
         ExamRecordDataEntity examRecordData = GlobalHelper.getEntity(examRecordDataRepo, examRecordDataId, ExamRecordDataEntity.class);
         if (examRecordData == null) {
             return null;
@@ -183,7 +168,7 @@ public class ExamRecordCloudServiceProvider extends ControllerSupport implements
         List<ExamCaptureEntity> examCaptureList = examCaptureRepo.findByExamRecordDataId(examRecordDataId);
 
         GetExamPhotoVerifyDataResp resp = new GetExamPhotoVerifyDataResp();
-        resp.setScoreId(examRecordDataId);
+        resp.setScoreId(scoreId);
         resp.setSuccessRate(examRecordData.getFaceSuccessPercent());
         int strangerCount = 0;
         List<String> photoUrls = new ArrayList<String>();

+ 6 - 7
examcloud-core-oe-admin-api-provider/src/main/java/cn/com/qmth/examcloud/core/oe/admin/api/provider/ExamScoreCloudServiceProvider.java

@@ -13,8 +13,8 @@ import cn.com.qmth.examcloud.core.oe.admin.api.ExamScoreCloudService;
 import cn.com.qmth.examcloud.core.oe.admin.api.bean.ExamScoreBean;
 import cn.com.qmth.examcloud.core.oe.admin.api.request.QueryExamScoreReq;
 import cn.com.qmth.examcloud.core.oe.admin.api.response.QueryExamScoreResp;
-import cn.com.qmth.examcloud.core.oe.admin.dao.ExamRecordDataRepo;
-import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamRecordDataEntity;
+import cn.com.qmth.examcloud.core.oe.admin.dao.ExamScoreRepo;
+import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamScoreEntity;
 import cn.com.qmth.examcloud.web.support.ControllerSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -31,7 +31,7 @@ public class ExamScoreCloudServiceProvider extends ControllerSupport implements
 	private static final long serialVersionUID = -1957765271029136836L;
 	
 	@Autowired
-	private ExamRecordDataRepo examRecordDataRepo;
+	private ExamScoreRepo examScoreRepo;
 	
 	@Override
 	@ApiOperation(value = "分数查询")
@@ -43,14 +43,13 @@ public class ExamScoreCloudServiceProvider extends ControllerSupport implements
 			return null;
 		}
 		
-//		List<ExamScoreEntity> examScoreList = examScoreRepo.findByExamRecordDataIdIn(req.getExamRecordDataIds());
-		List<ExamRecordDataEntity> examScoreList=examRecordDataRepo.findAllById(req.getExamRecordDataIds());
+		List<ExamScoreEntity> examScoreList = examScoreRepo.findByExamRecordDataIdIn(req.getExamRecordDataIds());
 		
 		List<ExamScoreBean> examScoreBeans = new ArrayList<ExamScoreBean>();
-		for(ExamRecordDataEntity examScore:examScoreList){
+		for(ExamScoreEntity examScore:examScoreList){
 			ExamScoreBean examScoreBean = new ExamScoreBean();
 			examScoreBean.setId(examScore.getId());
-			examScoreBean.setExamRecordDataId(examScore.getId());
+			examScoreBean.setExamRecordDataId(examScore.getExamRecordDataId());
 			examScoreBean.setObjectiveAccuracy(examScore.getObjectiveAccuracy());
 			examScoreBean.setObjectiveScore(examScore.getObjectiveScore());
 			examScoreBean.setSubjectiveScore(examScore.getSubjectiveScore());

+ 26 - 23
examcloud-core-oe-admin-api-provider/src/main/java/cn/com/qmth/examcloud/core/oe/admin/api/provider/ExamScoreDataCloudServiceProvider.java

@@ -38,10 +38,12 @@ import cn.com.qmth.examcloud.core.oe.admin.base.utils.Check;
 import cn.com.qmth.examcloud.core.oe.admin.dao.ExamAuditRepo;
 import cn.com.qmth.examcloud.core.oe.admin.dao.ExamCaptureRepo;
 import cn.com.qmth.examcloud.core.oe.admin.dao.ExamRecordDataRepo;
+import cn.com.qmth.examcloud.core.oe.admin.dao.ExamScoreRepo;
 import cn.com.qmth.examcloud.core.oe.admin.dao.ExamStudentRepo;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamAuditEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamCaptureEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamRecordDataEntity;
+import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamScoreEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamStudentEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamStudentFinalScoreEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.enums.DisciplineType;
@@ -72,8 +74,8 @@ public class ExamScoreDataCloudServiceProvider extends ControllerSupport impleme
      */
     private static final long serialVersionUID = 8280332746440316604L;
 
-//    @Autowired
-//    private ExamScoreRepo examScoreRepo;
+    @Autowired
+    private ExamScoreRepo examScoreRepo;
 
     @Autowired
     private ExamRecordDataRepo examRecordDataRepo;
@@ -106,14 +108,14 @@ public class ExamScoreDataCloudServiceProvider extends ControllerSupport impleme
     @ApiOperation(value = "根据分数id查询考试记录,学生信息,分数信息等数据")
     @PostMapping("/findExamScoreDataByScoreId")
     public FindExamScoreDataResp findExamScoreDataByScoreId(@RequestBody FindExamScoreDataReq findExamScoreDataReq) {
-//        long scoreId = findExamScoreDataReq.getScoreId();
-//        ExamScoreEntity examScore = GlobalHelper.getEntity(examScoreRepo, scoreId, ExamScoreEntity.class);
-        ExamRecordDataEntity examRecordDataEntity = GlobalHelper.getEntity(examRecordDataRepo, findExamScoreDataReq.getExamRecordDataId(), ExamRecordDataEntity.class);
+        long scoreId = findExamScoreDataReq.getScoreId();
+        ExamScoreEntity examScore = GlobalHelper.getEntity(examScoreRepo, scoreId, ExamScoreEntity.class);
+        ExamRecordDataEntity examRecordDataEntity = GlobalHelper.getEntity(examRecordDataRepo, examScore.getExamRecordDataId(), ExamRecordDataEntity.class);
         ExamStudentEntity examStudentEntity = examStudentRepo.findByExamStudentId(examRecordDataEntity.getExamStudentId());
 
         FindExamScoreDataResp findExamScoreDataResp = new FindExamScoreDataResp();
         List<ExamScoreDataBean> examScoreDatas = new ArrayList<ExamScoreDataBean>();
-        examScoreDatas.add(buildExamScoreDataBean(examRecordDataEntity, examStudentEntity));
+        examScoreDatas.add(buildExamScoreDataBean(examScore, examRecordDataEntity, examStudentEntity));
         findExamScoreDataResp.setExamScoreDatas(examScoreDatas);
 
         return findExamScoreDataResp;
@@ -129,9 +131,9 @@ public class ExamScoreDataCloudServiceProvider extends ControllerSupport impleme
 
         List<ExamScoreDataBean> examScoreDatas = new ArrayList<ExamScoreDataBean>();
         for (ExamRecordDataEntity examRecordData : examRecordDataList) {
-//            ExamScoreEntity examScore = examScoreRepo.findByExamRecordDataId(examRecordData.getId());
+            ExamScoreEntity examScore = examScoreRepo.findByExamRecordDataId(examRecordData.getId());
             ExamStudentEntity examStudent = examStudentRepo.findByExamStudentId(examRecordData.getExamStudentId());
-            examScoreDatas.add(buildExamScoreDataBean(examRecordData, examStudent));
+            examScoreDatas.add(buildExamScoreDataBean(examScore, examRecordData, examStudent));
         }
 
         FindExamScoreDataResp findExamScoreDataResp = new FindExamScoreDataResp();
@@ -139,7 +141,8 @@ public class ExamScoreDataCloudServiceProvider extends ControllerSupport impleme
         return findExamScoreDataResp;
     }
 
-    private ExamScoreDataBean buildExamScoreDataBean(ExamRecordDataEntity examRecordDataEntity, ExamStudentEntity examStudentEntity) {
+    private ExamScoreDataBean buildExamScoreDataBean(
+            ExamScoreEntity examScore, ExamRecordDataEntity examRecordDataEntity, ExamStudentEntity examStudentEntity) {
         ExamScoreDataBean examScoreDataBean = new ExamScoreDataBean();
         examScoreDataBean.setExamId(examStudentEntity.getExamId());
         examScoreDataBean.setStudentName(examStudentEntity.getStudentName());
@@ -153,10 +156,10 @@ public class ExamScoreDataCloudServiceProvider extends ControllerSupport impleme
         examScoreDataBean.setEndTime(examRecordDataEntity.getEndTime());
         examScoreDataBean.setSuccPercent(examRecordDataEntity.getFaceSuccessPercent());
         examScoreDataBean.setIsIllegality(examRecordDataEntity.getIsIllegality());
-        examScoreDataBean.setScoreId(examRecordDataEntity.getId());
-        examScoreDataBean.setTotalScore(examRecordDataEntity.getTotalScore());
-        examScoreDataBean.setObjectiveScore(examRecordDataEntity.getObjectiveScore());
-        examScoreDataBean.setSubjectiveScore(examRecordDataEntity.getSubjectiveScore());
+        examScoreDataBean.setScoreId(examScore.getId());
+        examScoreDataBean.setTotalScore(examScore.getTotalScore());
+        examScoreDataBean.setObjectiveScore(examScore.getObjectiveScore());
+        examScoreDataBean.setSubjectiveScore(examScore.getSubjectiveScore());
         return examScoreDataBean;
     }
 
@@ -169,7 +172,7 @@ public class ExamScoreDataCloudServiceProvider extends ControllerSupport impleme
         if (null == examRecordData) {
             throw new StatusException("getScoreData-exception", "请求参数不正确");
         }
-//        ExamScoreEntity examScore = examScoreRepo.findByExamRecordDataId(examRecordDataId);
+        ExamScoreEntity examScore = examScoreRepo.findByExamRecordDataId(examRecordDataId);
 
         GetScoreDataResp resp = new GetScoreDataResp();
         resp.setExamRecordDataId(examRecordDataId);
@@ -182,7 +185,7 @@ public class ExamScoreDataCloudServiceProvider extends ControllerSupport impleme
         resp.setCourseName(courseBean.getName());
         resp.setStartTime(examRecordData.getStartTime());
         resp.setEndTime(examRecordData.getEndTime());
-        resp.setTotalScore(examRecordData.getTotalScore());
+        resp.setTotalScore(examScore.getTotalScore());
 
         resp.setIsWarn(examRecordData.getIsWarn());
         resp.setIsAudit(examRecordData.getIsAudit());
@@ -327,10 +330,10 @@ public class ExamScoreDataCloudServiceProvider extends ControllerSupport impleme
         List<ScoreDataBean> scoreDataBeanList = new ArrayList<ScoreDataBean>();
         List<ExamRecordDataEntity> examRecordList = examRecordDataRepo.findAll(Example.of(selectCondition));
         for (ExamRecordDataEntity examRecordData : examRecordList) {
-//            ExamScoreEntity examScore = examScoreRepo.findByExamRecordDataId(examRecordData.getId());
-//            if (examScore == null) {
-//                throw new StatusException("100001", "该考生未交卷");
-//            }
+            ExamScoreEntity examScore = examScoreRepo.findByExamRecordDataId(examRecordData.getId());
+            if (examScore == null) {
+                throw new StatusException("100001", "该考生未交卷");
+            }
 
             ScoreDataBean scoreDataBean = new ScoreDataBean();
             scoreDataBean.setExamRecordDataId(examRecordData.getId());
@@ -342,7 +345,7 @@ public class ExamScoreDataCloudServiceProvider extends ControllerSupport impleme
             scoreDataBean.setCourseName(courseBean.getName());
             scoreDataBean.setStartTime(examRecordData.getStartTime());
             scoreDataBean.setEndTime(examRecordData.getEndTime());
-            scoreDataBean.setTotalScore(examRecordData.getTotalScore());
+            scoreDataBean.setTotalScore(examScore.getTotalScore());
 
             scoreDataBean.setIsWarn(examRecordData.getIsWarn());
             scoreDataBean.setIsAudit(examRecordData.getIsAudit());
@@ -422,16 +425,16 @@ public class ExamScoreDataCloudServiceProvider extends ControllerSupport impleme
 
         //如果查不到有效的分数集合,则将所有的考试分数集合均返回
         resp.setAbsent(false);
-        List<ExamRecordDataEntity> allExamScoreList =
+        List<ExamScoreEntity> allExamScoreList =
                 examScoreService.getAllExamScoreList(req.getExamId(), identityNumber, courseId);
         if (allExamScoreList == null) {
             return resp;
         }
 
         List<ScoreDataBean> scoreDataBeanList = new ArrayList<>();
-        for (ExamRecordDataEntity scoreEntity : allExamScoreList) {
+        for (ExamScoreEntity scoreEntity : allExamScoreList) {
             scoreDataBeanList.add(buildScoreDataBean(identityNumber,
-                    courseBean, scoreEntity.getTotalScore(), scoreEntity.getId()));
+                    courseBean, scoreEntity.getTotalScore(), scoreEntity.getExamRecordDataId()));
         }
         resp.setAllScoreDataBeanList(scoreDataBeanList);
         resp.setAudit(scoreDataBeanList.stream().anyMatch(p -> p.getIsAudit() == null || !p.getIsAudit()));

+ 3 - 3
examcloud-core-oe-admin-dao/src/main/java/cn/com/qmth/examcloud/core/oe/admin/dao/ExamRecordDataRepo.java

@@ -1,7 +1,5 @@
 package cn.com.qmth.examcloud.core.oe.admin.dao;
 
-import java.util.List;
-
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Modifying;
@@ -10,6 +8,9 @@ import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamRecordDataEntity;
+import cn.com.qmth.examcloud.core.oe.admin.dao.enums.IsSuccess;
+
+import java.util.List;
 
 /**
  * @author chenken
@@ -94,5 +95,4 @@ public interface ExamRecordDataRepo extends JpaRepository<ExamRecordDataEntity,
             "where exam_record_status in('EXAM_END','EXAM_OVERDUE') and is_illegality=0 and (is_warn=0 or is_warn=1  and is_audit=1) " +
             "and exam_id=?1 and id>=?2 order by id asc limit ?3", nativeQuery = true)
     List<ExamRecordDataEntity> findLimitedDataByExamIdAndIdMoreThan(Long examId, Long startExamRecordId, int rowCount);
-    
 }

+ 3 - 3
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/ExamScoreService.java

@@ -11,7 +11,7 @@ import java.util.List;
 
 import org.springframework.data.domain.Page;
 
-import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamRecordDataEntity;
+import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamScoreEntity;
 import cn.com.qmth.examcloud.core.oe.admin.service.bean.examscore.ExamScoreInfo;
 import cn.com.qmth.examcloud.core.oe.admin.service.bean.examscore.ExamScoreQuery;
 import cn.com.qmth.examcloud.core.oe.admin.service.bean.examscore.ObjectiveScoreInfo;
@@ -35,13 +35,13 @@ public interface ExamScoreService {
      * @param courseId 课程代码
      * @return ExamScoreEntity
      */
-    List<ExamRecordDataEntity> getAllExamScoreList(Long examId, String identityNumber, Long courseId);
+    List<ExamScoreEntity> getAllExamScoreList(Long examId, String identityNumber, Long courseId);
 
     /**
      * 离线考试初始化得分
      * @param examRecordDataId
      */
-//    public void createExamScoreWithOffline(Long examRecordDataId);
+    public void createExamScoreWithOffline(Long examRecordDataId);
     
     
     /**

+ 9 - 9
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/impl/ExamAuditServiceImpl.java

@@ -57,8 +57,8 @@ import static cn.com.qmth.examcloud.core.oe.admin.service.bean.examaudit.ExamAud
 public class ExamAuditServiceImpl implements ExamAuditService {
     @Autowired
     private ExamAuditRepo examAuditRepo;
-//    @Autowired
-//    private ExamScoreRepo examScoreRepo;
+    @Autowired
+    private ExamScoreRepo examScoreRepo;
     @Autowired
     private EntityManager entityManager;
 
@@ -383,13 +383,13 @@ public class ExamAuditServiceImpl implements ExamAuditService {
 	 * 审核通过后置处理
 	 */
 	private void auditPassPostProcesser(ExamRecordDataEntity examRecordData){
-//    	ExamScoreEntity examScore = examScoreRepo.findByExamRecordDataId(examRecordData.getId());
+    	ExamScoreEntity examScore = examScoreRepo.findByExamRecordDataId(examRecordData.getId());
     	//审核通过且为非全客观题卷,保存阅卷需要数据
-    	saveExamRecordForMarkingWithAudit(examRecordData);
+    	saveExamRecordForMarkingWithAudit(examRecordData,examScore);
     	//保存推送分数队列
-        examScorePushQueueService.saveScoreDataInfoToQueue(examRecordData.getId());
+        examScorePushQueueService.saveScoreDataInfoToQueue(examRecordData,examScore.getId());
         //保存获取分数队列
-        examScoreObtainQueueService.saveExamScoreObtainQueue(examRecordData.getId());
+        examScoreObtainQueueService.saveExamScoreObtainQueue(examRecordData);
         //发送通知
         examScoreObtainQueueService.sendObtainScoreNotify(examRecordData.getRootOrgId());
 	}
@@ -398,7 +398,7 @@ public class ExamAuditServiceImpl implements ExamAuditService {
      * 审核通过且为非全客观题卷,保存阅卷需要数据
      * @param examRecordData
      */
-	private void saveExamRecordForMarkingWithAudit(ExamRecordDataEntity examRecordData){
+	private void saveExamRecordForMarkingWithAudit(ExamRecordDataEntity examRecordData,ExamScoreEntity examScore){
     	if(examRecordData.getIsAllObjectivePaper() != null && !examRecordData.getIsAllObjectivePaper()){
             ExamRecordForMarkingEntity examRecordForMarkingExists =
                     examRecordForMarkingRepo.findByExamRecordDataId(examRecordData.getId());
@@ -412,7 +412,7 @@ public class ExamAuditServiceImpl implements ExamAuditService {
             examRecordForMarking.setBasePaperId(examRecordData.getBasePaperId());
             examRecordForMarking.setPaperType(examRecordData.getPaperType());
             examRecordForMarking.setCourseId(examRecordData.getCourseId());
-            examRecordForMarking.setObjectiveScore(examRecordData.getObjectiveScore());
+            examRecordForMarking.setObjectiveScore(examScore.getObjectiveScore());
             int subjectiveAnswerLength = examRecordQuestionsService.calculationSubjectiveAnswerLength(examRecordData.getId());
             examRecordForMarking.setSubjectiveAnswerLength(subjectiveAnswerLength);
             examRecordForMarkingRepo.save(examRecordForMarking);
@@ -436,7 +436,7 @@ public class ExamAuditServiceImpl implements ExamAuditService {
 			examRecordForMarkingRepo.delete(examRecordForMarking);
 		}
 		//保存获取分数队列
-        examScoreObtainQueueService.saveExamScoreObtainQueue(examRecordData.getId());
+        examScoreObtainQueueService.saveExamScoreObtainQueue(examRecordData);
         //发送通知
         examScoreObtainQueueService.sendObtainScoreNotify(examRecordData.getRootOrgId());
 	}

+ 29 - 24
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/impl/ExamRecordQuestionsServiceImpl.java

@@ -1,30 +1,36 @@
 package cn.com.qmth.examcloud.core.oe.admin.service.impl;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.stream.Collectors;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
 import cn.com.qmth.examcloud.commons.exception.StatusException;
 import cn.com.qmth.examcloud.core.oe.admin.base.utils.QuestionTypeUtil;
 import cn.com.qmth.examcloud.core.oe.admin.dao.ExamRecordDataRepo;
 import cn.com.qmth.examcloud.core.oe.admin.dao.ExamRecordQuestionsRepo;
+import cn.com.qmth.examcloud.core.oe.admin.dao.ExamScoreRepo;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamQuestionEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamRecordDataEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamRecordQuestionsEntity;
+import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamScoreEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.enums.ExamType;
 import cn.com.qmth.examcloud.core.oe.admin.service.ExamRecordQuestionsService;
 import cn.com.qmth.examcloud.core.oe.admin.service.ExamStudentFinalScoreService;
 import cn.com.qmth.examcloud.core.oe.admin.service.bean.SubjectiveQuestionScoreInfo;
+import cn.com.qmth.examcloud.core.questions.api.ExtractConfigCloudService;
 import cn.com.qmth.examcloud.question.commons.core.paper.DefaultPaper;
 import cn.com.qmth.examcloud.question.commons.core.paper.DefaultQuestionGroup;
 import cn.com.qmth.examcloud.question.commons.core.paper.DefaultQuestionStructureWrapper;
 import cn.com.qmth.examcloud.question.commons.core.paper.DefaultQuestionUnitWrapper;
 import cn.com.qmth.examcloud.web.helpers.GlobalHelper;
+import com.google.common.cache.Cache;
+import com.google.common.cache.CacheBuilder;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 @Service("examRecordQuestionsService")
 public class ExamRecordQuestionsServiceImpl implements ExamRecordQuestionsService {
@@ -35,19 +41,19 @@ public class ExamRecordQuestionsServiceImpl implements ExamRecordQuestionsServic
     @Autowired
     private ExamRecordDataRepo examRecordDataRepo;
 
-//    @Autowired
-//    private ExamScoreRepo examScoreRepo;
+    @Autowired
+    private ExamScoreRepo examScoreRepo;
 
-//    @Autowired
-//    private RedisTemplate<String, Object> redisTemplate;
-//
-//    @Autowired
-//    private ExtractConfigCloudService extractConfigCloudService;
+    @Autowired
+    private RedisTemplate<String, Object> redisTemplate;
+
+    @Autowired
+    private ExtractConfigCloudService extractConfigCloudService;
 
 
     //本地题干缓存,最大200道题,默认缓存120秒
-//    private Cache<String, String> questionContentCache = CacheBuilder.newBuilder().maximumSize(200)
-//            .expireAfterWrite(120, TimeUnit.SECONDS).build();
+    private Cache<String, String> questionContentCache = CacheBuilder.newBuilder().maximumSize(200)
+            .expireAfterWrite(120, TimeUnit.SECONDS).build();
 
     @Autowired
     private ExamStudentFinalScoreService examStudentFinalScoreService;
@@ -87,12 +93,11 @@ public class ExamRecordQuestionsServiceImpl implements ExamRecordQuestionsServic
         }
 
         //更新ec_oe_exam_score
-//        ExamScoreEntity examScoreEntity = examScoreRepo.findByExamRecordDataId(examRecordDataId);
-        examRecordData.setSubjectiveScore(totalSubjectiveScore);
-        double totalScore = totalSubjectiveScore + examRecordData.getObjectiveScore();
-        examRecordData.setTotalScore(totalScore);
-//        examScoreRepo.save(examScoreEntity);
-        examRecordDataRepo.save(examRecordData);
+        ExamScoreEntity examScoreEntity = examScoreRepo.findByExamRecordDataId(examRecordDataId);
+        examScoreEntity.setSubjectiveScore(totalSubjectiveScore);
+        double totalScore = totalSubjectiveScore + examScoreEntity.getObjectiveScore();
+        examScoreEntity.setTotalScore(totalScore);
+        examScoreRepo.save(examScoreEntity);
 
         //计算考生的最终分数
         examStudentFinalScoreService.calculateFinalScore(examRecordData.getExamStudentId());

+ 43 - 50
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/impl/ExamRecordServiceImpl.java

@@ -7,39 +7,16 @@
 
 package cn.com.qmth.examcloud.core.oe.admin.service.impl;
 
-import java.math.BigInteger;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageImpl;
-import org.springframework.data.domain.PageRequest;
-import org.springframework.data.domain.Pageable;
-import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.jdbc.core.RowMapper;
-import org.springframework.stereotype.Service;
-
-import com.google.common.collect.Lists;
-
 import cn.com.qmth.examcloud.commons.exception.StatusException;
 import cn.com.qmth.examcloud.core.oe.admin.base.jpa.SqlWrapper;
 import cn.com.qmth.examcloud.core.oe.admin.base.utils.Check;
 import cn.com.qmth.examcloud.core.oe.admin.dao.ExamRecordDataRepo;
 import cn.com.qmth.examcloud.core.oe.admin.dao.ExamRecordQuestionsRepo;
+import cn.com.qmth.examcloud.core.oe.admin.dao.ExamScoreRepo;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamQuestionEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamRecordDataEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamRecordQuestionsEntity;
+import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamScoreEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.enums.ExamRecordStatus;
 import cn.com.qmth.examcloud.core.oe.admin.dao.enums.IsSuccess;
 import cn.com.qmth.examcloud.core.oe.admin.dao.enums.MarkingType;
@@ -58,7 +35,24 @@ import cn.com.qmth.examcloud.examwork.api.bean.ExamBean;
 import cn.com.qmth.examcloud.support.cache.CacheHelper;
 import cn.com.qmth.examcloud.support.cache.bean.OrgCacheBean;
 import cn.com.qmth.examcloud.support.cache.bean.StudentCacheBean;
-import cn.com.qmth.examcloud.web.helpers.GlobalHelper;
+import com.google.common.collect.Lists;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.RowMapper;
+import org.springframework.stereotype.Service;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.math.BigInteger;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 考试记录接口
@@ -68,8 +62,8 @@ import cn.com.qmth.examcloud.web.helpers.GlobalHelper;
  */
 @Service
 public class ExamRecordServiceImpl implements ExamRecordService {
-//    @Autowired
-//    private ExamScoreRepo examScoreRepo;
+    @Autowired
+    private ExamScoreRepo examScoreRepo;
     @Autowired
     private ExamRecordDataRepo examRecordDataRepo;
     @Autowired
@@ -430,18 +424,17 @@ public class ExamRecordServiceImpl implements ExamRecordService {
      */
     public Map<String, String> getPaperScore(Long examRecordDataId) {
         Map<String, String> data = new HashMap<>();
-//        ExamScoreEntity examScore = examScoreRepo.findByExamRecordDataId(examRecordDataId);
-        ExamRecordDataEntity examRecordData = GlobalHelper.getEntity(examRecordDataRepo, examRecordDataId, ExamRecordDataEntity.class);
+        ExamScoreEntity examScore = examScoreRepo.findByExamRecordDataId(examRecordDataId);
         //卷面总分
         Double paperTotalScore = 0d;
         //客观题总分
         Double objectiveTotalScore = 0d;
         //主观题总分
         Double subjectiveTotalScore = 0d;
-        if (examRecordData != null) {
-            paperTotalScore = examRecordData.getObjectiveScore() == null ? 0d : examRecordData.getObjectiveScore();
-            objectiveTotalScore = examRecordData.getObjectiveScore() == null ? 0d : examRecordData.getObjectiveScore();
-            subjectiveTotalScore = examRecordData.getSubjectiveScore() == null ? 0d : examRecordData.getSubjectiveScore();
+        if (examScore != null) {
+            paperTotalScore = examScore.getObjectiveScore() == null ? 0d : examScore.getObjectiveScore();
+            objectiveTotalScore = examScore.getObjectiveScore() == null ? 0d : examScore.getObjectiveScore();
+            subjectiveTotalScore = examScore.getSubjectiveScore() == null ? 0d : examScore.getSubjectiveScore();
         }
         data.put("paperTotalScore", String.valueOf(paperTotalScore));
         data.put("objectiveTotalScore", String.valueOf(objectiveTotalScore));
@@ -555,28 +548,28 @@ public class ExamRecordServiceImpl implements ExamRecordService {
         if (allExamRecordDataList == null || allExamRecordDataList.isEmpty()) {
             return null;
         }
-//        List<Long> examRecordDataIdList = allExamRecordDataList.stream().map(p -> p.getId()).collect(Collectors.toList());
-//        当前考试记录的所有成绩
-//        List<ExamScoreEntity> allExamScoreList = examScoreRepo.findByExamRecordDataIdIn(examRecordDataIdList);
-//        if (allExamScoreList == null || allExamScoreList.isEmpty()) {
-//            return null;
-//        }
+        List<Long> examRecordDataIdList = allExamRecordDataList.stream().map(p -> p.getId()).collect(Collectors.toList());
+        //当前考试记录的所有成绩
+        List<ExamScoreEntity> allExamScoreList = examScoreRepo.findByExamRecordDataIdIn(examRecordDataIdList);
+        if (allExamScoreList == null || allExamScoreList.isEmpty()) {
+            return null;
+        }
         Map<Long, List<ExamRecordDataEntity>> groupedByExamStudentExamRecordMap = allExamRecordDataList.stream().collect(Collectors.groupingBy(ExamRecordDataEntity::getExamStudentId));
         for (Long examStudentId : groupedByExamStudentExamRecordMap.keySet()) {
             //当前考生的所有考试记录集合
             List<ExamRecordDataEntity> curExamRecordDataList = groupedByExamStudentExamRecordMap.get(examStudentId);
-//            //当前考试记录id集合
-//            List<Long> curExamRecordDataIdList = curExamRecordDataList.stream().map(p -> p.getId()).collect(Collectors.toList());
-//
-//            //当前考生的所有考试成绩集合
-//            List<ExamRecordDataEntity> curExamScoreList = allExamScoreList.stream().
-//                    filter(p -> curExamRecordDataIdList.contains(p.getExamRecordDataId())).collect(Collectors.toList());
+            //当前考试记录id集合
+            List<Long> curExamRecordDataIdList = curExamRecordDataList.stream().map(p -> p.getId()).collect(Collectors.toList());
+
+            //当前考生的所有考试成绩集合
+            List<ExamScoreEntity> curExamScoreList = allExamScoreList.stream().
+                    filter(p -> curExamRecordDataIdList.contains(p.getExamRecordDataId())).collect(Collectors.toList());
 
             //最终生效的成绩
-            ExamRecordDataEntity effectiveScore = getStudentEffectiveScore(curExamRecordDataList, markingType);
+            ExamScoreEntity effectiveScore = getStudentEffectiveScore(curExamScoreList, markingType);
             //最终生效的考试记录
             ExamRecordDataEntity effectiveExamRecordData = curExamRecordDataList.stream().
-                    filter(p -> p.getId().equals(effectiveScore.getId())).collect(Collectors.toList()).get(0);
+                    filter(p -> p.getId().equals(effectiveScore.getExamRecordDataId())).collect(Collectors.toList()).get(0);
 
             ExamStudentEffectiveScoreInfo info = new ExamStudentEffectiveScoreInfo();
             info.setExamStudentId(examStudentId);
@@ -598,11 +591,11 @@ public class ExamRecordServiceImpl implements ExamRecordService {
      * @Date 2019/7/18 17:49
      * @Version 1.0
      */
-    private ExamRecordDataEntity getStudentEffectiveScore(List<ExamRecordDataEntity> curExamScoreList, String markingType) {
+    private ExamScoreEntity getStudentEffectiveScore(List<ExamScoreEntity> curExamScoreList, String markingType) {
         if (curExamScoreList == null || curExamScoreList.isEmpty()) {
             throw new StatusException("201101", "考试记录不为空,考试分数数据为空");
         }
-        ExamRecordDataEntity examScoreEntity;
+        ExamScoreEntity examScoreEntity;
         //阅卷方式为全部评阅或客观题分数最高,均取总分最高
         if (MarkingType.ALL.toString().equals(markingType) || MarkingType.OBJECT_SCORE_MAX.toString().equals(markingType)) {
             examScoreEntity = curExamScoreList.stream().max(Comparator.comparing(p -> p.getTotalScore())).get();

+ 18 - 16
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/impl/ExamScoreServiceImpl.java

@@ -30,7 +30,9 @@ import cn.com.qmth.examcloud.core.oe.admin.base.jpa.SpecUtils;
 import cn.com.qmth.examcloud.core.oe.admin.base.utils.Check;
 import cn.com.qmth.examcloud.core.oe.admin.base.utils.CommonUtil;
 import cn.com.qmth.examcloud.core.oe.admin.dao.ExamRecordDataRepo;
+import cn.com.qmth.examcloud.core.oe.admin.dao.ExamScoreRepo;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamRecordDataEntity;
+import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamScoreEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamStudentEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamStudentFinalScoreEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.enums.CourseLevel;
@@ -59,8 +61,8 @@ import cn.com.qmth.examcloud.web.helpers.GlobalHelper;
  */
 @Service
 public class ExamScoreServiceImpl implements ExamScoreService {
-//    @Autowired
-//    private ExamScoreRepo examScoreRepo;
+    @Autowired
+    private ExamScoreRepo examScoreRepo;
     @Autowired
     private ExamRecordDataRepo examRecordDataRepo;
     @Autowired
@@ -147,15 +149,15 @@ public class ExamScoreServiceImpl implements ExamScoreService {
     }
 
     @Override
-    public List<ExamRecordDataEntity> getAllExamScoreList(Long examId, String identityNumber, Long courseId) {
+    public List<ExamScoreEntity> getAllExamScoreList(Long examId, String identityNumber, Long courseId) {
         List<ExamRecordDataEntity> allExamRecordDataList =
                 examRecordDataRepo.findByExamIdAndIdentityNumberAndCourseId(examId, identityNumber, courseId);
         if (allExamRecordDataList == null || allExamRecordDataList.isEmpty()) {
             return null;
         }
 
-//        List<Long> examRecordDataIds = allExamRecordDataList.stream().map(p -> p.getId()).collect(Collectors.toList());
-        return allExamRecordDataList;
+        List<Long> examRecordDataIds = allExamRecordDataList.stream().map(p -> p.getId()).collect(Collectors.toList());
+        return examScoreRepo.findByExamRecordDataIdIn(examRecordDataIds);
     }
 
     private List<ExamScoreInfo> getExamStudentInfoListOfScoreExport(ExamScoreQuery query, String markingType) {
@@ -392,15 +394,15 @@ public class ExamScoreServiceImpl implements ExamScoreService {
         return examStudentEntity;
     }
     
-//    @Override
-//    public void createExamScoreWithOffline(Long examRecordDataId) {
-//        ExamScoreEntity examScoreEntity = new ExamScoreEntity();
-//        examScoreEntity.setExamRecordDataId(examRecordDataId);
-//        examScoreEntity.setObjectiveScore(0D);
-//        examScoreEntity.setSubjectiveScore(0D);
-//        examScoreEntity.setTotalScore(0D);
-//        examScoreRepo.save(examScoreEntity);
-//    }
+    @Override
+    public void createExamScoreWithOffline(Long examRecordDataId) {
+        ExamScoreEntity examScoreEntity = new ExamScoreEntity();
+        examScoreEntity.setExamRecordDataId(examRecordDataId);
+        examScoreEntity.setObjectiveScore(0D);
+        examScoreEntity.setSubjectiveScore(0D);
+        examScoreEntity.setTotalScore(0D);
+        examScoreRepo.save(examScoreEntity);
+    }
 
     @Override
     public List<ObjectiveScoreInfo> queryObjectiveScoreList(Long examStudentId) {
@@ -434,9 +436,9 @@ public class ExamScoreServiceImpl implements ExamScoreService {
                 if (examRecordDataEntity.getIsWarn() && !examRecordDataEntity.getIsAudit()) {
                     objectiveScoreInfo.setIsAuditing(true);
                 } else if (!examRecordDataEntity.getIsWarn() || (examRecordDataEntity.getIsWarn() && examRecordDataEntity.getIsAudit())) {
-//                    ExamScoreEntity examScore = examScoreRepo.findByExamRecordDataId(examRecordDataEntity.getId());
+                    ExamScoreEntity examScore = examScoreRepo.findByExamRecordDataId(examRecordDataEntity.getId());
                     objectiveScoreInfo.setIsAuditing(false);
-                    objectiveScoreInfo.setObjectiveScore(examRecordDataEntity.getObjectiveScore());
+                    objectiveScoreInfo.setObjectiveScore(examScore.getObjectiveScore());
                 }
                 objectiveScoreInfo.setIsIllegality(false);
             } else {

+ 23 - 24
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/impl/ExamStudentFinalScoreServiceImpl.java

@@ -1,17 +1,11 @@
 package cn.com.qmth.examcloud.core.oe.admin.service.impl;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
 import cn.com.qmth.examcloud.core.oe.admin.dao.ExamRecordDataRepo;
+import cn.com.qmth.examcloud.core.oe.admin.dao.ExamScoreRepo;
 import cn.com.qmth.examcloud.core.oe.admin.dao.ExamStudentFinalScoreRepo;
 import cn.com.qmth.examcloud.core.oe.admin.dao.ExamStudentRepo;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamRecordDataEntity;
+import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamScoreEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamStudentEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamStudentFinalScoreEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.enums.ExamProperties;
@@ -20,6 +14,14 @@ import cn.com.qmth.examcloud.core.oe.admin.dao.enums.MarkingType;
 import cn.com.qmth.examcloud.core.oe.admin.service.ExamStudentFinalScoreService;
 import cn.com.qmth.examcloud.core.oe.admin.service.others.ExamCacheTransferHelper;
 
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
 /**
  * @Description 考生最终分数实现类
  * @Author lideyin
@@ -30,8 +32,8 @@ import cn.com.qmth.examcloud.core.oe.admin.service.others.ExamCacheTransferHelpe
 public class ExamStudentFinalScoreServiceImpl implements ExamStudentFinalScoreService {
     @Autowired
     private ExamRecordDataRepo examRecordDataRepo;
-//    @Autowired
-//    private ExamScoreRepo examScoreRepo;
+    @Autowired
+    private ExamScoreRepo examScoreRepo;
     @Autowired
     private ExamStudentRepo examStudentRepo;
     @Autowired
@@ -46,7 +48,7 @@ public class ExamStudentFinalScoreServiceImpl implements ExamStudentFinalScoreSe
         List<ExamRecordDataEntity> allExamRecordDataList = examRecordDataRepo.findByExamStudentId(examStudentId);
 
         //得到最终考试结果
-        ExamRecordDataEntity finalEffectiveExamScore = getFinalEffectiveExamScore(allExamRecordDataList, examType, markingType);
+        ExamScoreEntity finalEffectiveExamScore = getFinalEffectiveExamScore(allExamRecordDataList, examType, markingType);
 
         //保存最终考试结果
         saveExamStudentFinalScore(examStudent.getExamStudentId(), finalEffectiveExamScore);
@@ -58,14 +60,14 @@ public class ExamStudentFinalScoreServiceImpl implements ExamStudentFinalScoreSe
         return examStudentFinalScoreRepo.findByExamStudentId(examStudentId);
     }
 
-    private void saveExamStudentFinalScore(Long examStudentId, final ExamRecordDataEntity finalEffectiveExamScore) {
+    private void saveExamStudentFinalScore(Long examStudentId, final ExamScoreEntity finalEffectiveExamScore) {
         ExamStudentFinalScoreEntity finalScoreEntity
                 = examStudentFinalScoreRepo.findByExamStudentId(examStudentId);
         if (finalScoreEntity == null) {
             finalScoreEntity = new ExamStudentFinalScoreEntity();
         }
 
-        finalScoreEntity.setExamRecordDataId(finalEffectiveExamScore.getId());
+        finalScoreEntity.setExamRecordDataId(finalEffectiveExamScore.getExamRecordDataId());
         finalScoreEntity.setExamStudentId(examStudentId);
         finalScoreEntity.setObjectiveAccuracy(finalEffectiveExamScore.getObjectiveAccuracy());
         finalScoreEntity.setObjectiveScore(finalEffectiveExamScore.getObjectiveScore());
@@ -80,10 +82,7 @@ public class ExamStudentFinalScoreServiceImpl implements ExamStudentFinalScoreSe
     /**
      * 计算得出最终有效成绩
      */
-    private ExamRecordDataEntity getFinalEffectiveExamScore(List<ExamRecordDataEntity> examRecordAllList, String examType, String markingType) {
-        if (examRecordAllList == null || examRecordAllList.size() == 0) {
-            return null;
-        }
+    private ExamScoreEntity getFinalEffectiveExamScore(List<ExamRecordDataEntity> examRecordAllList, String examType, String markingType) {
         /*
          * 第一次过滤考试记录:
          * 状态为EXAM_END或EXAM_OVERDUE
@@ -115,24 +114,24 @@ public class ExamStudentFinalScoreServiceImpl implements ExamStudentFinalScoreSe
         for (int i = 0; i < secondFilterExamRecords.size(); i++) {
             examRecordDataIds.add(secondFilterExamRecords.get(i).getId());
         }
-//        List<ExamScoreEntity> effectiveExamScoreList = examScoreRepo.findByExamRecordDataIdIn(examRecordDataIds);
-//        if (effectiveExamScoreList == null || effectiveExamScoreList.size() == 0) {
-//            return null;
-//        }
+        List<ExamScoreEntity> effectiveExamScoreList = examScoreRepo.findByExamRecordDataIdIn(examRecordDataIds);
+        if (effectiveExamScoreList == null || effectiveExamScoreList.size() == 0) {
+            return null;
+        }
         //离线考试
         if ("OFFLINE".equals(examType)) {
-            return examRecordAllList.get(0);
+            return effectiveExamScoreList.get(0);
         } else {
             if (markingType.equals(MarkingType.ALL.name()) || markingType.equals(MarkingType.OBJECT_SCORE_MAX.name())) {
                 //全部评阅规则或客观分最高规则:取总分最高
-                List<ExamRecordDataEntity> examScores = examRecordAllList
+                List<ExamScoreEntity> examScores = effectiveExamScoreList
                         .stream()
                         .sorted((o1, o2) -> o2.getTotalScore().compareTo(o1.getTotalScore()))
                         .collect(Collectors.toList());
                 return examScores.get(0);
             } else if (markingType.equals(MarkingType.LAST_SUBMIT.name())) {
                 //最后一次提交规则:取最后一次的成绩
-                List<ExamRecordDataEntity> examScores = examRecordAllList
+                List<ExamScoreEntity> examScores = effectiveExamScoreList
                         .stream()
                         .sorted((o1, o2) -> o2.getId().compareTo(o1.getId()))
                         .collect(Collectors.toList());

+ 6 - 5
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/impl/OfflineExamServiceImpl.java

@@ -25,6 +25,7 @@ import cn.com.qmth.examcloud.core.oe.admin.dao.enums.ExamRecordStatus;
 import cn.com.qmth.examcloud.core.oe.admin.dao.enums.ExamType;
 import cn.com.qmth.examcloud.core.oe.admin.service.ExamRecordDataService;
 import cn.com.qmth.examcloud.core.oe.admin.service.ExamRecordForMarkingService;
+import cn.com.qmth.examcloud.core.oe.admin.service.ExamScoreService;
 import cn.com.qmth.examcloud.core.oe.admin.service.GainBaseDataService;
 import cn.com.qmth.examcloud.core.oe.admin.service.OfflineExamService;
 import cn.com.qmth.examcloud.core.oe.admin.service.bean.OfflineExamCourseInfo;
@@ -68,8 +69,8 @@ public class OfflineExamServiceImpl implements OfflineExamService {
     @Autowired
     private ExamRecordDataService examRecordDataService;
 
-//    @Autowired
-//    private ExamScoreService examScoreService;
+    @Autowired
+    private ExamScoreService examScoreService;
 
     @Autowired
     private ExamRecordForMarkingService examRecordForMarkingService;
@@ -182,11 +183,11 @@ public class OfflineExamServiceImpl implements OfflineExamService {
         GetPaperResp getPaperResp = extractConfigCloudService.getPaper(getPaperReq);
 
         //生成考试记录
-        examRecordDataService.createOfflineExamRecordData(bean,
+        ExamRecordDataEntity examRecordData = examRecordDataService.createOfflineExamRecordData(bean,
                 examBean, courseBean, getPaperResp.getPaperId(),
                 null, getPaperResp.getDefaultPaper().getFullyObjective());
-//        生成分数
-//        examScoreService.createExamScoreWithOffline(examRecordData.getId());
+        //生成分数
+        examScoreService.createExamScoreWithOffline(examRecordData.getId());
         //更新考生
         examStudentRepo.updateExamStudentFinished(examStudentId);
     }

+ 10 - 8
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/impl/PracticeServiceImpl.java

@@ -12,11 +12,13 @@ import cn.com.qmth.examcloud.core.basic.api.bean.CourseBean;
 import cn.com.qmth.examcloud.core.oe.admin.base.utils.QuestionTypeUtil;
 import cn.com.qmth.examcloud.core.oe.admin.dao.ExamRecordDataRepo;
 import cn.com.qmth.examcloud.core.oe.admin.dao.ExamRecordQuestionsRepo;
+import cn.com.qmth.examcloud.core.oe.admin.dao.ExamScoreRepo;
 import cn.com.qmth.examcloud.core.oe.admin.dao.ExamStudentRepo;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamQuestionEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamRecordDataEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamRecordPaperStructEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamRecordQuestionsEntity;
+import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamScoreEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamStudentEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.enums.ExamRecordStatus;
 import cn.com.qmth.examcloud.core.oe.admin.service.ExamRecordPaperStructService;
@@ -47,8 +49,8 @@ public class PracticeServiceImpl implements PracticeService {
     @Autowired
     private ExamRecordDataRepo examRecordDataRepo;
 
-//    @Autowired
-//    private ExamScoreRepo examScoreRepo;
+    @Autowired
+    private ExamScoreRepo examScoreRepo;
 
     @Autowired
     private ExamRecordQuestionsRepo examRecordQuestionsRepo;
@@ -93,12 +95,12 @@ public class PracticeServiceImpl implements PracticeService {
         List<ExamRecordDataEntity> examRecordEntities = examRecordDataRepo.findByExamStudentId(examStudent.getExamStudentId());
 
         int allExamRecordNums = 0;
-        List<ExamRecordDataEntity> examScoreEntities = new ArrayList<ExamRecordDataEntity>();
+        List<ExamScoreEntity> examScoreEntities = new ArrayList<ExamScoreEntity>();
         for (ExamRecordDataEntity examRecordData : examRecordEntities) {
             if (examRecordData.getExamRecordStatus() != ExamRecordStatus.EXAM_ING) {
                 allExamRecordNums++;
-//                ExamScoreEntity examScore = examScoreRepo.findByExamRecordDataId(examRecordData.getId());
-                examScoreEntities.add(examRecordData);
+                ExamScoreEntity examScore = examScoreRepo.findByExamRecordDataId(examRecordData.getId());
+                examScoreEntities.add(examScore);
             }
         }
         double allObjectiveAccuracy = 0;//总正确率
@@ -106,7 +108,7 @@ public class PracticeServiceImpl implements PracticeService {
         long recentObjectiveAccuracyId = 0;//最近ID
         double recentObjectiveAccuracy = 0;//最近客观题正确率
 
-        for (ExamRecordDataEntity examScore : examScoreEntities) {
+        for (ExamScoreEntity examScore : examScoreEntities) {
             if (examScore != null) {
                 if (examScore.getObjectiveAccuracy() > maxObjectiveAccuracy) {
                     maxObjectiveAccuracy = examScore.getObjectiveAccuracy();
@@ -157,8 +159,8 @@ public class PracticeServiceImpl implements PracticeService {
         practiceRecordInfo.setEndTime(examRecordData.getEndTime());
         practiceRecordInfo.setUsedExamTime(examRecordData.getUsedExamTime());
 
-//        ExamScoreEntity examScoreEntity = examScoreRepo.findByExamRecordDataId(examRecordData.getId());
-        practiceRecordInfo.setObjectiveAccuracy(examRecordData.getObjectiveAccuracy());//客观题答对的比率
+        ExamScoreEntity examScoreEntity = examScoreRepo.findByExamRecordDataId(examRecordData.getId());
+        practiceRecordInfo.setObjectiveAccuracy(examScoreEntity.getObjectiveAccuracy());//客观题答对的比率
         ExamRecordQuestionsEntity examRecordQuestions = examRecordQuestionsRepo.findByExamRecordDataId(examRecordData.getId());
         List<ExamQuestionEntity> examQuestionEntities = examRecordQuestions.getExamQuestionEntities();
         practiceRecordInfo = calculationExamQuestionSituationInfo(practiceRecordInfo, examQuestionEntities);

+ 0 - 4
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/pushscore/bean/ExamScorePushInfo.java

@@ -46,10 +46,6 @@ public class ExamScorePushInfo implements JsonSerializable {
 	 */
 	private Boolean isMissExam;
 
-	
-	/**
-	 * 实际赋值为examRecordDataId
-	 */
 	private Long scoreId;
 
 	private Double totalScore;

+ 18 - 14
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/pushscore/cup/CupExamScorePushServiceImpl.java

@@ -22,8 +22,11 @@ import org.springframework.stereotype.Service;
 import cn.com.qmth.examcloud.commons.util.JsonUtil;
 import cn.com.qmth.examcloud.core.basic.api.bean.CourseBean;
 import cn.com.qmth.examcloud.core.oe.admin.dao.ExamRecordDataRepo;
+import cn.com.qmth.examcloud.core.oe.admin.dao.ExamScorePushQueueRepo;
+import cn.com.qmth.examcloud.core.oe.admin.dao.ExamScoreRepo;
 import cn.com.qmth.examcloud.core.oe.admin.dao.ExamStudentRepo;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamRecordDataEntity;
+import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamScoreEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamScorePushQueue;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamStudentEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.enums.ExamScoreQueueStatus;
@@ -45,8 +48,8 @@ public class CupExamScorePushServiceImpl implements ExamScorePushService {
 
     private static final Logger log = LoggerFactory.getLogger(CupExamScorePushServiceImpl.class);
 
-//    @Autowired
-//    private ExamScoreRepo examScoreRepo;
+    @Autowired
+    private ExamScoreRepo examScoreRepo;
 
     @Autowired
     private ExamRecordDataRepo examRecordDataRepo;
@@ -54,8 +57,8 @@ public class CupExamScorePushServiceImpl implements ExamScorePushService {
     @Autowired
     private ExamStudentRepo examStudentRepo;
 
-//    @Autowired
-//    private ExamScorePushQueueRepo examScorePushQueueRepo;
+    @Autowired
+    private ExamScorePushQueueRepo examScorePushQueueRepo;
 
     @Autowired
     private ExamScoreQueueService examScoreQueueService;
@@ -69,16 +72,16 @@ public class CupExamScorePushServiceImpl implements ExamScorePushService {
     @Override
     public void scorePush(ExamScorePushQueue examScorePushQueue) {
         log.info("开始推送石油大学成绩:" + examScorePushQueue.getId());
-//        Long scoreId = examScorePushQueue.getExamScoreId();
-//        ExamScoreEntity examScore = GlobalHelper.getEntity(examScoreRepo, scoreId, ExamScoreEntity.class);
-        ExamRecordDataEntity examRecordData = GlobalHelper.getEntity(examRecordDataRepo, examScorePushQueue.getExamRecordDataId(), ExamRecordDataEntity.class);
+        Long scoreId = examScorePushQueue.getExamScoreId();
+        ExamScoreEntity examScore = GlobalHelper.getEntity(examScoreRepo, scoreId, ExamScoreEntity.class);
+        ExamRecordDataEntity examRecordData = GlobalHelper.getEntity(examRecordDataRepo, examScore.getExamRecordDataId(), ExamRecordDataEntity.class);
 
         ExamStudentEntity examStudent = examStudentRepo.findByExamStudentId(examRecordData.getExamStudentId());
-        if (examRecordData == null || examStudent == null) {
+        if (examScore == null || examRecordData == null || examStudent == null) {
             return;
         }
 
-        ExamScorePushInfo examScorePushInfo = buildexamScorePushInfo(examRecordData, examStudent);
+        ExamScorePushInfo examScorePushInfo = buildexamScorePushInfo(examScore, examRecordData, examStudent);
         String courseCode = examScorePushInfo.getCourseCode();
         //将Z000001变成000001
         if (courseCode.startsWith("Z") || courseCode.startsWith("Q") || courseCode.startsWith("S")) {
@@ -158,7 +161,8 @@ public class CupExamScorePushServiceImpl implements ExamScorePushService {
         }
     }
 
-    private ExamScorePushInfo buildexamScorePushInfo(ExamRecordDataEntity examRecordDataEntity,
+    private ExamScorePushInfo buildexamScorePushInfo(ExamScoreEntity examScore,
+                                                     ExamRecordDataEntity examRecordDataEntity,
                                                      ExamStudentEntity examStudentEntity) {
         ExamScorePushInfo examScorePushInfo = new ExamScorePushInfo();
         examScorePushInfo.setExamId(examStudentEntity.getExamId());
@@ -178,10 +182,10 @@ public class CupExamScorePushServiceImpl implements ExamScorePushService {
         examScorePushInfo.setEndTime(examRecordDataEntity.getEndTime());
         examScorePushInfo.setSuccPercent(examRecordDataEntity.getFaceSuccessPercent());
         examScorePushInfo.setIsIllegality(examRecordDataEntity.getIsIllegality());
-        examScorePushInfo.setScoreId(examRecordDataEntity.getId());
-        examScorePushInfo.setTotalScore(examRecordDataEntity.getTotalScore());
-        examScorePushInfo.setObjectiveScore(examRecordDataEntity.getObjectiveScore());
-        examScorePushInfo.setSubjectiveScore(examRecordDataEntity.getSubjectiveScore());
+        examScorePushInfo.setScoreId(examScore.getId());
+        examScorePushInfo.setTotalScore(examScore.getTotalScore());
+        examScorePushInfo.setObjectiveScore(examScore.getObjectiveScore());
+        examScorePushInfo.setSubjectiveScore(examScore.getSubjectiveScore());
         return examScorePushInfo;
     }
 

+ 13 - 11
examcloud-core-oe-admin-service/src/main/java/cn/com/qmth/examcloud/core/oe/admin/service/pushscore/swufe/SwufeExamScorePushServiceImpl.java

@@ -25,8 +25,10 @@ import org.springframework.stereotype.Service;
 import cn.com.qmth.examcloud.core.basic.api.bean.CourseBean;
 import cn.com.qmth.examcloud.core.oe.admin.base.utils.CommonUtil;
 import cn.com.qmth.examcloud.core.oe.admin.dao.ExamRecordDataRepo;
+import cn.com.qmth.examcloud.core.oe.admin.dao.ExamScoreRepo;
 import cn.com.qmth.examcloud.core.oe.admin.dao.ExamStudentRepo;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamRecordDataEntity;
+import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamScoreEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamScorePushQueue;
 import cn.com.qmth.examcloud.core.oe.admin.dao.entity.ExamStudentEntity;
 import cn.com.qmth.examcloud.core.oe.admin.dao.enums.ExamScoreQueueStatus;
@@ -49,8 +51,8 @@ public class SwufeExamScorePushServiceImpl implements ExamScorePushService{
 
 	private static final Logger log = LoggerFactory.getLogger(SwufeExamScorePushServiceImpl.class);
 	
-//	@Autowired
-//	private ExamScoreRepo examScoreRepo;
+	@Autowired
+	private ExamScoreRepo examScoreRepo;
 	
 	@Autowired
 	private ExamRecordDataRepo examRecordDataRepo;
@@ -67,14 +69,14 @@ public class SwufeExamScorePushServiceImpl implements ExamScorePushService{
 	public void scorePush(ExamScorePushQueue examScorePushQueue) {
 		log.info("开始推送西南财大成绩:"+examScorePushQueue.getId());
 		Long scoreId = examScorePushQueue.getExamScoreId();
-//		ExamScoreEntity examScore = GlobalHelper.getEntity(examScoreRepo,scoreId,ExamScoreEntity.class);
-		ExamRecordDataEntity examRecordData = GlobalHelper.getEntity(examRecordDataRepo,examScorePushQueue.getExamRecordDataId(),ExamRecordDataEntity.class);
+		ExamScoreEntity examScore = GlobalHelper.getEntity(examScoreRepo,scoreId,ExamScoreEntity.class);
+		ExamRecordDataEntity examRecordData = GlobalHelper.getEntity(examRecordDataRepo,examScore.getExamRecordDataId(),ExamRecordDataEntity.class);
 
 		ExamStudentEntity examStudent = examStudentRepo.findByExamStudentId(examRecordData.getExamStudentId());
-		if(examRecordData == null || examStudent == null){
+		if(examScore == null || examRecordData == null || examStudent == null){
 			return;
 		}
-		ExamScorePushInfo examScorePushInfo = buildexamScorePushInfo(examRecordData,examStudent);
+		ExamScorePushInfo examScorePushInfo = buildexamScorePushInfo(examScore,examRecordData,examStudent);
 		
 		if (examScorePushInfo != null) {
 			 CloseableHttpResponse httpResponse = null;
@@ -157,7 +159,7 @@ public class SwufeExamScorePushServiceImpl implements ExamScorePushService{
         return params;
 	}
 
-	private ExamScorePushInfo buildexamScorePushInfo(ExamRecordDataEntity examRecordDataEntity, ExamStudentEntity examStudentEntity) {
+	private ExamScorePushInfo buildexamScorePushInfo(ExamScoreEntity examScore,ExamRecordDataEntity examRecordDataEntity, ExamStudentEntity examStudentEntity) {
 		ExamScorePushInfo examScorePushInfo = new ExamScorePushInfo();
 		examScorePushInfo.setExamId(examStudentEntity.getExamId());
 
@@ -175,10 +177,10 @@ public class SwufeExamScorePushServiceImpl implements ExamScorePushService{
 		examScorePushInfo.setEndTime(examRecordDataEntity.getEndTime());
 		examScorePushInfo.setSuccPercent(examRecordDataEntity.getFaceSuccessPercent());
 		examScorePushInfo.setIsIllegality(examRecordDataEntity.getIsIllegality());
-		examScorePushInfo.setScoreId(examRecordDataEntity.getId());
-		examScorePushInfo.setTotalScore(examRecordDataEntity.getTotalScore());
-		examScorePushInfo.setObjectiveScore(examRecordDataEntity.getObjectiveScore());
-		examScorePushInfo.setSubjectiveScore(examRecordDataEntity.getSubjectiveScore());
+		examScorePushInfo.setScoreId(examScore.getId());
+		examScorePushInfo.setTotalScore(examScore.getTotalScore());
+		examScorePushInfo.setObjectiveScore(examScore.getObjectiveScore());
+		examScorePushInfo.setSubjectiveScore(examScore.getSubjectiveScore());
 		return examScorePushInfo;
 	}