From c7c5da5943d8ffa0d4bc1c275a945487573bd275 Mon Sep 17 00:00:00 2001 From: eight <641137800@qq.com> Date: 星期四, 29 八月 2024 21:34:32 +0800 Subject: [PATCH] update --- jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java | 55 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 49 insertions(+), 6 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 03f445e..5b7e2ac 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,18 @@ 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.config.DynamicSchedulingConfig; 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 +35,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 +50,9 @@ @Resource private ConfigApi configApi; + + @Resource + private RoomService roomService; @Resource private queueMapper queueMapper; @@ -200,7 +212,7 @@ // DB update List statusList = new ArrayList<BedStatusEnum>(); statusList.add(BedStatusEnum.CLOSED); - Integer updateNum = roomMapper.setBedStatus(roomId, bedNo, + Integer updateNum = roomMapper.setBedOpeningClosed(roomId, bedNo, BedStatusEnum.OPENING, statusList); if ( null==updateNum || 0 == updateNum ) return ROOM_INVALID_STATUS; @@ -230,7 +242,6 @@ if (bedQueueBO.getQueueNum().get() >0) return QUEUE_HAVE_PATIENT; - BedStatusEnum destStatusEnum = destStatusEnum = BedStatusEnum.CLOSED; mapBedVsQueue.remove(String.format("%09d%s", roomId, bedNo)); priorityQueue.remove(bedQueueBO); @@ -239,7 +250,8 @@ statusList.add(BedStatusEnum.OPENING); statusList.add(BedStatusEnum.DOCTOR_ON); statusList.add(BedStatusEnum.PAUSE); - Integer updateNum = roomMapper.setBedStatus(roomId, bedNo, destStatusEnum, statusList); + Integer updateNum = roomMapper.setBedOpeningClosed(roomId, bedNo, + BedStatusEnum.CLOSED, statusList); if ( null==updateNum || 0 == updateNum ) return ROOM_INVALID_STATUS; @@ -476,9 +488,6 @@ QueueDO queue = BeanUtils.toBean(queueSaveReqVO, QueueDO.class); queueMapper.insert(queue); - if (0 == openingFlag.get()) - return; - startHurryUp(); } @@ -566,6 +575,40 @@ } @Override + public void resetScheduler() { + ScheduledTaskRegistrar taskRegistrar = DynamicSchedulingConfig.static_scheduledTaskRegistrar; + taskRegistrar.getScheduledTasks().forEach(ScheduledTask::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()); + startBiz(); + }, openCronExpression)); + + taskRegistrar.scheduleCronTask(new CronTask(() -> { + System.out.println("Close Task executed at: " + System.currentTimeMillis()); + closeBiz(); + }, closeCronExpression)); + + taskRegistrar.scheduleCronTask(new CronTask(() -> { + System.out.println("Room Reset Task executed at: " + System.currentTimeMillis()); + roomService.resetRoom(); + }, roomResetCronExpression)); + + taskRegistrar.afterPropertiesSet(); + } + + @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