From 25ef09df68cd79b9c75bb88ee8ee039b58ce5690 Mon Sep 17 00:00:00 2001 From: eight <641137800@qq.com> Date: 星期日, 01 九月 2024 22:20:06 +0800 Subject: [PATCH] update --- jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/queueController.java | 7 ++ jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java | 78 ++++++++----------------- jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/config/EcgConfigService.java | 5 + jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/config/EcgConfigServiceImpl.java | 70 +++++++++++++++++++++++ jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomServiceImpl.java | 6 ++ jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java | 5 + jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/config/MySpringEventListener.java | 8 ++ 7 files changed, 122 insertions(+), 57 deletions(-) diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/config/MySpringEventListener.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/config/MySpringEventListener.java index 886aeaf..147e4b9 100644 --- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/config/MySpringEventListener.java +++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/config/MySpringEventListener.java @@ -1,6 +1,7 @@ package cn.lihu.jh.module.ecg.config; import cn.lihu.jh.module.ecg.Utils; +import cn.lihu.jh.module.ecg.service.config.EcgConfigService; import cn.lihu.jh.module.ecg.service.queue.QueueService; import cn.lihu.jh.module.infra.api.config.ConfigApi; import org.springframework.boot.context.event.ApplicationStartedEvent; @@ -21,7 +22,10 @@ private ConfigApi configApi; @Resource - private QueueService queueService; + private EcgConfigService ecgConfigService; + + @Resource + QueueService queueService; @EventListener public void onApplicationEvent(ApplicationStartedEvent event) { @@ -45,6 +49,6 @@ queueService.startBiz(); } - queueService.resetScheduler(); + ecgConfigService.resetScheduler(); } } diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/queueController.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/queueController.java index 4c774eb..297aea6 100644 --- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/queueController.java +++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/queue/queueController.java @@ -3,6 +3,8 @@ import cn.lihu.jh.framework.common.exception.ErrorCode; import cn.lihu.jh.framework.security.core.util.SecurityFrameworkUtils; import cn.lihu.jh.module.ecg.controller.admin.room.vo.RoomRespVO; +import cn.lihu.jh.module.ecg.service.config.EcgConfigService; +import cn.lihu.jh.module.ecg.service.config.EcgConfigServiceImpl; import org.springframework.scheduling.config.ScheduledTaskRegistrar; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; @@ -44,6 +46,9 @@ @Resource private QueueService queueService; + + @Resource + private EcgConfigService ecgConfigService; @PostMapping("/create") @Operation(summary = "鍒涘缓鎺掗槦") @@ -154,7 +159,7 @@ @Operation(summary = "閲嶇疆璋冨害鍣�") @PreAuthorize("@ss.hasPermission('ecg:queue:setting')") public CommonResult<Integer> resetScheduler() { - queueService.resetScheduler(); + ecgConfigService.resetScheduler(); return success(0); } } diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/config/EcgConfigService.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/config/EcgConfigService.java new file mode 100644 index 0000000..d5b586d --- /dev/null +++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/config/EcgConfigService.java @@ -0,0 +1,5 @@ +package cn.lihu.jh.module.ecg.service.config; + +public interface EcgConfigService { + void resetScheduler(); +} diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/config/EcgConfigServiceImpl.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/config/EcgConfigServiceImpl.java new file mode 100644 index 0000000..f9b2738 --- /dev/null +++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/config/EcgConfigServiceImpl.java @@ -0,0 +1,70 @@ +package cn.lihu.jh.module.ecg.service.config; + +import cn.lihu.jh.module.ecg.Utils; +import cn.lihu.jh.module.ecg.config.DynamicSchedulingConfig; +import cn.lihu.jh.module.ecg.service.queue.QueueService; +import cn.lihu.jh.module.ecg.service.room.RoomService; +import cn.lihu.jh.module.infra.api.config.ConfigApi; +import lombok.extern.slf4j.Slf4j; +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; + +import javax.annotation.Resource; +import java.time.LocalTime; +import java.util.List; + +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; + +@Service +@Validated +@Slf4j +public class EcgConfigServiceImpl implements EcgConfigService{ + + @Resource + private ConfigApi configApi; + + @Resource + private RoomService roomService; + + @Resource + private QueueService queueService; + + @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()); + 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)); + + taskRegistrar.afterPropertiesSet(); + } + +} 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 51e5595..5d1431d 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 @@ -22,7 +22,7 @@ void setQueueReadyMax(Integer max); void startBiz(); void closeBiz(); - void resetScheduler(); + /** * 鍒涘缓鎺掗槦 @@ -49,6 +49,9 @@ /** * */ + void startHurryUp(); + void startBedReload(); + ErrorCode startBedOpen(Long roomId, String bedNo); ErrorCode startBedClose(Long roomId, String bedNo); ErrorCode startBedDoctorPause(Long roomId, String bedNo, Long docId, String docName); 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 44e33c2..95713d6 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 @@ -51,12 +51,6 @@ public class QueueServiceImpl implements QueueService { @Resource - private ConfigApi configApi; - - @Resource - private RoomService roomService; - - @Resource private queueMapper queueMapper; @Resource @@ -227,6 +221,20 @@ return ECG_INNER_ERROR; } + @Override + public void startHurryUp() { + singleThreadExecutor.execute( () -> { + hurryup(); + }); + } + + @Override + public void startBedReload() { + singleThreadExecutor.execute( () -> { + bedReload(); + hurryup(); + }); + } /** * 宸插叧闂� 鎴栬�� 鍏抽棴涓紝鍙互寮�閫氬伐浣� @@ -404,10 +412,21 @@ // DB update List statusList = new ArrayList<BedStatusEnum>(); statusList.add(BedStatusEnum.DOCTOR_ON); + statusList.add(BedStatusEnum.PAUSE); Integer updateNum = roomMapper.setBedDoctorOff(roomId, bedNo, docId, BedStatusEnum.OPENING, statusList); if ( null==updateNum || 0 == updateNum ) { log.error("bedDoctorOff DB invalid status. " + roomId + " " + bedNo); return ROOM_INVALID_STATUS; + } + + // 濡傛灉鏄湪 PAUSE 鐘舵�佺搴х殑锛岄渶瑕侀噸鏂板姞鍥� 浼樺厛闃熷垪 + if (bedQueueBO.getStatus().equals(BedStatusEnum.PAUSE.getStatus())) { + if (!priorityQueue.contains(bedQueueBO)) { + priorityQueue.offer(bedQueueBO); + } else { + log.error("bedDoctorResume priorityQueue still exist!. " + roomId + " " + bedNo); + return ECG_INNER_ERROR; + } } bedQueueBO.setStatus(BedStatusEnum.OPENING.getStatus()); @@ -639,40 +658,6 @@ } @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()); @@ -691,19 +676,6 @@ public void monitorInfo() { log.info("map " + mapBedVsQueue.size() + " priority " + priorityQueue.size() + " opening " + openingFlag.get()); - } - - private void startHurryUp() { - singleThreadExecutor.execute( () -> { - hurryup(); - }); - } - - private void startBedReload() { - singleThreadExecutor.execute( () -> { - bedReload(); - hurryup(); - }); } } diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomServiceImpl.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomServiceImpl.java index bd488c9..2ee6047 100644 --- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomServiceImpl.java +++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomServiceImpl.java @@ -6,6 +6,7 @@ import cn.lihu.jh.framework.common.pojo.PageResult; import cn.lihu.jh.module.ecg.controller.admin.room.vo.RoomRespVO; import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomDO; +import cn.lihu.jh.module.ecg.service.queue.QueueService; import cn.lihu.jh.module.system.api.oauth2.OAuth2TokenApi; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -34,6 +35,9 @@ @Resource private OAuth2TokenApi oAuth2TokenApi; + + @Resource + QueueService queueService; @Override public Integer createRoom(RoomSaveReqVO createReqVO) { @@ -103,5 +107,7 @@ // List<Long> userIdList = roomDOList.stream().map(roomDO -> roomDO.getDocId()).toList(); oAuth2TokenApi.tick(userIdList); + + queueService.startBedReload(); } } \ No newline at end of file -- Gitblit v1.9.3