eight
2024-09-01 ed7ebfc37e525b4f52926e499cf0bec98f5e5bed
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java
@@ -6,6 +6,7 @@
import java.util.concurrent.atomic.AtomicInteger;
import javax.annotation.Resource;
import cn.lihu.jh.framework.common.exception.enums.GlobalErrorCodeConstants;
import cn.lihu.jh.module.ecg.Utils;
import cn.lihu.jh.module.ecg.config.DynamicSchedulingConfig;
import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomDO;
@@ -32,7 +33,6 @@
import cn.lihu.jh.framework.common.util.object.BeanUtils;
import cn.lihu.jh.module.ecg.dal.mysql.queue.queueMapper;
import static cn.lihu.jh.framework.common.exception.enums.GlobalErrorCodeConstants.SUCCESS;
import static cn.lihu.jh.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.lihu.jh.framework.common.pojo.CommonResult.error;
import static cn.lihu.jh.framework.common.pojo.CommonResult.success;
@@ -238,7 +238,7 @@
    public ErrorCode bedOpen(Long roomId, String bedNo) {
        BedQueueBO bedQueueBO2 = mapBedVsQueue.get(String.format("%09d%s", roomId, bedNo));
        if (null != bedQueueBO2) {
            log.error("bedOpen mapBedVsQueue has existed" + roomId + " " + bedNo);
            log.error("bedOpen mapBedVsQueue has existed. " + roomId + " " + bedNo);
            return QUEUE_BED_EXIST;
        }
@@ -247,7 +247,7 @@
        statusList.add(BedStatusEnum.CLOSED);
        Integer updateNum = roomMapper.setBedOpeningClosed(roomId, bedNo, BedStatusEnum.OPENING, statusList);
        if ( null==updateNum || 0 == updateNum ) {
            log.error("bedOpen DB invalid status " + roomId + " " + bedNo);
            log.error("bedOpen DB invalid status. " + roomId + " " + bedNo);
            return ROOM_INVALID_STATUS;
        }
@@ -264,14 +264,15 @@
        bedQueueBO.setStatus(BedStatusEnum.OPENING.getStatus());
        priorityQueue.offer(bedQueueBO);
        mapBedVsQueue.put(String.format("%09d%s", roomId, bedNo), bedQueueBO);
        return SUCCESS;
        return GlobalErrorCodeConstants.SUCCESS;
    }
    @Override
    public ErrorCode bedClose(Long roomId, String bedNo) {
        BedQueueBO bedQueueBO = mapBedVsQueue.get(String.format("%09d%s", roomId, bedNo));
        if (null == bedQueueBO) {
            log.error("bedClose mapBedVsQueue DONOT existed" + roomId + " " + bedNo);
            log.error("bedClose mapBedVsQueue DONOT existed. " + roomId + " " + bedNo);
            return QUEUE_BED_NOT_EXIST;
        }
@@ -294,26 +295,26 @@
        Integer updateNum = roomMapper.setBedOpeningClosed(roomId, bedNo,
                BedStatusEnum.CLOSED, statusList);
        if ( null==updateNum || 0 == updateNum ) {
            log.error("bedClose DB invalid status " + roomId + " " + bedNo);
            log.error("bedClose DB invalid status. " + roomId + " " + bedNo);
            return ROOM_INVALID_STATUS;
        }
        mapBedVsQueue.remove(String.format("%09d%s", roomId, bedNo));
        priorityQueue.remove(bedQueueBO);
        return SUCCESS;
        return GlobalErrorCodeConstants.SUCCESS;
    }
    @Override
    public CommonResult<RoomRespVO> getRoom(Long roomId, String bedNo, Long docId) {
        BedQueueBO bedQueueBO = mapBedVsQueue.get(String.format("%09d%s", roomId, bedNo));
        if (null == bedQueueBO) {
            log.error("getRoom mapBedVsQueue DONOT existed" + roomId + " " + bedNo);
            return error(QUEUE_BED_NOT_EXIST);
        }
        RoomDO roomDO = roomMapper.getRoom(roomId, bedNo, docId);
        if (null == roomDO) {
            return error(ROOM_NOT_SIT);
        }
        BedQueueBO bedQueueBO = mapBedVsQueue.get(String.format("%09d%s", roomId, bedNo));
        if (null == bedQueueBO) {
            log.error("getRoom mapBedVsQueue DONOT existed. " + roomId + " " + bedNo);
            return error(QUEUE_BED_NOT_EXIST);
        }
        RoomRespVO roomRespVO = BeanUtils.toBean(roomDO, RoomRespVO.class);
@@ -324,7 +325,7 @@
    public ErrorCode bedDoctorPause(Long roomId, String bedNo, Long docId, String docName) {
        BedQueueBO bedQueueBO = mapBedVsQueue.get(String.format("%09d%s", roomId, bedNo));
        if (null == bedQueueBO) {
            log.error("bedDoctorPause mapBedVsQueue DONOT existed" + roomId + " " + bedNo);
            log.error("bedDoctorPause mapBedVsQueue DONOT existed. " + roomId + " " + bedNo);
            return QUEUE_BED_NOT_EXIST;
        }
@@ -333,13 +334,13 @@
        statusList.add(BedStatusEnum.DOCTOR_ON);
        Integer updateNum = roomMapper.setBedDoctorStatus(roomId, bedNo, docId, BedStatusEnum.PAUSE, statusList);
        if ( null==updateNum || 0 == updateNum ) {
            log.error("bedDoctorPause DB invalid status " + roomId + " " + bedNo);
            log.error("bedDoctorPause DB invalid status. " + roomId + " " + bedNo);
            return ROOM_INVALID_STATUS;
        }
        bedQueueBO.setStatus(BedStatusEnum.PAUSE.getStatus());
        priorityQueue.remove(bedQueueBO);
        return SUCCESS;
        return GlobalErrorCodeConstants.SUCCESS;
    }
    @Override
@@ -356,7 +357,7 @@
        Integer updateNum = roomMapper.setBedDoctorStatus(roomId, bedNo, docId,
                BedStatusEnum.DOCTOR_ON, statusList);
        if ( null==updateNum || 0 == updateNum ) {
            log.error("bedDoctorResume DB invalid status " + roomId + " " + bedNo);
            log.error("bedDoctorResume DB invalid status. " + roomId + " " + bedNo);
            return ROOM_INVALID_STATUS;
        }
@@ -368,8 +369,7 @@
            return ECG_INNER_ERROR;
        }
        hurryup();
        return SUCCESS;
        return GlobalErrorCodeConstants.SUCCESS;
    }
    @Override
