From 612127d7830372cda153b4af4a41c5e3b9f7e4f0 Mon Sep 17 00:00:00 2001
From: eight <641137800@qq.com>
Date: 星期四, 29 八月 2024 18:28:32 +0800
Subject: [PATCH] update  job scheduler

---
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java |   50 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 50 insertions(+), 0 deletions(-)

diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java
index ae4fdb7..ef629f5 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java
@@ -1,11 +1,17 @@
 package cn.lihu.jh.module.ecg.service.queue;
 
+import java.time.LocalTime;
 import java.util.*;
 import java.util.concurrent.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import javax.annotation.Resource;
 
+import cn.lihu.jh.module.ecg.Utils;
 import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomDO;
+import cn.lihu.jh.module.ecg.service.room.RoomService;
+import org.springframework.scheduling.config.CronTask;
+import org.springframework.scheduling.config.ScheduledTask;
+import org.springframework.scheduling.config.ScheduledTaskRegistrar;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
@@ -28,6 +34,8 @@
 import static cn.lihu.jh.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.lihu.jh.framework.common.pojo.CommonResult.error;
 import static cn.lihu.jh.framework.common.pojo.CommonResult.success;
+import static cn.lihu.jh.module.ecg.Constants.ECG_OPENING_TIME_KEY;
+import static cn.lihu.jh.module.ecg.Constants.ECG_ROOM_RESET_TIME_KEY;
 import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.*;
 
 /**
@@ -41,6 +49,16 @@
 
     @Resource
     private ConfigApi configApi;
+
+    @Resource
+    private ScheduledTaskRegistrar taskRegistrar;
+
+    @Resource
+    private QueueService queueService;
+
+    @Resource
+    private RoomService roomService;
+
 
     @Resource
     private queueMapper queueMapper;
@@ -563,6 +581,38 @@
     }
 
     @Override
+    public void resetScheduler() {
+        Set<ScheduledTask> taskList = taskRegistrar.getScheduledTasks();
+        taskList.forEach((task)->task.cancel());
+
+        String strOpenCloseTime = configApi.getConfigValueByKey(ECG_OPENING_TIME_KEY);
+        List<LocalTime> list = Utils.parseOpeningTime(strOpenCloseTime);
+        LocalTime openingTime = list.get(0);
+        LocalTime closeTime = list.get(1);
+        String openCronExpression = String.format("0 %d %d  * * ?", openingTime.getMinute(), openingTime.getHour());
+        String closeCronExpression = String.format("0 %d %d  * * ?", closeTime.getMinute(), closeTime.getHour());
+
+        String strRoomResetTime = configApi.getConfigValueByKey(ECG_ROOM_RESET_TIME_KEY);
+        LocalTime roomResetTime = Utils.parseTime(strRoomResetTime);
+        String roomResetCronExpression = String.format("0 %d %d  * * ?", roomResetTime.getMinute(), roomResetTime.getHour());
+
+        taskRegistrar.scheduleCronTask(new CronTask(() -> {
+            System.out.println("Opening Task executed at: " + System.currentTimeMillis());
+            queueService.startBiz();
+        }, openCronExpression));
+
+        taskRegistrar.scheduleCronTask(new CronTask(() -> {
+            System.out.println("Close Task executed at: " + System.currentTimeMillis());
+            queueService.closeBiz();
+        }, closeCronExpression));
+
+        taskRegistrar.scheduleCronTask(new CronTask(() -> {
+            System.out.println("Room Reset Task executed at: " + System.currentTimeMillis());
+            roomService.resetRoom();
+        }, roomResetCronExpression));
+    }
+
+    @Override
     public Integer recallPatient(Long roomId, String bedNo, String patId) {
         Integer updateNum = queueMapper.recallPassedPatient(roomId, bedNo, patId,
                 QueueStatusEnum.PASSED.getStatus(), QueueStatusEnum.PASSED_RETURN.getStatus());

--
Gitblit v1.9.3