From 28314081239ddbdb0bec61ab7fc87bcab05202d8 Mon Sep 17 00:00:00 2001
From: eight <641137800@qq.com>
Date: 星期四, 14 十一月 2024 13:01:41 +0800
Subject: [PATCH] refactor 亲和性

---
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueServiceTxFunctions.java |   80 ++++++++++++++++++++++------------------
 1 files changed, 44 insertions(+), 36 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 4139321..387bc26 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
@@ -286,7 +286,7 @@
     public ErrorCode nextInstallPatient(Long roomId, String bedNo) {
         // 浠� DB 鎶� 搴忓彿鏈�灏忕殑 [宸查鐢╙ [宸插彫鍥�-瀹夎] 鐨勪汉 璁剧疆涓� [瀹夎涓璢
         QueueDO firstItem = queueMapper.getFirstItemByRoomAndStatus(roomId, List.of(QueueStatusEnum.RECEIVED.getStatus(), QueueStatusEnum.RECALLED_INSTALL.getStatus()));
-        // 璇ュ伐浣� 娌℃湁 [宸查鐢╙ [宸插彫鍥�-瀹夎] 浜哄憳
+        // 璇ュ伐浣� 娌℃湁 [宸查鐢╙ | [宸插彫鍥�-瀹夎] 浜哄憳
         if (null == firstItem) {
             return QUEUE_NOT_READY_PATIENT;
         }
@@ -298,14 +298,7 @@
         // 妫�鏌ラ」鐩�.浜插拰鎬� 澶勭悊閫昏緫
         CheckTypeDO checkTypeDO = getCheckTypeItem( firstItem.getBookCheckType() );
         if (checkTypeDO.getAffinityCheckTypes().length > 0) {
-            List<QueueDO> affinityItems = queueMapper.getCurPatGivenCheckTypesAndStatus(firstItem.getPatId(),
-                                    checkTypeDO.getAffinityCheckTypes(), QueueStatusEnum.RECEIVED.getStatus());
-            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);
-            }
+            procAffinityWhenSomeOneEntryInstalling(firstItem.getPatId(), roomId, bedNo, checkTypeDO.getAffinityCheckTypes() );
         }
 
         // 瑁呮満宸ヤ綅 鏃犱紭鍏堥槦鍒�
@@ -409,7 +402,11 @@
 
             // 鍙洖 [杩囧彿] 鎮h�呭悗锛屽鐞� 妫�鏌ラ」鐩�.浜插拰鎬� 閫昏緫
             QueueDO recalledQueueItem = queueMapper.getQueueItemBySeqNum(curSeqNum.get() + 1);
-            updateAffinityItemsWhenRecalled( recalledQueueItem );
+
+            CheckTypeDO checkTypeDO = getCheckTypeItem( recalledQueueItem.getBookCheckType() );
+            if ( checkTypeDO.getAffinityCheckTypes().length > 0) {
+                procAffinityWhenRecalled(recalledQueueItem, checkTypeDO.getAffinityCheckTypes());
+            }
 
             curSeqNum.getAndIncrement();
 
@@ -458,9 +455,13 @@
                 return;
             }
 
-            // 鎶㈠埌鎺掗槦鎮h�呭悗锛屽鐞� 妫�鏌ラ」鐩�.浜插拰鎬� 閫昏緫
             QueueDO preemptQueueItem = queueMapper.getQueueItemBySeqNum(curSeqNum.get() + 1);
-            updateAffinityItemsWhenPreempt( preemptQueueItem );
+            CheckTypeDO checkTypeDO = getCheckTypeItem( preemptQueueItem.getBookCheckType() );
+
+            // 鎶㈠埌鎺掗槦鎮h�呭悗锛屽鐞� 妫�鏌ラ」鐩�.浜插拰鎬� 閫昏緫
+            if ( checkTypeDO.getAffinityCheckTypes().length > 0) {
+                procAffinityWhenPreempt(preemptQueueItem, checkTypeDO.getAffinityCheckTypes());
+            }
 
             curSeqNum.getAndIncrement();
 
@@ -507,33 +508,27 @@
         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 procAffinityWhenPreempt(QueueDO preemptQueueItem, Integer[] affinityCheckTypes) {
+        List<QueueDO> affinityItems = queueMapper.getCurPatGivenCheckTypesAndStatus(
+                preemptQueueItem.getPatId(), affinityCheckTypes, 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 void procAffinityWhenRecalled(QueueDO recalledQueueItem, Integer[] affinityCheckTypes) {
+        List<QueueDO> affinityItems = queueMapper.getCurPatGivenCheckTypesAndStatus(
+                recalledQueueItem.getPatId(), affinityCheckTypes, QueueStatusEnum.AFFINITY_WAITING.getStatus());
+        for (int i = 0; i < affinityItems.size(); i++) {
+            QueueDO queueItem = affinityItems.get(i);
+            queueItem.setSeqNum( recalledQueueItem.getSeqNum() );  // 鍙洖鍚庯紝鍘熷唴閮ㄥ簭鍙锋洿鏂�
+            queueMapper.updateById(queueItem);
         }
     }
 
@@ -590,6 +585,19 @@
         });
     }
 
+    private void procAffinityWhenSomeOneEntryInstalling(String patId, Long roomId_operator, String bedNo_operator, Integer[] affinityCheckTypes) {
+        // 瀵逛簬 鍒氳繘鍏ュ埌 [瀹夎涓璢鐨勯」,  濡傛灉瀛樺湪 [宸查鐢╙ 鐨勪翰鍜岄」锛屽垯闇�瑕佸叾璺熼殢
+        List<QueueDO> affinityItems = queueMapper.getCurPatGivenCheckTypesAndStatus(
+                                patId, affinityCheckTypes, QueueStatusEnum.RECEIVED.getStatus());
+        for (int i = 0; i < affinityItems.size(); i++) {
+            QueueDO queueItem = affinityItems.get(i);
+            queueItem.setStatus(QueueStatusEnum.AFFINITY_RECEIVED.getStatus()); //鏀瑰彉 鎺掗槦鐘舵��
+            queueItem.setRoomId(roomId_operator);
+            queueItem.setBedNo(bedNo_operator);  // 璺熼殢鍒� 瑁呮満 宸ヤ綅
+            queueMapper.updateById(queueItem);
+        }
+    }
+
     private void roomBedStatistic(MonitorInfoVO monitorInfoVO) {
         Map<Integer, Integer>  mapOpeningCheckBedStatInfo = new HashMap<>();
         Map<Integer, Integer>  mapOpeningInstallBedStatInfo = new HashMap<>();

--
Gitblit v1.9.3