|
@@ -0,0 +1,85 @@
|
|
|
+package cn.com.qmth.examcloud.core.oe.task.service.pipeline;
|
|
|
+
|
|
|
+import cn.com.qmth.examcloud.commons.helpers.KeyValuePair;
|
|
|
+import cn.com.qmth.examcloud.commons.helpers.pipeline.NodeExecuter;
|
|
|
+import cn.com.qmth.examcloud.commons.helpers.pipeline.TaskContext;
|
|
|
+import cn.com.qmth.examcloud.core.oe.admin.api.SyncExamDataCloudService;
|
|
|
+import cn.com.qmth.examcloud.core.oe.admin.api.bean.ExamRecordDataBean;
|
|
|
+import cn.com.qmth.examcloud.core.oe.admin.api.request.SyncExamDataReq;
|
|
|
+import cn.com.qmth.examcloud.core.oe.task.service.ExamRecordDataService;
|
|
|
+import cn.com.qmth.examcloud.support.enums.ExamRecordStatus;
|
|
|
+import cn.com.qmth.examcloud.support.examing.ExamRecordData;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @Description 同步考试数据执行器
|
|
|
+ * @Author lideyin
|
|
|
+ * @Date 2019/12/19 16:22
|
|
|
+ * @Version 1.0
|
|
|
+ */
|
|
|
+@Component
|
|
|
+public class SyncExamDataExecutor implements NodeExecuter<Long, ExamRecordData, Long, ExamRecordData> {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SyncExamDataCloudService syncExamDataCloudService;
|
|
|
+ @Autowired
|
|
|
+ private ExamRecordDataService examRecordDataService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<KeyValuePair<Long, ExamRecordData>> execute(Long key, ExamRecordData examRecordData, TaskContext context) throws Exception {
|
|
|
+
|
|
|
+ List<KeyValuePair<Long, ExamRecordData>> resultList = new ArrayList<>();
|
|
|
+ KeyValuePair<Long, ExamRecordData> keyValuePair = new KeyValuePair<>(key, examRecordData);
|
|
|
+
|
|
|
+ //处理上一节点中,指定时间内仍未处理完成的数据
|
|
|
+ if (examRecordData.getExamRecordStatus() == ExamRecordStatus.EXAM_HAND_IN ||
|
|
|
+ examRecordData.getExamRecordStatus() == ExamRecordStatus.EXAM_AUTO_HAND_IN) {
|
|
|
+ examRecordDataService.processAfterHandInExam(examRecordData.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ //同步数据
|
|
|
+ SyncExamDataReq syncReq = new SyncExamDataReq();
|
|
|
+ syncReq.setExamRecordData(copyExamRecordDataFrom(examRecordData));
|
|
|
+ syncExamDataCloudService.syncExamRecordData(syncReq);
|
|
|
+
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ private ExamRecordDataBean copyExamRecordDataFrom(ExamRecordData examRecordData){
|
|
|
+ ExamRecordDataBean data = new ExamRecordDataBean();
|
|
|
+ data.setId(examRecordData.getId());
|
|
|
+ data.setExamId(examRecordData.getExamId());
|
|
|
+ data.setExamType(examRecordData.getExamType() == null ? null : examRecordData.getExamType().toString());
|
|
|
+ data.setExamStudentId(examRecordData.getExamStudentId());
|
|
|
+ data.setStudentId(examRecordData.getStudentId());
|
|
|
+ data.setCourseId(examRecordData.getCourseId());
|
|
|
+ data.setOrgId(examRecordData.getOrgId());
|
|
|
+ data.setRootOrgId(examRecordData.getRootOrgId());
|
|
|
+ data.setBasePaperId(examRecordData.getBasePaperId());
|
|
|
+ data.setPaperType(examRecordData.getPaperType());
|
|
|
+ data.setExamRecordStatus(examRecordData.getExamRecordStatus() == null ? null : examRecordData.getExamRecordStatus().toString());
|
|
|
+ data.setStartTime(examRecordData.getStartTime());
|
|
|
+ data.setEndTime(examRecordData.getEndTime());
|
|
|
+ data.setCleanTime(examRecordData.getCleanTime());
|
|
|
+ data.setWarn(examRecordData.getIsWarn());
|
|
|
+ data.setAudit(examRecordData.getIsAudit());
|
|
|
+ data.setIllegality(examRecordData.getIsIllegality());
|
|
|
+ data.setUsedExamTime(examRecordData.getUsedExamTime());
|
|
|
+ data.setContinued(examRecordData.getIsContinued());
|
|
|
+ data.setContinuedCount(examRecordData.getContinuedCount());
|
|
|
+ data.setExceed(examRecordData.getIsExceed());
|
|
|
+ data.setFaceSuccessCount(examRecordData.getFaceSuccessCount());
|
|
|
+ data.setFaceFailedCount(examRecordData.getFaceFailedCount());
|
|
|
+ data.setFaceStrangerCount(examRecordData.getFaceStrangerCount());
|
|
|
+ data.setFaceTotalCount(examRecordData.getFaceTotalCount());
|
|
|
+ data.setFaceSuccessPercent(examRecordData.getFaceSuccessPercent());
|
|
|
+ data.setFaceVerifyResult(examRecordData.getFaceVerifyResult() == null ? null : examRecordData.getFaceVerifyResult().toString());
|
|
|
+ data.setBaiduFaceLivenessSuccessPercent(examRecordData.getBaiduFaceLivenessSuccessPercent());
|
|
|
+ return data;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|