chensc 8 rokov pred
rodič
commit
4b56855251

+ 2 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/dao/ExamDao.java

@@ -35,4 +35,6 @@ public interface ExamDao extends PagingAndSortingRepository<Task, Long>{
             "where t.status in (0, 1)")
     List<Task> findStatus0And1();
 
+    List<Task> findAll();
+
 }

+ 1 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/ExamSchedulerService.java

@@ -9,4 +9,5 @@ public interface ExamSchedulerService {
     public boolean createNewExamScheduler(Task task);
 //    public boolean changeExamScheduler(Task task, String newCronExp);
     public boolean cancelExamScheduler(Task task);
+    public void clearAllSchedulers();
 }

+ 2 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/ExamService.java

@@ -26,4 +26,6 @@ public interface ExamService {
     void saveExam2Paper(Long examId, Long paperId);
 
     List<Task> getExamDuringStatus0And1();
+
+    List<Task> getAllTask();
 }

+ 6 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/ExamSchedulerServiceImpl.java

@@ -28,11 +28,17 @@ public class ExamSchedulerServiceImpl implements ExamSchedulerService {
     private ConcurrentHashMap<Task, ExamScheduler> map = new ConcurrentHashMap<>();
 
     @Override
+    public void clearAllSchedulers() {
+        this.map = new ConcurrentHashMap<>();
+    }
+
+    @Override
     public boolean createNewExamScheduler(Task task) {
         if(! this.map.containsKey(task)) {
             ExamScheduler examScheduler = new ExamScheduler(task, this.generateNextCronExp(task));
             examScheduler.startCron();
             map.put(task, examScheduler);
+            System.out.println("map.size: " + map.size());
             return true;
         }
         return false;

+ 5 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/ExamServiceImpl.java

@@ -85,4 +85,9 @@ public class ExamServiceImpl extends BaseService implements ExamService {
         return examDao.findStatus0And1();
     }
 
+    @Override
+    public List<Task> getAllTask() {
+        return examDao.findAll();
+    }
+
 }

+ 5 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/ctrl/ExamController.java

@@ -130,9 +130,14 @@ public class ExamController {
 
     @RequestMapping(value = UrlConstants.API + "startInitMap")
     public boolean startInitExamSchedulerMap() {
+        examLogic.clearAllSchedulers();
         System.out.println("startInitExamSchedulerMap in ExamController");
         return examLogic.startInitExamSchedulerMap();
     }
 
+    @RequestMapping(value = UrlConstants.API + "updateStatusForAllTask")
+    public boolean updateStatutsForAllTask() {
+        return examLogic.updateStatutsForAllTask();
+    }
 
 }

+ 4 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/ExamLogic.java

@@ -35,4 +35,8 @@ public interface ExamLogic {
     void saveExam2Paper(Long examId, Long paperId);
 
     boolean startInitExamSchedulerMap();
+
+    boolean updateStatutsForAllTask();
+
+    public void clearAllSchedulers();
 }

+ 19 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/ExamLogicImpl.java

@@ -61,6 +61,9 @@ public class ExamLogicImpl extends BaseLogic implements ExamLogic {
     ExamSchedulerService examSchedulerService;
 
     @Autowired
+    ExamStatusService examStatusService;
+
+    @Autowired
     TaskPermissionService taskPermissionService;
 
     @Autowired
@@ -240,4 +243,20 @@ public class ExamLogicImpl extends BaseLogic implements ExamLogic {
         }
         return  false;
     }
+
+    @Override
+    public boolean updateStatutsForAllTask() {
+        List<Task> allTask =  examService.getAllTask();
+        for (Task task: allTask) {
+            examStatusService.updateStatus(task);
+        }
+        return true;
+    }
+
+    @Override
+    public void clearAllSchedulers() {
+        examSchedulerService.clearAllSchedulers();
+    }
+
+
 }