| | |
| | | return ROOM_INVALID_STATUS; |
| | | } |
| | | |
| | | List<Integer> queueStatusList = new ArrayList<>(); |
| | | queueStatusList.add(QueueStatusEnum.READY.getStatus()); |
| | | List<QueueDO> queueDOList = queueMapper.getBedQueueByStatus(roomId, bedNo, queueStatusList); |
| | | |
| | | RoomDO roomDO = roomMapper.getRoom(roomId, bedNo); |
| | | |
| | | // 新增..工位队列 |
| | |
| | | bedBO.setRoomId(roomId); |
| | | bedBO.setRoomName(roomName); |
| | | bedBO.setBedNo(bedNo); |
| | | bedBO.setMaxReadyPatNum(getBedReadyMax(roomId, bedNo)); |
| | | bedBO.setReadyPatNum(new AtomicInteger(queueDOList.size())); |
| | | bedBO.setStatus(BedStatusEnum.OPENING.getStatus()); |
| | | bedBO.setCheckTypes( roomDO.getCheckTypes() ); |
| | | bedBO.setOpType( roomDO.getOpType() ); |
| | |
| | | List<RoomDO> roomDOList = roomMapper.simpleRoomList(bedStatusEnumList); |
| | | List<BedBO> bedBOList = roomDOList.stream().map(item -> BeanUtils.toBean(item, BedBO.class)).toList(); |
| | | |
| | | // 从DB 获取 队列中 【候诊中】人员统计 列表 |
| | | List<Integer> queueStatusList = new ArrayList<>(); |
| | | queueStatusList.add(QueueStatusEnum.READY.getStatus()); |
| | | List<QueueStatisticDO> queueStatisticDOList = queueMapper.queueStatistic(queueStatusList); |
| | | |
| | | bedBOList.forEach(item -> { |
| | | item.setMaxReadyPatNum( getBedReadyMax(item.roomId, item.bedNo) ); |
| | | Optional<QueueStatisticDO> queueStatisticDOOptional = queueStatisticDOList.stream().filter(it->it.getRoomId()==item.roomId && it.getBedNo().equals(item.getBedNo())).findFirst(); |
| | | int queueNum = queueStatisticDOOptional.isPresent() ? queueStatisticDOOptional.get().getTotalInStatus() : 0; |
| | | if ( item.getMaxReadyPatNum() < queueNum ) |
| | | throw new RuntimeException("init: exceed max queue number!"); |
| | | |
| | | item.setReadyPatNum( new AtomicInteger(queueNum) ); |
| | | mapOpeningBed.put( Utils.formatRoomBed(item.roomId, item.bedNo), item); |
| | | if (BedStatusEnum.DOCTOR_ON.getStatus() == item.getStatus()) { |
| | | addRoutingQueue(item); |
| | |
| | | } |
| | | } |
| | | |
| | | private Integer getBedReadyMax(Long roomId, String bedNo) { |
| | | RoomDO roomDO = roomMapper.getRoom(roomId, bedNo); |
| | | Integer[] checkTypes = roomDO.getCheckTypes(); |
| | | Integer ret = 0; |
| | | for (int i=0; i<checkTypes.length; i++) { |
| | | CheckTypeDO checkTypeDO = mapCheckTypeVsReadyMax.get(checkTypes[i]); |
| | | private Integer getBedReadyMax(BedBO bedBO) { |
| | | Integer[] checkTypes = bedBO.getCheckTypes(); |
| | | int ret = 0; |
| | | for (Integer checkType : checkTypes) { |
| | | CheckTypeDO checkTypeDO = mapCheckTypeVsReadyMax.get(checkType); |
| | | Integer tmp = checkTypeDO.getReadyNum(); |
| | | ret = ret < tmp ? tmp : ret; //【候诊中】数量 取大值 |
| | | } |
| | |
| | | |
| | | private void addRoutingQueue(BedBO bedBO) { |
| | | // 装机工位 不进 分流队列,不接收 【排队中】患者分流 |
| | | if (BedOpTypeEnum.OP_INSTALL.getOpType() == bedBO.getOpType()) |
| | | if (Objects.equals(BedOpTypeEnum.OP_INSTALL.getOpType(), bedBO.getOpType())) |
| | | return; |
| | | |
| | | // 同步DB, 设置工位的分流控制信息 |
| | | List<Integer> queueStatusList = new ArrayList<>(); |
| | | queueStatusList.add(QueueStatusEnum.READY.getStatus()); //[候诊中] |
| | | List<QueueDO> queueDOList = queueMapper.getBedQueueByStatus(bedBO.getRoomId(), bedBO.getBedNo(), queueStatusList); |
| | | bedBO.setMaxReadyPatNum( getBedReadyMax(bedBO) ); |
| | | bedBO.setReadyPatNum(new AtomicInteger(queueDOList.size())); |
| | | |
| | | Integer[] checkTypes = bedBO.getCheckTypes(); |
| | | Arrays.stream(checkTypes).forEach(checkType -> { |
| | |
| | | |
| | | private void removeRoutingQueue(BedBO bedBO) { |
| | | // 装机工位 不进 分流队列,不接收 【排队中】患者分流 |
| | | if (BedOpTypeEnum.OP_INSTALL.getOpType() == bedBO.getOpType()) |
| | | if (Objects.equals(BedOpTypeEnum.OP_INSTALL.getOpType(), bedBO.getOpType())) |
| | | return; |
| | | |
| | | Integer[] checkTypes = bedBO.getCheckTypes(); |
| | |
| | | |
| | | private void refreshRoutingQueue(BedBO bedBO) { |
| | | // 装机工位 不进 分流队列,不接收 【排队中】患者分流 |
| | | if (BedOpTypeEnum.OP_INSTALL.getOpType() == bedBO.getOpType()) |
| | | if (Objects.equals(BedOpTypeEnum.OP_INSTALL.getOpType(), bedBO.getOpType())) |
| | | return; |
| | | |
| | | Integer[] checkTypes = bedBO.getCheckTypes(); |