eight
2024-11-12 343d897f00966d40f7eaa1cdfd257f63abd2996a
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueServiceImpl.java
@@ -6,6 +6,7 @@
import cn.lihu.jh.module.ecg.Utils;
import cn.lihu.jh.module.ecg.controller.admin.room.vo.MonitorInfoVO;
import cn.lihu.jh.module.ecg.dal.dataobject.checktype.CheckTypeDO;
import cn.lihu.jh.module.ecg.dal.dataobject.devrent.DevRentDO;
import cn.lihu.jh.module.ecg.dal.mysql.call.CallMapper;
import cn.lihu.jh.module.ecg.dal.mysql.devrent.DevRentMapper;
@@ -197,7 +198,7 @@
            e.printStackTrace();
        }
        System.out.println("startBedDoctorOff ========");
        //System.out.println("startBedDoctorOff ========");
        return ECG_INNER_ERROR;
    }
@@ -216,7 +217,7 @@
            e.printStackTrace();
        }
        System.out.println("startNextPatient ========");
        //System.out.println("startNextPatient ========");
        return ECG_INNER_ERROR;
    }
@@ -317,13 +318,34 @@
    @Override
    @Transactional
    public void queue(QueueSaveReqVO queueSaveReqVO) {
        queueSaveReqVO.setStatus(QueueStatusEnum.WAITING.getStatus()); //排队中
        queueSaveReqVO.setStatus(QueueStatusEnum.WAITING.getStatus()); //默认状态: 排队中
        // 处理 检查项目.亲和性 逻辑
        CheckTypeDO checkTypeDO = queueServiceTxFunctions.getCheckTypeItem( queueSaveReqVO.getBookCheckType() );
        if ( checkTypeDO.getAffinityCheckTypes().length > 0) {
            List<QueueDO> affinityItems = queueMapper.getCurPatGivenCheckTypes(queueSaveReqVO.getPatId(), checkTypeDO.getAffinityCheckTypes());
            for (int i=0; i < affinityItems.size(); i++) {
                QueueDO queueItem = affinityItems.get(i);
                if (QueueStatusEnum.READY.getStatus() == queueItem.getStatus()
                    || QueueStatusEnum.ONSTAGE.getStatus() == queueItem.getStatus()) {
                    queueSaveReqVO.setStatus(QueueStatusEnum.AFFINITY_WAITING.getStatus()); //改变 排队状态
                    queueSaveReqVO.setRoomId(queueItem.getRoomId());
                    queueSaveReqVO.setRoomName(queueItem.getRoomName());
                    queueSaveReqVO.setBedNo(queueItem.getBedNo());
                    queueSaveReqVO.setSeqNum(queueItem.getSeqNum());
                    break;
                }
            }
        }
        QueueDO queue = BeanUtils.toBean(queueSaveReqVO, QueueDO.class);
        queueMapper.insert(queue);
        DevRentDO devRent = BeanUtils.toBean(queueSaveReqVO, DevRentDO.class);
        devRent.setState( DevRentStateEnum.FREE.getState() );
        devRent.setPatDetails( queueSaveReqVO.getPatDetails() );
        devRent.setCheckType( queueSaveReqVO.getBookCheckType() );
        devRentMapper.insert(devRent);
        startHurryUpOneCheckType( queue.getBookCheckType() );
@@ -349,10 +371,6 @@
    // 领用 叫号
    @Override
    public void finishReceiveNextPatient(Long roomId, String bedNo) {
        // 从 DB 把 [就诊中] 的人 设置为 【已领用】
        //Integer ret =  queueMapper.updateBedQueueStatus(roomId, bedNo,
        //        QueueStatusEnum.ONSTAGE.getStatus(), QueueStatusEnum.RECEIVED.getStatus());
        // 从 DB 检查 该工位 是否有 [就诊中] 人员,若有就.放弃取下一位
        List<Integer> queueStatusList = new ArrayList<>();
        queueStatusList.add(QueueStatusEnum.ONSTAGE.getStatus());
@@ -366,11 +384,7 @@
    // 装机 叫号
    @Override
    public void finishInstallNextPatient(Long roomId, String bedNo) {
        // 从 DB 把 [安装中] 的人 设置为 [已就诊]
        //Integer ret =  queueMapper.updateBedQueueStatus(roomId, bedNo,
        //        QueueStatusEnum.INSTALLING.getStatus(), QueueStatusEnum.FINISH.getStatus());
        // 从 DB 检查 该工位 是否有 [就诊中] 人员,若有就.放弃取下一位
        // 从 DB 检查 该工位 是否有 [安装中] 人员,若有就.放弃取下一位
        List<Integer> queueStatusList = new ArrayList<>();
        queueStatusList.add(QueueStatusEnum.INSTALLING.getStatus());
        Integer num = queueMapper.bedQueueStatisticByStatus(roomId, bedNo, queueStatusList);