| | |
| | | } |
| | | |
| | | // 处理 排队中 患者 |
| | | hurryupOneBedCheckTypes( bedQueueBO ); |
| | | } |
| | | |
| | | public void hurryupOneBedCheckTypes(BedQueueBO bedQueueBO) { |
| | | while (bedQueueBO.queueNum.get() < bedQueueBO.maxQueueNum) { |
| | | // 抢占 是否有排队中的患者 |
| | | Integer updateNum = queueMapper.preemptWaitingPatientWithBedCheckTypes( |
| | | bedQueueBO.getRoomId(), |
| | | bedQueueBO.getRoomName(), |
| | | bedQueueBO.getBedNo(), |
| | | curSeqNum.get() + 1, |
| | | QueueStatusEnum.WAITING.getStatus(), |
| | | QueueStatusEnum.READY.getStatus(), |
| | | bedQueueBO.checkTypes); |
| | | |
| | | // 没有抢到排队患者 |
| | | if (null == updateNum || 0 == updateNum) { |
| | | return; |
| | | } |
| | | |
| | | QueueDO preemptQueueItem = queueMapper.getQueueItemBySeqNum(curSeqNum.get() + 1); |
| | | CheckTypeDO checkTypeDO = getCheckTypeItem( preemptQueueItem.getBookCheckType() ); |
| | | |
| | | // 抢到排队患者后,处理 检查项目.亲和性 逻辑 |
| | | if ( checkTypeDO.getAffinityCheckTypes().length > 0) { |
| | | procAffinityWhenPreempt(preemptQueueItem, checkTypeDO.getAffinityCheckTypes()); |
| | | } |
| | | |
| | | curSeqNum.getAndIncrement(); |
| | | |
| | | bedQueueBO.queueNum.incrementAndGet(); |
| | | } |
| | | |
| | | // 改变了优先队列顺序 |
| | | refreshPriorityQueue(bedQueueBO); |
| | | hurryupOneBedCheckTypeList( bedQueueBO ); |
| | | } |
| | | |
| | | /** |
| | |
| | | log.info(" opening " + openingFlag.get() + " " + monitorInfoVO.getQueueNum() + " " + monitorInfoVO.getActiveQueueNum() + " " + monitorInfoVO.getCheckTypeBedInfo().toString() ); |
| | | } |
| | | |
| | | private void hurryupOneBedCheckTypeList(BedQueueBO bedQueueBO) { |
| | | while (bedQueueBO.queueNum.get() < bedQueueBO.maxQueueNum) { |
| | | // 抢占 是否有排队中的患者 |
| | | Integer updateNum = queueMapper.preemptWaitingPatientWithBedCheckTypes( |
| | | bedQueueBO.getRoomId(), |
| | | bedQueueBO.getRoomName(), |
| | | bedQueueBO.getBedNo(), |
| | | curSeqNum.get() + 1, |
| | | QueueStatusEnum.WAITING.getStatus(), |
| | | QueueStatusEnum.READY.getStatus(), |
| | | bedQueueBO.checkTypes); |
| | | |
| | | // 没有抢到排队患者 |
| | | if (null == updateNum || 0 == updateNum) { |
| | | return; |
| | | } |
| | | |
| | | QueueDO preemptQueueItem = queueMapper.getQueueItemBySeqNum(curSeqNum.get() + 1); |
| | | CheckTypeDO checkTypeDO = getCheckTypeItem( preemptQueueItem.getBookCheckType() ); |
| | | |
| | | // 抢到排队患者后,处理 检查项目.亲和性 逻辑 |
| | | if ( checkTypeDO.getAffinityCheckTypes().length > 0) { |
| | | procAffinityWhenPreempt(preemptQueueItem, checkTypeDO.getAffinityCheckTypes()); |
| | | } |
| | | |
| | | curSeqNum.getAndIncrement(); |
| | | |
| | | bedQueueBO.queueNum.incrementAndGet(); |
| | | } |
| | | |
| | | // 改变了优先队列顺序 |
| | | refreshPriorityQueue(bedQueueBO); |
| | | } |
| | | |
| | | private void procAffinityWhenPreempt(QueueDO preemptQueueItem, Integer[] affinityCheckTypes) { |
| | | List<QueueDO> affinityItems = queueMapper.getCurPatGivenCheckTypesAndStatus( |
| | | preemptQueueItem.getPatId(), affinityCheckTypes, QueueStatusEnum.WAITING.getStatus()); |