jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/BedStatusEnum.java
@@ -15,7 +15,6 @@ @AllArgsConstructor public enum BedStatusEnum implements IntArrayValuable { CLOSED(0, "å·²å ³é"), CLOSING(1, "å ³éä¸"), OPENING(10, "å·²å¼é"), DOCTOR_ON(20, "æå»ç"), PAUSE(30, "æå"); jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/ErrorCodeConstants.java
@@ -16,4 +16,5 @@ ErrorCode ROOM_INVALID_STATUS = new ErrorCode(1_010_002_001, "è¯å®¤åè¯çåºç¶æå¼å¸¸"); ErrorCode QUEUE_NOT_EXISTS = new ErrorCode(1_010_003_000, "æéä¸åå¨"); ErrorCode QUEUE_BED_ABNORMAL = new ErrorCode(1_010_003_001, "å·¥ä½éåä¸åå¨"); ErrorCode QUEUE_HAVE_PATIENT = new ErrorCode(1_010_003_001, "æ£è éåä¸"); } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/room/RoomMapper.java
@@ -34,8 +34,15 @@ @Select({ "SELECT room_id, room_name, count(1) as bed_num FROM lihu.clinic_room group by room_id;" }) List<RoomStatisticsDO> roomStatistic(); @Select({ "SELECT id, room_id, room_name, bed_no, status, doc_id, doc_name FROM lihu.clinic_room where status >= 10;" }) List<RoomDO> simpleRoomList(); @Select("<script> " + "SELECT id, room_id, room_name, bed_no, status, doc_id, doc_name FROM lihu.clinic_room " + "where status in ( " + " <foreach collection='curStatusList' separator=',' item='curStatus'>" + " #{curStatus.status} " + " </foreach> );" + "</script>") List<RoomDO> simpleRoomList(@Param("curStatusList") List<BedStatusEnum> curStatusList); @Update("<script> " + "update lihu.clinic_room set status=#{newStatus.status} where room_id=#{roomId} and bed_no=#{bedNo} " + jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/BedDoctorResumeCallable.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,29 @@ package cn.lihu.jh.module.ecg.service.queue; import cn.lihu.jh.framework.common.exception.ErrorCode; import java.util.concurrent.Callable; public class BedDoctorResumeCallable implements Callable<ErrorCode> { QueueService queueService; private Long roomId; private String bedNo; private Long docId; private String docName; public BedDoctorResumeCallable(QueueService queueService, Long roomId, String bedNo, Long docId, String docName) { super(); this.queueService = queueService; this.roomId = roomId; this.bedNo = bedNo; this.docId = docId; this.docName = docName; } public ErrorCode call() throws Exception { return queueService.bedDoctorResume(roomId, bedNo, docId, docName); } } jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueService.java
@@ -48,12 +48,14 @@ ErrorCode startBedOpen(Long roomId, String bedNo); ErrorCode startBedClose(Long roomId, String bedNo); ErrorCode startBedDoctorPause(Long roomId, String bedNo, Long docId, String docName); ErrorCode startBedDoctorResume(Long roomId, String bedNo, Long docId, String docName); ErrorCode startBedDoctorOn(Long roomId, String bedNo, Long docId, String docName); ErrorCode startBedDoctorOff(Long roomId, String bedNo, Long docId, String docName); ErrorCode bedOpen(Long roomId, String bedNo); ErrorCode bedClose(Long roomId, String bedNo); ErrorCode bedDoctorPause(Long roomId, String bedNo, Long docId, String docName); ErrorCode bedDoctorResume(Long roomId, String bedNo, Long docId, String docName); ErrorCode bedDoctorOn(Long roomId, String bedNo, Long docId, String docName); ErrorCode bedDoctorOff(Long roomId, String bedNo, Long docId, String docName); jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java
@@ -130,6 +130,24 @@ } @Override public ErrorCode startBedDoctorResume(Long roomId, String bedNo, Long docId, String docName) { Future<ErrorCode> future = singleThreadExecutor.submit( new BedDoctorResumeCallable(this, roomId, bedNo, docId, docName) ); try { ErrorCode ret = future.get(); return ret; } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } return ECG_INNER_ERROR; } @Override public ErrorCode startBedDoctorOn(Long roomId, String bedNo, Long docId, String docName) { Future<ErrorCode> future = singleThreadExecutor.submit( new BedDoctorOnCallable(this, roomId, bedNo, docId, docName) @@ -177,7 +195,6 @@ // DB update List statusList = new ArrayList<BedStatusEnum>(); statusList.add(BedStatusEnum.CLOSED); statusList.add(BedStatusEnum.CLOSING); Integer updateNum = roomMapper.setBedStatus(roomId, bedNo, BedStatusEnum.OPENING, statusList); if ( null==updateNum || 0 == updateNum ) @@ -193,6 +210,7 @@ bedQueueBO.setBedNo(bedNo); bedQueueBO.setMaxQueueNum(MAX_QUEUE_NUM); bedQueueBO.setQueueNum(new AtomicInteger(queueDOList.size())); bedQueueBO.setStatusEnum(BedStatusEnum.OPENING); priorityQueue.offer(bedQueueBO); mapBedVsQueue.put(String.format("%09d%s", roomId, bedNo), bedQueueBO); return SUCCESS; @@ -204,13 +222,19 @@ if (null == bedQueueBO) return QUEUE_BED_ABNORMAL; if (bedQueueBO.getQueueNum().get() >0) return QUEUE_HAVE_PATIENT; BedStatusEnum destStatusEnum = destStatusEnum = BedStatusEnum.CLOSED; mapBedVsQueue.remove(String.format("%09d%s", roomId, bedNo)); priorityQueue.remove(bedQueueBO); // DB update List statusList = new ArrayList<BedStatusEnum>(); statusList.add(BedStatusEnum.OPENING); statusList.add(BedStatusEnum.DOCTOR_ON); statusList.add(BedStatusEnum.PAUSE); Integer updateNum = roomMapper.setBedStatus(roomId, bedNo, BedStatusEnum.CLOSING, statusList); Integer updateNum = roomMapper.setBedStatus(roomId, bedNo, destStatusEnum, statusList); if ( null==updateNum || 0 == updateNum ) return ROOM_INVALID_STATUS; @@ -222,6 +246,29 @@ BedQueueBO bedQueueBO = mapBedVsQueue.get(String.format("%09d%s", roomId, bedNo)); if (null == bedQueueBO) return QUEUE_BED_ABNORMAL; bedQueueBO.setStatusEnum(BedStatusEnum.PAUSE); priorityQueue.remove(bedQueueBO); // DB update List statusList = new ArrayList<BedStatusEnum>(); statusList.add(BedStatusEnum.DOCTOR_ON); Integer updateNum = roomMapper.setBedDoctorPause(roomId, bedNo, docId, docName, BedStatusEnum.PAUSE, statusList); if ( null==updateNum || 0 == updateNum ) return ROOM_INVALID_STATUS; return SUCCESS; } @Override public ErrorCode bedDoctorResume(Long roomId, String bedNo, Long docId, String docName) { BedQueueBO bedQueueBO = mapBedVsQueue.get(String.format("%09d%s", roomId, bedNo)); if (null == bedQueueBO) return QUEUE_BED_ABNORMAL; bedQueueBO.setStatusEnum(BedStatusEnum.DOCTOR_ON); priorityQueue.offer(bedQueueBO); // DB update List statusList = new ArrayList<BedStatusEnum>(); @@ -248,6 +295,8 @@ if ( null==updateNum || 0 == updateNum ) return ROOM_INVALID_STATUS; bedQueueBO.setStatusEnum(BedStatusEnum.DOCTOR_ON); return SUCCESS; } @@ -264,6 +313,8 @@ BedStatusEnum.OPENING, statusList); if ( null==updateNum || 0 == updateNum ) return ROOM_INVALID_STATUS; bedQueueBO.setStatusEnum(BedStatusEnum.OPENING); return SUCCESS; } @@ -294,7 +345,11 @@ mapBedVsQueue.clear(); // ä»DB è·å å·¥ä½å表 List<RoomDO> roomDOList = roomMapper.simpleRoomList(); List<BedStatusEnum> bedStatusEnumList = new ArrayList<BedStatusEnum>(); bedStatusEnumList.add(BedStatusEnum.OPENING); bedStatusEnumList.add(BedStatusEnum.DOCTOR_ON); bedStatusEnumList.add(BedStatusEnum.PAUSE); List<RoomDO> roomDOList = roomMapper.simpleRoomList(bedStatusEnumList); List<BedQueueBO> bedQueueBOList = roomDOList.stream().map(item -> BeanUtils.toBean(item, BedQueueBO.class)).toList(); // ä»DB è·å éåä¸ å°±è¯åå¤ä¸äººåç»è®¡ å表 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/room/RoomServiceImpl.java
@@ -5,6 +5,7 @@ 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.mysql.room.RoomMapper; import cn.lihu.jh.module.ecg.enums.BedStatusEnum; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; @@ -81,6 +82,10 @@ @Override public List<RoomDO> simpleRoomList() { return roomMapper.simpleRoomList(); List<BedStatusEnum> bedStatusEnumList = new ArrayList<BedStatusEnum>(); bedStatusEnumList.add(BedStatusEnum.OPENING); bedStatusEnumList.add(BedStatusEnum.DOCTOR_ON); bedStatusEnumList.add(BedStatusEnum.PAUSE); return roomMapper.simpleRoomList(bedStatusEnumList); } } jh-server/src/main/resources/application-local.yaml
@@ -74,10 +74,14 @@ # Redis é ç½®ãRedisson é»è®¤çé 置足å¤ä½¿ç¨ï¼ä¸è¬ä¸éè¦è¿è¡è°ä¼ redis: host: 116.62.18.175 #r-bp1zyjl0g07e1ry08rpd.redis.rds.aliyuncs.com # å°å port: 6020 #ç«¯å£ 6379 # host: 116.62.18.175 #r-bp1zyjl0g07e1ry08rpd.redis.rds.aliyuncs.com # å°å # port: 6020 #ç«¯å£ 6379 # database: 15 # æ°æ®åºç´¢å¼ # password: Smartor #Root@yinyu # å¯ç ï¼å»ºè®®ç产ç¯å¢å¼å¯ host: 127.0.0.1 port: 6379 database: 15 # æ°æ®åºç´¢å¼ password: Smartor #Root@yinyu # å¯ç ï¼å»ºè®®ç产ç¯å¢å¼å¯ # password: Root@yinyu # å¯ç ï¼å»ºè®®ç产ç¯å¢å¼å¯ --- #################### 宿¶ä»»å¡ç¸å ³é ç½® ####################