Browse Source

添加同步数据执行器

lideyin 5 years ago
parent
commit
1101220a18

+ 85 - 0
examcloud-core-oe-task-service/src/main/java/cn/com/qmth/examcloud/core/oe/task/service/pipeline/SyncExamDataExecutor.java

@@ -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;
+    }
+
+}