From 069328ea846a08e673c508725e7e8d019f8a6333 Mon Sep 17 00:00:00 2001
From: eight <641137800@qq.com>
Date: 星期日, 30 三月 2025 20:49:09 +0800
Subject: [PATCH] get room profile

---
 /dev/null                                                                                                           |   10 ---
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/room/RoomController.java       |   12 +--
 jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/RoomCallingScreenEnum.java                |   38 ++++++++++++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/room/RoomMapper.java                  |    4 -
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/room/vo/RoomProfileRespVO.java |   26 ++++++++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomServiceImpl.java               |   49 ++++++++++++----
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/room/RoomDO.java                 |    5 +
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomService.java                   |    6 -
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/room/RoomProfile.java            |   18 ++++++
 9 files changed, 130 insertions(+), 38 deletions(-)

diff --git a/jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/RoomCallingScreenEnum.java b/jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/RoomCallingScreenEnum.java
new file mode 100644
index 0000000..0262adb
--- /dev/null
+++ b/jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/RoomCallingScreenEnum.java
@@ -0,0 +1,38 @@
+package cn.lihu.jh.module.ecg.enums;
+
+import cn.lihu.jh.framework.common.core.IntArrayValuable;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.Arrays;
+
+/**
+ * 閫氱敤鐘舵�佹灇涓�
+ *
+ * @author 鑺嬮亾婧愮爜
+ */
+@Getter
+@AllArgsConstructor
+public enum RoomCallingScreenEnum implements IntArrayValuable {
+    NONE(0, "鏃犲彨鍙峰睆"),
+    CHECK_ONLY(10, "妫�鏌ュ彨鍙峰睆"),
+    INSTALL_ONLY(20, "瀹夎鍙彿灞�"),
+    HYBRID(30, "娣峰悎鍙彿灞�"); // 妫�鏌� + 瀹夎
+
+    public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(RoomCallingScreenEnum::getCallingScreenType).toArray();
+
+    /**
+     * 鐘舵�佸��
+     */
+    private final Integer callingScreenType;
+    /**
+     * 鐘舵�佸悕
+     */
+    private final String name;
+
+    @Override
+    public int[] array() {
+        return ARRAYS;
+    }
+
+}
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/room/RoomController.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/room/RoomController.java
index fe94bf3..85a6409 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/room/RoomController.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/room/RoomController.java
@@ -10,9 +10,10 @@
 import javax.validation.Valid;
 
 import cn.hutool.extra.servlet.ServletUtil;
-import cn.lihu.jh.module.ecg.controller.admin.room.vo.MonitorInfoVO;
+import cn.lihu.jh.module.ecg.controller.admin.room.vo.*;
 import cn.lihu.jh.module.ecg.dal.dataobject.queue.QueueDO;
 import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomDO;
+import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomProfile;
 import cn.lihu.jh.module.ecg.service.queue.QueueService;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
@@ -22,9 +23,6 @@
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.Operation;
 
-import cn.lihu.jh.module.ecg.controller.admin.room.vo.RoomPageReqVO;
-import cn.lihu.jh.module.ecg.controller.admin.room.vo.RoomRespVO;
-import cn.lihu.jh.module.ecg.controller.admin.room.vo.RoomSaveReqVO;
 import cn.lihu.jh.module.ecg.service.room.RoomService;
 import cn.lihu.jh.module.system.api.dept.DeptApi;
 import cn.lihu.jh.module.system.api.dept.dto.DeptRespDTO;
@@ -90,10 +88,10 @@
     @GetMapping("/get-room-by-ip")
     @Operation(summary = "鑾峰緱璇婂鍜岃瘖鐤楀簥")
     @PermitAll
