From c3e27cb2e84782e99a30cc5a6e8caa67ca0cb72f Mon Sep 17 00:00:00 2001
From: eight <641137800@qq.com>
Date: 星期三, 25 九月 2024 17:33:32 +0800
Subject: [PATCH] 医生登出,自动离座,自动从暂停恢复

---
 jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/api/doctor/DoctorApi.java                          |    8 ++++
 jh-module-system/jh-module-system-biz/pom.xml                                                                          |    6 +++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueServiceImpl.java                |    5 ++
 jh-module-system/jh-module-system-biz/src/main/java/cn/lihu/jh/module/system/controller/admin/auth/AuthController.java |   11 +++++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/room/RoomMapper.java                     |    3 +
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueService.java                    |    3 +
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/api/doctor/DoctorApiImpl.java                      |   29 ++++++++++++++
 7 files changed, 64 insertions(+), 1 deletions(-)

diff --git a/jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/api/doctor/DoctorApi.java b/jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/api/doctor/DoctorApi.java
new file mode 100644
index 0000000..bbdf7db
--- /dev/null
+++ b/jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/api/doctor/DoctorApi.java
@@ -0,0 +1,8 @@
+package cn.lihu.jh.module.ecg.api.doctor;
+
+import cn.lihu.jh.framework.common.exception.ErrorCode;
+import cn.lihu.jh.framework.common.pojo.CommonResult;
+
+public interface DoctorApi {
+    ErrorCode bedDoctorOff(Long userId, String userName);
+}
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/api/doctor/DoctorApiImpl.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/api/doctor/DoctorApiImpl.java
new file mode 100644
index 0000000..e7ed3fd
--- /dev/null
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/api/doctor/DoctorApiImpl.java
@@ -0,0 +1,29 @@
+package cn.lihu.jh.module.ecg.api.doctor;
+
+import cn.lihu.jh.framework.common.exception.ErrorCode;
+import cn.lihu.jh.framework.common.exception.enums.GlobalErrorCodeConstants;
+import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomDO;
+import cn.lihu.jh.module.ecg.service.queue.QueueService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+@Service
+public class DoctorApiImpl implements DoctorApi {
+
+    @Resource
+    private QueueService queueService;
+
+    @Override
+    public ErrorCode bedDoctorOff(Long userId, String userName) {
+        RoomDO roomDO = queueService.getDocRoomInfo(userId);
+        // 鏈叆搴�, 璺宠繃
+        if (null == roomDO) {
+            return GlobalErrorCodeConstants.SUCCESS;
+        }
+
+        return queueService.bedDoctorOff(roomDO.getRoomId(), roomDO.getBedNo(), userId, userName);
+    }
+
+}
+
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/room/RoomMapper.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/room/RoomMapper.java
index a99128c..efedc7a 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/room/RoomMapper.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/room/RoomMapper.java
@@ -56,6 +56,9 @@
     @Select("SELECT * FROM lihu.clinic_room where room_id=#{roomId} and bed_no=#{bedNo} and doc_id=#{docId}")
     RoomDO getRoom(@Param("roomId")Long roomId, @Param("bedNo")String bedNo, @Param("docId")Long docId);
 
