| | |
| | | import javax.annotation.PostConstruct; |
| | | import javax.annotation.Resource; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.PriorityQueue; |
| | | import java.util.*; |
| | | |
| | | import static cn.lihu.jh.framework.common.exception.util.ServiceExceptionUtil.exception; |
| | | import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.*; |
| | |
| | | @Override |
| | | public void queue(QueueSaveReqVO queueSaveReqVO) { |
| | | BedQueueBO bedQueueBO = priorityQueue.peek(); |
| | | if (null == bedQueueBO) |
| | | return; |
| | | |
| | | if (bedQueueBO.queueNum == bedQueueBO.maxQueueNum) { |
| | | queueSaveReqVO.setStatus(QueueStatusEnum.WAITING.getStatus()); //排队中 |
| | | QueueDO queue = BeanUtils.toBean(queueSaveReqVO, QueueDO.class); |
| | | queueMapper.insert(queue); // queue.getId(); |
| | | } else if (bedQueueBO.queueNum < bedQueueBO.maxQueueNum) { |
| | | queueSaveReqVO.setStatus(QueueStatusEnum.READY.getStatus()); //候诊准备中 |
| | | queueSaveReqVO.setRoomNum(bedQueueBO.getRoomName()); |
| | | queueSaveReqVO.setBedNum(bedQueueBO.getBedNo()); |
| | | queueSaveReqVO.setSeqNum(curSeqNum++); |
| | | queueSaveReqVO.setRoomId(bedQueueBO.getRoomId()); |
| | | queueSaveReqVO.setRoomName(bedQueueBO.getRoomName()); |
| | | queueSaveReqVO.setBedNo(bedQueueBO.getBedNo()); |
| | | queueSaveReqVO.setSeqNum(curSeqNum); |
| | | QueueDO queue = BeanUtils.toBean(queueSaveReqVO, QueueDO.class); |
| | | queueMapper.insert(queue); // queue.getId(); |
| | | |
| | | curSeqNum++; |
| | | bedQueueBO.queueNum++; |
| | | BedQueueBO bedQueueBO2 = priorityQueue.poll(); |
| | | priorityQueue.offer(bedQueueBO2); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | @PostConstruct |
| | | private void initQueue() { |
| | | public void initQueue() { |
| | | priorityQueue.clear(); |
| | | |
| | | List<RoomDO> roomDOList = roomMapper.simpleRoomList(); |
| | | List<BedQueueBO> bedQueueBOList = roomDOList.stream().map(item -> BeanUtils.toBean(item, BedQueueBO.class)).toList(); |
| | | |
| | | List<Byte> queueStatusList = new ArrayList<>(); |
| | | queueStatusList.add(QueueStatusEnum.READY.getStatus()); |
| | | List<QueueStatisticDO> queueStatisticDOList = queueMapper.queueStatistic(queueStatusList); |
| | | |
| | | bedQueueBOList.forEach(item -> { |
| | | item.maxQueueNum = MAX_QUEUE_NUM; |
| | | item.queueNum = 0; |
| | | priorityQueue.add(item); |
| | | Optional<QueueStatisticDO> queueStatisticDOOptional = queueStatisticDOList.stream().filter(it->it.getRoomId()==item.roomId && it.getBedNo().equals(item.getBedNo())).findFirst(); |
| | | item.queueNum = queueStatisticDOOptional.isPresent() ? queueStatisticDOOptional.get().getTotalInStatus() : 0; |
| | | priorityQueue.offer(item); |
| | | }); |
| | | |
| | | curSeqNum = queueMapper.getMaxSeqNum(); |
| | | curSeqNum = null == curSeqNum ? 1 : ++curSeqNum; |
| | | } |
| | | |
| | | /** |
| | | * TODO 新开队列时,需要把排队中的人 转到 就诊准备 状态 |
| | | * 等到取下一个 排队中人员 的逻辑完成后,再回来不错 |
| | | */ |
| | | public void hurryup() { |
| | | } |
| | | } |
| | | |