| | |
| | | firstReadyQueueItem.setStatus(QueueStatusEnum.ONSTAGE.getStatus()); |
| | | queueMapper.updateById( firstReadyQueueItem ); |
| | | |
| | | // 检查项目.亲和性 处理逻辑 |
| | | CheckTypeDO checkTypeDO = getCheckTypeItem( firstReadyQueueItem.getBookCheckType() ); |
| | | if (checkTypeDO.getAffinityCheckTypes().length > 0) { |
| | | List<QueueDO> affinityItems = queueMapper.getCurPatGivenCheckTypesAndStatus(firstReadyQueueItem.getPatId(), checkTypeDO.getAffinityCheckTypes(), QueueStatusEnum.AFFINITY_WAITING.getStatus()); |
| | | if (!affinityItems.isEmpty()) { |
| | | QueueDO tmpQueueDO = affinityItems.get(0); |
| | | tmpQueueDO.setStatus( QueueStatusEnum.READY.getStatus() ); |
| | | queueMapper.updateById( tmpQueueDO ); |
| | | return GlobalErrorCodeConstants.SUCCESS; // 准备中 数量没有变化,故直接返回 |
| | | } |
| | | } |
| | | |
| | | // 优先队列中 该工位 就诊准备中人的数量 减一 |
| | | BedQueueBO bo = mapBedVsQueue.get( Utils.formatRoomBed( roomId, bedNo ) ); |
| | | bo.queueNum.getAndDecrement(); // 可能已经【并发的】在 hurry-up 中改变了值 |
| | |
| | | monitorInfoVO.setQueueNum(mapBedVsQueue.size()); |
| | | monitorInfoVO.setActiveQueueNum((int) mapBedVsQueue.values().stream().filter(item -> item.getStatus() == BedStatusEnum.DOCTOR_ON.getStatus()).count()); |
| | | monitorInfoVO.setPriorityQueueNum( hashSetOperatingBedQueue.size() ); |
| | | monitorInfoVO.setMapBedVsQueue( mapBedVsQueue ); |
| | | } |
| | | |
| | | } |