From a47e5cd452a405463c03d1d8c4f97884123a46b2 Mon Sep 17 00:00:00 2001 From: eight <641137800@qq.com> Date: 星期三, 04 九月 2024 11:41:33 +0800 Subject: [PATCH] update --- jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java | 152 ++++++++++++++++++++++++-------------------------- 1 files changed, 72 insertions(+), 80 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 518ed2e..695c8a4 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,22 +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 cn.lihu.jh.module.ecg.controller.admin.room.vo.MonitorInfoVO; 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.util.StringUtils; import org.springframework.validation.annotation.Validated; +import cn.lihu.jh.framework.common.exception.enums.GlobalErrorCodeConstants; +import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomDO; import cn.lihu.jh.framework.common.exception.ErrorCode; import cn.lihu.jh.framework.common.pojo.CommonResult; import cn.lihu.jh.module.ecg.controller.admin.room.vo.RoomRespVO; @@ -25,20 +21,15 @@ import cn.lihu.jh.module.ecg.dal.mysql.room.RoomMapper; import cn.lihu.jh.module.ecg.enums.BedStatusEnum; import cn.lihu.jh.module.ecg.enums.QueueStatusEnum; -import cn.lihu.jh.module.infra.api.config.ConfigApi; import cn.lihu.jh.module.ecg.controller.admin.queue.vo.*; import cn.lihu.jh.module.ecg.dal.dataobject.queue.QueueDO; import cn.lihu.jh.framework.common.pojo.PageResult; import cn.lihu.jh.framework.common.util.object.BeanUtils; import cn.lihu.jh.module.ecg.dal.mysql.queue.queueMapper; - -import static cn.lihu.jh.framework.common.exception.enums.GlobalErrorCodeConstants.SUCCESS; +import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.*; 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.*; /** * 鎺掗槦 Service 瀹炵幇绫� @@ -49,12 +40,6 @@ @Validated @Slf4j public class QueueServiceImpl implements QueueService { - - @Resource - private ConfigApi configApi; - - @Resource - private RoomService roomService; @Resource private queueMapper queueMapper; @@ -227,6 +212,30 @@ return ECG_INNER_ERROR; } + @Override + public void startHurryUp() { + singleThreadExecutor.execute( () -> { + hurryup(); + }); + } + + @Override + public void startBedReload() { + singleThreadExecutor.execute( () -> { + bedReload(); + hurryup(); + monitorInfo(); + }); + } + + @Override + public MonitorInfoVO getMonitorInfo() { + MonitorInfoVO monitorInfoVO = new MonitorInfoVO(); + monitorInfoVO.setOpeningFlag( openingFlag.get() ); + monitorInfoVO.setQueueNum( mapBedVsQueue.size() ); + monitorInfoVO.setActiveQueueNum( priorityQueue.size() ); + return monitorInfoVO; + } /** * 宸插叧闂� 鎴栬�� 鍏抽棴涓紝鍙互寮�閫氬伐浣� @@ -245,7 +254,7 @@ // DB update List statusList = new ArrayList<BedStatusEnum>(); statusList.add(BedStatusEnum.CLOSED); - Integer updateNum = roomMapper.setBedOpeningClosed(roomId, bedNo, BedStatusEnum.OPENING, statusList); + Integer updateNum = roomMapper.setBedOpeningOpening(roomId, bedNo, BedStatusEnum.OPENING, statusList); if ( null==updateNum || 0 == updateNum ) { log.error("bedOpen DB invalid status. " + roomId + " " + bedNo); return ROOM_INVALID_STATUS; @@ -264,7 +273,8 @@ bedQueueBO.setStatus(BedStatusEnum.OPENING.getStatus()); priorityQueue.offer(bedQueueBO); mapBedVsQueue.put(String.format("%09d%s", roomId, bedNo), bedQueueBO); - return SUCCESS; + + return GlobalErrorCodeConstants.SUCCESS; } @Override @@ -300,7 +310,7 @@ mapBedVsQueue.remove(String.format("%09d%s", roomId, bedNo)); priorityQueue.remove(bedQueueBO); - return SUCCESS; + return GlobalErrorCodeConstants.SUCCESS; } @Override @@ -339,7 +349,7 @@ bedQueueBO.setStatus(BedStatusEnum.PAUSE.getStatus()); priorityQueue.remove(bedQueueBO); - return SUCCESS; + return GlobalErrorCodeConstants.SUCCESS; } @Override @@ -368,8 +378,7 @@ return ECG_INNER_ERROR; } - hurryup(); - return SUCCESS; + return GlobalErrorCodeConstants.SUCCESS; } @Override @@ -390,7 +399,7 @@ } bedQueueBO.setStatus(BedStatusEnum.DOCTOR_ON.getStatus()); - return SUCCESS; + return GlobalErrorCodeConstants.SUCCESS; } @Override @@ -404,14 +413,25 @@ // 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()); - return SUCCESS; + return GlobalErrorCodeConstants.SUCCESS; } private void validatequeueExists(Integer id) { @@ -473,7 +493,7 @@ Integer num = queueMapper.getMaxSeqNum(); curSeqNum = new AtomicInteger(null == num ? 0 : num); - return SUCCESS; + return GlobalErrorCodeConstants.SUCCESS; } /** @@ -483,12 +503,6 @@ public void hurryup() { if (0 == openingFlag.get()) return; - - // TODO - log.info("map " + mapBedVsQueue.size() + " priority " + priorityQueue.size()); - if (mapBedVsQueue.size() != priorityQueue.size()) { - log.error("map " + mapBedVsQueue.size() + " priority " + priorityQueue.size()); - } // 澶勭悊 杩囧彿-鍥炴潵 鐨勪汉 for (BedQueueBO bedQueueBO : mapBedVsQueue.values()) { @@ -582,8 +596,7 @@ priorityQueue.remove(bo); priorityQueue.offer(bo); - hurryup(); - return SUCCESS; + return GlobalErrorCodeConstants.SUCCESS; } public void finishNextPatient(Long roomId, String bedNo) { @@ -643,40 +656,7 @@ public void closeBiz() { openingFlag.set(0); - } - - @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(); + startBedReload(); } @Override @@ -694,17 +674,29 @@ return updateNum; } - private void startHurryUp() { - singleThreadExecutor.execute( () -> { - hurryup(); - }); + @Override + public void monitorInfo() { + log.info("map " + mapBedVsQueue.size() + " priority " + priorityQueue.size() + + " opening " + openingFlag.get()); } - private void startBedReload() { - singleThreadExecutor.execute( () -> { - bedReload(); - hurryup(); - }); + @Override + public List<QueueDO> callingData(Integer waitingNum, Integer passedNum) { + //queueMapper. + return null; + } + + @Override + public List<QueueDO> getRoomQueue(String ip, List<Byte> statusList) { + List<RoomDO> roomDOList = roomMapper.queueByIp(ip); + Optional<RoomDO> optionalQueueDO = roomDOList.stream().filter(item -> StringUtils.hasLength(item.getIp())).findFirst(); + if (!optionalQueueDO.isPresent()) { + return new ArrayList<QueueDO>(); + } + + Long roomId = optionalQueueDO.get().getRoomId(); + List<QueueDO> queueDOList = queueMapper.getRoomQueueByStatus(roomId, statusList); + return queueDOList; } } -- Gitblit v1.9.3