| | |
| | | |
| | | final static Integer MAX_QUEUE_NUM = 3; |
| | | |
| | | @Resource |
| | | private queueMapper queueMapper; |
| | | |
| | | @Resource |
| | | private RoomMapper roomMapper; |
| | | |
| | | AtomicInteger openingFlag = new AtomicInteger(0); |
| | | |
| | | AtomicInteger curSeqNum = new AtomicInteger(0); |
| | | |
| | | PriorityBlockingQueue<BedQueueBO> priorityQueue = new PriorityBlockingQueue<>(); |
| | |
| | | |
| | | ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor(); |
| | | |
| | | @Resource |
| | | private queueMapper queueMapper; |
| | | |
| | | @Resource |
| | | private RoomMapper roomMapper; |
| | | |
| | | @Override |
| | | public Integer createqueue(QueueSaveReqVO createReqVO) { |
| | |
| | | } |
| | | |
| | | /** |
| | | * 系统重启时,从DB同步队列数据到 工位优先队列 |
| | | * 系统重启时,从DB同步工位的患者队列数据到 工位优先队列 |
| | | */ |
| | | public void initQueue() { |
| | | priorityQueue.clear(); |
| | |
| | | * 等到取下一个 排队中人员 的逻辑完成后,再回来不错 |
| | | */ |
| | | public void hurryup() { |
| | | while (true) { |
| | | while (1 == openingFlag.get()) { |
| | | BedQueueBO bedQueueBO = priorityQueue.peek(); |
| | | if (null == bedQueueBO) |
| | | return; |
| | |
| | | queueSaveReqVO.setStatus(QueueStatusEnum.WAITING.getStatus()); //排队中 |
| | | QueueDO queue = BeanUtils.toBean(queueSaveReqVO, QueueDO.class); |
| | | queueMapper.insert(queue); |
| | | |
| | | if (0 == openingFlag.get()) |
| | | return; |
| | | |
| | | singleThreadExecutor.execute( () -> { |
| | | hurryup(); |
| | |
| | | return patientStatisticVO; |
| | | } |
| | | |
| | | public void startBiz() { |
| | | openingFlag.set(1); |
| | | hurryup(); |
| | | } |
| | | |
| | | } |