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

---
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java |   58 +++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 47 insertions(+), 11 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 b280271..16d2883 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
@@ -35,6 +35,14 @@
 
     final static Integer MAX_QUEUE_NUM = 3;
 
+    @Resource
+    private queueMapper queueMapper;
+
+    @Resource
+    private RoomMapper roomMapper;
+
+    AtomicInteger openingFlag = new AtomicInteger(0);
+
     AtomicInteger curSeqNum = new AtomicInteger(0);
 
     PriorityBlockingQueue<BedQueueBO> priorityQueue = new PriorityBlockingQueue<>();
@@ -42,11 +50,6 @@
 
     ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
 
-    @Resource
-    private queueMapper queueMapper;
-
-    @Resource
-    private RoomMapper roomMapper;
 
     @Override
     public Integer createqueue(QueueSaveReqVO createReqVO) {
@@ -91,7 +94,7 @@
     }
 
     /**
-     * 绯荤粺閲嶅惎鏃讹紝浠嶥B鍚屾闃熷垪鏁版嵁鍒� 宸ヤ綅浼樺厛闃熷垪
+     * 绯荤粺閲嶅惎鏃讹紝浠嶥B鍚屾宸ヤ綅鐨勬偅鑰呴槦鍒楁暟鎹埌 宸ヤ綅浼樺厛闃熷垪
      */
     public void initQueue() {
         priorityQueue.clear();
@@ -145,7 +148,7 @@
      * 绛夊埌鍙栦笅涓�涓� 鎺掗槦涓汉鍛� 鐨勯�昏緫瀹屾垚鍚庯紝鍐嶅洖鏉ヤ笉閿�
      */
     public void hurryup() {
-        while (true) {
+        while (1 == openingFlag.get()) {
             BedQueueBO bedQueueBO = priorityQueue.peek();
             if (null == bedQueueBO)
                 return;
@@ -157,17 +160,29 @@
             if (curQueueNum == bedQueueBO.maxQueueNum)
                 return;
 
-            Integer updateNum = queueMapper.preemptPatient(
+            // 鏌ョ湅 褰撳墠宸ヤ綅 鏄惁鏈夎繃鍙�-鍥炴潵鐨勬偅鑰�
+            Integer updateNum = queueMapper.procPassedReturnPatient(
                     bedQueueBO.getRoomId(),
                     bedQueueBO.getRoomName(),
                     bedQueueBO.getBedNo(),
                     curSeqNum.get() + 1,
-                    QueueStatusEnum.WAITING.getStatus(),
+                    QueueStatusEnum.PASSED_RETURN.getStatus(),
                     QueueStatusEnum.READY.getStatus());
 
-            // 娌℃湁鎶㈠埌鎺掗槦鎮h��
             if (null == updateNum || 0 == updateNum) {
-                return;
+                // 鏌ョ湅 鏄惁鏈夋帓闃熶腑鐨勬偅鑰�
+                 updateNum = queueMapper.preemptPatient(
+                                bedQueueBO.getRoomId(),
+                                bedQueueBO.getRoomName(),
+                                bedQueueBO.getBedNo(),
+                                curSeqNum.get() + 1,
+                                QueueStatusEnum.WAITING.getStatus(),
+                                QueueStatusEnum.READY.getStatus());
+
+                // 娌℃湁鎶㈠埌鎺掗槦鎮h��
+                if (null == updateNum || 0 == updateNum) {
+                    return;
+                }
             }
 
             curSeqNum.getAndIncrement();
@@ -190,6 +205,9 @@
         queueSaveReqVO.setStatus(QueueStatusEnum.WAITING.getStatus()); //鎺掗槦涓�
         QueueDO queue = BeanUtils.toBean(queueSaveReqVO, QueueDO.class);
         queueMapper.insert(queue);
+
+        if (0 == openingFlag.get())
+            return;
 
         singleThreadExecutor.execute( () -> {
             hurryup();
@@ -259,4 +277,22 @@
         return patientStatisticVO;
     }
 
+    public void startBiz() {
+        openingFlag.set(1);
+        hurryup();
+    }
+
+    @Override
+    public Integer passedPatientReturn(Long roomId, String bedNo, String patId) {
+        Integer updateNum = queueMapper.passedPatientReturn(roomId, bedNo, patId,
+                QueueStatusEnum.PASSED.getStatus(), QueueStatusEnum.PASSED_RETURN.getStatus());
+        return updateNum;
+    }
+
+    @Override
+    public Integer queueJump(String patId, Byte jumped) {
+        Integer updateNum = queueMapper.queueJump(patId, QueueStatusEnum.WAITING.getStatus(), jumped);
+        return null;
+    }
+
 }

--
Gitblit v1.9.3