From e458133f5db4afe2e497af8ac3e1fc29bbc979aa Mon Sep 17 00:00:00 2001
From: eight <641137800@qq.com>
Date: 星期五, 27 九月 2024 14:52:29 +0800
Subject: [PATCH] bug fix : 开启工位 提示工位队列已经存在

---
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/QueueServiceImpl.java |   72 ++++++++++++++++++++++++++---------
 1 files changed, 53 insertions(+), 19 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 0a4345d..697126a 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
@@ -6,8 +6,14 @@
 import javax.annotation.Resource;
 
 import cn.lihu.jh.module.ecg.controller.admin.room.vo.MonitorInfoVO;
+import cn.lihu.jh.module.ecg.dal.dataobject.devrent.DevRentDO;
+import cn.lihu.jh.module.ecg.dal.mysql.call.CallMapper;
+import cn.lihu.jh.module.ecg.dal.mysql.devrent.DevRentMapper;
+import cn.lihu.jh.module.ecg.enums.DevRentStateEnum;
+import cn.lihu.jh.module.system.api.oauth2.OAuth2TokenApi;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
 import org.springframework.validation.annotation.Validated;
 
@@ -42,10 +48,19 @@
 public class QueueServiceImpl implements QueueService {
 
     @Resource
+    private OAuth2TokenApi oAuth2TokenApi;
+
+    @Resource
     private queueMapper queueMapper;
 
     @Resource
     private RoomMapper roomMapper;
+
+    @Resource
+    private CallMapper callMapper;
+
+    @Resource
+    private DevRentMapper devRentMapper;
 
     AtomicInteger openingFlag = new AtomicInteger(0);
     AtomicInteger curSeqNum = new AtomicInteger(0);
@@ -56,6 +71,11 @@
     ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
 
     Integer queueReadyMax = 0;
+
+    Integer bigScrenWaitingSize = 5;
+    Integer bigScrenPassedSize = 5;
+    Integer bigScrenWaitingFrom = 0;
+    Integer bigScrenPassedFrom = 0;
 
     @Override
     public Integer createqueue(QueueSaveReqVO createReqVO) {
@@ -84,8 +104,8 @@
     }
 
     @Override
-    public ErrorCode startBedOpen(Long roomId, String bedNo) {
-        Future<ErrorCode> future = singleThreadExecutor.submit( new BedOpenCallable(this, roomId, bedNo));
+    public ErrorCode startBedOpen(Long roomId, String roomName, String bedNo) {
+        Future<ErrorCode> future = singleThreadExecutor.submit( new BedOpenCallable(this, roomId, roomName, bedNo));
 
         try {
             ErrorCode ret = future.get();
@@ -229,6 +249,15 @@
     }
 
     @Override
+    public void startResetRoom() {
+        singleThreadExecutor.execute( () -> {
+            resetRoom();
+            bedReload();
+            monitorInfo();
+        });
+    }
+
+    @Override
     public MonitorInfoVO getMonitorInfo() {
         MonitorInfoVO monitorInfoVO = new MonitorInfoVO();
         monitorInfoVO.setOpeningFlag( openingFlag.get() );
@@ -244,7 +273,7 @@
      * @return
      */
     @Override
-    public ErrorCode bedOpen(Long roomId, String bedNo) {
+    public ErrorCode bedOpen(Long roomId, String roomName, String bedNo) {
         BedQueueBO bedQueueBO2 = mapBedVsQueue.get(String.format("%09d%s", roomId, bedNo));
         if (null != bedQueueBO2) {
             log.error("bedOpen mapBedVsQueue has existed. " + roomId + " " + bedNo);
@@ -267,6 +296,7 @@
         // 鏂板宸ヤ綅 浼樺厛闃熷垪
         BedQueueBO bedQueueBO = new BedQueueBO();
         bedQueueBO.setRoomId(roomId);
+        bedQueueBO.setRoomName(roomName);
         bedQueueBO.setBedNo(bedNo);
         bedQueueBO.setMaxQueueNum(queueReadyMax);
         bedQueueBO.setQueueNum(new AtomicInteger(queueDOList.size()));
@@ -451,7 +481,6 @@
     }
 
     /**
-     * 锛侊紒寮�璇婃湡闂达紝涓嶈兘鎵ц杩欎釜鏂规硶锛屽惁鍒欎細鏈� P0 闂
      * 1. 姣忓ぉ寮�璇婂墠 浠嶥B鍚屾宸ヤ綅鐨勬偅鑰呴槦鍒楁暟鎹埌 宸ヤ綅浼樺厛闃熷垪
      * 2. 鏈嶅姟杩愮淮閲嶅惎鏃�
      */
@@ -462,6 +491,8 @@
 
         // 娓呴櫎闈炲綋澶╃殑鎺掗槦浜哄憳
         queueMapper.clearQueue();
+        // 娓呴櫎闈炲綋澶╃殑璇煶鍙彿璁板綍
+        callMapper.clearCall();
 
         // 浠嶥B 鑾峰彇 宸ヤ綅鍒楄〃
         List<BedStatusEnum> bedStatusEnumList = new ArrayList<BedStatusEnum>();
@@ -497,8 +528,7 @@
     }
 
     /**
-     * TODO 鏂板紑闃熷垪鏃讹紝闇�瑕佹妸鎺掗槦涓殑浜� 杞埌 灏辫瘖鍑嗗 鐘舵��
-     * 绛夊埌鍙栦笅涓�涓� 鎺掗槦涓汉鍛� 鐨勯�昏緫瀹屾垚鍚庯紝鍐嶅洖鏉ヤ笉閿�
+     *
      */
     public void hurryup() {
         if (0 == openingFlag.get())
@@ -572,10 +602,15 @@
      * @param queueSaveReqVO
      */
     @Override
+    @Transactional
     public void queue(QueueSaveReqVO queueSaveReqVO) {
         queueSaveReqVO.setStatus(QueueStatusEnum.WAITING.getStatus()); //鎺掗槦涓�
         QueueDO queue = BeanUtils.toBean(queueSaveReqVO, QueueDO.class);
         queueMapper.insert(queue);
+
+        DevRentDO devRent = BeanUtils.toBean(queueSaveReqVO, DevRentDO.class);
+        devRent.setState( DevRentStateEnum.FREE.getState() );
+        devRentMapper.insert(devRent);
 
         startHurryUp();
     }
@@ -681,22 +716,21 @@
     }
 
     @Override
-    public List<QueueDO> callingData(Integer waitingNum, Integer passedNum) {
-        //queueMapper.
-        return null;
+    public RoomDO getDocRoomInfo(Long docId) {
+        return roomMapper.getRoomByDocId(docId);
     }
 
-    @Override
-    public List<QueueDO> getRoomQueue(String ip, List<Byte> statusList) {
-        List<RoomDO> roomDOList = roomMapper.queueByIp(ip);
-        Optional<RoomDO> optionalQueueDO = roomDOList.stream().filter(item -> StringUtils.hasLength(item.getIp())).findFirst();
-        if (!optionalQueueDO.isPresent()) {
-            return  new ArrayList<QueueDO>();
-        }
+    public void resetRoom() {
+        // 韪㈠嚭鍦ㄥ骇鐨勫尰鐢�
+        List<BedStatusEnum> bedStatusEnumList = new ArrayList<BedStatusEnum>();
+        bedStatusEnumList.add(BedStatusEnum.DOCTOR_ON);
+        bedStatusEnumList.add(BedStatusEnum.PAUSE);
+        List<RoomDO> roomDOList = roomMapper.simpleRoomList(bedStatusEnumList);
+        List<Long> userIdList = roomDOList.stream().map(roomDO -> roomDO.getDocId()).toList();
+        oAuth2TokenApi.tick(userIdList);
 
-        Long roomId = optionalQueueDO.get().getRoomId();
-        List<QueueDO> queueDOList = queueMapper.getRoomQueueByStatus(roomId, statusList);
-        return queueDOList;
+        // 鍏抽棴鎵�鏈夊伐浣�
+        Integer ret = roomMapper.resetRoom(BedStatusEnum.CLOSED.getStatus());
     }
 
 }

--
Gitblit v1.9.3