@@ -385,12 +385,12 @@
        statusList.add(BedStatusEnum.OPENING);
        Integer updateNum = roomMapper.setBedDoctorOn(roomId, bedNo, docId, docName, BedStatusEnum.DOCTOR_ON, statusList);
        if ( null==updateNum || 0 == updateNum ) {
            log.error("bedDoctorOn DB invalid status " + roomId + " " + bedNo);
            log.error("bedDoctorOn DB invalid status. " + roomId + " " + bedNo);
            return ROOM_INVALID_STATUS;
        }
        bedQueueBO.setStatus(BedStatusEnum.DOCTOR_ON.getStatus());
        return SUCCESS;
        return GlobalErrorCodeConstants.SUCCESS;
    }
    @Override
@@ -406,12 +406,12 @@
        statusList.add(BedStatusEnum.DOCTOR_ON);
        Integer updateNum = roomMapper.setBedDoctorOff(roomId, bedNo, docId, BedStatusEnum.OPENING, statusList);
        if ( null==updateNum || 0 == updateNum ) {
            log.error("bedDoctorOff DB invalid status " + roomId + " " + bedNo);
            log.error("bedDoctorOff DB invalid status. " + roomId + " " + bedNo);
            return ROOM_INVALID_STATUS;
        }
        bedQueueBO.setStatus(BedStatusEnum.OPENING.getStatus());
        return SUCCESS;
        return GlobalErrorCodeConstants.SUCCESS;
    }
    private void validatequeueExists(Integer id) {
@@ -473,7 +473,7 @@
        Integer num = queueMapper.getMaxSeqNum();
        curSeqNum = new AtomicInteger(null == num ? 0 : num);
        return SUCCESS;
        return GlobalErrorCodeConstants.SUCCESS;
    }
    /**
@@ -483,11 +483,6 @@
    public void hurryup() {
        if (0 == openingFlag.get())
            return;
        // TODO
        if (mapBedVsQueue.size() != priorityQueue.size()) {
            log.error("map " + mapBedVsQueue.size() + " priority " + priorityQueue.size());
        }
        // 处理 过号-回来 的人
        for (BedQueueBO bedQueueBO : mapBedVsQueue.values()) {
@@ -581,8 +576,7 @@
        priorityQueue.remove(bo);
        priorityQueue.offer(bo);
        hurryup();
        return SUCCESS;
        return GlobalErrorCodeConstants.SUCCESS;
    }
    public void finishNextPatient(Long roomId, String bedNo) {
@@ -693,6 +687,12 @@
        return updateNum;
    }
    @Override
    public void monitorInfo() {
        log.info("map " + mapBedVsQueue.size() + " priority " + priorityQueue.size()
                 + " opening " + openingFlag.get());
    }
    private void startHurryUp() {
        singleThreadExecutor.execute( () -> {
            hurryup();