-    public CommonResult<RoomRespVO> getRoomByIP(HttpServletRequest request) {
+    public CommonResult<RoomProfileRespVO> getRoomByIP(HttpServletRequest request) {
         String reqIp = ServletUtil.getClientIP(request);
-        RoomDO room = roomService.getRoomByIP(reqIp);
-        return success(BeanUtils.toBean(room, RoomRespVO.class));
+        RoomProfile roomProfile = roomService.getRoomByIP(reqIp);
+        return success(BeanUtils.toBean(roomProfile, RoomProfileRespVO.class));
     }
 
     @GetMapping("/page")
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/room/vo/RoomProfileRespVO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/room/vo/RoomProfileRespVO.java
new file mode 100644
index 0000000..6fad177
--- /dev/null
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/room/vo/RoomProfileRespVO.java
@@ -0,0 +1,26 @@
+package cn.lihu.jh.module.ecg.controller.admin.room.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "绠$悊鍚庡彴 - 璇婂鍜岃瘖鐤楀簥 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class RoomProfileRespVO {
+
+    @Schema(description = "璇婂缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED)
+    private Long roomId;
+
+    @Schema(description = "璇婂鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED)
+    private String roomName;
+
+    @Schema(description = "璇婄枟搴婃暟閲�", requiredMode = Schema.RequiredMode.REQUIRED)
+    private Integer bedNum;
+
+    @Schema(description = "璇婂灞忕被鍨�")
+    private Integer callingScreenType;
+}
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/room/RoomDO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/room/RoomDO.java
index 446d754..49e25fd 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/room/RoomDO.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/room/RoomDO.java
@@ -64,5 +64,10 @@
     @TableField(typeHandler = JacksonTypeHandler.class)
     private Integer[] checkTypes;
 
+    /**
+     * 0 妫�鏌�
+     * 1 棰嗙敤
+     * 2 瑁呮満
+     */
     private Integer opType;
 }
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/room/RoomProfile.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/room/RoomProfile.java
new file mode 100644
index 0000000..2c918f4
--- /dev/null
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/room/RoomProfile.java
@@ -0,0 +1,18 @@
+package cn.lihu.jh.module.ecg.dal.dataobject.room;
+
+import cn.lihu.jh.module.ecg.enums.RoomCallingScreenEnum;
+import lombok.Data;
+
+@Data
+public class RoomProfile {
+    Long roomId;
+    String roomName;
+
+    // 宸ヤ綅鏁伴噺
+    Integer bedNum;
+
+    /**
+     * @see RoomCallingScreenEnum
+     */
+    Integer callingScreenType;
+}
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/room/RoomStatisticsDO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/room/RoomStatisticsDO.java
deleted file mode 100644
index d1b16fd..0000000
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/room/RoomStatisticsDO.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package cn.lihu.jh.module.ecg.dal.dataobject.room;
-
-import lombok.Data;
-
-@Data
-public class RoomStatisticsDO {
-    Long roomId;
-    String roomName;
-    Integer bedNo;
-}
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 4525140..91a56e2 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
@@ -9,7 +9,6 @@
 import org.apache.ibatis.annotations.*;
 
 import cn.lihu.jh.module.ecg.controller.admin.room.vo.RoomPageReqVO;
-import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomStatisticsDO;
 import cn.lihu.jh.module.ecg.enums.BedStatusEnum;
 
 /**
@@ -36,9 +35,6 @@
             " where deleted = 0 " +
             "</script>")
     Integer resetRoom(@Param("newStatus") Integer newStatus);
-
-    @Select({ "SELECT room_id, room_name, count(1) as bed_num FROM lihu.clinic_room group by room_id;" })
-    List<RoomStatisticsDO> roomStatistic();
 
     @Select("<script> " +
             "SELECT * FROM lihu.clinic_room " +
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomService.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomService.java
index e67ed46..4677d4d 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomService.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomService.java
@@ -7,7 +7,7 @@
 import cn.lihu.jh.module.ecg.controller.admin.room.vo.RoomPageReqVO;
 import cn.lihu.jh.module.ecg.controller.admin.room.vo.RoomSaveReqVO;
 import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomDO;
-import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomStatisticsDO;
+import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomProfile;
 
 
 /**
@@ -47,7 +47,7 @@
      */
     RoomDO getRoom(Integer id);
 
-    RoomDO getRoomByIP(String ip);
+    RoomProfile getRoomByIP(String ip);
 
     /**
      * 鑾峰緱璇婂鍜岃瘖鐤楀簥鍒嗛〉
@@ -56,8 +56,6 @@
      * @return 璇婂鍜岃瘖鐤楀簥鍒嗛〉
      */
     PageResult<RoomDO> getRoomPage(RoomPageReqVO pageReqVO);
-
-    List<RoomStatisticsDO> roomStatistics();
 
     List<RoomDO> simpleRoomList();
 
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomServiceImpl.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomServiceImpl.java
index c6d02df..68554a7 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomServiceImpl.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomServiceImpl.java
@@ -5,17 +5,16 @@
 
 import cn.lihu.jh.framework.common.pojo.PageResult;
 import cn.lihu.jh.module.ecg.controller.admin.room.vo.MonitorInfoVO;
-import cn.lihu.jh.module.ecg.dal.dataobject.queue.QueueDO;
 import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomDO;
+import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomProfile;
+import cn.lihu.jh.module.ecg.enums.RoomCallingScreenEnum;
 import cn.lihu.jh.module.ecg.service.queue.QueueService;
 import cn.lihu.jh.module.system.api.oauth2.OAuth2TokenApi;
 import org.springframework.stereotype.Service;
-import org.springframework.util.StringUtils;
 import org.springframework.validation.annotation.Validated;
 
 import cn.lihu.jh.module.ecg.controller.admin.room.vo.RoomPageReqVO;
 import cn.lihu.jh.module.ecg.controller.admin.room.vo.RoomSaveReqVO;
-import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomStatisticsDO;
 import cn.lihu.jh.module.ecg.dal.mysql.room.RoomMapper;
 import cn.lihu.jh.module.ecg.enums.BedStatusEnum;
 import cn.lihu.jh.framework.common.util.object.BeanUtils;
@@ -79,24 +78,48 @@
     }
 
     @Override
