| | |
| | | List<Byte> queueStatusList = new ArrayList<>(); |
| | | queueStatusList.add(QueueStatusEnum.RECEIVED.getStatus()); |
| | | List<QueueDO> queueDOList = queueService.getRoomQueueByStatus(roomId, queueStatusList); |
| | | |
| | | queueStatusList.clear(); |
| | | queueStatusList.add(QueueStatusEnum.INSTALLING.getStatus()); |
| | | queueDOList.addAll( queueService.getBedQueueByStatus(roomId, bedNo, queueStatusList) ); |
| | | return success(BeanUtils.toBean(queueDOList, QueueRespVO.class)); |
| | | } |
| | | |
| | |
| | | @Update("update lihu.queue set status = #{newStatus} where seq_num = \n" + |
| | | "(select a.min_seq_num from \n" + |
| | | " (select min(seq_num) as min_seq_num from lihu.queue where room_id = #{roomId} and bed_no = #{bedNo} and status = #{curStatus}) a )") |
| | | Integer updateQueueStatus(@Param("roomId")Long roomId, @Param("bedNo")String bedNo, @Param("curStatus")Byte curStatus, @Param("newStatus")Byte newStatus); |
| | | Integer updateBedQueueStatus(@Param("roomId")Long roomId, @Param("bedNo")String bedNo, @Param("curStatus")Byte curStatus, @Param("newStatus")Byte newStatus); |
| | | |
| | | // æä¸ªè¯å®¤èå´å
[å·²é¢ç¨]äººå æ¢å |
| | | @Update("update lihu.queue set status = #{newStatus}, bed_no = #{bedNo} where seq_num = \n" + |
| | | "(select a.min_seq_num from \n" + |
| | | " (select min(seq_num) as min_seq_num from lihu.queue where room_id = #{roomId} and status = #{curStatus}) a )") |
| | | Integer preemptReceivedPatient(@Param("roomId")Long roomId, @Param("bedNo")String bedNo, @Param("curStatus")Byte curStatus, @Param("newStatus")Byte newStatus); |
| | | |
| | | @Update("update lihu.queue set status = #{newStatus} where pat_id = #{patId} and status = #{curStatus}") |
| | | Integer updatePatientQueueStatus(@Param("patId")String patId, @Param("curStatus")Byte curStatus, @Param("newStatus")Byte newStatus); |
| | | |
| | | // æ´ä¸ªç³»ç»èå´å
[æéä¸]äººå æ¢å |
| | | @Update("update lihu.queue set status = #{newStatus}, room_id = #{roomId}, room_name = #{roomName}, \n" + |
| | | " bed_no = #{bedNo}, seq_num = #{seqNum} where id = \n" + |
| | | " (select a.id from \n" + |
| | | " (select id from lihu.queue where status = #{curStatus} and book_check_type= #{checkType} order by jump_flag desc, book_timeslot, create_time limit 1) a)") |
| | | Integer preemptPatient(@Param("roomId")Long roomId, @Param("roomName")String roomName, @Param("bedNo")String bedNo, |
| | | @Param("seqNum")Integer seqNum, @Param("curStatus")Byte curStatus, @Param("newStatus")Byte newStatus, |
| | | @Param("checkType")Integer checkType); |
| | | Integer preemptWaitingPatient(@Param("roomId")Long roomId, @Param("roomName")String roomName, @Param("bedNo")String bedNo, |
| | | @Param("seqNum")Integer seqNum, @Param("curStatus")Byte curStatus, @Param("newStatus")Byte newStatus, |
| | | @Param("checkType")Integer checkType); |
| | | |
| | | @Update("update lihu.queue set status = #{newStatus}, seq_num = #{seqNum}, passed = 1 " + |
| | | " where id = " + |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.lihu.jh.module.ecg.service.queue; |
| | | |
| | | import cn.lihu.jh.framework.common.exception.ErrorCode; |
| | | import cn.lihu.jh.framework.common.exception.enums.GlobalErrorCodeConstants; |
| | | |
| | | import java.util.concurrent.Callable; |
| | | |
| | | public class BedDoctorNextInstallPatientCallable implements Callable<ErrorCode> { |
| | | |
| | | QueueServiceTxFunctions queueService; |
| | | private Long roomId; |
| | | private String bedNo; |
| | | |
| | | public BedDoctorNextInstallPatientCallable(QueueServiceTxFunctions queueService, Long roomId, String bedNo) |
| | | { |
| | | super(); |
| | | this.roomId = roomId; |
| | | this.bedNo = bedNo; |
| | | this.queueService = queueService; |
| | | } |
| | | |
| | | public ErrorCode call() throws Exception { |
| | | ErrorCode ec = queueService.nextInstallPatient(roomId, bedNo); |
| | | if (GlobalErrorCodeConstants.SUCCESS.equals(ec)) { |
| | | queueService.hurryupOneBed(roomId, bedNo); |
| | | } |
| | | |
| | | queueService.monitorInfo(); |
| | | return ec; |
| | | } |
| | | |
| | | } |
| | |
| | | ErrorCode startBedDoctorOn(Long roomId, String bedNo, Long docId, String docName); |
| | | ErrorCode startBedDoctorOff(Long roomId, String bedNo, Long docId, String docName); |
| | | ErrorCode startNextPatient(Long roomId, String bedNo); |
| | | ErrorCode startNextInstallPatient(Long roomId, String bedNo); |
| | | |
| | | CommonResult<RoomRespVO> getRoom(Long roomId, String bedNo, Long docId); |
| | | |
| | |
| | | } |
| | | |
| | | @Override |
| | | public ErrorCode startNextInstallPatient(Long roomId, String bedNo) { |
| | | Future<ErrorCode> future = singleThreadExecutor.submit( |
| | | new BedDoctorNextInstallPatientCallable(queueServiceTxFunctions, roomId, bedNo) |
| | | ); |
| | | |
| | | try { |
| | | ErrorCode ret = future.get(); |
| | | return ret; |
| | | } catch (InterruptedException e) { |
| | | e.printStackTrace(); |
| | | } catch (ExecutionException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | System.out.println("startNextInstallPatient ========"); |
| | | return ECG_INNER_ERROR; |
| | | } |
| | | |
| | | @Override |
| | | public void startHurryUpOneBed(Long roomId, String bedNo) { |
| | | singleThreadExecutor.execute( () -> { |
| | | queueServiceTxFunctions.hurryupOneBed(roomId, bedNo); |
| | |
| | | @Override |
| | | public void finishNextPatient(Long roomId, String bedNo) { |
| | | // ä» DB æ å°±è¯ä¸ç人 设置为就è¯å®æ |
| | | Integer ret = queueMapper.updateQueueStatus(roomId, bedNo, |
| | | Integer ret = queueMapper.updateBedQueueStatus(roomId, bedNo, |
| | | QueueStatusEnum.ONSTAGE.getStatus(), QueueStatusEnum.FINISH.getStatus()); |
| | | |
| | | startNextPatient(roomId, bedNo); |
| | |
| | | @Override |
| | | public void finishReceiveNextPatient(Long roomId, String bedNo) { |
| | | // ä» DB æ å°±è¯ä¸ç人 设置为就è¯å®æ |
| | | Integer ret = queueMapper.updateQueueStatus(roomId, bedNo, |
| | | Integer ret = queueMapper.updateBedQueueStatus(roomId, bedNo, |
| | | QueueStatusEnum.ONSTAGE.getStatus(), QueueStatusEnum.RECEIVED.getStatus()); |
| | | |
| | | startNextPatient(roomId, bedNo); |
| | |
| | | // è£
æº å«å· |
| | | @Override |
| | | public void finishInstallNextPatient(Long roomId, String bedNo) { |
| | | // ä» DB æ å°±è¯ä¸ç人 设置为就è¯å®æ |
| | | Integer ret = queueMapper.updateQueueStatus(roomId, bedNo, |
| | | QueueStatusEnum.ONSTAGE.getStatus(), QueueStatusEnum.FINISH.getStatus()); |
| | | // ä» DB æ [å®è£
ä¸] ç人 设置为 [已就è¯] |
| | | Integer ret = queueMapper.updateBedQueueStatus(roomId, bedNo, |
| | | QueueStatusEnum.INSTALLING.getStatus(), QueueStatusEnum.FINISH.getStatus()); |
| | | |
| | | startNextPatient(roomId, bedNo); |
| | | startNextInstallPatient(roomId, bedNo); |
| | | } |
| | | |
| | | public void passNextPatient(Long roomId, String bedNo) { |
| | | // ä» DB æ å°±è¯ä¸ç人 设置为è¿å· |
| | | Integer ret = queueMapper.updateQueueStatus(roomId, bedNo, |
| | | Integer ret = queueMapper.updateBedQueueStatus(roomId, bedNo, |
| | | QueueStatusEnum.ONSTAGE.getStatus(), QueueStatusEnum.PASSED.getStatus()); |
| | | |
| | | startNextPatient(roomId, bedNo); |
| | |
| | | return GlobalErrorCodeConstants.SUCCESS; |
| | | } |
| | | |
| | | // å¸¸è§ æè
é¢ç¨ æ¶ å»ç åä¸ä¸ä½æ£è
|
| | | public ErrorCode nextPatient(Long roomId, String bedNo) { |
| | | // ä» DB æ åºå·æå°ç å°±è¯åå¤ä¸ç人 设置为就è¯ä¸ |
| | | Integer updateNum = queueMapper.updateQueueStatus(roomId, bedNo, |
| | | // ä» DB æ åºå·æå°ç [å°±è¯åå¤ä¸] ç人 设置为 [å°±è¯ä¸] (æé¢ç¨ä¸) |
| | | Integer updateNum = queueMapper.updateBedQueueStatus(roomId, bedNo, |
| | | QueueStatusEnum.READY.getStatus(), QueueStatusEnum.ONSTAGE.getStatus()); |
| | | // è¯¥å·¥ä½ æ²¡æ å°±è¯åå¤ä¸ 人å |
| | | // è¯¥å·¥ä½ æ²¡æ [å°±è¯åå¤ä¸] 人å |
| | | if (null == updateNum || 0 == updateNum) { |
| | | return QUEUE_NOT_READY_PATIENT; |
| | | } |
| | |
| | | bo.queueNum.getAndDecrement(); // å¯è½å·²ç»ãå¹¶åçãå¨ hurry-up 䏿¹åäºå¼ |
| | | |
| | | refreshPriorityQueue(bo); |
| | | return GlobalErrorCodeConstants.SUCCESS; |
| | | } |
| | | |
| | | // è£
æºæ¶ å»ç åä¸ä¸ä½æ£è
|
| | | public ErrorCode nextInstallPatient(Long roomId, String bedNo) { |
| | | // ä» DB æ åºå·æå°ç [å·²é¢ç¨] ç人 设置为 [å®è£
ä¸] |
| | | Integer updateNum = queueMapper.preemptReceivedPatient(roomId, bedNo, |
| | | QueueStatusEnum.RECEIVED.getStatus(), QueueStatusEnum.INSTALLING.getStatus()); |
| | | // è¯¥å·¥ä½ æ²¡æ [å·²é¢ç¨] 人å |
| | | if (null == updateNum || 0 == updateNum) { |
| | | return QUEUE_NOT_READY_PATIENT; |
| | | } |
| | | |
| | | // è£
æºå·¥ä½ æ ä¼å
éå |
| | | // ä¼å
éåä¸ è¯¥å·¥ä½ [å·²é¢ç¨]äººçæ°é åä¸ |
| | | //BedQueueBO bo = mapBedVsQueue.get(String.format("%09d%s", roomId, bedNo)); |
| | | //bo.queueNum.getAndDecrement(); // å¯è½å·²ç»ãå¹¶åçãå¨ hurry-up 䏿¹åäºå¼ |
| | | //refreshPriorityQueue(bo); |
| | | |
| | | return GlobalErrorCodeConstants.SUCCESS; |
| | | } |
| | | |
| | |
| | | return; |
| | | |
| | | // æ¥ç æ¯å¦ææéä¸çæ£è
|
| | | Integer updateNum = queueMapper.preemptPatient( |
| | | Integer updateNum = queueMapper.preemptWaitingPatient( |
| | | bedQueueBO.getRoomId(), |
| | | bedQueueBO.getRoomName(), |
| | | bedQueueBO.getBedNo(), |