From 6e88d32c8fe09152a326adf4961691373fcfda87 Mon Sep 17 00:00:00 2001
From: eight <641137800@qq.com>
Date: 星期五, 23 八月 2024 16:17:48 +0800
Subject: [PATCH] update

---
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/config/DynamicSchedulingConfig.java |   20 +++++++---
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/listener/MySpringEventListener.java |   15 +++----
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java |    7 +++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/Utils.java                          |   25 +++++++++---
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java     |    1 
 5 files changed, 48 insertions(+), 20 deletions(-)

diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/Utils.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/Utils.java
index 57a0132..4b40db7 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/Utils.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/Utils.java
@@ -3,12 +3,14 @@
 import jodd.typeconverter.impl.LocalTimeConverter;
 
 import java.time.LocalTime;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 public class Utils {
-    public static LocalTime parseOpeningTime(String strOpeningTime) {
-        String regex = "(\\d+)[:锛歖(\\d+)";
+    public static List<LocalTime> parseOpeningTime(String strOpeningTime) {
+        String regex = "(\\d+)[:锛歖(\\d+)~(\\d+)[:锛歖(\\d+)";
         Pattern pattern = Pattern.compile(regex);
         Matcher matcher = pattern.matcher(strOpeningTime);
 
@@ -19,12 +21,23 @@
         String fullMatch = matcher.group();
 
         // 鑾峰彇绗竴涓崟鑾风粍锛堝皬鏃讹級
-        String strHour = matcher.group(1);
+        String strOpenHour = matcher.group(1);
 
         // 鑾峰彇绗簩涓崟鑾风粍锛堝垎閽燂級
-        String strMinute = matcher.group(2);
+        String strOpenMinute = matcher.group(2);
 
-        LocalTime localTime = LocalTime.of(Integer.valueOf(strHour), Integer.valueOf(strMinute));
-        return localTime;
+        // 鑾峰彇绗竴涓崟鑾风粍锛堝皬鏃讹級
+        String strCloseHour = matcher.group(3);
+
+        // 鑾峰彇绗簩涓崟鑾风粍锛堝垎閽燂級
+        String strCloseMinute = matcher.group(4);
+
+        LocalTime localOpenTime = LocalTime.of(Integer.valueOf(strOpenHour), Integer.valueOf(strOpenMinute));
+        LocalTime localCloseTime = LocalTime.of(Integer.valueOf(strCloseHour), Integer.valueOf(strCloseMinute));
+        List openCloseTime = new ArrayList<LocalTime>();
+        openCloseTime.add(localOpenTime);
+        openCloseTime.add(localCloseTime);
+        return openCloseTime;
     }
 }
+
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/config/DynamicSchedulingConfig.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/config/DynamicSchedulingConfig.java
index 6b2108d..55279a1 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/config/DynamicSchedulingConfig.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/config/DynamicSchedulingConfig.java
@@ -11,6 +11,7 @@
 import javax.annotation.Resource;
 import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
+import java.util.List;
 import java.util.concurrent.Executors;
 
 import static cn.lihu.jh.module.ecg.Constants.ECG_OPENING_TIME_KEY;
@@ -29,15 +30,22 @@
     public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
         taskRegistrar.setScheduler(Executors.newScheduledThreadPool(1));
 
-        String strOpeningTime = configApi.getConfigValueByKey(ECG_OPENING_TIME_KEY);
-        LocalTime openingTime = Utils.parseOpeningTime(strOpeningTime);
-        String cronExpression = String.format("0 %d %d  * * ?", openingTime.getMinute(), openingTime.getHour());
-        System.out.println(cronExpression);
+        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());
 
         taskRegistrar.addCronTask(() -> {
-            System.out.println("Dynamic Task executed at: " + System.currentTimeMillis());
+            System.out.println("Opening Task executed at: " + System.currentTimeMillis());
             queueService.startBiz();
-        }, cronExpression);
+        }, openCronExpression);
+
+        taskRegistrar.addCronTask(() -> {
+            System.out.println("Close Task executed at: " + System.currentTimeMillis());
+            queueService.closeBiz();
+        }, closeCronExpression);
     }
 
 }
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/listener/MySpringEventListener.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/listener/MySpringEventListener.java
index a47b0e3..3cd057a 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/listener/MySpringEventListener.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/listener/MySpringEventListener.java
@@ -9,6 +9,7 @@
 
 import javax.annotation.Resource;
 import java.time.LocalTime;
+import java.util.List;
 
 import static cn.lihu.jh.module.ecg.Constants.ECG_OPENING_TIME_KEY;
 
@@ -25,19 +26,17 @@
     public void onApplicationEvent(ApplicationStartedEvent event) {
         System.out.println("搴旂敤鍚姩瀹屾垚锛岀郴缁熷垵濮嬨�傘�傘��");
 
-        queueService.initBedQueueAndSeqNumFromDB();
-
-        String strOpeningTime = configApi.getConfigValueByKey(ECG_OPENING_TIME_KEY);
-        LocalTime openingTime = Utils.parseOpeningTime(strOpeningTime);
+        String strOpenCloseTime = configApi.getConfigValueByKey(ECG_OPENING_TIME_KEY);
+        List<LocalTime> list = Utils.parseOpeningTime(strOpenCloseTime);
+        LocalTime openingTime = list.get(0);
+        LocalTime closeTime = list.get(1);
 
         // 鑾峰彇褰撳墠鏃堕棿
         LocalTime currentTime = LocalTime.now();
 
         // 姣旇緝鏃堕棿
-        if (currentTime.isBefore(openingTime)) {
-            // NO OP
-        } else if (currentTime.isAfter(openingTime)) {
-            queueService.startBiz();
+        if (currentTime.isBefore(openingTime) || currentTime.isAfter(closeTime)) {
+            queueService.closeBiz();
         } else {
             queueService.startBiz();
         }
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java
index 67fb19f..2555762 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java
@@ -15,6 +15,7 @@
 public interface QueueService {
 
     void startBiz();
+    void closeBiz();
 
     /**
      * 鍒涘缓鎺掗槦
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 c16b26d..6bdd64e 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
@@ -276,6 +276,9 @@
     }
 
     public void startBiz() {
+        if (1 == openingFlag.get())
+            return;
+
         // 娓呴櫎闈炲綋澶╃殑鎺掗槦浜哄憳
         queueMapper.clearQueue();
 
@@ -285,6 +288,10 @@
         hurryup();
     }
 
+    public void closeBiz() {
+        openingFlag.set(0);
+    }
+
     @Override
     public Integer recallPatient(Long roomId, String bedNo, String patId) {
         Integer updateNum = queueMapper.passedPatientReturn(roomId, bedNo, patId,

--
Gitblit v1.9.3