+    @Select("SELECT * FROM lihu.clinic_room where doc_id=#{docId} limit 1")
+    RoomDO getRoomByDocId(@Param("docId")Long docId);
+
     @Update("<script> " +
             "update lihu.clinic_room set status=#{newStatus.status} " +
             " where room_id=#{roomId} and bed_no=#{bedNo} and isNull(doc_id) " +
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 4d3db85..2f9de52 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
@@ -10,6 +10,7 @@
 import cn.lihu.jh.module.ecg.controller.admin.room.vo.RoomRespVO;
 import cn.lihu.jh.module.ecg.dal.dataobject.queue.QueueDO;
 import cn.lihu.jh.framework.common.pojo.PageResult;
+import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomDO;
 
 /**
  * 鎺掗槦 Service 鎺ュ彛
@@ -118,4 +119,6 @@
     Integer patientJump(String patId, Byte jumped );
 
     void monitorInfo();
+
+    RoomDO getDocRoomInfo(Long docId);
 }
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 7153832..a2b2484 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
@@ -703,4 +703,9 @@
                  + " opening " + openingFlag.get());
     }
 
+    @Override
+    public RoomDO getDocRoomInfo(Long docId) {
+        return roomMapper.getRoomByDocId(docId);
+    }
+
 }
diff --git a/jh-module-system/jh-module-system-biz/pom.xml b/jh-module-system/jh-module-system-biz/pom.xml
index 0117bc4..d5cb1d5 100644
--- a/jh-module-system/jh-module-system-biz/pom.xml
+++ b/jh-module-system/jh-module-system-biz/pom.xml
@@ -28,6 +28,12 @@
             <artifactId>jh-module-infra-api</artifactId>
             <version>${revision}</version>
         </dependency>
+        <dependency>
+            <groupId>cn.lihu</groupId>
+            <artifactId>jh-module-ecg-api</artifactId>
+            <version>${revision}</version>
+            <scope>compile</scope>
+        </dependency>
 
         <!-- 涓氬姟缁勪欢 -->
         <dependency>
diff --git a/jh-module-system/jh-module-system-biz/src/main/java/cn/lihu/jh/module/system/controller/admin/auth/AuthController.java b/jh-module-system/jh-module-system-biz/src/main/java/cn/lihu/jh/module/system/controller/admin/auth/AuthController.java
index 862492a..36bddbe 100644
--- a/jh-module-system/jh-module-system-biz/src/main/java/cn/lihu/jh/module/system/controller/admin/auth/AuthController.java
+++ b/jh-module-system/jh-module-system-biz/src/main/java/cn/lihu/jh/module/system/controller/admin/auth/AuthController.java
@@ -6,7 +6,9 @@
 import cn.lihu.jh.framework.common.enums.UserTypeEnum;
 import cn.lihu.jh.framework.common.pojo.CommonResult;
 import cn.lihu.jh.framework.security.config.SecurityProperties;
+import cn.lihu.jh.framework.security.core.LoginUser;
 import cn.lihu.jh.framework.security.core.util.SecurityFrameworkUtils;
+import cn.lihu.jh.module.ecg.api.doctor.DoctorApi;
 import cn.lihu.jh.module.system.controller.admin.auth.vo.*;
 import cn.lihu.jh.module.system.convert.auth.AuthConvert;
 import cn.lihu.jh.module.system.dal.dataobject.permission.MenuDO;
@@ -37,7 +39,7 @@
 
 import static cn.lihu.jh.framework.common.pojo.CommonResult.success;
 import static cn.lihu.jh.framework.common.util.collection.CollectionUtils.convertSet;
-import static cn.lihu.jh.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
+import static cn.lihu.jh.framework.security.core.util.SecurityFrameworkUtils.*;
 
 @Tag(name = "绠$悊鍚庡彴 - 璁よ瘉")
 @RestController
@@ -62,6 +64,9 @@
     @Resource
     private SecurityProperties securityProperties;
 
+    @Resource
+    private DoctorApi doctorApi;
+
     @PostMapping("/login")
     @PermitAll
     @Operation(summary = "浣跨敤璐﹀彿瀵嗙爜鐧诲綍")
@@ -73,8 +78,12 @@
     @PermitAll
     @Operation(summary = "鐧诲嚭绯荤粺")
     public CommonResult<Boolean> logout(HttpServletRequest request) {
+        // 鐧诲嚭鍓嶏紝鍏堢搴�
+        doctorApi.bedDoctorOff(getLoginUserId(), getLoginUserNickname());
+
         String token = SecurityFrameworkUtils.obtainAuthorization(request,
                 securityProperties.getTokenHeader(), securityProperties.getTokenParameter());
+
         if (StrUtil.isNotBlank(token)) {
             authService.logout(token, LoginLogTypeEnum.LOGOUT_SELF.getType());
         }

--
Gitblit v1.9.3