From cac7f142c909d712d6d49c45b0d4efbdef673e48 Mon Sep 17 00:00:00 2001 From: eight <641137800@qq.com> Date: 星期三, 13 十一月 2024 16:25:16 +0800 Subject: [PATCH] 过号 - 检查项目.亲和性 --- jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueServiceTxFunctions.java | 68 ++++++++++++++++++++-------------- 1 files changed, 40 insertions(+), 28 deletions(-) diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueServiceTxFunctions.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueServiceTxFunctions.java index 8a38c87..4139321 100644 --- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueServiceTxFunctions.java +++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueServiceTxFunctions.java @@ -274,18 +274,6 @@ firstReadyQueueItem.setStatus(QueueStatusEnum.ONSTAGE.getStatus()); queueMapper.updateById( firstReadyQueueItem ); - // 妫�鏌ラ」鐩�.浜插拰鎬� 澶勭悊閫昏緫 - CheckTypeDO checkTypeDO = getCheckTypeItem( firstReadyQueueItem.getBookCheckType() ); - if (checkTypeDO.getAffinityCheckTypes().length > 0) { - List<QueueDO> affinityItems = queueMapper.getCurPatGivenCheckTypesAndStatus(firstReadyQueueItem.getPatId(), checkTypeDO.getAffinityCheckTypes(), QueueStatusEnum.AFFINITY_WAITING.getStatus()); - if (!affinityItems.isEmpty()) { - QueueDO tmpQueueDO = affinityItems.get(0); - tmpQueueDO.setStatus( QueueStatusEnum.READY.getStatus() ); - queueMapper.updateById( tmpQueueDO ); - return GlobalErrorCodeConstants.SUCCESS; // 鍑嗗涓� 鏁伴噺娌℃湁鍙樺寲锛屾晠鐩存帴杩斿洖 - } - } - // 浼樺厛闃熷垪涓� 璇ュ伐浣� 灏辫瘖鍑嗗涓汉鐨勬暟閲� 鍑忎竴 BedQueueBO bo = mapBedVsQueue.get( Utils.formatRoomBed( roomId, bedNo ) ); bo.queueNum.getAndDecrement(); // 鍙兘宸茬粡銆愬苟鍙戠殑銆戝湪 hurry-up 涓敼鍙樹簡鍊� @@ -304,6 +292,7 @@ } firstItem.setStatus( QueueStatusEnum.INSTALLING.getStatus() ); + firstItem.setBedNo( bedNo ); queueMapper.updateById( firstItem ); // 妫�鏌ラ」鐩�.浜插拰鎬� 澶勭悊閫昏緫 @@ -314,6 +303,7 @@ for (int i = 0; i < affinityItems.size(); i++) { QueueDO queueItem = affinityItems.get(i); queueItem.setStatus(QueueStatusEnum.AFFINITY_RECEIVED.getStatus()); //鏀瑰彉 鎺掗槦鐘舵�� + queueItem.setBedNo( bedNo ); // 璺熼殢鍒� 瑁呮満 宸ヤ綅 queueMapper.updateById(queueItem); } } @@ -411,11 +401,15 @@ bedQueueBO.getRoomId(), bedQueueBO.getRoomName(), bedQueueBO.getBedNo(), - curSeqNum.get() + 1, + curSeqNum.get() + 1, // 杩囧彿鍥炴潵锛屾帓鍒板綋鍓嶇殑涓嬩竴浣� QueueStatusEnum.RECALLED.getStatus(), // 涓嶉渶瑕佸鐞� [瀹夎鍙洖], 鍘熷洜: 瀹夎宸ヤ綅 娌℃湁浼樺厛闃熷垪 QueueStatusEnum.READY.getStatus()); if (null == updateNum || 0 == updateNum) break; + + // 鍙洖 [杩囧彿] 鎮h�呭悗锛屽鐞� 妫�鏌ラ」鐩�.浜插拰鎬� 閫昏緫 + QueueDO recalledQueueItem = queueMapper.getQueueItemBySeqNum(curSeqNum.get() + 1); + updateAffinityItemsWhenRecalled( recalledQueueItem ); curSeqNum.getAndIncrement(); @@ -465,21 +459,8 @@ } // 鎶㈠埌鎺掗槦鎮h�呭悗锛屽鐞� 妫�鏌ラ」鐩�.浜插拰鎬� 閫昏緫 - QueueDO queueDO = queueMapper.getQueueItemBySeqNum(curSeqNum.get() + 1); - CheckTypeDO checkTypeDO = getCheckTypeItem( queueDO.getBookCheckType() ); - if ( checkTypeDO.getAffinityCheckTypes().length > 0) { - List<QueueDO> affinityItems = queueMapper.getCurPatGivenCheckTypesAndStatus(queueDO.getPatId(), - checkTypeDO.getAffinityCheckTypes(), QueueStatusEnum.WAITING.getStatus()); - for (int i = 0; i < affinityItems.size(); i++) { - QueueDO queueItem = affinityItems.get(i); - queueItem.setStatus(QueueStatusEnum.AFFINITY_WAITING.getStatus()); //鏀瑰彉 鎺掗槦鐘舵�� - queueItem.setRoomId(queueItem.getRoomId()); - queueItem.setRoomName(queueItem.getRoomName()); - queueItem.setBedNo(queueItem.getBedNo()); - queueItem.setSeqNum(curSeqNum.get() + 1); // 浣跨敤鍚屼竴涓� 鍐呴儴搴忓彿 - queueMapper.updateById(queueItem); - } - } + QueueDO preemptQueueItem = queueMapper.getQueueItemBySeqNum(curSeqNum.get() + 1); + updateAffinityItemsWhenPreempt( preemptQueueItem ); curSeqNum.getAndIncrement(); @@ -524,6 +505,36 @@ MonitorInfoVO monitorInfoVO = new MonitorInfoVO(); roomBedStatistic(monitorInfoVO); log.info(" opening " + openingFlag.get() + " " + monitorInfoVO.getQueueNum() + " " + monitorInfoVO.getActiveQueueNum() + " " + monitorInfoVO.getCheckTypeBedInfo().toString() ); + } + + private void updateAffinityItemsWhenPreempt(QueueDO preemptQueueItem) { + CheckTypeDO checkTypeDO = getCheckTypeItem( preemptQueueItem.getBookCheckType() ); + if ( checkTypeDO.getAffinityCheckTypes().length > 0) { + List<QueueDO> affinityItems = queueMapper.getCurPatGivenCheckTypesAndStatus(preemptQueueItem.getPatId(), + checkTypeDO.getAffinityCheckTypes(), QueueStatusEnum.WAITING.getStatus()); + for (int i = 0; i < affinityItems.size(); i++) { + QueueDO queueItem = affinityItems.get(i); + queueItem.setStatus(QueueStatusEnum.AFFINITY_WAITING.getStatus()); //鏀瑰彉 鎺掗槦鐘舵�� + queueItem.setRoomId(preemptQueueItem.getRoomId()); + queueItem.setRoomName(preemptQueueItem.getRoomName()); + queueItem.setBedNo(preemptQueueItem.getBedNo()); + queueItem.setSeqNum( preemptQueueItem.getSeqNum()); // 浣跨敤鍚屼竴涓� 鍐呴儴搴忓彿 + queueMapper.updateById(queueItem); + } + } + } + + private void updateAffinityItemsWhenRecalled(QueueDO recalledQueueItem) { + CheckTypeDO checkTypeDO = getCheckTypeItem( recalledQueueItem.getBookCheckType() ); + if ( checkTypeDO.getAffinityCheckTypes().length > 0) { + List<QueueDO> affinityItems = queueMapper.getCurPatGivenCheckTypesAndStatus(recalledQueueItem.getPatId(), + checkTypeDO.getAffinityCheckTypes(), QueueStatusEnum.AFFINITY_WAITING.getStatus()); + for (int i = 0; i < affinityItems.size(); i++) { + QueueDO queueItem = affinityItems.get(i); + queueItem.setSeqNum( recalledQueueItem.getSeqNum() ); // 鍙洖鍚庯紝鍘熷唴閮ㄥ簭鍙锋洿鏂� + queueMapper.updateById(queueItem); + } + } } private Integer getBedReadyMax(Long roomId, String bedNo) { @@ -629,6 +640,7 @@ monitorInfoVO.setQueueNum(mapBedVsQueue.size()); monitorInfoVO.setActiveQueueNum((int) mapBedVsQueue.values().stream().filter(item -> item.getStatus() == BedStatusEnum.DOCTOR_ON.getStatus()).count()); monitorInfoVO.setPriorityQueueNum( hashSetOperatingBedQueue.size() ); + monitorInfoVO.setMapBedVsQueue( mapBedVsQueue ); } } -- Gitblit v1.9.3