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/controller/admin/doctor/DoctorController.java |   28 ++++++++++++++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/queue/queueDO.java             |   10 +++++
 jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/QueueStatusEnum.java                    |    3 +
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java           |   33 ++++++++++++++--
 sql/mysql/jh.sql                                                                                                  |   14 ++++---
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queue/queueMapper.java              |   18 ++++++++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java               |    4 ++
 7 files changed, 98 insertions(+), 12 deletions(-)

diff --git a/jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/QueueStatusEnum.java b/jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/QueueStatusEnum.java
index 50b5800..e3f6d00 100644
--- a/jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/QueueStatusEnum.java
+++ b/jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/QueueStatusEnum.java
@@ -21,7 +21,8 @@
     READY((byte)20, "鍊欒瘖鍑嗗"),
     ONSTAGE((byte)30, "灏辫瘖涓�"),
     FINISH((byte)40, "灏辫瘖瀹屾垚"),
-    PASSED((byte)50, "杩囧彿");
+    PASSED((byte)50, "杩囧彿"),
+    PASSED_RETURN((byte)60, "杩囧彿鍥炴潵");
 
     public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(QueueStatusEnum::getStatus).toArray();
 
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/doctor/DoctorController.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/doctor/DoctorController.java
index 006744d..ce97709 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/doctor/DoctorController.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/doctor/DoctorController.java
@@ -106,4 +106,32 @@
         PatientStatisticVO patientStatisticVO = queueService.getPatientStatistic(roomId, bedNo);
         return success(patientStatisticVO);
     }
+
+    @GetMapping("/passed-patient-return")
+    @Operation(summary = "杩囨湡鐥呬汉鍥炴潵")
+    @Parameter(name = "roomId", description = "璇婂缂栧彿", required = true, example = "116")
+    @Parameter(name = "bedNo", description = "宸ヤ綅缂栧彿", required = true, example = "B2")
+    @Parameter(name = "patId", description = "鎮h�呯紪鍙�", required = true, example = "B2")
+    @PreAuthorize("@ss.hasPermission('ecg:doctor:patient')")
+    public CommonResult<String> passedPatientReturn(
+            @RequestParam("roomId") Long roomId,
+            @RequestParam("bedNo") String bedNo,
+            @RequestParam("patId") String patId )
+    {
+        Integer result = queueService.passedPatientReturn(roomId, bedNo, patId);
+        return success("success");
+    }
+
+    @GetMapping("/queuejump")
+    @Operation(summary = "鎻掗槦")
+    @Parameter(name = "patId", description = "鎮h�呯紪鍙�", required = true, example = "B2")
+    @PreAuthorize("@ss.hasPermission('ecg:doctor:patient')")
+    public CommonResult<String> queueJump(
+            @RequestParam("patId") String patId,
+            @RequestParam("jumpFlag") Byte jumpFlag)
+    {
+        Integer result = queueService.queueJump(patId, jumpFlag);
+        return success("success");
+    }
+
 }
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/queue/queueDO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/queue/queueDO.java
index dcc8507..6d376db 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/queue/queueDO.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/queue/queueDO.java
@@ -4,6 +4,8 @@
 import com.baomidou.mybatisplus.annotation.*;
 import cn.lihu.jh.framework.mybatis.core.dataobject.BaseDO;
 
+import java.time.LocalDateTime;
+
 /**
  * 鎺掗槦 DO
  *
@@ -37,6 +39,10 @@
      */
     private Byte patGender;
     /**
+     * 棰勭害鏃ユ湡
+     */
+    private LocalDateTime bookDate;
+    /**
      * 棰勭害鏃堕棿娈�
      */
     private Integer bookTimeslot;
@@ -61,6 +67,10 @@
      */
     private Byte expired;
     /**
+     * 鎻掗槦鏍囪
+     */
+    private Byte jumpFlag;
+    /**
      * 璇婂缂栧彿
      */
     private Long roomId;
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queue/queueMapper.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queue/queueMapper.java
index a07c7a7..ca3c9b7 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queue/queueMapper.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/queue/queueMapper.java
@@ -96,8 +96,24 @@
     @Update("update lihu.queue set status = #{newStatus}, room_id = #{roomId}, room_name = #{roomName}, \n" +
             " bed_no = #{bedNo}, seq_num = #{seqNum} where id = \n" +
             "  (select a.id from \n" +
-            "    (select id from lihu.queue where status = #{curStatus} order by book_timeslot, create_time limit 1) a)")
+            "    (select id from lihu.queue where status = #{curStatus} order by jump_flag desc, book_timeslot, create_time limit 1) a)")
     Integer preemptPatient(@Param("roomId")Long roomId, @Param("roomName")String roomName, @Param("bedNo")String bedNo,
                            @Param("seqNum")Integer seqNum, @Param("curStatus")Byte curStatus, @Param("newStatus")Byte newStatus);
 
