eight
2024-10-12 e86481b3a32200d83fdcdbca826b72e3776ae5cd
装机功能 相关 待续
已添加1个文件
已修改5个文件
113 ■■■■ 文件已修改
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/doctor/DoctorController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queue/QueueMapper.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedDoctorNextInstallPatientCallable.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueServiceImpl.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueServiceTxFunctions.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/doctor/DoctorController.java
@@ -300,6 +300,10 @@
        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));
    }
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queue/QueueMapper.java
@@ -110,18 +110,25 @@
    @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 = " +
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedDoctorNextInstallPatientCallable.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
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;
    }
}
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueService.java
@@ -63,6 +63,7 @@
    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);
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueServiceImpl.java
@@ -218,6 +218,25 @@
    }
    @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);
@@ -310,7 +329,7 @@
    @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);
@@ -320,7 +339,7 @@
    @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);
@@ -329,16 +348,16 @@
    // è£…机 å«å·
    @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);
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueServiceTxFunctions.java
@@ -237,11 +237,12 @@
        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;
        }
@@ -251,6 +252,25 @@
        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;
    }
@@ -377,7 +397,7 @@
                return;
            // æŸ¥çœ‹ æ˜¯å¦æœ‰æŽ’队中的患者
            Integer updateNum = queueMapper.preemptPatient(
            Integer updateNum = queueMapper.preemptWaitingPatient(
                    bedQueueBO.getRoomId(),
                    bedQueueBO.getRoomName(),
                    bedQueueBO.getBedNo(),