From a7b5ec90a38f93bc1da2f48676c16bb757cb05f7 Mon Sep 17 00:00:00 2001
From: eight <641137800@qq.com>
Date: 星期四, 22 八月 2024 10:14:17 +0800
Subject: [PATCH] update

---
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java |   25 ++++++++++++++++++++-----
 1 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java
index f649486..b280271 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java
@@ -90,6 +90,9 @@
         return queueMapper.selectPage(pageReqVO);
     }
 
+    /**
+     * 绯荤粺閲嶅惎鏃讹紝浠嶥B鍚屾闃熷垪鏁版嵁鍒� 宸ヤ綅浼樺厛闃熷垪
+     */
     public void initQueue() {
         priorityQueue.clear();
         mapBedVsQueue.clear();
@@ -106,7 +109,11 @@
         bedQueueBOList.forEach(item -> {
             item.maxQueueNum = MAX_QUEUE_NUM;
             Optional<QueueStatisticDO> queueStatisticDOOptional = queueStatisticDOList.stream().filter(it->it.getRoomId()==item.roomId && it.getBedNo().equals(item.getBedNo())).findFirst();
-            item.queueNum.set( queueStatisticDOOptional.isPresent() ? queueStatisticDOOptional.get().getTotalInStatus() : 0 );
+            int queueNum = queueStatisticDOOptional.isPresent() ? queueStatisticDOOptional.get().getTotalInStatus() : 0;
+            if ( MAX_QUEUE_NUM < queueNum )
+                throw new RuntimeException("init: exceed max queue number!");
+
+            item.queueNum.set( queueNum );
             priorityQueue.offer(item);
             mapBedVsQueue.put(String.format("%09d%s", item.roomId, item.bedNo), item);
         });
@@ -115,6 +122,9 @@
         curSeqNum = new AtomicInteger(null == num ? 0 : num);
     }
 
+    /**
+     * 杩欎釜閫昏緫 涓嶉渶瑕佷簡
+     */
     public void reorderQueue() {
         // 鏍规嵁棰勭害鍓嶅悗锛屼粠DB 鑾峰彇 闃熷垪涓� 灏辫瘖鍑嗗涓汉鍛� 鍒楄〃
         List<Byte> queueStatusList = new ArrayList<>();
@@ -142,7 +152,7 @@
 
             int curQueueNum = bedQueueBO.queueNum.get();
             if (curQueueNum > bedQueueBO.maxQueueNum)
-                throw new RuntimeException("exceed max queue number!");
+                throw new RuntimeException("hurryup: exceed max queue number!");
 
             if (curQueueNum == bedQueueBO.maxQueueNum)
                 return;
@@ -181,15 +191,20 @@
         QueueDO queue = BeanUtils.toBean(queueSaveReqVO, QueueDO.class);
         queueMapper.insert(queue);
 
-        singleThreadExecutor.submit( () -> {
+        singleThreadExecutor.execute( () -> {
             hurryup();
         });
     }
 
     private void nextPatient(Long roomId, String bedNo) {
         // 浠� DB 鎶� 搴忓彿鏈�灏忕殑 灏辫瘖鍑嗗涓殑浜� 璁剧疆涓哄氨璇婁腑
-        queueMapper.updateQueueStatus(roomId, bedNo,
+        Integer updateNum = queueMapper.updateQueueStatus(roomId, bedNo,
                 QueueStatusEnum.READY.getStatus(), QueueStatusEnum.ONSTAGE.getStatus());
+
+        // 璇ュ伐浣� 娌℃湁 灏辫瘖鍑嗗涓� 浜哄憳
+        if (null == updateNum || 0 == updateNum) {
+            return;
+        }
 
         // 浼樺厛闃熷垪涓� 璇ュ伐浣� 灏辫瘖鍑嗗涓汉鐨勬暟閲� 鍑忎竴
         BedQueueBO bo = mapBedVsQueue.get(String.format("%09d%s", roomId, bedNo));
@@ -197,7 +212,7 @@
         priorityQueue.remove(bo);
         priorityQueue.offer(bo);
 
-        singleThreadExecutor.submit( () -> {
+        singleThreadExecutor.execute( () -> {
             hurryup();
         });
     }

--
Gitblit v1.9.3