eight
2024-08-23 6e88d32c8fe09152a326adf4961691373fcfda87
update
已修改5个文件
68 ■■■■ 文件已修改
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/Utils.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/config/DynamicSchedulingConfig.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/listener/MySpringEventListener.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
    }
}
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);
    }
}
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();
        }
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();
    /**
     * 创建排队
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,