deason 1 年之前
父節點
當前提交
806b817dab

+ 14 - 0
src/main/java/cn/com/qmth/examcloud/tool/config/SysConfig.java

@@ -0,0 +1,14 @@
+package cn.com.qmth.examcloud.tool.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class SysConfig {
+
+    @Bean
+    public SpringContextHolder springContextHolder() {
+        return new SpringContextHolder();
+    }
+
+}

+ 18 - 5
src/main/java/cn/com/qmth/examcloud/tool/enums/TaskType.java

@@ -1,26 +1,39 @@
 package cn.com.qmth.examcloud.tool.enums;
 
+import cn.com.qmth.examcloud.tool.service.TaskService;
+import cn.com.qmth.examcloud.tool.service.config_exam_paper.ConfigExamPaperTask;
+import cn.com.qmth.examcloud.tool.service.create_random_paper_template.CreateRandomPaperTemplateTask;
+import cn.com.qmth.examcloud.tool.service.export_student_answer_and_score_detail.ExportStudentAnswerAndScoreDetailTask;
+import cn.com.qmth.examcloud.tool.service.update_correct_answer_and_re_fix_score.UpdateCorrectAnswerAndReFixScoreTask;
+
 /**
  * 任务类型
  */
 public enum TaskType {
 
-    EXPORT_STUDENT_ANSWER_AND_SCORE_DETAIL("导出考生试题作答和得分明细"),
+    EXPORT_STUDENT_ANSWER_AND_SCORE_DETAIL("导出考生试题作答和得分明细", ExportStudentAnswerAndScoreDetailTask.class),
 
-    UPDATE_CORRECT_ANSWER_AND_RE_FIX_SCORE("更新正确答案并重新算分"),
+    UPDATE_CORRECT_ANSWER_AND_RE_FIX_SCORE("更新正确答案并重新算分", UpdateCorrectAnswerAndReFixScoreTask.class),
 
-    CONFIG_EXAM_PAPER("配置考试调卷规则"),
+    CONFIG_EXAM_PAPER("配置考试调卷规则", ConfigExamPaperTask.class),
 
-    CREATE_RANDOM_PAPER_TEMPLATE("创建随机抽卷模板");
+    CREATE_RANDOM_PAPER_TEMPLATE("创建随机抽卷模板", CreateRandomPaperTemplateTask.class);
 
-    TaskType(String description) {
+    TaskType(String description, Class<? extends TaskService> impl) {
         this.description = description;
+        this.impl = impl;
     }
 
     private String description;
 
+    private Class<? extends TaskService> impl;
+
     public String getDescription() {
         return description;
     }
 
+    public Class<? extends TaskService> getImpl() {
+        return impl;
+    }
+
 }

+ 3 - 29
src/main/java/cn/com/qmth/examcloud/tool/service/TaskManager.java

@@ -1,13 +1,9 @@
 package cn.com.qmth.examcloud.tool.service;
 
+import cn.com.qmth.examcloud.tool.config.SpringContextHolder;
 import cn.com.qmth.examcloud.tool.dao.TaskRepository;
 import cn.com.qmth.examcloud.tool.entity.TaskEntity;
 import cn.com.qmth.examcloud.tool.enums.TaskStatus;
-import cn.com.qmth.examcloud.tool.enums.TaskType;
-import cn.com.qmth.examcloud.tool.service.config_exam_paper.ConfigExamPaperTask;
-import cn.com.qmth.examcloud.tool.service.create_random_paper_template.CreateRandomPaperTemplateTask;
-import cn.com.qmth.examcloud.tool.service.export_student_answer_and_score_detail.ExportStudentAnswerAndScoreDetailTask;
-import cn.com.qmth.examcloud.tool.service.update_correct_answer_and_re_fix_score.UpdateCorrectAnswerAndReFixScoreTask;
 import cn.com.qmth.examcloud.tool.utils.StatusException;
 import cn.com.qmth.examcloud.tool.vo.task.TaskAdd;
 import cn.com.qmth.examcloud.tool.vo.task.TaskQuery;
@@ -37,18 +33,6 @@ public class TaskManager {
     @Autowired
     private TaskRepository taskRepository;
 
-    @Autowired
-    private ExportStudentAnswerAndScoreDetailTask exportStudentAnswerAndScoreDetailTask;
-
-    @Autowired
-    private UpdateCorrectAnswerAndReFixScoreTask updateCorrectAnswerAndReFixScoreTask;
-
-    @Autowired
-    private ConfigExamPaperTask configExamPaperTask;
-
-    @Autowired
-    private CreateRandomPaperTemplateTask createRandomPaperTemplate;
-
     public Page<TaskEntity> getTaskList(TaskQuery req) {
         if (req.getPageNo() == null || req.getPageNo() < 1) {
             req.setPageNo(1);
@@ -137,18 +121,8 @@ public class TaskManager {
         taskRepository.save(task);
 
         try {
-            if (TaskType.EXPORT_STUDENT_ANSWER_AND_SCORE_DETAIL == task.getType()) {
-                exportStudentAnswerAndScoreDetailTask.start(task);
-            } else if (TaskType.UPDATE_CORRECT_ANSWER_AND_RE_FIX_SCORE == task.getType()) {
-                updateCorrectAnswerAndReFixScoreTask.start(task);
-            } else if (TaskType.CONFIG_EXAM_PAPER == task.getType()) {
-                configExamPaperTask.start(task);
-            } else if (TaskType.CREATE_RANDOM_PAPER_TEMPLATE == task.getType()) {
-                createRandomPaperTemplate.start(task);
-            } else {
-                throw new StatusException("功能暂未实现!");
-            }
-
+            TaskService taskService = SpringContextHolder.getBean(task.getType().getImpl());
+            taskService.start(task);
             task.setStatus(TaskStatus.SUCCESS);
         } catch (Exception e) {
             log.error(e.getMessage(), e);

+ 9 - 0
src/main/java/cn/com/qmth/examcloud/tool/service/TaskService.java

@@ -0,0 +1,9 @@
+package cn.com.qmth.examcloud.tool.service;
+
+import cn.com.qmth.examcloud.tool.entity.TaskEntity;
+
+public interface TaskService {
+
+    void start(TaskEntity task);
+
+}

+ 3 - 1
src/main/java/cn/com/qmth/examcloud/tool/service/config_exam_paper/ConfigExamPaperTask.java

@@ -4,6 +4,7 @@ import cn.com.qmth.examcloud.tool.cache.LoginSessionManager;
 import cn.com.qmth.examcloud.tool.config.SysProperty;
 import cn.com.qmth.examcloud.tool.entity.TaskEntity;
 import cn.com.qmth.examcloud.tool.service.CommonService;
+import cn.com.qmth.examcloud.tool.service.TaskService;
 import cn.com.qmth.examcloud.tool.service.export_student_answer_and_score_detail.vo.CourseVO;
 import cn.com.qmth.examcloud.tool.utils.HttpHelper;
 import cn.com.qmth.examcloud.tool.utils.JsonMapper;
@@ -22,7 +23,7 @@ import java.util.List;
 import java.util.Map;
 
 @Component
-public class ConfigExamPaperTask {
+public class ConfigExamPaperTask implements TaskService {
 
     private final static Logger log = LoggerFactory.getLogger(ConfigExamPaperTask.class);
 
@@ -32,6 +33,7 @@ public class ConfigExamPaperTask {
     @Autowired
     private SysProperty sysProperty;
 
+    @Override
     public void start(TaskEntity task) {
         JsonNode jsonParams = new JsonMapper().getNode(task.getParams());
         if (jsonParams == null) {

+ 3 - 1
src/main/java/cn/com/qmth/examcloud/tool/service/create_random_paper_template/CreateRandomPaperTemplateTask.java

@@ -4,6 +4,7 @@ import cn.com.qmth.examcloud.tool.cache.LoginSessionManager;
 import cn.com.qmth.examcloud.tool.config.SysProperty;
 import cn.com.qmth.examcloud.tool.entity.TaskEntity;
 import cn.com.qmth.examcloud.tool.service.CommonService;
+import cn.com.qmth.examcloud.tool.service.TaskService;
 import cn.com.qmth.examcloud.tool.service.create_random_paper_template.vo.PaperStructVO;
 import cn.com.qmth.examcloud.tool.service.create_random_paper_template.vo.PaperVO;
 import cn.com.qmth.examcloud.tool.service.create_random_paper_template.vo.RandomPaperTemplateVO;
@@ -28,7 +29,7 @@ import java.text.ParseException;
 import java.util.*;
 
 @Component
-public class CreateRandomPaperTemplateTask {
+public class CreateRandomPaperTemplateTask implements TaskService {
 
     private final static Logger log = LoggerFactory.getLogger(CreateRandomPaperTemplateTask.class);
 
@@ -38,6 +39,7 @@ public class CreateRandomPaperTemplateTask {
     @Autowired
     private SysProperty sysProperty;
 
+    @Override
     public void start(TaskEntity task) {
         JsonNode jsonParams = new JsonMapper().getNode(task.getParams());
         if (jsonParams == null) {

+ 3 - 1
src/main/java/cn/com/qmth/examcloud/tool/service/export_student_answer_and_score_detail/ExportStudentAnswerAndScoreDetailTask.java

@@ -4,6 +4,7 @@ import cn.com.qmth.examcloud.tool.cache.LoginSessionManager;
 import cn.com.qmth.examcloud.tool.config.SysProperty;
 import cn.com.qmth.examcloud.tool.entity.TaskEntity;
 import cn.com.qmth.examcloud.tool.service.CommonService;
+import cn.com.qmth.examcloud.tool.service.TaskService;
 import cn.com.qmth.examcloud.tool.service.export_student_answer_and_score_detail.vo.*;
 import cn.com.qmth.examcloud.tool.utils.*;
 import cn.com.qmth.examcloud.tool.vo.Pager;
@@ -26,7 +27,7 @@ import java.io.File;
 import java.util.*;
 
 @Component
-public class ExportStudentAnswerAndScoreDetailTask {
+public class ExportStudentAnswerAndScoreDetailTask implements TaskService {
 
     private final static Logger log = LoggerFactory.getLogger(ExportStudentAnswerAndScoreDetailTask.class);
 
@@ -36,6 +37,7 @@ public class ExportStudentAnswerAndScoreDetailTask {
     @Autowired
     private SysProperty sysProperty;
 
+    @Override
     public void start(TaskEntity task) {
         JsonNode jsonParams = new JsonMapper().getNode(task.getParams());
         if (jsonParams == null) {

+ 3 - 1
src/main/java/cn/com/qmth/examcloud/tool/service/update_correct_answer_and_re_fix_score/UpdateCorrectAnswerAndReFixScoreTask.java

@@ -4,6 +4,7 @@ import cn.com.qmth.examcloud.tool.cache.LoginSessionManager;
 import cn.com.qmth.examcloud.tool.config.SysProperty;
 import cn.com.qmth.examcloud.tool.entity.TaskEntity;
 import cn.com.qmth.examcloud.tool.service.CommonService;
+import cn.com.qmth.examcloud.tool.service.TaskService;
 import cn.com.qmth.examcloud.tool.service.export_student_answer_and_score_detail.vo.CourseVO;
 import cn.com.qmth.examcloud.tool.service.update_correct_answer_and_re_fix_score.vo.ExamStudentVO;
 import cn.com.qmth.examcloud.tool.utils.HttpHelper;
@@ -26,7 +27,7 @@ import java.util.List;
 import java.util.Map;
 
 @Component
-public class UpdateCorrectAnswerAndReFixScoreTask {
+public class UpdateCorrectAnswerAndReFixScoreTask implements TaskService {
 
     private final static Logger log = LoggerFactory.getLogger(UpdateCorrectAnswerAndReFixScoreTask.class);
 
@@ -36,6 +37,7 @@ public class UpdateCorrectAnswerAndReFixScoreTask {
     @Autowired
     private SysProperty sysProperty;
 
+    @Override
     public void start(TaskEntity task) {
         JsonNode jsonParams = new JsonMapper().getNode(task.getParams());
         if (jsonParams == null) {

+ 3 - 4
src/test/java/cn/com/qmth/examcloud/tool/ToolTest.java

@@ -1,6 +1,7 @@
 package cn.com.qmth.examcloud.tool;
 
 import cn.com.qmth.examcloud.tool.cache.LoginSessionManager;
+import cn.com.qmth.examcloud.tool.config.SpringContextHolder;
 import cn.com.qmth.examcloud.tool.config.SysProperty;
 import cn.com.qmth.examcloud.tool.entity.TaskEntity;
 import cn.com.qmth.examcloud.tool.service.CommonService;
@@ -34,9 +35,6 @@ public class ToolTest {
     @Autowired
     private QueryPaperStructTask queryPaperStructTask;
 
-    @Autowired
-    private CreateRandomPaperTemplateTask createRandomPaperTemplateTask;
-
     @Test
     public void demo() throws Exception {
         User user = doLogin();
@@ -58,7 +56,8 @@ public class ToolTest {
         TaskEntity task = new TaskEntity();
         task.setUserToken(user.getToken());
         task.setParams(new JsonMapper().toJson(params));
-        createRandomPaperTemplateTask.start(task);
+
+        SpringContextHolder.getBean(CreateRandomPaperTemplateTask.class).start(task);
     }
 
     private User doLogin() {