From a889b1c990595980888744feef2268c7bf60fc77 Mon Sep 17 00:00:00 2001 From: eight <641137800@qq.com> Date: 星期日, 01 九月 2024 18:10:56 +0800 Subject: [PATCH] fix open & close logic --- jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/queue/queueServiceImpl.java | 123 ++++++++++++++++++++++++---------------- 1 files changed, 73 insertions(+), 50 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 bd58c2d..44e33c2 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,6 +6,7 @@ import java.util.concurrent.atomic.AtomicInteger; import javax.annotation.Resource; +import cn.lihu.jh.framework.common.exception.enums.GlobalErrorCodeConstants; import cn.lihu.jh.module.ecg.Utils; import cn.lihu.jh.module.ecg.config.DynamicSchedulingConfig; import cn.lihu.jh.module.ecg.dal.dataobject.room.RoomDO; @@ -32,7 +33,6 @@ import cn.lihu.jh.framework.common.util.object.BeanUtils; import cn.lihu.jh.module.ecg.dal.mysql.queue.queueMapper; -import static cn.lihu.jh.framework.common.exception.enums.GlobalErrorCodeConstants.SUCCESS; import static cn.lihu.jh.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.lihu.jh.framework.common.pojo.CommonResult.error; import static cn.lihu.jh.framework.common.pojo.CommonResult.success; @@ -236,13 +236,20 @@ */ @Override public ErrorCode bedOpen(Long roomId, String bedNo) { + BedQueueBO bedQueueBO2 = mapBedVsQueue.get(String.format("%09d%s", roomId, bedNo)); + if (null != bedQueueBO2) { + log.error("bedOpen mapBedVsQueue has existed. " + roomId + " " + bedNo); + return QUEUE_BED_EXIST; + } + // DB update List statusList = new ArrayList<BedStatusEnum>(); statusList.add(BedStatusEnum.CLOSED); - Integer updateNum = roomMapper.setBedOpeningClosed(roomId, bedNo, - BedStatusEnum.OPENING, statusList); - if ( null==updateNum || 0 == updateNum ) + Integer updateNum = roomMapper.setBedOpeningOpening(roomId, bedNo, BedStatusEnum.OPENING, statusList); + if ( null==updateNum || 0 == updateNum ) { + log.error("bedOpen DB invalid status. " + roomId + " " + bedNo); return ROOM_INVALID_STATUS; + } List<Byte> queueStatusList = new ArrayList<>(); queueStatusList.add(QueueStatusEnum.READY.getStatus()); @@ -257,14 +264,17 @@ bedQueueBO.setStatus(BedStatusEnum.OPENING.getStatus()); priorityQueue.offer(bedQueueBO); mapBedVsQueue.put(String.format("%09d%s", roomId, bedNo), bedQueueBO); - return SUCCESS; + + return GlobalErrorCodeConstants.SUCCESS; } @Override public ErrorCode bedClose(Long roomId, String bedNo) { BedQueueBO bedQueueBO = mapBedVsQueue.get(String.format("%09d%s", roomId, bedNo)); - if (null == bedQueueBO) - return QUEUE_BED_ABNORMAL; + if (null == bedQueueBO) { + log.error("bedClose mapBedVsQueue DONOT existed. " + roomId + " " + bedNo); + return QUEUE_BED_NOT_EXIST; + } // 闄や簡鍒ゆ柇 鍑嗗鍊欒瘖涓� 鐨勪汉鏁帮紝杩橀渶瑕� 鍒ゆ柇 杩囧彿鐨勪汉鏁� //if (bedQueueBO.getQueueNum().get() >0) @@ -284,25 +294,27 @@ statusList.add(BedStatusEnum.PAUSE); Integer updateNum = roomMapper.setBedOpeningClosed(roomId, bedNo, BedStatusEnum.CLOSED, statusList); - if ( null==updateNum || 0 == updateNum ) + if ( null==updateNum || 0 == updateNum ) { + log.error("bedClose DB invalid status. " + roomId + " " + bedNo); return ROOM_INVALID_STATUS; + } mapBedVsQueue.remove(String.format("%09d%s", roomId, bedNo)); priorityQueue.remove(bedQueueBO); - return SUCCESS; + return GlobalErrorCodeConstants.SUCCESS; } @Override public CommonResult<RoomRespVO> getRoom(Long roomId, String bedNo, Long docId) { - BedQueueBO bedQueueBO = mapBedVsQueue.get(String.format("%09d%s", roomId, bedNo)); - if (null == bedQueueBO) { - return error(QUEUE_BED_ABNORMAL); - } - RoomDO roomDO = roomMapper.getRoom(roomId, bedNo, docId); if (null == roomDO) { - System.out.println("getRoom ========"); - return error(ECG_INNER_ERROR); + return error(ROOM_NOT_SIT); + } + + BedQueueBO bedQueueBO = mapBedVsQueue.get(String.format("%09d%s", roomId, bedNo)); + if (null == bedQueueBO) { + log.error("getRoom mapBedVsQueue DONOT existed. " + roomId + " " + bedNo); + return error(QUEUE_BED_NOT_EXIST); } RoomRespVO roomRespVO = BeanUtils.toBean(roomDO, RoomRespVO.class); @@ -312,83 +324,94 @@ @Override public ErrorCode bedDoctorPause(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; + if (null == bedQueueBO) { + log.error("bedDoctorPause mapBedVsQueue DONOT existed. " + roomId + " " + bedNo); + return QUEUE_BED_NOT_EXIST; + } // DB update List statusList = new ArrayList<BedStatusEnum>(); statusList.add(BedStatusEnum.DOCTOR_ON); - Integer updateNum = roomMapper.setBedDoctorStatus(roomId, bedNo, docId, - BedStatusEnum.PAUSE, statusList); - if ( null==updateNum || 0 == updateNum ) + Integer updateNum = roomMapper.setBedDoctorStatus(roomId, bedNo, docId, BedStatusEnum.PAUSE, statusList); + if ( null==updateNum || 0 == updateNum ) { + log.error("bedDoctorPause DB invalid status. " + roomId + " " + bedNo); return ROOM_INVALID_STATUS; + } bedQueueBO.setStatus(BedStatusEnum.PAUSE.getStatus()); priorityQueue.remove(bedQueueBO); - return SUCCESS; + return GlobalErrorCodeConstants.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 || !bedQueueBO.getStatus().equals(BedStatusEnum.PAUSE.getStatus())) - return QUEUE_BED_ABNORMAL; + if (null == bedQueueBO || !bedQueueBO.getStatus().equals(BedStatusEnum.PAUSE.getStatus())) { + log.error("bedDoctorResume mapBedVsQueue DONOT existed OR NOT Paused. " + roomId + " " + bedNo); + return QUEUE_BED_NOT_EXIST; + } // DB update List statusList = new ArrayList<BedStatusEnum>(); statusList.add(BedStatusEnum.PAUSE); Integer updateNum = roomMapper.setBedDoctorStatus(roomId, bedNo, docId, BedStatusEnum.DOCTOR_ON, statusList); - if ( null==updateNum || 0 == updateNum ) + if ( null==updateNum || 0 == updateNum ) { + log.error("bedDoctorResume DB invalid status. " + roomId + " " + bedNo); return ROOM_INVALID_STATUS; + } bedQueueBO.setStatus(BedStatusEnum.DOCTOR_ON.getStatus()); if (!priorityQueue.contains(bedQueueBO)) { priorityQueue.offer(bedQueueBO); } else { - log.error("bedDoctorResume HAVE EXCEPTION!"); + log.error("bedDoctorResume priorityQueue still exist!. " + roomId + " " + bedNo); + return ECG_INNER_ERROR; } - hurryup(); - return SUCCESS; + return GlobalErrorCodeConstants.SUCCESS; } @Override public ErrorCode bedDoctorOn(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; + if (null == bedQueueBO) { + log.error("bedDoctorOn mapBedVsQueue DONOT existed. " + roomId + " " + bedNo); + return QUEUE_BED_NOT_EXIST; + } // DB update List statusList = new ArrayList<BedStatusEnum>(); statusList.add(BedStatusEnum.OPENING); - Integer updateNum = roomMapper.setBedDoctorOn(roomId, bedNo, docId, docName, - BedStatusEnum.DOCTOR_ON, statusList); - if ( null==updateNum || 0 == updateNum ) + Integer updateNum = roomMapper.setBedDoctorOn(roomId, bedNo, docId, docName, BedStatusEnum.DOCTOR_ON, statusList); + if ( null==updateNum || 0 == updateNum ) { + log.error("bedDoctorOn DB invalid status. " + roomId + " " + bedNo); return ROOM_INVALID_STATUS; + } bedQueueBO.setStatus(BedStatusEnum.DOCTOR_ON.getStatus()); - - return SUCCESS; + return GlobalErrorCodeConstants.SUCCESS; } @Override public ErrorCode bedDoctorOff(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; + if (null == bedQueueBO) { + log.error("bedDoctorOff mapBedVsQueue DONOT existed. " + roomId + " " + bedNo); + return QUEUE_BED_NOT_EXIST; + } // DB update List statusList = new ArrayList<BedStatusEnum>(); statusList.add(BedStatusEnum.DOCTOR_ON); - Integer updateNum = roomMapper.setBedDoctorOff(roomId, bedNo, docId, - BedStatusEnum.OPENING, statusList); - if ( null==updateNum || 0 == updateNum ) + Integer updateNum = roomMapper.setBedDoctorOff(roomId, bedNo, docId, BedStatusEnum.OPENING, statusList); + if ( null==updateNum || 0 == updateNum ) { + log.error("bedDoctorOff DB invalid status. " + roomId + " " + bedNo); return ROOM_INVALID_STATUS; + } bedQueueBO.setStatus(BedStatusEnum.OPENING.getStatus()); - - return SUCCESS; + return GlobalErrorCodeConstants.SUCCESS; } private void validatequeueExists(Integer id) { @@ -450,7 +473,7 @@ Integer num = queueMapper.getMaxSeqNum(); curSeqNum = new AtomicInteger(null == num ? 0 : num); - return SUCCESS; + return GlobalErrorCodeConstants.SUCCESS; } /** @@ -460,10 +483,6 @@ public void hurryup() { if (0 == openingFlag.get()) return; - - if (mapBedVsQueue.size() != priorityQueue.size()) { - log.error("map " + mapBedVsQueue.size() + " priority " + priorityQueue.size()); - } // 澶勭悊 杩囧彿-鍥炴潵 鐨勪汉 for (BedQueueBO bedQueueBO : mapBedVsQueue.values()) { @@ -546,7 +565,6 @@ // 浠� DB 鎶� 搴忓彿鏈�灏忕殑 灏辫瘖鍑嗗涓殑浜� 璁剧疆涓哄氨璇婁腑 Integer updateNum = queueMapper.updateQueueStatus(roomId, bedNo, QueueStatusEnum.READY.getStatus(), QueueStatusEnum.ONSTAGE.getStatus()); - // 璇ュ伐浣� 娌℃湁 灏辫瘖鍑嗗涓� 浜哄憳 if (null == updateNum || 0 == updateNum) { return QUEUE_NOT_READY_PATIENT; @@ -558,8 +576,7 @@ priorityQueue.remove(bo); priorityQueue.offer(bo); - hurryup(); - return SUCCESS; + return GlobalErrorCodeConstants.SUCCESS; } public void finishNextPatient(Long roomId, String bedNo) { @@ -670,6 +687,12 @@ return updateNum; } + @Override + public void monitorInfo() { + log.info("map " + mapBedVsQueue.size() + " priority " + priorityQueue.size() + + " opening " + openingFlag.get()); + } + private void startHurryUp() { singleThreadExecutor.execute( () -> { hurryup(); -- Gitblit v1.9.3