+    @Update("update lihu.queue set status = #{newStatus}, seq_num = #{seqNum}, passed = 1 " +
+            " where id = " +
+            "  (select a.id from \n" +
+            "    (select id from lihu.queue where status = #{curStatus} and room_id = #{roomId} and room_name = #{roomName} and bed_no = #{bedNo} order by seq_num limit 1) a)")
+    Integer procPassedReturnPatient(@Param("roomId")Long roomId, @Param("roomName")String roomName, @Param("bedNo")String bedNo,
+                           @Param("seqNum")Integer seqNum, @Param("curStatus")Byte curStatus, @Param("newStatus")Byte newStatus);
+
+    @Update("update lihu.queue set status = #{newStatus} " +
+            " where pat_id = #{patId} amd status = #{curStatus} and room_id = #{roomId} and bed_no = #{bedNo}")
+    Integer passedPatientReturn(@Param("roomId")Long roomId, @Param("bedNo")String bedNo, @Param("patId")String patId,
+                                @Param("curStatus")Byte curStatus, @Param("newStatus")Byte newStatus);
+
+    @Update("update lihu.queue set jumped = #{jumped} " +
+            " where pat_id = #{patId} amd status = #{curStatus}")
+    Integer queueJump(@Param("patId")String patId, @Param("curStatus")Byte curStatus, @Param("jumped")Byte jumped );
 }
+
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java
index e1f1b63..7edae08 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java
@@ -88,4 +88,8 @@
     List<QueueDO> getDoctorQueueByStatus(Long roomId, String bedNo, List<Byte> statusList);
 
     PatientStatisticVO getPatientStatistic(Long roomId, String bedNo);
+
+    Integer passedPatientReturn(Long roomId, String bedNo, String patId);
+
+    Integer queueJump( String patId, Byte jumped );
 }
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 b961cb3..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
@@ -160,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();
@@ -270,4 +282,17 @@
         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;
+    }
+
 }
diff --git a/sql/mysql/jh.sql b/sql/mysql/jh.sql
index aa6734a..cae995a 100644
--- a/sql/mysql/jh.sql
+++ b/sql/mysql/jh.sql
@@ -46,13 +46,15 @@
   `id` int NOT NULL AUTO_INCREMENT COMMENT 'id',
   `pat_id` varchar(30) NOT NULL COMMENT '鎮h�呯紪鍙�',
   `pat_name` varchar(10) NOT NULL COMMENT '鎮h�呭鍚�',
-  `pat_gender` tinyint(1) DEFAULT NULL COMMENT '鎮h�呮�у埆',
+  `pat_gender` tinyint DEFAULT NULL COMMENT '鎮h�呮�у埆',
+  `book_date` dateTime NOT NULL COMMENT '棰勭害鏃ユ湡',
   `book_timeslot` int NOT NULL COMMENT '棰勭害鏃堕棿娈�',
-  `book_check_type` tinyint(1) DEFAULT NULL COMMENT '棰勭害妫�鏌ョ被鍨�',
+  `book_check_type` tinyint DEFAULT NULL COMMENT '棰勭害妫�鏌ョ被鍨�',
   `seq_num` int DEFAULT NULL COMMENT '鎺掗槦搴忓彿',
-  `status` tinyint(1) NOT NULL COMMENT '10:鎺掗槦涓� 20:鍊欒瘖鍑嗗 30:灏辫瘖涓� 40:灏辫瘖瀹屾垚 50:杩囧彿 60:杩囨湡',
-  `passed` tinyint(1) DEFAULT 0 COMMENT '杩囧彿鏍囪',
-  `expired` tinyint(1) DEFAULT 0 COMMENT '棰勭害杩囨湡鏍囪',
+  `status` tinyint NOT NULL COMMENT '10:鎺掗槦涓� 20:鍊欒瘖鍑嗗 30:灏辫瘖涓� 40:灏辫瘖瀹屾垚 50:杩囧彿 60:杩囨湡',
+  `passed` tinyint DEFAULT 0 COMMENT '杩囧彿鏍囪',
+  `expired` tinyint DEFAULT 0 COMMENT '棰勭害杩囨湡鏍囪',
+  `jump_flag` tinyint DEFAULT 0 COMMENT '鎻掗槦鏍囪',
   `room_id` BIGINT DEFAULT 0 COMMENT '璇婂缂栧彿',
   `room_name` varchar(10) DEFAULT "" COMMENT '璇婂鍚嶇О',
   `bed_no` varchar(10) DEFAULT "" COMMENT '璇婄枟搴婄紪鍙�',
@@ -61,7 +63,7 @@
   `create_time` datetime NOT NULL COMMENT '鍒涘缓鏃堕棿',
   `updater` varchar(10) DEFAULT '' COMMENT '鏇存柊鑰�',
   `update_time` datetime NOT NULL COMMENT '鏇存柊鏃堕棿',
-  `deleted` bit(1) DEFAULT 0 COMMENT '鍒犻櫎鏍囪',
+  `deleted` bit DEFAULT 0 COMMENT '鍒犻櫎鏍囪',
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='鎺掗槦琛�';
 

--
Gitblit v1.9.3