-    public RoomDO getRoomByIP(String ip) {
+    public RoomProfile getRoomByIP(String ip) {
         List<RoomDO> roomDOList = roomMapper.queueByIp(ip);
-        Optional<RoomDO> optionalQueueDO = roomDOList.stream().filter(item -> StringUtils.hasLength(item.getIp())).findFirst();
-        if (!optionalQueueDO.isPresent()) {
-            return null;
+
+        RoomProfile roomProfile = new RoomProfile();
+        roomProfile.setBedNum( 0 );
+        roomProfile.setCallingScreenType( RoomCallingScreenEnum.NONE.getCallingScreenType() );
+
+        for (RoomDO roomDO : roomDOList) {
+            roomProfile.setRoomId(roomDO.getRoomId());
+            roomProfile.setRoomName(roomDO.getRoomName());
+            roomProfile.setBedNum( roomProfile.getBedNum() + 1);
+
+            // 璁$畻 璇婇棿灞忕被鍨�
+            if (roomProfile.getCallingScreenType() == RoomCallingScreenEnum.NONE.getCallingScreenType()) {
+                if ( roomDO.getOpType() == 0 || roomDO.getOpType() == 1 ) {
+                    roomProfile.setCallingScreenType( RoomCallingScreenEnum.CHECK_ONLY.getCallingScreenType());
+                } else if ( roomDO.getOpType() == 2 ) {
+                    roomProfile.setCallingScreenType( RoomCallingScreenEnum.INSTALL_ONLY.getCallingScreenType());
+                }
+            } else if (roomProfile.getCallingScreenType() == RoomCallingScreenEnum.CHECK_ONLY.getCallingScreenType()) {
+                if ( roomDO.getOpType() == 0 || roomDO.getOpType() == 1 ) {
+                    // do nothing
+                } else if ( roomDO.getOpType() == 2 ) {
+                    roomProfile.setCallingScreenType( RoomCallingScreenEnum.HYBRID.getCallingScreenType());
+                }
+            } else if (roomProfile.getCallingScreenType() == RoomCallingScreenEnum.INSTALL_ONLY.getCallingScreenType()) {
+                if ( roomDO.getOpType() == 0 || roomDO.getOpType() == 1 ) {
+                    roomProfile.setCallingScreenType( RoomCallingScreenEnum.HYBRID.getCallingScreenType());
+                } else if ( roomDO.getOpType() == 2 ) {
+                    // do nothing
+                }
+            } else if (roomProfile.getCallingScreenType() == RoomCallingScreenEnum.HYBRID.getCallingScreenType()) {
+                // do nothing
+            }
         }
 
-        return optionalQueueDO.get();
+        return roomProfile;
     }
 
     @Override
     public PageResult<RoomDO> getRoomPage(RoomPageReqVO pageReqVO) {
         return roomMapper.selectPage(pageReqVO);
-    }
-
-    @Override
-    public List<RoomStatisticsDO> roomStatistics() {
-        return roomMapper.roomStatistic();
     }
 
     @Override

--
Gitblit v1.9.3